Автор: Пользователь скрыл имя, 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 жүйесінің программалық коды . ??
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ
Криптография ақпаратты түрлендіруде математикалық әдістерді іздеу және зерттеумен айналысады. Криптоанализдің айналысатын сфералар жүйесі – ақпараттың кілтін білмей шифрын анықтау.
Қазіргі криптография өзіне 4 үлкен бөлімді қосады:
Криптографиялық әдістерді қолданудың негізгі мақсаты – байланыс каналдары арқылы жасырын ақпаратты тарату (мысалы, электрондық пошта), жіберілген хабарламалардың ақиқаттығы, шифрлі тұрде ақпаратты сақтау.
Криптографиялық жүйелер қаншалықты қиын және сенімді болғанымен олардың практикалық қолданылуының әлсіз жағы – кілттерді үлестіру мәселесі. Ол үшін ақпараттық жүйелер екі субьекті арасында жасырын ақпарат алмасу мүмкін және кілт солардың біреуімен генерациялану керек, жасырын түрде әрі қарай басқасына жіберілуі керек. Яғни, кілтті тарату үшін криптожүйені қолдану керек. Бұл мәселені классикалық және қазіргі алгебрадан алынған нәтижелер негізінде шешу үшін ашық кілтті жүйелер ұсынылды. Олардың мәні ақпараттық жүйенің әр хабар алушысымен екі кілт генерацияланады, олар бір-бірімен белгілі ережеге сәйкес байланысады. Бір кілт ашық, екіншісі жабық болып жарияланады. Ашық кілт жарияланады және кез-келген хабарлама жібергісі келетін адам үшін белгілі болады. Құпия кілт жарияланбайды.
Бастапқы мәтін хабар алушының ашық кілтімен шифрленіп, оған жіберіледі. Шифрленген мәтіннің негізінен ашық кілтпен шифры анықталу мүмкін емес. Хабарламаны дешифрлеу тек хабар алушыға ғана белгілі болатын жабық кілтті қолдану арқылы ғана мүмкін. Ашық кілтті криптографиялық жүйелер қайта оралмайтын немесе біржақты функциялар деп аталатын ортақ қасиеті бар қызмет атқарады. Берілген х үшін f(x) мәнін есептеу оңай, алайда тек y=f(x) болса, х есептеудің оңай тәсілі жоқ.
Біржақты
функциялардың көптеген кластары ашық
кілтті жүйенің көптүрлілігін
Ашық кілтті шифрлеу алгоритмдері кең қолданысқа ие болды. RSA алгоритмі ашық жүйелер үшін әлемдік де-факто стандарты болды. Қазіргі таңда ұсынылатын ашық кілтті криптожүйелер қайтымсыз түрленудің төмендегідей топтарына жіктеледі:
Ашық кілтті криптожүйелерді 3 түрлі мақсатта қолдануға болады:
Күрделілік
теориясы криптографиялық әдістер
мен алгоритмдердің әр түрлі есептеу
күрделіліктеріне қарай әдістемелік
талдау жасауға мүмкіндік береді.
Ол криптографиялық әдістері мен
алгоритмдерін салыстыра
Алгоритмнің күрделілігі
Алгоритмнің
күрделілігі оның орындалуға керекті
есептеулік қуаттарымен есептеледі.
Есептемелік алгоритмнің
Негізінде,
есептемелік алгоритмнің
Алгоритмдерді олардың уақыттық немесе кеңістіктік күрделілігіне байланысты жіктейді. Егер алгоритм n-ға тәуелді болмаса, онда ондай алгоритмдерді тұрақты деп атап, О(1) деп белгілейді. Егер уақыттық күрделілігі О(n) болса, онда алгоритмді сызықтық деп атайды. Алгоритмдердің квадраттық, кубтық және тағы да басқа түрлері болады. Бұл алгоритмдердің барлығы – полиноминалды болып келеді, ал олардың күрделілігі О(nm), мұндағы m – тұрақты шама. Уақыттық күрделілігі бар полиноминалды алгоритмдерді полиноминалды уақыттық алгоритмдер деп атайды.
Күрделілігі
О(tf(n)) есептелетін алгоритмдерді
экспоненциалдық алгоритмдер деп атайды,
мұндағы t – бірден үлкен тұрақты шама,
ал f(n) – белгілі бір полиноминалды
функция. Күрделілігі О(сf(n))
есептелетін экспоненциалдық алгоритмдердің
жиынын суперполиноминалды деп атайды,
мұндағы с – тұрақты шама, ал f(n) тұрақтыдан
қарағанда тездетіп өсетін, бірақ сызықтыдан
баяу болатын функция.
3-кесте. n=106 шамасындағы әр түрлі алгоритмдердің уақыт күрделілігіне тәуелділігі
Түрі | Күрделілігі | n=106 үшін операциялар саны | Қажет болатын уақыт |
Тұрақты | О(1) | 1 | 1 мкс |
Сызықтық | О(n) | 106 | 1 с |
Квадраттық | О(n2) | 1012 | 11.6 күн |
Кубтық | О(n3) | 1018 | 32000 жыл |
Экспоненциалдық | О(2n) | 10301030 | Біздің ғаламымыздың өмір сүру уақытынан 10301006 есе үлкен |
Компьютер үшін уақыттың өлшем бірлігі микросекунд болғандықтан, компьютер тұрақты алгоритмдерді – 1 микросекундта, сызықты алгоритмдерді – 1 секундта, ал квадратты алгоритмді – 11.6 күнде есептей алады екен. Кубтық алгоритмдерді 32000 жылда есептейтін болғандықтан, экспоненциалдық алгоритмдер туралы айтудың қажеті де жоқ.
Шифрленген
алгоритмдерді күшпен ашу проблемасын
қарастыратып көрейік. Мұндай ашудың уақыттық
күрделілігі мүмкін болатын кілттердің
санына тура пропорционал. Демек, кілттің
ұзындығынан тәуелді деген сөз. Егер n
– кілттің ұзындығы болатын болса, онда
күшпен салып ашудың күрделілігі О(2n)-ге
тең.
Проблеманың күрделілігі
Күрделілік
теориясы белгілі бір алгоритмді
шешудің проблемасын ғана қарастырмайды,
сонымен қатар, проблеманың қаншалықты
күрделі екенін де анықтайды. Атап айтқанда,
сол проблеманы шешуге керекті минималды
уақытты және жадының көлемін қарастырады.
Оны Тьюринг машинасы деп атайды. Тьюринг
машинасы шекзіз жадымен жабдықталған,
алгоритмді оқу және жазу үшін арналған
есептеудің наңыз моделі болып табылады.
Полиноминалды уақыттық алгоритмдер арқылы шешілетін проблемаларды шешілетін проблемалар деп атайды. Яғни, белгілі ақпарат үшін белгілі уақыт бөлініп, сол уақытта шешіледі. Полиноминалды уақыт ішінде шешілмейтін проблемаларды шешілмейтін деп атайды. Кей жағдайларда, шешілмейтін проблемаларды қиын (ауыр) проблемалар деп те атайды. Алан Тьюринг кейбір проблемаларды шешудің алгоритмін табу мүмкін еместігін дәлелдеді.
Барлық
проблемаларды олардың
Шешілетін
проблемалар класы
3-сурет
Ең төменде орналасқан Р класы полиномиальды уақытта шешуге болатын барлық мәселелерден тұрады. NP-класы – полиномиальды уақытта тек Тьюрингтің детерминацияланбаған машинасында шешуге болатын барлық мәселелер: жорамал жасай алатын Тьюрингтің қарапайым машинасының нұсқасы. Машина мәселенің шешуін жорамалдай алады- не «сәтті» табу арқылы, не болмаса барлық жорамалдарды параллельды таңдап, барлық жорамалдарды полиномиальды уақытта тексереді.
NP-ның криптографиядағы маңызы: көптеген симметриялық алгоритмдер және ашық кілті бар алгоритмдер детерминацияланбаған полиномиальды уақытта бұзылуы мүмкін. Берілген С шифрлік мәтін үшін криптоаналитик Х ашық мәтінді және к кілтін талғайды және полиномиальды уақытта Х және к арқылы шифрлеу алгоритмін тексере отырып, оның нәтижесі С –ға тең болу мәселесін тексереді. Бұның теориялық маңызы зор, себебі осы алгоритмдердің криптоанализінің күрделілігінің жоғарғы шегін анықтайды. Тәжірибеде бұл әрине полиномиальды уақытта орындалатын детерминацияланған алгоритм, дәл осыны криптоаналитик іздеу тиіс. Бұл алгоритм шифрлердің барлық класстарына бірдей қолданыла алмайды, ол бір қолдануға жарайтын блокноттар үшін жарамайды – кез келген С үшін Х, к көптеген жұптары шифрлеу алгоритмін орындау кезінде С-ны береді, бірақ Х-тің көбісі мәнсіз, мүмкін бола алмайтын ашық мәтіндер болады.
NP-класына Р класы кіреді, себебі полиномиальды уақытта орындалатын Тьюрингтің детерминацияланған машинасында орындалатын кез-келген мәселе полиномиальды уақытта Тьюрингтің детерминацияланбаған машинасында орындала алады, тек жорамалдау сатысы болмайды.
Егер барлық NP мәселелер Тьюрингтің детерминацияланған машинасында полиномиальды уақытта орындалатын болса, онда Р = NP болады. Алайда, кейбір NP мәселелер басқаларымен салыстырғанда аса күрделі және ешқашанда Р-ның NP-ға тең еместігі дәлелденбеген. Алайда, күрделілік теориясы саласында жұмыс жасайтын адамдардың көбісі бұл класстар тең бола алмайды деген пікірді ұстанады.
Ең қызығы нақты NP-мәселелер осы класстың басқа мәселелері секілді өте қиын екендігін дәлелдеуге болады. Стивен Кук Орындалушылық мәселесінің NP-толық болатынын дәлелдеді. Бұл дегеніміз – егер Орындалушылық мәселесі полиномиальды уақытта шешілсе, онда Р = NP. Керісінше, егер NP класының кез-келген мәселесі үшін шешімнің полиномиальды уақыты бар детерминацияланған алгоритмі болмайтындығы дәлелденсе, Орындалушылық мәселесі үшін де полиномиальды уақыты бар детерминацияланған алгоритмі болмайтындығын дәлелдеу көрсетеді. NP-да Орындалушылық мәселесінен ауыр мәселе жоқ.
Куктың негізқалаушылық жұмысы басылғаннан соң, Орындалушылық мәселесіне эквивалентті мәселелер бар екендігі анықталды. Эквиваленттілікке байланысты бұл мәселелер де NP-толық болып, NP класына кіретін барлық мәселелер тәрізді қиын мәселе болып табылады деп ойлаймын. Егер олардың детерминацияланған полиномиальды уақытта шешілетіндігі дәлелденсе, онда Р сұрағының NP-ға қарсы сұрағы шешімін табар еді. Р = NP сұрағы рас па екендігі күрделі есептеу теориясының негізгі шешілмеген сұрағы болып табылады және жақын арада өз шешімін табады деп күтіледі. Егер Р = NP болатындығын біреу көрсете алса, онда осы кітаптың біраз бөлігі қажетсіз болады: шифрлардың көптеген класстары детерминацияланбаған полиномиальды уақытта бұзылады. Егер Р = NP болса, онда олар әлсіз детерминацияланған әлсіз алгоритмдермен бұзылады.
Келесі болып күрделілік