DES алгоритмі арқылы шифрлеу

Автор работы: Пользователь скрыл имя, 14 Апреля 2013 в 13:17, курсовая работа

Краткое описание

Криптография – бұл ақпаратты қорғау ғылымы. Қорғау шифрлеу арқылы жетеді,яғни арнайы кілттік ақпаратты білмей қорғалған кіріс деректерінің қиын ашылуын жасйды. Кілт жасырын сақталынатын және дәл осы уақытта мүмкін болатын шифрленуді анықтайтын, криптожүйенің оңай ауыстырылатын бір бөлігі деп түсіндіріледі.
Шифрлеу методы кем дегенде екі қасиеттерге болу үшін:
Заңды алушы кері айналымды орындау және хатты шифрді аша алады;
Хатты тартып алған қарсыластың криптоаналитигі

Содержание

Кіріспе........................................................................................................................3
Алгоритм және оның қасиеттері:
а) Алгоритм DES.............................................................................................4
б) Алгоритм New DES...................................................................................6
Криптографиялық алгоритмдердің баға критерілері.............................................7
Блоктік шифр алгоритмінің бағалануының жылдамдығы..................................10
Қолданушы интерфейс түсініктемесі...................................................................12
Программа листингі...............................................................................................13
Қорытынды..............................................................................................................25
Пайдаланылған әдебиеттер тізімі..........................................................................26

Прикрепленные файлы: 1 файл

Курстық DES.doc

— 448.50 Кб (Скачать документ)

     Тілдерге арналған  критерилерді құру қажеттіліктердің  статикалық қатыспауын сипаттайтын  (символдардың пайда болу мүмкіншілігі  орналастырулары біркелкі) іс-тәжірибеде  шешілмейтін тапсырма болып табылады.

 

    Криптоанализдің дифференциалды тәсілі

    Дифференциалды криптоанализ  – бұл  блоктік шифрдың құпия  кілтін шешуге тырысуы r разрядты  рауындылық функция криптографикалық  әлсіз цифрлық операциялар шифрын  қайта қолдануға неггізделген. Анализді  болжау кезінде, әр циклда өзінің шифрлық ішкі кілті қолданылады. ДКА таңдалған, сонымен қатар әйгілі ашық мәтіндерді қолданады. Мұндай r циклдық шифрларды ашу мүмкіндігі дифференциалды қатысуына байланысты, ықтималдыққа ие. Бұл әдістің идеясы соңғы циклға арналған дифференциалдана іздеуден құралған. Оның негізінде циклдық ішкі кілтті анықтауға болады, содан кейін процедура қайталанады.Дифференциалды анализдің ерекше қасиеттері, ол мүлдем шифрдың алгебралық құрамында қолданылмайды сызықтылығы, тразентивтік, жабдықтық және т.б. дифференциалдық ықтималдылығы негізінде біркелкі болады.

 

 

Криптоанализдің сызықтық тәсілі

     Әдетте шифрлеу кезінде  2 модуль бойынша кілттік мәтінді  қосу және тарау  және араластыру  операциясын қолданылады. Ашық  және шифрленген мәтіндерді білетіндігіне   болжамды көп жағдайда шифрлау барысында араластыру және шашырату операциялары бойынша кілттер арқылы модуль 2 бойынша қосу қолданылады. Бұл әдіс әйгілі сызықтық комбинацияға қажетті типтердің әрбір биттерінің табуға арналған шифр шығысын белгілеуші сызықтық аппроксимация түсіндіруге бағытталған. Криптоанализ әдістерінің автоматтандыры-луы ЭЕМ көмегімен типтердің шектен асуы үшін алынатын нәтижелерді бағалауға арналған ашық мәтіндердің адекватты математикалық моделін құруды талап етеді. Көп жағдайда критоанализ табыстылығы нақтылы емес тілдерде ашық мәтіннің арақашықтылығына негізделеді. Сондықтанда шифрлау алдында мәліметтердің шектен тыс көбеюін төмендетпес үшін, яғни аралықтарды қысу нәтижесінде алынатын өзгерістерге жеткізбеу керек. Алдындағы қысу әдістерін пайдалану шектен тыс көбеюмен қатар ашық мәтін көлемінің жинақталу арқасында яғни көп уақытты алатын шифрлау процесін тездетуге әкеп соқтырады.

 

 

 

Блоктік шифр алгоритмінің бағалануының жылдамдығы

     Кез-келген криптографикалық  алгоритмдердің маңызды параметрі оның қалыптылығы мен қатар жылдамдылығы болып табылады. Объективті бағаның жылдамдылығын алу үшін алгоритмді шифрлау сипатталуын іске    асырылуын тәулсіз қолдау програмалық іске асырылуда алгоритм бағалылығының программа оптимизациясына тәуелді және мәліметтер базасының архитектурасының анықталған ориентация қолдану қажет. Алгоритмнің жылдамдығын теңестіре отырып бағалау үшін криптографиялық өзгеру циклын құраушы кейбір элементарлы операциялар санының ішкі есеп беруіне негізделген методиканы ұсыну пайдаланылады.

    Интер активті блоктік  шифрлауды анализдеу нәтижесінде  жылдамдығын бағалауда арналған  элементарлы операциялар реті  келесі операциялардың пайдалануын  ұсынады:

 – гаммирлеу (XOR) – g;

 – көбейту – s;

 – жылжыту – m;

– кесте түрінде орналастыру  (S – блокті алгоритмдер) – t.

 Элементарлы операцияларды  бағалау үшін арналған  блоктік  шифрлаудағы кең таралумен ерекшелінеді. Мәселен кейбір шифрлауда кездесетін  беттік орналастыру биттердің  саны бойынша жылжыту операциясын  пайдалану ұсынылады. Қосу және көбейту операциялары алгоритмді анықтайтын мәліметтерді ұсынуға қажетті және разрядтық ұяшықтар ұзындығы мен сәйкес келетін кейбір модульдер бойынша орындалады. Мысалы: егер алгоритм 16 разрядтық мәліметтермен жұмыс істеуге болатын болса, онда қосу және көбейту 216 модулі бойынша орындалады, ал 32 разрядтық мәліметтер үшін 232 модулі бойынша т.с.с

        Осыларды салыстыруға  прототип режимінде DES, NEWDES алгоритмін  алайық. Себебі бұл алгоритмдер  үшін қалыптылық және жылдамдылық   ерекшеліктері тән. Сонымен қатар бұлар криптографикалық алгоритмдерді аса зерттеген болып табылды.

         DES алгоритмінің  раунды кестелік орналастырулардың кеңейтілген және жинақталған еседі ретінде кілтпен қосу және беттік орналастыруларды келесідей сипаттауға болады:

                     Round DES = 16 * t + 2 * g + 32 * r

Орналастыруды басқарушы және аяқтаушы раунд санының есебімен келесіні аламыз:

DES = 2 * 64 * r + 16 (16 * t + 2 * g + 32 * r) = 640 * r + 256 * t + 32 * g

Ал 17 раундтан DES алгоритмі үшін раундты  былай бағалаймыз:

                    Round New DES = 16 * g + 8 * f

Мұндағы, f – ауыстыру және мәліметтерді біріктіруші раундтық функция осыдан кейін New DES алгоритмінің толығымен келесі үлгі бойынша көрсетуге болады:

New DES = 17 * (16 * g + 8 * (g + t)) = 272 * g + 136 * g +136 * t

Операциялар санынан алынған бағалауды 2 – кестедегідей біріктіруге болады:

Алгоритм 

Жылдамдығы 

DES

DES = 640 * r + 256 * t + 32 * g

New DES

New DES = 272 * g + 136 * f


2-кесте.  Элементарлы операциядағы  блоктік шифрлаудағы алгоритмдердің жылдамдығын салыстыру сипаттамалары

           RSA алгоритмі  блоктік шифрдың басқа алгоритмдердің  және  DES -ке қарағанда өте баяу, яғни DES – тің  программалық  орындалуы жылдам аппаратты орындалуда  (нақты құрылғыға байланысты) -100 есе және 10.000-ге дейін жылдам жұмыс жасайды.

 

 

 

 

 

 

 

 

 

 

 

 

Қолданушы интерфейс  түсініктемесі

 

 

 

Программа интерфейсі негізігі, бір  терезеден тұрады. Жоғарғы бөлігінде  кілт сөз жазатын жолақша бар. Кілт сөз 8 символдан құрылуы тиіс. Ал келесі төменгі қабатына шифрлеуге арналған мәтінді енгізіңіз.

Символдар саны қысқартылған 8 болуы керек, келесі жаңа қатарға өту 2символ болып саналады. Жазуды жеңілдету үшін,  енгізу терезесінде жазылған символдар саны көрсетіледі. Енгізу кезінде мәтін автоматты түрде бинарлық кодқа ауыстырылады. Бұл алгоритм жұмысының көрнектiлiгi үшiн iстелінген.

Мәтінді енгізіп  болғаннан кейін,  шифрлау үшін «Encode» кнопкасын басыңыз. Егер қысқартылған 8 шарты орындалмаса, онда экранға ERROR(қате) хабарламасы шығады.

          Шифрлеу  аяқталғаннан кейін төменгі терезеде шифрленген мәтін және оның бинарлық интерпретациясы пайда болады.

Кері шифрлеу  үшін шифрленген мәтінді қайта енгізіп және дұрыс кілт сөзін жазып «Decode» кнопкасын басыңыз.

Қосымша А.

unit Unit1;

 

interface

 

uses

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

  Dialogs, DES, StdCtrls;

 

type

  TForm1 = class(TForm)

    Label1: TLabel;

    Edit1: TEdit;

    Label2: TLabel;

    Memo1: TMemo;

    Button1: TButton;

    Label3: TLabel;

    Memo2: TMemo;

    Button2: TButton;

    Memo3: TMemo;

    Label4: TLabel;

    Memo4: TMemo;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Memo1Change(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Edit1Change(Sender: TObject);

    procedure Memo2Change(Sender: TObject);

  private

    { Private declarations }

  public

    Data:TBitString;

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

Var

I:Integer;

S:String;

begin

IF ((Length(Memo1.Text)mod 8 <> 0) OR (Length(Edit1.Text)mod 8 <> 0)) Then

  Begin

  MessageBox(Handle,

  'Количество букв  в сообщении должно быть кратоно  8 (перевод строки считается за 2 буквы)'+

  #10#13'Ключ должен  состоять из 8 символов',

  Nil,MB_ICONSTOP);

  Exit;

  End;

SetLength(Data,0);

I:=1;

While I<=Length(Memo1.Text) Do

  Begin

  S:=Copy(Memo1.Text,I,8);

  Data:=ConcatBits([Data,DESEncode(S,Edit1.Text)]);

  I:=I+8;

  End;

Memo2.Text:=BinToAnsiStr(Data);

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

I:Integer;

begin

IF ((Length(Memo2.Text)mod 8 <> 0) OR (Length(Edit1.Text)mod 8 <> 0)) Then

  Begin

  MessageBox(Handle,

  'Количество букв  в сообщении должно быть кратоно  8 (перевод строки считается за 2 буквы)'+

  #10#13'Ключ должен  состоять из 8 символов',

  Nil,MB_ICONSTOP);

  Exit;

  End;

SetLength(Data,0);

I:=1;

While I<=Length(Memo2.Text) Do

  Begin

  Data:=ConcatBits([Data,DESDecode(Copy(Memo2.Text,I,8),Edit1.Text)]);

  I:=I+8;

  End;

Memo1.Text:=BinToAnsiStr(Data);

end;

 

procedure TForm1.Memo1Change(Sender: TObject);

begin

IF Memo1.Text<>'' Then

  Memo3.Text:=BinToStr(AnsiStrToBin(Memo1.Text))

Else Memo3.Clear;

Label2.Caption:='Message - ('+IntToStr(Length(Memo1.Text))+' characters)';

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

Memo1.OnChange(Self);

Edit1.OnChange(Self);

end;

 

procedure TForm1.Edit1Change(Sender: TObject);

begin

Label4.Caption:=IntToStr(Length(Edit1.Text))+' characters';

end;

 

procedure TForm1.Memo2Change(Sender: TObject);

begin

IF Memo2.Text<>'' Then

  Memo4.Text:=BinToStr(AnsiStrToBin(Memo2.Text))

Else Memo4.Clear;

Label3.Caption:='Encoded message - ('+IntToStr(Length(Memo2.Text))+' characters)';

end;

 

end.

Қосымша Б

unit DES;

 

interface

 

Uses Windows, Classes, SysUtils, Math, Dialogs;

 

Type

  TBitString = Array of Boolean;

  PBitString = ^TBitString;

 

  TSplitKeyParts = record

    C:TBitString;

    D:TBitString;

    end;

  TSplitKey = Array[0..16]Of TSplitKeyParts;

 

  TConcatKey = Array[0..15]Of TBitString;

 

  TIPKeyParts = record

    L:TBitString;

    R:TBitString;

    end;

  TIPKey = Array[0..16]OF TIPKeyParts;

 

Const

DES_PC1:Array[0..55] Of Byte = (57,49,41,33,25,17,9,

                                1,58,50,42,34,26,18,

                                10,2,59,51,43,35,27,

                                19,11,3,60,52,44,36,

                                63,55,47,39,31,23,15,

                                7,62,54,46,38,30,22,

                                14,6,61,53,45,37,29,

                                21,13,5,28,20,12,4);

 

DES_PC2:Array[0..47] Of Byte = (14,17,11,24,1,5,

                                3,28,15,6,21,10,

                                23,19,12,4,26,8,

                                16,7,27,20,13,2,

                                41,52,31,37,47,55,

                                30,40,51,45,33,48,

                                44,49,39,56,34,53,

                                46,42,50,36,29,32);

 

DES_IP:Array[0..63] Of Byte = (58,50,42,34,26,18,10,2,

                               60,52,44,36,28,20,12,4,

                               62,54,46,38,30,22,14,6,

                               64,56,48,40,32,24,16,8,

                               57,49,41,33,25,17,9,1,

                               59,51,43,35,27,19,11,3,

                               61,53,45,37,29,21,13,5,

                               63,55,47,39,31,23,15,7);

 

DES_E:Array[0..47] Of Byte = (32,1,2,3,4,5,

                              4,5,6,7,8,9,

                              8,9,10,11,12,13,

                              12,13,14,15,16,17,

                              16,17,18,19,20,21,

                              20,21,22,23,24,25,

                              24,25,26,27,28,29,

                              28,29,30,31,32,1);

 

S_BOXES:Array[0..7,0..3,0..15]Of Byte = (

((14,04,13,01,02,15,11,08,03,10,06,12,05,09,00,07),

  (00,15,07,04,14,02,13,01,10,06,12,11,09,05,03,08),

  (04,01,14,08,13,06,02,11,15,12,09,07,03,10,05,00),

  (15,12,08,02,04,09,01,07,05,11,03,14,10,00,06,13)),

 

((15,01,08,14,06,11,03,04,09,07,02,13,12,00,05,10),

(03,13,04,07,15,02,08,14,12,00,01,10,06,09,11,05),

(00,14,07,11,10,04,13,01,05,08,12,06,09,03,02,15),

(13,08,10,01,03,15,04,02,11,06,07,12,00,05,14,09)),

 

((10,00,09,14,06,03,15,05,01,13,12,07,11,04,02,08),

(13,07,00,09,03,04,06,10,02,08,05,14,12,11,15,01),

(13,06,04,09,08,15,03,00,11,01,02,12,05,10,14,07),

(01,10,13,00,06,09,08,07,04,15,14,03,11,05,02,12)),

Информация о работе DES алгоритмі арқылы шифрлеу