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

Методическое пособие 372

.pdf
Скачиваний:
9
Добавлен:
30.04.2022
Размер:
1.06 Mб
Скачать

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

Результаты применения данного алгоритма сохраняются в файле.

Задание:

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

Порядок выполнения работы:

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

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

Оформление отчета:

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

Контрольные вопросы:

1.В чем заключается суть метода шифрования генератором Геффе?

2.Какой характерной особенностью обладает обобщенный генератор Геффе?

3.Как рассчитываются линейная сложность и период генерируемой последовательности?

4.Требования к реализации данного метода шифрования.

9

Практическая работа № 3 Хеширование данных с помощью алгоритма MD5

Цель работы: изучить методы хеширования данных в алгоритме MD5 и освоить их практическое применение.

Теоретическое введение

MD5 – это однонаправленнная хэш-функция, алгоритм для входного сообщения выдает 128-битовое хэш-значение, или краткое изложение сообщения.

MD5 (Message Digest 5) – это улучшенная версия MD4.

Хотя она сложнее MD4, их схемы похожи, и результатом MD5 также является 128-битовое хэш-значение.

После некоторой первоначальной обработки MD5 обрабатывает входной текст 512-битовыми блоками, разбитыми на 16 32-битовах подблоков. Выходом алгоритма является набор из четырех 32-битовых блоков, которые объединяются в единое 128-битовое хэш-значение.

Вначале допускаем, что имеем на входе сообщение из b бит, и что мы желаем найти Message Digest этой последовательности бит. Число b является произвольным неотрицательным целым; b может быть равным нулю, оно не обязательно должно быть множителем 8, и оно может быть произвольно большим. Представим последовательность бит сообщения как:

m_0 m_1 m_2 . . . . . . m{b-1}.

Следующие пять операций выполняются для подсчета

Message Digest сообщения.

Присоединение заполняющих (дополнительных) битов

Сообщение расширяется так, чтобы его длина (в битах) совпадала с 448, по модулю 512. Дополнение всегда выполняется, даже если длина сообщения уже совпадает с 448

10

по модулю 512. Дополнение выполняется следующим образом: одиночный «1» бит добавляется к сообщению, и далее «0» биты добавляются так что длина в битах заполняемого сообщения соответствует 448 по модулю 512. В общем случае, минимум один бит и максимум 512 бит добавляется.

Добавление длины

64-битное представление входной последовательности b (длина сообщения перед расширением дополнительными битами) присоединяется к результату предыдущего этапа. Маловероятно, что длина b будет больше, чем 264 поэтому и используется 64-разрядная величина для хранения длины b. Эти биты добавляются как два 32-разрядных слова, младшее заносится первым.

В этом месте окончательное сообщение (после выполнения первого и второго этапов) имеет длину, кратную 512 битам, т.е. сообщение имеет длину, которая точно кратна 16-ти словам. Последовательность М[0 . . . . N-1] является словами окончательного сообщения, где N кратно 16.

Инициализация MD буфера

Буфер на 4-е слова (A, B, C, D) используется для подсчета Message Digest. Каждое из A, B, C, D является 32битным регистром. Эти регистры инициализируются следующими шестнадцатиричными значениями, где первым следует самый младший байт:

A:01 23 45 67

B:89 ab cd ef

C:fe dc ba 98

D:76 54 32 10

Разработчики из RSA Data Security, Inc. назвали их магическими константами.

11

Обработка сообщения в блоках по 16 слов

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

F(X,

Y, Z) = (X Y)

(( X) Z)

G(X,

Y, Z) = (X Z)

(Y ( Z))

 

H(X, Y, Z) = X

Y Z

I(X, Y, Z) = Y (X

( Z))

В каждой битовой позиции функция F действует как условный оператор: если X то Y иначе Z. Функция F могла бы определяться с использованием операции «+» вместо « », так как выражение (X Y) (( X) Z) никогда не будет иметь 1 в одинаковых битовых позициях. Если биты X, Y и Z независимы и несмещены, то каждый бит после выполнения F(X, Y, Z) будет независим и несмещен.

Функции G, H и I подобны функции F, они действуют в «побитовом соответствии» для нахождения выходного значения от входных битов X, Y и Z, тем же способом, что если биты X, Y и Z независимы и несмещены, то каждый бит после выполнения вышеуказанных функций будет независим и несмещен. Обратите внимание, что функция H(X, Y, Z) является поразрядной операцией исключающего ИЛИ (т.е. функцией контроля четности входных значений).

Далее следует главный цикл обработки сообщения (рис. 2). Главный цикл состоит из четырех очень похожих этапов (у MD4 было только три этапа). На каждом этапе 16 раз используются различные операции. Каждая операция представляет собой нелинейную функцию над тремя аргументами из a, b, c и d (рис. 3). Затем она добавляет этот результат к четвертой переменной, подблоку текста и константе. Далее результат циклически сдвигается вправо на переменное число битов и добавляет результат к одной из переменных a, b, c и d. Наконец результат заменяет одну из

12

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

Рис. 2. Главный цикл MD5

Рис. 3. Одна операция MD5

Вывод

В результате выполнения предыдущих действий Message Digest производит на выходе числа A, B, C, D, общая длина которых 128 бит.

13

Задание:

Используя алгоритм MD5, написать программу хеширования произвольного набора символов на любом языке программирования.

Порядок выполнения работы:

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

написать функцию проверки целостности, в которую

вкачестве параметров передается ключ и символ (или строка символов) зашифрованного текста.

Оформление отчета:

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

Контрольные вопросы:

1.В чем заключается суть метода шифрования MD5?

2.Какой характерной особенностью обладает инициализация MD буфера?

3.Из скольких этапов состоит главный цикл обработки сообщения?

4.В чем заключаются многоалфавитные подстановки?

5.Приведите пример шифра одноалфавитной замены.

14

Практическая работа № 4 Шифрование данных с помощью алгоритма A5

Цель работы: изучить методы шифрования данных в алгоритме А5 и освоить их практическое применение.

Теоретическое введение

Шифрование в стандарте GSM осуществляется при помощи семейства протоколов А5. В А5/0 – данные при передачи по эфиру не шифруются. Версия А5/1 применяется в «избранных» странах, таких как США и страны Западной Европы. В остальных странах используется ослабленная версия – А5/2. После того как шифры А5/2 и А5/1 были взломаны, была разработана модернизированная версия – А5/3 которая использует алгоритм Касуми.

Шифр А5/0

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

Шифр А5/1

Рассмотрим более подробно эту модификацию. В стандарте GSM во время сеанса связи между Абонентом (далее А) и Базовой станцией (далее Б) посылается последовательность кадров каждые 4.6 мс. Каждый кадр заключает в себе 114 бит оцифрованной информации от А к Б и 114-ти бит от Б к А. Каждый разговор может быть зашифрован посредством нового сессионного ключа К. Для каждого кадра, К смешивают с общеизвестным номером кадра Fn, а результат служит в качестве начального состояния генератора, который производит 228 псевдослучайных бит. Эти биты складываются по модулю 2 с двумя частями по 114

15

(114 + 114) бит не зашифрованного текста, чтобы получить 114+114 бит шифртекста.

А5/1 состоит из трех регистров сдвига с линейной обратной связью с длиной в 19, 22 и 23 бит, которые обозначены как R1, R2 и R3 соответственно. Самый крайний справа бит в регистрах на схеме помечен как нулевой бит. Обратная связь регистра R1 осуществляется в битах,

расположенных в позициях – 13, 16, 17, 18; R2 – 20, 21; R3 – 7, 20, 21, 22. Когда регистр работает, его сдвиги в ячейках обратной связи суммируются по модулю два и результат записывается в нулевой бит сдвинутого регистра. Три регистра максимальной длины с периодами 219 -1, 222 – 1 и 223 -1 соответственно. Регистры сдвигаются по следующему мажоритарному правилу: в регистре имеется один бит для

«синхронизации» (8 for R1, 10 for R2, 10 for R3). Есть мажоритарная функция f(x,y,z) = x&y +x&z +y&z ( & –

логическое И, + – логическое ИЛИ) которая калькулируется в каждом такте от трех битов синхронизации. И на данном такте сдвигу подвергаются только те регистры у которых биты синхронизации совпадают с f.

Рис. 4. Схема регистров сдвига потокового шифра А5/1

16

Процесс генерации псевдослучайных битов из сессионного ключа K и счетчика кадров Fn состоит из 4-х шагов:

1.Три регистра равны нулю, а затем проходят 64 цикла (причем управление сдвигом отсутствует). В течении данного периода каждый бит K (от младшего к старшему) складывается по модулю 2 с младшим битом каждого регистра.

2.Затем, производится еще 22 цикла (причем опять отсутствует управление сдвигом) и младшие биты регистров складываются по модулю два с битами Fn (от младшего к старшему). Состояние регистров в конце этого шага называется начальным состоянием кадра.

3.Над тремя регистрами производится еще 100 тактов с управлением сдвигом, но уже выходные псевдослучайные биты(последовательность) не генерируются.

4.228 циклов с управлением сдвигом и генерируются

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

Шифр А5/2

В алгоритме А5/2 используется более слабая система шифрования, чем в А5/1, так как эта модификация создавалась на экспорт в страны, не входящие в ЕС. В А5/2 к трем основным регистрам добавлен еще 17 битовый, управляющий движением бит в остальных. Но криптоаналитиками было установлено, что для вскрытия системы достаточно прямым перебором найти заполнение управляющего регистра. Это осуществляется двумя кадрами по 114 бит сеанса связи (в первых двух кадрах шифруются одни нули).

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

17

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

Шифр А5/3

Основой алгоритма А5/3 служит алгоритм Касуми, утвержденный 3GPP, который в свою очередь был получен из алгоритма MISTY (Mitsubishi). Считается, что этот алгоритм обеспечивает требуемую криптостойкость.

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

Задание:

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

18