Криптография (блочный шифр)

Что такое Blowfish.

Blowfish это 64-бит блочный шифр разработанный Шнайером (Schneier) в 1993 году. Это шифр Файстела (Feistel) и каждый проход состоит из зависимой от ключа перестановки и зависимой от ключа с данными замены. Все операции основаны на операциях XOR и прибавлениях к 32-битным словам (XORs and additions on 32-bit words). Ключ имеет переменную длину (максимально 448 бит) и используется для генерации нескольких подключевых массивов (subkey arrays). Шифр был создан специально для 32-битных машин и существенно быстрее DES. 

В 1994 Dr.Dobb журнал спонсировал открытое соревнование с выиграшем в $1000. Это соревнование закончилось в Апреле 1995 и среди результатов было открыто существование нескольких слабых ключей. Однако, Blowfish может считаться защищенным, и Шнайер пригласил криптоаналитиков для продолжения исследования его шифра. 



Что такое DES.

DES (Data Encryption Standart) это симметричный алгоритм шифрования, т.е. один ключ используется как для зашифровывания, так и для расшифрования сообщений. Разработан фирмой IBM и утвержден правительством США в 1977 как официальный стандарт. 

DES имеет блоки по 64 бит и основан на 16 кратной перестановке данных, также для зашифрования использует ключ в 56 бит. Существует несколько режимов DES, например Electronic Code Book (ECB) и Cipher Block Chaining (CBC). 

56 бит - это 8 семибитовых ASCII символов, т.е. пароль не может быть больше чем 8 букв. Если вдобавок использовать только буквы и цифры, то количество возможных вариантов будет существенно меньше максимально возможных 2^56. 

Один из шагов алгоритма DES: 

Входной блок данных делится пополам на левую (L') и правую (R') части. После этого формируется выходной массив так, что его левая часть L'' представлена правой частью R' входного, из 32-битового слова R' с помощью битовых перестановок формируется 48-битовое слово. Полученное 48-битовое слово XOR-ится с 48-битовым раундовым ключом. Результирующее 48-битовое слово разбивается на 8 6-битовых групп, каждая 6-битовая группа посредством соответствующего S-box'а заменяется на 4-битовую группу и из полученных восьми 4-битовых групп составляется 32-битовое слово. Полученное слово XOR-ится с L', в результате получается R''. Можно убедиться, что все проведенные операции могут быть обращены и расшифрование осуществлятся за число операций, линейно зависящее от размера блока. После нескольких таких взбиваний можно считать, что каждый бит выходного блока шифровки может зависеть от каждого бита сообщения. 



Что такое Тройной DES.

Так как текст, зашифроaвaнный двойным DES оказывается хрупким при криптографической атаке - встреча на середие (meet in the middle), то текст шифруется 3 раза DES. Таким образом длина ключа возрастает до 168-бит (56x3). 

Не всегда, применеие тройного DES означает увелечение уровня безопасности сообщения. 

Типы тройного шифрования DES: 

DES-EEE3: Шифруется 3 раза с 3 различными ключами. 

DES-EDE3: 3 DES операции шифровка-расшифровка-шифровка с 3 различными ключами. 

DES-EEE2 и DES-EDE2: Как и предыдущие, за исключением того, что первая и третья операции используют одинаковый ключ. 

Сравнение различных видов DES шифрования.

# Шифрования

# Ключей

Вычисление (Computation)

Хранение (Storage)

Тип атаки

одиночный

1

2^56

-

known plaintext

одиночный

1

2^38

2^38

chosen plaintext

одиночный

1

-

2^56

chosen plaintext

двойной

2

2^112

-

known plaintext

двойной

2

2^56

2^56

known plaintext

двойной

2

-

2^112

chosen plaintext

тройной

2

2^112

-

known plaintext

тройной

2

2^56

2^56

2^56 chosen plaintext

тройной

2

2^(120-t)

-

2^t known plaintext

тройной

2

-

2^56

chosen plaintext

тройной

3

2^112

2^56

known plaintext

тройной

3

2^56

2^112

chosen plaintext





Что такое DES с независимыми ключами (independent subkeys).

DES выделяет из 56-битного ключа введенного пользователем 16 48-битных ключей, для использования в каждой из 16 перестановок. Интересно сравнение эффекта при использовании 768-битного ключа (разделенного на 16 48-битных подключиков) взамен использования 16 зависимых ключей создающимся режимом ключей в DES алгоритме.

При использовании независимых ключей будет существенно увеличиваться количество попыток, нужных для исчерпывающего поиска ключей. Изменение шифра повлечет за собой лишь не значительное увеличение стойкости шифра против дифференциальной и линейной криптоаналитических атаках чем у обычного DES. Это было открыто Битамом (Bitham).



Что такое IDEA.

IDEA (International Data Encryption Algorithm) - это вторая версия блочного шифра разработанный К.Лейем (Lai )и Д.Месси (Massey) в конце 80-х. Это шифр состоящий из 64-битных повторяющихся блоков со 128-битным ключом и восемью проходами (rounds). Хотя этот шифр не шифр Файстела (Feistel), дешифрование выполняется по тому же принципу, что и шифрование. Структура шифра была разработана для легкого воплощения как программно, так и аппаратно, и безопасность IDEA основывается на использовании трех не совместимх типов арифметических операций над 16-битными словами. Скорость программного IDEA сравнима со скоростью DES.

Один из принципов создания IDEA - затруднить дифференциальный криптоанализ. Также не одна линейная криптоаналитическая атака не закончилась успешно, как и не было выявлено алгебраически слабых мест. Самый полный анализ провел Daemen. Он открыл большой класс 2^51 слабых ключей, при использовании которых в процессе шифрования, ключ может быть обнаружен и востановлен. Однако, т.к. в IDEA существует 2^128 возможных вариантов ключей, то это открытие не влияет на практическую безопасность шифра. 



Что такое RC2 и RC4.

RC2 и RC4 это блочные шифры с ключом переменной длины созданные Роном Ривестом (Ron Rivest) для RSA Data Security. "RC" расшифровывается как "Ron's Code" или "Rivest Cipher (шрифт)". RC2 быстрее чем DES и был спецально разработан для замены ("drop-in" replacement) DES. Он может быть реализован более или менее защищенным чем DES, в зависимости от длины ключа. RC2 алгоритм конфиденциален и является собственностью RSA Data Security. RC2 может использоваться там, где используется DES.

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

RC2 и RC4 с ключами 128 бит обеспечивают такой же уровень безопасности как и IDEA или тройной DES. RC2 и RC4 используется широко разработчиками, чьи продукты экспортируются за пределы США, поскольку экспортировать DES запрещено.

Надежность RC4 была недавно поставлена под сомнение из за несанкционированного соглашения текста программы, использующей этот шифр.

Что такое RC5.

RC5 это довольно-таки быстрый блочный шифр разработанный Ривестом для RSA Data Security. Этот алгаритм параметричен, т.е. с пременным размером блока, длинной ключа и переменным числом проходов. Размер блока может быть 32, 64, или 128 битов. Количество проходов в промежутке от 0 до 2048 бит. Параметричность такого рода дает гибкость и эффективность шифрования.

RC5 состоит из ввода ключа (key expansion), шифрования и дешифрования. При вводе ключа вводятся также количество проходов, размер блока и т.д. Шифрование состоит из 3 примитвных операций : сложения, побитового XOR и чередования (rotation). Исключительная простота RC5 делает его простым в использовании, RC5 текст, также как и RSA, может быть дописан в конец письма в зашифрованном виде.

Безопасность RC5 основывается на зависящем от данных чередованием и смешиванием результатов различных операций. RC5 с размером блока 64 бита и 12 или более проходов обеспечивает хорошую стойкость против дифференциального и линейного криптанализов.



Что такое RSA.

RSA (авторы: Rivest, Shamir и Alderman) это система с открытым ключом (public-key) предназначенная как для шифрования, так и для аутентификации была разработана в 1977 году. Она основана на трудности разложения очень больших целых чисел на простые сомножители. 

RSA очень медленный алгоритм. Для сравнения, на програмном уровне DES по меньше мере в 100 раз быстрее RSA, на апаратном аж в 1,000-10,000 раз, в зависимости от выполнения. 

RSA алгоритм: 
1. Берутся два очень больших целых числа P и Q и находятся N=PQ и M=(P-1)(Q-1) 
2. Выбирается случайное целое число D, взаимно простое с M и вычисляется E=(1 MOD M)/D 
3. Потом публикуется D и N как открытый ключ, E сохраняется в тайне. 
4. Если S - сообщение, длина которого, определяемая по значению выражаемого им целого числа, должна быть в интервале (1,N), то оно превращается в шифровку возведением в степень D по модулю N и отправляется получателю S'=S^D MOD N 
5. Получатель сообщения расшифрорвывает его, возведя в степень E (число E ему уже известно) по модулю N, т.к. S=(S'^E MOD N)=S^(DE) MOD N 



Что такое ГОСТ 28147-89.

ГОСТ 28147-89 - это стандарт, принятый в 1989 году в Советском Союзе и установивший алгоритм шифрования данных, составляющих гостайну.  История создания этого алгоритма - тайна, покрытая мраком. По свидетельству причастных к его реализациям и использованию людей, алгоритм был разработан в 70-е годы в 8-м Главном Управлении КГБ СССР, тогда он имел гриф Сов.Секретно. Затем гриф был понижен до Секретно, а когда в 89-м году алгоритм был проведен через Госстандарт и стал официальным государственным стандартом, гриф с него был снят, однако алгоритм оставался ДСП. В начале 90-х годов он стал полностью открытым.

ГОСТ предусматривает 3 режима шифрования (простая замена, гаммирование, гаммирование с обратной связью) и один режим выработки имитовставки. Первый из режимов шифрования предназначен для шифрования ключевой информации и не может использоваться для шифрования других данных, для этого предусмотрены два других режима шифрования. Режим выработки ИМИТОВСТАВКИ (криптографической контрольной комбинации) предназначен для ИМИТОЗАЩИТЫ шифруемых данных, то есть для их защиты от случайных или преднамеренных несанкционированных изменений.

Алгоритм построен по тому же принципу, что и DES - это классический блочный шифр с секретным ключом - однако отличается от DES'а большей длиной ключа, большим количеством раундов, и более простой схемой построения самих раундов. Ниже приведены его основные параметры, для удобства - в сравнении с параметрами DES'а:

 П   А   Р  А   М   Е   Т   Р

ГОСТ

DES

1. Размер блока шифрования

64 бита

64 бита

2. Длина ключа

256 бит

56 бит

3. Число раундов

32

16

4. Узлы замен (S-блоки)

не фиксированы

фиксированы

5. Длина ключа для одного раунда

32 бита

48 бит

6. Схема выработки раундового ключа

простая

сложная 

7. Начальная и конечная перестановки битов

нет

есть

 

В силу намного большей длины ключа ГОСТ гораздо устойчивей DES'а к вскрытию "грубой силой" - путем полного перебора по множеству возможных значений ключа.

Функция шифрования (*) ГОСТа гораздо проще функции шифрования DES'а, она не содержит операций битовых перестановок, коими изобилует DES и которые крайне неэффективно реализуются на современных универсальных процессорах (хотя очень просто аппаратно - путем разводки проводников в кристалле или на плате). В силу сказанного, при вдвое большем количестве раундов (32 против 16) программная реализация ГОСТа на процессорах Intel x86 более чем в 2 раза превосходит по быстродействию реализацию DES'а. Естественно, сравнивались близкие к оптимуму по быстродействию реализации [1].

Из других отличий ГОСТа от DES'а надо отметить следующее: 

На каждом раунде шифрования используется "раундовый ключ", в DES'е он 48-битовый и вырабатывается по относительно сложному алгоритму, включающему битовые перестановки и замены по таблице, в ГОСТе он берется как фрагмент ключа шифрования. Длина ключа шифрования в ГОСТе равна 256 битам, длина раундового ключа - 32 битам, итого получаем, что ключ шифрования ГОСТа содержит 256/32=8 раундовых ключей. В ГОСТе 32 раунда, следовательно, каждый раундовый ключ используется 4 раза, порядок использования раундовых ключей установлен в ГОСТе и различен для различных режимов. 

Таблица замен в ГОСТе - аналог S-блоков DES'а - представляет собой таблицу (матрицу) размером 8x16, содержащую число от 0 до 15. В каждой строке каждое из 16-ти чисел должно встретиться ровно 1 раз. В отличие от DES'а, таблица замен в ГОСТе одна и та же для всех раундов и не зафиксирована в стандарте, а является сменяемым секретным ключевым элементом. От качества этой таблицы зависит качество шифра. При "сильной" таблице замен стойкость шифра не опускается ниже некоторого допустимого предела даже в случае ее разглашения. И наоборот, использование "слабой" таблицы может уменьшить стойкость шифра до недопустимо низкого предела. Никакой информации по качеству таблицы замен в открытой печати России не публиковалось, однако существование "слабых" таблиц не вызывает сомнения - примером может служить "тривиальная" таблица замен, по которой каждое значение заменяется на него самого. Это делает ненужным для компетентных органов России ограничивать длину ключа - можно просто поставить недостаточно "сильную" таблицу замен. 

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

 

(*) Что такое функция шифрования?

Многие алгоритмы, включая DES и ГОСТ, построены по одному и тому же принципу: Процесс шифрования состоит из набора раундов-шагов, на каждом шаге выполняются следующие действия.

Входной блок делится пополам на старшую (L) и младшую (R) части. 

Вычисляется значение функции шифрования от младшей части (R) и    раундового ключа (k) X=f(R,k).Используемая на данном шаге функция и называется ФУНКЦИЕЙ ШИФРОВАНИЯ РАУНДА. Она может быть одна для всех раундов, или индивидуальна для каждого раунда. В последнем случае функции шифрования различных раундов одного шифра отличаются, как правило, лишь в деталях. 

Формируется выходной блок, его старшая часть равна младшей части входного блока L'=R, а младшая часть это результат выполнения операции побитового ИСКЛЮЧАЮЩЕГО ИЛИ (обозначим его (+)) для старшая части входного блока и результата вычисления функции шифрования R'=L(+)f(R,k). 

 

Tак вот, функция шифрования ГОСТа очень проста: 

Младшая часть блока R и раундовый ключ складываются по модулю 2^32. 

Полученное значение преобразуется по таблице замен - оно делится на 8   4-битовых групп, и каждая группа заменяется на новое значение с      использованием соответствующего УЗЛА ЗАМЕН. 

Полученное значение циклически сдвигается на 11 бит влево. 

Как видите, в отличие от DES'а очень простая и легко реализуемая функция шифрования. Более подробно обо всем этом можно прочитать в [2].

 

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

Составил Андрей Винокуров. (http://www.halyava.ru/crypto)