Со времени первого ответа я обновил его, чтобы добавить дополнительные детали и ясность.
Справочная информация о Центре сертификации (CA) и сертификатах
- Центры сертификации или центры сертификации выдают сертификаты для физических или юридических лиц. CA образуют иерархическую структуру, где вверху находится корневой CA
- Сертификаты не могут быть подделаны злоумышленниками, поскольку сертификаты имеют цифровую подпись, выдавшую сертификат CA
- Корневой центр сертификации имеет подписанные сертификаты
- Корневой CA подписывает промежуточные сертификаты CA следующего уровня
- Сертификат корневого CA и различные другие всемирно признанные сертификаты CA хранятся в хранилище доверенных ключей браузеров, операционных систем или приложений
- Промежуточный ЦС может выдавать другие сертификаты промежуточного ЦС, создавая цепочку
- Цепочка сертификатов содержит конечный сертификат доверенного корневого ЦС, включая все промежуточные ЦС в середине
- Для успешной проверки сертификата проверяющий агент должен либо получить сертификат цепочки от владельца сертификата, либо иметь конечный сертификат в своем хранилище доверенных ключей
Цифровая подпись обеспечивает:
Цифровые сертификаты используются для цифровой подписи документов. Сертификат отправляется вместе с подписанным документом, чтобы получатель мог проверить подлинность и целостность подписанного документа.
Цифровая подпись сообщения означает вычисление хэша (одностороннего) сообщения с использованием заранее определенного алгоритма, а затем шифрование хэша с помощью закрытого ключа владельца сертификата. поскольку никто не должен знать закрытый ключ сертификата, кроме самого владельца, никто другой не может создать такую же подпись, которую можно расшифровать с помощью открытого ключа сертификата.
Цифровая подпись, таким образом, обеспечивает 3 вещи:
Аутентификация - проверяя цифровой сертификат (используя цепочку сертификатов, как указано выше), получатель знает, что сообщение действительно было отправлено доверенной стороной
Безотказность - отправитель сообщения не может позже отрицать, что сообщение не было им отправлено, потому что никто другой не имеет закрытого ключа отправителя сообщения и, следовательно, никто другой не может подписать сообщение с тем же закрытым ключом
Целостность - поскольку хэш полученного сообщения, вычисленный получателем, совпадает с хешем (после дешифрования с использованием открытого ключа отправителя), отправленным отправителем (после дешифрования с использованием открытого ключа отправителя), он доказывает, что клиент получил точно такое же сообщение, как отправлено отправителем, в противном случае, если сообщение было подделано преднамеренной атакой или непреднамеренной сетевой ошибкой, хэши были бы другими.
Создание цифровой подписи
Цифровая подпись создана
- Вычисление хеша сообщения (которое владелец подписи хочет отправить другой стороне) с использованием функции хеширования
- Шифрование хеша с помощью закрытого ключа
Проверка подписи
Любой получатель документа с цифровой подписью захочет проверить подпись, чтобы обеспечить подлинность и целостность документа. Проверка может быть выполнена следующим образом:
Вычислить хэш сообщения, используя ту же функцию хеширования
Расшифровка подписи с использованием открытого ключа (имеется в сертификате) отправителя
Расчетный хэш и расшифрованный хэш должны быть одинаковыми
Следовательно, пока закрытый ключ сертификата не взломан, это надежный механизм.
Некоторые технические детали
Два важных стандарта в отношении сертификатов: X.509 и PKCS12 . Подробности можно найти на связанных страницах Википедии.
Используя утилиту Java keytool
, любой может создать самозаверяющую подпись. Однако такие сертификаты или подписи нигде не будут доверенными, если только получатель не добавит сертификат в свое хранилище доверия устройств.