Криптографические этюды: шифр Атбаш и шифр Цезаря

Развитие шифров исторически шло одновременно с развитием письменности. В первую очередь они нужны были правителям, прибегавших к услугам лазутчиков, дипломатам, состоявшим у них на службе, служителям культа, стремившихся ограничить доступ непосвященных к эзотерическим религиозным секретам, а также криминальному миру, стремившемуся уже на заре человечества соблюдать скрытность и хранить в тайне преступные замыслы. Цель данного цикла статей: во-первых, совершить исторический экскурс в криптографию, во-вторых, дать читателям элементарные навыки в шифровании и терминологии данной отрасли прикладных знаний.

С одной стороны, эти криптоалгоритмы не представляют ничего серьезного, и, не подпадая даже под классификацию по стойкости (другими словами, стойкость их по 10-балльной шкале нулевая), применение их не требует "лицензирования" спецслужб. Эти шифры не вызовут у последних ничего, кроме улыбки. В двенадцать лет я вскрывал подобные шифры за пару часов "на бумажке" методом частотной селекции. Это дань уважения "седой древности", и упражнение для ума. Процитирую "Философские опыты" Монтеня: "Невежество бывает двоякого рода: одно, безграмотное, предшествует науке; другое, чванное, следует за нею".

С другой стороны, до меня дошли сведения, что подобные шифры начали всерьез преподавать в БГУ и даже проводить их криптоанализ!

Предисловие
Криптоалгоритмы, изложенные в статье, являются шифрами простой (однозначной) замены.

Шифром замены (подстановки) называется криптографическое преобразование, при котором символы исходного текста заменяются на символы шифротекста по какому-либо закону криптографического преобразования, но позиции символов в шифротексте не изменяются.

Для примеров, в статье множество, на котором реализованы алгоритмы, - это расширенная таблица ASCII (256 символов).

Последнее время стало модным говорить о битности шифров или размере ключа. Здесь (в криптоалгоритмах, описанных в статье) наличие ключа не предусмотрено. Криптостойкость алгоритмов оценивается по числу операций, необходимых для вычисления ключа исходя из шифротекста и соответствующего открытого текста. "Верхняя граница оценки" (число возможных ключей) изложенных в статье алгоритмов равна одному биту (шифры-то однозначной замены).

Шифр Атбаш
Обратимся к "бестселлеру всех времен и народов". Есть место в Библии, содержащее пример криптограммы. Книга пророка Иеремии глава 25, стих 26 содержит текст: "И всех царей севера, близких друг к другу и дальних, и все царства земные, которые - на лице земли, а царь Сессаха выпьет после них". Слово "Сессах" не является ни ошибкой, ни искажением библейского текста, хотя такого царя или царства в истории не существовало. Священные тексты древних иудеев шифровались шифром простой замены "атбаш". Алгоритм этого шифра прост: первая буква алфавита заменялась на последнюю, вторая - на предпоследнюю в алфавите и т.д. После дешифрации на языке оригинала (для успешной дешифрации необходимо знать язык сообщения) слова "Сессах" получается "Вавилон".

В завершение заметки исходный текст на С криптоалгоритма атбаш:
char* Atbash(char* toCode)
{

for (int i = 0; toCode[i] != 0; i++)
{
toCode[i]= (256 — toCode[i]);
}
return toCode;
}

По смыслу алгоритма функция, реализующая шифровку и зашифровку, одна и та же.

Шифр Цезаря
Гай Юлий Цезарь, римский император, в то же время известен как изобретатель (не могу сказать "разработчик") своего шифра, поручавшего Марку Туллию Цицерону и своим близким шифровать послания и использовать 50-буквенный алфавит.

Цитирую Гая Светония: "Существуют и его письма к Цицерону и письма к близким о домашних делах: в них, если нужно было сообщить что-нибудь негласно, он пользовался тайнописью, то есть менял буквы так, чтобы из них не складывалось ни одного слова. Чтобы разобрать и прочитать их, нужно читать всякий раз четвертую букву вместо первой, например, D вместо А и так далее".

Выражаясь современной терминологией, номер каждого символа при шифровании увеличивался на 3: А на D, B на E и т.д. Знаменитая фраза Цезаря VENI VIDI VICI (пришел, увидел, победил), посланная сенату после однодневной войны с Фарнаком царем Понта, после зашифровки превратилась бы в SBKF SFAF SFZF. Для уточнения стоит отметить, что Гай Светоний ошибался, давая этому методу название тайнописи. Тайнопись - это сокрытие самого факта передачи сообщения, изложенное Светонием называется, в современной терминологии, шифром однозначной замены.

Криптоалгоритм будет реализован на ASCII-таблице. Для корректной реализации шифра еще потребуется нормализация, проводимая для того, чтобы множества совпадали и, естественно, размеры множеств открытого и шифротекста были равны (т.н. гомоморфизм). Для этого делается следующее: если сумма текущего номера и тройки выходит за пределы алфавита (размера множества разрешенных символов), то отсчет букв начинается сначала. Исходный текст на С криптоалгоритма Цезаря:
// смещение по алфавиту
const int N = 3;
char* Encipher(char* toCode)
{
for(int i=0; toCode[i] != 0; i++)
{
int tmp;
tmp = (toCode[i] + N);
// нормализация
if (tmp >= 256) tmp -= 256;
toCode[i] = tmp;
}
return toCode;
}
char* Decipher(char* toEncode)
{
for(int i = 0; toEncode[i] != 0; i++)
{
int tmp;
tmp = (toEncode[i] — N);
// нормализация
if (tmp < 0) tmp += 256;
toEncode[i] = tmp;
}
return toEncode;
}

Black Prince


Компьютерная газета. Статья была опубликована в номере 18 за 2000 год в рубрике разное :: мелочи жизни

©1997-2024 Компьютерная газета