3.1. Моноалфавитные шифры

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

3.1.1. Шифр Цезаря

Известным примером простого шифра замены является шифр Цезаря. Процедура шифрования состоит в следующем (рис. 3.1). Записывают все буквы латинского алфавита в стандартном порядке:

$$ A B C D E \dots Z. $$

Делают циклический сдвиг влево, например на три буквы, и записывают все буквы во втором ряду, начиная с четвёртой буквы $D$. Буквы первого ряда заменяют соответствующими (как показано стрелкой на рисунке) буквами второго ряда. После такой замены слова не распознаются теми, кто не знает ключа. Ключом $K$ является первый символ сдвинутого алфавита.

$$ \begin{array}{ccccccccccc} \text{A} & \text{B} & \text{C} & \text{D} & \text{E} & & \text{V} & \text{W} & \text{X} & \text{Y} & \text{Z} \\ \downarrow & \downarrow & \downarrow & \downarrow & \downarrow & \dots & \downarrow & \downarrow & \downarrow & \downarrow & \downarrow \\ \text{D} & \text{E} & \text{F} & \text{G} & \text{H} & & \text{Y} & \text{Z} & \text{A} & \text{B} & \text{C} \\ \end{array} $$
Рис. 3.1 — Шифр Цезаря

Пример. В русском языке сообщение изучайтекриптографию посредством шифрования с ключом $K = \text{\texttt{г}}$ (сдвиг вправо на 3 символа по алфавиту) преобразуется в лкцъгмхзнултхсёугчлб.

Недостатком любого шифра замены является то, что в шифрованном тексте сохраняются все частоты появления букв открытого текста и корреляционные связи между буквами. Они существуют в каждом языке. Например, в русском языке чаще всего встречаются буквы $A$ и $O$. Для дешифрования криптоаналитик имеет возможность прочитать открытый текст, используя частотный анализ букв шифртекста. Для «взлома» шифра Цезаря достаточно найти одну пару букв – одну замену.

3.1.2. Аддитивный шифр перестановки

Рисунок 3.2 поясняет аддитивный шифр перестановки на алфавите. Все 26 букв латинского алфавита нумеруют по порядку от 0 до 25. Затем номер буквы меняют в соответствии с уравнением:

$$ y = x + b \mod 26, $$

где $x$ – прежний номер, $y$ – новый номер, $b$ – заданное целое число, определяющее сдвиг номера и известное только легальным пользователям. Очевидно, что шифр Цезаря является примером аддитивного шифра.

$$ \begin{array}{ccccccccccc} \text{A} & \text{B} & \text{C} & \text{D} & \text{E} & & \text{V} & \text{W} & \text{X} & \text{Y} & \text{Z} \\ \downarrow & \downarrow & \downarrow & \downarrow & \downarrow & \dots & \downarrow & \downarrow & \downarrow & \downarrow & \downarrow \\ 0 & 1 & 2 & 3 & 4 & & 21 & 22 & 23 & 24 & 25 \\ \downarrow & \downarrow & \downarrow & \downarrow & \downarrow & \dots & \downarrow & \downarrow & \downarrow & \downarrow & \downarrow \\ 3 & 4 & 5 & 6 & 7 & & 24 & 25 & 0 & 1 & 2 \\ \downarrow & \downarrow & \downarrow & \downarrow & \downarrow & \dots & \downarrow & \downarrow & \downarrow & \downarrow & \downarrow \\ \text{D} & \text{E} & \text{F} & \text{G} & \text{H} & & \text{Y} & \text{Z} & \text{A} & \text{B} & \text{C} \\ \end{array} $$
Рис. 3.2 — Шифр Цезаря как пример аддитивного шифра

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

Аддитивный шифр является частным случаем аффинного шифра. Правило шифрования сообщения имеет вид

$$ y = a x + b \mod n. $$

Здесь производится умножение номера символа $x$ из алфавита, $x\in {\mathbb{}}\{ 0, 1, 2, \dots, N \leq n-1 \}$, на заданное целое число $a$ и сложение с числом $b$ по модулю целого числа $n$. Ключом является $K = (a, b)$.

Расшифрование осуществляется по формуле:

$$ x = (y - b) a^{-1} \mod n. $$

Чтобы обеспечить обратимость в этом шифре, должен существовать единственный обратный элемент $a^{-1}$ по модулю $n$. Для этого должно выполняться условие $\gcd(a,n) = 1$, то есть $a$ и $n$ должны быть взаимно простыми числами ($\gcd$ – сокращение, образованное от термина greatest common divisor – наибольший общий делитель, $\text{НОД}$). Очевидно, что для «взлома» такого шифра достаточно найти две пары букв – две замены.