Цифровые подписи и сертификаты
Цифровая подпись доказывает, кто автор данных и что их не меняли, — без передачи секретов.
Цифровая подпись — значение, которое автор вычисляет своим закрытым ключом и которое любой может проверить открытым ключом, подтверждая авторство и неизменность данных.
Подпись — это асимметрия наоборот
В прошлом уроке про асимметрию шифровали открытым ключом, а расшифровывали закрытым. В подписи всё наоборот по смыслу: автор подписывает закрытым ключом (который только у него), а проверить может любой открытым ключом. Раз проверка прошла — значит, подписал именно владелец закрытого ключа.
На практике подписывают не весь документ, а его хэш (так быстрее и компактнее). Поэтому подпись даёт сразу два гаранта:
- Аутентичность — подтверждён автор (только у него закрытый ключ).
- Целостность — данные не менялись (иначе хэш и подпись не сойдутся).
Чем подпись отличается от шифрования
| Цель | Что делают | Каким ключом |
| Конфиденциальность | шифруют сообщение | открытым ключом получателя |
| Аутентичность + целостность | подписывают сообщение | закрытым ключом отправителя |
Подпись не скрывает содержимое — данные остаются читаемыми. Она лишь доказывает их происхождение и неизменность.
Проблема доверия: чей это открытый ключ?
Подпись проверяется открытым ключом автора. Но откуда уверенность, что данный открытый ключ действительно принадлежит, скажем, вашему банку, а не подставному лицу? Эту проблему решают сертификаты.
Цифровой сертификат — документ, который связывает открытый ключ с конкретным владельцем (доменом, организацией) и сам подписан доверенной стороной.
Удостоверяющие центры и цепочка доверия
Сертификат подписывает удостоверяющий центр (CA) — организация, которой все доверяют. Браузеры и ОС идут со встроенным списком доверенных корневых CA. Получается цепочка: вы доверяете корневому CA → он подписал сертификат сайта → значит, открытый ключ в сертификате действительно принадлежит этому сайту.
Корневой CA (доверяем заранее)
|
подписывает
v
Сертификат сайта example.com --> его открытый ключ
|
проверяем подписью CA
v
Доверяем ключу example.com
Когда вы видите замок в адресной строке, браузер уже проверил эту цепочку: сертификат сайта валиден, подписан доверенным CA и выдан именно для этого домена.
Почему это важно для разработчика
- Просроченный или невалидный сертификат вызовет предупреждение браузера и отпугнёт пользователей.
- Подпись — основа обновлений ПО: система проверяет, что обновление подписано производителем, а не подменено.
- Самоподписанные сертификаты годятся для теста, но в проде нужны выданные доверенным CA.
Итог
- Подпись делают закрытым ключом, проверяют открытым — это доказывает автора и неизменность.
- Подпись не шифрует данные, а удостоверяет их происхождение и целостность.
- Сертификат связывает открытый ключ с владельцем и подписан удостоверяющим центром.
- Браузер доверяет сайту через цепочку до встроенного корневого CA.