- •Введение
- •Лабораторная работа № 1 Анализ стойкости шифров замены. Цель работы
- •Задание
- •Порядок выполнения
- •4. Реализовать на листе Excel вычисления с большими числами по модулю.
- •Т.Е. После каждого шага приводить по модулю. Аналогично можно применять этот подход к быстрому возведению в степень:
- •Лабораторная работа № 6 Исследование ассиметричного алгоритма rsa Цель работы
- •Задание
- •Порядок выполнения
- •Литература
- •Содержание
Задание
Задание выполняется в программе CHANGE.
1. Выбрать зашифрованный текст согласно варианту А1,…., А32, … .
2. Провести частотный анализ текста.
3. На основании статистических характеристик текста выполнить дешифрование, записать в отчет найденный ключ и дешифрованный текст.
4. Выполнить сравнительную оценку стандартной частотности символов русского алфавита и исследуемого текста.
Порядок выполнения
Запустить программу CHANGE.
Вывести таблицу частот символов для криптограммы и для усредненного текста на русском языке.
Внести в таблицу замены наиболее очевидные соответствия между символами криптограммы и символами расшифрованного текста.
Сохранять все текущие значение ключа, выполняя команду горизонтального меню Ключ →Сохранить в файл.
Выполнить команду ЗАМЕНА.
Использовать статистику биграмм для уточнения вариантов замен.
Продолжить выполнение пунктов 3-6 для наиболее частых символов русского языка.
Закончить выполнение задания при получении в окне расшифрованного текста осмысленного сообщения.
В отчёте предъявить:
дешифрованный текст;
ключ (используя промежуточные сохраненные значения ключа);
сравнительную статистику символов криптограммы и средней статистики русских букв, относительное отклонение средней статистики русских букв от статистики символов криптограммы;
ответы на контрольные вопросы.
Контрольные вопросы
1. Приведите основные методы шифрования сообщений до двадцатого века.
2. Укажите основную слабость шифра простой замены.
3. Поясните, эффективен ли взлом шифра простой замены методом полного перебора ключей.
4 .Оцените количество символов в криптограмме, при котором криптоанализ шифра простой замены будет успешным.
Лабораторная работа № 2 Исследование генераторов псевдослучайных последовательностей
Цель работы
Изучить особенности формирования псевдослучайных последовательностей (ПСП) для использования в потоковых шифрах.
Задание
Задание выполнять в программной среде Excel (Calc).
1. Составить несколько линейных рекуррентных регистров с обратными связями (ЛРР)
2. Сформировать генератор ПСП на основе нелинейного взаимодействия нескольких ЛРР
3. Изучить характеристики выходной последовательности созданного генератора.
Порядок выполнения
Запустить программу Excel.
1
.
Сформировать в строке листа электронной
таблицы произвольное начальное заполнение
трех ЛРР, например:
101, 10011 и 1110000.
2. В соответствии со своим вариантом из таблицы выбрать коэффициенты обратных связей для ЛРР.
3. Продумать и записать в следующей строчке Excel-формулы для вычисления новых состояний всех ячеек всех регистров, так в ячейке C3 надо ввести формулу: “=B2”. Для вычислений операций по модулю два в Excel можно использовать функцию MOD(X,2) или ОСТАТ(X,2) для русскоязычной версии продукта.
4. Заполнить строки таблицы для всех следующих состояний регистров до их совокупного повторения с помощью функции копирования формул в Excel.
5. В колонке Q записать сумму по модулю два выходов со всех ЛРР.
6. Определить период выходной последовательности совокупности ЛРР, т.е. последовательности в колонке Q.
7. Определить статистические характеристики выходной последовательности (проверка серий длины 1 и длины 2, корреляционный анализ).
8
.
Ввести в систему нелинейность. Использовать
чередующийся генератор «стоп-пошёл»
(см. лекции):
9. Повторить пункт 7.
Таблица коэффициентов обратных связей
Регистр: x3+x2+1 (коэффициенты 1 1 0 1, так как первый и последний коэффициент всегда единицы, то можно для краткости их не записывать). Для данного примера в таблице будет записано: 10.
№ Варианта |
1-й ЛРР длина 3 |
2-й ЛРР длина 4 |
3-й ЛРР длина 5 |
1 |
01 |
001 |
0010 |
2 |
10 |
001 |
0010 |
3 |
01 |
100 |
0010 |
4 |
10 |
100 |
0010 |
5 |
01 |
001 |
0100 |
6 |
10 |
001 |
0100 |
7 |
01 |
100 |
0100 |
8 |
10 |
100 |
0100 |
9 |
01 |
001 |
0010 |
10 |
10 |
001 |
0010 |
11 |
01 |
100 |
0010 |
12 |
10 |
100 |
0010 |
13 |
01 |
001 |
0100 |
14 |
10 |
001 |
0100 |
15 |
01 |
100 |
0100 |
16 |
10 |
100 |
0100 |
17 |
01 |
001 |
0010 |
18 |
10 |
001 |
0010 |
19 |
01 |
100 |
0010 |
20 |
10 |
100 |
0010 |
Контрольные вопросы
1. Дайте определение понятия ЛРР и способы их задания.
2. Приведите схему ЛРР длины 3 и соответствующий полином обратных связей.
3. Укажите период выходной последовательности ЛРР и поясните, когда он достигает максимального значения.
4. Найдите ЛРР длины n с периодом выходной последовательности равной n и периодом равным единице.
5. Поясните, какими статистическими характеристиками обладает выходная последовательность ЛРР.
6. Приведите пример использования ЛРР в потоковых шифрах.
Лабораторная работа № 3 Исследование блоковых шифров.
Цель работы
Изучить особенности преобразования данных блоковых шифрах основанных на схеме Файстеля.
Задание
Задание выполнять в программной среде Excel (Calc).
1. Задать нелинейную функцию для нелинейного преобразования.
2. Задать ключ шифрования и ключи итераций.
3. Выполнить шифрование и расшифрование данных на учебном шифре.
4. Исследовать влияние изменения в ключе и в сообщении на результат шифрования.
Порядок выполнения
Открыть Excel файл block_cipher.
1
.
Проанализировать приведенный пример
реализации схемы Файстеля. В схеме блок
сообщения разбивается на два подблока
(левый L и правый R) и выполняется
итерационная процедура:
На последней итерации шифрования подблоки меняются местами (это позволяет использовать эту же схему для расшифрования).
В данном примере процедура преобразований выполняется за четыре итерации и демонстрируются лишь некоторые особенности преобразования данных в алгоритмах шифрования построенных на схеме Файстеля и далек от реальных систем шифрования
В примере рассматривается шифрование 6-ти битного блока по схеме Файстеля с длиной ключа в 4,6 или 8 бит. Для каждой итерации вырабатывается ключ итерации из исходного ключа циклическим сдвигом.
Процедура нелинейного преобразования задана формулами: b4=a4*a5+K1+K6, b5=a4*a6+K2*K3, b6=a5*a6+K4+K5, где a4, a5, a6 – начальные значения бит перед выполнением итерации, b4, b5, b6 – значения после выполнения нелинейного преобразования. k1 – k6 – значения бит ключа (В примере эти формулы вписаны в ячейки F12 G12 H12 для первой итерации
2. Задать нелинейную функцию в соответствии со своим вариантом (см. таблицу вариантов) с помощью записи Excel формул в ячейки F12 G12 H12.
Варианты
для составления нелинейного преобразования:
K=(K1;K2;K3;K4;K5;K6) ключ из 6-ти бит. b4=a4+K1+K3 b5=a5+a6+K4 b6=a6*K4+K2+a5+K6
K=(K1;K2;K3;K4) ключ из 4-х бит. b4=a4+K1+K3 b5=a5+a6+K4 b6=a6+K2*K4
K=(K1;K2;K3;K4;K5;K6;K7;K8) ключ из 8-ти бит. b4=a4+K1+K3*K4 b5=a5+a6+K7+K8 b6=a6+K2*K5+K6
K=(K1;K2;K3;K4;K5;K6) ключ из 6-ти бит. b4=a4+K1+K3 b5=a5+a6*K4 b6=a6+K2+K5*K6
K=(K1;K2;K3;K4;K5;K6;K7;K8) ключ из 8-ти бит. b4=a4+K1+K3*K7 b5=a6*a5+K4+K8 b6=a4+K2*K5+K6
K=(K1;K2;K3;K4;K5;K6) ключ из 6-ти бит. b4=a4+K1*K3 b5=a5+a6+K4+K1 b6=a6+K2*K5+K6
K=(K1;K2;K3;K4;K5;K6) ключ из 6-ти бит. b4=a4+K1+K3 b5=a5+a6+K4 b6=a6+K2*K5+K6
K=(K1;K2;K3;K4) ключ из 4-х бит. b4=a4*K1+K3 b5=a5+a6*K4 b6=a6+K2+a4
K=(K1;K2;K3;K4;K5;K6;K7;K8) ключ из 8-ти бит. b4=a4+K1+K3*K7 b5=a5+a6+K4*K8 b6=a6+K2*K5+K6+K7
K=(K1;K2;K3;K4) ключ из 4-х бит. b4=a4+K1+K3*a6 b5=a5+a4+K4 b6=a6+K2*a5
3. Составить аналогичную процедуру расшифрования.
4. Проверить, что процедура расшифрования действительно восстанавливает сообщение.
5. Исследовать – как меняется криптограмма при малых изменениях (в одном бите) ключа. Записать в виде отдельной таблицы в Word файле рядом первоначальный ключ K и результат шифрования на этом ключе E – рядом измененный в одном бите ключ K’ и результат шифрования на этом ключе E’) сообщения.
6. Исследовать – как меняется криптограмма при малых изменениях (в одном бите) сообщения. Записать в виде отдельной таблицы в Word файле рядом исходное сообщение M и результат его шифрования E – рядом измененное в одном бите сообщение M’ и результат его шифрования E’)
7. Создать на листе копию процедуры шифрования, т.е. скопировать колонки с процедурой шифрования в столбцы с большими номерами. Внести изменения в сообщение в копии данных согласно пункту «6». С помощью условного форматирования пометить цветом различающиеся цифры в двух вариантах шифрования.
Контрольные вопросы
1. Дайте определение блоковым шифрам.
2. Перечислите основные особенности структуры Файстеля.
3. Приведите примеры блоковых шифров, построенных на структуре Файстеля.
4. Приведите примеры блоковых шифров, которые не используют структуру Файстеля.
5. Объясните цель формирования различных ключей итераций из основного ключа шифрования.
6. Поясните основные причины задействования в процедуре шифрования операций нелинейного преобразования, перемешивания и их многократного повторения.
Лабораторная работа № 4 Исследование модифицированных блоковых шифров
Цель работы
Изучить особенности преобразования данных в модификациях блоковых шифрах.
Задание
Задание выполнять в программной среде Excel (Calc).
1. Преобразовать модификацию электронная кодовая книга (ECB) в модификацию с зацеплением блоков (CBC).
2. Изучить влияние ошибок в линии связи на результат расшифрования данных в разных модификациях блокового алгоритма.
Порядок выполнения
Открыть Excel файл block_cipher.
1. Создать две копии 1-го листа (листа с процедурой шифрования). Дать листам имена: Блок 1, Блок 2, Блок 3
2
M1
Шифрование ECB
E0
E1
Шифрование ECB
E2
Шифрование ECB
E3
E1
M2
M3
E2
3. Скопируйте листы (Блок 1, Блок 2, Блок 3) в листы (Блок 1a, Блок 2b, Блок 3c). 4. Проверьте, что если вы шифруете одинаковые блоки сообщения, то получаются одинаковые блоки криптограммы. 5. Измените один бит в блоке сообщения M2 – проверьте, как это повлияет на блоки криптограмм. Измените один бит в E0 - проверьте, как это повлияет на блоки криптограмм.
6. Реализовать процедуру расшифрования для модификации с зацеплением блоков (предусмотреть возможность раздельного изменения значения E1, E2, E3 в процедурах шифрования и расшифрования). Проверьте, что процедура расшифрования восстанавливает начальные блоки сообщения.
7. Исследовать влияние ошибок в линии связи на процедуру расшифрования. Изменить одиночный бит в значении E2 (только для процедуры расшифрования, проверить, что E2 для шифрования не изменилось). Изучить изменения, которые произошли в расшифрованных сообщениях M1 и М2 – пометить цветом измененные биты.
8. Реализовать процедуру шифрования данных в модификации с обратной связью по выходу.
9. Реализовать процедуру шифрования данных в модификации с обратной связью по гамме.
Контрольные вопросы
1. Поясните понятие электронная кодовая книга.
2.Перечислите основные особенности шифрования в режиме электронной кодовой книги (ECB).
3. Назовите ситуации, в которых использование ECB необходимо
4. Перечислите основные модификации блоковых шифров.
5. Укажите требования, которые предъявляют к E0 модификациях блоковых шифрах, и объясните причину.
6. Проанализируйте влияние ошибок в линии связи на принимаемое сообщение в разных модификациях блокового шифра.
Лабораторная работа № 5 Исследование принципов вычислений в системах шифрования с открытым ключом.
Цель работы
Изучить основные алгоритмы, используемые в системах шифрования с открытым ключом.
Задание
Задание выполнять в программной среде Excel (Calc).
1. Исследовать и реализовать алгоритм операцию быстрого возведения в степень.
2. Реализовать алгоритм Эвклида.
3. Модифицировать алгоритм быстрого возведения в степень для выполнения операций по модулю.
4. Изучить алгоритм Ферма разложения на множители.
Порядок выполнения
Запустить табличный процессор Excel.
Реализовать на листе Excel предварительный алгоритм перевода десятичного числа в двоичное число.
Описание алгоритма (формирует биты двоичного представления числа):
Начальные присвоения: Аргумент n, начальное присваивание N=n
В цикле выполняем
IF (N - четно)
a)D= 0;
b)N=N/2;
IF (N - нечетно)
a)D= 1
b)N=(N-1)/2
Алгоритм завершается получением N=0 – результат – колонка D
Реализованный алгоритм должен выдавать решения для произвольного аргумента, т.е. в столбцы N и D листа Excel должны быть вписаны соответствующие формулы.
Пример выполнения алгоритма в Excel для чисел 9 и 8:
|
|
|
N |
D |
|
|
|
|
9 - аргумент |
|
9 |
|
|
|
|
|
|
|
4 |
1 |
|
|
|
|
|
|
2 |
0 |
|
|
|
|
|
|
1 |
0 |
|
|
|
|
|
|
0 |
1 |
Старший разряд |
|
|
|
|
|
|
|
|
|
|
Т.е. двоичным представлением числа 9 является число 1001 |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
N |
D |
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
4 |
0 |
|
|
|
|
|
|
2 |
0 |
|
|
|
|
|
|
1 |
0 |
|
|
|
|
|
|
0 |
1 |
Старший разряд |
|
|
|
|
|
|
|
|
|
|
2. Реализовать на листе Excel алгоритм быстрого возведения в степень в целых числах.
В криптографических приложениях вычисления должны производится в целых числах, что не дает воспользоваться обычными операторами возведения в степень (операторы производят вычисления через функции разложения в ряд, т.е. выполняют приближенные вычисления).
Данный алгоритм основан на том факте, что для вычисление a^8=a*a*a*a*a*a*a*a требует 7-ми шагов: шаг 1 a*a
шаг 2 a*a*a
шаг 3 a*a*a*a
шаг 4 a*a*a*a*a
шаг 5 a*a*a*a*a*a
шаг 6 a*a*a*a*a*a*a
шаг 7 a*a*a*a*a*a*a*a
Однако возможно выполнить расчет за меньшее количество шагов:
шаг 1 a^2=a*a
шаг 2 a^4=a^2*a^2
шаг 3 a^8=a^4*a^4
Описание алгоритма быстрого возведения в степень y=a^x:
Начальные присвоения: Y=1, A=a , X=x
В цикле выполняем:
if(X – нечетно) then
a)Y=Y*A;
b)X=(X-1)/2;
с)A=A*A.
if(X – четно) then
a)Y=Y; (т.е. оставляем как на предыдущем шаге)
b)X=X/2
с)A=A*A.
Алгоритм завершается при X=0 (на этом шаге A не нужно считать) Ответ: y=Y;
Пример выполнения алгоритма в Excel для 6^9:
-
y=a^x
a=6
x=9
A
X
Y
6
9
1
1 шаг
36
4
6
2 шаг
1296
2
6
3 шаг
1679616
1
6
4 шаг
0
10077696
3. Реализовать на листе Excel алгоритм нахождение НОД (наибольший общий делитель). Алгоритм Эвклида НОД(a,b); a>b.
Описание алгоритма НОД(a,b)
Начальные присвоения A=a; R=B=b
В цикле выполняем:
R=остаток от деления A на B, (q = целое от деления A на B);
IF(R=0) B – ответ
A=B;
B=R;
Пример НОД(24;15):
-
A
B
q
R
24
15
24
=
15
*
1
+
9
15
=
9
*
1
+
6
9
=
6
*
1
+
3
6
=
3
*
2
+
0
