Decim

Материал из testwiki
Перейти к навигации Перейти к поиску

В криптографии, Decim — потоковый шифр на основе РСЛОС, разработанный Комом Бербаином, Оливером Биллетом, Анн Канту, Николя Куртуа, Бландином Дебре, Генри Гильбертом, Луи Губином, Алином Гуже, Луи Гранбуланом, Седериком Ларду, Марин Минье, Томасом Порнином и Эрвом Сибе. Специализирован для аппаратной реализации. Запатентован. Был представлен в проекте eSTREAM, где не прошёл дальше третьего этапа.

Генерация ключевого потока шифром Decim

Введение

Самое главное требование к шифрам — устойчивость к различным видам атак. Алгебраические атаки — одна из самых серьёзных угроз безопасности потоковым шифрам. Если соотношение между комбинацией битов секретного ключа и порождённым её битом гамма является простым или легко предсказуемым, то и нахождение алгебраических зависимостей между комбинацией битов секретного ключа и битом ключевого потока (гамма) так же является простой задачей. Для усложнения соотношений между комбинацией битов секретного ключа (или комбинацией битов начального состояния РСЛОС, порождённого секретным ключом) и битов ключевого потока (гамма) используют нелинейную фильтрующую функцию от комбинации битов секретного ключа и механизмы десинхронизации между комбинацией битов секретного ключа и битами ключевого потока (гамма). Оба этих механизма (нелинейная фильтрующая функция и механизм десинхронизации между комбинацией битов РСЛОС и битами ключевого потока) являются основой работы и основным средством предотвращения криптоаналитических атак шифра Decim.

Обзор работы Decim

Начало работы потокового шифра Decim начинается с ввода 80-битного секретного ключа K и 64-битного открытого ключа IV (Initialization Vector). Затем, с помощью определённых линейных комбинаций битов K и битов IV, использования нелинейной фильтрующей функции F и применения механизма выборки ABSG вычисляется начальное состояние 192-битного РСЛОС. После выполнения всех этих операций начинается генерация ключевого потока z=(zt)|t0[1] и заполнение им специального буфера BUFFER, использующегося для обеспечения непрерывной выдачи битов zt на выход шифра, где происходит их сложение по модулю два с двоичной последовательностью символов открытого текста.

Спецификация

Примитивный многочлен, ассоциированный с РСЛОС, имеет вид:

P(X)=X192+X189+X188+X169+X156+X155+X132+X131+X94+X77+X46+X17+X16+X5+1

Обозначим через s=(st)|t0[2] последовательность битов, полученных с выхода РСЛОС, тогда правило вычисления бита на выходе РСЛОС имеет вид:

s192+n=s187+ns176+ns175+ns146+ns115+ns98+ns61+ns60+ns37+ns36+ns23+ns4+ns3+nsn

Для усложнений зависимостей между битами st РСЛОС и битами zt используется нелинейная фильтрующая функция от семи переменных F(x1,...x7). В каждый такт F применяется дважды — к битам, стоящим на разных позициях в РСЛОС. Обозначим F1(xi1,...,xi7) и F2(xi8,...xi14) функции такие, что

F1(xi1,...,xi7)=F(xi1,...,xi7)

и

F2(xi8,...,xi14)=F(xi8,...,xi14), где

F(xi1,...,xi7)=1j<k7xijxik

Пусть

y1=(y1t)|t0=F(si1+t,...,si7+t)

y2=(y2t)|t0=F(si8+t,...,si14+t)

𝐲=y10,y20,y11,y21,....

Позиции битов РСЛОС, которые являются аргументами F1 и F2:

  • для F1: 1, 32, 40, 101, 164, 178, 187;
  • для F2: 6, 8, 60, 116, 145, 181, 191.

Тогда

𝐲1t=F(st+1,st+32,st+40,st+101,st+164,st+178,st+187)

𝐲2t=F(st+6,st+8,st+60,st+116,st+145,st+181,st+191).

Механизм выборки ABSG

Механизм выборки ABSG используется для предотвращения алгебраических атак и некоторых видов быстрых корреляционных атак с помощью десинхронизации фильтрованных битов РСЛОС y0,y1,y2,... и битов гамма z0,z1,z2,.... Работа механизма выборки ABSG заключается в разбивке последовательности 𝐲=y10,y20,y11,y21,... на подпоследовательности вида (b,bi,b¯), где b(0,1), и выдачи b, если i=0, и b¯ в другом случае.

Алгоритм работы ABSG

Input: (y0,y1,y2,)

Set: i=0, j=0

Repeat the following steps:

  1. e=yi, zj=yi+1;
  2. i=i+1;
  3. while (yi==e¯) i=i+1;
  4. i=i+1;
  5. output zj;
  6. j=j+1;

Пример:

пусть y=(0101001110100100011101), тогда, соответствующая последовательность на выходе ABSG имеет вид z=(10111010).

В среднем, 3n бит, поступившем на вход ABSG, соответствует n бит на выходе, что и видно из примера.

Буфер BUFFER

Так как выдача битов механизмом ABSG непостоянна (для генерации одного бита zt используется, в среднем, три бита yt), а во время работы потокового шифра на каждый такт должен выдаваться бит гамма, то для непрерывной выдачи битов гамма используется буфер BUFFER.

После инициализации начального состояния РСЛОС, начинается заполнение BUFFER, и только после того, как BUFFER будет заполнен начнётся шифрование открытого текста (причём BUFFER работает по типу очереди — первый бит попавший в BUFFER, первым и выходит).

Существует вероятность, что в то время как BUFFER должен выдать бит, он оказался пустым. Эта вероятность мала, например, для BUFFER с четырьмя входами, вероятность, что он оказался пуст, в то время как он должен выдать бит, равна 289. Разработчики Decim предлагают не считаться с этой возможностью, принимая, что её вероятность равна нулю.

Инициализация начального состояния РСЛОС

Сектретный ключ K имеет длину 80 бит, открытый ключ IV (Initialization Vector) имеет длину 64 бита, но дополняется нулями до 80 бит. Пусть x0,...,x191 биты РСЛОС. Тогда начальное состояние РСЛОС вычисляется следующим образом:

xi={KiIVifor0i56Ki56IVi56¯for56i111Ki112IVi112for112i191

Видно, что число всевозможных начальных состояний РСЛОС это 256+56+24.

Некоторые пояснения работы Decim

Для предотвращения атак компромисс «время-память» длина РСЛОС должна быть не меньше 160 бит. Также РСЛОС должен быть прост в аппаратной реализации. Исходя из этих факторов, размер РСЛОС был выбран равным 192 битам.

Вес Хэмминга примитивного многочлена P(x) должен быть достаточно большим, чтобы предотвратить быструю корреляционную атаку, но с дургой стороны вес Хэмминга примитивного многочлена P(x) не должен быть слишком большим, чтобы не увеличивать время работы шифра в аппаратной реализации.

Фильтрующая функция F должна быть равновесной[3] и для предотвращения дифференциального криптоанализа должна удовлетворять propagation criterion: функция DuF(x)=F(x)+F(x+u) должна быть равновесной. Также, для упрощения аппаратной реализации, желательно, чтобы функция F была симметричной, то есть, чтобы значение функции F зависело только от веса Хэмминга её аргумента (набора x_1,…x_7). Всем этим требованием удовлетворяет квадратичная функция вида:

F(xi1,...,xi7)=1j<k7xijxik,

которая и используется, как фильтрующая функция шифра Decim.

Надёжность шифра Decim

Исключая сложные случаи атак компромисс «время-память» вычислительная сложность атак на шифр Decim, по мнению его авторов, равна сложности атаки методом грубой силы и составляет не меньше, чем O(280)[4].

Но, независимый криптоанализ, проведенный Хунян Ву и Бартом Пренилом, показал ненадежность шифра Decim, причём вычислительная сложность атаки оказалась не больше чем O(221), что является абсолютно неприемлемым[5].

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Симметричные криптоалгоритмы

  1. zt — гамма, сгенерированная в такт t
  2. st — бит, вычисленный в такт t
  3. функция от n переменных называется равновесной, если её вес Хэмминга равен 2n1
  4. [1] Шаблон:Wayback C. Berbain1, O. Billet1, A. Canteaut2, N. Courtois3, B. Debraize, H. Gilbert, L. Goubin, A. Gouget, L. Granboulan, C. Lauradoux, M. Minier, T. Pornin, H. Sibert Decim — a new stream cipher for hardware applications
  5. [2] Шаблон:Wayback Hongjun Wu, Bart Preneel Cryptanalysis of Stream Cipher DECIM Katholieke Universiteit Leuven, Dept. ESAT/COSIC