Мифы и реальность современных криптографических алгоритмов
© Панасенко Сергей, 2005
Как и любая другая область знаний, криптология имеет немало мифов. Рассмотрим те два из них, которые вызывают частые дискуссии в данной области, считая, что дойдет очередь и до других.
Выбор криптографических стандартов
Рассмотрим два основных пути, по которым идут уполномоченные на то организации при выборе различных криптографических стандартов:
В последнее время принято активно порицать «неконкурсные» варианты выбора криптографических стандартов, так что историю создания алгоритма ГОСТ 28147-89 еще не поругал только ленивый. Поэтому сформулирую миф так: «Криптостандарт должен выбираться только на открытом конкурсе».
Считается, что в процессе глубокого анализа алгоритмов в рамках конкурса AES (и аналогичных) все алгоритмы-претенденты были подробнейшим образом изучены, как минимум, со следующих точек зрения:
Также считается, что никакая спецслужба мира не имеет достаточных ресурсов для всестороннего анализа разрабатываемого алгоритма. Однако, после изучения аналитических исследований специалистов, хранящихся на домашней страничке конкурса [1], предлагаю к рассмотрению следующие аргументы в пользу спецслужб:
Теперь несколько слов про отечественный стандарт шифрования. Исходя из рассуждений известнейшего криптолога Брюса Шнайера (Bruce Schneier) в [19], невосприимчивость алгоритма ГОСТ 28147-89 к дифференциальному и линейному криптоанализу плюс большое количество раундов означают, что ГОСТ 28147-89 существенно надежнее алгоритма DES. В свою очередь, известно, что за десятки лет использования алгоритма DES, не было найдено способов его вскрытия, заметно более эффективных, чем лобовое вскрытие (наиболее эффективной атакой считается линейный криптоанализ DES на основе 243 пар «открытый текст – шифртекст» с вероятностью 85%) [5]. Лобовое же вскрытие ГОСТа абсолютно невозможно из-за 256-битного ключа, а также возможности использования секретных значений узла замены.
Если же сравнивать производительность алгоритмов ГОСТ 28147-89 и AES, то на 32-битных платформах ГОСТ медленнее нового криптостандарта США всего на 10-20% [18]. Невпечатляющее преимущество алгоритма AES.
Стоит сказать, что во времена разработки ГОСТ 28147-89 сложно было бы представить себе открытый конкурс на выбор стандарта шифрования СССР. А теперь сравним время, когда данные алгоритмы были разработаны и представлены в виде криптостандартов. И из сравнения следует, что отечественный криптостандарт был принят, фактически, на 10 лет раньше начала конкурса AES. А что такое 10 лет в наше время бурного развития информационных технологий? Это огромный промежуток времени: 10 лет назад в ходу были компьютеры с процессором Pentium Pro, сейчас являющиеся анахронизмом. И пока весь мир шифровал DES’ом с 56-битным ключом или медленным Triple DES’ом, в России использовали сильный и не самый медленный алгоритм – завтрашний день, по сравнению с упомянутыми алгоритмами.
Вывод: отечественные спецслужбы в конце 1980-х годов создали алгоритм шифрования, фактически не уступающий новейшему стандарту США. Можно ли считать, что миф развенчан?
Увы, нет. Алгоритм ГОСТ 28147-89 имеет, как минимум, два следующих недостатка:
Нельзя сказать и о том, что ведущие экперты в один голос одобрили результаты конкурса AES. Приведу лишь высказывание известного эксперта Ричарда Шреппеля (Richard Schroeppel), автора одного из алгоритмов-претендентов (алгоритм HPC, без криптографических уязвимостей и весьма высокоскоростной на 64-битных платформах, однако, не прошедший во второй этап конкурса из-за высоких требований к памяти) о том, что нельзя выбирать один и тот же алгоритм для новейших многопроцессорных серверов и дешевых смарт-карт: лучше пожертвовать совместимостью и выбрать два криптостандарта, оптимизированных под разные задачи. Аналогичная рекомендация была дана Брайаном Глэдманом (Brian Gladman) в [4]. В связи с этим, кстати, вспомним конкурс NESSIE, где в качестве победителей выбрано было три (!) алгоритма симметричного шифрования, обрабатывающих блоки различного размера [8].
Несомненно, конкурс AES вызвал волну криптоаналитических исследований по всему миру и дал хороший толчок развитию данного направления во всем мире. Но и характеристики алгоритма ГОСТ 28147-89 однозначно доказывают правомочность закрытой разработки криптостандартов. Посмотрим, какие принципы и мнения будут доминировать при принятии следующих стандартов шифрования.
Сертификация
Миф № 2: Сертификация средств криптографической защиты информации является лишь бюрократической процедурой. Хотелось бы сказать несколько слов в защиту сертификации.
Технически достаточно легко на этапе разработки обеспечить наличие в программе шифрования возможности расшифрования информации специальным ключом. Теоретически, такую недокументированную возможность можно обеспечить следующим образом.
Типичная ключевая схема шифрования файлов
Рассмотрим ключевую схему, типичную для программ шифрования файлов (см. рис. 1) [14]. В качестве ключа, на котором выполняется собственно шифрование информации (файловый ключ), используется случайное значение, полученное с программного или аппаратного датчика случайных чисел (ДСЧ). Реализации ДСЧ обычно внедряются в программы шифрования или обеспечивается возможность их подключения, например, в случае с аппаратным ДСЧ.
Для обеспечения возможности последующего расшифрования файловый ключ должен быть сохранен вместе с зашифрованной информацией. Для этого используется долговременный ключ шифрования, который хранится у пользователя. Именно этот ключ предъявляется пользователем программе шифрования. Файловый ключ шифруется на долговременном ключе и в зашифрованном виде (например, в режиме простой замены алгоритма ГОСТ 28147-89) записывается в предусмотренное для него место в структуре данных, называемой заголовком зашифрованного файла. Заголовок содержит информацию, необходимую для расшифрования файла, для зашифрованного файла типичен следующий формат заголовка:
При необходимости расшифровать файл программа анализирует заголовок и выполняет следующие шаги:
Использование случайного файлового ключа, которое незначительно усложняет процедуру шифрования, решает две проблемы:
Варианты внедрения программной закладки
Теперь предположим, что у злоумышленника есть желание внедрить в программу шифрования "черный ход". Для разработчиков программы нет ничего проще – достаточно лишь в каждый заголовок, помимо перечисленной выше информации, записывать еще и файловый ключ, зашифрованный на некотором "универсальном ключе" (всего-то 32 байта лишней информации). Это уравнивает в возможностях расшифрования информации легальных пользователей и владельцев данного спецключа (см. рис. 2).
В качестве примера приведу файловую систему EFS (Encrypting File System), появившуюся в Microsoft Windows 2000, осуществляющую прозрачное шифрование файлов. Шифрование выполняется на случайном файловом ключе (FEK – File encryption key), который зашифровывается асимметричным алгоритмом на открытом ключе пользователя и хранится вместе с зашифрованным файлом. Однако, помимо этого, FEK зашифровывается и на одном или нескольких открытых ключах агентов восстановления данных и также записывается в файловый дескриптор. Соответственно, агент восстановления данных может в любой момент расшифровать файл с помощью своего секретного ключа. Это весьма полезно при увольнении пользователя или утери им носителя с долговременным секретным ключом, но, по сути, данная схема представляет собой реальный пример использования "черного хода" – зашифрованная пользователем информация в любой момент может быть получена, например, администрацией организации, в которой он работает [12].
Еще одна возможность недобросовестных разработчиков – усечение ключевого множества [13]. Происходит путем внедрения в программу специального ДСЧ, который генерирует не случайные файловые ключи, а ключи из какого-либо ограниченного подмножества ключей. Подмножество может быть достаточно большим по общечеловеческим меркам и содержать, например, миллиард ключей, которые легко переберутся злоумышленником по сравнению с возможными, 2256 (т.е. порядка 1077), ключей алгоритма ГОСТ 28147-89. В этом случае долговременный ключ также не интересен злоумышленнику – перебор будет осуществляться непосредственным расшифрованием файла на ключах из ограниченного подмножества.
Противоядие
Самый действенный способ защиты от возможных незадекларированных возможностей программ, в частности, от описанных выше, – это сертификация средств шифрования в ФСБ.
Рассмотрим, какие цели преследует сертификация программных средств шифрования:
В процессе проведения сертификационных испытаний эксперты сертифицирующей организации выполняют детальный анализ исходных текстов программных средств, уделяя особенное внимание модулям, осуществляющим криптографические преобразования и обработку ключевой информации.
Таким образом, сертификация средств криптографической защиты информации (СКЗИ), фактически, является единственным возможным способом гарантии качества реализации криптостандартов и отсутствия в средствах защиты намеренно внесенных закладок.
Стоит сказать и о том, что отсутствие сертификата ФСБ на СКЗИ не позволяет его использовать в Государственных органах и организациях РФ, организациях, выполняющих оборонные заказы РФ, и организациях или частных лицах, обменивающихся конфиденциальной информацией с Государственными органами и организациями РФ, а также с организациями, выполняющими оборонные заказы РФ [17]. А Положение ФАПСИ о системе сертификации СКЗИ [16] устанавливает следующее требование к используемым в сертифицируемых СКЗИ криптоалгоритмам: «Заявки на проведение сертификации шифровальных средств принимаются при условии, что в указанных средствах реализованы криптографические алгоритмы, объявленные государственными или отраслевыми стандартами Российской Федерации, иными нормативными документами, утвержденными Советом Министров - Правительством Российской Федерации или ФАПСИ». Т.е. сертифицированное средство шифрования данных должно реализовывать именно отечественный криптостандарт ГОСТ 28147-89.
Литература
Рисунки: