Интернет магазин китайских планшетных компьютеров



Компьютеры - ГОСТ Р 34.11-94 - Особенности ГОСТ Р 34.11-94

24 июня 2011


Оглавление:
1. ГОСТ Р 34.11-94
2. Описание
3. Особенности ГОСТ Р 34.11-94
4. Параметры алгоритма
5. Формат вывода
6. Примеры
7. Оценка криптостойкости



  • При обработке блоков используются преобразования по алгоритму ГОСТ 28147—89;
  • Обрабатывается блок длиной 256 бит, и выходное значение тоже имеет длину 256 бит.
  • Применены меры борьбы против поиска коллизий, основанном на неполноте последнего блока.
  • Обработка блоков происходит по алгоритму шифрования ГОСТ 28147—89, который содержит преобразования на S-блоках, что существенно осложняет применение метода дифференциального криптоанализа к поиску коллизий.

Алгоритм вычисления шаговой функции хэширования

Шаговая функция хэширования f отображает два блока длиной 256 бит в один блок длиной 256 бит: H_{out}\ =\ f и состоит из трех частей:

GOST-step-hash-function.gif
  • Генерирование ключей K_1,\ K_2,\ K_3,\ K_4
  • Шифрующее преобразование — шифрование \ H_{in} с использованием ключей K_1,\ K_2,\ K_3,\ K_4
  • Перемешивающее преобразование результата шифрования

Генерация ключей

В алгоритме генерации ключей используются:

  • Два преобразования блоков длины 256 бит:
    • Преобразование A=A =\ \mathcal{k}\ y_4\ \mathcal{k}\ y_3\ \mathcal{k}\ y_2, где y_1,\ y_2,\ y_3,\ y_4 — подблоки блока Y длины 64 бит.
    • Преобразование P = P = y_{\varphi} \mathcal{k} y_{\varphi} \mathcal{k} \dots \mathcal{k} y_{\varphi}, где \varphi)= 8i + k,\ i = 0, \dots, 3,\ k = 1, \dots, 8, а y_{32},\ y_{31},\ \dots,\ y_{1} — подблоки блока Y длины 8 бит.
  • Три константы:
C2 = 0
C3 = 0xff00ffff000000ffff0000ff00ffff0000ff00ff00ff00ffff00ff00ff00ff00
C4 = 0

Алгоритм:

  1. U\ :=\ H_{in},\quad V\ :=\ m,\quad W\ :=\ U\ \oplus\ V,\quad K_1\ =\ P
  2. Для j = 2,3,4 выполняем следующее:
    U := A \oplus C_j,\quad V := A),\quad W := U \oplus V,\quad K_j = P

Шифрующее преобразование

После генерирования ключей происходит шифрование Hin по ГОСТ 28147—89 в режиме простой замены на ключах Ki, процедуру шифрования обозначим через E. Для шифрования Hin разделяют на четыре блока по 64 бита: H_{in} = h_4 \mathcal{k} h_3 \mathcal{k} h_2 \mathcal{k} h_1 и зашифровывают каждый из блоков:

  • s1 = E
  • s2 = E
  • s3 = E
  • s4 = E

После чего блоки собирают в 256 битный блок: S = s_4 \mathcal{k} s_3 \mathcal{k} s_2 \mathcal{k} s_1

Перемешивающее преобразование

На последнем этапе происходит перемешивание Hin, S и m с применением регистра сдвига, в результате чего получают Hout.

Для описания процесса преобразования сначала необходимо определить функцию ψ, которая производит элементарное преобразование блока длиной 256 бит в блок той же длины:  \psi = \psi = \mathcal{k} y_{16} \mathcal{k} y_{15} \mathcal{k} ... \mathcal{k} y_3 \mathcal{k} y_2, где y16,y15,...,y2,y1 — подблоки блока Y длины 16 бит.

GOST-psi-function.gif

Перемешивающее преобразование имеет вид H_{out} = {\psi}^{61})), где ψ означает суперпозицию \psi\circ\psi\circ\cdots\circ\psi длины i. Другими словами, преобразование ψ представляет собой регистр сдвига с линейной обратной связью, а индекс i указывает на количество его раундов.

GOST-R-34.11-94-shuffle-transformation.gif




Просмотров: 6310


<<< Whirlpool (криптография)
Структура МерклаДамгарда >>>