Шифр Цезаря



Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования. Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее. Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.
Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и все ещё имеет современное приложение в системе ROT13. Как и все моноалфавитные шифры, шифр Цезаря легко взламывается и не имеет практически никакого применения на практике.



Кратко об истории шифра


Шифр Цезаря называют в честь Юлия Цезаря, который согласно «Жизни двенадцати цезарей» Светония использовал его со сдвигом 3, чтобы защищать военные сообщения. Хотя Цезарь был первым зафиксированным человеком, использующим эту схему, другие шифры подстановки, как известно, использовались и ранее. Если у него было что-либо конфиденциальное для передачи, то он записывал это шифром, то есть так изменял порядок букв алфавита, что нельзя было разобрать ни одно слово. Если кто-либо хотел дешифровать его и понять его значение, то он должен был подставлять четвертую букву алфавита, а именно, D, для A, и так далее, с другими буквами. Гай Светоний Транквилл Жизнь двенадцати цезарей, Книга первая, гл. 56

Его племянник, Август, также использовал этот шифр, но со сдвигом вправо на один, и он не повторялся к началу алфавита: Всякий раз, когда он записывал шифром, он записал B для A, C для B, и остальной части букв на том же самом принципе, используя AA для X. Гай Светоний Транквилл Жизнь двенадцати цезарей, Книга вторая, гл. 88

Есть доказательства, что Юлий Цезарь использовал также и более сложные схемы. Неизвестно, насколько эффективным шифр Цезаря был в то время, но, вероятно, он был разумно безопасен, не в последнюю очередь благодаря тому, что большинство врагов Цезаря были неграмотными, и многие предполагали, что сообщения были написаны на неизвестном иностранном языке. Нет никаких свидетельств того времени касательно методов взлома простых шифров подстановки. Самые ранние сохранившиеся записи о частотном анализе — это работы Ал-Кинди 9-го века об открытии частотного анализа. Шифр Цезаря со сдвигом на один используется на обратной стороне мезузы, чтобы зашифровать имена Бога. Это может быть пережитком с раннего времени, когда еврейскому народу не разрешили иметь мезузы. В XIX веке личная секция рекламных объявлений в газетах иногда использовалась, чтобы обмениваться сообщениями, зашифрованными с использованием простых шифров. Кан (1967) описывает случаи когда любители участвовали в секретных коммуникациях, зашифрованных с использованием шифра Цезаря в «Таймс»[8]. Даже позднее, в 1915, шифр Цезаря находил применение: российская армия использовала его как замену для более сложных шифров, которые оказались слишком сложными для войск; у немецких и австрийских криптоаналитиков были лишь небольшие трудности в расшифровке этих сообщений.



Пример


Шифрование с использованием ключа . Буква «Е» «сдвигается» на три буквы вперёд и становится буквой «З». Твёрдый знак, перемещённый на три буквы вперёд, становится буквой «Э», буква «Я», перемещённая на три буквы вперёд, становится буквой «В», и так далее. :

Исходный алфавит:АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
Шифрованный: ГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВ

Оригинальный текст:

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

Шифрованный текст получается путём замены каждой буквы оригинального текста соответствующей буквой шифрованного алфавита:

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



Модификации


Шифр Гронсфельдаполиалфавитный подстановочный шифр создан графом Гронсвельдом (руководителем первой дешифровальной службы Германии) в XVII веке. Шифр можно считать усовершенствованием шифра Цезаря (надежность) и Виженера / Бофора (скорость).

Пусть дан исходный текст: C = «GRONSFELD» и ключ: K = «2015»

Ключ

Длина клера — 9 символов, значит и длина ключа также должна равнятся 9 символам. K = «201520152»

Шифрование • M1 = «G».
• y = 6 (y — номер столбца)
• K1 = 2
• С1 = T2 6 = «I» C += «I» (C = «I»)
• M1 = «R».
• y = 17
• K2 = 0
• С2 = T0 6 = «R» C += «I» (C = «IR»)
. . . . . . . . .
• m9 = «D»
• y = 3
• K9 = 2
• С9 = T2 3 = «F»
C += «I» (C = «IRPSUFFQF»)
Шифротекст (C) — «IRPSUFFQF»

Дешифрование
• C1 = «I».
• x = K1 = 2
• y = 6
• M += «G» (M = «G»)
• C2 = «R»
• x = K2 = 0
• y = 17
• M += «R» (M = «GR»)
. . . . . . . . .
• C10 = «H»
• x = K9 = 2
• y = 3
• M += «F» (M = «GRONSFELD»)
Дешифрованный текст (M) — «GRONSFELD»



Реализация на Python: Шифр Гронсфельда

A = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' * 2  # алфавит

def f(mc, k, op):  
   k *= len(mc) // len(k) + 1  
   return ''.join([A[A.index(j) + int(k[i]) * op] for i, j in enumerate(mc)])  

def encrypt(message, key):  
   return f(message, key, 1)  

def decrypt(ciphertext, key):  
   return f(ciphertext, key, -1)  

print(encrypt('GRONSFELD', '2015'))  # шифрование  
print(decrypt('`IRPSUFFQF', '2015'))  # расшифровывание



Инструменты

Если нет желания «ручками» расшифровать сообщение , то можно использовать онлайн дешифраторы: http://planetcalc.ru/1434/ - отличительная особенность: расшифровка ROT0 – ROT32 (ROT0 – ROT25) , http://www.dcode.fr/caesar-cipher.
Есть оффлайн дешифратор CrypTool (Download: https://www.cryptool.org/ct1download/SetupCrypTool_1_4_31_Beta6b_r3670_VS2008_en.exe).



Примеры тасков

1) Расшифровать сообщение (used key = 3): IOVNKXIGKYGX
Решение
Ключ известен, используем online decoder, получаем: FLSKHUFDHVDU. Текст получен, но , как видно, он зашифрован, повторяем операцию.
Получаем: CIPHERCAESAR