Автор: Пользователь скрыл имя, 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 жүйесінің программалық коды . ??
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ
EXPTIME мәселелер қатары бар. Бұл мәселелер экспоненциалды уақытта шешіледі. EXPTIME-толық мәселелер расында да детерминацияланған полиномиальды уақыт аралығында шешіле алмайтындығы дәлелденуі мүмкін. Сонымен қатар, Р EXPTIME-ге тең болмайтындығы дәлелденген.
Айыру арифметикасы
Айыру арифметикасын барлығымызға мектеп кезінен мәлім. Оны кейде «арифметикалық сағат» деп те атаған. Егер Милдред әкесіне үйде 10:00 болам деп айтып, 13 сағатқа кешігіп қалса, онда үйіне ол қашан келеді және неше жылға әкесі оны жүргізуші құқығынан айырады? Бұл арифметика 12 модуль бойынша. Жиырма үш 12 модулі бойынша 11 болады.
(10+13) mod 12 = 23 mod 12 = 11 mod 12
Бұны басқаша 23 пен 11 эквиваленттігі бойынша 12 модулімен жазуға болады:
10+13 =11(mod 12)
Көбінесе, егер а = b+кn кейбір бүтін к үшін болса, а = b (с) болады. Егер а кері емес болса және b 0 мен n аралығында орналасса, онда b-ны а-ның n-ға қатынасы кезіндегі қалдығы деп қарастыруға болады. Кейде b а n модулі бойынша есептен алу деп аталады. Кейде а n модулі бойынша конгруэнтты b деп аталады. Екеуі де бір мағынаны береді.
0-ден
n-1-ге дейінгі сандар жиыны
n модулі бойынша есептен алудың
толық жиынын құрайды. Бұл
а mod n операциясы 0 мен n-1 аралығында орналасқан кез-келген бүтін а-ның қалдығын білдіреді. Бұл операция модульге келтіру деп аталады. Мысалы, 5 mod 3= 2.
Бұл mod анықтамасы бағдарламалау тілінде көрсетілген анықтамалардан ерекшеленуі мүмкін. Мысалы, PASСAL тілінде қалдықты алу операторы кейде кері сан шығарады. Ол -(n-1) және n-1 аралығындағы санды қайтарады. С тілінде % операторы бірінші өрнекті екіншісіне бөлуден алынған қалдықты қайтарады, ол егер операндалардың кез-келгені кері сан болса кері мән береді. Бұл кітаптағы барлық алгоритмдер үшін егер ол кері санды шығарып тұрса, қалдықты алу операциясының нәтижесін алу үшін не қосатындығын тексеріңдер.
Қалдықтар
арифметикасы жай арифметикаға өте
ұқсас:ол коммутативті және дистрибутивті.
Сонымен қатар, әрбір аралық нәтижені
n модулі бойынша келтіру жалпы есептеудегі
соңғы нәтижені n модулі бойынша келтіргендегі
нәтижені береді.
(а+b)
mod n=((а mod n)+(b mod n)) ) mod n
(1)
(а-b)
mod n=((а mod n)-(b mod n)) ) mod n
(а*b)
mod n=(( а mod n)*(b mod n)) ) mod n
(а*(b+с))
mod n=(((а*b) mod n)+((а*с) mod n)) mod n
(4)
mod
n есептеу әдетте криптографияда
көп қолданылады, себебі
ах
mod n.
Сондай тәсілдің бірі модуль бойынша көбейтулер санын азайтуға тырысады, екіншісі – модуль бойынша жеке есептеулерді қолдану. Операциялар дистрибутивті болғандықтан, дәрежеге келтіруді тізбекті көбейтулер ағынын әр ретте олардың нәтижелерін ала отырып тез орындауға болады. Қазір сіздер айырмашылықты байқамайсыңдар, бірақ ол тек 200-биттік сандарды көбейткен кезде білінеді.
Мысалы, егер сіз а8 mod n есептегіңіз келсе, оны 7 рет көбейтіп, 1 рет модулі бойынша келтірудің қажеті жоқ:
(а*а*а*а*а*а*а) mod n
Оның орнына 3 кіші көбейтулер мен 3 кіші модульге келтіруді орындаңыз:
((а2 mod n)2 mod n2) mod n
Дәл осылай,
a16 mod n =(((а2 mod n)2 mod n)2 mod n)2 mod n
aх есептеу, мұнда х 2-нің дәрежесі болмайды, аса қиын емес. Екілік жазба х-ті 2:25 дәрежелер қосындысы түрінде береді- бұл бинарлық 11001, сондықтан 25=24+23+20. Сондықтан
a25 mod n=(а*а24) mod n=(а*а8*а16) ) mod n=(а*((а2)2)2)(((а2)2)2)2) mod n=(а*а(((а*а2)2)2)2) ) mod n
Аралық нәтижелерді
(((((((а2mod n)*а) 2mod n) 2 mod n) 2 mod n) 2 mod n) 2*а) mod n
Мұндай
әдіс қосу тізбегі немесе екілік квадрат
пен көбейту әдісі деп аталады.
Ол негізінде санның екілік көрінісі
жататын қосудың жай және айқын
тізбегін қолданады.
Модуль бойынша кері мәндер
Кері мән дегеніміз не екендігі естеріңізде ме? 4-1/4 үшін кері мән, себебі 4*1/4=1. Есептеу әлемінде мәселе күрделенеді: 4*х=1(mod 7)
Бұл теңдеу х пен к анықталуына эквивалентті, 4х=7 к+1
Мұнда,
х пен к –бүтін сандар. Жалпы есеп
мақсаты х-ті табу, ол
1=(а*х)
mod n
Бұны
былай да жазуға болады:
а-1=х(mod
n)
Модуль бойынша кері мәндерді есептеу оңай емес. Кейде оның шешімі болады, кейде болмайды. Мысалы, 5 санының модулі бойынша кері мәні 14 модулі бойынша 3-ке тең. Басқа жағынан 2 санында 14 модулі бойынша кері мәні болмайды.
Жалпы
жағдайда, (7) теңдеуінде а мен n сыбайлас
жай болса, тек қана 1 шешімі болады.
Егер а мен n сыбайлас жай болмаса, онда
(7) теңдеуінің шешімі болмайды. Егер n жай
сан болса, онда 1-ден (n -1)-ге дейінгі кез-келген
сан n-мен сыбайлас жай болады және n модулі
бойынша дәл сондай кері мәнге ие болады.
Эйлер функциясы
Кері мәнді есептеудің басқа да әдісі бар, алайда оны әр кезде қолдана беруге болмайды. mod n берілген қалдықтар жиынтығы деп қалдықтардың толық жиынын жиын бөлігі және оның мүшелері n-мен сыбайлас жай болады. Мысалы, mod 12-нің келтірілген қалдықтар жиыны –{1,5,7,11}. Егер n –жай сан болса, онда mod n-нің келтірілген қалдықтар жиыны бұл- 1-ден n-1-ге дейінгі сандардың жиыны. 1-ге тең емес кез-келген сан үшін 0 саны ешқашан берілген қалдықтар жиынының құрамына кірмейді.
Эйлер функциясын φ(n) түрінде жазады, - бұл n модулі бойынша берілген қалдықтар жиынындағы элементтер саны. Басқаша айтқанда, φ(n)- n-нен кіші және онымен сыбайлас жай сан болатын бүтін оң сандар саны.
Егер n-жай
сан болса, онда
φ(n)
= n-1
Егер мынадай
теңдеу белгілі болса,
n
=рq
мұндағы
р мен q-жай сандар болса, онда
φ(n)
=(р-1)(q-1)
болады.
Бұл сандар кейбір алгоритмдерде
ашық кілтпен келеді. Бұның себебі
мынада: Эйлер теоремасы мен Ферманың
кіші теоремасын сәйкес жалпылағанда,
егер ЕҮОБ(а, n )=1 болса, онда
а
φ(n) mod n=1
Енді
а-1 mod n есептеу қиын емес:
х=а
φ(n)-1 mod n
Мысалы, қандай сан 7 модулі бойынша 5 санына кері мәнге ие болады? 7 жай сан болғандықтан, φ(7) =7-1=6.
Осылайша 5 санына 7 модулі бойынша кері мән мынаған тең болады:
56-1 mod 7=55 mod 7=3.
Бұл
кері мәндерді есептеу тәсілін
х мәнін табудың ортақ мәселесіне
кеңейтуге болады:
(а*х)
mod n= b
Эйлер
жалпыламасын қолдана отырып, мынаны
шешеміз:
х=
(b* а φ(n)-1) mod n
Эвклид
алгоритмін қолдана отырып, мынаны
табамыз:
х=
(b* (а-1 mod n)) mod n
Жалпы
жағдайда кері мәндер алгоритмін есептегенде
Эвклид алгоритмі Эйлердің жалпыламасына
қарағанда тезірек, әсіресе 500 битті сандар
үшін. Егер ЕҮОБ(а, n )≠1 болса да шешімін
табуға болады. Бұл жағдайда (а*х) mod n= b,
не бірнеше шешімі, не бірде-бір шешімі
болмайды.
Лежандр символы
Лежандр символы L(а,р) егер а – кез келген бүтін сан болса, ал р-2-ден үлкен жай сан болса анықталған болады. Ол 0,1 немесе -1-ге тең болады.
L (а, р) =0, егер а р-ға бөлінсе.
L (а, р) =1, егер а –р модулі бойынша квадраттық есептен алу болса.
L
(а, р) =-1, егер а –р модулі бойынша квадраттық
есептен алу болмаса.
L
(а, р) = а(р-1)/2 mod р.
Немесе келесі алгоритмді қолдануға болады:
Көбейтінділерге жіктеу
Көбейтінділерге
жіктеу дегеніміз – оның жай көбейтінділерін
табу деген сөз.
10=2*5
60=2*2*3*5
252601=41*61*101
2113-1=3391*23279*1868569*
Көбейтінділерге жіктеу сандар теориясының ең көне мәселесі болып табылады. Бұл процесс қиын емес, тек уақыт талап етеді. Қазіргі таңда ең күшті алгоритм болып мынау табылады:
Сандардың сандық өрісінің торы – бұл 110 және одан да көп бөлік үшін ең тез алгоритм болып табылады. Алғашқыда ол пайдалы болған жоқ, алайда соңғы жылдары ол жақсартылған. Ол көбейтінділерге жіктеуді өте тез орындау үшін әлі біршама жаңа, алайда жақын арада барлығы өзгереді.
Квадраттық тор – бұл 110 ондық бөліктен кіші сандарды көбейтінділерге жәіктеудегі ең тез әдіс. Бұл әдістің жаңартылған нұсқасы полиномиальды квадраттық тор болып табылады. Ең тез нұсқасы полиномиальды квадраттық тордың үлкен санды екілік вариациялау әдісі болып табылады.
Эллипстік қисық әдісі – 43 бөлікті көбейтінділерді жіктеуде қолданылды.
Монте-Карло
Поллард әдісі; Үзіліссіз
бөлшектер алгоритмі
– бұл алгоритм орындалу уақытына сай
келмейді.
Екілік санау жүйесі