For faster navigation, this Iframe is preloading the Wikiwand page for Аффинный шифр.

Аффинный шифр

Материал из Википедии — свободной энциклопедии

Аффинный шифр — это частный случай более общего моноалфавитного шифра подстановки. К шифрам подстановки относятся также шифр Цезаря, ROT13 и Атбаш. Поскольку аффинный шифр легко дешифровать, он обладает слабыми криптографическими свойствами[1].

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

где модуль — размер алфавита, а пара и — ключ шифра. Значение должно быть выбрано таким, что и взаимно простые числа. Функция расшифрования[2]

где — обратное к число по модулю . То есть оно удовлетворяет уравнению[2]

Обратное к число существует только в том случае, когда и — взаимно простые. Значит, при отсутствии ограничений на выбор числа расшифрование может оказаться невозможным. Покажем, что функция расшифрования является обратной к функции шифрования

Количество возможных ключей для аффинного шифра можно записать через функцию Эйлера как [1].

Примеры шифрования и расшифрования

[править | править код]

В следующих примерах используются латинские буквы от A до Z, соответствующие им численные значения приведены в таблице.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Шифрование

[править | править код]

В этом примере необходимо зашифровать сообщение «ATTACK AT DAWN», используя упомянутое выше соответствие между буквами и числами, и значения , и , так как в используемом алфавите 26 букв. Только на число наложены ограничения, так как оно должно быть взаимно простым с 26. Возможные значения : 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 и 25[3]. Значение может быть любым, только если не равно единице, так как это сдвиг шифра. Итак, для нашего примера функция шифрования . Первый шаг шифрования — запись чисел, соответствующих каждой букве сообщения.

сообщение A T T А C K A T D A W N
0 19 19 0 2 10 0 19 3 0 22 13

Теперь, для каждого значения найдем значение . После нахождения значения для каждого символа возьмем остаток от деления на 26. Следующая таблица показывает первые четыре шага процесса шифрования.

сообщение A T T А C K A T D A W N
0 19 19 0 2 10 0 19 3 0 22 13
4 61 61 4 10 34 4 61 13 4 70 43
4 9 9 4 10 8 4 9 13 4 18 17

Последний шаг процесса шифрования заключается в подстановке вместо каждого числа соответствующей ему буквы. В этом примере шифротекст будет «EJJEKIEJNESR». Таблица ниже показывает все шаги по шифрованию сообщения аффинным шифром.

сообщение A T T А C K A T D A W N
0 19 19 0 2 10 0 19 3 0 22 13
4 61 61 4 10 34 4 61 13 4 70 43
4 9 9 4 10 8 4 9 13 4 18 17
шифротекст E J J E K I E J N E S R

Расшифрование

[править | править код]

Для расшифрования возьмем шифротекст из примера с шифрованием. Функция расшифрования будет , где , и .

Замечание: если каждая , то функция расшифрования принимает вид . (Точно так же, как и в обозреваемом примере, но разберём общий вариант)

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

шифротекст E J J E K I E J N E S R
4 9 9 4 10 8 4 9 13 4 18 17

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

шифротекст E J J E K I E J N E S R
4 9 9 4 10 8 4 9 13 4 18 17
234 279 279 234 288 270 234 279 315 234 360 351
0 19 19 0 2 10 0 19 3 0 22 13

Последний шаг операции расшифрования для шифротекста — поставить в соответствие числам буквы. Сообщение после расшифрования будет «ATTACKATDAWN». Таблица ниже показывает выполнение последнего шага.

шифротекст E J J E K I E J N E S R
4 9 9 4 10 8 4 9 13 4 18 17
234 279 279 234 288 270 234 279 315 234 360 351
0 19 19 0 2 10 0 19 3 0 22 13
сообщение A T T A C K A T D A W N


programming language

Криптоанализ

[править | править код]

Так как аффинный шифр является по сути моноалфавитным шифром замены, то он обладает всеми уязвимостями этого класса шифров. Шифр Цезаря — это аффинный шифр с , что сводит функцию шифрования к простому линейному сдвигу[1].

В случае шифрования сообщений на русском языке (т.е. ) существует 297 нетривиальных аффинных шифров, не учитывая 33 тривиальных шифра Цезаря. Это число легко посчитать, зная, что существует всего 20 чисел взаимно простых с 33 и меньших 33 (а это и есть возможные значения ). Каждому значению могут соответствовать 33 разных дополнительных сдвига (значение ); то есть всего существует 20*33 или 660 возможных ключей. Аналогично, для сообщений на английском языке (т.е. ) всего существует 12*26 или 312 возможных ключей[3]. Такое ограниченное количество ключей приводит к тому, что система крайне не криптостойка с точки зрения принципа Керкгоффса.

Основная уязвимость шифра заключается в том, что криптоаналитик может выяснить (путём частотного анализа[4], полного перебора[1], угадывания или каким-либо другим способом) соответствие между двумя любыми буквами исходного текста и шифротекста. Тогда ключ может быть найден путём решения системы уравнений[4]. Кроме того, так мы знаем, что и — взаимно простые, это позволяет уменьшить количество проверяемых ключей для полного перебора.

Преобразование, подобное аффинному шифру, используется в линейном конгруэнтном методе[5] (разновидности генератора псевдослучайных чисел). Этот метод не является криптостойким по той же причине, что и аффинный шифр.

Примечания

[править | править код]
  1. 1 2 3 4 S. R. Nagpaul, Surender Kumar Jain. Topics in applied abstract algebra. — AMS. — P. 137-138.
  2. 1 2 3 Johannes Buchmann. Introduction to cryptography. — Springer. — P. 95.
  3. 1 2 David Salomon. Coding for data and computer communications. — Springer. — P. 204.
  4. 1 2 Josef Pieprzyk, Thomas Hardjono, Jennifer Seberry. Fundamentals of computer security. — Springer, 2003. — P. 72-74. — 677 p.
  5. Алгоритмы: введение в разработку и анализ. — Издательский дом Вильямс. — С. 130-131.
{{bottomLinkPreText}} {{bottomLinkText}}
Аффинный шифр
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?