Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Математические основы криптологии.-2

.pdf
Скачиваний:
11
Добавлен:
05.02.2023
Размер:
8.1 Mб
Скачать

221

Существует еще дополнительные виды атак – атака с возможностью выбора инициализирующего вектора (chosen-IV attack). В данном случае криптоаналитик может выбирать инициализирующий вектор (IV). И атака связанных ключей (related key attacks), где криптоаналитик может выбирать особую связь между ключами.

Методы, применяемые для анализа поточных шифров, используют математические и статистические свойства генератора или приближений к нему. В частности генератор ключевого потока должен производить равномерно распределенную последовательность бит. Анализ поточного шифра по существу сводится к анализу генератора ключевого потока

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

В зависимости от цели, преследуемой криптоаналитиком, выделяют следующие атаки:

1.Атака различением (distinguishing attack).

Этот способ предназначен для выявления отличия выхода генератора ключевого потока от истинно случайной последовательности той же длины.

2.Предсказание (prediction).

Этот способ предназначен для предсказания выхода генератора ключевого потока более точно, чем предположение.

3.Восстановление ключа (key recovery).

Этот способ предназначен для получения ключа из выхода генератора ключевого потока.

Очевидно, что восстановление ключа является самым мощным из этих трех способов,

поскольку делает возможными и предсказание и атаку различением. Также очевидно, что предсказание делает возможной атаку различением. Атаку различием можно рассматривать как тип предсказания. Потому что атака различием утверждает, что определенные последовательности генератора ключевого потока встретятся с вероятностью большей или меньшей, чем, если бы они были истинно случайными, таким образом, делая предсказания последовательности ключевого потока более точными, чем предположение.

Обычно выделяют следующие атаки на поточные шифры:

1.Исчерпывающий поиск ключа (атака грубой силой) (exhaustive key

search).

2.Атака, основанная на согласовании памяти и времени (time-memory trade-off attack, TMTO).

3.Корреляционная атака.

Корреляционная атака – это, возможно, самый важный класс атак на поточные

шифры, особенно для шифров основанных на LFSR. Эффективные

222

корреляционные атаки были найдены для многих поточных шифров. Чтобы данный вид атак был применим, необходимо, чтобы выход генератора ключевого потока был коррелирован с выходной последовательностью более простого внутреннего устройства генератора – LFSR. Наличие этой корреляция используется для определения ключа.

4.Алгебраическая атака (algebraic attack).

Там, где корреляционная атака пробует найти линейную аппроксимацию выходной функции f, алгебраическая атака использует выражения более высокой степени. Первая алгебраическая атака называлась корреляционной атакой старшего порядка (high order correlation attack).

5.Атака ―разделяй и властвуй‖.

При такой атаке криптоаналитик предполагает часть ключа. Ограничение,

наложенное таким образом на ключевой поток, может сделать поиск оставшейся части ключа быстрее, чем, если бы эта часть искалась перебором.

6.Атака смены ключа (rekeying attack).

Существует много приложений, в которых поточный шифр часто меняет ключ.

Иногда можно использовать эту смену ключа, чтобы найти используемые ключи.

7.Атака ―предположи и определи‖ (guess-and-determine attack).

В атаке ―предположи и определи‖, стратегия состоит в следующем:

необходимо предположить значения нескольких неизвестных в шифре, и, исходя из предполагаемых значений, вывести значения других неизвестных переменных.

Часто это не возможно сделать быстрее, чем исчерпывающий поиск ключа из-за нелинейности и неравномерности шифра.

8.Атака по побочным признакам (side channel attack).

Эта атака сильно отличается от других атак, поскольку использует информацию о физическом исполнении вместо теоретических слабостей. Любая информация, которая может быть измерена, и зависит от ключа, внутреннего состояния, или открытого текста, потенциально может использоваться в атаке по побочным признакам.

3. Линейная сложность

Одной из первых аналитических мер качества поточных шифров стала линейная сложность или линейный размах (linear span) шифрующей последовательности, которая определяется как длина L самого короткого LFSR, способного породить эту последовательность. Существует эффективный алгоритм, так называемый алгоритм Берлекампа-Мэсси, который быстро находит такой кратчайший LFSR после изучения всего

223

лишь первых 2L бит шифрующей последовательности. По своей сути алгоритм Берлекампа-

Мэсси является универсальной криптоаналитической атакой на генераторы гаммы,

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

Важно отметить, что такие свойства как большой период, большая линейная сложность и хорошее статистическое поведение являются необходимыми, но не достаточными условиями, для того чтобы поточный шифр считался криптостойким.

4. Исчерпывающий поиск ключа

Это самый общий тип атаки, который может быть применен к любому поточному шифру. Получив последовательность ключевого потока, произведенную на неизвестном ключе, криптоаналитик просто перебирает все возможные ключи и проверяет, соответствует ли произведенный ключевой поток данной последовательности ключевого потока. Если ключ k имеет длину n бит, то криптоаналитик должен перебрать 2n ключей в худшем случае и 2n–1 – в среднем. Вычислительная сложность атаки обычно обозначается как O(2n) и

читается как c Ч 2n, где c – это некоторая небольшая константа. Атаки с вычислительной сложностью большей, чем у исчерпывающего поиска ключа, не рассматриваются.

Временная сложность исчерпывающего поиска ключа может быть значительно снижена путем использования атаки с согласованием памяти и времени.

5. Time-memory-data trade-off атака

Вычислительная сложность атаки исчерпывающим перебором может быть понижена за счет использования большого количества предвычисленных данных, хранящихся в памяти.

Такая атака называется time-memory-data trade-off (TMDTO) атакой – атака согласования времени, памяти и данных.

Первая TMDTO атака, предложенная Хеллманом в, применялась к блочным шифрам.

TMDTO атака для поточных шифров была предложена Баббаджем в и Голичем в.

Рассмотрим эту атаку подробнее. Предполагается, что поточный шифр имеет ключ размером k бит и внутреннее состояние размером s бит.

TMDTO атака состоит из двух частей: этап предвычисления и рабочий (on-line) режим.

На шаге предвычисления формируется таблица, состоящая 2m различных внутренних состояний и соответствующих им ключевых потока. Таким образом таблица должна

224

содержать M = 2m строк и, для удобства, отсортирована по второму компоненту, т.е.

ключевому потоку.

На on-line этапе по очереди перебираются D = 2d различных ключевых потока, каждый из которых сравнивается с табличными значениями. Если соответствие найдено, то значит найдено и внутреннее состояние поточного шифра.

Требуемый объем памяти M для TMDTO атаки равен M = N/D, где N = 2s – количество возможных внутренних состояний. В соответствии с парадоксом ―дней рождения‖ есть хороший шанс определить исходное внутреннее состояние поточного шифра. В случае m = d

= s/2, если размер внутреннего состояния s меньше, чем двойной размер ключа 2k, то сложность TMDTO атаки будет ниже, чем у атаки исчерпывающим поиском. Следовательно,

для увеличения уровня безопасности шифра, необходимо увеличить его внутреннее состояние по крайней мере до удвоенного размера ключа.

6. Корреляционная атака

Корреляционные атаки – это один из самых важных классов атак на поточные шифры,

основанные на LFSR. Впервые корреляционная атака была предложена Сиджентайлером в

1985 году. В основе корреляционной атаки лежит следующий принцип. Допустим , что криптоаналитик может найти корреляцию между выходом одного из LFSR генератора и ключевым потоком. Тогда криптоаналитик может организовать атаку типа разделяй-и-

властвуй и попробовать определить начальное состояние всех LFSR один за другим.

Предположим, что мы наблюдаем последовательность ключевого потока z, длиной N, z = z1, z2, ..., zN. Ключевая последовательность производится генератором, состоящим из n

различных LFSR. Пусть между ключевым потоком и выходной последовательностью одного из LFSR, называемого целевым LFSR, можно определить корреляцию. Также предположим,

что известен полином обратных связей g(x) целевого LFSR. Предположим, что рассматриваемый LFSR имеет длину l и корреляция между последовательностью ключевого потока и выходной последовательностью LFSR равна (1–p), где p < 0,5.

Для двоичного LFSR длины l существует 2l возможных начальных состояний. Для каждого такого состояния u0 = (u1, u2, ..., ul) генерируется выходная последовательность u = (u1, u2, ..., uN).

Определим

= N dH(u, z),

где dH(u, z) – расстояние Хэмминга между u и z, т.е. число позиций, по которым отличаются u и z.

225

Если перебираются все 2l возможных начальных состояния, то при большом значении N,будет иметь с высокой вероятностью наибольшее значение, когда u0 будет соответствовать правильному начальному состоянию.

Если корреляция может быть найдена для каждого LFSR генератора, то вычислительная

сложность восстановления ключа уменьшается с n 2l j 1 , что соответствует полному

j 1

перебору {исчерпывающему поиску}, до n 2l j 1 , где lj – длина j-го LFSR.

j 1

Некоторые комбинирующие или фильтрующие функции более восприимчивы к корреляционной атаке, чем другие, поэтому была введена идея функции, имеющей корреляционный иммунитет m-го порядка [38_Siegenthaler_imm]. Считается, что функция имеет корреляционный иммунитет m-го порядка, если в корреляционной атаке необходимо одновременно рассматривать не менее (m+1) внутренних последовательностей.

Быстрая корреляционная атака

Впервые быстрая корреляционная атака была предложена Мейером и Стафельбахером в

1988 году.

Быстрые корреляционные атаки применяются к генераторам ключевого потока,

основанных на LFSR, в том же самом контексте, что и просто корреляционные атаки, только они значительно быстрее. Быстрые корреляционные атаки основываются на том же самом принципе, что и корреляционные атаки: они используют корреляцию между ключевым потоком и выходом отдельного (целевого) LFSR, начальное состояние которого зависит от битов секретного ключа. В оригинальной корреляционной атаке начальное состояние целевого LFSR восстанавливалось с помощью полного перебора {исчерпывающего поиска}.

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

В Мэйер и Сафельбахер представили два алгоритма для быстрых корреляционных атак.

Вместо полного перебора {исчерпывающего поиска}, используемого в корреляционной атаке, данные алгоритмы основаны на использовании уравнений проверки четности,

созданных из полинома обратных связей LFSR. Алгоритмы состоят из двух частей. Вначале определяется набор уравнений проверки четности. Затем эти уравнения используются в алгоритме быстрого декодирования для восстановления начального состояния LFSR.

226

Уравнения проверки четности создаются в два этапа. Обозначим g(x) = 1 + c1x + c2x2 + …

+ clxl – полином обратных связей, t – число отводов LFSR, т.е. количество ненулевых коэффициентов полинома g(x) равно (t+1). Тогда i-й символ ui выходной последовательности LFSR u может быть записан как ui = c1ui–1 + c2ui–2 + … + cluil. Так как вес полинома g(x) равен (t+1), то мы получаем (t+1) различных уравнения проверки четности для ui. Затем,

используя тот факт, что g(x)j = g(xj), для j = 2k, уравнения проверки четности генерируются многократным возведением полинома g(x) в квадрат. Общее количество m уравнений проверки четности, которое может быть найдено на двух этих этапах равно

m t 1 log 2

 

N

 

 

.

 

 

 

2l

Уравнения проверки четности могут быть записаны в виде ui + b1 = 0

ui + b2 = 0

...

ui + bm = 0,

где bj – сумма t различных символов в последовательности u.

Если мы заменим символы ui последовательности u на символы zi наблюдаемого ключевого потока, то получим следующие выражения

zi + y1 = L1 zi + y2 = L2

...

zi + ym = Lm,

где yi – сумма t различных символов ключевого потока z, Li F2, 1 i m.

Во второй части алгоритма, m уравнений проверки четности для каждого ui, 1 i N,

используются в алгоритме декодирования.

Если вероятность P(zi = ui) = (1 – p) = 1/2 + , то вероятность s = P(yj = bj) может быть вычислена как

s = P(yj = bj) = 1/2 + 2t–1 t.

Посчитав количество уравнений h, в которых Li = 0, мы можем вычислить условную вероятность

p* P zi

ui

h

 

p 1 s h s m h

 

. (*)

p 1

s h s m h 1 p 1

 

 

 

 

s m h s h

227

В было предложено два алгоритма: алгоритм A алгоритм B. В алгоритме A для каждого наблюдаемого символа вычисляется значение p*, а затем l позиций с наибольшими значениями (1–p*) используются для нахождения правильного начального состояния LFSR.

Алгоритм B является итерационным: в каждой итерации производится пересчет условных вероятностей (*) до сходимости, либо выполняется максимальное число итераций.

Данные алгоритмы хорошо работают, если LFSR содержит небольшое количество отводов, а при большом количестве отводов в LFSR эти алгоритмы терпят неудачу. Это происходит потому, что для LFSR с большим количеством отводов каждое уравнение проверки четности дает очень маленькую среднюю поправку и, следовательно, требуется много уравнений для достижения цели. Другими словами, максимальная вероятность корреляции p, которой могут оперировать алгоритмы, намного ниже, если LFSR содержит много отводов. Следовательно, для противостояния вышеописанным атакам, в поточных шифрах необходимо использовать полиномы обратных связей с большим весом.

Данные алгоритмы были улучшены. Были предложены алгоритмы нахождения уравнений проверки четности на основе матричного представления LFSR, линейного кодирования и деления полиномов.

Алгебраическая атака

Впервые алгебраическая атака была предложена в [43_Courtois] и называлась корреляционной атакой высокого порядка. Целью данной атаки является восстановление ключа путем решения системы нелинейных уравнений.

Алгебраическая атака выполняется в несколько этапов:

1.Составить систему нелинейных уравнений из элементов ключевого потока zi и

начального состояния s0 LFSR.

2.Подставить имеющиеся биты ключевого потока в составленную систему уравнений.

3.Восстановить ключ, решая полученную систему уравнений.

Для алгебраических атак требуется меньшее количество ключевого потока, чем для корреляционных атак, но при этом они требуют больших временных затрат.

Алгебраическая атака может быть значительно ускорена, если можно понизить степень уравнений. Такие атаки называются быстрыми алгебраическими атаками (впервые были предложены в.

228

Атака различением

В атаке различения криптоаналитик, наблюдая ключевой поток некоторой длины,

пытается определить, что является его источником: поточный шифр или истинно случайный источник. Атаки различением основаны на статистическом анализе ключевого потока. Если шифр проваливает любой из статистических тестов (см. п.??), то этот факт может быть использован для атаки различением.

Атаки различения требуют большого количества ключевого потока. Поэтому достаточно простым способом противодействия таким атакам является требование о смене ключа после генерации определенного количества ключевого потока.

Статистический анализ гаммы шифров

Статистические свойства

Для поточных шифров очень важно, чтобы генератор ключевого потока производил ПСП неотличимую от истинно случайной, чтобы по уже имеющейся части последовательности нельзя было предсказать следующий бит. Если не существует алгоритма полиномиальной сложности, способного предсказать следующий бит с вероятностью значительно большей чем 0,5, то ГПСП называют криптостойким.

С. Голомб сформулировал три основных правила, которым должна удовлетворять последовательность, чтобы выглядеть случайной. Эти правила известны как постулаты Голомба. Пусть s – двоичная последовательность с периодом N. Двоичная последовательность s удовлетворяет постулатам Голомба, если:

1.Число ―1‖ в каждом периоде должно отличаться от числа ―0‖ не более чем на единицу.

2.В каждом периоде половина серий должна иметь длину один, одна четверть длину два, одна восьмая должна иметь длину три и т.д. (т.е. количество однобитовых серий равно половине периода, число двухбитовых серий – ¼

периода, число трехбитовых серий – 1/8 периода и т.д.) Кроме того, для каждой из этих длин должно быть одинаковое количество серий из ―1‖ и ―0‖.

3. Функция автокорреляции для последовательности должна быть двузначной, т.е. принимать лишь два значения. Функция автокорреляции для последовательности s определяется как

N 1

C 1 si si .

i 0

Соответственно, для любой последовательности, удовлетворяющей третьему правилу, функция автокорреляции будет равна

229

N, ïðè 0 mod N ,

C 1, ïðè 0 mod N .

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

Одна из главных причин того, что подавляющее большинство реальных генераторов поточного шифрования так или иначе основано на использовании регистров сдвига с линейной обратной связью, заключается в следующем: класс последовательностей, которые они генерируют, идеально соответствует духу постулатов Голомба. В этом, правда, нет ничего удивительного, поскольку Голомб формулировал свои правила, по умолчанию подразумевая LFSR.

Последовательность, удовлетворяющая постулатам Голомба часто именуется ―pn-

последовательностью‖, где pn обозначает ―pseudo-noise‖ (―псевдо-шумовая‖).

Очевидно, что одних лишь этих правил недостаточно для исследования столь важной проблемы, как случайный вид последовательности. К анализируемой последовательности применяется широкий спектр различных статистических тестов для исследования того,

насколько хорошо она согласуется с допущением, что для генерации использовался совершенно случайный источник.

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

Выделяют следующие тесты, предназначенные для оценки статистических свойств выходных последовательностей генераторов ключевого потока поточных шифров:

Качественный ГПСП, ориентированный на использование в системах поточного шифрования, должен быть криптографически стойким и обладать хорошими статистическими свойствами. Такой генератор должен быть непредсказуем вправо, т.е. у

криптоаналитика не должно быть возможности предсказать следующий бит последовательности на основании известных предыдущих. Также он должен быть непредсказуем влево, т.е. у криптоаналитика не должно быть возможности на основе анализа фрагмента последовательности определить начальное заполнение генератора. Другими словами генератор гаммы должен производить псевдослучайную последовательность неотличимую от истинно случайной.

230

Для анализа ГПСП используют множество различных тестов. Наиболее известными наборами статистических тестов являются: Diehard, Crypt-X , набор статистических тестов НИСТ (Национального Института Стандартов и Технологий, NIST Statistical Test Suite) , а

также наборы тестов, описанные. Поскольку существует очень много статистических тестов,

то ни один из наборов нельзя считать полным.

Набор статистических тестов Diehard содержит следующие тесты: birthday spacings, overlapping permutation, binary rank test for 31x31 matrices, binary rank test for 32x32 matrices, binary rank test for 6x8 matrices, monkey, bitstream, count-the-1's test on a stream of bytes, count- the-1's test for specific bytes, parking lot test, minimum distance test, 3dspheres, sqeeze, overlapping sums, runs, craps.

Набор статистических тестов Crypt-X содержит следующие тесты: frequency, binary derivative, change point, runs, sequence complexity и linear complexity тесты.

Набор статистических тестов НИСТ включает в себя следующие статистические тесты: frequency (monobit), frequency test within a block, runs, test for the longest-run-of-ones in a block, binary matrix rank, discrete fourier transform (spectral), non-overlapping template matching, overlapping template matching, maurer's "universal statistical", lempel-ziv compression, linear complexity, serial, approximate entropy, cumulative sums (cusums), random excursions, random excursions variant.

Вописано 5 основных тестов: frequency (monobit), serial (two-bit), poker, runs, autocorrelation, а также универсальный тест Мауэра.

Вописано несколько эмпирических тестов: frequency, serial, gap, poker, coupon collector’s,

permutation, run, maximum-of-t, collision, birthday spacings, serial correlation.

Для тестирования последовательностей, генерируемых различными шифрами,

использовался набор статистических тестов НИСТ по ряду причин. Во-первых, набор статистических тестов НИСТ содержит самые строгие тесты, которые предназначены для тестирования генераторов, используемых для криптографических приложений. Во-вторых в рассмотрена проблема независимости используемых статистических тестов – степень дублирования тестов между собой очень мала. В-третьих этот набор использовался для оценки AES кандидатов.

Тестирование

Основным принципом тестирования является проверка нулевой гипотезы H0:

тестируемая последовательность случайна. Альтернативной гипотезой Ha является гипотеза о том, что последовательность неслучайна. По результатам каждого теста нулевая гипотеза либо принимается, либо отвергается.