Полиграммные шифры
В полиграммных шифрах подстановки буквы открытого текста заменяются не по одной, а группами. Первое преимущество такого способа заключается в том, что распределение частотностей групп букв значительно более равномерное чем отдельных символов. Во-вторых для продуктивного частотного анализа требуется больший размер зашифрованного текста, так число различных групп букв значительно больше, чем просто алфавит.
Шифр Плейфера
Шифр Плейфера — ручная симметричная техника шифрования, в которой впервые использована замена биграмм. Изобретена в 1854 году Чарльзом Уитстоном, но названа именем Лорда Лайона Плейфера, который внедрил данный шифр в государственные службы Великобритании. Шифр предусматривает шифрование пар символов (биграмм) вместо одиночных символов, как в шифре подстановки и в более сложных системах шифрования Виженера.
Шифр Плейфера использует матрицу 5х5 (для латинского алфавита, для кириллического алфавита необходимо увеличить размер матрицы до 4х8), ячейки которой заполнены смешанным алфавитом (в английских текстах обычно опускается символ «Q», чтобы уменьшить алфавит, в других версиях «I» и «J» объединяются в одну ячейку). Замена затем осуществляется путём представления биграмм, как два угла прямоугольника. Два другие угла в диаграмме используются для зашифровки (более подробно см. основную статью).
Шифр Плейфера использовался в тактических целях британскими вооружёнными силами во Второй Англо-Бурской войне и в Первой мировой войне, а также австралийцами и немцами во время Второй мировой войны. Причиной использования шифра Плейфера было то, что он достаточно быстр в применении и не требует никакого специального оборудования.
Шифр Хилла
Шифр Хилла, изобретённый в 1929 году Лестером С. Хиллом, является полиграммным шифром, который может использовать большие группы с помощью линейной алгебры. Каждой букве сперва сопоставляется число.
Для латинского алфавита часто используется простейшая схема: A = 0, B =1, …, Z=25. Блок из n букв рассматривается как n-мерный вектор и умножается на n × n матрицу по модулю 26. Компоненты матрицы являются ключом, и должны быть случайными при условии, что матрица должна быть обратима в \displaystyle{ \mathbb{Z}_{26}^n }, чтобы была возможна операция расшифрования.
Шифр Хилла уязвим для атак на основе открытых текстов, потому что в нём используются линейные операции. Поэтому, для увеличения криптостойкости, в него должны быть добавлены какие-либо нелинейные операции. Комбинирование линейных операций, как в шифре Хилла, и нелинейных шагов привело к созданию подстановочно-перестановочной сети (например, сеть Фейстеля). Поэтому с определённой точки зрения можно считать современные блочные шифры, как вид полиграммных шифров.
Примечания
- Светоний, 56,6
- Лучано, Деннис; Гордон Причетт (январь 1987 г.). «Криптология: от шифров Цезаря к криптосистемам с открытым ключом». Журнал математики колледжа . 18 (1): 2–17. CiteSeerX 10.1.1.110.6123 . DOI10.2307 / 2686311 . JSTOR .
- Wobst Рейнхард (2001). Криптология разблокирована . Вайли. п. 19. ISBN 978-0-470-06064-3.
- «Взломать код» . Центральное разведывательное управление . Архивировано из оригинального 26 декабря 2020 года . Проверено 21 февраля 2017 года .
- Сингх, Саймон (2000). Кодовая книга . Якорь. С. 289-290 . ISBN 0-385-49532-3.
- Рейнка, Эдгар С. (декабрь 1962). «Классическая криптография». Классический журнал . 58 (3): 114.
- Пиепшик, Йозеф; Томас Харджоно; Дженнифер Себери (2003). Основы компьютерной безопасности . Springer. п. 6. ISBN 3-540-43101-2.
- Сингх, Саймон (2000). Кодовая книга . Якорь. С. 14–20 . ISBN 0-385-49532-3.
- Александр Полторак. «Мезуза и астрология» . chabad.org . Проверено 13 июня 2008 .
- Кан, Дэвид (1967). Взломщики кодов . С. 775–6. ISBN 978-0-684-83130-5.
- Кан, Дэвид (1967). Взломщики кодов . С. 631–2. ISBN 978-0-684-83130-5.
- Wobst Рейнхард (2001). Криптология разблокирована . Вайли. п. 20. ISBN 978-0-470-06064-3.
- Кан, Дэвид (1967). Взломщики кодов . ISBN 978-0-684-83130-5.
- Лейден, Джон (19 апреля 2006 г.). «Босс мафии уничтожен неуклюжей криптовалютой» . Регистр . Проверено 13 июня 2008 .
- «Джихадист BA полагался на шифрование времен Иисуса» . Регистр . 2011-03-22 . Проверено 1 апреля 2011 .
- Beutelspacher, Альбрехт (1994). Криптология . Математическая ассоциация Америки . С. 9–11. ISBN 0-88385-504-6.
- Beutelspacher, Альбрехт (1994). Криптология . Математическая ассоциация Америки . С. 8–9. ISBN 0-88385-504-6.
- ↑ Leighton, Albert C. (апрель 1969). «Тайное общение между греками и римлянами». Технологии и культура . 10 (2): 139–154. DOI10.2307 / 3101474 . JSTOR .
- Синьков, Авраам ; Пол Л. Ирвин (1966). Элементарный криптоанализ: математический подход . Математическая ассоциация Америки. С. 13–15. ISBN 0-88385-622-0.
- Сингх, Саймон (2000). Кодовая книга . Якорь. С. 72–77 . ISBN 0-385-49532-3.
- Саварезе, Крис; Брайан Харт (2002-07-15). «Шифр Цезаря» . Проверено 16 июля 2008 .
- Wobst Рейнхард (2001). Криптология разблокирована . Вайли. п. 31. ISBN 978-0-470-06064-3.
Перестановочные шифры
Вторая группа кодирования информации использует переустановку не символов, а фраз. При этом могут применяться разные алгоритмы и правила в зависимости от алфавита и объёма сообщения.
Более специфические системы кодирования используют подмену отдельных символов в предложении. При работе с кодировкой пользователь сразу может определить количество предложений и прописанных букв в нём.
Простая перестановка
При кодировании человек самостоятельно выбирает принцип перестановки букв или фраз. Это может быть число или направление письма. Для расшифровки потребуется узнать ключ и правило, по которому производилась замена символов в предложении или тексте.
Здесь же может применяться метод транспозиции. Каждое отдельно предложение можно записать зеркально – задом наперёд. В тексте может шифроваться по такому принципу и каждое отдельное слово или комбинироваться метод с простой простановкой фраз либо слов.
Транспонирование используется для табличного кодирования. Исходный текст записывается по вертикали. Для шифровки его оформляют по горизонтали или наоборот. Метод штакетника это упрощённый вариант транспонирования. В две строки записывается предложение. В первой строчке чётные буквы, во второй нечётные.
Одиночная перестановка по ключу
Для кодирования текст вносится в таблицу размером 9Х9. Рядом оформляется идентичная. В первой части вписывается кодовая фраза либо предложение.
Во второй каждая буква переводится в число. Кодирование производится по смещению либо заменой. Для этого применяется ключ. В результате полученный зашифрованный вид фразы выписывается построчно.
Двойная перестановка
Накладывается на одиночную. Уже закодированное сообщение шифруется ещё раз. Могут проставляться как столбцы, так и строки. Во втором случае размер таблицы намеренно подбирается больше чем при первом случае шифрования.
Маршрутная перестановка
Это усложнённый тип транспонированной таблицы. Различие заключается в направлении чтения информации в таблице.
Для раскодирования сообщения потребуется знать направление, при котором кодовое слово было скрыто. Часто применяется шахматная доска. Вместо указания направления отмечается фигура с правилом движения по полю.
Перестановка «Волшебный квадрат»
Состоит из квадрата, в клетках которого указаны последовательно натуральные числа. Метод был изобретён в Китае
Важно чтобы разрядность в натуральных числах в итоге соответствовала последовательности написания и расположению в таблице
Вращающаяся решётка
Решётка состоит из нескольких квадратов. В них заполнены цифры и есть пробелы. Метод шифрования по направлению считается перестановочным.
Расположение пустых клеток должно быть таким, что при передвижении квадратов на их месте не оставалось пробелов. Для кодирования под решётку с составленными числами подкладывается квадрат с буквами.
При перекладывании верхнего слоя и поворачивании его, в пустых клетках будет отображаться конкретная буква. Необходимо направить решётку так, чтобы в пустое окошко попала именно подходящая буква для шифруемого слова.
Шифры простой замены
В шифрах простой замены замена производится только над одним-единственным символом. Для наглядной демонстрации шифра простой замены достаточно выписать под заданным алфавитом тот же алфавит, но в другом порядке или, например, со смещением. Записанный таким образом алфавит называют алфавитом замены.
Примеры шифров простой замены
Атбаш
Шифр простой замены, использованный для еврейского алфавита и получивший оттуда своё название. Шифрование происходит заменой первой буквы алфавита на последнюю, второй на предпоследнюю (алеф (первая буква) заменяется на тав (последнюю), бет (вторая) заменяется на шин (предпоследняя); из этих сочетаний шифр и получил своё название).
Шифр Атбаш для английского алфавита:
Исходный алфавит: | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
Алфавит замены: | Z Y X W V U T S R Q P O N M L K J I H G F E D C B A |
Шифр Цезаря
Шифр ROT13, частный случай шифра Цезаря.
Шифр Цезаря — один из древнейших шифров. При шифровании каждая буква заменяется другой, отстоящей от нее в алфавите на фиксированное число позиций. Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки. Естественным развитием шифра Цезаря стал шифр Виженера.
Шифрование с использованием ключа \displaystyle{ k = 4 }:
Исходный алфавит: | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
Алфавит замены: | E F G H I J K L M N O P Q R S T U V W X Y Z A B C D |
Современным примером шифра Цезаря является ROT13. Он сдвигает каждый символ английского алфавита на 13 позиций. Используется в интернет-форумах, как средство для сокрытия спойлеров, основных мыслей, решений загадок и оскорбительных материалов от случайного взгляда.
Шифр с использованием кодового слова
Шифр с использованием кодового слова является одним из самых простых как в реализации, так и в расшифровывании. Идея заключается в том, что выбирается кодовое слово, которое пишется впереди, затем выписываются остальные буквы алфавита в своем порядке.
Шифр с использованием кодового слова WORD.
Исходный алфавит: | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
Алфавит замены: | W O R D A B C E F G H I J K L M N P Q S T U V X Y Z |
Как мы видим, при использовании короткого кодового слова мы получаем очень и очень простую замену. Мы можем использовать слово с повторяющимися буквами в качестве кодового слова, но только в том случае, если уберём из кодового слова лишние буквы, иначе это приведёт к неоднозначности расшифровки, то есть двум различным буквам исходного алфавита будет соответствовать одна и та же буква шифрованного текста.
Метод записи зашифрованных текстов
По традиции, зашифрованный текст пишут блоками (другое название «группы») по 5 символов, не учитывая пунктуацию и пробелы. Это помогает избежать ошибок при передаче шифрованного сообщения и позволяет скрыть границы слов в исходном тексте. Блок содержит 6 символов, так как раньше их было удобно передавать по телеграфу.
Безопасность шифров простой замены
Главный недостаток этого метода шифрования — это то, что последние буквы алфавита (которые имеют низкие коэффициенты при частотном анализе) имеют тенденцию оставаться в конце. Более защищённый способ построить алфавит замены состоит в том, чтобы выполнить колоночное перемещение (перемещение столбцов) в алфавите, используя ключевое слово, но это нечасто делается.
Несмотря на то, что число возможных ключей является очень большим (26! = 288.4), этот вид шифра может быть легко взломанным. При условии, что сообщение имеет достаточную длину (см. ниже), криптоаналитик может предположить значения некоторых самых распространённых букв исходя из анализа частотного распределения символов в зашифрованном тексте. Это позволяет формировать отдельные слова, которые могут быть предварительно использованы, для последующего получения более полного решения (см. частотный анализ). Согласно расстоянию уникальности английского языка 27.6 букв от зашифрованного текста должно быть достаточно, чтобы взломать шифр простой замены. На практике обычно достаточно около 50 символов для взлома, хотя некоторые шифротексты могут быть взломаны и с меньшим количеством символов, если найдены какие-либо нестандартные структуры. Но при равномерном распределении символов в тексте могут потребоваться куда более длинные шифротексты для взлома.
расстояние уникальности — термин, используемый в криптографии, обращающейся к длине оригинального шифротекста, которого должно быть достаточно для взлома шифра.
Шифрование цифр и знаков препинания
Теперь, когда мы увидели, как можно кодировать и декодировать заглавные буквы английского алфавита с помощью шифра Цезаря, возникает важный вопрос – а как насчет других символов?
Как насчет цифр, как насчет специальных символов и знаков препинания?
Так, первоначальный алгоритм шифра Цезаря не должен был иметь дело ни с чем, кроме 26 букв алфавита, ни с прописными, ни со строчными.
Поэтому типичный шифр Цезаря не шифрует пунктуацию или цифры, а переводит все буквы в строчные или прописные и шифрует только эти символы.
Итак, мы попытаемся закодировать заглавные и строчные символы так, как мы это делали в предыдущем разделе, игнорируя пока пунктуацию, а затем мы также закодируем цифры в тексте.
Для чисел мы можем выполнить кодирование одним из двух способов:
- Сдвинуть значение цифр на столько же, на сколько сдвинуты буквы алфавита, то есть при сдвиге на 3 – цифра 5 становится 8, 2 – 5, 9 – 2 и так далее.
- Сделать цифры частью алфавита, т.е. за z или Z будут следовать 0,1,2. до 9, и на этот раз наш делитель для выполнения модуля будет 36, а не 26.
Мы реализуем наше решение, используя первую стратегию. Кроме того, на этот раз мы реализуем наше решение в виде функции, принимающей в качестве параметра значение смещения (которое служит ключом в Cesar Encryption).
Мы реализуем 2 функции: cipher_encrypt() и cipher_decrypt().
Квантовая криптография
Квантовая криптография — защита данных построенная на принципах квантовой физики. Квантовое шифрование основано на математическом доказательстве того, что ключи не могут быть взломаны.
Здесь используется протокол квантового распределения ключа BB84. Для кодирования данных используются четыре квантовых состояния носителей информации (двухуровневая система). Двухуровневая система: кубит — квантовый бит.
Кодирование состояний по протоколу BB84:
Кодирование состояний по протоколу BB84
Это считается безопасным для установления связи и реализации криптографического протокола. Благодаря этому две стороны могут создать общий закрытый ключ.
Шифр Цезаря в Python на примере английского алфавита
Прежде чем мы погрузимся в определение функций для процесса шифрования и расшифровки шифра Цезаря в Python, мы сначала рассмотрим две важные функции, которые мы будем использовать в процессе – chr() и ord().
Важно понимать, что алфавит в том виде, в котором мы его знаем, хранится в памяти компьютера по-разному. Сам компьютер не понимает алфавит английского языка или другие символы. Сам компьютер не понимает алфавит английского языка или другие символы
Сам компьютер не понимает алфавит английского языка или другие символы.
Каждый из этих символов представлен в памяти компьютера с помощью числа, называемого кодом символов ASCII (или его расширением – Unicode), который представляет собой 8-битное число и кодирует почти все символы, цифры и пунктуацию.
Например, заглавная буква “А” представлена числом 65, “В” – 66 и так далее. Аналогично, представление строчных символов начинается с числа 97.
Когда возникла необходимость включить больше символов и знаков из других языков, 8 бит оказалось недостаточно, поэтому был принят новый стандарт – Unicode, который представляет все используемые в мире символы с помощью 16 бит.
ASCII является подмножеством Unicode, поэтому кодировка символов ASCII остается такой же в Unicode. Это означает, что ‘A’ все равно будет представлено с помощью числа 65 в Юникоде.
Обратите внимание, что специальные символы, такие как пробел ” “, табуляция “\t”, новая строка “\N” и т.д., также представлены в памяти своим Юникодом. Мы рассмотрим две встроенные функции Python, которые используются для поиска представления символа в Unicode и наоборот. Мы рассмотрим две встроенные функции Python, которые используются для поиска представления символа в Unicode и наоборот
Мы рассмотрим две встроенные функции Python, которые используются для поиска представления символа в Unicode и наоборот.
Шифр Цезаря
Итак, после небольшого введения в цикл, я предлагаю все-таки перейти к основной теме сегодняшней статьи, а именно к Шифру Цезаря.
Что это такое?
Шифр Цезаря — это простой тип подстановочного шифра, где каждая буква обычного текста заменяется буквой с фиксированным числом позиций вниз по алфавиту. Принцип его действия можно увидеть в следующей иллюстрации:
Какими особенностями он обладает?
У Шифра Цезаря, как у алгоритма шифрования, я могу выделить две основные особенности. Первая особенность — это простота и доступность метода шифрования, который, возможно поможет вам погрузится в эту тему, вторая особенность — это, собственно говоря, сам метод шифрования.
Программная реализация
В интернете существует огромное множество уроков, связанных с криптографией в питоне, однако, я написал максимально простой и интуитивно понятный код, структуру которого я вам продемонстрирую.
Начнем, пожалуй, с создания алфавита. Для этого вы можете скопировать приведенную ниже строку или написать все руками.
Далее, нам нужно обозначить программе шаг, то есть смещение при шифровании. Так, например, если мы напишем букву «а» в сообщении, тот при шаге «2», программа выведет нам букву «в».
Итак, создаем переменнуюsmeshenie, которая будет вручную задаваться пользователем, и message, куда будет помещаться наше сообщение, и, с помощью метода возводим все символы в нашем сообщении в верхний регистр, чтобы у нас не было ошибок. Потом создаем просто пустую переменную itog, куда мы буем выводить зашифрованное сообщение. Для этого пишем следующее:
Итак, теперь переходим к самому алгоритму шифровки. Первым делом создаем цикл, где мы определим место букв, задействованных в сообщении, в нашем списке alfavit, после чего определяем их новые места (далее я постараюсь насытить код с пояснениями):
Далее, мы создаем внутри нашего цикла условие , в нем мы записываем в список itog мы записываем наше сообщение уже в зашифрованном виде и выводим его:
Модернизация
Вот мы и написали программу, однако она имеет очень большой недостаток: «При использовании последних букв(русских), программа выведет вам английские буквы. Давайте это исправим.
Для начала создадим переменную lang, в которой будем задавать язык нашего шифра, а так же разделим английский и русский алфавиты.
Теперь нам надо создать условие, которое проверит выбранный язык и применит его, то есть обратится к нужному нам алфавиту. Для этого пишем само условие и добавляем алгоритм шифрования, с помощью которого будет выполнено шифрование:
Дешифровка сообщения
Возможно это прозвучит несколько смешно, но мы смогли только зашифровать сообщение, а насчет его дешифровки мы особо не задумывались, но теперь дело дошло и до неё.
По сути, дешифровка — это алгоритм обратный шифровке. Давайте немного переделаем наш код (итоговый вид вы можете увидеть выше).
Для начала, я предлагаю сделать «косметическую» часть нашей переделки. Для этого перемещаемся в самое начало кода:
Остальное можно оставить так же, но если у вас есть желание, то можете поменять названия переменных.
По большому счету, самые ‘большие’ изменения у нас произойдут в той части кода, где у нас находится алгоритм, где нам нужно просто поменять знак «+» на знак «-«. Итак, переходим к самому циклу:
Простая замена
ROT13 это Шифр цезаря, тип подстановочного шифра. В ROT13 алфавит вращается на 13 шагов.
Замена отдельных букв по отдельности—простая замена— можно продемонстрировать, выписав алфавит в некотором порядке для обозначения замены. Это называется замещающий алфавит. Шифровальный алфавит может быть сдвинут или перевернут (создавая Цезарь и Атбаш шифры соответственно) или зашифрованы более сложным образом, и в этом случае это называется смешанный алфавит или же нарушенный алфавит. Традиционно смешанные алфавиты могут быть созданы, сначала написав ключевое слово, удалив в нем повторяющиеся буквы, а затем записав все оставшиеся буквы в алфавите в обычном порядке.
Используя эту систему, ключевое слово «зебры«дает нам следующие алфавиты:
Простой текст алфавит: | АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ |
Зашифрованный текст алфавит: | ZEBRASCDFGHIJKLMNOPQTUVWXY |
Сообщение
беги немедленно. нас открыли!
шифрует
SIAA ZQ LKBA. ВА ЗОА РФПБЛУАОАР!
Обычно зашифрованный текст записывается блоками фиксированной длины, без знаков препинания и пробелов; это сделано для того, чтобы скрыть границы слов от простой текст и чтобы избежать ошибок передачи. Эти блоки называются «группами», и иногда «количество групп» (то есть количество групп) задается в качестве дополнительной проверки. Часто используются пятибуквенные группы, начиная с того времени, когда сообщения передавались телеграф:
SIAAZ QLKBA VAZOA RFPBL UAOAR
Если длина сообщения не делится на пять, оно может быть дополнено в конце «нули «. Это могут быть любые символы, которые расшифровываются до очевидной бессмыслицы, так что получатель может легко их обнаружить и отбросить.
Алфавит зашифрованного текста иногда отличается от алфавита открытого текста; например, в свиной шифр, зашифрованный текст состоит из набора символов, полученных из сетки. Например:
Однако такие функции мало влияют на безопасность схемы — по крайней мере, любой набор странных символов может быть преобразован обратно в алфавит от A до Z и обработан как обычно.
В списках и каталогах для продавцов иногда используется очень простое шифрование, чтобы заменить числовые цифры буквами.
Цифры открытого текста: | 1234567890 |
Алфавиты зашифрованного текста: | МАКЕПРОФИТ |
Пример: MAT будет использоваться для представления 120.
Безопасность простых подстановочных шифров
Хотя традиционный метод ключевого слова для создания смешанного алфавита подстановки прост, серьезным недостатком является то, что последние буквы алфавита (которые в основном встречаются редко), как правило, остаются в конце. Более сильный способ построения смешанного алфавита — это генерировать алфавит замены полностью случайным образом.
Хотя количество возможных подстановочных алфавитов очень велико (26! ≈ 288.4, или около 88 бит ) этот шифр не очень надежен и легко взламывается. При условии, что сообщение имеет разумную длину (см. Ниже), криптоаналитик может определить вероятное значение наиболее распространенных символов, проанализировав Распределение частоты зашифрованного текста. Это позволяет формировать частичные слова, которые можно предварительно заполнить, постепенно расширяя (частичное) решение (см. для демонстрации этого). В некоторых случаях основные слова также можно определить по образцу их букв; Например, привлекать, костный, и слова с этими двумя в качестве корня являются единственными общими английский слова с рисунком ABBCADB. Многие люди решают такие шифры для развлечения, как с криптограмма загадки в газете.
Согласно расстояние уникальности из английский Для взлома простой подстановки смешанного алфавита требуется 27,6 букв зашифрованного текста. На практике обычно требуется около 50 букв, хотя некоторые сообщения можно разбить меньшим числом, если обнаруживаются необычные шаблоны. В других случаях открытый текст может иметь почти ровное частотное распределение, и тогда криптоаналитику потребуются гораздо более длинные открытые тексты.
Зачем мне знания о криптографии?
Предположим, криптография очень нужна, но пусть ей займутся дядьки с усами математики. Зачем же мне знания по криптографии?
Если ты обычный пользователь — то как минимум, чтобы обеспечить свою приватность. Сегодня крупным государствам и влиятельным организациям становятся доступны средства тотального надзора за миллионами людей. Поэтому криптография оказывается важнейшим инструментом, обеспечивающим конфиденциальность, доверие, целостность, авторизацию сообщений и электронных платежей. Повсеместное распространение криптографии останется одним из немногих способов защитить пользователя от угроз, нависающих над его конфиденциальной информацией. Зная, как работает тот или иной протокол или шифр, чем он хорош и где его слабые места, ты сможешь осознанно выбирать инструменты для работы или просто общения в Сети.
Короче говоря, криптография используется гораздо чаще, чем можно себе представить. Поэтому пора снять завесу тайны с этой науки, познакомиться с наиболее интересными аспектами и использовать ее возможности себе на пользу.
Шифр Вернама
Еще до эпохи компьютеров и машин, таких как “Enigma”, американский инженер разработал одноразовый код. Это был единственный шифр, который математически доказал свою полную эффективность. Проще говоря, если все правила протокола шифрования с одноразовым кодом использовались правильно, зашифрованное сообщение, даже сегодня с помощью самых мощных компьютеров, не могло быть взломано без знания ключа шифрования/дешифрования!
Если это так, то зачем нам нужны другие шифры? Здесь стоит обратить внимание “при правильном использовании”. То, что данный шифр полностью эффективен и устойчив к любым атакам, не означает, что его легко внедрить
Во время холодной войны одна небольшая ошибка советского шифра дала возможность американцам расшифровать десятки тысяч страниц зашифрованных сообщений и документов, отправленных посольством СССР.
Но вернемся к идее Вернама
Шифр использует одноразовый ключ, содержащий совершенно случайный (это важно!) набор символов для кодирования сообщения определенной длины. Каждый символ сообщения закодирован другим символом
После шифрования и отправки сообщения ключ уничтожается (еще одна важная деталь), и ни одно из последующих сообщений не может быть похожим на него (в математическом смысле). Получатель, имеющий тот же ключ, расшифровывает сообщение, а затем уничтожает ключ. Любой, кто перехватит сообщение, без ключа расшифровать его не сможет.
Но недостатком такого решения является необходимость согласования между сторонами о наборе ключей, что очень непрактично. Этот шифр, благодаря своей 100%-ной эффективности, используется в узких, редко используемых и сверхсекретных каналах связи, например, для “горячей линии” между президентами Соединенных Штатов и Российской Федерации.
История и применение
Шифр Цезаря назван в честь Гая Юлия Цезаря, который использовал его с левым сдвигом на 3
Шифр Цезаря называют в честь Юлия Цезаря, который согласно «Жизни двенадцати цезарей» Светония использовал его со сдвигом 3, чтобы защищать военные сообщения. Хотя Цезарь был первым зафиксированным человеком, использующим эту схему, другие шифры подстановки, как известно, использовались и ранее.
Если у него было что-либо конфиденциальное для передачи, то он записывал это шифром, то есть так изменял порядок букв алфавита, что нельзя было разобрать ни одно слово. Если кто-либо хотел дешифровать его и понять его значение, то он должен был подставлять четвертую букву алфавита, а именно, D, для A, и так далее, с другими буквами.Гай Светоний Транквилл Жизнь двенадцати цезарей, Книга первая, гл. 56 |
Его племянник, Август, также использовал этот шифр, но со сдвигом вправо на один, и он не повторялся к началу алфавита:
Всякий раз, когда он записывал шифром, он записал B для A, C для B, и остальной части букв на том же самом принципе, используя AA для X.Гай Светоний Транквилл Жизнь двенадцати цезарей, Книга вторая, гл. 88 |
Есть доказательства, что Юлий Цезарь использовал также и более сложные схемы.
Неизвестно, насколько эффективным шифр Цезаря был в то время, но, вероятно, он был разумно безопасен, не в последнюю очередь благодаря тому, что большинство врагов Цезаря были неграмотными, и многие предполагали, что сообщения были написаны на неизвестном иностранном языке. Нет никаких свидетельств того времени касательно методов взлома простых шифров подстановки. Самые ранние сохранившиеся записи о частотном анализе — это работы Ал-Кинди 9-го века об открытии частотного анализа.
Шифр Цезаря со сдвигом на один используется на обратной стороне мезузы, чтобы зашифровать имена Бога. Это может быть пережитком с раннего времени, когда еврейскому народу не разрешили иметь мезузы.
В XIX веке личная секция рекламных объявлений в газетах иногда использовалась, чтобы обмениваться сообщениями, зашифрованными с использованием простых шифров. Кан (1967) описывает случаи когда любители участвовали в секретных коммуникациях, зашифрованных с использованием шифра Цезаря в «Таймс». Даже позднее, в 1915, шифр Цезаря находил применение: российская армия использовала его как замену для более сложных шифров, которые оказались слишком сложными для войск; у немецких и австрийских криптоаналитиков были лишь небольшие трудности в расшифровке этих сообщений.
Шифр Цезаря со сдвигом тринадцать также используется в алгоритме ROT13, простом методе запутывания текста, широко используемого в Usenet, и используется скорее как способ сокрытия спойлеров, чем как метод шифрования.
Шифр Виженера использует шифр Цезаря с различными сдвигами в каждой позиции в тексте; значение сдвига определяется с помощью повторяющегося ключевого слова. Если ключевое слово такое же длинное, как и сообщение, сгенерировано случайным образом, содержится в тайне и используется лишь однократно — такая схема называется схема одноразовых блокнотов — и это единственная система шифрования, для которой доказана абсолютная криптографическая стойкость.
Ключевые слова короче чем сообщение (например, «Complete Victory», используемое Конфедерацией во время гражданской войны в США), вводят циклический образец, который мог бы быть обнаружен с помощью улучшенной версии частотного анализа.
В апреле 2006 беглый босс Мафии Бернардо Провенцано был пойман в Сицилии частично из-за криптоанализа его сообщений, написанных с использованием вариации шифра Цезаря. В шифре Провенцано буквы сначала заменялись на числа — порядковые номера букв в алфавите, а уже к полученной последовательности чисел применялся шифр Цезаря — так, чтобы при сдвиге на 3 «A» была написана как «4», «B» как «5», и так далее.
Часто для удобства использования шифра Цезаря используют два насаженных на общую ось диска разного диаметра с нарисованными по краям дисков алфавитами. Изначально диски поворачиваются так, чтобы напротив каждой буквы алфавита внешнего диска находилась та же буква алфавита малого диска. Если теперь повернуть внутренний диск на несколько символов, то мы получим соответствие между символами внешнего диска и внутреннего — шифр Цезаря. Получившийся диск можно использовать как для шифрования, так и для расшифровки.
Например, если внутреннее колесо повернуть так, чтобы символу A внешнего диска соответствовал символ D внутреннего диска, то мы получим шифр со сдвигом 3 влево.