а | б | в | г | д | е | ё | ж | з | и | й | к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | |
б | в | г | д | е | ё | ж | з | и | й | к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | а | |
в | г | д | е | ё | ж | з | и | й | к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | а | б | |
г | д | е | ё | ж | з | и | й | к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | а | б | в | |
д | е | ё | ж | з | и | й | к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | а | б | в | г | |
е | ё | ж | з | и | й | к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | а | б | в | г | д | |
И т.д. до 33-ей строки |
Первая строка имеет цифровой ключ «0» и заполняется всеми символами по алфавиту, вторая имеет цифровой ключ «1» и заполняется теми же символами, сдвинутыми вправо на один символ по кругу, и далее k - ая имеет цифровой ключ «k -1» и заполняется теми же символами, сдвинутыми вправо на (k -1) символ по кругу.
Таблица Вижинера используется для зашифрования и расшифрования. Она имеет два входа: верхнюю строку подчеркнутых символов, используемую для считывания очередной буквы исходного открытого текста; крайний левый столбец ключа. Ключ представляет собой последовательность цифр или слово (чтобы ключ легче было запомнить), в последнем случае буквы ключевого слова заменяют на их порядковые номера в алфавите.
Осуществляется это следующим образом. Из полной таблицы выбирается первая строка и те строки, первые буквы которых соответствуют буквам ключа. Первой размещается первая строка, а под нею - строки, соответствующие буквам ключа в порядке следования этих букв в ключе шифрования. Пример такой рабочей матрицы для ключа «книга» приведен в таблице 5.
Таблица 5 - Рабочая матрица шифрования для ключа «книга»
а | б | в | г | д | е | ё | ж | з | и | й | к | л | м | н | о | п | р | с | т | у | Ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я |
к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | а | б | в | г | д | е | ё | ж | з | и | й |
н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | а | б | в | г | д | е | ё | ж | з | и | й | к | л | м |
и | й | к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | а | б | в | г | д | е | ё | ж | з |
г | д | е | ё | ж | з | и | й | к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я | а | б | в |
а | б | в | г | д | е | ё | ж | з | и | й | к | л | м | н | о | п | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я |
При шифровании исходного сообщения его выписывают в строку, а под ним записывают ключевое слово. Если ключ оказался короче сообщения, то его циклически повторяют. В процессе шифрования очередная буква шифртекста находится на пересечении столбца, определяемого шифруемой буквой, и строки, определяемой значением ключа.
Пусть, например, требуется зашифровать сообщение:
«максимально допустимой ценой».
В соответствии с первым правилом записываем под буквами шифруемого текста буквы ключа. Получаем (таблица 6):
Таблица 6 – Первый этап шифрования для ключа «книга»
м | а | к | с | и | м | а | л | ь | н | о | д | о | п | у | с | т | и | м | о | й | ц | е | н | о | й |
к | н | и | г | а | к | н | и | г | а | к | н | и | г | а | к | н | и | г | а | к | н | и | г | а | к |
Дальше осуществляется непосредственное шифрование в соответствии со вторым правилом, а именно: берем первую букву шифруемого текста (М) и соответствующую ей букву ключа (К); по букве шифруемого текста (М) входим в рабочую матрицу шифрования и выбираем под ней букву, расположенную в строке, соответствующей букве ключа (К),— в нашем примере такой буквой является Ч; выбранную таким образом букву помещаем в зашифрованный текст. Эта процедура циклически повторяется до зашифрования всего текста.
Эксперименты показали, что при использовании такого метода статистические характеристики исходного текста практически не проявляются в зашифрованном сообщении. Нетрудно видеть, что замена по таблице Вижинера эквивалентна простой замене с циклическим изменением алфавита, т.е. здесь мы имеем полиалфавитную подстановку, причем число используемых алфавитов определяется числом букв в слове ключа. Поэтому стойкость такой замены определяется произведением стойкости прямой замены на число используемых алфавитов, т.е. число букв в ключе.
Расшифровка текста производится в следующей последовательности: над буквами зашифрованного текста последовательно надписываются буквы ключа, причем ключ повторяется необходимое число раз. В строке подматрицы Вижинера, соответствующей букве ключа отыскивается буква, соответствующая знаку зашифрованного текста. Находящаяся под ней буква первой строки подматрицы и будет буквой исходного текста. Полученный текст группируется в слова по смыслу.
Нетрудно видеть, что процедуры как прямого, так и обратного преобразования являются строго формальными, что позволяет реализовать их алгоритмически. Более того, обе процедуры легко реализуются по одному и тому же алгоритму.
Одним из недостатков шифрования по таблице Вижинера является то, что при небольшой длине ключа надежность шифрования остается невысокой, а формирование длинных ключей сопряжено с трудностями.
Нецелесообразно выбирать ключи с повторяющимися буквами, так как при этом стойкость шифра не возрастает. В то же время ключ должен легко запоминаться, чтобы его можно было не записывать. Последовательность же букв не имеющих смысла, запомнить трудно.
С целью повышения стойкости шифрования можно использовать усовершенствованные варианты таблицы Вижинера. Рассмотрим один из них. Во всех (кроме первой) строках таблицы буквы располагаются в произвольном порядке. В качестве ключа используется случайность последовательных чисел. Из таблицы Вижинера выбираются десять произвольных строк, которые кодируются натуральными числами от 0 до 10. Эти строки используются в соответствии с чередованием цифр в выбранном ключе.
Шифры Вижинера с коротким периодическим ключом используются и в наши дни в системах шифрования, от которых не требуется высокая криптостойкость. Так, например они использовались в программе-архиваторе ARJ и в программе Word версии 6.
С развитием математики необходимость в таблицах шифрования отпала. Если заменить буквы на числа, то операции шифрования и дешифрования легко выражаются простыми математическими формулами. Так в шифре Вижинера используются операции циклического или модульного сложения (при шифровании) и вычитания (при дешифровании).
Пусть ключевая последовательность системы Вижинера имеет длину r, тогда ключ r - алфавитной подстановки, который является строкой букв или цифр можно представить в виде последовательности подстановок
π =( π0, π1, … , πr-1),
Функция шифрования Вижинера Еπ: х → y преобразует открытый текст х=(х0,х1,х2,…,хn-1) в шифртекст y = (y0, y1, y2, … , yn-1) согласно правилу:
y = (y0, y1, y2, … , yn-1) = (π0(х0), π1(х1), … , πn-1(хn-1)),
гдеπi =π(i mod r).
Диск Альберти
Многоалфавитные шифры замены предложил и ввел в практику криптографии Леон Батист Альберти, который также был известным архитектором и теоретиком искусства. Он же впервые выдвинул идею повторного шифрования, которая в виде идеи многократного шифрования лежит в основе всех современных шифров с секретным ключом. Кроме шифра многоалфавитной замены, Альберти также подробно описал устройства для его реализации. Диск Альберти представляет собой систему из внешнего неподвижного и внутреннего подвижного дисков, на которые нанесены символы алфавита и цифры. На внешнем в алфавитном порядке, на внутреннем в произвольном. Ключом шифрования являются порядок букв на внутреннем диске и начальное положение внутреннего диска относительно внешнего. После шифрования слова внутренний диск сдвигался на один шаг. Количество алфавитов r в нем равно числу символов на диске.