Программа PGP, автором которой был
Philip Zimmermann, оказалась знаковой в истории развития шифрования на IBM PC-совместимых микрокомпьютерах. PGP позволяла пользователям не только обмениваться зашифрованными файлами и сообщениями, но и проверять при этом их подлинность. В те времена существовало немало "шифровалок", большинство которых использовали либо DES, либо самодельные алгоритмы неизвестной стойкости. Но ни одна из этих программ не обеспечивала возможность обмениваться данными, обезопасив их от перехвата, просмотра или изменения третьими лицами.
Немного истории.
В 1980 году вскоре после окончания колледжа
Zimmermann вместе со своими друзьями организовал фирму
Metamorphic Systems. Их проект не имел вообще ничего общего с криптографией: предполагалось создать карту на основе нового процессора Intel 8088 для апгрейда компьютеров Apple II, работавших под управлением более медленных MOS 6502.
И вот однажды в Metamorphic Systems раздался телефонный звонок. Звонил программист из Арканзаса Charlie Merritt. Его интересовало "железо", которое обладало бы достаточной скоростью для реализации криптографической схемы с открытым ключем RSA. Этот звонок оказался одним из совпадений, которые в последствии оказывают огромное влияние на будущее.
Еще во время обучения в колледже, Zimmermann интересовался криптографией, но не обладал достаточной математической базой. Merritt же оказался хорошим математиком. Именно благодаря ему Zimmermann заинтересовался криптографией с открытым ключем и, в частности, RSA. Летом 1986 года они впервые встречаются, и уже тогда Zimmermann всерьез думает о реализации алгоритма RSA на IBM PC. Вскоре Merritt организует их встречу с Jim Bidzos - президентом RSA Data Security Inc, чтобы обсудить вопросы с лицензированием.
Вскоре после этого Zimmermann объявил, что Bidzos предложил ему бесплатную лицензию на RSA, хотя Bidzos это отрицал. Так или иначе, в июне 1991 года появляется PGP v1.0. Изначально тот релиз не был предназначен для широкого распространения. Однако Zimmermann дал программу одному из своих друзей, а тот опубликовал её в Usenet. В RSA Data Security не были особо рады этому событию, так как PGP оказалась главным конкурентом их собственному продукту - RSADSI’s MailSafe. Фирма заключает с Zimmermann'ом договор, что против него не будет выдвинут судебный иск, если он прекратит распространение PGP. Но поезд уже ушел...
На что это было похоже...
Изначально предполагалось, что симметричным алгоритмом в PGP должен был быть DES. Однако
Zimmermann заменил DES на собственный, созданный на основе работ Merritt'a симметричный криптоалгоритм, названный Bass-O-Matic. На Crypto Conference '91 Zimmermann обращается к Adi Shamir (тому самому, благодаря которому в аббревиатуре RSA присутствует буква S) с просьбой проанализировать стойкость Bass-O-Matic. но Shamir отказывается. Тогда Zimmermann обращается с той же просьбой к не менее весомой фигуре в мире криптографии - Eli Biham. Biham дает согласие, и вскоре не оставляет от Bass-O-Matic камня на камне.
Остается лишь добавить, что в качестве хэш-функции в PGP 1 использовался алгоритм MD4, 2 из 3х раундов которого полностью обратимы, а поиск искусственных коллизий для MD4 на современных компьютерах занимает считанные секунды. В детали реализации RSA я, несмотря на доступность исходников, не вдавался. Но доводилось видеть старую библиотеку генерации ключей, написанную Zimmermann'ом, и использовавшуюся в свое время в первых версиях навесной защиты ASProtect.В этой библиотеке ключи RSA генерировались в зависимости от 32-битного PRNG, и сложность взлома даже 1024-бит ключа осставляла всего 2^31.
В общем, с точки зрения криптографии, PGP 1.0 представлял из себя одну большую дыру :) Но сам факт доступности подобной программы рядовому пользователю был гораздо важнее неудачной реализации, которая была исправлена уже в следующей версии. А версия 2.6.3i до сих пор считается "классикой жанра" и даже используется.
Ну и в заключении - скриншот "той самой" PGP 1.0: