Криптоанализ перебором всех возможных ключей

Федеральное государственное образовательное бюджетное учреждение

Высшего профессионального образования

Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М. А. Бонч-Бруевича»

_____________________________________________________________________________

 

Кафедра защищенных систем связи

 

Дисциплина «Основы криптографии»

 

 

Лабораторная работа №2

 

Криптоанализ блочного шифра тотальным перебором ключей

 

 

Выполнил: ст.гр. ИКТЗ-33

Кобзев Сергей

 

 

Проверил: Д.т.н., проф. Яковлев В.А.

 

 

Санкт-Петербург

Цель работы:

Целью данной работы является изучение структуры и основных свойств блочного шифра, основанного на подстановочно перестановочной сети (Substitution-Permutation Network или SPN), криптоанализа методом тотального перебора ключей и правила принятия решения о правильном ключе при переборе.

Ход работы:

1. Сначала мы вводим управляющий ключ из 7-ми бит для генерации 5 раундовых ключей по 16 бит, в данном случае: «1010111».

 

 

Рис.1 Раундовые ключи

 

 

2. Далее мы производим шифрование случайно выбранной двоичной последовательности длиной 16 бит с использованием выбранного в п.1

ключа. Выбранная двоичная последовательность:« 1110 1011 0111 0001»

 

Рис.2 Зашифрованная двоичная последовательность

3. На третьем шаге дешифруем криптограмму, полученную на выходе шифра в п. 2 с использованием ключа, выбранного в п. 1,затем последовательно инвертируя каждый отдельный бит криптограммы, эмулируем ошибки в канале связи и подсчитываем количество ошибок при расшифровании.

 

 

Рис.3 Расшифрованная криптограмма

 

Исходная криптограмма: 0100 0000 0101 0111

Расшифрованная криптограмма: 1110 1011 0111 0001

 

 

 

Рис.4 Расшифрованная криптограмма при инвертированном 1-ом бите

 

Расшифровка криптограммы при инвертировании 1-ого бита:

Криптограмма с ошибкой: 1100 0000 0101 0111

Расшифрованная криптограмма: 0001 1000 1001 0011

Количество ошибок: 10

 

Расшифровка криптограммы при инвертировании 2-ого бита:

Криптограмма с ошибкой: 0000 0000 0101 0111

Расшифрованная криптограмма: 0000 1011 0100 0001

Количество ошибок: 5

 

Расшифровка криптограммы при инвертировании 3-его бита:

Криптограмма с ошибкой: 0110 0000 0101 0111

Расшифрованная криптограмма: 1110 0100 0111 0001

Количество ошибок: 4

 

Расшифровка криптограммы при инвертировании 4-ого бита:

Криптограмма с ошибкой: 0101 0000 0101 0111

Расшифрованная криптограмма: 1101 0101 1000 1100

Количество ошибок: 11

 

Расшифровка криптограммы при инвертировании 5-ого бита:

Криптограмма с ошибкой: 0100 1000 0101 0111

Расшифрованная криптограмма: 0010 0111 0001 0100

Количество ошибок: 8

 

Расшифровка криптограммы при инвертировании 6-ого бита:

Криптограмма с ошибкой: 0100 0100 0101 0111

Расшифрованная криптограмма: 1011 1100 0001 0111

Количество ошибок: 9

 

Расшифровка криптограммы при инвертировании 7-ого бита:

Криптограмма с ошибкой: 0100 0010 0101 0111

Расшифрованная криптограмма: 1011 1100 0001 0111

Количество ошибок: 9

 

Расшифровка криптограммы при инвертировании 8-ого бита:

Криптограмма с ошибкой: 0100 0010 0101 0111

Расшифрованная криптограмма: 0001 1011 0001 1001

Количество ошибок: 7

 

Расшифровка криптограммы при инвертировании 9-ого бита:

Криптограмма с ошибкой: 0100 0001 0101 0111

Расшифрованная криптограмма: 1101 1000 1011 0101

Количество ошибок: 7

 

Расшифровка криптограммы при инвертировании 10-ого бита:

Криптограмма с ошибкой: 0100 0000 1101 0111

Расшифрованная криптограмма: 0010 1011 0111 1100

Количество ошибок: 4

 

Расшифровка криптограммы при инвертировании 11-ого бита:

Криптограмма с ошибкой: 0100 0000 0001 0111

Расшифрованная криптограмма: 1101 0010 1110 0100

Количество ошибок: 8

 

Расшифровка криптограммы при инвертировании 12-ого бита:

Криптограмма с ошибкой: 0100 0000 0111 0111

Расшифрованная криптограмма: 0111 1011 1110 0101

Количество ошибок: 3

 

Расшифровка криптограммы при инвертировании 13-ого бита:

Криптограмма с ошибкой: 0100 0000 0100 1111

Расшифрованная криптограмма: 0010 0111 0110 0100

Количество ошибок: 7

 

Расшифровка криптограммы при инвертировании 14-ого бита:

Криптограмма с ошибкой: 0100 0000 0101 0011

Расшифрованная криптограмма: 0011 0011 1100 1101

Количество ошибок: 9

 

Расшифровка криптограммы при инвертировании 15-ого бита:

Криптограмма с ошибкой: 0100 0000 0101 0101

Расшифрованная криптограмма: 0101 1000 0111 0000

Количество ошибок: 6

 

Расшифровка криптограммы при инвертировании 16-ого бита:

Криптограмма с ошибкой: 0100 0000 0101 0110

Расшифрованная криптограмма: 0000 0100 1010 1111

Количество ошибок: 13

 

Среднее значение ошибок в дешифрованном сообщении при ошибочном приеме одного бита криптограммы:

 

 

Nош.ср. = (120)/16=7.5

 

4. Шифрование смыслового текста ключом, полученным в п.1:

 

 

Рис.5 Смысловой текст(исходный и зашифрованный)

 

5. Дешифровывание смыслового текста ключом из п.1 и ложным:

 

 

Рис.6 Дешифрование смыслового текста ключом из п.1

 

Рис.7 Дешифрование смыслового текста ложным ключом

6. Криптоанализ криптограммы, полученной в п.4:

 

 

Криптоанализ перебором всех возможных ключей

При отклонении в 6% частотные интервалы равны:

 

P(«о»)=( 3 , 15) %

P(«а»)=( 0.2 , 12.2) %

P(«и»)=(0.2 , 12.2 ) %

 

Проверялись ключи:

 

Ключ=0001101 P(«о»)=0.07% P(«а»)=0.04% P(«и»)=0.02%

Ключ=0010000 P(«о»)=0.07% P(«а»)=0.07% P(«и»)=0.04%

Ключ=0100011 P(«о»)=0.07% P(«а»)=0.03% P(«и»)=0.02%

Ключ=0101011 P(«о»)=0.07% P(«а»)=0.05% P(«и»)=0.03%

Ключ=1110000 P(«о»)=0.07% P(«а»)=0.08% P(«и»)=0.03%

Ключ=1110111 P(«о»)=0.07% P(«а»)=0.04% P(«и»)=0.04%

 

 

При отклонении в 5% частотные интервалы равны:

 

P(«о»)= ( 4 , 14) %

P(«а»)= ( 1.2 , 11.2) %

P(«и»)= (1.2 , 11.2 ) %

 

Проверялись ключи:

 

Ключ=0001010 P(«о»)=0.07% P(«а»)=0.05% P(«и»)=0.05%

 

Минимальные частотные интервалы, на которых извлекается ключ соответствуют отклонению в 1%

 

P(«о»)= ( 8 , 10) %

P(«а»)= ( 5.2 , 7.2) %

P(«и»)= (5.2 , 7.2 ) %

 

Рис.8 Исходный ключ

 

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