Рассмотрим, как зашифровать сообщение методом замены (другими словами - методом подстановки). Вначале используем шифр Цезаря. Предположим, что требуется зашифровать сообщение:
Не представляет труда вскрыть такую шифрограмму перебором всех возможных ключей.
Замена может осуществляться на символы другого алфавита и с более сложным ключом (алгоритмом замены). Для простоты опять приведем лишь начальные части алфавитов.
Линии показывают порядок замены букв русского алфавита на буквы латинского алфавита.
В результате такого шифрования получится криптограмма:
CDB EFFE.
Рациональнее использованный в последнем случае ключ записать в виде таблицы:
A Б В Г Д Е EFACDB
При шифровании буквы могут быть заменены числами (в простейшем случае порядковыми номерами букв в алфавите). Тогда наша шифровка будет выглядеть так:
4-5-6-1-2-2-1.
Замена символов открытого текста может происходить на специальные символы, например на пляшущих человечков, как в рассказе К.Дойля.
Длинные сообщения, полученные методом одноалфавитной замены (другое название - шифр простой однобуквенной замены), раскрываются с помощью таблиц относительных частот.
Для этого подсчитывается частота появления каждого символа, делится на общее число символов в шифрограмме. Затем с помощью таблицы относительных частот определяется, какая была сделана замена при шифровании.
Повысить криптостойкость позволяют многоалфавитные шифры замены (или шифры многозначной замены). При этом каждому символу открытого алфавита ставят в соответствие не один, а несколько символов шифровки.
Ниже приведен фрагмент многоалфавитного ключа замены.
А | Б | В | Г | Д | Е |
18 | 7 | 5 | 19 | 21 | 2 |
12 | 4 | 90 | 35 | 83 | 15 |
48 | 14 | 22 | 10 | 99 | 32 |
Здесь, как и прежде, показана лишь часть таблицы для того, чтобы изложить лишь идею метода.
Каждая строка в этой таблице соответствует одному шифру простой замены (типа шифра Цезаря). При шифровании сообщения его записывают в строку, а под ним помещают ключ.
Если ключ оказывается короче сообщения, то ключ циклически повторяют. Шифровку получают, находя символ в матрице букв шифрограммы.
Символ шифрограммы находится на пересечении столбца с буквой открытого текста и строки с соответствующей буквой ключа.
Т аБпица Виженера | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Строка букв открытого текста ^ Матрица букв шифрограмм |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Столбец ключа |
ДЕКАНАТ | |||||||
Н | А | П | Е | Р | В | О | |
М | К | У | Р | С | Е | ||
Т | Я | Ж | Е | Л | О | У | |
Ч | И | Т | Ь | С | Я | Т | |
О | Л | Ь | К | О | П | Е | |
Р | В | Ы | Е | Ч | Е | Т | |
Ы | Р | Е | Г | О | Д | А | |
Д | Е | К | А | Н | А | Т |
Например, запись открытого текста по строкам может производиться в таком порядке: 48127653,а считывание криптограммы может происходить по столбцам в следующем порядке: 81357642.
Методы замены и перестановки по отдельности не обеспечивают необходимую криптостойкость. Поэтому их используют совместно, а также в сочетании с аддитивным методом.
При шифровании аддитивным методом вначале открытый текст шифруют методом замены, преобразуя каждую букву в число, а затем к каждому числу добавляют секретную гамму (псевдослучайную числовую последовательность).
В ЭВМ преобразование открытого текста происходит естественным путем, так как каждый символ кодируется двоичным числом. Вид этого преобразования зависит от используемой операционной системы.
Для определенности будем считать, что открытое сообщение в ЭВМ кодируется с помощью кодовой таблицы CP-1251 (операционная система Windows). Кроме того, будем считать, что секретная гамма добавляется к открытому тексту по правилу сложения по модулю два без переносов в старшие разряды (логическая операция Исключающее ИЛИ).
Результаты всех преобразований поместим в таблицу.
Открытый текст | Г | д | Е | А | Б | Б | А |
Десятичное число | 195 | 196 | 197 | 192 | 193 | 193 | 192 |
Дмнчное число | 11000011 | 11000100 | 11000101 | 11000000 | 11000001 | 11000001 | 11000000 |
Гамма | 32 | 18 | 36 | 11 | 61 | 23 | 3 |
Гамма (двоичная) | 00100000 | 0001 СОЮ | 00100100 | 00001011 | 00111101 | 00010111 | 00000011 |
Сложение | 11100011 | 11010110 | 11100001 | 11001011 | 11111100 | 11010110 | 11000011 |
Десятичное число | 227 | 214 | 225 | 203 | 252 | 214 | 195 |
Шифрограмма | Г | ц | 6 | л | ц | г |
Кроме русских букв будут присутствовать латинские буквы, знаки препинания, управляющие символы.