Симметричные алгоритмы PGP
PGP располагает набором различных алгоритмов с тайным ключом, шифрующих само сообщение. Под алгоритмами с тайным ключом мы подразумеваем симметричные блочные шифры, использующие один и тот же ключ как для зашифрования, так и для расшифрования. Симметричные блочные шифры, предлагаемые PGP, это CAST, Triple-DES, IDEA, Twofish, а также AES. Все эти алгоритмы не были написаны «на коленке» – это результаты серьёзных научных исследований криптологических групп с выдающейся репутацией.
Для интересующихся криптографией мы можем рассмотреть эти алгоритмы немного более детально. CAST, Triple-DES и IDEA оперируют с 64-битовыми блоками данных. CAST и IDEA имеют ключи длиной 128 бит, Triple-DES использует 168-битовый ключ. Как и Data Encryption Standart (DES), эти алгоритмы могут работать в режимах гаммирования с обратной связью по шифртексту (cipher feedback, CFB) и последовательного сцепления блоков шифртекста (cipher block chaining, CBC). PGP использует их в 64-битовом режиме CFB.
Я добавил в PGP алгоритм CAST по ряду причин: он подаёт надежды как стойкий блочный шифр со 128-битовым ключом, он очень быстр, и он бесплатный. Его название происходит от инициалов разработчиков, Карлайсла Адамса и Стаффорда Тавареса, 1 из Northern Telecom (Nortel). Nortel запатентовал CAST, но дал письменное обязательство оставить его доступным для каждого без выплат патентных гонораров. CAST представляется очень удачным шифром, спроектированным людьми с хорошей репутацией в своей профессиональной сфере. Дизайн основан на сугубо формальном подходе с рядом формально доказуемых положений; всё это даёт веские основания заключить, что для взлома его 128-битового ключа потребуется лобовая атака. CAST не имеет пространства слабых и полуслабых ключей. Есть серьёзные аргументы в пользу того, что CAST совершенно неподвержен линейному и дифференциальному криптоанализу, двум мощнейшим формам криптоанализа, описанным в открытой литературе, обе из которых оказались эффективны при взломе DES. Формальная DES-подобная архитектура CAST и хорошая репутация его авторов привлекли к алгоритму внимание и попытки криптоаналитических атак со стороны всего научного сообщества, которые он выстоял достойно. У меня появляется почти то же чувство уверенности в CAST, какое было несколько лет назад от IDEA, шифра, который я избрал для ранних версий PGP. На то время IDEA был слишком молод, чтобы иметь серьёзное доверие, но и поныне он демонстрирует себя очень хорошо.
Блочный шифр IDEA (International Data Encryption Algorithm) основан на концепции «смешения операций из различных алгебраических групп». Он был разработан в ETH, Цюрих, Джеймсом Мэсси и Суэджа Лай, и опубликован в 1990 г. В первых публикациях алгоритм назывался IPES (Improved Proposed Encryption Standart), но позднее его переименовали в IDEA. IDEA гораздо более стоек против атак, нежели ранние шифры FEAL, REDOC-II, LOKI, Khufu и Khafre. Также, IDEA оказался гораздо устойчивей DES к очень удачной дифференциальной криптоатаке Бихама и Шамира, равно как и к линейному криптоанализу. Уверенность в IDEA растёт с каждым годом. К сожалению, самым большим препятствием к применению IDEA как стандарта шифрования стал тот факт, что держатель патента на его дизайн – AscomSystec – не предоставляет его для свободного применения без выплат роялти, как в случаях с DES и CAST.
Также, в числе прочих, в арсенал блочных шифров PGP включён и трёхключевой Triple-DES. DES был изобретён в IBM в середине 70-х. Хотя он и имеет эффективный дизайн, его 56-битовый ключ слишком мал по сегодняшним меркам. Triple-DES же крайне надёжен; за многие годы он был хорошо изучен, так что может быть это более удачный выбор в сравнении с относительно молодыми CAST и IDEA. Triple-DES – это DES, применяемый трижды на одном блоке данных, используя три разных ключа, за исключением того, что вторая операция проходит в обратном порядке в режиме расшифрования. Несмотря на то, что Triple-DES гораздо медленней, чем CAST или IDEA, скорость обычно не играет критической роли в email-приложениях. Хотя Triple-DES имеет длину ключа в 168 бит, эффективная стойкость составляет по меньшей мере 112 бит против взломщика с невероятно огромным вычислительным потенциалом, используемым в атаке. В соответствии с расчётами, представленными Майклом Винером на Crypto96, любые хотя бы удалённо правдоподобные ресурсы для хранения промежуточных вычислений, доступные взломщику, позволят провести атаку, требующую практически столько же времени/средств, сколько понадобится для лобового взлома 129-битового ключа. Применение Triple-DES не ограничено никакими патентами.
Начав с версии PGP 7.0, мы добавили алгоритм Брюса Шнайера Twofish. Twofish стал одним из пяти финалистов в проекте NIST «Улучшенный стандарт шифрования» (AES). AES представляет собой новую архитектуру блочного шифра, работающего на 128-битовых блоках, с размерами ключа в 128, 192 или 256 бит. Пятнадцать криптографических групп со всего света подали свои разработки, когда в 1996 году NIST объявил о начале конкурса, из которых в 1998 выбрал пять.
Пятью финалистами стали Twofish, Serpent, Rijndael, RC6 и MARS. Все пять прошли через серьёзнейшее криптоаналитическое испытание лучшими криптографами мира, многие из которых представляли на AES собственные работы, соревновавшиеся с другими. NIST из этих пяти превосходных алгоритмов в качестве победителя избрал Rijndael («рэйн долл»). Rijndael – это блочный шифр, разработанный Джоан Даймен и Винсентом Рижменом. Rijndael был включён в PGP, начиная с версии 7.1. За более подробной информацией об AES см. http://www.nist.gov/aes.
Открытые ключи, сгенерированные в PGP 5.0 и выше, несут в себе сведения о том, какие блочные шифры распознаются программой получателя с тем, чтобы программа отправителя знала, какие алгоритмы можно применять для зашифрования. Открытые ключи типа Diffie-Hellman/DSS поддерживают CAST, IDEA, AES (Rijndael), Triple-DES и Twofish в качестве блочных шифров с AES, установленным по умолчанию (в версиях 8.0 и выше). С целью обратной совместимости, ключи RSA не обладают такой возможностью. PGP ограничен алгоритмом IDEA для шифрования сообщений ключами RSA, поскольку старые версии PGP поддерживают только RSA и IDEA. 2
О процедуре сжатия данных в PGP
PGP сжимает открытый текст перед его зашифрованием, поскольку зашифрованные данные сжимаются гораздо хуже. Сжатие данных сокращает время их модемной передачи и экономит дисковое пространство, а так же, что более важно, усиливает криптографическую стойкость. Большинство криптоаналитических техник основано на статистическом анализе шифртекста в поисках признаков избыточности открытого текста. Сжатие уменьшает избыточность информации, чем существенно усиливает сопротивляемость криптоанализу. Сжатие данных требует немного дополнительного времени, но с точки зрения безопасности оно того стоит.
Слишком короткие файлы и файлы, которые не сжимаются достаточно хорошо, не сжимаются вовсе. Кроме того, программа распознаёт файлы, созданные наиболее распространёнными архиваторами, такими как PKZIP, и не пытается сжать уже сжатый файл.
Для технически любознательных можно добавить, что программа использует алгоритмы сжатия ZIP, написанные Жаном Лу Галли, Марком Адлером и Ричардом Уэйлсом. Программа ZIP использует алгоритмы сжатия, функционально эквивалентные тем, что применяются в PKZIP 2.x от PKWare. Эта программа сжатия была избрана для PGP в первую очередь из-за своей неплохой степени сжатия и быстроты работы.
О случайных числах и сеансовых ключах
Для генерации одноразовых симметричных сеансовых ключей PGP использует криптографически стойкий генератор псевдослучайных чисел (ГПСЧ). 3 Если файл ПСЧ отсутствует, он автоматически создаётся и заполняется абсолютно произвольными числами, полученными программой от показаний системного таймера, задержек нажатий клавиш и перемещений мыши.
Генератор «пересеивает» файл при каждом его использовании, частично смешивая старый материал с новым, полученным от конкретного времени суток и иных произвольных показателей. В качестве гамма-генератора применяется симметричный алгоритм шифрования. Файл содержит как случайные данные выхода генератора, так и случайные данные ключа, используемого для задания исходного внутреннего состояния генератора.
Файл ПСЧ должен быть защищён от компрометации, дабы снизить риск вычисления из него ваших предыдущих или будущих сеансовых ключей. Потенциальному взломщику придётся очень постараться, чтобы извлечь хоть что-то полезное из этого файла, поскольку он криптографически перемешивается до и после каждого применения. Тем не менее, не будет лишним защитить его от попадания в чужие руки. Если можете, сделайте файл доступным только для себя. Если такое невозможно, не позволяйте посторонним беспрепятственно копировать файлы с вашего компьютера.
О дайджестах сообщений
Дайджест сообщения – это компактная 160- или 128-битовая свёртка вашего сообщения-прообраза, или контрольная сумма файла. Вы можете представить его как отпечаток (fingerprint) сообщения или файла. Дайджест сообщения – это «отражение» прообраза: если исходные данные будут как-либо изменены, из них будет вычислен совершенно иной дайджест. Это позволяет обнаружить даже самые незначительные изменения, внесённые злоумышленником в сообщение. Дайджест генерируется посредством криптографически стойкой односторонней хэш-функции. В вычислительном плане невозможно создать такое подставное сообщение, которое бы производило дайджест, идентичный дайджесту оригинального сообщения. 4 В этом отношении дайджест сообщения гораздо лучше контрольной суммы (CRC32 или CRC64), поскольку довольно просто создать два различных сообщения, производящих одинаковую контрольную сумму. Но, как и в случае с контрольной суммой, не существует никакого способа восстановить из дайджеста исходные данные прообраза.
Алгоритм стойкой односторонней хэш-функции, используемый в PGP 5.0 и выше, называется SHA-1, что означает Secure Hash Algorithm; он был разработан в АНБ для Национального Института Стандартов и Технологий (NIST) США. SHA-1 – это 160-битовый хэш-алгоритм. Некоторые люди ко всем разработкам АНБ относятся с подозрением, поскольку именно АНБ «заведует» электронной и радиотехнической разведкой и взломом кодов. Но имейте в виду, что АНБ не заинтересовано в подделке подписей; правительство и его силовые структуры получат гораздо больше выгоды от хорошего стандарта неподделываемых ЭЦП, не позволяющих никому от них отрекаться. Кроме того, SHA-1 был опубликован в открытой литературе и, после тщательнейшего исследования лучшими криптографами мира, специализирующимися на хэш-функциях, получил единодушную высочайшую оценку своего крайне удачного дизайна. Он имеет некоторые архитектурные инновации, благодаря которым преодолевает все наблюдавшиеся прежде проблемы односторонних хэш-функций, когда-либо созданных гражданским криптографическим сообществом. Все последние версии PGP используют SHA-1 в качестве хэш-алгоритма для генерации подписей новыми ключами DSA, соответствующими Стандарту Цифровых Подписей (DSS) NIST. 5 Для нужд обратной совместимости новые версии PGP всё ещё используют MD5 для подписания ключами RSA [Legacy v3], т.к. старые версии PGP используют для работы с ЭЦП только алгоритм MD5.
В ранних версиях PGP в качестве алгоритма хэш-функции применялся MD5, Message Digest Algorithm, опубликованный для свободного применения компанией RSA Data Security. MD5 представляет собой хэш-алгоритм со 128-битовым выходом. В 1996 году MD5 был практически взломан немецким криптографом Гансом Доббертином. Хотя алгоритм не поддался окончательно, в нём выявились столь серьёзные недостатки (тенденция сжимающей функции алгоритма к коллизиям), что теперь никому более не рекомендуется использовать его для генерации ЭЦП. Дальнейшая работа в этой области наверняка позволит полностью его взломать, что сделает возможной свободную подделку электронных подписей. Если вы не желаете в один прекрасный день обнаружить свою электронную подпись на подставных признательных показаниях, переходите к применению новых ключей DSA и RSA v4 как предпочтительного метода генерации цифровых подписей, поскольку они в качестве криптографически стойкой односторонней хэш-функции используют SHA-1.
1 Разработчики же утверждают, что название CAST связано с процедурой разработки, и должно напоминать о вероятностном характере процесса (cast, англ. – догадка), а не об инициалах авторов.
2 Речь идёт о формате ключей RSA обратной совместимости, о так называемых RSA Legacy v3. Новый формат ключей RSA v4 в полной мере соответствует функциональности ключей DH/DSS v4.
3 В PGP реализован генератор ПСЧ, соответствующий спецификациям ANSI X9.17 для генерации непредсказуемых сеансовых ключей. Более подробные сведения могут быть найдены в IETF RFC 1750.
4 Если говорить точнее, в вычислительном плане практически невозможно создать такое подставное сообщение, которое производило бы дайджест, идентичный дайджесту заданного сообщения – для это потребуется перебрать 2160 вариантов при использовании хэш-функции SHA-1. В то же время, исходя из парадокса дней рождений, можно создать два сообщения, производящих идентичный дайждест, за 280 вычислений, а если принять во внимание теорию вероятности, то с 50-процентным успехом искомая комбинация сообщений будет найдена уже после 279 вычислений.
5 PGP 9.x и выше, как и текущие версии GnuPG, смещают акцент к применению хэш-функций семейства SHA-2, имеющих длину выхода до 512 бит. Предполагается, что это должно дать отсрочку на случай дальнейших криптоаналитических атак, ослабляющих коллизионную устойчивость классических алгоритмов хэширования.