Опубликован: 19.09.2011 | Уровень: специалист | Доступ: платный | ВУЗ: Тульский государственный университет
Лекция 2:

Основные понятия криптографии

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >

Пример шифра

Теперь, когда даны основные определения, рассмотрим одну из простейших систем шифрования, которая носит имя "шифр Юлия Цезаря". Предполагается, что знаменитый римский император и полководец, живший в 1 веке до нашей эры, использовал этот шифр в своей переписке.

Шифр Цезаря применительно к русскому языку пример 1.1 состоит в следующем. Каждая буква сообщения заменяется на другую, которая в русском алфавите отстоит от исходной на три позиции дальше. Таким образом, буква A заменяется на Г , Б на Д и так далее вплоть до буквы Ь , которая заменялась на Я , затем Э на A , Ю на Б и, наконец, Я на В .

АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
Листинг 1.1. Исходный алфавит

Так, например, слово ЗАМЕНА после шифрования методом Цезаря превратится в КГПЗРГ .

Это не очень сложный метод, тем более что при шифровании сообщений из нескольких слов сразу становится понятным, сколько слов содержал исходный текст. Кроме того, можно получить некоторую информацию по анализу повторов букв в зашифрованном сообщении. Например, в зашифрованном КГПЗРГ одна из букв повторяется дважды. Тем не менее, Цезарь вошел в историю криптографии, а "шифр Юлия Цезаря", как его до сих пор называют, служит примером одной из первых систем шифрования.

Для расшифрования сообщения КГПЗРГ необходимо знать только сам алгоритм шифрования. Любой человек, знающий способ шифрования, легко может расшифровать секретное сообщение. Таким образом, ключом в данном методе является сам алгоритм.

Каким образом можно усовершенствовать шифр Цезаря? Можно было бы попытаться расширить алфавит с 33 до 36 символов и более за счет включения знаков препинания и пробелов. Это увеличение алфавита замаскировало бы длину каждого отдельного слова.

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

Усовершенствуем шифр Цезаря с учетом правила Керкхоффса.

Предположим, что буквы сдвигаются не на три знака вправо, а на n (0<n<33). В этом случае в системе шифрования появляется ключ – число nпараметр сдвига. Отправитель и получатель могут каким-либо образом договариваться (например, лично) и иногда менять значение ключа. Так как n может принимать разные значения, знание одного только алгоритма не позволит противнику расшифровать секретное сообщение.

Каким же образом может действовать в том случае злоумышленник, чтобы узнать содержание сообщения? Пусть, например, перехвачено секретное сообщение ЧСЮЭЮЪ. Противнику известно, что ключ (параметр сдвига n) может принимать значения от 1 до 32. Пытаясь найти значение секретного ключа, мы будем проводить атаку по шифротексту. Рассмотрим способ последовательного перебора всех возможных ключей (это так называемый метод "грубой силы"). Запишем на 32 строчках все варианты, которые получаются сдвигом каждой буквы на 1, 2, 3, ... , 32 позиции соответственно. Эту операцию можно проводить вручную, а можно составить несложную программу, которая запишет все варианты перебора параметра n в файл. Одна из этих 32 строк будет содержать исходное сообщение ( таблица 1.1).

Таблица 1.1. Перебор вариантов для поиска ключа при использовании метода Цезаря
Перехваченная криптограмма ЧСЮЭЮЪ
1 ШТЯЮЯЫ 17 ЗВОНОК
2 ЩУАЯАЬ 18 ИГПОПЛ
3 ЪФБАБЭ 19 ЙДРПРМ
4 ЫХВБВЮ 20 КЕСРСН
5 ЬЦГВГЯ 21 ЛЁТСТО
6 ЭЧДГДА 22 МЖУТУП
7 ЮШЕДЕБ 23 НЗФУФР
8 ЯЩЁЕЁВ 24 ОИХФХС
9 АЪЖЁЖГ 25 ПЙЦХЦТ
10 БЫЗЖЗД 26 РКЧЦЧУ
11 ВЬИЗИЕ 27 СЛШЧШФ
12 ГЭЙИЙЁ 28 ТМЩШЩХ
13 ДЮКЙКЖ 29 УНЪЩЪЦ
14 ЕЯЛКЛЗ 30 ФОЫЪЫЧ
15 ЁАМЛМИ 31 ХПЬЫЬШ
16 ЖБНМНЙ 32 ЦРЭЬЭЩ

Мы видим, что единственное слово, имеющее смысл, – это ЗВОНОК. Это слово располагается на 17 месте. Следовательно, если шифрованный текст сдвинуть на 17 позиций вперед получится открытый текст. Это означает, что для получения шифрованного текста открытый текст нужно сдвинуть на (33-17)=16 позиций. Таким образом, получили, что при шифровании ключ n=16.

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

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

0 1 2 3 4 5 6 7 8 9.

Один из абонентов желает переслать другому секретный код замка, состоящий из пяти цифр и равный 12345. Отправитель и получатель заранее договорились о том, что ключ шифрования n будет равен 3. Отправитель шифрует выбранным ключом исходное сообщение 12345, получает 45678 и переправляет полученное значение своему абоненту. Возможно, противник перехватит криптограмму и попытается вскрыть ее, используя, как и раньше, метод последовательного перебора. Так как исходный алфавит состоял из 10 символов, то значение ключа может лежать в диапазоне от 1 до 9. Выпишем, как и раньше все варианты, которые получаются сдвигом каждого знака перехваченного сообщения на 1, 2, 3, ... , 9 позиций соответственно ( таблица 1.2).

Таблица 1.2. Перебор вариантов для вскрытия зашифрованного кода замка
Перехваченная криптограмма 45678
1 56789
2 67890
3 78901
4 89012
5 90123
6 01234
7 12345
8 23456
9 34567

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

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

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

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Антон Свистельников
Антон Свистельников

С помощью обобщенного алгоритма Евклида найдите числа х и у, удовлетворяющие уравнению 30х +12y = НОД(30,12).

х=1, у=-2, НОД = 6. Где ошибка?

Шамиль Байрамов
Шамиль Байрамов

z = x + k (mod N)

Алексей Приходько
Алексей Приходько
Украина, Днепропетровск, Украинский государственный Химико-технологический университет, 2013
Юрий Волоховский
Юрий Волоховский
Украина, Харьков, ХарГАЖТ, 2007