Эллиптикалық криптография

Автор: Пользователь скрыл имя, 24 Октября 2011 в 17:52, дипломная работа

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

Осыған орай дипломдық жұмыстың мақсаты – RSA алгоритмін қазіргі таңдағы технологияларды пайдалана отырып, ақпаратты қорғау саласында кеңінен қолдана алатын автоматтандыру жүйесін құру.
Жұмыстың мақсаты дипломдық жұмыс барысында шешілген келесі міндеттерді анықтады:
Сандар теориясын, оның бөлімдерінің бірі жан сандарды зерттеу. Өте үлкен жай сандарды іздеу
Екілік жүйедегі сандармен жұмыс жасау
Ашық және жабық кілттердің құрылымын зерттеу
Бір компьютерден екінші бір компьютерге ақпаратты шифрлеп жібергенде, барлық қауіпсіздік ережелерін сақтау және зерттеу

Содержание

КІРІСПЕ 3
КРИПТОГРАФИЯ НЕГІЗДЕМЕСІ 5
1 Криптографияның негізгі түсініктемелері мен тарихы 5
2 Математикалық негіздемелер 9
2.1 Күрделілік теориясы 9
2.2 Сандар теориясы 13
2.3 Жай сандар генерациясы 18
3 Криптожүйелердің жұмыс істеу принциптері 20
3.1 Криптографиялық кілттерді басқару 21
3.2 Симметриялық (құпиялы) әдістемелер мен алгоритмдер 22
3.3 Асимметриялық (ашық) әдістемелер мен алгоритмдер 25
4 АШЫҚ КІЛТТІ ҚОЛДАНАТЫН АЛГОРИТМДЕР 29
4.1 Ашық кілтті қолданатын алгоритмдердің қауіпсіздігі 29
4.2 Қол қапшық алгоритмы 30
4.3 RSA алгоритмі 33
4.4. RSA шифрлеу жүйесі 35
4.5 RSA алгоритмінің жұмыс істеу жылдамдығы 39
4.6 RSA қауіпсіздігі 40
4.7 RSA бағдарламалық жабдықтаманың сипаттамасы 48
5 .Эллиптикалық криптография ??
5.1 ??
5.2 . ??
5.3 . ??
5.4 ??
5.5 . ??
6 .Программалық коды ??
6.1 Эллиптикалық қисықтың программалық коды ??
6.2 RSA жүйесінің программалық коды . ??

ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ

Работа содержит 1 файл

Диплом Аскара.doc

— 948.50 Кб (Скачать)

     RSA-ның  жалпы модулін  анықтау

     RSA-ның  қолданылуы кезінде барлық тұтынушыларға  бірдей n модулін таратып, бірақ  әрқайсысына е мен d-ның әртүрлі  мәндерін беру керек. Өкінішке  орай, бұл әдіс жұмыс істемейді.Бұның  себебі, егер бір хабарлама қай кезде болмасын әртүрлі дәреже көрсеткіштерімен шифрленсе, және бұл екі көрсеткіштер сыбайлас жай сандар болса, онда ашық мәтін дешифрлеу кодын білмей тұрып та анықталуы мүмкін.

     m – хабарламаның ашық мәтіні  болсын. е және е2- шифрлеу кілттері. n- жалпы модуль. Шифрлік мәтіндері мынадай болады:

     с1= mе1mod n

     с2= mе2mod n

Криптоаналитик n, е1, е2, с1, с2 біледі. Енді m-ді табу керек. ежәне е2- сыбайлас жай сандар, онда Эвклидтің r мен s кеңейтілген алгоритмі бойынша

     1 +sе2=1

r-ді  теріс сан деп есептей отырып, с1-1 кеңейтілген алгоритмін қайта пайдалануға болады. Содан соң:

     1-1)-r* с2s= m mod n.

Бұл жүйелерді  анықтаудың екі әдісі белгілі. Біріншісі n-ді көбейткіштерге жіктеудің ықтимал  әдісін пайдаланса, екіншісі құпия  кілтті есептеудің детерминациялық әдісін көбейткіштерге жіктемей-ақ есептейді. 
 
 

     RSA-ның  шифрлеуінің кіші  көрсеткішін анықтау

     RSA-ның  шифрленуі мен  оның қолын  тексеру е үшін кіші мән  таңдалынса, тез орындалады. Егер  е(е+1)/2 ашық кілтті әртүрлі хабарламалармен сызықтық қатынаста болса және е мәні тұрақты болса, бұл жүйені анықтау әдісі бар. Егер хабарламалар аз болса, онда ол аса қиын емес. Егер хабарламалар бірдей болса, онда е хабарлама жеткілікті. Хабарламаларды кездейсоқ сандармен толықтырған ыңғайлы.

Бұл mеmod n≠mе екендігін дәлелдейді. Хабарламаларды шифрлемес бұрын кездейсоқ сандармен толықтырыңдар, мұнда оның m мәні шамамен n – мен бірдей болу керек. 

     RSA-ны  қолдану арқылы  шифрлену мен қолын  анықтау

     Хабарламаларды  шифрлемес бұрын оған қол қоюдың маңызы зор, алайда практикада бұл әдісті ешкім қолданбайды. Алиса Бобқа хабарлама жібергісі келеді.Алдымен ол оны Бобтың ашық кілтімен шифрлейді, содан соң өзінің жабық кілтімен қол қояды. Оның шифрленген және қол қойылған хабарламасы осындай:

     mеβ (mod nβ) mod nА

Боб Алиса  оған m емес, m’ жібергенін былай дәлелдей алады. Бобқа nβ көбейткіштерге қалай жіктелетіндігі белгілі болғандықтан, ол nβ бойынша дискретті логарифмді есептей алады. Олай болса, оған тек х мәнін табу ғана қалды:

     mα=m mod nβ

Сонда ол хеβ-ні жаңа дәреже көрсеткіші ретінде көрсете алады, бұрынғы nβ-ні сақтай отырып, Алиса оған m’ жібергенін дәлелдей алады.

     4.7 RSA бағдарламалық жабдықтаманың сипаттамасы

 

     Төменде бағдарлама жұмысының сызбасы көрсетілген. Оған қарап жұмыстың іс-әрекетін байқауға болады (x-сурет). 
 

     Бағдарлама жұмысының жалпы үлгісі 

 
 
 

 

       6.Программалық код

6.1 Эллиптикалық криптографияның программдық коды 

     unit Unit1; 

     interface 

     uses

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

       Dialogs, Grids, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart,

       DbChart; 

     type

       TForm1 = class(TForm)

         Edit1: TEdit;

         Label1: TLabel;

         Edit2: TEdit;

         Label2: TLabel;

         Edit3: TEdit;

         Label3: TLabel;

         Button1: TButton;

         Grid1: TStringGrid;

         Edit4: TEdit;

         Label4: TLabel;

         DBChart1: TDBChart;

         Series1: TPointSeries;

         Button2: TButton;

         Label5: TLabel;

         Label6: TLabel;

         Edit5: TEdit;

         Button3: TButton;

         Edit6: TEdit;

         Edit7: TEdit;

         Edit8: TEdit;

         Edit9: TEdit;

         Label9: TLabel;

         Label10: TLabel;

         Edit10: TEdit;

         Edit11: TEdit;

         CheckBox1: TCheckBox;

         CheckBox2: TCheckBox;

         Label11: TLabel;

         Label12: TLabel;

         Label13: TLabel;

         Label15: TLabel;

         Edit12: TEdit;

         Label16: TLabel;

         Edit13: TEdit;

         Edit14: TEdit;

         Edit15: TEdit;

         Edit16: TEdit;

         Edit17: TEdit;

         Edit18: TEdit;

         Edit19: TEdit;

         Edit20: TEdit;

         Label17: TLabel;

         Button4: TButton;

         Label18: TLabel;

         Label19: TLabel;

         Label20: TLabel;

         Label21: TLabel;

         Label22: TLabel;

         Button5: TButton;

         Edit21: TEdit;

         Edit22: TEdit;

         Label23: TLabel;

         Edit23: TEdit;

         Edit24: TEdit;

         Label24: TLabel;

         Button6: TButton;

         Edit25: TEdit;

         Edit26: TEdit;

         Label7: TLabel;

         Label8: TLabel;

         Timer1: TTimer;

         CheckBox3: TCheckBox;

         CheckBox4: TCheckBox;

         Grid2: TStringGrid;

         Button7: TButton;

         Timer2: TTimer;

         procedure Button1Click(Sender: TObject);

       

         procedure FormCreate(Sender: TObject);

         procedure Button2Click(Sender: TObject);

         procedure Edit4Change(Sender: TObject);

         procedure Button3Click(Sender: TObject);

         procedure CheckBox1Click(Sender: TObject);

         procedure CheckBox2Click(Sender: TObject);

         procedure Button4Click(Sender: TObject);

         procedure Button5Click(Sender: TObject);

         procedure Button6Click(Sender: TObject); 

       procedure Timer1Timer(Sender: TObject);

         procedure CheckBox3Click(Sender: TObject);

         procedure CheckBox4Click(Sender: TObject);

         procedure Button7Click(Sender: TObject);

         procedure Timer2Timer(Sender: TObject);

       private

         { Private declarations }

       public

         { Public declarations }

       end; 

     var

       Form1: TForm1; 

     implementation 

     {$R *.dfm}

     procedure TForm1.Button1Click(Sender: TObject);

     Var a,b,c,m,t,s:longint; Var aa,bb,i,j,q,w:integer;

     begin

     randomize;

      m:=strtoint(edit4.Text);

      s:=0;

      For i:=0 to m-1 do                             begin

             a:=i;

           b:=a*strtoint(edit1.Text) mod m;

           c:=a*a*a mod m; 
 

           b:=(c+b+strtoint(edit2.Text)) mod m; 
 

            j:=0;

            for j:=0 to m-1 do    begin

            c:=j;

            t:=(c*c) mod m;

            q:=strtoint(edit5.Text)*c mod m;

            t:=(t+q) mod m;

            if t=b then

            s:=s+1;

            if t=b then

            Grid1.ColCount:=Grid1.ColCount+1;

            if t=b then

            Grid1.cells[s,1]:=inttostr(c);

            if t=b then

            Grid1.Cells[s,0]:=inttostr(i);

                                  end;

            Grid2.ColCount:=s+1;

                                                     end; 

          Edit3.Text:=inttostr(s);

          DBChart1.BottomAxis.Minimum:=-1;

          DbChart1.BottomAxis.Maximum:=m;

          DBChart1.LeftAxis.Minimum:=-1;

          DBChart1.LeftAxis.Maximum:=m;

     {q:=1+random(m-1);

     w:=1+random(m-1);

     edit10.Text:=Inttostr(Strtoint(Grid1.Cells[0,q]));

     edit11.Text:=Inttostr(Strtoint(Grid1.Cells[1,q]));

     edit21.Text:=Inttostr(Strtoint(Grid1.Cells[0,w]));

     edit22.Text:=Inttostr(Strtoint(Grid1.Cells[1,w]));

      }

     end; 
 
 

     procedure TForm1.FormCreate(Sender: TObject);

       Var i,m:integer;

     begin 

     randomize;

         m:=strtoint(edit4.Text);

         Grid1.ColCount:=1;

         Grid1.Cells[0,0]:='X';

         Grid1.Cells[0,1]:='Y'; 

         edit15.Text:=inttostr(2+random(m-2));

Информация о работе Эллиптикалық криптография