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

Математические основы криптологии и криптографические методы и средс

..pdf
Скачиваний:
48
Добавлен:
15.11.2022
Размер:
14.26 Mб
Скачать

одной последовательностью шифровать другую. Так, если у ' и у» - гаммы с разными периодами, а Г» и Г» шифры типа 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