Каков алгоритм PGP для шифрования сообщений?
Есть ли документация, объясняющая, какие математические алгоритмы используются в PGP для шифрования сообщения (генерация ключа, преобразование сообщения в число, подпись...)?
Например, предположим, что у меня есть друг, который использует стороннее программное обеспечение для шифрования и дешифрования сообщений с помощью PGP, и я хочу отправить ему сообщение, например "Здравствуйте, мой друг!", И я хочу зашифровать сообщение самостоятельно без использования стороннего программного обеспечения. Как мне сгенерировать мою пару ключей и как рассчитать зашифрованное сообщение со знаком?
Я знаю об асимметричном шифровании, DSA, RSA, SHA-1 и т. Д., Но не могу найти документацию по алгоритму PGP.
1 ответ
PGP и некоторые другие производные программы изначально использовали закрытый формат файла. Это было проблемой, поэтому П. Циммерманн (который написал и впервые опубликовал программное обеспечение с именем PGP в 1991 году) написал RFC (с соавторами В. Сталлингсом и Д. Аткинсом) под названием Форматы обмена сообщениями PGP, опубликованные в 1996 году IETF: этот номер RFC... 1991 год (легко запомнить: PGP впервые опубликован в 1991 году, RFC номер 1991, повторить после меня, ...).
Обратите внимание, что данный RFC не является стандартом: это всего лишь информационный документ. Никто не должен требовать соответствия этому. Он был опубликован только потому, что, как заявили Postel, Huitema и Crocker в RFC-1796: скорее документ, чем игнорируют.
Этот RFC устарел в RFC-2440 под названием " Формат сообщения OpenPGP", и этот стандарт является стандартным. Последний был устаревшим RFC-4880, с тем же названием и той же категорией (стандартная дорожка). И наконец, RFC-5581 добавил несколько небольших обновлений в RFC-4880. Эти спецификации объясняют, какие алгоритмы используются и как их использовать для форматирования сообщений.
Существует много реализаций этого формата и криптографических операций. Вы даже найдете реализации JavaScript. Известная онлайн-служба, которая позволяет вашему браузеру использовать JavaScript для управления сообщениями Open PGP, доступна здесь: https://keybase.io/ Это не реализация протокола: вы должны скопировать / вставить зашифрованный зашифрованный текст в свой почтовый пользовательский агент, например, если вы хотите отправлять сообщения OpenPGP, созданные с помощью этого сервиса.