Смекни!
smekni.com

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

Алгоритм построен по тому же принципу, что и 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'а надо отметить следующее:

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

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

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

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

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

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

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

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

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