98929

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

Курсовая

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

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

Русский

2016-07-14

2.93 MB

1 чел.

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

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

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

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

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

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

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

на тему:

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

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

Проверила:

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

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

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/ Шифр_Виженера .


 

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

28194. Вклад У. Джеймса в развитие психологической науки 34.5 KB
  Функционализм психологическое направление появившееся в США в конце ХIХ в исследующее процессы сознания с точки зрения их функции в приспособлении организма к среде. С позиций функционализма психология понималась как наука о функциях или €œдеятельностях€ сознания в их отношениях к нуждам организма и в связи с задачей его эффективной адаптации к изменяющемуся природному и социальному окружению. Задача функционализма изучить каким образом индивид посредством психических функций приспосабливается к изменчивой среде исследование...
28195. Бихевиоризм и необихевиоризм (Дж.Уотсон, Э.Толмен, Б.Скиннер и др.) 38.5 KB
  Бихевиоризм и необихевиоризм Дж. Предметом психологии бихевиоризм считает не сознание а поведение. Бихевиоризм от англ. Манифестом бихевиоризма считается статья его основателя американского психолога Дж.
28196. Психоанализ (З.Фрейд, К.Юнг, А.Адлер, К.Хорни и др.) 49.5 KB
  Наиболее существенными для развития личности Фрейд считал сексуальные инстинкты. Вместо того чтобы изучать сны Адлер обратился к исследованию ранних воспоминаний которые считал ключом к пониманию поведения мотивации и личности. Стиль жизни формируется к 5ти годам под влиянием творческой силы личности и в связи с ним формируется тип личности: Управляющий – активный антисоциальный; Берущий – низко активный паразитирующий; Избегающий – не активный нет социального интереса; Социальнополезный – высокий соц. В качестве механизмов...
28197. Гештальтпсихология (М.Вертгеймер, В.Келер, К.Коффка, К.Левин и др.) 41 KB
  История гештальтпсихологии берет начало в Германии в 1912 когда М. В противовес представлениям ассоцианистов о том что образ создается через синтез отдельных элементов и свойства целого определяются свойствами частей гештальтпсихологи выдвинули идею целостности образа свойства которого не сводимы к сумме свойств элементов в связи с этим часто подчеркивается роль гештальтпсихологии в становлении системного подхода в науке. Согласно гештальтпсихологии для человека существуют два отличных друг от друга мира: мир физический лежащий за...
28198. Предмет психологии. Специфические особенности и классификация психических явлений 68.5 KB
  Психология наука о закономерностях развития и функционирования психики как особой формы жизнедеятельности. Практическая психология ее задачи и роль в общественной практике. Психология изучает психику в закономерностях ее развития. Современная психология представляет собой широко развернутую область знаний включающую ряд научных дисциплин и направлений.
28199. Классификация методов современной психологии 37.5 KB
  Ананьева методы психологического исследования являются системами операций с психологическими объектами и вместе с тем являются гносеологическими объектами самой психологической науки.Пирогова: Собственно методы. Вспомогательные методы А Математические статистические Б Графические В Биохимические физиологические и др. Методические методы А Генетические Б Психофизиологические.
28200. Возникновение и развитие психики в процессе эволюции. Стадии развития психики 61 KB
  Под инстинктами понимаются действия или более менее сложные акты поведения которые появляются сразу как бы готовыми не зависят от выучки и индивидуального опыта будучи наследственно закрепленным продуктом филогенетического развития. Индивидуальноизменчивые формы поведения. Уже на ранних ступенях развития наблюдая поведение животных мы встречаем индивидуальноизменчивые формы поведения которые могут быть охарактеризованы как навыки новые реакции или действия которые возникают на основе выучки или индивидуального опыта и функционируют...
28201. Вклад В.Вундта в оформление психологии как самостоятельной науки. Создание психофизики (Г.Фехнер) 33 KB
  Кризис психологии выявился в наибольшей своей остроте когда сформировалась поведенческая психология рефлексология в России и бихевиоризм в Америке потому что поведенческая психология выдвинув поведение как предмет психологии с особенной остротой выявила кризис центрального понятия всей современной психологии понятия сознания. Согласно Вундту предметом изучения психологии является сознание а именно состояния сознания связи и отношения между ними законы которым они подчиняются. Используя метроном Вундт выделил ряд основных...
28202. Влияние идей И.М.Сеченова и И.П.Павлова на становление отечественной психологии 40.5 KB
  Иван Петрович Павлов 18491936 создатель материалистического учения о высшей нервной деятельности животных и человека. Учение Павлова о высшей нервной деятельности сложилось под влиянием материалистических традиций русской философии и развивало идеи И. В начале своей научной деятельности Павлов занимался преимущественно изучением сердца и кровеносных сосудов. Так было заложено начало павловского учения о трофической нервной системе особых нервных волокнах регулирующих процессы питания в тканях обмен веществ в них и тем самым...