Как кодировать и расшифровывать с помощью шифра Виженера

Как кодировать и расшифровывать с помощью шифра Виженера. Шифр Виженера — это метод шифровки, в котором используются различные «шифры Цезаря» на основе букв в ключевом слове. В шифре Цезаря каждую букву абзаца необходимо поменять местами с…

Советы

  • Дважды перепроверьте, чтобы убедиться в правильности кодировки. Если вы неправильно закодируете текст, его невозможно будет правильно расшифровать, а понять, что в нем есть ошибка, без проверки очень сложно.
  • Если использовать соответствующее программное обеспечение для графического программирования и тщательно все проверять, процесс можно автоматизировать.
  • Если вы дадите кому-то зашифрованный текст, для расшифровки потребуется ключевое слово. Сообщите его человеку шепотом по секрету или зашифруйте с помощью шифра Цезаря. Имейте в виду, что на сегодняшний день этот шифр не является абсолютно надежным, и его можно взломать автоматически.
  • В интернете есть средства расшифровки кода Виженера, которые вы можете найти и использовать.
  • Если вы используете большой квадрат Виженера, включающий пунктуацию и пробелы, шифр будет сложнее расшифровать, особенно если ключевое слово или ключевая фраза имеют такую же или бо́льшую длину, чем сообщение.
  • Еще один путь усложнить шифр — сначала зашифровать исходное сообщение другим способом (например, перестановочным шифром), а уже полученный результат закодировать с помощью шифра Виженера. Даже если шифр Виженера расшифруют, на выходе получится лишь бессмысленный набор букв. Не применяйте к исходному сообщению шифр Цезаря вместо перестановочного шифра, так как в этом случае оба шага шифрования можно будет объединить в один, и шифровка будет не очень надежной.
  • Чем чаще ваше ключевое слово или фраза повторяются, тем легче расшифровать текст. Ключ должен быть как можно длиннее.

Что такое “Шифр Виженера”?

Шифр Виженера – метод полиалфавитного шифрования буквенного текста с использованием кодового слова. Этот шифр прост для понимания и реализации, но на протяжении трех столетий он не поддавался взлому. По этой причине он получил название «неразгаданный шифр». Этот метод является простой формой многоалфавитной замены.

Впервые Шифр Виженера описал Джовани Баттиста Белласо, однако по ошибке был приписан другому имени, Блезу Виженеру, французскому дипломату. В 1518 году в развитии криптографии был сделан новый шаг. Аббат Иоганнес Тритемий, настоятель монастыря в Вюрцбурге, написал книгу «Полиграфия», в которой описывается ряд шифров.

Один из них использует «таблицу Тритемия» (более известна как «таблица Виженера») и развивает идею многоалфавитной замены. Система шифрования следующая: первая буква исходного текста шифруется по первой строке, вторая по второй и т.д. После использования последней строки следующая буква снова шифруется по первой строке. В шифре Тритемия отсутствует ключ, секретом является сам способ шифрования.

Далее за развитие криптографии принялся итальянец Джованни Белазо. В 1553 году он выпустил брошюру «Шифр синьора Белазо». В этом шифре ключом является фраза или слово. Пароль записывался периодически над буквами открытого текста. Буква пароля, стоящая над соответствующей буквой открытого текста, указывала номер строки в таблице Тритемия, по которой следует проводить замену (шифрование) это буквы.

пароль 3

Рисунок 2. Квадрат Виженера (таблица Виженера)

Следующим составляющим звеном в нынешнем шифре Виженера стал соотечественник Белазо Джованни Батиста Порта. Он предложил отказаться от алфавитного порядка следования букв в первой строке таблицы Тритемия и заменить этот порядок на некоторый произвольный, являющийся ключом шифра. Строки таблицы по-прежнему циклически сдвигались. В своей книге «О тайной переписке», (вышедшей в 1563 году) Порта предложил биграммный шифр, а также привел описание механического дискового устройства, реализующего биграммную замену.

Далее в середине XVI века в Италии появляется книга Дж. Кардано «

О тонкостях

» с дополнением «

О разных вещах

». Там нашли отражение новые идеи криптографии: использование части самого передаваемого открытого текста в качестве ключа шифра (идея «

самоключа

») и новый способ шифрования, который вошел в историю как «

решетка Кардано

».

пароль 4

Рисунок 3. Записка, зашифрованная шифром Кардано

На рисунке №3 представлен сам шифр Кардано. Записка гласит: «Сэр Джон высоко ценит Вас и снова повторяет, что все, что доступно ему, теперь ваше, навсегда. Может ли он заслужить прощение за свои прежние промедления посредством своего обаяния», шифрованное послание: «В мае Испания направит свои корабли на войну».

Посол Франции в Риме Блез де Виженер, познакомившись с трудами Тритемия, Белазо, Кардано, Порта, Альберти, также увлекся криптографией. В 1585 году он написал «Трактат о шифрах», в котором излагаются основы криптографии.

По смыслу, Шифр Виженера состоит из нескольких шифров Цезаря (в данном шифре каждая буква сдвигается на несколько позиций).

Например:

  • Исходный текст: «В кабинете информатики много компьютеров»
  • Ключ: «Лимон»
  • Полученный шифр: «н умпцщняу цщэыяълыхщц шцысь цчщюййысяьн»

То есть, шифрование происходит по формуле cj =(mj+kj)*mod n

Расшифровка происходит при помощи той же таблицы Виженера и формул. cj =(mj+n-kj)*mod n

В данных формулах n – количество букв в алфавите, mj – буквы открытого текста, kj – буквы ключа.

История

Самое первое хорошо задокументированное описание полиалфавитного шифра было сделано Леоном Баттистой Альберти около 1467 года и использовало металлический шифр-диск для переключения между шифралфавитами. Система Альберти переключала алфавиты только после нескольких слов, а переключатели указывались записью буквы соответствующего алфавита в зашифрованном тексте. Позже Иоганн Тритемиус в своей работе « Полиграфия» (которая была завершена в виде рукописи в 1508 году, но впервые опубликована в 1518 году) изобрел tabula recta , важнейший компонент шифра Виженера. Шифр Тритемий , однако, при условии , прогрессивная, а жесткая и предсказуемой системы для переключения между шифровальными алфавитами.

В 1586 году Блез де Виженера перед судом Генриха III во Франции опубликовал тип полиалфавитного шифра, называемый шифром с автоключом, поскольку его ключ основан на исходном открытом тексте . Однако шифр, ныне известный как шифр Виженера, первоначально описал Джован Баттиста Беллазо в его книге 1553 года La cifra del Sig. Джован Баттиста Беллазо . Он построил на tabula recta Тритемия, но добавил повторяющийся «контрзнак» ( ключ ), чтобы переключать шифралфавит на каждой букве. В то время как Альберти и Тритемиус использовали фиксированный образец замен, схема Белласо означала, что образец замен можно легко изменить, просто выбрав новый ключ. Ключи обычно представляли собой отдельные слова или короткие фразы, заранее известные обеим сторонам или передаваемые «вне диапазона» вместе с сообщением. Таким образом, метод Белласо требовал надежной защиты только для ключа. Поскольку получить короткую ключевую фразу относительно легко, например, в предыдущем частном разговоре, система Bellaso была значительно более безопасной.

В 19 веке изобретение шифра Беллазо было ошибочно приписано Виженера. Дэвид Кан в своей книге «Взломщики кодов» посетовал на эту неправильную атрибуцию, заявив, что история «проигнорировала этот важный вклад и вместо этого назвала регрессивный и элементарный шифр для него [Виженера], хотя он не имел к этому никакого отношения».

Шифр Виженера приобрел репутацию исключительно надежного шифра. Известный писатель и математик Чарльз Лютвидж Доджсон ( Льюис Кэрролл ) назвал шифр Виженера нерушимым в своей статье 1868 года « Алфавитный шифр » в детском журнале. В 1917 году журнал Scientific American назвал шифр Виженера «невозможным для перевода». Эта репутация была незаслуженной. Известно, что Чарльз Бэббидж взломал один из вариантов шифра еще в 1854 году, но не опубликовал свою работу. Касиски полностью взломал шифр и опубликовал эту технику в 19 веке, но даже в 16 веке некоторые опытные криптоаналитики могли иногда взламывать шифр.

Криптографическая логическая линейка использовалась в качестве вспомогательного средства для расчетов швейцарской армией в период с 1914 по 1940 год.

Шифр Виженера достаточно прост, чтобы быть полевым шифром, если он используется вместе с шифровальными дисками. Конфедеративные Штаты Америки , например, использовали латунь шифрованного диска для реализации шифра Виженера во время американской гражданской войны . Сообщения Конфедерации были далеко не секретными, и Союз регулярно взламывал их сообщения. На протяжении всей войны руководство Конфедерации в первую очередь полагалось на три ключевые фразы: «Манчестерский блеф», «Полная победа» и, когда война подошла к концу, «Приходи возмездие».

Шифр Виженера с полностью случайным (и не допускающим повторного использования) ключом, который имеет длину до тех пор, пока сообщение становится одноразовым блокнотом , теоретически нерушимым шифром. Гилберт Вернам попытался восстановить взломанный шифр (создав шифр Вернама – Виженера в 1918 году), но технология, которую он использовал, была настолько громоздкой, что ее невозможно было использовать на практике.

Предупреждения

  • Этот шифр ненадежен (как и любой другой), и его можно легко взломать. По современным стандартам шифр Виженера является очень ненадежным. Не используйте его для чего-либо действительно секретного. Для лучшей шифровки используйте AES и RSA. Однако этот шифр можно использовать с одноразовым ключом (случайная фраза такой же длины, как и текст, которая используется только раз) — если ключ хранить в секрете, расшифровка будет не такой простой.

Алгебраическое описание

Виженера также можно описать алгебраически. Если за буквы A- Zвзяты числа 0–25 ( , и т. Д.), А сложение выполняется по модулю 26, шифрование Виженера с использованием ключа можно записать как А знак равно ^ 0 { Displaystyle А , { widehat {=}} , 0} { Displaystyle А , { widehat {=}} , 0} B знак равно ^ 1 { Displaystyle B , { widehat {=}} , 1} { Displaystyle B , { widehat {=}} , 1} E { displaystyle E} E K { displaystyle K} K

C я знак равно E K ( M я ) знак равно ( M я + K я ) мод 2 6 { Displaystyle C_ {я} = E_ {K} (M_ {i}) = (M_ {i} + K_ {i}) { bmod {2}} 6} { Displaystyle C_ {я} = E_ {K} (M_ {i}) = (M_ {i} + K_ {i}) { bmod {2}} 6}

и расшифровка с использованием ключа как D { displaystyle D} D K { displaystyle K} K

M я знак равно D K ( C я ) знак равно ( C я – K я + 26 год ) мод 2 6 , { displaystyle M_ {i} = D_ {K} (C_ {i}) = (C_ {i} -K_ {i} +26) { bmod {2}} 6,} { displaystyle M_ {i} = D_ {K} (C_ {i}) = (C_ {i} -K_ {i} +26) { bmod {2}} 6,}

в котором сообщение, это зашифрованный текст и ключ, полученный путем повторения ключевого слова раз, в котором длина ключевого слова. M знак равно M 1 … M п { Displaystyle M = M_ {1} точки M_ {п}} M = M_ {1}  точки M_ {n} C знак равно C 1 … C п { Displaystyle C = C_ {1} точки C_ {n}} C = C_ {1}  точки C_ {n} K знак равно K 1 … K п { Displaystyle К = К_ {1} точки К_ {п}} K = K_ {1}  точки K_ {n} ⌈ п / м ⌉ { Displaystyle lceil п / м rceil}  lceil n / m  rceil м { displaystyle m} м

Таким образом, используя предыдущий пример, чтобы зашифровать ключевую букву, результатом вычисления будет . А знак равно ^ 0 { Displaystyle А , { widehat {=}} , 0} { Displaystyle А , { widehat {=}} , 0} L знак равно ^ 11 { Displaystyle L , { widehat {=}} , 11} { Displaystyle L , { widehat {=}} , 11} 11 знак равно ^ L { Displaystyle 11 , { widehat {=}} , L} { Displaystyle 11 , { widehat {=}} , L}

11 знак равно ( 0 + 11 ) мод 2 6 { Displaystyle 11 = (0 + 11) { bmod {2}} 6} { Displaystyle 11 = (0 + 11) { bmod {2}} 6}

Следовательно, чтобы расшифровать ключевую букву , вычисление приведет к . р знак равно ^ 17 { Displaystyle R , { widehat {=}} , 17} { Displaystyle R , { widehat {=}} , 17} E знак равно ^ 4 { Displaystyle E , { widehat {=}} , 4} { Displaystyle E , { widehat {=}} , 4} 13 знак равно ^ N { Displaystyle 13 , { widehat {=}} , N} { Displaystyle 13 , { widehat {=}} , N}

13 знак равно ( 17 – 4 ) мод 2 6 { Displaystyle 13 = (17-4) { bmod {2}} 6} { Displaystyle 13 = (17-4) { bmod {2}} 6}

В общем, если – длина алфавита , а – длина ключа, шифрование и дешифрование Виженера можно записать так: Σ { displaystyle Sigma} Сигма ℓ { displaystyle ell}  ell м { displaystyle m} м

C я знак равно E K ( M я ) знак равно ( M я + K ( я мод м ) ) мод ℓ , { displaystyle C_ {i} = E_ {K} (M_ {i}) = (M_ {i} + K _ {(я { bmod {m}})}) { bmod { ell}},} { displaystyle C_ {i} = E_ {K} (M_ {i}) = (M_ {i} + K _ {(я { bmod {m}})}) { bmod { ell}},} M я знак равно D K ( C я ) знак равно ( C я – K ( я мод м ) ) мод ℓ . { displaystyle M_ {i} = D_ {K} (C_ {i}) = (C_ {i} -K _ {(i { bmod {m}})}) { bmod { ell}}.} { displaystyle M_ {i} = D_ {K} (C_ {i}) = (C_ {i} -K _ {(i { bmod {m}})}) { bmod { ell}}.}

M я { displaystyle M_ {i}} М_ {i}обозначает смещение i-го символа открытого текста в алфавите . Например, если взять в качестве алфавита 26 английских символов , смещение A будет равно 0, смещение B равно 1 и т. Д., И они аналогичны. M { displaystyle M} M Σ { displaystyle Sigma} Сигма Σ знак равно ( А , B , C , … , Икс , Y , Z ) { Displaystyle Sigma = (А, В, С, ldots, X, Y, Z)} { Displaystyle  Sigma = (А, В, С,  ldots, X, Y, Z)} C я { displaystyle C_ {i}} C_ {i} K я { displaystyle K_ {i}} К_ {i}

Расшифровка шифра Виженера по ключу

Спецсимволы не содержащиеся в алфавите будут пропущены.

Cоздание программы для хранения пароля

В работе использовалась бесплатная программа-среда разработки ПО Lazarus. Ver. 2.0.2

Используемые ресурсы:

  • Компьютер на базе Intel Pentium
  • Оболочка для написания программных обеспечений Lazarus
  • Обучающая литература и пособия по программированию на языке Pascal

Подготовительный этап

В начале работы над практической частью мы определили, какие команды нужно «исполнять» программе, и составили блок-схему (приложение 1), которая исполнила роль плана написания программы.

Описание продукта.

function Tfr.deshifr(s: string): string; //функция дешифрования

var

i: integer;

st: string;

begin

for i:=1 to Length(s) do

if (s[i]<> ”) and (s[i]<> ‘.’) and (s[i]<> ‘;’) and (s[i]<> ‘,’) then

s[i]:= Char((Ord(s[i]) – Ord(k[(i mod Length(k)) + 1])) mod 256);

st := Copy(s, 1, Length(s) – l);

Result:= st;

end;

На рисунке 4 представлена часть кода программы, функция дешифрования. Полностью код нигде нельзя увидеть, так как это личная разработка.

Продукт проекта – это программа, запоминающая пароли, написанная в среде разработки ПО Lazarus на языке Pascal. Простая в плане интерфейса и понимания содержимого, но сложная в плане защиты данных. Все наименования надежно защищены, так как алгоритм шифрования вычислить невозможно.

Такая программа актуальна в наши дни, так как многие пользуются ресурсами, требующими авторизации (это не только электронная почта, социальные сети и различные игровые ресурсы, но и такие «рабочие» ресурсы, как Ариадна, SAP, Directum (система электронного документооборота).

По правилам техники безопасности, пароли не должны повторяться, содержать латинские буквы, цифры и специальные символы, также раз в определенный срок их нужно менять. Из-за огромного потока информации пользователю довольно сложно запомнить все данные для авторизации.

Данная программа может решить проблему с путаницей паролей. Нужно лишь нажать на нужный ресурс, вернуться к окну авторизации и одновременно нажать клавиши «ctrl» и «C». Подобный продукт создать вовсе не тяжело, но трудоемко. Мне понадобилось время, чтобы изучить теоретический материал, помогающий изучить язык программирования, саму среду разработки ПО.

Заключение

В результате проделанной работы:

  • Был подобран литературный материал для реферативной части
  • Был освоен язык Pascal и навыки программирования на нет, а также был освоен шифр Виженера.

При помощи IDE Lazarus можно создать безопасную программу, хранящую пароли от разных ресурсов, требующих авторизации.

Список используемой литературы

  1. «Самоучитель по программированию на Free Pascal и Lazarus» Издательство УНИТЕХ, 2009, г. Донецк, Алексеев Е.Р., Чеснокова О.В., Кучер Т.В.
  2. Наглядная инструкция шифрования с помощью шифра Виженера.
  3. Основные сведения о шифре Виженера.
  4. Цикл лекций Ачкасова Вячеслава Юрьевича по программированию в Lazarus.
  5. Электронная книга Мансурова К. Т. Основы программирования в среде Lazarus 2010.

Перейти к разделу: 4.

Приложения к проекту

Об этой статье

Эту страницу просматривали 165 177 раз.

Предупреждение к методу

Шифр Виженера, как и многие другие, не является надежным, поскольку его легко взломать. Если есть необходимость передать секретную информацию, не нужно прибегать к использованию данного метода. Для таких целей разработаны другие методы. Шифр Виженера является одним из самых старых и популярных методов шифрования.

Шифрование данных

В качестве ключа выступает специальная фраза. Она несколько раз повторяется и пишется над шифруемым текстом. В результате каждая буква посылаемого сообщения сдвигается относительно заданного текста на определенное число, которое задается буквой ключевой фразы. На протяжении нескольких веков данный метод устойчиво занимал позицию самого надежного метода шифрования. В 19 веке отмечены первые попытки взлома шифра Виженера, которые основывались на определении длины ключевой фразы. Если известна ее длина, то текст можно разбить на определенные фрагменты, которые кодируются одним и тем же сдвигом.

Смотрите также

  • Роджер Фронтенак ( дешифровщик катрена Нострадамуса , 1950)
  • Простой шифр Vigenere для Excel VBA : предоставляет код VBA для использования листа Excel для шифрования и дешифрования шифра Vigenere.

Разное

games/quest/crypt/cipher/zamena.txt · Последние изменения: 2021/10/03 23:38 — NoZDR

использованная литература

Цитаты

Источники

  • Бойтельшпахер, Альбрехт (1994). “Глава 2”. Криптология . перевод с немецкого Дж. Криса Фишера. Вашингтон, округ Колумбия: Математическая ассоциация Америки. С. 27–41. ISBN 0-883-85504-6.
  • Сингх, Саймон (1999). “Глава 2: Le Chiffre Indéchiffrable”. Кодовая книга . Якорная книга, Random House . ISBN 0-385-49532-3.
  • Хелен Ф. Гейнс (18 ноября 2014 г.). Криптоанализ: исследование шифров и их решение . Курьерская корпорация. п. 117. ISBN 978-0-486-80059-2.
  • Мендельсон, Чарльз Дж (1940). «Блез де Виженер и« Шифр ​​Карре » ». Труды Американского философского общества . 82 (2).

внешние ссылки

Статьи

  • История шифра от Cryptologia
  • Базовый криптоанализ в H2G2
  • «Конспект лекций по классической криптологии», включая объяснение и вывод теста Фридмана
Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...