Криптографическое преобразование конфеенциальной информации представленной в виде файлов по методу Гронсфельда

Министерство  Образования и Науки Республики Казахстан

Международная Бизнес Академия

Бизнес-колледж

Кафедра ИТ и ОТД

Курсовая  Работа

По дисциплине: «Программирование»

Тема: «Криптографическое преобразование конфеенциальной информации представленной в виде файлов по методу Гронсфельда » 
 
 
 

                                     Выполнил: уч-ся гр.кИС-08

                                               Сабитов Т.Р.________

                                                 Проверил: Краснов А.М ________ 

Оценка: _______

Караганда 2010 

Содержание.

1.Введение ..……………………....…………………………………………..2

2.История метода..………..…….…………………….....................................3 3.Актуальность и Проблематика программы.. ………………….……..…..4

4.Математическая модель.………………….………………………………..5

5.Блок схема алгоритма работы программы.……………………………….6

6.Описание Интерфейса……………………………………………………..10

7.Описание работы программы……………………………………………..13

8.Вывод……………………………………………………………………….18

9.Список литературы…………………….…………………………………..19

10.Приложение………………………………………………………………..20 

 

1.Введение

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

   Возникла потребность в разработке  таких шифров, ручная расшифровка  которых может потребовать очень  значительных усилий. И на смену  моноалфавитным шифрам пришли  полиалфавитные шифры. Абу аль-Кинди  первым предложил использовать многоалфавитный шифр. В европейских странах это произошло в эпоху Возрождения, когда развитие торговли потребовало надёжные способы защиты информации. Одним из первых предложил полиалфавитный шифр итальянский архитектор Батисте Альберти. В последствие данный шифр получил имя дипломата XVI века Блеза де Вижинера. Также вклад в развитие полиалфавитных шифров внёс немецкий аббат XVI века Иоганн Трисемус. Простым, но стойким способом полиалфавитной замены является шифр Плейфера, открытый в начале XIX века Чарльзом Уитстоном. Этот шифр использовался вплоть до I мировой войны. Последним словом в развитии полиалфавитных шифров стали так называемые роторные машины, которые позволяли легко создавать устойчивые к криптоатакам полиалфавитные шифры. Примером такой машины является немецкая машина Enigma, разработанная в 1917 г. Эдвардом Хеберном.

   С развитием ЭВМ полиалфавитные  шифры перестали быть столь  устойчивыми к криптоатакам, и,  так же, как в своё время  и моноалфавитные шифры, отошли  на задний план, став частью истории. Вводить понятие полиалфавитного шифра удобнее всего, сначала определив моноалфавитный шифр, что было сделано в исторических сведениях. Суть полиалфавитного шифра заключается в циклическом применении нескольких моноалфавитных шифров к определённому числу букв шифруемого текста. Например, пусть у нас имеется некоторое сообщение x1 , x2 , x3 , ….. xn , …… x2n , ….., которое надо зашифровать. При использовании полиалфавитного шифра имеется несколько моноалфавитных шифров (например, n штук). И в нашем случае к первой букве применяется первый моноалфавитный шифр, ко второй букве — второй, к третей — третий….. к n-ой букве — n-ый, а к n+1 опять первый, ну и так далее. Таким образом, получаётся довольно-таки сложная последовательность, которую уже не так просто вскрыть, как один моноалфавитный шифр. Самым важным эффектом, достигаемым при использовании полиалфавитного шифра, является маскировка частот появления тех или иных букв в тексте, на основании которой обычно очень легко вскрываются моноалфавитные шифры. 
 

2.История Метода

Шифр Гронсфельда.

   Этот шифр сложной замены, называемый шифром Гронсфельда, представляет собой модификацию шифра Цезаря числовым ключом. Для этого под буквами исходного сообщения записывают цифры числового ключа. Если ключ короче сообщения, то его запись циклически повторяют. Шифротекст получают примерно, как в шифре Цезаря, но отсчитывают по алфавиту не третью букву (как это делается в шифре Цезаря), а выбирают ту букву, которая смещена по алфавиту на соответствующую цифру ключа. Например зашифруем слово «Гронсфельд», ключом будет – 2531, и слово при шифровке будет выглядеть следующим образом(рис.1):

Сообщение   Г Р О Н С Ф Е Л Ь Д 
Ключ   2 5 3 1 2 5 3 1 2 5
Шифртекст   Е Х С О У Щ З П Ю И

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

   Чтобы зашифровать первую букву сообщения Г, используя первую цифру ключа 2 , нужно отсчитать вторую по порядку букву от Г в алфавите получается первая буква Е(рис.2).

Г Д Е
0 1 2

     Рис.2 Шифрование одного символа.

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

  

 

3. Актуальность и Проблематика программы

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

      Метод Гронсфельда использует в шифровке довольно простые, но разнообразные  ключи, и не придётся хранить файлы-таблицы  или т.п., что делает программу  более удобной, для простого пользователя.

 Актуальность программы заключается в том, что она:

  1. У программы достаточно простой интерфейс что позволит пользоваться программой любому, умеющему обращаться с компьютером человеку.
 
  1. Ключом шифрования и дешифровки могут быть: слова, простой набор символов или просто любые числа, что довольно упрощает использование программы и крайне усложняет процесс взлома. Т.к. если изначальный метод Гронсфельда учитывает только 10 символов 0-9, то в данном случае подобрать ключ почти невозможно, т.к. в шифре используются коды символов и могут быть использованы различные символы и количество возможных вариантов значительно увеличивается.
 
 
  1. Может шифровать  от простой текстовой информации до больших аудио и видео файлов, что значительно расширяет круг возможных пользователей.
 

 

4.Математическая модель

Алгоритм  программы будет выглядеть следующим  образом:

При шифровании:

   Для шифрования одного символа используется формула. 

Yi=Xi+Kj;   

формула 1 

X – массив с кодами символов открытого текста; 
K – массив с кодами символов ключа;

Y – массив с кодами символов закрытого текста; 

i – счетчик для массивов X,Y;

j – счетчик для массива K. 

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

 При  дешифровании: открытый текст будет равен разности шифрованного символа и символа ключа.

 Примечание: При дешифровке должен использоваться тот же ключ, что использовался  при шифровании, с учётом регистра (т.к. от регистра тоже зависит код символа).  

 

5.Блок схема алгоритма

Шифрование будет  происходить по следующей схеме(рис.3): 
 

 

Рис.3 Блок схема шифрования. 
 
 
 
 
 

Процесс дешифровки будет происходить практически одинаково, с разницей в том что будет не сложение а разность символов.(рис.4): 

 
 

      Рис.4 Блок схема дешифрования. 

 

6.Описание Интерфейса 

  Для создания полноценной и дееспособной программы потребуются две формы, в одной будут происходить все действия, а в другой будет содержаться информация как эти действия выполнять. Назовём главную форму Метод Гронсфельда(рис.5):

 

Рис.5 Главная форма.

    1- Название формы.

    2- Объект «LabeledEdit», это поле будет используется для отображается пути Исходного файла, , а в Caption написано пояснение к назначению данного компонента.

    3- Объект «LabeledEdit», это поле будет используется для отображается пути Результирующего файла, , а в Caption написано пояснение к назначению данного компонента.

    4- Объект «TButton», при нажатии на эту кнопку будет осуществляться  открытие исходного файла, посредством запуска компонента OpenDialog.

    5- Объект «TButton», при нажатии на эту кнопку будет осуществляться  открытие результирующего файла,посредством запуска компонента SaveDialog.

    6- Объект «LabeledEdit»,  это поле будет используется для ввода ключа по которому будет идти процесс шифрования и дешифровки, а в Caption написано пояснение к назначению данного компонента.

    7- Объект «TButton», при нажатии на эту кнопку будет происходить запуск процедуры шифрования открытого, нешифрованного файла.

    Для этой кнопки выставлен выделяющийся стиль Italic Bold, что подчёркивает её важность.

    8- Объект «TButton», при нажатии на эту кнопку будет происходить запуск дешифровки зашифрованного файла.

    Для этой кнопки выставлен выделяющийся стиль Italic Bold, что подчёркивает её важность.

    9- Объект «TBitBtn», кнопка при нажатии на которую, будет происходить выход из приложения. Для этой кнопки выставлен выделяющийся красный цвет и стиль Bold, что подчёркивает её важность а сам тип TBitBtn учитывает остдельное оформление кнопки, для этой выставлено оформление bkClose, что подчёркивает её важность.

    10- Объект «MainMenu», объект главного меню, в котором выставлена кнопка «Помощь», при нажатии на которую на экран будет выводиться отдельная форма со справкой т.е указанием как пользоваться приложением, на форме справки в MainMenu1 выставлена кнопка «Выход», закрывающая форму.

    11- Объект «OpenDialog», невидимый пользователю компонент, запускающий открытие используемого файла, запускающийся от процедуры нажатия кнопки.

    12- Объект «SaveDialog», невидимый пользователю компонент, запускающий сохранение результирующего файла, запускающийся от процедуры нажатия кнопки.

    13- Объект «TMemo», текстовое поле, предназначенное для вывода справочной информации на форме «Справка».  

       В основном  всё действие программы происходит  на одной главной форме.

    Это позволяет  не использовать глобальные переменные, наличие которых можешь замедлить  ход работы программы. Вторая форма  же предназначена только как справочная.

        Принцип  работы программы такой: 

    1. После нажатия кнопки «Открыть» открывается диалоговое окно выбора файла, посредством использования компонента «OpenDialog».
    2. После выбора файла адрес к этому файлу записывается в свойство Text Компонента «Labeled Edit1».
    3. При нажатии кнопки «Сохранить» открывается диалоговое окно сохранения файла, посредством использования компонента «SaveDialog».
    4. После выбора результирующего файла адрес к этому файлу записывается в свойство Text Компонента «Labeled Edit2».
    5. Далее вводится ключевое слово.
    6. После ввода ключевого слова нажимается кнопка «Шифровать». При нажатии этой кнопки адреса к файлам из LabeledEdit1,2 связываются с переменными, обозначающими файлы, причём если в этих компонентах ничего не указано, то будет выведено сообщение об ошибке.Далее происходит чтение байт из первого файла, сложение их с кодом символа ключа и запись во второй файл. При завершении процедуры происходит вывод сообщения «Шифрование Завершено».
    7. Процесс дешифровки подобен, но при выборе файлов исходным будет шифрованный, и вместо сложения числа байт с кодом символа, будет происходить вычитание. Следует напомнить что чтобы дешифрованный файл был читаемым его разрешение должно быть таким же как и у исходного файла.
    8. Для справки можно нажать на кнопку главного меню первой формы. Откроется вторая форма, с компонентом «Мемо», Текст Справки в который передаётся с нажатием кнопки открытия справки. Выход их формы справки осуществляется посредством нажатия подобной кнопки на главном меню.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     

7. Описание работы программы

  Чтобы проверить работает программа или нет, произведём шифрование текстового файла, содержащего в себе произвольный текст. 
 

  1. При запуске  программы на экране появится главная форма(рис.6).

Рис.6 Форма Метода Гронсфельда.

  1. Для начала выберем исходный файл нажатием на кнопку открыть(рис.7).

 

Рис.7 Кнопка открытия исходного файла. 

  1. В появившемся  окне выберем файл который будем  шифровать (Рис.8)
 
 

 

Рис. 8 Открытие Файла 

  1. На главной  форме появится путь исходного файла (Рис. 9)
 

     

Рис. 9 Форма с выбранным исходным файлом 
 
 

  1. Нажмём на кнопку сохранить, чтобы выбрать результирующий файл (рис.10).
 

 
 

Рис.10 Кнопка выбора результирующего файла. 

  1. Выберем директорию и введём имя результирующего файла, расширение предлагается ввести пользователю (но для дешифровки ОБЯЗАТЕЛЬНО знать расширение исходного файла, что повышает сложность взлома информации).
 
 
  1. После выбора результирующего файла мы увидим его путь, т.е. куда он будет сохранён. (Рис. 11)
 

     
     

Рис. 11 Форма с выбранным результирующим файлом 

  1. Далее пишем  ключ на основе которого будет идти шифровка, например слово «текст». (Рис. 12)
 

     

Рис. 12 Форма с Набранным ключом 

  1. Если по каким то причинам не были введены: ключевое слово, исходный файл или результирующий файл то на экран выведется сообщение  об ошибке и процесс шифрования и  дешифровки будет не выполним.
 

   Процесс Дешифрования зашифрованного текста проходит также за исключением того, что Исходным файлом будет шифрованный файл, а результирующим любой другой файл и ключом должно быть такое же ключевое слово, что использовалось при шифровке. (Рис. 13)

 

Рис. 13 Заполененная форма процесса Дешифрования 
 

Так же для пользователей добавлен пункт  «Справка» который открывается  через кнопку «Помощь» в меню. (Рис. 14) 

 

Рис. 14 Форма  окна справки 
 

Покажем наглядно, как происходит процесс шифрования. Зашифруем фразу «Метод Гронсфельда», за ключевое слово возьмём «текст»:

 

  1. Буква «М», символ буквы «204» + символ ключа «т(242)»будет символ «190».
  2. «е(229)» + «е(229)»= «202».
  3. «т(242)» + «к(234)»= «220».
  4. «о(238)» + «с(241)»= «223».
  5. «д(228)» + «т(242)»= «214».
  6. «_(32)» + «т(242)»= «18».
  7. «Г(195)» + «е(229)»= «168».
  8. «р(240)» + «к(234)»= «218».
  9. «о(238)» + «с(241)»= «223».
  10. «н(237)» + «т(242)»= «223».
  11. «с(241)» + «т(242)»= «227».
  12. «ф(244)» + «е(229)»= «217».
  13. «е(229)» + «к(234)»= «207».
  14. «л(235)» + «с(241)»= «220».
  15. «ь(252)» + «т(242)»= «238».
  16. «д(228)» + «т(242)»= «214».
  17. «а(224)» + «е(229)»= «197».
 

    
 
 
 
 

8. Вывод

 

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

   В нашем случае в качестве ключа используется алфавит, содержащий 256 символов, что делает данный метод шифрования достаточно криптостойким.

   Простой  интерфейс программы позволит  пользоваться ею любому человеку  владеющему компьютером и основами  компьютерной грамоты.

   Программа  позволяет шифровать файлы различной  величины и расширения, что увеличивает  количество потенциальных пользователей. 

    Ключевое слово может состоять из различных символов, что упрощает работу с программой. 

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

  1. А. В. Яковлев, А. А. Безбогов, В. В. Родин, В. Н. Шамкин «Криптографическая защита информации».
  2. . http://academout.ru/courseworks/information1/3.php

    3. http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%B0%D0%BB%D1%84%D0%B0%D0%B2%D0%B8%D1%82%D0%BD%D1%8B%D0%B9_%D1%88%D0%B8%D1%84%D1%80 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

10.Приложение

Текст программы. 

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

  ExtCtrls, StdCtrls, Buttons, ComCtrls, Menus;

type

  { TForm1 } 

  TForm1 = class(TForm)

    BitBtn1: TBitBtn;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    LabeledEdit1: TLabeledEdit;

    LabeledEdit2: TLabeledEdit;

    LabeledEdit3: TLabeledEdit;

    MainMenu1: TMainMenu;

    MenuItem1: TMenuItem;

    OpenDialog1: TOpenDialog;

    SaveDialog1: TSaveDialog;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure MenuItem1Click(Sender: TObject);

  private

    { private declarations }

  public

    { public declarations }

  end;  

var

  Form1: TForm1;

implementation

uses Unit2;

{ TForm1 } 

procedure TForm1.Button1Click(Sender: TObject);

begin

if form1.OpenDialog1.Execute then

form1.LabeledEdit1.Text:=form1.OpenDialog1.FileName; 

end; 

procedure TForm1.Button2Click(Sender: TObject);

begin

  if form1.SaveDialog1.Execute then

   form1.LabeledEdit2.Text:=form1.SaveDialog1.FileName;

end; 

procedure TForm1.Button3Click(Sender: TObject);

var

i,j,size,q,k:integer;

stcol:byte;

f1,f2:file of byte;

b1,b2:array[0..4095] of byte;

st,x:string;

begin

if (form1.LabeledEdit3.Text='')or (form1.LabeledEdit1.Text='')or (form1.LabeledEdit2.Text='')then

begin

showmessage('Не  выбранны используемые файлы  или не введён ключ.Процесс  не будет выполнен!');

 exit;

end;

  x:=form1.LabeledEdit1.Text;

  st:=form1.LabeledEdit3.Text;

  stcol:=length(st);

    AssignFile(f1,form1.LabeledEdit1.Text);

    AssignFile(f2,form1.LabeledEdit2.Text);

    reset(f1);

    rewrite(f2);

      while not eof(f1) do

        begin

          if (fileSize(x)-filepos(f1))>4095 then

            size:=4095

Криптографическое преобразование конфеенциальной информации представленной в виде файлов по методу Гронсфельда