Опубликован: 02.03.2017 | Уровень: для всех | Доступ: платный
Лекция 6:

Классические шифры

6.6 Преобразование сдвига

См. [4])

Для ускорения зашифрования и расшифрования удобно иметь относительно простое правило реализации такой перестановки. Один из способов-рассматривать множество целых чисел \{0, 1, 2, \ldots, N-1\} и использовать на нем операции сложения и умножения по модулю N.

Итак, пусть используется N-буквенный алфавит с числовыми эквивалентами 0, 1, 2, {\ldots},N-1. Пусть b - фиксированное целое число. Преобразованием сдвига будем называть функцию f, определенную правилом C=f(P)=P+b ~(\mod  N). Случай N=26, b=3 - это шифрсистема, изобретенная Юлием Цезарем. Для расшифрования элемента шифртекста C\in\{0, 1, 2, {\ldots},N-1\} надо будет просто вычислить P=f^{-1}(C)\equiv C-b ~(\mod  N). Параметр b является ключом зашифрования.

Пример 6.8 Предположим, что "FQOCUDEM", которое , как нам известно, зашифровано с использованием преобразования сдвига на буквах 26-буквенного алфавита. Нам надо найти b для успешного "взлома" шифра. Сделать это можно при помощи частотного анализа. Он работает следующим образом. Предположим, что нами перехвачен длинный отрезок шифртекста, скажем, несколько сотен букв. Мы знаем, что "E" - наиболее часто встречающаяся буква английского языка. Поэтому разумно предположить, что наиболее часто встречающаяся в шифртексте буква является результатом зашифрования буквы "E". Пусть чаще других в шифртексте встречается буква "U". Это значит, что сдвиг преобразует "E"=4 в "U"=20, то есть 20\equiv 4+b ~(\mod  26), так что b=16. Осталось вычесть 16 (по модулю 26) из числовых эквивалентов "FQOCUDEM":

"FQOCUDEM"=5, 16, 14, 2, 20, 3, 4, 12 \rightarrow 15, 0, 24, 12, 4, 13, 14, 22="PAYMENOW".

Если шифрование применяется к буквам 32-буквенного алфавита, то для b имеется всего 32 возможности, можно просто попробовать их все. И, скорее всего, лишь одному из значений b будет соответствовать осмысленное сообщение, такое b и есть ключ зашифрования.

Значит, этот тип криптосистем слишком прост, чтобы быть хорошим. Вскрыть его очень легко. Его можно усовершенствовать, используя более широкий класс преобразований, называемых аффинными отображениями: C=a\cdot P + b ~(\mod  N), где a и b-фиксированные целые числа(вместе они образуют ключ зашифрования).

Чтобы расшифровать сообщение, зашифрованное применением аффинного отображения, нужно просто выразить P через C: P\equiv s\cdot C+t ~(\mod  N), где s=a^{-1} ~(\mod  N) есть обратное к a по модулю N число, а t равно -a^{-1}b. Конечно, это возможно лишь при условии \GCD (a,N)=1. В противном случае нельзя выразить P через C: если \GCD (a,N)>1, то одной букве шифртекста соответствует несколько букв открытого текста, поэтому нельзя однозначно восстановить открытый текст по зашифрованному. По определению, такое преобразование не является шифрующим, так как последнее обязано быть взаимно однозначным, то есть открытый текст должен определяться шифртекстом однозначно.

Итак, аффинная криптосистема над N-буквенным алфавитом с параметрами a и b задается правилами

C=a\cdot P+b ~(\mod  N), \qquad  P = s\cdot C + t ~(\mod  N),

где s=a^{-1}, t=- a^{-1}b.

Как частный случай аффинной криптосистемы при a=1 получаем преобразование сдвига. В другом частном случае при b=0 получаем P \equiv a\cdot C ~(\mod  N), C=a^{-1}P ~(\mod  N). Такое преобразование называется линейным. Оно отображает сумму в сумму, т. е. если {P}_{1} при шифровании переходит в {C}_{1}, а {P}_{2} - в {C}_{2}, то {P}_{1}+ {P}_{2} переходит в {C}_{1}+ {C}_{2} (сложение, конечно, производится по модулю N).

Пусть теперь нам известно, что перехваченное сообщение зашифровано применением аффинного отображения букв - буквенного алфавита. Мы хотим определить ключ a, b, чтобы прочитать это сообщение. Для этого нужно знать, как зашифровываются какие-нибудь две буквы.

Используется русский алфавит из 31 буквы: буквы Е и Ё не различаются, буквы И и Й не различаются. Каждой букве такого алфавита поставлено в соответствие число: А соответствует 0, Б-1, В-2,…., Ю-29, Я-30. Известен алгоритм зашифрования: номер буквы открытого текста умножается на число а, к результату прибавляется число b, находится остаток от деления полученного числа на 31. Этот остаток определяет номер буквы в шифрованном тексте. Пробелы и знаки препинания сохранены. Ключом является пара чисел (a, b). Итак, алгоритм известен, ключ Вам неизвестен. При зашифровывании противник не учел особенности русского языка, которые позволят Вам и без знания ключа расшифровать текст. Шифрованный текст:

ВЯТЖХШИАВБ-АНЯЯЖЬГМ, НН ЯИЕЖ ЫИЦВЦИГМ.

Решение. Слову из двух одинаковых букв НН может соответствовать в открытом тексте только слово ЕЁ (напомним, Е и Ё при шифровании не различались). Итак, при расшифровывании нужно Н заменить на Е (Ё).

И у нас есть информация о ключе зашифрования: 5a+b=12 (\mod 31).

Обратим внимание на третью и четвертую буквы второго слова. Заметим, что наиболее вероятной буквой после Е является Н, биграмма ЕН встречается в русских осмысленных текстах примерно в два раза чаще, чем следующие по частоте биграммы с буквой Е: ЕР, ЕC, ЕЛ . С учетом удвоения буквы тем более вероятно, что символу Я шифрованного текста соответствует буква Н открытого текста.

Конечно, исследуемый текст может оказаться особенным, исключительным. И наша гипотеза может оказаться неверной. В таком случае мы придем к противоречию, к неосмысленному тексту, и нам придется вернуться к началу задачи и проверять другие гипотезы. Однако мы начнем с проверки наиболее вероятной гипотезы: Н\rightarrowЯ. На языке сравнений наша гипотеза записывается так: 12a+b = 30(\mod 31).

Вычитая из второго сравнения первое, получаем: 7a=18(\mod 31). Из этого сравнения найдем a. Воспользуемся расширенным алгоритмом Евклида. Имеем:

31=4\cdot 7+3,\qquad 7=2\cdot 3+1.

Из последнего равенства: 1=7-2\cdot 3, из первого равенства 3=31-4\cdot 7, и 1=7-2\cdot (31-4\cdot 7)=-2\cdot 31+9\cdot 7. Следовательно, 7^{-1}=9 (\mod 31), и a = 9\cdot 18 = 7 (\mod 31). Теперь b=12-5a=12-5\cdot 7=-23=8(\mod 31).

Мы нашли ключ шифрования. Чтобы расшифровать сообщение, зашифрованное применением отображения C=aP+b (\mod 31), нужно выразить P через C: P=sC+t(\mod 31), где s=a^{-1}(\mod 31) есть обратное к a по модулю 31 число, а t=-a^{-1}b. Так как число 31 простое, то s и t находятся также с помощью расширенного алгоритма Евклида: s=9, t=21.

Теперь мы можем проводить расшифрование. Букве И соответствует номер 8, и 9\cdot 8+21=93=0 (\mod 31), так что букве И в шифртексте соответствует буква А в открытом тексте. Подведем итог предыдущим рассуждениям. Символы шифртекста запишем строчными буквами, а уже найденные буквы открытого текста – прописными. Мы имеем:

вНтжхшАавб-аЕННжьгм, ЕЕ НАеж ыАцвцАгм.

Продолжим вычисления. Буква е имеет номер 5, и 9\cdot 5+21=66=4(\mod 31), а 4 - это номер буквы Д. Буква ж имеет номер 6, 9\cdot 6+21=75=13(\mod 31), а это номер буквы О. И мы знаем третье слово полностью: НАДО. Вычисляем букву открытого текста, зашифрованную символом ц: это Щ. Запишем результаты:

вНтОхшАавб-аЕННОьгм, ЕЕ НАДО ыАЩвЩАгм.

Тактически правильно будет найти буквы открытого текста, зашифрованные символами г и м. Вычисления дают: г\rightarrowТ,м\rightarrowЬ. И мы можем "проявить" еще часть текста:

вНтОхшАавб-аЕННОьТЬ, ЕЕ НАДО ыАЩвЩАТЬ.

Теперь уже последнее слово легко и угадать. Но все же вычислим еще две буквы. Действительно, ы\rightarrowЗ,в\rightarrowИ, последнее слово ЗАЩИЩАТЬ. Кроме того, мы узнали еще часть первого слова. Итог этого этапа:

ИНтОхшАаИб-аЕННОьТЬ, ЕЕ НАДО ЗАЩИЩАТЬ.

Далее, а\rightarrowЦ,ь\rightarrowС, что позволяет записать второе слово: ЦЕННОСТЬ. Легко вычислить и остальные буквы.

Ответ: ИНФОРМАЦИЯ-ЦЕННОСТЬ, ЕЕ НАДО ЗАЩИЩАТЬ.

Евгений Шаров
Евгений Шаров

как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами?

Юлия Мышкина
Юлия Мышкина

Обучение с персональным тьютором осуществляется по Скайпу или посредством переписки?

Анна Ладик
Анна Ладик
Россия, А, Университет, 2012
Паулус Шеетекела
Паулус Шеетекела
Россия, ТГТУ, 2010