О применяемых алгоритмах шифрования

1. ГОСТ 28147—89 — советский и российский стандарт симметричного шифрования, введённый в 1990 году. Полное название — «ГОСТ 28147—89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования». Блочный шифроалгоритм. При использовании метода шифрования с гаммированием, может выполнять функции поточного шифроалгоритма.

По некоторым сведениям, история этого шифра гораздо более давняя. Алгоритм, положенный впоследствии в основу стандарта, родился, предположительно, в недрах Восьмого Главного управления КГБ СССР, преобразованного ныне в ФСБ, скорее всего, в одном из подведомственных ему закрытых НИИ, вероятно, ещё в 1970-х годах в рамках проектов создания программных и аппаратных реализаций шифра для различных компьютерных платформ.

С момента опубликования ГОСТа на нём стоял ограничительный гриф «Для служебного пользования», и формально шифр был объявлен «полностью открытым» только в мае 1994 года. К сожалению, история создания шифра и критерии разработчиков до сих пор не опубликованы.

Достоинства ГОСТа
бесперспективность силовой атаки (XSL-атаки в учёт не берутся, т.к. их эффективность на данный момент полностью не доказана);
эффективность реализации и соответственно высокое быстродействие на современных компьютерах.

Криптоанализ

Существуют атаки и на полнораундовый ГОСТ 28147-89 без каких-либо модификаций. Одна из первых открытых работ, в которых был проведен анализ алгоритма, использующим слабости процедуры расширения ключа ряда известных алгоритмов шифрования. В частности, полнораундовый алгоритм ГОСТ 28147-89 может быть вскрыт с помощью дифференциального криптоанализа на связанных ключах, но только в случае использования слабых таблиц замен. 24-раундовый вариант алгоритма (в котором отсутствуют первые 8 раундов) вскрывается аналогичным образом при любых таблицах замен, однако, сильные таблицы замен делают такую атаку абсолютно непрактичной.

Отечественные ученые А.Г. Ростовцев и Е.Б. Маховенко в 2001 г. предложили принципиально новый метод криптоанализа (по мнению авторов, существенно более эффективный, чем линейный и дифференциальный криптоанализ) путем формирования целевой функции от известного открытого текста, соответствующего ему шифртекста и искомого значения ключа и нахождения ее экстремума, соответствующего истинному значению ключа. Они же нашли большой класс слабых ключей алгоритма ГОСТ 28147-89, которые позволяют вскрыть алгоритм с помощью всего 4-х выбранных открытых текстов и соответствующих им шифртекстов с достаточно низкой сложностью. Криптоанализ алгоритма продолжен в работе.

В 2004 г. группа специалистов из Кореи предложила атаку, с помощью которой, используя дифференциальный криптоанализ на связанных ключах, можно получить с вероятностью 91,7% 12 бит секретного ключа . Для атаки требуется 235 выбранных открытых текстов и 236 операций шифрования. Как видно, данная атака, практически, бесполезна для реального вскрытия алгоритма.

Критика ГОСТа

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

2. DES (англ. Data Encryption Standard) — симметричный алгоритм шифрования, в котором один ключ используется как для зашифрования, так и для расшифрования сообщений. Также известен как алгоритм шифрования данных DEA (англ. Data Encryption Algorithm). Разработан фирмой IBM и утвержден правительством США в 1977 году как официальный стандарт (FIPS-46-3). DES имеет блоки по 64 бит и 16-цикловую структуру сети Фейстеля, для шифрования использует ключ в 56 бит. Алгоритм использует комбинирование нелинейного (S-box) и линейного (перестановки E,Р,IP,FP) преобразований. Для DES рекомендовано несколько режимов, например Electronic Code Book (ECB) и Cipher Block Chaining (CBC).

История

В 1972, после проведения исследования потребностей правительства США в компьютерной безопасности, американское НБС (Национальное Бюро Стандартов) — теперь переименовано НИСТ (Национальный Институт Стандартов и Технологий) — определило необходимость в общеправительственном стандарте шифрования некритичной информации. 15 мая 1973, после консультации с АНБ (Агентством национальной безопасности), НБС объявило конкурс на шифр, который удовлетворит строгим критериям проекта, но ни один конкурсант не обеспечивал выполнение всех требований. Второй конкурс был начат 27 августа 1974. На сей раз, шифр Lucifer, представленный IBM и развитый в течение периода 1973—1974 сочли приемлемым, он был основан на более раннем алгоритме Хорста Фейстеля.

17 марта 1975 предложеный алгоритм DES был издан в Федеральном Регистре. В следующем году было проведено 2 открытых симпозиума по обсуждению этого стандарта, где подверглись жесткой критике изменения внесенные АНБ в алгоритм: уменьшение первоначальной длины ключа и таинственные S-блоки. АНБ подозревалось в сознательном ослаблении алгоритма с целью, чтобы АНБ могло легко просматривать зашифрованые сообщения. После чего сенатом США была проведена проверка действий АНБ, результатом которой стало заявление опубликованное в 1978, в котором говорилось о том, что в процессе разработки DES АНБ убедило IBM, что уменьшенной длины ключа более чем достаточно для всех коммерческих приложений, использующих DES, косвенно помогало в разработке S-перестановок, а также, что окончательный алгоритм DES был лучшим, по их мнению, алгоритмом шифрования и был лишен статистической или математической слабости. Также было обнаружено, что АНБ никогда не вмешивалось в разработку этого алгоритма.

Часть подозрений в скрытой слабости S-перестановок была снята в 1990, когда были опубликованы результаты независимых исследований Эли Бихама (Eli Biham) и Ади Шамира (Adi Shamir) по дифференциальному криптоанализу — основному методу взлома блочных алгоритмов шифрования с симметричным ключом. S-блоки алгоритма DES оказались намного более устойчивыми к атакам, чем если бы их выбрали случайно. Это означает, что такая техника анализа была известна АНБ ещё в 70-х годах XX века.

3. Advanced Encryption Standard (AES), также известный, как Rijndael — симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), финалист конкурса AES и принятый в качестве американского стандарта шифрования правительством США. Выбор был сделан с расчётом на повсеместное использование и активный анализ алгоритма, как это было с его предшественником, DES. Государственный институт стандартов и технологий (англ. National Institute of Standards and Technology, NIST) США опубликовал предварительную спецификацию AES 26 ноября 2001 года, после пятилетней подготовки. 26 мая 2002 года AES был объявлен стандартом шифрования. По состоянию на 2006 год AES является одним из самых распространённых алгоритмов симметричного шифрования.

История

Необходимость в принятии нового стандарта была вызвана небольшой длиной ключа DES (56 бит), что позволяло применить метод грубой силы (полный перебор ключей) против этого алгоритма. Кроме того, архитектура DES была ориентирована на аппаратную реализацию, и программная реализация алгоритма на платформах с ограниченными ресурсами не давала достаточного быстродействия. Модификация 3-DES обладала достаточной длиной ключа, но при этом была еще медленнее.

Начало конкурса

2 января 1997 года NIST объявляет о намерении выбрать преемника для DES, являвшегося американским стандартом с 1977 года. Однако, вместо опубликования алгоритма, NIST принял различные предложения от заинтересованных сторон о том, каким образом следует выбирать алгоритм. Бурный отклик со стороны открытого криптографического сообщества привел к объявлению конкурса (12 сентября 1997 г.). Свой алгоритм могла предложить любая организация или группа исследователей. Требования к новому стандарту были следующими:
блочный шифр
длина блока, равная 128 битам
ключи длиной 128, 192 и 256 бит.

Подобные шифры были довольно редки во время объявления конкурса; возможно, лучшим был Square. Дополнительно кандидатам рекомендовалось:
использовать операции, легко реализуемые как аппаратно (в микрочипах), так и программно (на персональных компьютерах и серверах)
ориентироваться на 32-разрядные процессоры
не усложнять без необходимости структуру шифра для того, чтобы все заитересованные стороны были в состоянии самостоятельно провести независимый криптоанализ алгоритма и убедиться, что в нём не заложено каких-либо недокументированных возможностей.

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

1-й и 2-й раунды

20 августа 1998 года на 1-й конференции AES был объявлен список из 15 кандидатов: CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS, RC6, Rijndael, SAFER+, Serpent, Twofish. В последующих обсуждениях эти алгоритмы подвергались всестороннему анализу, причем исследовались не только криптографические свойства, такие как стойкость к известным атакам, отсутствие слабых ключей, но и практические аспекты реализации: оптимизацию скорости выполнения кода на различных архитектурах (от ПК до смарт-карт и аппаратных реализаций), возможность оптимизации размера кода, возможность распаралелливания. В марте 1999 года прошла 2-я конференция AES, а в августе 1999 года были объявлены 5 финалистов: MARS, RC6, Rijndael, Serpent и Twofish. Все эти алгоритмы были разработаны авторитетными криптографами с мировым именем. На 3-й конференции AES в апреле 2000 года авторы выступили с докладами о своих алгоритмах.

Третья конференция AES

Третья конференция AES прошла в Нью-Йорке 13 и 14 апреля 2000 года, незадолго до завершения второго этапа. На ней присутствовало 250 участников, многие из которых приехали из-за рубежа. Двухдневная конференция была разделена на восемь сессий, по четыре в день, плюс к тому состоялась неформальная дополнительная сессия, подводившая итоги первого дня. На сессиях первого дня обсуждались вопросы, связанные с программируемыми матрицами (FPGA), проводилась оценка реализации алгоритмов на различных платформах, в том числе PA-RISC, IA-64, Alpha, высокоуровневых смарт-картах и сигнальных процессорах, сравнивалась производительность претендентов на стандарт, анализировалось число раундов в алгоритмах-кандидатах. На сессиях второго дня был проанализирован Rijndael с сокращённым числом раундов и показана его слабость в этом случае, обсуждался вопрос об интегрировании в окончательный стандарт всех пяти алгоритмов-претендентов, ещё раз тестировались все алгоритмы. В конце второго дня была проведена презентация, на которой претенденты рассказывали о своих алгоритмах, их достоинствах и недостатках. О Rijndael рассказал Винсент Риджмен, заявивший о надёжности защиты, высокой общей производительности и простоте архитектуры своего кандидата.

4. International Data Encryption Algorithm (IDEA) — блочный алгоритм шифрования данных, запатентованный швейцарской фирмой Ascom. Изначально назывался IPES (Improved PES), поскольку является развитием стандарта PES (Proposed Encryption Standard). Лицензия позволяет свободно использовать алгоритм в некоммерческих приложениях.

Алгоритм описан в 1991 Хьюджем Леем (Xuejia Lai) и Джеймсов Массеем (James Massey) из ETH Zurich (по контракту с Hasler Foundation, которая позже влилась в Ascom-Tech AG.) в качестве замены Data Encryption Standard.

Использует 128-битный ключ и 64-битный размер блока.

Алгоритм применяется в PGP v2.0 и (опционально) в OpenPGP.

5. RC4 — это потоковый шифр, широко применяющийся в различных системах защиты информации в компьютерных сетях (например, в протоколе SSL и для шифрования паролей в Windows NT). Шифр разработан компанией RSA Security Inc. и для его использования требуется лицензия. Автором RC4 является Рональд Ривест (Ronald Rivest). RC расшифровывается как Ron’s Code или Rivest’s Cipher. До 1995 года программный код RC4 нигде не публиковался.

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

В США длина ключа для использования внутри страны рекомендуется равной 128 битов, но соглашение, заключённое между Software Publishers Association (SPA) и правительством США даёт RC4 специальный статус, который означает, что разрешено экспортировать шифры длинной ключа до 40 бит. 56-битные ключи разрешено использовать заграничным отделениям американских компаний.

В 1995 году в ньюс-группе sci.crypt был анонимно опубликован исходный текст алгоритма RC4. По-видимому, данный текст был получен в результате анализа исполняемого кода. Опубликованный шифр совместим с имеющимися продуктами, использующими RC4, а некоторые участники телеконференции, имевшие, по их словам, доступ к исходному коду RC4, подтвердили идентичность алгоритмов при различиях в обозначениях и структуре программы.

Ядро алгоритма состоит из функции генерации ключевого потока. Эта функция генерирует последовательность битов, которая затем объединяется с открытым текстом посредством суммирования по модулю два. Дешифрация состоит из регенерации этого ключевого потока и суммирования его с шифрограммой по модулю два, восстанавливая исходный текст. Другая главная часть алгоритма — функция инициализации, которая использует ключ переменной длины для создания начального состояния генератора ключевого потока.

RC4 — фактически класс алгоритмов, определяемых размером его блока. Этот параметр n является размером слова для алгоритма. Обычно, n = 8, но в целях анализа можно уменьшить его. Однако для повышения безопасности необходимо увеличить эту величину. Внутреннее состояние RC4 состоит из массива размером 2n слов и двух счетчиков, каждый размером в одно слово. Массив известен как S-бокс, и далее будет обозначаться как S. Он всегда содержит перестановку 2n возможных значений слова. Два счетчика обозначены через i и j.

Алгоритм инициализации RC4 приведен ниже. Этот алгоритм использует ключ, сохраненный в Key, и имеющий длину l байт. Инициализация начинается с заполнения массива S, далее этот массив перемешивается путем перестановок определяемых ключом. Так как только одно действие выполняется над S, то должно выполняться утверждение, что S всегда содержит все значения кодового слова.

6. RC5 (Ron’s Code 5 или Rivest’s Cipher 5) — это блочный шифр, разработанный Роном Ривестом из компании RSA Security Inc..

Алгоритм RC5 имеет переменные длину блока, количество раундов и длину ключа. Для спецификации алгоритма с конкретными параметрами принято обозначение RC5-W/R/K, где W равно половине длины блока в битах, R — число раундов, K — длина ключа в байтах.

Для эффективной реализации величину W рекомендуют брать равным машинному слову. Например, для 32-битных платформ оптимальным будет выбор W=32, что соответствует размеру блока 64 бита.

Для стимуляции изучения и применения шифра RC5 RSA Security Inc. 28 января 1997 года предложила взломать серию сообщений, зашифрованных алгоритмом RC5 с разными параметрами, назначив за взлом каждого сообщения приз в $10000. Шифр с самыми слабыми параметрами RC5-32/12/5 был взломан в течение нескольких часов. Тем не менее, последний осуществлённый взлом шифра RC5-32/12/8 потребовал 5 лет. Взлом RC5-32/12/8 был осуществлён в рамках проекта распределённых вычислений RC5-64 (здесь 64=K*8, длина ключа в битах) под руководством distributed.net. По-прежнему неприступными пока остаются RC5-32/12/K для K=9..16. distributed.net стартовала проект RC5-72 для взлома RC5-32/12/9.

7. RC6 — симметричный блочный криптографический алгоритм, производный от алгоритма RC5. Был создан Роном Ривестом, Мэттом Робшау и Рэем Сиднеем для удовлетворения требований конкурса Advanced Encryption Standard. Алгоритм был одним из пяти финалистов конкурса, был также представлен NESSIE и CRYPTREC. Является собственническим (проприетарным) алгоритмом и запатентован RSA Security.

RC6 поддерживает блоки длиной 128 бит и ключи длиной 128, 192, и 256 бит, но, в отличие от RC5, может быть сконфигурирован для поддержки более широкого диапазона длин как блоков, так и ключей. RC6 очень похож на RC5 по своей структуре. Является финалистом AES

8. Tiny Encryption Algorithm (TEA) — блочный алгоритм шифрования типа «Сеть Фейстеля», представленный в 1994 году Дэвидом Уилером(David Wheeler) и Роджером Нидхэмом(Roger Needham).
XTEA и XXTEA являются доработанными вариантами алгоритма TEA, призванными исправить его уязвимости и усилить алгоритм. При этом, XXTEA является наиболее сложным из вариантов. Существует так же алгоритм RTEA, основанный на концепции XTEA, значительно усиленный и при этом упрощенный. Алгоритмы XTEA-tw и XXTEA-tw представляют собой упрощенные реализиции XTEA и XXTEA, оптимизированные под 64-битный блок, с увеличенным числом раундов, оптимальным значением сдвигов shl/shr (6 и 9 вместо 4 и 5)

9. Twofish — симметричный алгоритм блочного шифрования с размером блока 128 бит и длиной ключа до 256 бит. Число раундов 16. Разработан группой специалистов во главе с Брюсом Шнайером. Являлся одним из 5 финалистов второго этапа конкурса AES (но не был выбран таковым, преимущественно из-за достаточно медленного выполнения по сравнению с AES на большинстве платформ). Алгоритм разработан на основе алгоритмов Blowfish, Safer и Square.

Отличительными особенностями алгоритма является использование предварительно вычисляемых и зависящих от ключа S-блоков и сложная схема разверстки подключей шифрования. Половина n-битного ключа шифрования используется как собственно ключ шифрования, другая — для модификации алгоритма (от нее зависят S-блоки). Twofish наследует некоторые принципы построения из других шифров, так он использует ту же сеть Фейстеля, что и DES, преобразование, подобное преобразованию Хадамарда (Pseudo Hadamard transform), из алгоритмов семейства Safer и т.д.

Алгоритм Twofish не запатентован и может быть использован кем-угодно без какой-либо платы или отчислений. Он используется во многих программах шифрования, хотя и получил меньшее распространение, чем Blowfish.

10. Serpent «змея», некоторые предыдущие разработки авторов тоже носили названия в честь животных, например Tiger, Bear) — симметричный блочный алгоритм шифрования, разработанный Россом Андерсоном, Эли Бихамом и Ларсом Кнудсеном. Алгоритм являлся одним из финалистов 2-го этапа конкурса AES. Как и другие алгоритмы участвующие в конкурсе AES, Serpent имеет размер блока 128 бит и возможные длины ключа 128, 192 или 256 бит. Алгоритм представляет собой 32-х раундовую сеть Файстеля, работающую с блоком из 4-х 32-ух битных слов. Serpent был разработан так, что все операции могут быть выполнены параллельно, используя 32 1-битных «потока».

При разработке Serpent использовался более консервативный подход к безопасности нежели у других финалистов AES, проектировщики шифра считали, что 16 раундов достаточно, чтобы противостоять известным видам криптоанализа, но увеличили число раундов до 32, чтобы алгоритм мог лучше противостоять еще не известным методам криптоанализа.

Шифр Serpent не запатентован и является общественным достоянием.

11. Blowfish (произносится [блоу-фиш]) — криптографический алгоритм, реализующий симметричное шифрование.

Разработан Брюсом Шнайером в 1993 году. Представляет собой сеть Фейстеля. Функция выполнена на простых и быстрых операциях: XOR, подстановка, сложение.

Характеристики:
Размер блока: 64 бит.
Длина ключа: переменная, до 448 бит.
Число раундов: 16.

По заявлению автора, критерии проектирования Blowfish были:
скорость;
простота;
компактность;
настраиваемая стойкость.

12. 3-DES — симметричный блочный криптографический алгоритм, созданный на основе алгоритма DES с целью устранения главного недостатка последнего — малой длины ключа (56 бит), который может быть взломан методом перебора ключа.

В 3-DES был избран простой путь увеличения длины ключа без необходимости переходить на новый алгоритм — в нем над 64-битным блоком данных несколько раз производится шифрование алгоритмом DES (конечно, с разным ключом), в простейшем варианте это выглядит как: DES(k3;DES(k2;DES(k1;M))), где M - блок исходных данных, k1, k2 и k3 — ключи DES. Этот вариант известен как EEE — поскольку три операции DES являются шифрованием, более распространен вариант EDE (стандарт FIPS-46-3), в котором серединное шифрование DES с ключом k2 заменяется операцией расшифрования с тем же ключом (k2). В общем, длина ключа алгоритма 3-DES равна 168 битам (3x ключ DES)

13. Camellia — алгоритм симметричного блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), один из финалистов европейского конкурса NESSIE (наряду с AES и Shacal-2), разработка японских компаний Nippon Telegraph and Telephone Corporation и Mitsubishi Electric Corporation (представлен 10 марта 2000 г.). Camellia является дальнейшим развитием алгоритма шифрования E2, одного из алгоритмов, представленных на конкурсе AES.
Структура алгоритма основана на классической цепи Фейстеля с предварительным и финальным забеливанием. Цикловая функция использует нелинейное преобразование (S-блоки), блок линейного рассеивания (побайтовая операция XOR) и байтовую перестановку.

14. LOKI97 - это 128-битный 16 - цикловой симметричный блочный шифр с 128-256 - битным пользовательским ключом, используемым как для зашифрования, так и для расшифрования сообщений. Разработан Lawrie Brown совместно с J.Pieprzyk и J.Seberry. Имеет структуру сбалансированную петли сети Фейстеля с использованием 16 циклов и сложной функцией f, которая объединяет два S-P слоя.
На данный момент не находит широкого распространения, поскольку имеет сравнительно низкую скорость шифрования, более высокие чем другие участники AES требования ресурсам, некоторые потенциальные уязвимости.
При разработке LOKI97 были учтены особенности существующих на этот момент симметричных алгоритмов, учтены их уязвимости и достоинства. В частности, в своей статье «Предварительные наброски по доработке LOKI», 15 декабря 1997 года автор алгоритма L.Brown исследует Blowfish, CAST, IDEA, TEA, ICE, SAFER и ряд других алгоритмов. В этой статье были рассмотрены уязвимости исходного алгоритма - LOKI91, предшественника LOKI97, имееющего недостатоток в механизме выработки ключей, который позволял, теоритически, использовать механизм «грубой силы» для атаки.
Шифр LOKI97 не патентован, свободен для использования, позиционируется автором как замена DES и другим блочным алгоритмам. LOKI97 был первым опубликованным кандидатом в конкурсе Advanced Encryption Standard, был в достаточно краткие сроки анализирован и атакован. Анализ некоторых проблем механизма LOKI97, которые привели к отказу в попадании в корокий список AES содержаться в работе «Weaknesses in LOKI97» (Rijmen & Knudsen, 1999) - было выявлено, что дифференциальний криптоанализ может быть достаточно эффективен.
Предшественниками являются алгоритмы LOKI89 и LOKI91

15. Bass-O-Matic - симметричный блочный криптоалгоритм, разработанный Филом Зиммерманном для его программы шифрования электронной почты, PGP, использовался исключительно в ее первой публичной версии - 1.0. Согласно исходных текстов и заявлений автора, алгоримт был создан еще в 1988, опубликован впервые в 1991. После того, как криптограф Eli Biham указал на ряд уязвимостей в алгоритме BassOmatic, автор заменил его на более устойчивый к атакам алгоритм IDEA в следующей версии PGP.
Алгоритм основан на работе с блоками размером 256 байт (2048 бит). Размер ключа может составлять от 8 до 2048 бит, причем 6 младших бит ключа являются контрольными битами, которые выбираются в зависимости от различных вариаций. Число раундов состоявляет в исходном варианте от 1 до 8, в зависмости от 3 младших контрольных бит, 4 бит определяет одно из ключевых расписаний: одно используетcя для установки начального значения генератора псевдослучайных чисел, другое использует собственный механизм алгоритма BassOmatic. Использование данных вариаций значительно усложняет механизм шифрования алгоритма, в тоже время приводит к тому, что в зависимости порядка бит криптографическая стойкость ключей сильно варьируется. В качестве некоторого решения данной проблемы DarkCryptTC использует модифицированный вариант алгоритма Bassomatic с диапазоном раундов от 8 до 16 и увеличенным до 16 набором таблиц пермутации.
Ключевое расписание использует таблицы пермутации, каждая пермутация содержит значения от 0 до 255. Каждый цикл шифрования состоит из 4 операций: Операций XOR с таблицей пермутации, имельчение или пермутирование отдельных бит в блоке, безключевой диффузии и распространения, именуемых англ. raking (сгребание), и этапа подстановки с использованием таблиц подстановки, именуемых S-box. Этап измельчения может так же пермутировать все 8-битные массивы независимо, или в группе из четырех в зависимости от 3-го котрольного бита. Таблицы пермутации могут оставаться неизменными в течении всего процесса шифрования, либо, если установлен 5-й контрольный бит, таблицы пермутации генерируются отдельно для каждого блока.

16. KolchCrypt III — прототип нового отечественного симметричного 512 разрядного алгоритма шифрования (криптоалгоритма). Размер блока - 64 байта (512 бит), длина ключа - 512 бит, число циклов - 8, работает в режиме CBC. Реализиован на основе генерации потока псведослучайных чисел и мутирующей таблицы замен с использованием хэшалгоритмов SHA512 и HAVAL256, реализована мутация ключа. На данный момент является не более чем работающей идеей или как иногда называют эксперементальные алгоритмы toy-cipher (шифр-игрушка). Исходные тексты доступны свободны, непатентован, использование и модификация с целью улучшения приветствуются.

17. VigerePlus TEA II — еще один прототип нового отечественного симметричного 512 разрядного алгоритма шифрования. Размер блока - 64 байта (512 бит), длина ключа - 512 бит, работает в режиме CBC. Реализиован на основе генерации потока псведослучайных чисел и мутирующей таблицы замен с использованием хэшалгоритмов SHA512 и HAVAL256. Реализованы: мутация ключа, побайтовая перестановка (перемешивание), ротация бит, таблица подстановки, элементы шифра Виженера, ряд дополнительных преобразований и некоторые элементы алгоритмов RTEA, EnRUPT и XTEA. На данный момент так же является не более чем работающей идеей. Исходные тексты доступны свободны, непатентован, использование и модификация с целью улучшения приветствуются.

18. Cartman — семейство блочных шифров. Размер блока - 128 бит, длина ключа - 256-2048 бит. Исходные тексты доступны свободны, непатентован, использование и модификация с целью улучшения приветствуются.

О надежности некоторых применяемых алгоритмов

LUCIFER
В конце 60-х IBM начала выполнение исследовательской программы по компьютерной криптографии, названной Люцифером (Lucifer) и руководимой сначала Хорстом Фейстелем (Horst Feistel), а затем Уолтом Тачменом (Walt Tuchman). Это же название - Lucifer - получил блочный алгоритм, появившийся в результате этой программы в начале 70-х. В действительности существует по меньшей мере два различных алгоритма с таким именем. Все это привело к заметной путанице. На основе Lucifer позднее был создан DES. В настоящее время существуют эффективные методы криптоанализа Lucifer, поэтому он очевидно небезопасен и имеет лишь историческое значение.

DES
DES (англ. Data Encryption Standard) — симметричный алгоритм шифрования. Также известен как алгоритм шифрования данных DEA (англ. Data Encryption Algorithm). Разработан фирмой IBM и утвержден правительством США в 1977 году как официальный стандарт (FIPS-46-3). DES имеет блоки по 64 бит и 16-цикловую структуру сети Фейстеля, для шифрования использует ключ в 56 бит. Для DES рекомендовано несколько режимов, например ECB и CBC. Из-за короткого ключа, в настоящее время относительно легко взламывается методом полного перебора.

NewDES
NewDES (новый DES) был спроектирован в 1985 году Робертом Скоттом (Robert Scott) как возможная замена DES. Алгоритм не является модификацией DES, как может показаться из его названия. Он оперирует 64-битовыми блоками шифротекста, но использует 120-битовый ключ. NewDES проще, чем DES, в нем нет начальной и заключительной перестановок. Все операции выполняются над целыми байтами. На самом деле NewDES ни коим образом не является новой версией DES, название было выбрано неудачно. Криптоанализ рядом крипноаналитиков показал, что NewDES слабее, чем DES.

AES
Advanced Encryption Standard (AES), также известный, как Rijndael — симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), финалист конкурса AES и принятый в настоящее время в качестве американского стандарта шифрования правительством США. Выбор был сделан с расчётом на повсеместное использование и активный анализ алгоритма, как это было с его предшественником, DES. Государственный институт стандартов и технологий (англ. National Institute of Standards and Technology, NIST) США опубликовал предварительную спецификацию AES 26 ноября 2001 года, после пятилетней подготовки. 26 мая 2002 года AES был объявлен стандартом шифрования. По состоянию на 2006 год AES является одним из самых распространённых алгоритмов симметричного шифрования.

FEAL
FEAL был предложен Акихиро Шимузу (Akihiro Shimizu) Шоджи Миягучи (Shoji Miyaguchi) из NTT Japan. В нем используются 64-битовый блок и 64-битовый ключ. Его идея состоит в том, чтобы создать алгоритм, подобный DES, но с более сильной функцией этапа. Используя меньше этапов, этот алгоритм мог бы работать быстрее. К несчастью действительность оказалась далека от целей проекта. Криптоанализ алгоритма показал что его можно легко взломать, что стимулировало разработчиков FEAL создавать его модификации: FEAL-8, затем FEAL-N (алгоритм с переменным числом этапов, больше 8), но они также оказались нестойкими. Поэтому разработчики FEAL определили также модификацию FEAL - FEAL-NX, в которой используется 128-битовый ключ. Однако криптоаналитики Бихам и Шамир показали, что для любого значения N FEAL-NX со 128-битовым ключом взламывать не сложнее, чем FEAL-N с 64-битовым ключом. Из всего выше сказанного напрашивается лишь один вывод - крайняя ненадежность этого алгоритма.

REDOC
REDOC II представляет собой блочный алгоритм, разработанный Майклом Вудом (Michael Wood) для Cryptech, Inc. В нем используются 20-байтовый (160-битовый) ключ и 80-битовый блок. При условии, что самым эффективным средством вскрытия этого алгоритма является грубая сила, REDOC II очень надежен, для вскрытия ключа требуется 2^160 операций.

REDOC III представляет собой упрощенную версию REDOC II, также разработанную Майклом Вудом. Он работает с 80-битовым блоком. Длина ключа может меняться и достигать 2560 байтов (20480 битов). Алгоритм состоит только из операций XOR для байтов ключа и открытого текста, перестановки или подстановки не используются. Этот алгоритм несложен и быстр и... не безопасен. Он чувствителен к дифференциальному криптоанализу. Для взлома нужно всего примерно 223 выбранных открытых текстов.

RC5
Это блочный шифр, разработанный Роном Ривестом из компании RSA Security Inc.. Алгоритм RC5 имеет переменные длину блока, количество раундов и длину ключа. Для спецификации алгоритма с конкретными параметрами принято обозначение RC5-W/R/K, где W равно половине длины блока в битах, R — число раундов, K — длина ключа в байтах. Для эффективной реализации величину W рекомендуют брать равным машинному слову. Например, для 32-битных платформ оптимальным будет выбор W=32, что соответствует размеру блока 64 бита. Для стимуляции изучения и применения шифра RC5 RSA Security Inc. 28 января 1997 года предложила взломать серию сообщений, зашифрованных алгоритмом RC5 с разными параметрами, назначив за взлом каждого сообщения приз в $10000. Шифр с самыми слабыми параметрами RC5-32/12/5 был взломан в течение нескольких часов. Тем не менее, последний осуществлённый взлом шифра RC5-32/12/8 потребовал 5 лет. Взлом RC5-32/12/8 был осуществлён в рамках проекта распределённых вычислений RC5-64 (здесь 64=K*8, длина ключа в битах) под руководством distributed.net. По-прежнему неприступными пока остаются RC5-32/12/K для K=9..16. distributed.net стартовала проект RC5-72 для взлома RC5-32/12/9.

IDEA
Первый вариант шифра IDEA, предложенный Ксуеджа Лай (Xuejia Lai) и Джеймсом Масси (James Massey), появился в 1990 году. Он назывался PES (Proposed Encryption Standard, предложенный стандарт шифрования). В следующем году, после демонстрации Бихамом и Шамиром возможностей дифференциального криптоанализа, авторы усилили свой шифр против такого вскрытия и назвали новый алгоритм IPES (Improved Proposed Encryption Standard, улучшенный предложенный стандарт шифрования). В 1992 году название IPES было изменено на IDEA (International Data Encryption Algorithm, международный алгоритм шифрования данных). запатентован швейцарской фирмой Ascom, но лицензия позволяет свободно использовать алгоритм в некоммерческих приложениях. IDEA основывается на некоторых впечатляющих теоретических положениях и, хотя криптоанализ добился некоторых успехов в отношении вариантов с уменьшенным количеством этапов, алгоритм все еще кажется сильным. Это один из самых лучших и самых безопасных блочных алгоритмов, опубликованных в настоящее время. Благодаря длине ключа в IDEA равной 128 битам вскрытие грубой силой, потребует 2^128 операций. Даже если проверять миллиард ключей в секунду для вскрытия потребуется времени больше, чем возраст вселенной. Разработчики сделали все возможное, чтобы сделать алгоритм устойчивым к дифференциальному криптоанализу. Хотя попыток выполнить криптоанализ IDEA было много, неизвестно ни об одной успешной. Его сегодняшняя известность также отчасти объясняется тем, что он используется в PGP и (опционально) в OpenPGP.

MMB
Недовольство использованием в IDEA 64-битового блока шифрования привело к созданию Джоном Дэймоном алгоритма под названием MMB (Modular Multiplication-based Block cipher, модульный блочный шифр, использующий умножения). В основе MMB лежит теория, используемая и в IDEA: перемешивающие операции из различных групп. MMB - это итеративный алгоритм, главным образом состоящий из линейных действий (XOR и использование ключа) и параллельное использование четырех больших нелинейных изменяющих обычный порядок подстановок. Эти подстановки определяются с помощью умножения по модулю 232-1 с постоянными множителями. Результатом применения этих действий является алгоритм, использующий и 128-битовый ключ и 128-битовый блок. К сожалению MMB - это умерший алгоритм. Это утверждение справедливо по многим причинам, он проектировался без учета требований устойчивости к линейному криптоанализу. Во вторых, Эли Бихам реализовал эффективное вскрытие с выбранным ключом, использующее тот факт, что все этапы идентичны, а ключ при использовании просто циклически сдвигается на 32 бита.

ГОСТ
ГОСТ 28147—89 — вначале советский и в настоящее время российский стандарт симметричного шифрования. Полное название — «ГОСТ 28147—89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования». Является блочным шифроалгоритмом. По некоторым сведениям, история этого шифра гораздо более давняя. Алгоритм, положенный впоследствии в основу стандарта, родился, предположительно, в недрах Восьмого Главного управления КГБ СССР, преобразованного ныне в ФСБ, скорее всего, в одном из подведомственных ему закрытых НИИ, вероятно, ещё в 1970-х годах в рамках проектов создания программных и аппаратных реализаций шифра для различных компьютерных платформ.С момента опубликования ГОСТа на нём стоял ограничительный гриф «Для служебного пользования», и формально шифр был объявлен «полностью открытым» только в мае 1994 года. К сожалению, история создания шифра и критерии разработчиков до сих пор не опубликованы. Если лучшим способом вскрытия ГОСТ является грубая сила, то это очень безопасный алгоритм. ГОСТ использует 256-битовый ключ, а если учитывать секретные S-блоки, то длина ключа возрастает. Правда стандарт ГОСТ не определяет способ генерации S-блоков, говорится только, что блоки должны быть предоставлены каким-то образом. Это породило домыслы о том, что советский, а сейчас российский производитель может поставлять хорошие S-блоки "хорошим" организациям и плохие S-блоки тем организациям, которых производитель собирается надуть. Это вполне может быть так. Одним словом достаточно непрозрачный алгоритм шифрования. К томуже существуют атаки на ГОСТ 28147-89.

CAST
CAST был разработан в Канаде Карлайслом Адамсом (Carlisle Adams) и Стаффордом Таваресом (Stafford Tavares). Они утверждают, что название обусловлено ходом разработки и должно напоминать о вероятностном характере процесса, а не об инициалах авторов. Описываемый алгоритм CAST использует 64-битовый блок и 64-битовый ключ. CAST устойчив к дифференциальному и линейному криптоанализу. Неизвестно иного, чем грубая сила, способа вскрыть CAST. Однако ситуация с ним чем то схожа с ГОСТ-ом. Сила алгоритма CAST заключена в его S-блоках. У CAST нет фиксированных S-блоков и для каждого приложения они конструируются заново. Созданный для конкретной реализации CAST S-блокои уже больше никогда не меняется. Другими словами S-блоки зависят от реализации, а не от ключа. Northern Telecom использует CAST в своем пакете программ Entrust для компьютеров Macintosh, PC и рабочих станций UNIX. Выбранные ими S-блоки не опубликованы, что впрочем неудивительно.

BLOWFISH
Blowfish - это алгоритм, разработанный Б.Шнайером для реализации на больших микропроцессорах. Алгоритм незапатентован. При проектировании Blowfish использовались следующие критерии: скорость, нетребовательность к памяти (Blowfish может работать менее, чем в 5 Кбайтпамяти), простота (Blowfish использует только простые операции: сложение, XOR и выборка из таблицы по 32-битовому операнду), настраиваемая безопасность, длина ключа переменна и может достигать 448 битов. Blowfish оптимизирован для тех приложений, в которых нет частой смены ключей, таких как линии связи или программа автоматического шифрования файлов.
Blowfish представляет собой 64-битовый блочный шифр с ключом переменной длины. В настоящее время неизвестно об успешном криптоанализе Blowfish.

SAFER
SAFER K-64 означает Secure And Fast Encryption Routine with a Key of 64 bits - Безопасная и быстрая процедура шифрования с 64-битовым ключом. Этот не являющийся частной собственностью алгоритм, разработанный Джеймсом Массеем (James Massey) для Cylink Corp., используется в некоторых из продуктов этой компании. Правительство Сингапура собирается использовать этот алгоритм - с 128-битовым ключом для широкого спектра приложений. Его использование не ограничено патентом, авторскими правами или другими ограничениями.
Алгоритм работает с 64-битовым блоком и 64-битовым ключом. В отличие от DES он является не сетью Фейстела, а итеративным блочным шифром. Алгоритм оперирует только байтами.

SAFER K-128
Это модификация алгоритма SAFER с альтернативным способом использования ключа разработаная Министерством внутренних дел Сингапура, а затем была встроена Массеем в SAFER.

Безопасность SAFER K-64 остается под вопросом. Наверняка стоит подождать несколько лет (ожидая результатов криптоанализа от сообщества криптоаналитиков) прежде, чем как-либо использовать SAFER. Хотя вполне возможно он и вполне безопасен.

3-WAY
3-Way - это блочный шифр, разработанный Джоном Дэйменом (Joan Daemen). Он использует блок и ключ длиной 96 бит, и его схема предполагает очень эффективную аппаратную реализацию. 3-Way является не сетью Фейстела, а итеративным блочным шифром. У 3-Way может быть n этапов, Дэймен рекомендует 11. Пока об успешном криптоанализе 3-Way неизвестно. Алгоритм незапатентован.

LOKI97
LOKI97 - это 128-битный 16 - цикловой симметричный блочный шифр с 128-256 - битным пользовательским ключом. Разработан Lawrie Brown совместно с J.Pieprzyk и J.Seberry. На данный момент не находит широкого распространения, поскольку имеет сравнительно низкую скорость шифрования, более высокие чем другие участники AES требования ресурсам, некоторые потенциальные уязвимости. Шифр LOKI97 не патентован, свободен для использования. По результатам содержащемся в работе «Weaknesses in LOKI97» (Rijmen & Knudsen, 1999) - было выявлено, что дифференциальный криптоанализ может быть достаточно эффективен против него. К тому же его предшественники LOKI89 и LOKI91 уже дескредитировали себя.

SEAL
SEAL - это программно эффективный потоковый шифр, разработанный в IBM Филом Рогэвэем (Phil Roga-way) и Доном Копперсмитом (Don Coppersmith). Алгоритм оптимизирован для 32-битовых процессоров. Чтобы избежать влияния использования медленных операций SEAL выполняет ряд предварительных действий с ключом, сохраняя результаты в нескольких таблицах. Эти таблицы используются для ускорения шифрования и дешифрирования. SEAL достаточно новый алгоритм, ему еще предстоит пройти через горнило открытого криптоанализа. Это вызывает определенную настороженность. Однако SEAL кажется хорошо продуманным алгоритмом. Его особенности, в конечном счете, наполнены смыслом. К тому же Дон Копперсмит считается лучшим криптоаналитиком в мире.

SKIPJACK
Skipjack разработан NSA в качестве алгоритма шифрования для микросхем Clipper и Capstone. Изначально алгоритм объявлен секретным, его подробности сначала не публиковались. Безопасен ли Skipjack? Если NSA захочет создать безопасный алгоритм, оно, скорее всего, это сделает. С другой стороны, если NSA захочет создать алгоритм с лазейкой, то оно сможет сделать и это. Размер блока в Skipjack равен 64 битам.Алгоритм использует 80-битовый ключ. Операция шифрования или дешифрирования состоит из 32 этапов. NSA начало работу над ним в 1985 и завершило проверку в 1990.
Полномасштабный криптоанализ Skipjack начался уже после опубликования его спецификации в 1998 г. В том же году вышла работа ряда специалистов из Израиля, в которой, в частности, было отмечено свойство несимметричности ключа шифрования Skipjack, незначительно снижающее трудоемкость полного перебора ключей. В этой же работе было представлено несколько атак на усеченные версии алгоритма с неполным числом раундов и другими изменениями. Стоит отметить одну из опубликованных атак, действовавшую против варианта Skipjack, в котором не было всего трех операций XOR по сравнению со стандартной версией - в раундах 4, 16 и 17. Такая версия алгоритма получила название Skipjack-3XOR; интересно, что удаление всего трех операций XOR из 320 подобных операций приводит к полной слабости алгоритма - в этом случае ключ вскрывается при наличии 29 пар блоков открытого текста и шифртекста путем выполнения всего около 1 млн операций шифрования.

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

SQUARE
Алгоритм Square интересен прежде всего по двум причинам. Во-первых, данный алгоритм разработан теми же специалистами, которые впоследствии создали алгоритм AES. Мало того, именно структура алгоритма Square легла в основу алгоритма Rijndael. Структура алгоритма весьма нетрадиционна для современных алгоритмов симметричного шифрования данных - это справедливо как для 1997 г., когда был разработан алгоритм Square, так и для 2000-го, когда при подведении итогов конкурса AES эксперты отмечали, что "в основе алгоритма Rijndael лежит нетрадиционная парадигма, поэтому алгоритм может содержать скрытые уязвимости". Это не помешало Rijndael стать новым стандартом шифрования США, а та самая нетрадиционная структура сейчас называется "квадрат" (square) - по названию алгоритма, в котором она была впервые применена.

ENRUPT
Алгоритм, разработанный талантливым ученым Marcos el Ruptor. Является улучшенным TEA, точнее XXTEA. Упрощённым, укреплённым и ускоренным. Успешной атаки на алгоритм пока не существует, а опыт автора в области криптоанализа позволяет расчитывать на невозможность эффективных атак и в дальнейшей перспективе.

KHUFU
Khufu - 64-битовый блочный шифр. 64-битовый открытый тест сначала расщепляется на две 32-битовые половины (L и R). Над обеими половинами и определенными частями ключа выполняется операция XOR. Затем, аналогично DES, результаты проходят некоторую последовательность раундов. В каждом раунде младший значащий байт L используется как вход S-блока. У каждого S- блока 8 входных битов и 32 выходных бита. Далее выбранный в S-блоке 32- битовый элемент подвергается операции XOR с R. Затем L циклически сдвигается на число, кратное восьми битам, L и R меняются местами, и раунд завершается. Сам S-блок не статичен, он меняется каждые восемь раундов. Наконец, по окончании последнего раунда, над L и R выполняется операция XOR с другими частями ключа, и половины объединяются, образуя блок шифртекста. Хотя части ключа используются для операции XOR с блоком шифрования в начале и конце исполнения алгоритма, главное назначение ключа - генерация S- блоков. Эти S-блоки секретны, по существу, это часть ключа. Полный размер ключа алгоритма Khufu равен 512 бит (64 байт), алгоритм предоставляет способ генерации S-блоков по ключу. Вопрос о достаточном числе раундов остается открытым. Как указывает Меркл, 8-раундовый алгоритм Khufu уязвим к вскрытию с подобранным открытым текстом. Он рекомендует использовать 16, 24 или 32 раунда. (Меркл ограничивает количество раундов числами, кратными восьми, DarkCryptTC использует 64 раунда). Поскольку S-блоки Khufu зависят от ключа и секретны, алгоритм устойчив к дифференциальному криптоанализу. Известна дифференциальная атака на 16- раундовый Khufu, которая восстанавливает ключ с помощью 231 подобранных открытых текстов, однако этот метод не удалось расширить на большее число раундов. Если принять, что лучший метод взлома Khufu - лобовое вскрытие, стойкость алгоритма впечатляет. 512-би-овый ключ обеспечивает необходимую сложность вскрытия.