Математические основы криптологии и криптографические методы и средс
..pdfодной последовательностью шифровать другую. Так, если у ' и у» - гаммы с разными периодами, а Г» и Г» шифры типа DES, образуе мые ими, то гамма у = Г»/ + Гу» будет очень длинной и весьма стой кой к взлому.
1.3.7. Анализ псевдослучайных последовательностей
Пусть известен участок ключа {G\,G2, С?(2/1 + 2)), полученного с помощью рекуррентного соотношения длиной п. Здесь G, и другие переменные рассматриваются как биты, т.е. над полем GF{2). В этом случае есть возможность восстановить весь ключ, реконструировав рекуррентное соотношение. Рекуррентное соотношение
Сп *Gi + С(„ _ i)G(/+ о + + С0 *С7(/+ „> = О
выполняется при i = 1, 2, п + 1. Поэтому имеем систему из п + 1 линейных уравнений с п + 1 неизвестными, при решении которой получаем коэффициенты использованного рекуррентного соотноше ния С/, позволяющие продлить известный участок ключа вперед или назад на любую длину. Фактически неизвестных коэффициентов только п - 1, так как Со = С, = 1. Есть ряд алгоритмов решения этой системы, но и обычный метод исключения переменных тоже хорош, так как при вычислениях в конечных полях ошибок округления нет, а полученная система линейных уравнений не вырождена. Допус тим имеется участок гаммы ...10101111... из 8 бит. Степень больше 4 мы реконструировать не сможем, а меньшая недопустима, так как подряд встречаются 4 единицы. Поэтому, составив систему из 4 уравнений
С4 + С2 = 1 С3 + С\ = 1 С4 + С2 + С\ = 1 Сз + С2 + С] = 1
и решая ее, получаем С4 = 1, С3 = 1, С2 = 0 и С\ = 0, что отвечает мно гочлену х4+ х3 + 1. Таким образом, получаем еще один довод в поль зу дополнительного усиления шифра многоалфавитной замены до полнительной перестановкой, потому что иначе участок последова тельности можно попытаться вскрыть, отгадывая текст исходного сообщения. Для длины рекуррентного соотношения п = 60 и кодиро вании символов группами по 5 бит достаточно отгадать 24 символа,
чтобы свести задачу к подбору перестановки. На первый взгляд ка жется, что невозможно отгадать столь длинный участок текста. Од нако большую помощь в этом может оказать ориентировочное зна ние содержания исходного сообщения, в котором могут встречаться устойчивые словосочетания большой длины, например «государства среднеазиатского региона». Эта область достаточно сложна и дели катна, чтобы углубляться в нее дальше. Отметим лишь достоинство блочных шифров, заключающееся в том, что желающим их раско лоть криптоаналитикам при достаточной длине блока ничего не ос тается, как вести атаку прямым подбором ключа, так как надежда отгадать кусок исходного текста большой длины весьма химерична. Кроме того, так как избыточность исходного текста существенно ос лабляет шифр, то нужно перед шифрованием преобразовать его, ис пользуя оптимальный код, уменьшающий избыточность. Естествен но, что для этого непригодны стандартные программы сжатия и ар хивации как ARC, ZIP и им подобные, так как создают в файле заго ловок с множеством полей, содержимое которых легко предсказать. Необходимо пользоваться собственным сжатием, согласованным с программой шифрования, как это сделано в системе PCSecure.
Из рассмотренного примера видно, что, несмотря на возмож ность большого выбора примитивных полиномов обратной связи, последовательности их не могут быть использованы в качестве гам мы без применения к ним необходимых, криптографических преобра зований в простых криптографических системах. Как мы только что видели, начальное состояние и соединения обратной связи сдвигово го регистра с линейными обратными связями могут быть раскрыты по не очень длинному участку выходной последовательности. В принципе, сдвиговый регистр с линейными обратными связями может генерировать любую периодическую последовательность. Существуют процедуры синтеза полиномов обратной связи сдвигово го регистра наименьшей длины, генерирующего данную последова тельность. Длина такого регистра называется линейной сложностью последовательности. Поэтому при разработке генератора последова тельностей, который может быть использован в криптографии, необ
ходимо гарантировать независимую от ключа достаточно большую низшую границу линейной сложности генерируемой последователь ности.
Для проверки криптографической стойкости последовательно стей гаммы применяются различные методы криптоанализа. При этом считается, что раскрытие гаммы равносильно раскрытию шиф ра методом криптоанализа с известным открытым текстом. Одним из таких методов является метод анализа корреляционных свойств гам мы, предложенный Зигентхальтером. Во многих генераторах оконча тельно сформированная гамма получается посредством суммирова ния по модулю 2 нескольких выходных последовательностей. При этом между гаммой и каждой из суммируемых последовательностей может существовать определенная статистическая зависимость. Зигентхальтер разработал общий критерий идентификации ключа, ис пользуемый для анализа гаммы по методу «разделяй и властвуй». Его анализ выделяет отдельные последовательности в гамме полным перебором. Это показывает, что разработчику криптографической системы и криптоаналитику необходимо обращать внимание на ста тистические зависимости различных составных частей генератора гаммы.
Другой алгебраический метод, предложенный Зенгом, Янгом
йРао, использует скрытые линейности генераторов гаммы. Он, как
йпример выше, основан на точной оценке непротиворечивости сис темы линейных алгебраических уравнений со случайными коэффи циентами. Этот метод пытается по отрезку гаммы выделить подключ
йз общего ключа и составить систему линейных уравнений такую, что коэффициенты матрицы зависят только от подключа. Если под ключ выделен правильно, то соответствующая система уравнений с большой вероятностью будет удовлетворять требованию непро тиворечивости. Далее по оставшейся части последовательности можно найти весь ключ. Для определения подключа применим метод полного перебора подключей. При этом непротиворечивость систе мы линейных уравнений служит критерием идентификации ключа. Успешный результат этого метода означает, что лишь подключ оп
ределяет стойкость, а остальная часть ключа избыточна. Поскольку оба рассмотренных метода анализа требуют применения полного пе ребора для поиска ключа, их можно считать способами обнаружения избыточности ключей генераторов гаммы, а не практическими алго ритмами раскрытия текста шифра.
Чтобы сбить с толку криптоаналитиков, многие генераторы гаммы основаны на комбинации двух или более генераторов с ис пользованием нелинейных логических функций. Один из наиболее простых способов комбинации двух сдвиговых регистров с линей ными обратными связями состоит в применении переключателя с отношением переключаемых разрядов 2:1 и носит имя генератора Джеффи. Слабое место такого генератора связано с тем, что такая система может быть легко раскрыта методом криптоанализа с ис пользованием так называемых линейных синдромов. При современ ном состоянии техники сдвиговых регистров с линейными обратны ми связями выходная последовательность может быть раскрыта по перехваченному сегменту гаммы длиной в строку текста. Известен еще один генератор этого типа - генератор Дженнинга, тоже исполь зующий переключатель для объединения двух регистров с линейны ми обратными связями. И он довольно несложно вскрывается крип тоаналитиками. Таким образом, хотя множество возможных нели нейных комбинаций последовательностей, образующих гамму, очень большое, вклад их в криптографическую стойкость системы в целом незначителен и необходимо применять перестановки, как это сдела но в DES. Следует иметь в виду, что большая линейная сложность генераторов на сдвиговых регистрах является лишь одним из требо ваний, которым они должны удовлетворять. Известно много хоро ших методов, гарантирующих большой нижний предел этой сложно сти. Многие из опубликованных в последнее время результатов ис следований по криптографии необоснованно обращают внимание только на проблемы большого периода генерируемых последова тельностей и большой линейной сложности генераторов. Криптологи же считают, что обнаружение и устранение статистических и скры тых систематических зависимостей, особенно линейных, имеет важ
нейшее значение при проектировании конкретной криптографиче ской системы, так как любые зависимости в гамме приводят к избы точности ключа. Теперь приведу вольный пересказ старой газетной статьи. Шпион несколько раз прикурил, фотографируя спрятанным в зажигалке фотоаппаратом открытую шифровальную машину с раз ных сторон. Затем, введя ключ из одних пробелов, он несколько сот раз нажал букву А. Полученная перфолента шифровки была после внимательного рассматривания туго свернута в рулон и небрежно отброшена, но, в конце концов, незаметно очутилась в его кармане. Теперь вопрос: почему шпиона заинтересовала шифровка дурацкого текста из одной повторяющейся буквы? Надеюсь, что читатели смо гут теперь ответить на этот вопрос точно и обстоятельно.
1.3.8. Вопросы и задачи для самоконтроля
1.Дайте определение эталона ГСЧ. Можно ли говорить, что любой генератор, выдающий числа с одинаковой вероятностью, яв ляется эталоном?
2.Приведите классификацию ГСЧ.
3.В чем заключается метод серединных квадратов?
4.В чем заключается метод серединных произведений?
5.В чем заключается метод перемешивания?
6.Дайте определение линейной конгруэнтной последовательно
сти.
7. Укажите отличие мультипликативного метода от линейного конгруэнтного метода.
8. Опишите известные вам методы проверки качества работы
ГСЧ.
9. Каким методом можно получить последовательность случаных чисел с наиболее длинным периодом?
1.4.РАВНОВЕРОЯТНЫЕ ФУНКЦИИ
1.4.1.Хэш-функции
Хэш-функцией называется односторонняя функция, предназна ченная для получения дайджеста или «отпечатков пальцев» файла, сообщения или некоторого блока данных. Хэш-код создается функ цией Н: А = Н (М), где М является сообщением произвольной длины и h является хэш-кодом фиксированной длины.
Рассмотрим требования, которым должна соответствовать хэшфункция для того, чтобы она могла использоваться в качестве аутен тификатора сообщения. Рассмотрим очень простой пример хэшфункции. Затем проанализируем несколько подходов к построению хэш-функции.
Хэш-функция Н, которая используется для аутентификации со общений, должна обладать следующими свойствами:
1.Хэш-функция Н должна применяться к блоку данных любой
длины.
2.Хэш-функция Н создает выход фиксированной длины.
3.Н (М) относительно легко (за полиномиальное время) вычис ляется для любого значения М.
4.Для любого данного значения хэш-кода h вычислительно не возможно найти М такое, что Н(М) = А.
5.Для любого данного х вычислительно невозможно найти у ^ х ,
что Н(у) = Щх).
6.Вычислительно невозможно найти произвольную пару (х, у) такую, что Н(у) = Н(х).
Первые три свойства требуют, чтобы хэш-функция создавала хэш-код для любого сообщения.
Четвертое свойство определяет требование односторонности хэш-функции: легко создать хэш-код по данному сообщению, но не возможно восстановить сообщение по данному хэш-коду. Это свой ство важно, если аутентификация с использованием хэш-функции включает секретное значение. Само секретное значение может не
посылаться, тем не менее, если хэш-функция не является односто ронней, противник может легко раскрыть секретное значение сле дующим образом. При перехвате передачи атакующий получает сообщение М и хэш-код С = Н (SAB || М). Если атакующий может ин вертировать хэш-функцию, то, следовательно, он может получить S A B || М —Н~] (С). Поскольку атакующий теперь знает и М, и SAB || М, по лучить SAB совсем просто.
Пятое свойство гарантирует, что невозможно найти другое со общение, чье значение хэш-функции совпадало бы со значением хэш-функции данного сообщения. Это предотвращает подделку ау тентификатора при использовании шифрованного хэш-кода. В дан ном случае противник может читать сообщение и, следовательно, создать его хэш-код. Но так как противник не владеет секретным ключом, он не имеет возможности изменить сообщение так, чтобы получатель этого не обнаружил. Если данное свойство не выполняет ся, атакующий имеет возможность выполнить следующую последо вательность действий: перехватить сообщение и его шифрованный хэш-код, вычислить хэш-код сообщения, создать альтернативное со общение с тем же самым хэш-кодом, заменить исходное сообщение на поддельное. Поскольку хэш-коды этих сообщений совпадают, по лучатель не обнаружит подмены.
Хэш-функция, которая удовлетворяет первым пяти свойствам, называется простой или слабой хэш-функцией. Если, кроме того, выполняется шестое свойство, то такая функция называется сильной хэш-функцией. Шестое свойство защищает против класса атак, из вестных как атаки «день рождения».
Все хэш-функции выполняются следующим образом. Входное значение (сообщение, файл и т.п.) рассматривается как последователь ность л-битных блоков. Входное значение обрабатывается последова тельно блок за блоком, и создается m-битное значение хэш-кода.
Одним из простейших примеров хэш-функции является побит ный XOR каждого блока:
С,- = bi\ © bn © ® bib.
где Q - i-й бит хэш-кода, 1 < / < «;
к - число «-битных блоков входа; by - i-й бит ву-м блоке;
0- операция XOR.
Врезультате получается хэш-код длины «, известный как про дольный избыточный контроль. Это эффективно при случайных сбо
ях для проверки целостности данных.
Часто при использовании подобного продольного избыточного контроля для каждого блока выполняется однобитный циклический сдвиг после вычисления хэш-кода. Это можно описать следующим образом.
♦Установить «-битный хэш-код в ноль.
♦Для каждого «-битного блока данных выполнить следующие операции:
-сдвинуть циклически текущий хэш-код влево на один бит;
-выполнить операцию XOR для очередного блока и хэш-кода. Это даст эффект «случайности» входа и уничтожит любую ре
гулярность, которая присутствует во входных значениях.
Хотя второй вариант считается более предпочтительным для обеспечения целостности данных и предохранения от случайных сбоев, он не может использоваться для обнаружения преднамерен ных модификаций передаваемых сообщений. Зная сообщение, ата кующий легко может создать новое сообщение, которое имеет тот же самый хэш-код. Для этого следует подготовить альтернативное со общение и затем присоединить «-битный блок, который является хэш-кодом нового сообщения, и блок, который является хэш-кодом старого сообщения.
Хотя простого XOR или ротационного XOR (RXOR) недоста точно, если целостность обеспечивается только шифрованным хэшкодом, а само сообщение не шифруется, подобная простая функция может использоваться, когда все сообщение и присоединенный к не му хэш-код шифруются. Но и в этом случае следует помнить о том, что подобная хэш-функция не может проследить за тем, чтобы при
передаче последовательность блоков не изменилась. Это происходит в силу того, что данная хэш-функция определяется следующим обра зом: для сообщения, состоящего из последовательности 64-битных блоков Х\, Х2,..., XN, определяется хэш-код С как поблочный XOR всех блоков, который присоединяется в качестве последнего блока:
C =XN+ i= X i® X 2® ®XN.
Затем все сообщение шифруется, включая хэш-код, в режиме СВС для создания шифрованных блоков Y\, Y2, ..., YN+i. По опреде лению СВС имеем
Х, = 1 У © ^ [Г ,]
X,= Y u ® D K[Y,]
XN+i —YN @DJC[Удг+1]
Но Хц + 1 является хэш-кодом:
Хц+1~ X\ © X2® ®XN=
(IV © DK[У,]) Ф (У, © DK[У2]) © ©
( У и Ф ^ И )
Поскольку сомножители в предыдущем равенстве могут вычис ляться в любом порядке, следовательно, хэш-код не будет изменен, если шифрованные блоки будут переставлены.
Первоначальный стандарт, предложенный NIST, использовал простой XOR, который применялся к 64-битным блокам сообщения, затем все сообщение шифровалось, используя режим СВС.
1.4.2. «Парадокс дня рождения»
Прежде чем рассматривать более сложные хэш-функции, необ ходимо проанализировать одну конкретную атаку на простые хэшфункции.
Так называемый «парадокс дня рождения» состоит в следую щем. Предположим, количество выходных значений хэш-функции Н равно п. Каким должно быть число к, чтобы для конкретного значе ния X и значений Y\, ..., У* вероятность того, что хотя бы для одного У выполнялось равенство Н(Х) - Н (У), была бы больше 0,5?
Для одного У вероятность того, что Н{Х) = #(У), равна 1/л. Со ответственно, вероятность того, что Н(Х) Ф Н(У), равна 1 - 1/л. Если создать к значений, то вероятность того, что ни для одного из них не будет совпадений, равна произведению вероятностей, соответст вующих одному значению, т.е. (1 - \/п)к.
Следовательно, вероятность, по крайней мере, одного совпаде
ния равна 1 - (1 - |
1/л)*. По формуле бинома Ньютона получаем |
|
(1 - |
a f = 1 - |
ка + (к(к - 1)/1!)а2-... ~ 1 - ка, |
1 - |
(1 - к/п) = к/п = 0,5, |
к = п/2.
Таким образом, мы выяснили, что для m-битового хэш-кода дос таточно выбрать 2m_1 сообщений, чтобы вероятность совпадения хэш-кодов была больше 0,5.
Теперь рассмотрим следующую задачу: обозначим Р (л, к) веро ятность того, что во множестве из к элементов, каждый из которых может принимать л значений, есть хотя бы два с одинаковыми значе ниями. Чему должно быть равно к, чтобы Р (л, к) была бы больше 0,5?
Число различных способов выбора элементов таким образом, чтобы при этом не было дублей, равно л(л - 1) (п - к + 1)л//(л - к)! Всего возможных способов выбора элементов равно л*. Вероятность того, что дублей нет, равна л//(л - к)/л* Вероятность того, что есть дубли, соответственно равна 1 - л//(л - к)!пк
Р (л, к) = 1 - п ! /( ( п - к ) ! |
х «*) = |
|
||||||
1 |
- (л X (л _ 1) X |
X(п - |
к - |
1)) / л* = |
|
|||
1 |
- |
[(л - |
\)/п |
х (л - |
2)/л х |
х (п - к + |
1)/л] = |
|
1 |
- |
[(1 - |
1/л) |
х (1 - 2/л) х |
х (1 - (к - |
1)/л)] |
||
Известно, что |
|
|
|
|
||||
1 |
-х<е~* |
|
|
|
|
|
||
Р(п, к) > 1 - |
[ е Уп х е 2/п |
х |
х е~к/п] |
|
||||
Р (л, к)> 1 - |
е~к^к~'^/п |
|
|
|
||||
1/2 = 1 - е Кк-'Уп |
|
|
|
|
||||
2 = еКк-хуп |
|
|
|
|
|
|||
\п2 = к ( к - |
1)/2л |
|
|
|
|
|||
к ( к - l)^ * 2 |
|
|
|
|
|