4

Я понимаю, что gpg 1.4.9 по умолчанию вычисляет код MDC. Согласно моим исследованиям это соответствует Sym. Пакет зашифрованных и защищенных целостностью данных (тег 18) в спецификации PGP. Если файл подписан, не обеспечивает ли это также защиту от изменений (в дополнение к предоставлению подтверждения личности отправителя)?

Я думаю, что это может иметь место, потому что я написал код, используя API BouncyCastle, и заметил, что когда проверяется подписанный файл, подпись вычисляется из потока зашифрованных данных и сравнивается с записанной в файле.

Я пытаюсь понять, есть ли здесь какая-то избыточность или эти два механизма служат разным целям.

1 ответ1

2

Да, все версии подписей GPG обеспечивают защиту от изменений. Когда вы подписываете документ, он создает хеш документа (какой алгоритм он использует, зависит от установленных вами предпочтений). Хеш затем кодируется с использованием вашего закрытого ключа. Любой может использовать ваш открытый ключ для декодирования хэша, заверяя его, что вы тот, кто отправил сообщение. Кроме того, они знают, что сообщение не было изменено в течение времени после его подписания.

Кроме того, при шифровании документа, независимо от того, подписываете вы его или нет, создается хэш MDC. Это должно обеспечить защиту от изменений в случае, если документ не подписан. RFC 4880 дает объяснение того, почему это может быть полезно:

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .