Файл: Методические указания и контрольные задания по дисциплине информационная безопасность для студентов направления 09. 03. 02.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 1102

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Кафедра ИБ

Методические указания и контрольные задания по дисциплине

Методические указания и контрольные задания по дисциплине

1.2.2.Шифрование магическими квадратами

1.3.2.Система шифрования Цезаря

1.3.5. Биграммный шифр Плейфейра Шифр Плейфейра, изобретенный в 1854 г., является наиболее известным биграммным шифром замены. Он применялся Великобританией во время первой мировой войны. Основой шифра Плейфейра является шифрующая таблица со случайно расположенными буквами алфавита исходных сообщений.Для удобства запоминания шифрующей таблицы отправителем и получателем сообщений можно использовать ключевое слово (или фразу) при заполнении начальных строк таблицы. В целом структура шифрующей таблицы системы Плейфейра полностью аналогична структуре шифрующей таблицы Трисемуса. Поэтому для пояснения процедур шифрования и расшифрования в системе Плейфейра воспользуемся шифрующей таблицей Трисемуса из предыдущей задачи ( рис. 1.5).Процедура шифрования включает следующие шаги. Открытый текст исходного сообщения разбивается на пары букв (биграммы). Текст должен иметь четное количество букв и в нем не должно быть биграмм, содержащих две одинаковые буквы. Если эти требования не выполнены, то текст модифицируется даже из-за незначительных орфографических ошибок. Последовательность биграмм открытого текста преобразуется с помощью шифрующей таблицы в последовательность биграмм шифртекста по следующим правилам: 2а.Если обе буквы биграммы открытого текста не попадают на одну строку или столбец (как, например, буквы А и Й в табл. на рис.2.6), тогда находят буквы в углах прямоугольника, определяемого данной парой букв. (В нашем примере это – буквы АЙОВ. Пара букв АЙ отображается в пару ОВ. Последовательность букв в биграмме шифртекста должна быть зеркально расположенной по отношению к последовательности букв в биграмме открытого текста.)2б.Если обе буквы биграммы открытого текста принадлежат одному столбцу таблицы, то буквами шифртекста считаются буквы, которые лежат под ними. (Например, биграмма НС дает биграмму шифртекста ГЩ.) Если при этом буква открытого текста находится в нижней строке, то для шифртекста берется соответствующая буква из верхней строки того же столбца. (Например, биграмма ВШ дает биграмму шифртекста ПА.)2в.Если обе буквы биграммы открытого текста принадлежат одной строке таблицы, то буквами шифртекста считаются буквы, которые лежат справа от них. (Например, биграмма НО дает биграмму шифртекста ДЛ.) Если при этом буква открытого текста находится в крайнем правом столбце, то для шифра берут соответствующую букву из левого столбца в той же строке. (Например, биграмма ФЦ дает биграмму шифртекста ХМ.)Задача 1.10. Зашифровать биграммным шифром Плейфера текстВСЕ ТАЙНОЕ СТАНЕТ ЯВНЫМРешение.Разобьём этот текст на биграммы:ВС ЕТ АЙ НО ЕС ТА НЕ ТЯ ВН ЫМДанная последовательность биграмм открытого текста преобразуется с помощью шифрующей таблицы (рис. 1.5) в следующую последовательность биграмм шифртекстаГП ДУ ОВ ДЛ НУ ПД ДР ЦЫ ГА ЧТПри дешифровании применяется обратный порядок действий.Шифрование биграммами резко повышает стойкость шифров к вскрытию. Хотя книга И.Трисемуса "Полиграфия" была относительно доступной, описанные в ней идеи получили признание лишь спустя три столетия. По всей вероятности, это было обусловлено плохой осведомленностью криптографов о работах богослова и библиофила Трисемуса в области криптографии.Пояснение к заданию 2Методы шифрования2.1. Метод перестановок на основе маршрутовГамильтонаЭтот метод реализуется путем выполнения следующих шагов.Шаг 1. Исходный текст разбивается на блоки. Если длина шифруемого текста не кратна длине блока, то на свободные места последнего блока помещаются служебные символы-заполнители(например,*)Шаг 2. Символами блока заполняется таблица, в которой для каждого порядкового номера символа в блоке отводится вполне определенное место (рис. 2.1). Исходная таблица Маршрут 1 Маршрут 2Рисунок 2.1 - Вариант 8-элементной таблицы и маршрутов Гамильтона.Шаг 3. Считывание символов из таблицы осуществляется по одному из маршрутов. Увеличение числа маршрутов повышает криптостойкость шифра. Маршруты выбирают либо последовательно, либо их очерёдность задаётся ключом К.Шаг 4. Зашифрованная последовательность символов разбивается на блоки фиксированной длины L. Величина L может отличаться от длины блоков, на которые разбивается исходный текст на шаге 1.Расшифрование производится в обратном порядке.Задача 2.1. Требуется зашифровать текст <МЕТОДЫ ПЕРЕСТАНОВКИ>. Ключ и длины зашифрованных блоков равны: К=<2,1,1>, L=4. Для шифрования использовать таблицу и два маршрута, представленные на рис.2.1.Решение. Воспользуемся вышеизложенной методикой построения шифра по шагам.Шаг 1. Исходный текст разбивается на 3 блока:Блок =<МЕТОДЫ П>Блок =<ЕРЕС ТАНО> =<ВКИ*****> Шаг 2. Заполняется 3 матрицы с маршрутами 2,1,1 (рис.2.2.) Маршрут 2 Маршрут 1 Маршрут 1Рисунок 2.2 - Шифрование с помощью маршрутов Гамильтона.Шаг 3. Получение шифртекста путём расстановки символов в соответствии с маршрутами. =<ОП_ТМЕЫДЕСРЕТАОНИ*КВ****>Шаг4. Разбиение на блоки шифртекста =<ОП_Т МЕЫД ЕСРЕ ТАОН И*КВ ****>Возможно применение и других маршрутов.2.2. Аналитические методы шифрованияСреди аналитических методов наибольшее распространение получили методы, основанные на использовании матриц. Зашифрование К-го блока исходной информации, представленного в виде вектора осуществляется путём перемножения матрицы ключа и вектора . В результате перемножения получается блок шифртекста в виде вектора , где элементы вектора определяются по формуле: .Расшифрование информации осуществляется путём последовательного перемножения векторов и обратной матрицы .Задача 2.2. Требуется зашифровать слово =<ЗАБАВА> с помощью матрицы-ключа А.A= Решение.1.Определим числовой эквивалент исходного слова как последовательность соответствующих порядковых номеров букв слова : =<8,1,2,1,3,1>2.Разобьём на два вектора и 3. Умножим матрицу А на векторы и : = = 4. Зашифрованное слово запишем в виде последовательности чисел =<28,35,67,21,26,38>.Задача 2.3. Расшифровать текст, полученный в задаче 2.2. Решение.1.Вычисляется определитель .2.Определяется присоединённая матрица , каждый элемент которой является алгебраическим дополнением элемента матрицы А: 3.Получается транспонированная матрица = 4.Вычисляется обратная матрица по формуле: = ,В результате вычислений обратная матрица имеет вид: 5.Определяются векторы и : ; = = 6.Получаем числовой эквивалент расшифрованного слова: =<8,1,2,1,3,1>, который заменяется символами, в результате получается исходное слово <ЗАБАВА>Пояснение к заданию 3Асимметричная криптосистема RSA.Расширенный алгоритм Евклида Выбирают два больших простых числа pиq. Для большей криптостойкости pиqвыбирают равной длины. Вычисляют произведение: n=pq Вычисляют z=(p-1)(q-1) и выбирают число е взаимно простое с z, т.е. НОД (е,z)=1. Для вычисления закрытого (секретного) ключа d решается сравнение еd 1modz (1)Решение (1) имеет вид Для вычисления ключа dвоспользуемся расширенным алгоритмом Евклида. Для этого число обращается в конечную цепную дробь: Цепная дробь имеет вид: , а последовательности и числителей и знаменателей подходящих дробей к цепной дроби определяются рекуррентно: , . , , Их вычисления удобно оформить в виде таблицы:

П Р И Л О Ж Е Н И Е

ЭЛЕМЕНТЫ ТЕОРИИ ЧИСЕЛ

Модулярная арифметика

Основные способы нахождения обратных величин

a–1 º 1 (mod n).



Ключ К может использоваться в качестве общего секретного ключа (ключа шифрования ключей) в симметричной криптосистеме. Кроме того, обе стороны А и В могут шифровать сообщения, используя следующее преобразование шифрования (типа RSA): С = ЕK (М) = МК (mod N).




Для выполнения расшифрования получатель сначала нахо-

дит ключ расшифрования К* с помощью сравнения

К  К*  1 (mod N –1),

а затем восстанавливает сообщение

М = DK (C) = CK*(mod N).
Задача 5.1

Реализовать алгоритм открытого распределения ключей Диффи-Хеллмана при следующих начальных условиях: модуль N=47, примитивный элемент g=23, секретные ключи пользователей А и В: KА=12, КВ=33 соответственно.
Решение. Для того, чтобы иметь общий секретный ключ К, пользователи А и В сначала вычисляют значения частных открытых ключей:

yA = (mod N)= 2312(mod 47) = 27 ,

yВ = (mod N)= 2333(mod 47) = 33

После того, как пользователи А и В обменяются своими значениями yA и yВ , они вычисляют общий секретный ключ

К = (mod N)= (mod N)= 3312(mod 47)= 2733 (mod 47)= =2312*33 (mod 47)= 25 .

Кроме того, они находят секретный ключ расшифрования, решая следующее сравнение:

К  К*  1 (mod N –1),

откуда К* = 35.

Если сообщение М =16, то криптограмма:

С = МК =1625(mod 47) = 21.

Получатель восстанавливает сообщение :

М = СК* = 2135(mod 47) =16.

Злоумышленник, перехватив значения N, g, yА и yВ, тоже хотел бы определить значение ключа К. Очевидный путь для решения этой задачи состоит в вычислении такого значения kА по N, g, yА, что mod N = yА (поскольку в этом случае, вычислив kА, можно найти К= mod N). Однако нахождение kА по N, g и yА – задача нахождения дискретного логарифма в конечном поле, которая считается неразрешимой.

Выбор значений N и g может иметь существенное влияние на безопасность этой системы. Модуль N должен быть большим и простым числом. Число (N –1)/2 также должно быть простым числом. Число g желательно выбирать таким, чтобы оно было примитивным элементом множества Z
N.

Алгоритм открытого распределения ключей ДиффиХеллмана позволяет обойтись без защищенного канала для передачи ключей. Однако, работая с этим алгоритмом, необходимо иметь гарантию того, что пользователь А получил открытый ключ именно от пользователя В, и наоборот. Эта проблема решается с помощью электронной подписи, которой подписываются сообщения об открытом ключе.

П Р И Л О Ж Е Н И Е

ЭЛЕМЕНТЫ ТЕОРИИ ЧИСЕЛ




Модулярная арифметика



Модулярная арифметика часто изучается в школе как "арифметикачасов". Если отсчитать 14 часов от 3 часов после полудня, то получится 5 часов утра следующего дня:

3 +14 º 5 (mod 12)

или

(3 +14) mod 12 = 5.

Это арифметика по модулю 12.

Обычная запись в модулярной арифметике

a º b (mod n)

читается так: "a сравнимо с b по модулю n". Это соотношение справедливо дляцелых значений a,b и n ¹ 0, если, и только если

a = b + k * n

для некоторого целого k.

Отсюда, в частности, следует

n | (a – b).

Это читается как "n делит (a – b )".

Если a º b (mod n),

то b называют вычетом числа a по модулю n.

Операцию нахождения вычета числа a по модулю n

a (mod n)

называют приведением числа a по модулю n или приведением по модулю.

В нашем примере

(3 +14) mod 12 =17 mod 12 = 5

или

17 º 5 (mod 12),

число 5 является вычетом числа 17 по модулю 12.

Набор целых чисел от 0 до (n –1) называют полным набором вычетов по модулю n. Это означает, что для любого целого a (a > 0) его вычет r по модулю n есть некоторое целое число в интервале от 0 до (n –1), определяемое из соотношения

r = a – k * n,

где k – целое число.

Например, для n =12 полный набор вычетов:

{0, 1, 2, …, 11}.

Обычно предпочитают использовать вычеты

r Î {0, 1, 2, …, n –1},

но иногда полезны вычеты в диапазоне целых:

.

Заметим, что

–12 (mod 7) º –5 (mod 7) º 2 (mod 7) º 9 (mod 7) и т.д.

Модулярная арифметика аналогична во многом обычной арифметике: она коммутативна, ассоциативна и дистрибутивна. Точнее говоря, целые числа по модулю n с использованием операций сложения и умножения образуют коммутативное кольцо при соблюдении законов ассоциативности, коммутативности и дистрибутивности.

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

(a + b) mod n = [a (mod n) + b (mod n)] mod n,

(a – b) mod n = [a (mod n) – b (mod n)] mod n,


(a * b) mod n = [a (mod n) * b (mod n)] mod n,

[a * (b + c)] mod n = {[a * b (mod n)] + [a * c (mod n)]} mod n.

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

Для модуля n длиной k бит промежуточные результаты любого сложения, вычитания или умножения будут не длиннее

2k бит. Поэтому возведение в степень в модулярной арифметике можно выполнить без генерации очень больших промежуточных результатов.

Вычисление степени числа a по модулю n

ax mod n

можно выполнить как ряд умножений и делений. Существуют способы сделать это быстрее. Поскольку эти операции дистрибутивны, быстрее произвести возведение в степень как ряд последовательных умножений, выполняя каждый раз приведение по модулю. Это особенно заметно, если работать с длинными числами (200 бит и более).

Например, если нужно вычислить

a8 mod n,

не следует применять примитивный подход с выполнением семи перемножений и одного приведения по модулю громадного числа:

(a * a * a * a * a * a * a * a) mod n.

Вместо этого выполняют три малых умножения и три малых приведения по модулю:

((a2 mod n)2 mod n)2 mod n.

Тем же способом вычисляют

a16 mod n = (((a2 mod n)2 mod n)2 mod n)2 mod n.

Вычисление

ax mod n,

где x не является степенью 2, лишь немного сложнее. Двоичная запись числа x позволяет представить число x как сумму степеней 2:

x = 25(10) ® 1 1 0 0 1(2), поэтому 25 = 24 + 23 + 20.

Тогда

a25 mod n = (a*a24) mod n = (a*a8 *a16) mod n =

= a * ((a2)2)2 * (((a2)2)2)2 mod n = ((((a2 * a)2)2)2 * a) mod n.

При разумном накоплении промежуточных результатов потребуется только шесть умножений:

(((((((a2 mod n) * a) mod n)2 mod n)2 mod n)2 mod n) * a) mod n.

Этот метод уменьшает трудоемкость вычислений до 1,5хk операций в среднем, где k – длина числа в битах.

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

В арифметике действительных чисел нетрудно вычислить мультипликативную обратную величину a
–1 для ненулевого a:

a–1 =1/a или a * a–1 =1.

Например, мультипликативная обратная величина от числа 4 равна 1/4, поскольку

4 * =1.

В модулярной арифметике вычисление обратной величины является более сложной задачей. Например, решение сравнения

4 * x º1 (mod 7)

эквивалентно нахождению таких значений x и k, что

4 * x º 7 * k +1,

где x и k – целые числа.

Общая формулировка этой задачи – нахождение такого целого числа x, что

a * x (mod n) =1.

Можно также записать

a–1 º x (mod n).

Решение этой задачи иногда существует, а иногда его нет. Например, обратная величина для числа 5 по модулю 14 равна 3, поскольку

5 * 3 =15 º 1 (mod 14).

С другой стороны, число 2 не имеет обратной величины по модулю 14.

Вообще сравнение

a–1 º x (mod n)

имеет единственное решение, если a и n – взаимно простые числа.

Если числа a и n не являются взаимно простыми, тогда сравнение

a–1 º x (mod n)

не имеет решения.

Сформулируем основные способы нахождения обратных величин. Пусть целое число a Î {0, 1, 2, …, n – 1}.

Если НОД (a, n) =1, то a * i (mod n) при i= 0, 1, 2, …, n –1 является перестановкой множества {0, 1, 2, …, n – 1}.

Например, если a = 3 и n = 7 (НОД (3,7) =1), то

3 * i (mod 7) при i= 0, 1, 2, …, 6

является последовательностью 0, 3, 6, 2, 5, 1, 4, т.е. перестановкой множества {0, 1, 2, …, 6}.

Это становится неверным, когда НОД (a, n) ¹ 1. Например, если a = 2 и n = 6, то

2 * i (mod 6) º 0, 2, 4, 0, 2, 4 при i= 0, 1, 2, …, 5.

Если НОД (a,n) =1, тогда существует обратное число a–1, 0 < a–1 < n, такое, что

a * a–1 º1 (mod n).

Действительно, a * i (mod n) является перестановкой 0, 1, ..., n –1, поэтому существует i, такое, что

a * i º1 (mod n).

Как уже отмечалось, набор целых чисел от 0 до n –1 называют полным набором вычетов по модулю n. Это означает, что для любого целого числа a (a > 0) его вычет r = a (mod n) – это некоторое целое число в интервале от 0 до n –1.

Выделим из полного набора вычетов подмножество вычетов, взаимно простых с n. Такое подмножество называют приведенным набором вычетов.

Пример. Пусть модуль n =11 – простое число. Полный набор вычетов по модулю 11

{0, 1, 2, …, 10}.

При формировании приведенного набора вычетов из них удаляется только один элемент – 0. Приведенный набор вычетов по модулю 11 имеет 11 – 1 = 10 элементов.