Здравствуйте, сейчас занимаюсь клиент-серверной частью приложения, занимаюсь шифровкой пакетов данных, и в модуле наткнулся на "цифровые подписи", я и раньше слышал об этом, но не сильно вникал. А сейчас стало интересно. Пока что понял, что цифровая подпись работает немного иначе шифрования RSA, то есть отправитель шифрует закрытым ключом, а любой у кого есть открытый ключ может сообщение расшифровать, но это гарантирует, что сообщение отправил владелец ключей. Но мне не совсем понятно, как это работает в реальной жизни, в каких ситуациях это используется. Может есть кто работал с этим, расскажите как Вы используете подписи у себя?
Зашифровывается хеш сообщения и посылается вместе с сообщением. Расшифровав хэш и сверив его с вычесленным самостоятельно, можно убедиться в подлинности сообщения.
Сертификат которым подписано сообщение обычно сам имет подпись какого-либо доверенного центра сертификации. Или же вы просто сами уверены, что сертификат точно пренадлежит организации или человеку.
Рональд Макдональд, ну и зря, потому что он прав. От сообщения берется хэш, шифруется закрытым ключом, отправляется вместе с сообщением. Затем хэш действительно расшифровывается (фраза немного неуклюжая, расшифровывается зашифрованный хэш). Результат этой расшифровки и сравнивается с хэшом сообщения. О обратимости хэша никто не говорит.
Для правильного вопроса надо знать половину ответа
По документу считается хэш. Тут есть подводные камни, например, элементы, встроенные в документ из внешних файлов по ссылке. Не меняя ссылку можно изменить внешний документ.
Полученный хэш шифруется закрытым ключом сертификата и вкладывается в документ (или прикладывается к нему) вместе с указанием сертификата.
При получении документа хэш расшифровывается открытым ключом указанного сертификата и сверяется с хэшем, заново построенным по документу тем же алгоритмом. Если хэши совпадают, то подпись верна.
Подлинность сертификата проверяется через цепочку родительских сертификатов, в основании цепочки должен быть сертификат, которому вы заведомо доверяете (корневой удостоверяющий центр).