98929

Исследование и программная реализация шифра Виженера

Курсовая

Информатика, кибернетика и программирование

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

Русский

2016-07-14

2.93 MB

0 чел.

Министерство  образования и науки Российской Федерации

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

Российский государственный гидрометеорологический университет

Кафедра ИТ и СБ

Курсовой проект

по дисциплине: «Криптографические методы защиты информации»

на тему:

«Исследование и программная реализация шифра Виженера»

Выполнил: ст. гр. ИБ-Шеванов А.В.

Проверила:

Татарникова Т.М.

Санкт-Петербург.

2013 год.


Задание на курсовое проектирование по дисциплине «Криптографические методы защиты информации»

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

Содержание проекта:

  1.  Cведения о криптографии и шифре ;
  2.  Структурная схема алгоритма;
  3.  Пример шифрования;
  4.  Листинг программы;
  5.  Контрольный пример, выполненный данной программой;
  6.  Выводы по использованию шифра;
  7.  Список использованных источников.

Дата выдачи «____»    февраль  2013г.

Дата сдачи «____»    май 2013 г.

Задание выдал                                                                 Татарникова Т.М.

Задание получил                                                              ИБ-429: Шеванов А.В.

                                                                         

Санкт - Петербург

2013 г.


Оглавление

[1]
Введение

[2]
Шифр виженера.

[3]
Демонстрация работы программы

[4]
Общий вывод

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


Введение

Криптогра́фия (от др.-греч. κρυπτός — скрытый и γράφω — пишу) — наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним) и аутентичности (целостности и подлинности авторства, а также невозможности отказа от авторства) информации.

Потребность шифровать и передавать шифрованные сообщения возникла очень давно. Так, еще в V-IV вв. до н. э. греки применяли специальное шифрующее устройство. Первые придуманные шифры относились к классу шифров «простая замена» или «подстановка». Это  «Квадрат Полибия», «Шифр Цезаря». Это такие шифры, в котором каждой букве алфавита соответствует буква, цифра, символ или какая-нибудь их комбинация. Термин "шифр" арабского происхождения. В начале XV в. арабы опубликовали энциклопедию "Шауба Аль-Аща", в которой есть специальный раздел о шифрах. В этой энциклопедии указан способ раскрытия шифра простой замены. Он основан на различной частоте повторяемости букв в тексте. В этом разделе есть перечень букв в порядке их повторяемости на основе изучения текста Корана. Заметим, что в русском тексте чаще всего встречается буква "О", затем буква "Е" и на третьем месте стоят буквы "И" и "А". Более точно: на 1000 букв русского текста в среднем приходится 90 букв "О", 72 буквы "Е" или "Ё" и по 60 букв "И" и "А" и т.д.

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


Шифр виженера.

Шифр Виженера — метод полиалфавитного шифрования буквенного текста с использованием ключевого слова.

Этот метод является простой формой многоалфавитной замены. Шифр Виженера изобретался многократно. Впервые этот метод описал Джован Баттиста Беллазо (итал. Giovan Battista Bellaso) в книге La cifra del. Sig. Giovan Battista Bellasо в 1553 году, однако в XIX веке получил имя Блеза Виженера, французского дипломата. Метод прост для понимания и реализации, он является недоступным для простых методов криптоанализа.

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

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

Шифр Виженера достаточно прост для использования в полевых условиях, особенно если применяются шифровальные диски. Например, «конфедераты» использовали медный шифровальный диск для шифра Виженера в ходе Гражданской войны.

 Описание алгоритма

В шифре Цезаря каждая буква алфавита сдвигается на несколько строк; например в шифре Цезаря при сдвиге +3, A стало бы D, B стало бы E и так далее. Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифровывания может использоваться таблица алфавитов, называемая tabula recta или квадрат (таблица) Виженера. Применительно к латинскому алфавиту таблица Виженера составляется из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций. Таким образом, в таблице получается 26 различных шифров Цезаря. На разных этапах кодировки шифр Виженера использует различные алфавиты из этой таблицы. На каждом этапе шифрования используются различные алфавиты, выбираемые в зависимости от символа ключевого слова. 

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

Если буквы A-Z соответствуют числам 0-25, то шифрование Виженера можно записать в виде формулы:

Расшифровка:

Криптоанализ

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

  1.  Поиск длины ключа. Можно анализировать распределение частот в зашифрованном тексте с различным прореживанием. То есть брать текст, включающий каждую 2-ю букву зашифрованного текста, потом каждую 3-ю и т. д. Как только распределение частот букв будет сильно отличаться от равномерного (например, по энтропии), то можно говорить о найденной длине ключа.
  2.  Криптоанализ. Совокупность l шифров Цезаря (где l — найденная длина ключа), которые по отдельности легко взламываются.

Таблица Виженера для кириллицы:

Таблица Виженера для латиницы:

 


Листинг программы

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls;

type

 TForm1 = class(TForm)

   Label1: TLabel;

   Label2: TLabel;

   Edit1: TEdit;

   Label3: TLabel;

   Edit2: TEdit;

   Button1: TButton;

   Button2: TButton;

   Label4: TLabel;

   Edit3: TEdit;

   Button3: TButton;

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

 i, z, n, l, p : integer;

 s, k, e :string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);//---Кнопка зашифровки

begin

s:=Edit1.Text;  /--исходный текст

k:=Edit2.Text;     /--ключ

Edit3.Text:='';

for i:=1 to length(s) do

 begin

 z:=ord(s[i]);       /--перевод в ASCII код

 l:=length(k);

 p:=i;

  //--Циклическое считывание ключа

 if p>l then

   begin

    p:=(p)mod(l);

    if p=0 then p:=l

    else p:=p;

    end

   else p:=p;

 n:=ord(k[p]);

 //--Кириллица заглавные

 if ((z>=192) and (z<=223)) and ((n>=192) and (n<=255)) then

 begin

 z:=(z-191);

   if n>=224 then n:=n-223

   else n:=n-191;

 z:=((z+n)mod(32))+191-1;

 if z<192 then z:=z+32

 else z:=z;

 Edit3.Text:= Edit3.Text+chr(z);

 end

 //--Кириллица строчнык

 else if ((z>=224) and (z<=255)) and ((n>=192) and (n<=255)) then

 begin

 z:=(z-223);

 if n>=224 then n:=n-223

 else n:=n-191;

 z:=223-1+(z+n)mod(32);

 if z<224 then z:=z+32

 else z:=z;

 Edit3.Text:= Edit3.Text+chr(z);

 end

 //--Латиница заглавные

 else if ((z>=65) and (z<=90)) and (((n>=65) and (n<=90)) or ((n>=97) and (n<=122))) then

 begin

 z:=(z-64);

 if n>=97 then n:=n-96

 else n:=n-64;

 z:=64-1+(z+n)mod(26);

 if z<65 then z:=z+26

 else z:=z;

 Edit3.Text:= Edit3.Text+chr(z);

 end

 //--Латиница сточные

 else if ((z>=97) and (z<=122)) and (((n>=65 )and (n<=90)) or ((n>=97) and (n<=122))) then

 begin

 z:=(z-96);

 if n>=97 then n:=n-96

 else n:=n-64;

 z:=96-1+(z+n)mod(26);

 if z<97 then z:=z+26

 else z:=z;

 Edit3.Text:= Edit3.Text+chr(z);

 end

 //--Если шифруемое сообщение не входит в алфавит (.,! ? и т.д.)

 else if (z<65) or ((z>90) and (z<97)) or ((z>122) and (z<192)) and (((n>64) and (n<91)) or ((n>96) and (n<123)) or (n>191)) then

 Edit3.Text:= Edit3.Text+chr(z)

 //--Если в ключ входят символы не из алфавита (.,! ? и т.д.)

 else if (n<65) or ((n>90) and (n<97)) or ((n>122) and (n<192)) then

 begin

 ShowMessage('Введен некорректный ключ. Ключ не должен содержать символы');

 Edit3.Text:='';

 break;

 end

 //---Использование разных алфавитов

 else

 begin

 ShowMessage('Ключ и текст должны содержать символы из одного алфавита');

 Edit3.Text:='';

 break;

 end;

end;

 end;

procedure TForm1.Button2Click(Sender: TObject);//-- Кнопка расшифровки

begin

Edit3.Text:='';  

s:=Edit1.Text;

k:=Edit2.Text;

for i:=1 to length(s) do

 begin

 z:=ord(s[i]);

 l:=length(k);

 p:=i;

  //--Циклическое считывание ключа

 if p>l then

   begin

    p:=(p)mod(l);

    if p=0 then p:=l

    else p:=p;

    end

   else p:=p;

 n:=ord(k[p]);

 //--Кириллица заглавные

 if ((z>=192) and (z<=223)) and ((n>=192) and (n<=255)) then

 begin

 z:=(z-191);

   if n>=224 then n:=n-223

   else n:=n-191;

 z:=((z-n)mod(32))+191+1;

 if z<192 then z:=z+32

 else z:=z;

 Edit3.Text:= Edit3.Text+chr(z);

 end

 //--Кириллица строчнык

 else if ((z>=224) and (z<=255)) and ((n>=192) and (n<=255)) then

 begin

 z:=(z-223);

 if n>=224 then n:=n-223

 else n:=n-191;

 z:=223+1+(z-n)mod(32);

 if z<224 then z:=z+32

 else z:=z;

 Edit3.Text:= Edit3.Text+chr(z);

 end

 //--Латиница заглавные

 else if ((z>=65) and (z<=90)) and (((n>=65) and (n<=90)) or ((n>=97) and (n<=122))) then

 begin

 z:=(z-64);

 if n>=97 then n:=n-96

 else n:=n-64;

 z:=64+1+(z-n)mod(26);

 if z<65 then z:=z+26

 else z:=z;

 Edit3.Text:= Edit3.Text+chr(z);

 end

 //--Латиница сточные

 else if ((z>=97) and (z<=122)) and (((n>=65 )and (n<=90)) or ((n>=97) and (n<=122))) then

 begin

 z:=(z-96);

 if n>=97 then n:=n-96

 else n:=n-64;

 z:=96+1+(z-n)mod(26);

 if z<97 then z:=z+26

 else z:=z;

 Edit3.Text:= Edit3.Text+chr(z);

 end

 //--Если шифруемое сообщение не входит в алфавит (.,! ? и т.д.)

 else if (z<65) or ((z>90) and (z<97)) or ((z>122) and (z<192)) and (((n>64) and (n<91)) or ((n>96) and (n<123)) or (n>191)) then

 Edit3.Text:= Edit3.Text+chr(z)

 //--Если в ключ входят символы не из алфавита (.,! ? и т.д.)

 else if (n<65) or ((n>90) and (n<97)) or ((n>122) and (n<192)) then

 begin

 ShowMessage('Введен некорректный ключ. Ключ не должен содержать символы');

 Edit3.Text:='';

 break;

 end

 //---Использование разных алфавитов

 else

 begin

 ShowMessage('Ключ и текст должны содержать символы из одного алфавита');

 Edit3.Text:='';

 break;

 end;

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Close();

end;

end.

//-------------------------------------------------------------------------


Демонстрация работы программы

 Рис.1 Диалоговое окно программы.

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

Открытое сообщение: «Дайте человеку цель, ради которой стоит жить, и он сможет выжить в любой ситуации».

Ключ: «ИоганнГете».

 Рис.2 Пример шифрования

Получено зашифрованное сообщение: «Момтт ъкэукуну гиро, югдх нудушьм юяснд оцхь, л ат япоутх фаоцхь п рржцч схяцеинр».  Для дешифрования зашифрованный текст следует записать в поле «Текст» и нажать кнопку «Расшифровать»

 

Рис.3 Пример дешифрования.

Для корректной работы программы должны выполняться следующие условия:

  1.  Исходный текст и ключ должны быть из одного алфавита.
  2.  Ключ не должен содержать сиволов не из алфавита, т.е не должен содержать знаков препинания, пробелов и т.п.

При не выполнении условий появятся сообщения (Рис.4, Рис.5).

Рис.4. Использование разных алфавитов

Рис. 5. Использование пробела в ключе шифрования.


Общий вывод

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

 


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

  1.  Курс лекций «Криптография» Татарникова Т.М.
    1.  http://www.ddt.cs.vsu.ru/?q=system/files/03.pdf.
    2.  http://ru.wikipedia.org/wiki/ Шифр_Виженера .


 

А также другие работы, которые могут Вас заинтересовать

43702. Разработка путей улучшения управлением финансового состояния «Российского Союза Автостраховщиков» 509.73 KB
  Система показателей и методов характеризующих финансовое состояние предприятия Анализ финансового состояния Российский Союз Автостраховщиков Организационно-экономическая характеристика Российского Союза Автостраховщиков Анализ финансового состояния Российского Союза Автостраховщиков Оценка потенциальной неплатежеспособности РСА Разработка путей улучшения управлением финансового состояния Российского Союза Автостраховщиков.
43703. Употребления артикля в текстах газетно-публицистического стиля 72.67 KB
  В результате образования двух соотносительных форм артикля, противопоставляемых по значению определенности и неопределенности существительного, постепенно происходит отрыв артикля от указательного местоимения и числительного и превращение в особый вид служебных слов с чисто грамматическим значением.
43704. Разработка автоматизированной информационно-справочной системы для учета нефтедобывающего оборудования и контроля выполнения ремонтных работ предприятия «НоябрьскНефтеГазАвтоматика» 1.91 MB
  Целью данного дипломного проекта является разработка автоматизированной информационно-справочной системы для учета нефтедобывающего оборудования и контроля выполнения ремонтных работ предприятия НоябрьскНефтеГазАвтоматика. Задачами данного дипломного проекта являются: изучение предметной области; разработка модели бизнеспроцессов складских операций; выявление недостатков существующих бизнеспроцессов обработки информации при приеме заказов на монтаж и ремонт...
43705. Шляхи удосконалення маркетингової діяльності та маркетингової конкурентної стратегії ТОВ «Мар-Трейд» 837.15 KB
  Стратегія блакитних океанів Основні фактори формування та реалізації маркетингових конкурентних стратегій Розділ ІІ Дослідження маркетингової діяльності та маркетингової конкурентної стратегії ТОВ МарТрейд 2. Ці дослідники запропонували різні визначення терміна “конкурентна стратегія†та види базових конкурентних стратегій описали методи їх розроблення і впровадження в умовах розвинутої економіки. У процесі дослідження були використані наступні сучасні методи дослідження: статистичного аналізу при збиранні даних що аналізуються...
43706. УКРАЇНСЬКА МОВА ЗА ПРОФЕСІЙНИМ СПРЯМУВАННЯМ. Модульний курс 4.88 MB
  Містить комплекс вправ і завдань для вироблення навичок грамотного використання засобів української мови у професійній сфері. Розроблено систему вправ, спрямованих на формування умінь аналізу наукового стилю, написання текстів різних жанрів наукового мовлення, виявлення їх особливостей та оформлення, редагування, коригування та перекладу наукових текстів.
43707. Повышение финансовой устойчивости страховой организации на примере ОСАО «РЕСО-гарантия» 22.03 MB
  Дипломная работа построена следующим образом: в первой части рассмотрены теоретические аспекты, а именно: понятие и сущность финансовой устойчивости; во второй части проведен анализ финансово-хозяйственной деятельности организации; в третьей части проведенаработка мероприятий по оптимизации финансовой устойчивости, проведена оценка эффективности внедрения предложенных мероприятий.
43708. Подсистема анализа и контроля информационных блоков автоматической системы радиовещания 984.74 KB
  Рабочая станция должна иметь достаточную производительность, быструю дисковую подсистему, достаточный объем оперативной памяти для функционирования программного обеспечения. Рабочая станция должна содержать манипулятор мышь для удобной навигации в установленном программном обеспечении, так же должна иметься клавиатура для ввода текстовой информации.
43709. ОСОБЛИВОСТІ ПРАВОВОГО СТАТУСУ ОКРЕМИХ КАТЕГОРІЙ ГРОМАДЯН ЯК СУБ’ЄКТІВ АДМІНІСТРАТИВНОГО ПРАВА 165.17 KB
  ПОНЯТТЯ ТА ЗМІСТ ПРАВОВОГО СТАТУСУ ГРОМАДЯНИНА ЯК СУБЄКТА АДМІНІСТРАТИВНОГО ПРАВА Конституція України в преамбулі закріплює прагнення Українського народу розвивати і зміцнювати демократичну соціальну правову державу. Характер їх відносин зумовлюється положенням Конституції України про те що головним обовязком держави є утвердження і забезпечення прав і свобод людини. Термін “фізична особа†ширший за термін “громадянин†оскільки включає не тільки громадян України а й громадян інших держав та осіб без громадянства. Конституція...
43710. Структура дистанционного курса (ДК) «Изготовление и испытание ПТМ» 6.4 MB
  В работе представлена структура дистанционного курса (ДК) «Изготовление и испытание ПТМ»; даны рекомендации по оформлению ДК, предложена информационная, содержательная и контрольно-мониторинговая части ДК «Изготовление и испытание ПТМ».