Корреляционные атаки
В криптографии корреляционные атаки - это класс атак на основе открытых текстов для взлома потоковых шифров, поток ключей которых генерируется путем объединения вывода нескольких регистров сдвига с линейной обратной связью (РСЛОС в дальнейшем) с использованием логической функции. Корреляционные атаки используют статистическую зависимость, которая возникает из-за неправильного подбора выходной функции.[1]
История
[править | править код]Корреляционная атака впервые была описана в 1985 году Т. Зигенталером. Он описал атаку на генератор на основе комбинационной цепи, состоящий из РСЛОС. Длины регистров рассматриваемого генератора равнялись . Атака полного перебора на данную систему требует попыток, в то время как предложенная Зигенталером корреляционная атака всего . Данная атака так же может быть эффективна при взломе других генераторов на основе РСЛОС, например фильтрационных (filter generators) [2]
Объяснение
[править | править код]Корреляционные атаки возможны, когда существует значительная зависимость между выходным значением отдельного РСЛОС в генераторе потока ключей и выходом логической функции, которая объединяет выходные значения всех РСЛОС. В сочетании со знанием части потока ключей, это позволяет злоумышленнику перебирать (brute-force) ключ для этого отдельного РСЛОС и остальной системы по отдельности. Например, для генератора потока ключей с четырьмя 8-разрядными РСЛОС объединенными логической функцией такой, что один из регистров скоррелирован с выводом логической функции, возможно сначала перебрать скоррелированный регистр, а затем оставшиеся три. В таком случае общее число вариантов для перебора составляет 28 + 224. В случае полного перебора системы число вариантов составило бы 232. Таким образом, данная атака позволила снизить сложность перебора, а следовательно и время затрачиваемое на него, почти в 256 раз. Если второй регистр также скоррелирован, можно повторить этот процесс и снизить сложность перебора до 28 + 28 + 216, что дает сокращение количества возможных вариантов почти в 65028 раз. В этом смысле корреляционные атаки можно считать алгоритмами типа «разделяй и властвуй».[1][2]
Пример
[править | править код]Взлом генератора Geffe
[править | править код]Рассмотрим корреляционную атаку на примере генератора потока ключей Geffe. Генератор Geffe состоит из трех РСЛОС: РСЛОС-1, РСЛОС-2 и РСЛОС-3. Обозначим выходные значения этих регистров как , и соответственно. Пусть логическая функция, объединяющая три регистра для генерации ключа, определяется как (то есть ( AND ) XOR (NOT AND )). Существует 23 = 8 возможных наборов значений трех регистров. Значение функции для каждого из них показано в таблице ниже: [3]
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
Рассмотрим вывод третьего регистра, . Из приведенной выше таблицы видно, что 6 из 8 возможных значений равны соответствующему значению выхода генератора, , то есть в 75% всех возможных случаев. Это означает, что РСЛОС-3 коррелирует с генератором. Это является уязвимостью, которую можно использовать следующим образом:
Предположим, перехватывается зашифрованный текст соответствующий открытому тексту , который был зашифрован с помощью потокового шифра с использованием генератора потока ключей Geffe, то есть для , где - это выходное значение РСЛОС-1 в момент времени и т. д. Предположим также, что известна некоторая часть открытого текста, например первые 32 бита, . Это вполне вероятно: например, если известно, что открытый текст является корректным XML-файлом, тогда первые 4 символа ASCII должны быть «<XML», что соответствует 32 битам. Аналогичным образом, многие форматы файлов или сетевые протоколы имеют стандартные верхние или нижние колонтитулы, которые можно попробовать угадать. Данный тип атак, при котором известна часть текста, называется атаками на основе открытых текстов. Зная перехваченный шифротекст и известные/угаданные символы исходного , можно легко найти для , вычисляя их по средствам исключающего или (XOR) от зашифрованного и открытого текстов. Таким образом, известно 32 последовательных бита выхода генератора.
Теперь можно начать перебор в пространстве возможных ключей для РСЛОС-3. Для любого данного ключа в пространстве ключей можно сгенерировать первые 32 бита выходных данных РСЛОС-3 и сравнить их с нашими восстановленными 32 битами всего выходного сигнала генератора. Поскольку ранее было установлено, что существует 75% корреляция между выходом РСЛОС-3 и генератором, известно, что, если правильно угадан ключ для РСЛОС-3, примерно 24 из первых 32 битов выхода РСЛОС-3 будут совпадать с соответствующими битами выхода генератора. Если догадка не верна, ожидается, что примерно половина или 16 из первых 32 битов этих двух последовательностей будут совпадать. Таким образом, можно восстановить ключ для РСЛОС-3 независимо от ключей РСЛОС-1 и РСЛОС-2. На этом этапе задача перебора системы из 3 РСЛОС была сведена к задаче перебора одного РСЛОС, а затем системы из 2 РСЛОС. Сокращение возможных вариантов для перебора зависит от длины РСЛОС. Для реальных значений это дает очень существенную экономию и может сделать атаки перебора практичными.[3]
Однако, в данном примере задачу можно упростить еще раз. Из таблицы выше видно, что также совпадает с выходом генератора 6 раз из 8. Как и в случае с , корреляция составляет 75% между и выходом генератора. Можно решать задачу перебора РСЛОС-2 независимо от ключей РСЛОС-1 и РСЛОС-3. Таким образом, сложность взлома генератора Geffe равна сложности перебора трех независимых РСЛОС. Это означает, что генератор Geffe является слабым генератором. [3]
Из таблицы так же видно, что согласуется с выходом генератора 4 раза из 8, корреляция составляет 50%. Соответственно, невозможно использовать перебор РСЛОС-1 независимо от других: правильный ключ даст выходной сигнал, который согласуется с выходным сигналом генератора в 50% случаев, однако неправильный ключ будет вести себя так же. В этом случае корреляционная атака на этот регистр невозможна при любом, сколь угодно большом объеме открытого текста. Таким образом, объединяющую функцию следует выбирать так, чтобы корреляция между каждой переменной и выходом объединяющей функции была как можно ближе к 50%. На практике может быть трудно найти функцию, которая удовлетворяет этому условию, не жертвуя другими критериями. [4] [1]
В общем случае, если примитивные многочлены всех регистров генератора состоят всего из 3 слагаемых, а максимальная длина РСЛОС составляет бит, то достаточно всего бит открытого текста для полного взлома генератора Geffe. [3]
Статистический характер атаки
[править | править код]Хотя вышеприведенный пример хорошо иллюстрирует относительно простые концепции, лежащие в основе корреляционных атак, он, возможно, упрощает объяснение того, как именно происходит грубый перебор отдельных РСЛОС. Утверждается, что неправильно угаданные ключи будут генерировать вывод РСЛОС, который согласуется с выходом генератора примерно в 50% случаев, потому что для двух случайных битовых последовательностей заданной длины вероятность совпадения любого отдельного взятого бита последовательностей равна 0,5. Тем не менее, отдельные отдельные неверные ключи вполне могут генерировать выход РСЛОС, который согласуется с выходом генератора более или менее часто, чем в 50% случаев. Это особенно заметно в случае РСЛОС, чья корреляция с генератором не особенно сильна; для достаточно малых корреляций, не исключено, что неправильно угаданный ключ также приведет к выводу РСЛОС, который согласуется с желаемым числом битов на выходе генератора. Таким образом, не всегда возможно найти ключ для этого РСЛОС однозначно и с уверенностью. Вместо этого существует возможность найти несколько подходящих ключей, один из которых является верным, однако это все еще является серьезной уязвимостью в безопасности шифра. Более точно определить необходимое количество перехваченного открытого текста позволяют методы теории вероятности. Оно зависит от ошибок первого и второго рода и соответственно. Пусть - вероятность того, что . Тогда можно показать, что например для и , где - длина соответствующего РСЛОС, необходимое количество бит открытого текста составляет примерно:[5]
Из формулы так же видно, что чем слабее корреляция между отдельным регистром и выходом генератора (то есть вероятность близка к 1/2), тем больше известного открытого текста требуется для того, чтобы найти ключ этого регистра с высокой степенью достоверности. [6]
Примечания
[править | править код]- ↑ 1 2 3 Applied Cryptography, 1996, с. 517.
- ↑ 1 2 Encyclopedia of Cryptography and Security, 2005, с. 103.
- ↑ 1 2 3 4 Applied Cryptography, 1996, с. 519.
- ↑ Encyclopedia of Cryptography and Security, 2005, с. 105.
- ↑ Encyclopedia of Cryptography and Security, 2005, с. 104.
- ↑ Encyclopedia of Cryptography and Security, 2005, с. 103, 104.
Литература
[править | править код]- Шнайер Б. Applied Cryptography, Second Edition: Protocols, Algorthms, and Source Code in C. — John Wiley & Sons, 1996. — 1027 с.
- Henk C. A. van Tilborg. Encyclopedia of Cryptography and Security. — Springer, Boston, MA, 2005. — ISBN 978-0-387-23473-1.