(SSL Pining) Как открытый ключ CA на устройстве может проверить сертификат сервера - PullRequest
0 голосов
/ 08 ноября 2018

Как CA на моем устройстве проверяет подлинность цифровой подписи или фальшивку ?. Если хакер получит мою цифровую подпись, смогут ли они объединить мою цифровую подпись и собственный открытый ключ и отправить сертификат клиенту? Если так, как клиент может узнать, что сертификат не пришел с нужного сервера?

Вывод: хочу узнать способ проверки цифровой подписи с Сервера. Как они могут использовать открытый ключ CA для проверки цифровой подписи с сервера?

Спасибо за ваши ответы.

1 Ответ

0 голосов
/ 08 ноября 2018

Со времени первого ответа я обновил его, чтобы добавить дополнительные детали и ясность.

Справочная информация о Центре сертификации (CA) и сертификатах

  1. Центры сертификации или центры сертификации выдают сертификаты для физических или юридических лиц. CA образуют иерархическую структуру, где вверху находится корневой CA
  2. Сертификаты не могут быть подделаны злоумышленниками, поскольку сертификаты имеют цифровую подпись, выдавшую сертификат CA
  3. Корневой центр сертификации имеет подписанные сертификаты
  4. Корневой CA подписывает промежуточные сертификаты CA следующего уровня
  5. Сертификат корневого CA и различные другие всемирно признанные сертификаты CA хранятся в хранилище доверенных ключей браузеров, операционных систем или приложений
  6. Промежуточный ЦС может выдавать другие сертификаты промежуточного ЦС, создавая цепочку
  7. Цепочка сертификатов содержит конечный сертификат доверенного корневого ЦС, включая все промежуточные ЦС в середине
  8. Для успешной проверки сертификата проверяющий агент должен либо получить сертификат цепочки от владельца сертификата, либо иметь конечный сертификат в своем хранилище доверенных ключей

Цифровая подпись обеспечивает:

Цифровые сертификаты используются для цифровой подписи документов. Сертификат отправляется вместе с подписанным документом, чтобы получатель мог проверить подлинность и целостность подписанного документа.

Цифровая подпись сообщения означает вычисление хэша (одностороннего) сообщения с использованием заранее определенного алгоритма, а затем шифрование хэша с помощью закрытого ключа владельца сертификата. поскольку никто не должен знать закрытый ключ сертификата, кроме самого владельца, никто другой не может создать такую ​​же подпись, которую можно расшифровать с помощью открытого ключа сертификата.

Цифровая подпись, таким образом, обеспечивает 3 вещи:

  1. Аутентификация - проверяя цифровой сертификат (используя цепочку сертификатов, как указано выше), получатель знает, что сообщение действительно было отправлено доверенной стороной

  2. Безотказность - отправитель сообщения не может позже отрицать, что сообщение не было им отправлено, потому что никто другой не имеет закрытого ключа отправителя сообщения и, следовательно, никто другой не может подписать сообщение с тем же закрытым ключом

  3. Целостность - поскольку хэш полученного сообщения, вычисленный получателем, совпадает с хешем (после дешифрования с использованием открытого ключа отправителя), отправленным отправителем (после дешифрования с использованием открытого ключа отправителя), он доказывает, что клиент получил точно такое же сообщение, как отправлено отправителем, в противном случае, если сообщение было подделано преднамеренной атакой или непреднамеренной сетевой ошибкой, хэши были бы другими.

Создание цифровой подписи Цифровая подпись создана

  • Вычисление хеша сообщения (которое владелец подписи хочет отправить другой стороне) с использованием функции хеширования
  • Шифрование хеша с помощью закрытого ключа

Проверка подписи

Любой получатель документа с цифровой подписью захочет проверить подпись, чтобы обеспечить подлинность и целостность документа. Проверка может быть выполнена следующим образом:

  1. Вычислить хэш сообщения, используя ту же функцию хеширования

  2. Расшифровка подписи с использованием открытого ключа (имеется в сертификате) отправителя

  3. Расчетный хэш и расшифрованный хэш должны быть одинаковыми

Следовательно, пока закрытый ключ сертификата не взломан, это надежный механизм.

Некоторые технические детали

Два важных стандарта в отношении сертификатов: X.509 и PKCS12 . Подробности можно найти на связанных страницах Википедии.

Используя утилиту Java keytool, любой может создать самозаверяющую подпись. Однако такие сертификаты или подписи нигде не будут доверенными, если только получатель не добавит сертификат в свое хранилище доверия устройств.

...