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



Компьютеры - HC-256

28 июня 2011


Оглавление:
1. HC-256
2. Безопасность шифрования HC-256
3. Атаки на HC-256
4. Заключение



система потокового шифрования, разработанная криптографом Хонъюном Ву из сингапурского Института инфокоммуникационных исследований. Впервые опубликован в 2004 году. 128-битный вариант был представлен на конкурсе eSTREAM, целью которого было создание европейских стандартов для поточных систем шифрования. Алгоритм стал одним из четырех финалистов конкурса в первом профиле. 

Описание алгоритма

Потоковый шифр HC-256 генерирует ключевую последовательность длинной до 2 бит с помощью 256-битового ключа и 256-битного вектора инициализации. НС-256 содержит две секретные таблицы, в каждой из которых 1024 32-битных элемента. При каждом шаге обновляется один элемент из таблицы при помощи нелинейном функции обратной связи. Через каждые 2048 шагов все элементы двух таблиц будут обновлены.

Операции, функции, переменные

В алгоритме используются следующие операции:

~+ : x+y означает x+y mod 2, где 0 \le x ~< 2 и 0 \le y ~< 2
\boxminus : x \boxminus y означает x - y mod 1024
\oplus : побитовое исключающее ИЛИ
~|| : конкатенация
~\gg : оператор сдвига вправо на указанное количество бит
~\ll : оператор сдвига влево на укзанное количество бит
~\ggg : циклический сдвиг вправо, x ~\ggg n означает ~+), где 0 \le n ~< 32 и 0 \le x ~< 2

В HC-256 используются две таблицы P и Q. Ключ и вектор инициализации обозначаются K и V соответственно. Ключевая последовательность обозначается S.

~P : таблица из 1024-х 32-битных элементов. Каждый элемент обозначается P, где 0 \le i \le 1023.
~Q : таблица из 1024-х 32-битных элементов. Каждый элемент обозначается P, где 0 \le i \le 1023.
~K : 256-битный ключ алгоритма HC-256.
~V : 256-битный вектор инициализации алгоритма HC-256.
~S : ключевая последовательность, созданная алгоритмом HC-256. 32-битный элемент на выходе i-го шага обозначается Si . S=S0 || S1 || S2 || ...

В HC-256 используется шесть функций:

{{f_1} = \oplus \oplus}
{{f_2} = \oplus \oplus}
{{g_1} = \oplus) + Q}
{{g_2} = \oplus) + P}
~{{h_1} = Q + Q + Q + Q}
~{{h_2} = P + P + P + P}

Здесь x = x3 || x2 || x1 || x0 — 32-битное слово. x0, x1, x2, x3 состоят из 1 байта каждый, причем x0, x3 — младший и старший байты соответственно.

Процесс инициализации

Процесс инициализации в HC-256 состоит из преобразования P и Q с помощью ключа и вектора инициализации и запуска шифрования 4096 раз без генерации выходного результата.

1. Составление K = K0 || K1 || … || K7 и V = V0 || V1 || … || V7, где Ki и Vi состоят из 32-х бит. Ключ и вектор инициализации расширяются в массив Wi.

~{W_i} принимает следующие значения:

 {{K_i},~    0 \le i \le 7} 
{{V_{i-8}},~    8 \le i \le 15}
{{f_2} + W_{i-7} + f_1 + W_{i-16} + i,~    16 \le i \le 2559}

2. Обновление таблиц P и Q с помощью W:

{{P} = {W_{i+512}},~  0 \le i \le 1023}
{{Q} = {W_{i+1536}},~  0 \le i \le 1023}

3. Запуск шифрования 4096 раз без генерации выходного результата.

Процесс инициализации завершен и шифр готов к генерации ключевой последовательности.

Алгоритм генерации ключевой последовательности

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

i=0;
repeat until enough keystream bits are generated.
{

  j = i mod 1024; 
if < 1024
{ P = P + P + g1, P);
Si = h1 \oplus P;
} else
{ Q = Q + Q + g2;
Si = h2 \oplus Q;
} end-if
i = i + 1;

}
end-repeat



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


<<< Grain
>>>