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

Автор работы: Пользователь скрыл имя, 22 Апреля 2014 в 12:54, реферат

Описание работы

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

Содержание работы

Введение
История развития криптологии
Шифрование и расшифрование
Шифры и ключи
Симметричные алгоритмы шифрования
Перестановочные шифры
Простой столбцевой перестановочный шифр
Перестановочный шифр с ключевым словом
Подстановочные шифры
Шифр Цезаря
Аффинная криптосистема
Шифр Цезаря с ключевым словом
Метод полосок
Многоалфавитные системы
Шифр Виженера
Примеры

Заключение
Литература
Приложения

Файлы: 1 файл

исследовательская работа.docx

— 94.62 Кб (Скачать файл)

С помощью многоалфавитного шифра сообщение «ГДЕ АББА» можно зашифровать несколькими способами:

19-83-32-48-4-7-12 

10-99-15-12-4-14-12 ;

и так далее...

Для каждой буквы исходного алфавита создается некоторое множество символов шифрограммы так, что множества каждой буквы не содержат одинаковых элементов. Многоалфавитные шифры изменяют картину статистических частот появления букв и этим затрудняют вскрытие шифра без знания ключа.

Рассмотрим еще один многоалфавитный шифр замены, который был описан в 1585 году французским дипломатом Блезом де Виженером. Шифрование производится с помощью, так называемой таблицы Виженера. Каждая строка в этой таблице соответствует одному шифру простой замены (типа шифра Цезаря). При шифровании сообщения его записывают в строку, а под ним помещают ключ. В случае, если ключ оказывается короче сообщения, то ключ циклически повторяют. Шифровку получают, находя символ в матрице букв шифрограммы. Символ шифрограммы находится на пересечении столбца с буквой открытого текста и строки с соответствующей буквой ключа.

Предположим, что нужно зашифровать сообщение «ГДЕ АББА». В качестве ключа выберем слово «ДЕВА». В результате получим:

сообщение

Г

Д

Е

А

Б

Б

А

ключ

Д

Е

В

А

Д

Е

В

шифровка

З

Й

З

А

Е

Ж

В


В результате преобразований получится шифровка: ЗЙЗАЕЖВ

Рассмотрим примеры шифрования сообщения методом перестановки.

Идея этого метода криптографии заключается в том, что запись открытого текста и последующее считывание шифровки производится по разным путям некоторой геометрической фигуры (например, квадрата).

Для пояснения идеи возьмем квадрат (матрицу) 8x8, будем записывать текст последовательно по строкам сверху вниз, а считывать по столбцам последовательно слева направо.

Предположим, что требуется зашифровать сообщение:

НА ПЕРВОМ КУРСЕ ТЯЖЕЛО УЧИТЬСЯ ТОЛЬКО ПЕРВЫЕ ЧЕТЫРЕ ГОДА

ДЕКАНАТ

Н А _ П Е Р В О

М_КУРСЕ_

Т Я Ж Е Л 0 _ У

Ч И Т Ь С Я_т

0 Л Ь К 0 _ П Е 

Р В Ы Е _ Ч Е Т 

Ы Р Е _ Г О Д А 

_ Д Е К А Н А  Т

В таблице символом «_» обозначен пробел.

В результате преобразований получится шифровка:

НМТЧОРЫ_А_ЯИЛВРД_КЖТЬЫЕЕПУЕЬКЕ_КЕРЛСО_ГАРСОЯ_ ЧОНВЕ_ПЕДАО_УТЕТАТ

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

Методы замены и перестановки по отдельности не обеспечивают необходимую криптостойкость. Поэтому их используют совместно, а также в сочетании с аддитивным методом.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 Заключение

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

До середины прошлого столетия в криптографии активно развиваются классические методы замены и перестановки (шифр Цезаря, шифр Стейла). Так знаменитый шифр Энигма можно трактовать как удачную на тот момент техническую  модель шифра Виженера.

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

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

Значение криптографии в современном информационном обществе трудно переоценить. Новая информационная инфраструктура создает новые опасности для информации. Открытые каналы Internet могут стать серьезной угрозой безопасности передачи данных. Однако и криптография не стоит на месте. Теперь она стала доступна широким массам пользователей. При помощи широкодоступных алгоритмов шифрования, а также цифровых подписей и сертификатов, пользователи могут добиться безопасности и скрытности передачи своих данных. Нужно только уметь всем этим пользоваться.

 

 

 

 

 

 

 

 

Литература

  1.  Акритас А.П. Основы компьютерной алгебры с приложениями. – М., Мир. 1994. −77-84 с.
  2. Алферов А. П., Зубов А. Ю., Кузьмин А. С., Черемушкин А. В. Основы криптографии: Учебное пособие. 3-е изд., испр. и доп. – М.: Гелиос АРВ, 2005. – 480 с.
  3. Бабаш А.В., Шанкин Г.П. История криптографии. Часть I. – М.: Гелиос АРВ, 2002. – 254 с.
  4. Баричев С.Г., Гончаров В.В., Серов Р.Е. Основы современной криптографии. – М.: Горячая линия – Телеком, 2002. – 168 с.
  5. Гарднер М. От мозаик Пенроуза к надежным шифрам. – М., Мир. 1993. – 88-92 с.
  6. Холл М. Комбинаторика. – М.: Мир, 1970. – 133 с.
  7. Чмора А.Л. Современная прикладная криптография. 2-е изд., стер. – М.: Гелиос АРВ, 2002. – 256 с.
  8. Шеннон К. Теория связи в секретных системах // В кн.: Работы по теории информации и кибернетике. – М.: ИЛ, 1963. – 35 с.
  9. Шнайдер Б. Прикладная криптография. 2-е изд, – М: 2000. – 72 с.

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЯ

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

Шифра Цезаря

Program Cezar;

const z=[' ','.',','];

 var

       nm:integer;

       f,f1,f2:text;

       s:string;  {АЛФАВИТ}

       cod:integer;

 procedure shifr(var f,f1:text;s:string;k:integer);

   var i,j,n:integer;g:char;

   begin

     {s:='АБВГД...';}

     {nm:=length(s);}

     repeat

        read(f,g);

        for i:=1 to nm do

        if g=s[i] then begin

        j:=i+cod;

        if j<=nm then write(f1,s[j])

        else begin

        j:=j-nm;write(f1,s[j])

        end;

       write(s[j]);

end;

        if g in z then write(f1,g);

        if eoln(f) then writeln(f1)

        until eof(f);

        close(f);

        close(f1);

      writeln;

end;

procedure deshifr(var f1,f2:text;s:string;cod:integer);

var i,j,n:integer;x:char;

begin

   {nm:=length(s);}

   repeat

     read(f1,x);

     for i:=1 to nm do

     if x=s[i] then begin

     j:=i-cod;

     if j>=1 then write(f2,s[j])

     else begin

     j:=j+nm;

     write(f2,s[j]);

     end;

     write(s[j]);

     end;

     if x in z then write(f2,x);

     if eoln(f1) then writeln(f2)

   until eof(f1);close(f1);close(f2);

     writeln;

end;

 

begin

     s:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфцхчшщъыьэюя';

     {s:='abcdefghijklmnopqrstyvwxyz';}

     nm:=length(s);

     writeln( 'введите код');

     read(cod);

     while cod>nm do cod:=cod-nm;

     assign(f,'text.txt');

     assign(f1,'shifr.txt');

     reset(f);

     rewrite(f1);

 

     shifr(f,f1,s,cod);

 

     assign(f1,'shifr.txt');

     assign(f2,'deshifr.txt');

     reset(f1);rewrite(f2);

     deshifr(f1,f2,s,cod);

end.

 

Протокол отладки

введите код

3

пгпгпюогугпхтгтгпюоугпхпюпюолУГПЦ

мамамыларамупапамылрамумымылиРАМУ

 

 

 

 

 

Шифр Виженера

Форма в режиме конструирования

 

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

uses vcl;

//$VCLDESIGN+

var

  Form1: Form;

  TextLabel1: TextLabel;

  TextLabel2: TextLabel;

  TextLabel3: TextLabel;

  Edit1: Edit;

  Edit2: Edit;

  Edit3: Edit;

  Button1: Button;

  Button2: Button;

  Button3: Button;

//$VCLDESIGN-

 

procedure Button1OnClick;

  var

soob,sh___soob,kl: string;

i,j,n,m,k: integer;

kod___soob,kod___kl,kod___sh___soob,kod___sh___soob1,kod___soob1,code0,lenalph: integer;

begin

Edit3.Text:='';

Edit1.Text:=uppercase(Edit1.Text);

Edit2.Text:=uppercase(Edit2.Text);

code0 := ord('А');

lenalph := 32;

kl:=Edit1.Text;

soob:=Edit2.Text;

sh___soob:=soob;

n:=ord(soob[0]); {n - длина сообщения}

m:=ord(kl[0]); {m - длина ключа}

j:=1;

for i:=1 to n do

begin

soob[i]:=upcase(soob[i]); {Преобразуем строчные}

kl[i]:=upcase(kl[i]); {буквы в прописные}

kod___soob:=ord(soob[i])-code0; {Получаем коды символов}

kod___kl:=ord(kl[j])-code0; {сообщения и ключа}

kod___sh___soob:=(kod___soob+kod___kl); {Складываем по модулю lenalph}

if kod___sh___soob>lenalph then {эти коды}

kod___sh___soob:=kod___sh___soob-lenalph;

kod___sh___soob1:=kod___sh___soob+code0; {Преобразовываем полученный}

sh___soob[i]:=char(kod___sh___soob1); {код в символ шифр сообщения}

k:=j mod m; {Если j-й символ ключа}

if k<>0 then j:=j+1 {является не последним, то}

else j:=1; {увеличиваем j на 1}

{Иначе указатель j=1}

end;

Edit3.Text:=uppercase(sh___soob);

end;

 

procedure Button2OnClick;

begin

  Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

end;

 

procedure Button3OnClick;

var

soob,sh___soob,kl: string;

i,j,n,m,k: integer;

kod___soob,kod___kl,kod___sh___soob,kod___sh___soob1,kod___soob1,code0,lenalph: integer;

begin

Edit2.Text:='';

Edit1.Text:=uppercase(Edit1.Text);

Edit3.Text:=uppercase(Edit3.Text);

code0 := ord('А');

lenalph := 32;

kl:=Edit1.Text;

sh___soob:=Edit3.Text;

n:=ord(sh___soob[0]); {n - длина сообщения}

m:=ord(kl[0]); {m - длина ключа}

j:=1;

for i:=1 to n do

begin

kod___sh___soob:=ord(sh___soob[i])-code0; {Получаем коды символов}

kod___kl:=ord(kl[j])-code0; {шифросообщения и ключа}

kod___soob:=(kod___sh___soob-kod___kl); {Вычитаем по модулю lenalph}

if kod___soob<0 then {из кода шифросообщения}

kod___soob:=(kod___sh___soob+lenalph-kod___kl); {код ключа}

kod___soob1:=kod___soob+code0; {Преобразовываем полученный}

soob[i]:=char(kod___soob1); {код в символ исходного сообщения}

k:=j mod m; {Если j-й символ ключа}

if k<>0 then j:=j+1 {является не последним, то}

else j:=1; {увеличиваем j на 1}

{Иначе указатель j=1}

end;

Edit2.Text:=soob;

end;

 

procedure InitControls;

begin

  Form1:= Form.Create(0,0,644,460);

  Form1.InitControl(True,False,alNone,crDefault,clBtnFace,'Виженер','');

  TextLabel1:= TextLabel.Create(Form1,40,32,25,13);

  TextLabel1.InitControl(True,True,alNone,crDefault,clBtnFace,'ключ','');

  TextLabel2:= TextLabel.Create(Form1,32,88,107,13);

  TextLabel2.InitControl(True,True,alNone,crDefault,clBtnFace,'исходное сообщение','');

  TextLabel3:= TextLabel.Create(Form1,32,136,142,13);

  TextLabel3.InitControl(True,True,alNone,crDefault,clBtnFace,'зашифрованное сообщение','');

  Edit1:= Edit.Create(Form1,208,24,121,21);

  Edit1.InitControl(True,True,alNone,crDefault,clWindow,'','');

  Edit2:= Edit.Create(Form1,208,80,121,21);

  Edit2.InitControl(True,True,alNone,crDefault,clWindow,'','');

  Edit3:= Edit.Create(Form1,208,128,121,21);

  Edit3.InitControl(True,True,alNone,crDefault,clWindow,'','');

  Button1:= Button.Create(Form1,8,232,81,33);

  Button1.InitControl(True,True,alNone,crDefault,0,'Зашифровать','');

  Button2:= Button.Create(Form1,120,232,97,33);

  Button2.InitControl(True,True,alNone,crDefault,0,'Очистить','');

  Button3:= Button.Create(Form1,232,232,105,33);

  Button3.InitControl(True,True,alNone,crDefault,0,'Расшифровать','');

  Button1.OnClick:=Button1OnClick;

  Button2.OnClick:=Button2OnClick;

  Button3.OnClick:=Button3OnClick;

  Form1.Position:= poScreenCenter;

  Form1.Show;

end;

begin

  InitControls;

end.

Форма в режиме выполнения

 


Информация о работе Криптографические методы и средства защиты информации