Кілттерді басқару жүйелері
Қазақстан Республикасы Білім және ғылым министрлігі
Л.Н.Гумилев атындағы Еуразия ұлттық университеті
Тунгишбаев Талгат Кайратович
Қазіргі заманғы криптографиядағы үлкен сандармен жұмыс жасауға арналған құралдар
ДИПЛОМДЫҚ ЖҰМЫС
5B100200 - Ақпараттық қауіпсіздік жүйелері мамандығы бойынша
Нұр-Сұлтан 2020
Қазақстан Республикасы Білім және ғылым министрлігі
Л.Н.Гумилев атындағы Еуразия ұлттық университеті
Қорғауға жіберілді
Информатика және ақпараттық
қауіпсіздік кафедрасының
меңгерушісі т.ғ.к., доцент
Сагиндыков К.М. ________________
6 5 2020 ж.
ДИПЛОМДЫҚ ЖҰМЫС
Тақырыбы: Қазіргі заманғы криптографиядағы үлкен сандармен жұмыс жасауға арналған құралдар
5B100200 - Ақпараттық қауіпсіздік жүйелері мамандығы бойынша
Орындаған: Тунгишбаев Т.К.
Ғылыми жетекші
ф.- м. ғ. к., доцент м. а. Оспанова Ә.Б.
Нұр-Сұлтан - 2020
Л.Н. Гумилев атындағы Еуразия ұлттық университеті
Ақпараттық технологиялар факультеті
5В100200 - Ақпараттық қауіпсіздік жүйелері мамандығы
Информатика және ақпараттық қауіпсіздік кафедрасы
Бекітемін
Информатика және ақпараттық
қауіпсіздік жүйелер кафедрасының
меңгерушісі т.ғ.к., доцент
Сагиндыков К.М.______________
4 12 2019 ж.
ДИПЛОМ ЖҰМЫСЫН ОРЫНДАУҒА АРНАЛҒАН
Т А П С Ы Р М А
Студент Тунгишбаев Талгат 4 курс, АҚЖ-41, 5B100200 - Ақпараттық қауіпсіздік жүйелері мамандығы, күндізгі бөлім
Дипломдық жұмысының тақырыбы Қазіргі заманғы криптографиядағы үлкен сандармен жұмыс жасауға арналған құралдар 2019 жылдың 27 11 берілген № 1935-п ректордың бұйрығымен бекітілген.
2 Диплом жұмысының тапсырмасына сәйкес:
Есеп берудің бірінші аралық кезеңі - 16 01 2020ж.
Есеп берудің екінші аралық кезеңі - 12 02 2020ж.
Есеп берудің үшінші аралық кезеңі - 27 03 2020ж.
Алдын-ала қорғауға дипломдық жұмысты әкелу мерзімі - 25 04 2020ж.
Норма бақылау тексерісі - 03 05 2020ж.
Дипломдық жұмыстың соңғы нұсқасын әкелу мерзімі - 15 05 2020ж.
Дипломдық жұмысты қорғау мерзімі - 6 06 2020ж.
Аяқталған жұмысты тапсыру мерзімі - 15 05 2020ж.
3 Жұмыстың бастапқы деректері:
3.1 Қазіргі заманғы криптографияда үлкен сандармен жұмыс жасайтын құралдарды анықтау;
4 Диплом жұмысын дайындау үшін сұрақтар тізімі:
4.1 Заманауи криптографиялық алгоритмдердің жұмысымен танысу;
4.2 Үлкен сандармен жұмыс жасайтын алгоритмдерді әзірлеу құралдарына қойылатын талаптар мен критерийлерді анықтау;
4.3 Қойылған талаптар мен критерийлерге сәйкес әзірлеу құралдарын таңдау;
4.4 Таңдалып алынған программалау құралдарымен криптографиялық есеперді шешу;
4.5 Жинақталған мәліметтер және жүргізілген есептеулер бойынша саластырмалы анализдер жасау;
4.6 Құралдармен салыстыруларды жүргізуді ыңғайлы ету мақсатында басқару жүйесін құру.
5 Графикалық материалдың тізімі (сызбалар, кестелер, диаграммалар және тағы басқалары):
5.1 Шифрлеу алгоритмдерін салыстыру кестесі
5.3 Салыстырмалы анализ кестесі
6 Негізгі ұсынылатын әдебиеттер тізімі:
6.1 Основы современной криптографии и стеганографии. - 2-е изд. - М.: Горячая линия - Телеком, 2013. - 232 с.
6.2 Евсютин О.О. Криптографические методы защиты информации: учебное пособие для вузов. - Томск: ТУСУР, 2014. - С. 4-7
7 Жұмысқа қатысты кеңестер (оларға қатысты жұмыс бөлімдерінің көрсетілуімен)
Нөмір, бөлімнің, бөлімшенің аты
Ғылыми жетекші, кеңесші
Тапсырманы алу уақыты
Тапсырма бердім
(қолы)
Тапсырма
алдым
(қолы)
Кіріспе
Оспанова Ә.Б.
05.12.2019
Негізгі бөлім
Оспанова Ә.Б.
18.12.2019
Практикалық бөлім
Оспанова Ә.Б.
06.01.2020
Дипломдық жұмыстың техникалық - экономикалық негіздеме бөлімі
Оспанова Ә.Б.
Еңбекті қорғау бөлімі
Оспанова Ә.Б.
Қорытынды
Оспанова Ә.Б.
14.02.2020
Қолданылған әдебиеттер тізімі
Оспанова Ә.Б.
20.02.2020
Нормабақылау
Назырова А.Е.
02.05.2020
Дипломдық жұмысты орындау графигі
№
Жұмыс сатысы
Жұмыс сатысын орындау мерзімі
Ескерту
1
Дипломдық жұмыстың тақырыбын бекіту
27.11.2019
2
Дипломдық жұмысты дайындау үшін мәліметтер жинау
05.12.2019
3
Дипломдық жұмыстың теориялық бөлігін дайындау (1 Бөлім)
06.01.2020
4
Дипломдық жұмыстың аналитикалық бөлігін дайындау (2-3 Бөлім)
28.03.2020
5
Дипломдық жұмыстың толық мәтінінің қолжазбалық нұсқасын аяқтау
30.04.2020
6
Алдын-ала қорғауға дипломдық жұмысты әкелу
25.04.2020
7
Рецензияға дипломдық жұмысты жіберу
05.05.2020
8
Ғылыми жетекшінің пікірі мен рецензиясы бар дипломдық жұмыстың соңғы нұсқасын әкелу
15.05.2020
9
Дипломдық жұмысты қорғау
06.06.2020
Тапсырманың берілген мерзімі 4 12 2019 жыл
Ғылыми жетекші
ф.- м. ғ. к., доцент м. а.
______________________Оспанова Ә.Б.
Тапсырманы орындаған
АҚЖ-41 тобы студенті
____________________Тунгишбаев Т.К.
НОРМАТИВТІК СІЛТЕМЕЛЕР
1 ҚР МЖМБС 5.03.016 -2009. Жоғары оқу орындарындағы дипломдық жұмыстарды орындау ережелері
2 ҚР МЖМБС 5.04.019 -2008 Қазақстан Республикасының мемлекеттік жалпыға міндетті білім беру стандарты. Жоғары кәсіптік білім. Бакалавриат. Негізгі ережелері.
3 МСТ 7.1-84. Ақпараттық, кітапханалық және баспалар бойынша стандарттар жүйесі. Құжаттың кітапханалық жазбасы. Қолданылған әдебиеттер тізімін жазудың жалпы талаптары мен ережелері. М.: Стандарттар, 1984.
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...8
1 Қазіргі заманғы криптографиядағы үлкен сандар ... ... ... ... ... ... ... . ... 10
1.1 Практикалық криптографиялық беріктілік ... ... ... ... ... ... ... ... ... ... .10
1.2 Криптографиялық примитивтер және олардың криптоберіктілігі ... ... ...13
1.2.1 Заманауи симметриялық алгоритмдер ... ... ... ... ... ... ... ... ... ... ...14
1.2.2 Заманауи ассиметриялық алгоритмдер ... ... ... ... ... ... ... ... ... ... ..17
2 Критографияда үлкен сандармен жұмыс жасауға арналған құралдар ... ... .22
2.1 Программалау тілдерінің стандартты кітапханалары мен криптографиялық беріктілігі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...22
2.1.1 Бүтін сандардың диапазоны ... ... ... ... ... ... .. ... ... ... ... ... ... ... ..23
2.1.2 Кездейсоқ сандардың генераторлары ... ... ... ... ... .. ... ... ... ... ... ...24
2.1.3 Жай сандарды генерациялау алгоритмі және оларды қарапайымдылыққа тексеру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..26
2.2 Үлкен сандармен жұмыс жасауға арналған арнайы кітапханаларалар ... ..27
2.2.1 СС++ үлкен сандармен жұмыс жасауға арналған кітапханалар. GMP кітапханасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 28
2.2.2 Java үлкен сандармен жұмыс жасауға арналған кітапханалар ... ... ... ..32
2.2.3 Python үлкен сандармен жұмыс жасауға арналған кітапханалар ... ... ...35
2.2.4 Crypto++, libgcrypt, PyСryptodome криптографиялық кітапханалары ... .35
2.3 GMP кітапханасын орнату және қолдану ... ... ... ... ... ... ... ... ... ... ..39
2.3.1 Crypto++, Sage, Maple программаларында GMP кітапханасының қолданылуы ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...40
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..47
Пайдаланылған әдебиеттер тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ...48
Қосымша 1 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .50
Қосымша 2 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .55
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...8
1 Қазіргі заманғы криптографиядағы үлкен сандар ... ... ... ... ... ... ... . ... 10
1.1 Практикалық криптографиялық беріктілік ... ... ... ... ... ... ... ... ... ... .10
1.2 Криптографиялық примитивтер және олардың криптоберіктілігі ... ... ...13
1.2.1 Заманауи симметриялық алгоритмдер ... ... ... ... ... ... ... ... ... ... ...14
1.2.2 Заманауи ассиметриялық алгоритмдер ... ... ... ... ... ... ... ... ... ... ..17
2 Критографияда үлкен сандармен жұмыс жасауға арналған құралдар ... ... .22
2.1 Программалау тілдерінің стандартты кітапханалары мен криптографиялық беріктілігі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...22
2.1.1 Бүтін сандардың диапазоны ... ... ... ... ... ... .. ... ... ... ... ... ... ... ..23
2.1.2 Кездейсоқ сандардың генераторлары ... ... ... ... ... .. ... ... ... ... ... ...24
2.1.3 Жай сандарды генерациялау алгоритмі және оларды қарапайымдылыққа тексеру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..26
2.2 Үлкен сандармен жұмыс жасауға арналған арнайы кітапханаларалар ... ..27
2.2.1 СС++ үлкен сандармен жұмыс жасауға арналған кітапханалар. GMP кітапханасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 28
2.2.2 Java үлкен сандармен жұмыс жасауға арналған кітапханалар ... ... ... ..32
2.2.3 Python үлкен сандармен жұмыс жасауға арналған кітапханалар ... ... ...35
2.2.4 Crypto++, libgcrypt, PyСryptodome криптографиялық кітапханалары ... .35
2.3 GMP кітапханасын орнату және қолдану ... ... ... ... ... ... ... ... ... ... ..39
2.3.1 Crypto++, Sage, Maple программаларында GMP кітапханасының қолданылуы ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...40
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..47
Пайдаланылған әдебиеттер тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ...48
Қосымша 1 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .50
Қосымша 2 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .55
МАЗМҰНЫ
Кіріспе
Қазіргі заманғы криптография (1970жж. соңынан қазіргі заманға дейін) қазіргі уақытта барлық цифрлық құрылғылардағы қауіпсіздіктің негізі болып табылады. Себебі, бүгінгі таңда криптографиялық қорғау әдістері дегеніміз транзакцияларды шифрлау және криптовалюта өндірісін бақылау үшін ғана емес, сонымен қатар банк жүйелерінің, пластикалық карталардың, банкоматтардың, электрондық коммерцияның және сымсыз құрылғылардың қауіпсіз жұмысын, яғни ақпараттардың қауіпсіз тасымалдануын қамтамасыз ету болып табылады [1].
Қазіргі заманғы криптография сандар теориясы, есептеу күрделілігі теориясы және ықтималдық теориясы сияқты әртүрлі математикалық теорияларға негізделгендіктен оны математикасыз елестету мүмкін емес. Себебі, математикалық әдістерді қолдана отырып, сіз қазіргі заманғы күрделі шифрларды құрып қана қоймай, сонымен қатар олардың криптографиялық беріктігін - практикалық немесе теориялық бұзушылықтарға төтеп беру қабілеттілігін - криптанализді негіздей аласыз. Өз кезегінде қазіргі заманғы криптографиялық алгоритмдердің берікілігін арттыру үшін, ондағы сандардың көлемін үлкен мәндерге дейін өзгерту қажеттілігі туындап тұр.
Қазіргі заманғы криптографияда үлкен сандармен жұмыс істейтін шифрлау алгоритмдердің көптеген түрлері бар. Олар жоғарыда келтірілген талаптарға сай келуі керек, және уақытылы жаңартылып тұруы керек.
Осыған орай қазіргі уақытта әлемнің көптеген криптографтары жаңа технологияларды, соның ішінде олардың криптографияға тигізетін әсерін зерттеп жатыр. Әрине, жаңа технологиялар қазіргі заманғы криптографияға жаңа дем берсе, бір жағынан осы технологиялар криптографияға үлкен қауіп төндіруі ықтимал. Мысалы, бұлар қазіргі серверлер немесе суперкомпьютерлерден бірнеше есе мықты кванттық компьютерлер болуы мүмкін, ал олар өз кезегінде қазіргі заманғы криптографиядағы үлкен сандарды аз уақытта факторизациялауға мүмкіндік береді деп тұжырымдалуда.
Зeрттeу тaқырының өзeктілігі: Қазір криптография адам өмірінде күнделікті қолданатын ұялы телефондарда, компьютерлерде, арнайы желімен қамтылған жұмыс орындары мен заманауи қалаларда және т.б. технологияларға қатысты барлық құрылғыларда ақпаратпен жұмыс жасайды.
Қазіргі криптографияның қауіпсіздігін немесе ақпараттың маңыздылығының айқындау үшін оны үлкен сандармен шифрлеу өте тиімді әдістердің бірі болып табылады. Әрине, кез-келген заттың екі жағы болғандықтан, криптографияда үлкен сандардың тиімсіз жақтары да бар. Осы үлкен сандардың алгоритмдерде, программалау тілдерінде қандай ерекшеліктері мен кемшіліктерін бар екендігін анықтау, дипломдық жұмысымның өзекті тақырыбы болып келеді.
Ғылыми-зeрттeу нысaны: Дипломдық жұмысымның практикалық бөлімінде ғылыми зерттеу нысандары ретінде криптографиядағы үлкен сандармен жұмыс жасағанда қолданылатын кітапханалар болып келеді. Ол үшін мен қазіргі таңда үлкен қолданыстағы Java, Python, C++ тілдерін таңдап алдым. Оған қоса зерттелу нысандары ретінде қазіргі заманғы криптографияда үлкен сандармен жұмыс жасауға арналған кітапханаларды қолдана отырып, алгоритмдердің үш программалау тілдерінде хабарламаны шифрлайтын құралдарды анықтау болып табылады. Бұл таңда мен қазіргі криптографияда көп қолданылатын симметриялық криптожүйеге жататын AES алгоритмін және асимметриялы криптожүйеге жататын RSA алгоритмін алатын боламын [2].
Жұмыстың мaқсaты: Дипломдық жұмыс екі бөлімнен тұрады. Aлғaшқы бөлімдегі мақсат криптография саласының өзін қарастырып, жалпы ақпараттар беріп өту. Ары қарай осы бөлемде заманауи криптографияның бөлімдеріне жалпы түсініктемелер беріп, олардың беріктілігін, онда үлкен сандармен жұмыс жасайтын алгоритмдерге мысалдар көрсету болып табылады.
Екінші бөлімде заманауи криптографияда үлкен сандармен жұмыс жасайтын құралдарды қарастырылады. Ары қарай осы құралдарға практикалық жұмыстардан дәлелдер көрсетемін. Яғни, үлкен сандармен жұмыс жасағанда программалау тілтерінде олардың жүзеге асатын кітапханалары және программаларына мән беріледі.
Қазіргі заманғы криптографиядағы үлкен сандар
Практикалық криптографиялық беріктілік
Алдымен қазіргі заманға криптографияда үлкен сандармен жұмыс жасау кезінде қолданылатын негізгі анықтамалар мен ұғымдарға тоқталып өтейік.
Криптография - ақпараттың конфиденциалдығын, бүтіндігін және аутентификациялығын қорғау мақсатында оны түрлендірудің математикалық әдіс-тәсілдерін іздеумен және зерттеумен айналысатын ғылым.
Криптоанализ (жасырын + анализ) - құпия кілтсіз, шифрленген ақпаратқа қол жеткізу мақсатында зерттеу әдістерін жүргізумен айналысатын ғылым. Криптоанализ криптографиялық тұрғыдан қарағанда алгоритмдер мен хаттамалардағы осалдықты табудың кез-келген іс-әрекетін болып саналады. Бұл термин алғаш рет 1920 жылы америкалық криптограф Уильям Ф. Фридманның Криптоанализ элементтері кітабының аясында пайда болған.
Криптология - криптография және криптоанализ ғылымдарын математикалық тұрғыда қамтитын сала. Қазіргі заманғы криптограф саласында ақпаратты қорғаудың негізгі үш әдісі бар, олар: шифрлеу, хештеу және электрондық қолтаңба. Бұл криптография бағыттарының әрбірінің ақпаратты қорғау тақырыбында атқаратын өзіндік бір немесе бірнеше қызметтері бар. Соның ішінде олар криптография саласында үлкен сандармен жұмыс жасайтын барлық аспектілерді де қамтамасыз етеді.
Криптографияға қойылатын негізгі талаптары:
1. Конфиденциалдық - ақпараттың мазмұнын білетін адамның, оны ақпарат иесінсіз үшінші жаққа ашпай, онымен жасырын жұмыс жасай білу болып табылады;
2. Бүтіндікті қамтамасыз ету - тек заңды және сәйкес өкілдігі бар тұлғаның ақпаратты модификафиялау, ауыстыру, қайталау немесе жою мүмкіндігі болып табылады;
3. Қолжетімділікті қамтамасыз ету - қорғалған ақпаратқа өкілеттілігі бар заңды қолданушыларға бөгетсіз қатынауды ұйымдастыру және оның кепілі болу [7].
Қазіргі заманға криптографиядағы алгоритмдердің беріктігі
Криптографиялық беріктілік - криптографиялық алгоритмнің криптоанализге қарсы тұру қабілеті. Алгоритм криптоберік деп аталу үшін ол келесі талаптарға сай болуы қажет. Біріншіден, алгоритмге жасалатын шабуыл барлық тұрғыдан күрделі болуы қажет. Екіншіден, ақпаратқа санкцияланбаған шабуыл болғанымен, ол өзектілігін жоғалтқанша көп ресурс пен уақыттың жұмсалуына әкелуі керек [4].
Ақпаратты қорғаудың заманауи криптографиялық жүйелері үшін келесі жалпы қабылданған талаптар тұжырымдалады:
шифрланған хабарлама тек егер кілт болса ғана оқылуы керек;
пайдаланылған шифрлау кілтін шифрланған хабарламаның фрагментінен және тиісті қарапайым мәтіннен анықтау үшін қажет әрекеттер саны мүмкін кілттердің жалпы санынан кем болмауы керек;
кілттердің барлық түрлерін сұрыптау арқылы ақпаратты шифрлау үшін қажет операциялардың саны қатаң төменгі шекке ие болуы керек және қазіргі компьютерлердің мүмкіндіктерінен асып кетуі керек (желілік есептеулерді қолдану мүмкіндігін ескере отырып);
шифрлау алгоритмін білу қорғаныс сенімділігіне әсер етпеуі керек;
кілттің шамалы өзгеруі сол кілтті қолданған кезде де шифрланған хабарламаның сыртқы түрінің айтарлықтай өзгеруіне әкелуі керек;
шифрлау алгоритмінің құрылымдық элементтері өзгеріссіз болуы керек;
шифрлау процесінде хабарламаға енгізілген қосымша биттер толық және сенімді түрде шифрланған мәтінде жасырылуы керек;
шифр мәтінінің ұзындығы бастапқы мәтіннің ұзындығына тең болуы керек;
шифрлау процесінде жүйелі түрде қолданылатын кілттер арасында қарапайым және оңай орнатылатын тәуелділік болмауы керек;
көптеген мүмкін кілттердің кез-келгені сенімді ақпаратты қорғауды қамтамасыз етуі керек;
алгоритм бағдарламалық жасақтамаға да, аппараттық құралға да рұқсат беруі керек, ал кілт ұзындығын өзгерту шифрлау алгоритмінің сапалы нашарлауына әкелмеуі керек.
Жоғарыда келтірілген талаптарға сай криптографияда келесідей беріктілік жүйелері қалыптасады.
Абсолютті берік жүйелер. Егер шабуылдаушыда үлкен есептеу ресурстары болған жағдайдың өзінде де теориялық түрде де, іс жүзінде де ақпаратты оқу мүмкін болмайтын жағдай. Практикалық тұрғыда шифрлеудің абсолютті тұрақты алгоритмдерінің болуы 1949 жылы америкалық математик Клод Шеннонның Bell System Technical Journal журналындағы "Құпия жүйелердегі байланыс теориясы" мақаласында жарияланған. Осы журналда абсолютті берік жүйелерге келесідей талаптар көрсетілген:
кілт әр хабарламаға генерацияланады (кілт тек бір рет қана қолданылады);
кілт статистикалық тұрғыда берік (яғни әрбір мүмкін символдардың пайда болу мүмкіндігі тең, және символдардың ретпен орналасуы тәуелсіз және кездейсоқ);
кілттің ұзындығы хабарлама ұзындығына тең немес ұзын;
бастапқы мәтіннің кейбір артықтығы бар (бұл расшифровка дұрыстығын бағалау критерийі болып табылады).
Бұл жүйелердің тұрақтылығы криптоаналитиктің қандай есептеу мүмкіндіктеріне ие екендігіне байланысты емес. Абсолюттік беріктілік талаптарын қанағаттандыратын жүйелерді іс жүзінде қолдану, құны және пайдалану ыңғайлылығы тұрғысынан шектелген.
Шеннон практикалық тұрғыда абсолютті берік алгоритмнің мысалы, Вернам шифры (бір реттік блокнот) екендігін дәлелдеді. Яғни, Вернам шифрін дұрыс пайдалану зиянкеске ашық мәтін туралы ешқандай ақпарат бермейді (кез-келген хабарламаның битін 12 ықтималдығымен ғана табуға болады).
Есептеу ресурстарының немесе қалған ашық және шифрленген хабарламалардың іс жүзінде қол жетпейтін көлемін шабуылдаудан не оны ашуға кететін уақыттың соншалықты маңызды шығынын талап ететін, қорғалған ақпарат өзінің өзектілігін жоғалтатын алгоритм тұрақты болып саналады. Көп жағдайларда криптотөзімділік математикалық дәлелденген мүмкін емес; тек криптографиялық алгоритмнің осалдығын дәлелдеуге болады немесе (ашық кілтті криптожүйе жағдайоған кез келген ақпарат төтеп беруі ында) алгоритмді ашу міндетін есептеу күрделі болып саналатын кейбір міндетке қоюға болады (яғни "бұзу" бұл міндетті шешу оңай емес екенін дәлелдеу).
Жеткілікті берік жүйелер. негізінен азаматтық мақсаттағы криптографиялық жүйелерде іс жүзінде берік немесе есептеу тұрғысынан берік жүйелер қолданылады. Жүйенің есептеу тұрғысынан беріктілігі туралы, егер шифрды ашу ықтималдығы бар, бірақ ол үшін тек таңдалған параметрлер мен шифрлау кілттері қолданылса ғана айтылады. Практикада шабуылдаушы заманауи технологияларды дамытудың қазіргі кезеңінде өзіне қолайлы уақытта шифрді ашу үшін жеткілікті есептеу ресурстарына ие емес. Мұндай жүйелердің тұрақтылығы криптоаналитиктің қандай есептеу мүмкіндіктеріне ие екендігіне байланысты.
Мұндай жүйелердің практикалық тұрақтылығы күрделілік теориясына негізделеді және тек қана белгілі бір уақытта және екі позициядан жүйелі түрде бағаланады:
толық іріктеудің есептеуіш күрделілігі;
қазіргі уақытта белгілі криптографиялық осалдылықтарының есептеу күрделілігіне әсері.
Әрбір нақты жағдайда беріктілікті бағалаудың қосымша критерийлері болуы мүмкін.
Егер криптожүйенің беріктілігің дәлелдемесі алгоритмнің негізіне жататын белгілі бір қиын шешілетін математикалық проблеманы шешуге жеткен жағдайда, біз дәлелденген беріктілік туралы айта аламыз. Мысалы, RSA криптожүйесі келесі жағдайда берік болып саналады, егер сандық түрлендіру модулі полиномиалды уақыт ішінде факторизациялау мүмкін болмаса. Бұл дегеніміз, RSA шифрында n модулі үшін таңдап алынатын екі көбейткіштердің мәні үлкен сандарға ие болған сайын, алгоритмнің беріктілігі арта түседі.
Криптографиялық примитивтер және олардың криптоберіктілігі
Криптографиялық примитивтер - криптографиялық хаттамаларды құру үшін жиі қолданылатын төмен деңгейлі криптографиялық алгоритмдер. Бұл криптожүйенің талап етілетін қасиеттерін анықтайтын операциялар мен процедуралар.
Криптографиялық примитивтер криптожүйені құру кезінде негізгі құрылыс блоктары ретінде пайдаланылады, яғни олар сенімділіктің жоғары деңгейімен тек кейбір кластағы тапсырмаларды шешуге арналған. Мысал ретінде мұндай жағдайды қарастыруға болады: кейбір шифрлаудың үшін ол тек компьютердегі X операциясының санымен ғана бұзылуы мүмкін деп көрсетілсін, егер ол X-тен әлдеқайда аз операциялар санының көмегімен бұзылса, бұл криптографиялық примитив сенімсіз деп саналады.
Хаттамаларды және криптожүйелерді жобалау кезінде әзірлеуші композициялық кемшіліктерді жоюға жауапты болады. Олардың қауіпсіздігін дәлелдеу мүмкіндігі болмаса, әзірлеуші олар пайдаланатын сенімді примитивтерді санауы тиіс. Хаттамада пайдалану үшін қол жетімді ең жақсы примитивті таңдау, әдетте мүмкін ең жақсы қолжетімді қауіпсіздікті қамтамасыз етеді. Егер криптографиялық примитив бұзылған болса, оны пайдаланатын әрбір хаттама осал болады.
Криптографиялық примитивтер келесі қасиеттерге ие болуы керек:
қауіпсіздік деңгейі;
функционалдығы;
жұмыс жасау әдістері;
өнімділік;
реализациялау жеңілдігі.
Қазіргі заманғы криптографияның негізгі примитивтері:
Симметриялық криптожүйелер;
Блоктық шифрлау;
Ағындық шифрлау;
Асимметриялық криптожүйелер;
Хештау;
Электрондық қолтаңба;
Кілттерді басқару жүйелері;
Міндеттемелер схемасы;
Псевдокездейсоқ сандар генераторы.
1.2.1 Заманауи симметриялық алгоритмдер
Симметриялық криптожүйелер - хабарламаны шифрлау және дешифрлау үшін тек қана бір криптографиялық кілт қолданылады. Бұл критожүйе ассиметриялық криптожүйенің алдында қолданыста болған. Бұл криптожүйеде қолданылатын алгоритмдердің кілттері хабарлама алмасатын екі жақтанда барынша құпия болуы қажет және хабарлама алмасатын каналда үшінші артық адамдар болмауы қажет. Сонымен қатар, шифрланатын алгоритм екі жақпен хабарлама алмасудың алдында таңдалу керек [8].
Заманауи симметриялық криптожүйелер келесі талаптарға сай болуы қажет:
криптоанализге төзімділігі, кілттерді толығымен іріктегенде ғана хабарламаны оқу мүмкін болу қажет;
криптоберіктілік шифрлеу алгоритмінің құпиялығын емес, кілттің құпиялығын қамтамасыз ету керек;
шифрленген хабарлама ашық хабарлама көлемінен тым көп болмауы керек;
ақпаратты шифрлау уақыты мен бағасы тиімді болуы керек.
Заманауи симметриялық криптожүйелер келесідей екі топқа бөлінеді:
блоктық шифрлар. 64-256 бит аралығындағы блоктарда ақпаратты өңдейді, белгіленген тәртіпте блоктың кілтін қолдана отырып, әдетте бірнеше араластыру және орналастыру циклдары арқылы, раунд деп аталады. Екінші раундтардың нәтижесі-лавин тәрізді әсер-ашық және шифрланған деректер блоктарының арасындағы биттік сәйкестіктің жоғалуы.
ағымдық шифрлар. Гаммалау әдісін қолданатынШифрлеу әрбір бит немесе гаммирлеуді пайдалана отырып, бастапқы (ашық) мәтіннің байты үстінде жүргізілетін ағынды шифрлар. Ағынды шифр арнайы режимде іске қосылған блоктық (мысалы, ГОСТ 28147-89 гаммалау режимінде) негізінде оңай жасалуы мүмкін.
AES алгоритмі
Қазіргі уақытта 2002 жылы шифрлеу стандартында жарияланған AES (Advanced Data Encryption) шифрлеудің симметриялық алгоритмі аса өзекті [7]. AES - 128 биттік блок өлшемді блоктық алгоритм, ал кілттер 128, 192 немесе 256 биттік ұзындықта болуы мүмкін. Раундтардың саны кілттің ұзындығына байланысты және тиісінше 10, 12 немесе 14 раундтарды құрауы мүмкін. AES алгоритмі тестілеуден өткен кезде, ол 8-ші раундтан кейін шабуылдарға төзімді болып келетіні анықталды. Осылайша, ұсынылатын шифрлеу раундтарының ең аз дегендегі саны - 10 раунд болуы тиіс. AES алгоритмінде ығысу, араластыру, кестелердің көмегімен қою және әртүрлі алгебралық операциялар қолданылады. Мысалы, операциялардың бірі төмендегі суреттегідей көрсетіледі (Сурет 1).
Сурет 1 Қатарлардың ығысуы
AES алгоритмінің беріктілігіне келетін болсақ, криптографтар криптотөзімділікке арналған AES алгоритміне бірнеше рет зерттеулер жүргізді. Нәтижесінде осы алгоритмге шабуылдардың теориялық үлгілері әзірленді. Криптография саласындағы мамандар салыстыру үшін келесідей есептеулерді жүргізіп, мысал ретінде келесі сандарды келтірді. Мысалы, DES алгоритмін мифтік суперкомпьютердің көмегімен бір секундта бұзуға болар еді. Сол кезде AES алгоритмін бұзу үшін сол компьютер 149 триллион жылды қажет етеді. Ал енді AES-ті бұзу немесе әлсіздігін көрсету мақсатында құрылған теориялық шабуылдарға тоқталып өтсек:
XSL-шабуыл (ағылш. eXtended Sparse Linearization, алгебралық шабуыл) - бұл шифрлердің алгебралық қасиеттеріне негізделген криптографиялық талдау әдісі. Әдіс теңдеулердің ерекше жүйесін шешуді көздейді. Бұл әдіс 2001 жылы Николя Куртуа (Nicolas T.Courtois) және Юзеф Пешик (Josef Pieprzyk) ғалымдарымен ұсынылды. Алайда, бұл әдіс көптеген сындарға ұшырап, бірнеше мамандар бұл әдісті жоққа шығарды. Солардың бірі Брюс Шнайермен Нильс Фергюсон болды. Егер XSL шабуылдар шынымен жұмыс істесе, олар қазіргі кездегі барлық шифрлерді бұзады. Шифрді бұзудан сақтап қалу тек таза кездейсоқ болуы мүмкін. Екінші жағынан, XSL шабуылдар біздің ойымызша практикада да қолданысқа түсе алмауы әбден мүмкін немесе жоғары құрылымдалған шифрлердің шағын санына ғана қолдануға болады - деп, айтқан болатын. Осы оймен мамандардың барлығы дерлік келісе кетті. Алайда, бұл шабуылдың авторлары бұл оймен келісе қоймады. 2006 жылы осы шабуылдың жаңартылған моделін ұсынды. Бұл талпыныстары да сәтсіздікке ұшырап, AES қазіргі уақытқа дейін беріктілігі өте жоғары деңгейін сақтап келеді.
Үшінші тарап арналары бойынша шабуылдар шифрдің математикалық ерекшеліктерімен байланысты емес, бірақ құпия деректерді, оның ішінде кілтті ішінара немесе толық ашу мақсатында осы шифрлерді пайдаланатын жүйелерді іске асырудың белгілі бір ерекшеліктерін пайдаланады. AES алгоритмін қолданған жүйелерге осыған ұқсас бірнеше шабуылдар белгілі.
Симметриялы алгоритмдердің артықшылықтары мен кемшіліктері
Шифрлеудің симметриялы алгоритмдері ақпаратты өңдеудің жоғары жылдамдығына ие. Бұл алгоритмдерді операциялардың салыстырмалы қарапайымдылығына байланысты түрлендіру қиын емес. Сонымен қатар, симметриялы алгоритмдердің көмегімен үлкен көлемді деректерді кілттің салыстырмалы түрде аз көлемінде шифрлеуге болады.
Бірақ симметриялы алгоритмдерде бір маңызды кемшілік бар. Кілтті тасымалдау кезінде қиындықтар туындауы мүмкін. Осы орайда үшінші жақтағы қаскүнемдер шифрлеу кілтін ұрлап алуы мүмкін.
Хабарламаны шифрлеу үшін кілтті жіберу қажеттілігі, шифрлеудің симметриялы алгоритмдерінің басты мәселелерінің бірі болып табылады.
Тиісінше, кілтті қауіпсіз жолмен беру үшін де белгілі бір деңгейдегі қорғаныс қажет. Ал мұны шифрлеудің асимметриялық алгоритмдері арқылы орындауға болады.
1.2.2 Заманауи асимметриялық алгоритмдер
Мəліметтерді криптографиялық қорғаудың тиімді жүйесі асимметриялық криптожүйелер болып табылады. Бұл криптожүйе қазіргі заманғы криптография дәуірінде қарқынды дамып, қазіргі таңда көптеген мемлекеттер, ұйымдар осы ашық кілтті криптожүйе алгоритмдерін қолданады. Мұндай жүйелерде мəліметтерді шифрлауды бір кілт, ал мəліметтерді ашуда басқа кілт қолданылады (асимметриялық атауы осыдан шыққан). Бірінші кілт ашық кілт болып табылады жəне мəліметтерді шифрлайтын жүйелердегі барлық қолданушыларға пайдаланылуы үшін ол жария болуы мүмкін. Мəліметтерді ашық кілт көмегімен ашу мүмкін емес.
Шифрланған хабардың қабылдаушысы мəліметтерді ашу үшін құпия кілт болып табылатын екінші кілтті қолданады. Əрине, ашу кілті шифрлау кілтінен анықталуы мүмкін емес, яғни олар бір-бірімен байланысы жоқ.
Асимметриялық криптожүйенің сызбасын төменгі суретте көрсеттім [9]. Мұнда, КВ-А жіберушінің ашық кілті, kB-B қабылдаушының құпия кілті. B ақпарат қабылдаушысы болғандықтан кілттер генераторы қабылдаушының жағында орналастырдым. kB құпия кілті қорғалмаған канал арқылы жіберілмеуі керек. Себебі, kB кілті асимметриялық криптожүйенің негізгі қауіпсіздігі болып табылады. КВ және kB кілттерінің мәні кілттер генераторының бастапты күйіне тәуелді (2 - сурет).
Тек асимметриялық криптожүйелерге тән ерекшеліктері:
КВ ашық кілті мен С шифртексті қорғалмаған каналдар арқылы жіберілуі мүмкін, яғни олар қарсыласқа белгілі болады.
Шифрлау және дешифрлау алгоритмдері ашық болып табылады:
EB:M--C
DB:C--M
EB
DB
А жіберуші KB Қорғалмаған канал В қабылдаушы
М хабары
Кілттер г.
С шифртекст
Қарсылас
kB
Сурет 2 Ашық кілтті асимметриялық криптожүйелердің жалпы сызбасы.
Осы сызбаға сай У. Диффи мен М. Хеллманның асимметриялы криптожүйесіне қойылатын келесі негізгі талаптарды көрсетті:
В қабылдаушының (KB, kB) есептеу қарапайым болуы керек.
А жіберуші KB ашық кілті мен М хабарламасын біле отырып, шифртекстті оңай есептей алады: С = EKBM=EB(M).
В қабылдаушы kB құпия кілтін және С шифртекстін қолдана отырып, алғашқы хабарламаны оңай аша алады:
M = DKBC= DB(C) = DB[EB(M)].
Асимметриялы алгоритмдердің кемшіліктері:
Деректер көлемі бірдей болғанда асимметриялық алгоритм үшін ақпаратты өңдеу көбірек уақыт талап етеді. Сонымен қатар кілттің ұзындығы симметриялық алгоритмге қарағанда әлдеқайда көбірек болады.
Асимметриялық алгоритмді модификациялау симметриялық алгоритмдерге қарағанда әлдеқайда күрделі немесе мүмкін емес болып табылады. Өйткені асимметриялық алгоритм күрделі математикалық тапсырма негізінде құрылады.
Ал асимметриялық алгоритмдердің артықшылықтарына келетін болсақ, бұл қорғалмаған арна бойынша ашық кілттермен алмасу мүмкіндігі. Алайда, асимметриялық алгоритмдер MITM-шабуылға (man-in-the-middle -- ортадағы адам) ұшырауы мүмкін. Шабуылдың мәні делдал тараптардың бір-бірімен қарым-қатынасын ұқсата отырып, ашық кілттерді ұстап алады және өзгертеді. Алайда, жария кілттерді ұстап алу жеткіліксіз, жеке деректерді есептеу қажет. Бұл өте күрделі жұмыс болып табылады.
Қазіргі уақытта шифрлеудің симметриялы және асимметриялы алгоритмдері бірлесіп қолданылады. Бұл шифрлеудің екі түрінің артықшылықтарын біріктіруге мүмкіндік береді.
RSA алгоритмі
RSA (Rivest, Shamir, Adleman) - үлкен бүтін сандарды факторизациялау күрделілігіне негізделген ашық кілтті криптографиялық алгоритм.
Қазіргі таңда RSA шифры көптеген мемлекеттерде әр түрлі бағытта қолданылады, соның ішінде Қазақстанда бұл алгоритм түрі электронды қолтаңбаларда қолданылады. Мысалы, біздің елдегі электронды қолтаңбада жабық кілт 256 биттен, ал ашық кілт 1024 биттен тұрады. Электронды қолтаңбаның мерзімі 1 жылды құрайды. Уақыты біткеннен кейін орнына жаңа кілт алу талап етіледі.
RSA алгоритмінің криптотөзімділігіне келетін болсақ, алгоритмді бұзушының басты міндеті болып екі қарапайым n және q көбейткіштерін есептеу болып табылады. 2010 жылы осы міндетті 768 биттік RSA криптографиялық кілті үшін қарапайым көбейткіштерді есептей алған ғалымдар тобы пайда болды. RSA-768-ді бұзуға екі жыл уақыт кетті және жүздеген компьютерлердің есептеуіш қуаты қолданылды. Ғалымдар RSA алгоритмі 1024 биттен кем емес кілт ұзындығында ғана беріктілігі жоғары болуы мүмкін деген қорытындыға келді. Бірақ есептеу техникасындағы даму прогресстерінің салдарынан 1024-биттік кілтпен ақпаратты сенімді қорғау жеткіліксіз болып қалды. Қазіргі уақытта RSA кілтінің ұсынылған ұзындығы 2048 битті құрайды, бірақ бұл да қазіргі даму қарқынына ұзақ уақытқа шыдай алмауы мүмкін. Егер зиянкестер құпия кілтті ала алса, олар ағымдағы шифрленген хабарды ғана емес, сонымен қатар барлық алдыңғы хабарларды да оқуға мүмкіндік алады (3 - сурет).
Сурет 3 RSA алгоритмінің суреттегі көрінісі
Осы суреттегідей алдымен кілттерді генерациялау алгоритмін қарастырайық [10].
1. Сымбат бір-бірінен ерекшеленетін екі үлкен p және q жай сандарын дайындайды. Бұл ретте p-q - үлкен сандар, бірақ p және q сандарының биттік өлшемдері шамамен бірдей болып табылады.
2. p және q сандарын құпияда ұстай отырып, Шыңғыс алгоритмнің модулі болып табылатын n=p*q көбейтіндісін есептейді.
3. Талғат алдындағы n көбейтіндісінің мәні үшін Эйлер функциясын
φn=(p-1)(q-1) формуласы бойынша есептейді.
4. Сымбат φ(n) функциясының мәнімен өзара қарапайым болатын e санын таңдайды. Бұл сан шифрлеу экспоненті деп аталады. Әдетте, e саны ретінде 3, 17 немесе 65537 секілді сандары таңдап алынады.
5. Сымбат e және φn сандар жұптарына Евклидтің кеңейтілген алгоритмін қолдана отырып, e∙d≡1(mod(φ(n))) салыстыруын қанағаттандыратын d мәнін есептейді. Бұл мән шифрден шешу экспоненті деп аталады.
6. (e, n) сандар жұбы Сымбаттың ашық кілті ретінде жарияланады, d жабық кілт болып табылады және құпияда сақталады.
Шифрлеу алгоритмі.
1. Шыңғыс Сымбат дайындаған (e, n) түпнұсқалық сандар жұбының көшірмесін алады.
2. Шыңғыс хабарламаны m саны ретінде белгілейді. Бұл сан өз кезегінде алгоритмнің модулі болып табылатын n санынан кіші болып табылады. Жалпы жағдайда хабарлама блоктарға бөлінуі мүмкін, олардың әрқайсысы өз санымен ұсынылады.
3. Шыңғыс C=memod n бойынша C мәнін есептейді есептейді. C мәні шифрленген хабар болып табылады.
4. Шифрленген хабар Сымбатқа жіберіледі.
Дешифрлеу алгоритмі.
1. Сымбат C криптограммасын Шыңғыстан алады.
2. Сымбат m=Cd(mod n) формуласы бойынша бастапқы m мәнін анықтап, ақпаратты шифрден шешіп оқиды.
Енді осы шифрлеу алгоритміне жасалатын танымал шабуылдармен танысып өтейік:
n ортақ модульді схемасы
Нотариус схемасындағы RSA қолтаңбасына шабуыл
Хастад шабуылы
Франклин-Рейтер шабуылы
Критографияда үлкен сандармен жұмыс жасауға арналған құралдар
Программалау тілдерінің стандартты кітапханалары мен криптографиялық беріктілігі
Қазіргі заманғы криптографияда үлкен сандармен жұмыс жасайтын құралдарды дұрыс таңдай білу, ақпаратты қорғаудың криптоберіктілігіне маңызды болып келеді.
Программалау тілдерінде үлкен сандармен жұмыс құралдар келесідей талаптарға жауап беру керек [6]:
Өте үлкен сандармен жұмыс істеу мүмкіндігі;
Криптографиялық алгоритмдермен жұмыс істеу мүмкіндігі;
Алгоритмдердегі есептеу дәлдігі мен жылдамдығы;
Кроссплатформалық;
Параллельді есептеу мүмкіндіктері.
Бұл бөлімде үлкен сандармен жұмыс жасайтын құралдар рөліндегі алгоритмдер, программалау тілдері, кітапханалар және аппараттық құрылғаларға қысқаша сипаттама беріліп, олардың мүмкіндіктері мен беріктіліктері қарастырылатын болады.
Программалау тілдеріндегі кітапхана - программа жасау үшін пайдаланылатын кіші программалар немесе объектілер жинағы. Бұл әр түрлі тапсырмалар үшін сыныптар, компоненттер немесе модульдер жиынтығы. Қазіргі таңда бәсекеге қабілетті софт жасап шығару үшін, кодының алдын жазылып қойған бөліктерін қайта жазбас үшін, программисттер әр түрлі программалау тілдерінің өзіне сай стандартты кітапханаларын, яғни дайын шешімдерін енгізеді.
Бірінші рет "кіші программа" және "кіші программа кітапханасы" сияқты ұғымдар леди Лавлейс түсіндірмелерінде белгіленді.
"Кіші программалар кітапханасы" термині алғаш 1951 жылы М. Уилкс, Д. Уиллер, С. Гилл "Электрондық есептеу машиналарына арналған программаларды құру" оқулығында компьютерде есептеуді ұйымдастырудың бір түрі ретінде көрсетілген. Олардың кітабында кітапхана деп "жеке, жиі кездесетін (стандартты) есептеу операцияларына арналған қысқа, алдын ала дайындалған программалар" түсіндірілген.
Программалау тілінің стандартты кітапханасы - модульдер, сыныптар, объектілер, константалар, жаһандық айнымалылар, шаблондар, макростар, функциялар мен процедуралар жиынтығы, осы тілде жазылған және тілдің барлық реализацияларында қатысушы.
Кейбір программалау тілдерінде бір модуль, басқа программалау тілдерінде бірнеше модульден құралуы мүмкін. Операциялық жүйе және программалық қамтама тұрғысынан кітапханалар динамикалық және статикалық болып бөлінеді.
Динамикалық кітапхана - машиналық коды бар файл. Процесс жадына операциялық жүйенің программасын жүктеуші немесе процесті құру кезінде, немесе жұмыс істеп тұрған процестің сұрауы бойынша, яғни динамикалық жүктейді.
Программаны жазу кезінде трансляторға (компиляторға немесе интерпретаторға) кітапханаға баратын жолды және функцияның атауын көрсету жеткілікті. Функцияның бастапқы мәтіні де, оның орындалатын коды да программа құрамына кірмейді.
Статикалық кітапхана - бастапқы коды бар файл немесе құрастыру кезеңінде программаға ендіруге арналған объектілік файл.
Бастапқы код түрінде таратылатын кітапханалар компилятор объектілік файлдарға айналады. Содан кейін компановщик кітапхана объектілік файлдарын және программаңыздың объектілік файлдарын бір орындалатын файлға қосады.
Мысалы, бастапқы мәтіндерде қолданылатын кітапханалар:
Java тіліне арналған кітапханалар;
Python тіліне арналған кітапханалар;
С++ тіліне арналған кітапханасы.
Объектілік файлдар түрінде таратылатын кітапханалар компоновкаға дайын болып келеді. Компановщик орындалатын файлды жасау кезінде кітапханалардың объектілік файлдарын және программаңыздың объектілік файлдарын қосады.
Ашық бастапқы кодтары бар ұзын арифметиканың ең кең қолданылатын стандартты кітапханалары gmp, crypto++ және ntl болып табылады.
Бүтін сандардың диапазоны
Бүтін сандар - нөлге және теріс сандарға қосылған табиғи сандардың жиынының кеңеюі.
Қазіргі компьютерлердегі бүтін сандар және бүтін сандармен есептеу өте маңызды. Себебі, барлық адрестік арифметика және массивтер индексімен операциялар бүтін сандармен есептеу операцияларына негізделген.
Бүтін (ағылш. Integer), информатикада - программалау тілдеріндегі қарапайым және ең көп таралған деректер түрлерінің бірі. Бүтін сандарды ұсыну үшін қызмет етеді. Ұзыдығы 16 бит 4 байт. Диапазоны -32768...32767.
Бүтін сандардың диапазоны, әдетте, бір айнымалыға бөлінген компьютер жадындағы байттардың санымен анықталады.
Типтік компьютерлік жүйенің жадында бүтін сан тіркелген (8 есе) өлшемдегі биттер тізбегі түрінде берілген. Бұл нөлдер мен бірліктердің тізбегі-сандардың екілік жазбасы ретінде өзгеше емес, себебі қазіргі заманғы компьютерлік техникада сандарды ұсыну үшін позициялық екілік код қолданылады. Бүтін сандардың диапазоны, әдетте, бір айнымалыға бөлінген компьютер жадындағы байттардың санымен анықталады.
Көптеген программалау тілдері қысқа (ағылш. short), ұзын (ағылш. long) және тұтас стандартты ұзындығы. Стандартты тұтас түрдегі ұзындығы, әдетте, мақсатты платформадағы машиналық сөздің өлшемімен сәйкес келеді. 16-биттік операциялық жүйелер - бұл түрі (int) - 2 байт және сәйкес келеді типімен short int (пайдалануға болады short, опуская сөз int) үшін 32-биттік операциялық жүйелер, ол тең болады 4 байтам мен тұспа-тұс келеді ұзын бүтін long int (пайдалануға болады long, опуская сөз int), және бұл жағдайда болады 4 байт. Қысқа бүтін short int үшін 16-биттік операциялық жүйе, 32-разрядты операциялық жүйелердің және көптеген 64-биттік операциялық жүйелер құрайды - 2 байт. Сондай-ақ, кейбір тілдерде 8 байтты құрайтын қос ұзын long long деректер түрін пайдалануға болады [5].
64-биттік операциялық жүйелер үшін, деректер үлгілерінің (LP64, LLP64, ILP64) айырмашылығын ескере отырып, әртүрлі деректер үлгілеріндегі тұтас түрдегі көрініс бір-бірімен ерекшеленуі мүмкін. Int және long түрі 4 және 8 байтты құрауы мүмкін.
Айта кету керек, әрбір программалау тілі халықаралық стандарттардан өзгеше болуы мүмкін, бірақ оны қолдауға міндетті бүтін сандарды ұсыну сигналын іске асырады. Мысалы, qt кросс-платформалық кітапханасын жатқызуға болады, мұнда бүтін qintX және quintX түрі болып табылады, мұнда X-8, 16, 32, 64.
Кездейсоқ сандардың генераторлары
Криптография саласында кездейсоқ және псевдокездейсоқ сандар өте маңызды рөл атқарады. Себебі, кездейсоқ сандарды дұрыс генерациялау криптожүйенің құпиялығы мен криптоберіктігіне маңызды болып келеді. Мысалы, көптеген протоколдарды сипаттағанда, жабық кілттер үлкен кездейсоқ сандар мен тексттерді генерациялайды [4].
Кездейсоқ сандар генераторлары - кездейсоқ сандар беретін құрылғылар немесе программалар. Әдетте, кездейсоқ сандар генераторы программалау тілдерінде стандартты функциялар мен процедуралар құрамына кіретін программа. Мысалы, Паскаль тілінде RANDOM(N) функциясы 0 ден N-1 аралығындағы бүтін сан қайтарады. Егер программа қайта орындалса, функция сол санды қайталайды. Кездейсоктық деңгейін арттыру үшін тілде генерация базасын өзгертетін RANDOMIZE процедурасы бар, бұл процедура RANDOM функциясының алдында орындалуы қажет.
Кездейсоқ сандардың аппараттық генераторы (шынайы кездейсоқ сандардың генераторы) - кездейсоқ сандардың тізбегін өлшенетін, ретсіз өзгеретін физикалық процестің параметрлерінің негізінде генерациялайтын құрылғы. Мұндай құрылғылардың жұмысы жылу шуы, бөлшек шуы, фотоэлектрлік әсерге, кванттық құбылыстар және т.б. сияқты сенімді энтропия көздерін пайдалануға негізделген (4 - сурет).
Сурет 4 Бұл кеңейту картасы желі арқылы берілетін деректерді шифрлау үшін криптографиялық кілттерді жасау үшін кездейсоқ сандардың аппараттық генераторын пайдаланады.
Кездейсоқ сандардың аппараттық генераторлары негізінен статистикалық сынақтар жүргізу үшін және криптографияда қолданылады, онда олар деректерді шифрлау үшін криптографиялық кілттерді жасау үшін пайдаланылады. Сондай-ақ, мұндай құрылғылар, мысалы, рулеткалар үшін Интернет Казинода кеңінен қолданылады. Бірақ іске асыру қиындығы мен салыстырмалы баяу болғандықтан, мұндай генераторларды пайдалану нақты пәндік саланың қажеттіліктеріне және генератордың өз құрылғысына байланысты.
Нақты уақытта оларды генерациялайтын кездейсоқ сандардың генераторлары көп таралған. 1951 жылы Ferranti Mark 1 компьютеріне резистордың шуын пайдалана отырып, кездейсоқ сандарды генерациялайтын программа енгізілді. Бұл программаны құру идеясы А. Тьюрингке тиесілі. 1957 жылы ENIAC (Electronic Random Number Indicator Equipment) машинасы ойлап тапты. Бұл құрылғы бастапқыда Британдық лотереяда ұтыс облигацияларының нөмірлерін жасауға арналған (5 - сурет).
Сурет 5 Жалпы қолданыстағы электро-цифрлық есептеулермен айналысатын алғашқы машина ENIAC
Кездейсоқ сандардың аппараттық генераторлары монетка, ойлы сүйек немесе рулетка дөңгелегі сияқты заттарды пайдалана отырып, макроскопиялық кездейсоқ процестерге негізделуі мүмкін. Деректерде болжаусыздықтың болуы тұрақсыз динамикалық жүйелердің теориясымен және хаос теориясымен түсіндіріледі. Тіпті Ньютон теңдеулерімен толық анықталған макроскопиялық жүйелердің іс жүзінде болжанбаған шығуы бар, өйткені ол бастапқы жағдайлардың микроскопиялық бөлшектеріне байланысты.
Қазіргі таңда криптографияда үлкен генерацияланған сандармен көптеген алгоритмдер, протоколдар және т.б. жұмыс жасайды. Солардың бірі 1917 жылы AT&T қызметкері Гильберт Вернам ойлап тапқан, симметриялық криптожүйеге жататын Вернам шифры (6 - сурет).
Вернам шифры бір рет қана қолданылатын блокнотқа жатады. Сондықтан бұл шифр қарапайым криптожүйенің бірі болғанымен, абсолютті криптоберік болып табылады.
Криптожүйе бинарлық хабарламаларға негізделген телеграф хабарламаларын шифрлауға ұсынылған. Бинарлық хабарламаларда ашық текст Бодо кодымен ... жалғасы
Л.Н.Гумилев атындағы Еуразия ұлттық университеті
Тунгишбаев Талгат Кайратович
Қазіргі заманғы криптографиядағы үлкен сандармен жұмыс жасауға арналған құралдар
ДИПЛОМДЫҚ ЖҰМЫС
5B100200 - Ақпараттық қауіпсіздік жүйелері мамандығы бойынша
Нұр-Сұлтан 2020
Қазақстан Республикасы Білім және ғылым министрлігі
Л.Н.Гумилев атындағы Еуразия ұлттық университеті
Қорғауға жіберілді
Информатика және ақпараттық
қауіпсіздік кафедрасының
меңгерушісі т.ғ.к., доцент
Сагиндыков К.М. ________________
6 5 2020 ж.
ДИПЛОМДЫҚ ЖҰМЫС
Тақырыбы: Қазіргі заманғы криптографиядағы үлкен сандармен жұмыс жасауға арналған құралдар
5B100200 - Ақпараттық қауіпсіздік жүйелері мамандығы бойынша
Орындаған: Тунгишбаев Т.К.
Ғылыми жетекші
ф.- м. ғ. к., доцент м. а. Оспанова Ә.Б.
Нұр-Сұлтан - 2020
Л.Н. Гумилев атындағы Еуразия ұлттық университеті
Ақпараттық технологиялар факультеті
5В100200 - Ақпараттық қауіпсіздік жүйелері мамандығы
Информатика және ақпараттық қауіпсіздік кафедрасы
Бекітемін
Информатика және ақпараттық
қауіпсіздік жүйелер кафедрасының
меңгерушісі т.ғ.к., доцент
Сагиндыков К.М.______________
4 12 2019 ж.
ДИПЛОМ ЖҰМЫСЫН ОРЫНДАУҒА АРНАЛҒАН
Т А П С Ы Р М А
Студент Тунгишбаев Талгат 4 курс, АҚЖ-41, 5B100200 - Ақпараттық қауіпсіздік жүйелері мамандығы, күндізгі бөлім
Дипломдық жұмысының тақырыбы Қазіргі заманғы криптографиядағы үлкен сандармен жұмыс жасауға арналған құралдар 2019 жылдың 27 11 берілген № 1935-п ректордың бұйрығымен бекітілген.
2 Диплом жұмысының тапсырмасына сәйкес:
Есеп берудің бірінші аралық кезеңі - 16 01 2020ж.
Есеп берудің екінші аралық кезеңі - 12 02 2020ж.
Есеп берудің үшінші аралық кезеңі - 27 03 2020ж.
Алдын-ала қорғауға дипломдық жұмысты әкелу мерзімі - 25 04 2020ж.
Норма бақылау тексерісі - 03 05 2020ж.
Дипломдық жұмыстың соңғы нұсқасын әкелу мерзімі - 15 05 2020ж.
Дипломдық жұмысты қорғау мерзімі - 6 06 2020ж.
Аяқталған жұмысты тапсыру мерзімі - 15 05 2020ж.
3 Жұмыстың бастапқы деректері:
3.1 Қазіргі заманғы криптографияда үлкен сандармен жұмыс жасайтын құралдарды анықтау;
4 Диплом жұмысын дайындау үшін сұрақтар тізімі:
4.1 Заманауи криптографиялық алгоритмдердің жұмысымен танысу;
4.2 Үлкен сандармен жұмыс жасайтын алгоритмдерді әзірлеу құралдарына қойылатын талаптар мен критерийлерді анықтау;
4.3 Қойылған талаптар мен критерийлерге сәйкес әзірлеу құралдарын таңдау;
4.4 Таңдалып алынған программалау құралдарымен криптографиялық есеперді шешу;
4.5 Жинақталған мәліметтер және жүргізілген есептеулер бойынша саластырмалы анализдер жасау;
4.6 Құралдармен салыстыруларды жүргізуді ыңғайлы ету мақсатында басқару жүйесін құру.
5 Графикалық материалдың тізімі (сызбалар, кестелер, диаграммалар және тағы басқалары):
5.1 Шифрлеу алгоритмдерін салыстыру кестесі
5.3 Салыстырмалы анализ кестесі
6 Негізгі ұсынылатын әдебиеттер тізімі:
6.1 Основы современной криптографии и стеганографии. - 2-е изд. - М.: Горячая линия - Телеком, 2013. - 232 с.
6.2 Евсютин О.О. Криптографические методы защиты информации: учебное пособие для вузов. - Томск: ТУСУР, 2014. - С. 4-7
7 Жұмысқа қатысты кеңестер (оларға қатысты жұмыс бөлімдерінің көрсетілуімен)
Нөмір, бөлімнің, бөлімшенің аты
Ғылыми жетекші, кеңесші
Тапсырманы алу уақыты
Тапсырма бердім
(қолы)
Тапсырма
алдым
(қолы)
Кіріспе
Оспанова Ә.Б.
05.12.2019
Негізгі бөлім
Оспанова Ә.Б.
18.12.2019
Практикалық бөлім
Оспанова Ә.Б.
06.01.2020
Дипломдық жұмыстың техникалық - экономикалық негіздеме бөлімі
Оспанова Ә.Б.
Еңбекті қорғау бөлімі
Оспанова Ә.Б.
Қорытынды
Оспанова Ә.Б.
14.02.2020
Қолданылған әдебиеттер тізімі
Оспанова Ә.Б.
20.02.2020
Нормабақылау
Назырова А.Е.
02.05.2020
Дипломдық жұмысты орындау графигі
№
Жұмыс сатысы
Жұмыс сатысын орындау мерзімі
Ескерту
1
Дипломдық жұмыстың тақырыбын бекіту
27.11.2019
2
Дипломдық жұмысты дайындау үшін мәліметтер жинау
05.12.2019
3
Дипломдық жұмыстың теориялық бөлігін дайындау (1 Бөлім)
06.01.2020
4
Дипломдық жұмыстың аналитикалық бөлігін дайындау (2-3 Бөлім)
28.03.2020
5
Дипломдық жұмыстың толық мәтінінің қолжазбалық нұсқасын аяқтау
30.04.2020
6
Алдын-ала қорғауға дипломдық жұмысты әкелу
25.04.2020
7
Рецензияға дипломдық жұмысты жіберу
05.05.2020
8
Ғылыми жетекшінің пікірі мен рецензиясы бар дипломдық жұмыстың соңғы нұсқасын әкелу
15.05.2020
9
Дипломдық жұмысты қорғау
06.06.2020
Тапсырманың берілген мерзімі 4 12 2019 жыл
Ғылыми жетекші
ф.- м. ғ. к., доцент м. а.
______________________Оспанова Ә.Б.
Тапсырманы орындаған
АҚЖ-41 тобы студенті
____________________Тунгишбаев Т.К.
НОРМАТИВТІК СІЛТЕМЕЛЕР
1 ҚР МЖМБС 5.03.016 -2009. Жоғары оқу орындарындағы дипломдық жұмыстарды орындау ережелері
2 ҚР МЖМБС 5.04.019 -2008 Қазақстан Республикасының мемлекеттік жалпыға міндетті білім беру стандарты. Жоғары кәсіптік білім. Бакалавриат. Негізгі ережелері.
3 МСТ 7.1-84. Ақпараттық, кітапханалық және баспалар бойынша стандарттар жүйесі. Құжаттың кітапханалық жазбасы. Қолданылған әдебиеттер тізімін жазудың жалпы талаптары мен ережелері. М.: Стандарттар, 1984.
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...8
1 Қазіргі заманғы криптографиядағы үлкен сандар ... ... ... ... ... ... ... . ... 10
1.1 Практикалық криптографиялық беріктілік ... ... ... ... ... ... ... ... ... ... .10
1.2 Криптографиялық примитивтер және олардың криптоберіктілігі ... ... ...13
1.2.1 Заманауи симметриялық алгоритмдер ... ... ... ... ... ... ... ... ... ... ...14
1.2.2 Заманауи ассиметриялық алгоритмдер ... ... ... ... ... ... ... ... ... ... ..17
2 Критографияда үлкен сандармен жұмыс жасауға арналған құралдар ... ... .22
2.1 Программалау тілдерінің стандартты кітапханалары мен криптографиялық беріктілігі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...22
2.1.1 Бүтін сандардың диапазоны ... ... ... ... ... ... .. ... ... ... ... ... ... ... ..23
2.1.2 Кездейсоқ сандардың генераторлары ... ... ... ... ... .. ... ... ... ... ... ...24
2.1.3 Жай сандарды генерациялау алгоритмі және оларды қарапайымдылыққа тексеру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..26
2.2 Үлкен сандармен жұмыс жасауға арналған арнайы кітапханаларалар ... ..27
2.2.1 СС++ үлкен сандармен жұмыс жасауға арналған кітапханалар. GMP кітапханасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 28
2.2.2 Java үлкен сандармен жұмыс жасауға арналған кітапханалар ... ... ... ..32
2.2.3 Python үлкен сандармен жұмыс жасауға арналған кітапханалар ... ... ...35
2.2.4 Crypto++, libgcrypt, PyСryptodome криптографиялық кітапханалары ... .35
2.3 GMP кітапханасын орнату және қолдану ... ... ... ... ... ... ... ... ... ... ..39
2.3.1 Crypto++, Sage, Maple программаларында GMP кітапханасының қолданылуы ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...40
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..47
Пайдаланылған әдебиеттер тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ...48
Қосымша 1 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .50
Қосымша 2 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .55
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...8
1 Қазіргі заманғы криптографиядағы үлкен сандар ... ... ... ... ... ... ... . ... 10
1.1 Практикалық криптографиялық беріктілік ... ... ... ... ... ... ... ... ... ... .10
1.2 Криптографиялық примитивтер және олардың криптоберіктілігі ... ... ...13
1.2.1 Заманауи симметриялық алгоритмдер ... ... ... ... ... ... ... ... ... ... ...14
1.2.2 Заманауи ассиметриялық алгоритмдер ... ... ... ... ... ... ... ... ... ... ..17
2 Критографияда үлкен сандармен жұмыс жасауға арналған құралдар ... ... .22
2.1 Программалау тілдерінің стандартты кітапханалары мен криптографиялық беріктілігі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...22
2.1.1 Бүтін сандардың диапазоны ... ... ... ... ... ... .. ... ... ... ... ... ... ... ..23
2.1.2 Кездейсоқ сандардың генераторлары ... ... ... ... ... .. ... ... ... ... ... ...24
2.1.3 Жай сандарды генерациялау алгоритмі және оларды қарапайымдылыққа тексеру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..26
2.2 Үлкен сандармен жұмыс жасауға арналған арнайы кітапханаларалар ... ..27
2.2.1 СС++ үлкен сандармен жұмыс жасауға арналған кітапханалар. GMP кітапханасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 28
2.2.2 Java үлкен сандармен жұмыс жасауға арналған кітапханалар ... ... ... ..32
2.2.3 Python үлкен сандармен жұмыс жасауға арналған кітапханалар ... ... ...35
2.2.4 Crypto++, libgcrypt, PyСryptodome криптографиялық кітапханалары ... .35
2.3 GMP кітапханасын орнату және қолдану ... ... ... ... ... ... ... ... ... ... ..39
2.3.1 Crypto++, Sage, Maple программаларында GMP кітапханасының қолданылуы ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...40
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..47
Пайдаланылған әдебиеттер тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ...48
Қосымша 1 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .50
Қосымша 2 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .55
МАЗМҰНЫ
Кіріспе
Қазіргі заманғы криптография (1970жж. соңынан қазіргі заманға дейін) қазіргі уақытта барлық цифрлық құрылғылардағы қауіпсіздіктің негізі болып табылады. Себебі, бүгінгі таңда криптографиялық қорғау әдістері дегеніміз транзакцияларды шифрлау және криптовалюта өндірісін бақылау үшін ғана емес, сонымен қатар банк жүйелерінің, пластикалық карталардың, банкоматтардың, электрондық коммерцияның және сымсыз құрылғылардың қауіпсіз жұмысын, яғни ақпараттардың қауіпсіз тасымалдануын қамтамасыз ету болып табылады [1].
Қазіргі заманғы криптография сандар теориясы, есептеу күрделілігі теориясы және ықтималдық теориясы сияқты әртүрлі математикалық теорияларға негізделгендіктен оны математикасыз елестету мүмкін емес. Себебі, математикалық әдістерді қолдана отырып, сіз қазіргі заманғы күрделі шифрларды құрып қана қоймай, сонымен қатар олардың криптографиялық беріктігін - практикалық немесе теориялық бұзушылықтарға төтеп беру қабілеттілігін - криптанализді негіздей аласыз. Өз кезегінде қазіргі заманғы криптографиялық алгоритмдердің берікілігін арттыру үшін, ондағы сандардың көлемін үлкен мәндерге дейін өзгерту қажеттілігі туындап тұр.
Қазіргі заманғы криптографияда үлкен сандармен жұмыс істейтін шифрлау алгоритмдердің көптеген түрлері бар. Олар жоғарыда келтірілген талаптарға сай келуі керек, және уақытылы жаңартылып тұруы керек.
Осыған орай қазіргі уақытта әлемнің көптеген криптографтары жаңа технологияларды, соның ішінде олардың криптографияға тигізетін әсерін зерттеп жатыр. Әрине, жаңа технологиялар қазіргі заманғы криптографияға жаңа дем берсе, бір жағынан осы технологиялар криптографияға үлкен қауіп төндіруі ықтимал. Мысалы, бұлар қазіргі серверлер немесе суперкомпьютерлерден бірнеше есе мықты кванттық компьютерлер болуы мүмкін, ал олар өз кезегінде қазіргі заманғы криптографиядағы үлкен сандарды аз уақытта факторизациялауға мүмкіндік береді деп тұжырымдалуда.
Зeрттeу тaқырының өзeктілігі: Қазір криптография адам өмірінде күнделікті қолданатын ұялы телефондарда, компьютерлерде, арнайы желімен қамтылған жұмыс орындары мен заманауи қалаларда және т.б. технологияларға қатысты барлық құрылғыларда ақпаратпен жұмыс жасайды.
Қазіргі криптографияның қауіпсіздігін немесе ақпараттың маңыздылығының айқындау үшін оны үлкен сандармен шифрлеу өте тиімді әдістердің бірі болып табылады. Әрине, кез-келген заттың екі жағы болғандықтан, криптографияда үлкен сандардың тиімсіз жақтары да бар. Осы үлкен сандардың алгоритмдерде, программалау тілдерінде қандай ерекшеліктері мен кемшіліктерін бар екендігін анықтау, дипломдық жұмысымның өзекті тақырыбы болып келеді.
Ғылыми-зeрттeу нысaны: Дипломдық жұмысымның практикалық бөлімінде ғылыми зерттеу нысандары ретінде криптографиядағы үлкен сандармен жұмыс жасағанда қолданылатын кітапханалар болып келеді. Ол үшін мен қазіргі таңда үлкен қолданыстағы Java, Python, C++ тілдерін таңдап алдым. Оған қоса зерттелу нысандары ретінде қазіргі заманғы криптографияда үлкен сандармен жұмыс жасауға арналған кітапханаларды қолдана отырып, алгоритмдердің үш программалау тілдерінде хабарламаны шифрлайтын құралдарды анықтау болып табылады. Бұл таңда мен қазіргі криптографияда көп қолданылатын симметриялық криптожүйеге жататын AES алгоритмін және асимметриялы криптожүйеге жататын RSA алгоритмін алатын боламын [2].
Жұмыстың мaқсaты: Дипломдық жұмыс екі бөлімнен тұрады. Aлғaшқы бөлімдегі мақсат криптография саласының өзін қарастырып, жалпы ақпараттар беріп өту. Ары қарай осы бөлемде заманауи криптографияның бөлімдеріне жалпы түсініктемелер беріп, олардың беріктілігін, онда үлкен сандармен жұмыс жасайтын алгоритмдерге мысалдар көрсету болып табылады.
Екінші бөлімде заманауи криптографияда үлкен сандармен жұмыс жасайтын құралдарды қарастырылады. Ары қарай осы құралдарға практикалық жұмыстардан дәлелдер көрсетемін. Яғни, үлкен сандармен жұмыс жасағанда программалау тілтерінде олардың жүзеге асатын кітапханалары және программаларына мән беріледі.
Қазіргі заманғы криптографиядағы үлкен сандар
Практикалық криптографиялық беріктілік
Алдымен қазіргі заманға криптографияда үлкен сандармен жұмыс жасау кезінде қолданылатын негізгі анықтамалар мен ұғымдарға тоқталып өтейік.
Криптография - ақпараттың конфиденциалдығын, бүтіндігін және аутентификациялығын қорғау мақсатында оны түрлендірудің математикалық әдіс-тәсілдерін іздеумен және зерттеумен айналысатын ғылым.
Криптоанализ (жасырын + анализ) - құпия кілтсіз, шифрленген ақпаратқа қол жеткізу мақсатында зерттеу әдістерін жүргізумен айналысатын ғылым. Криптоанализ криптографиялық тұрғыдан қарағанда алгоритмдер мен хаттамалардағы осалдықты табудың кез-келген іс-әрекетін болып саналады. Бұл термин алғаш рет 1920 жылы америкалық криптограф Уильям Ф. Фридманның Криптоанализ элементтері кітабының аясында пайда болған.
Криптология - криптография және криптоанализ ғылымдарын математикалық тұрғыда қамтитын сала. Қазіргі заманғы криптограф саласында ақпаратты қорғаудың негізгі үш әдісі бар, олар: шифрлеу, хештеу және электрондық қолтаңба. Бұл криптография бағыттарының әрбірінің ақпаратты қорғау тақырыбында атқаратын өзіндік бір немесе бірнеше қызметтері бар. Соның ішінде олар криптография саласында үлкен сандармен жұмыс жасайтын барлық аспектілерді де қамтамасыз етеді.
Криптографияға қойылатын негізгі талаптары:
1. Конфиденциалдық - ақпараттың мазмұнын білетін адамның, оны ақпарат иесінсіз үшінші жаққа ашпай, онымен жасырын жұмыс жасай білу болып табылады;
2. Бүтіндікті қамтамасыз ету - тек заңды және сәйкес өкілдігі бар тұлғаның ақпаратты модификафиялау, ауыстыру, қайталау немесе жою мүмкіндігі болып табылады;
3. Қолжетімділікті қамтамасыз ету - қорғалған ақпаратқа өкілеттілігі бар заңды қолданушыларға бөгетсіз қатынауды ұйымдастыру және оның кепілі болу [7].
Қазіргі заманға криптографиядағы алгоритмдердің беріктігі
Криптографиялық беріктілік - криптографиялық алгоритмнің криптоанализге қарсы тұру қабілеті. Алгоритм криптоберік деп аталу үшін ол келесі талаптарға сай болуы қажет. Біріншіден, алгоритмге жасалатын шабуыл барлық тұрғыдан күрделі болуы қажет. Екіншіден, ақпаратқа санкцияланбаған шабуыл болғанымен, ол өзектілігін жоғалтқанша көп ресурс пен уақыттың жұмсалуына әкелуі керек [4].
Ақпаратты қорғаудың заманауи криптографиялық жүйелері үшін келесі жалпы қабылданған талаптар тұжырымдалады:
шифрланған хабарлама тек егер кілт болса ғана оқылуы керек;
пайдаланылған шифрлау кілтін шифрланған хабарламаның фрагментінен және тиісті қарапайым мәтіннен анықтау үшін қажет әрекеттер саны мүмкін кілттердің жалпы санынан кем болмауы керек;
кілттердің барлық түрлерін сұрыптау арқылы ақпаратты шифрлау үшін қажет операциялардың саны қатаң төменгі шекке ие болуы керек және қазіргі компьютерлердің мүмкіндіктерінен асып кетуі керек (желілік есептеулерді қолдану мүмкіндігін ескере отырып);
шифрлау алгоритмін білу қорғаныс сенімділігіне әсер етпеуі керек;
кілттің шамалы өзгеруі сол кілтті қолданған кезде де шифрланған хабарламаның сыртқы түрінің айтарлықтай өзгеруіне әкелуі керек;
шифрлау алгоритмінің құрылымдық элементтері өзгеріссіз болуы керек;
шифрлау процесінде хабарламаға енгізілген қосымша биттер толық және сенімді түрде шифрланған мәтінде жасырылуы керек;
шифр мәтінінің ұзындығы бастапқы мәтіннің ұзындығына тең болуы керек;
шифрлау процесінде жүйелі түрде қолданылатын кілттер арасында қарапайым және оңай орнатылатын тәуелділік болмауы керек;
көптеген мүмкін кілттердің кез-келгені сенімді ақпаратты қорғауды қамтамасыз етуі керек;
алгоритм бағдарламалық жасақтамаға да, аппараттық құралға да рұқсат беруі керек, ал кілт ұзындығын өзгерту шифрлау алгоритмінің сапалы нашарлауына әкелмеуі керек.
Жоғарыда келтірілген талаптарға сай криптографияда келесідей беріктілік жүйелері қалыптасады.
Абсолютті берік жүйелер. Егер шабуылдаушыда үлкен есептеу ресурстары болған жағдайдың өзінде де теориялық түрде де, іс жүзінде де ақпаратты оқу мүмкін болмайтын жағдай. Практикалық тұрғыда шифрлеудің абсолютті тұрақты алгоритмдерінің болуы 1949 жылы америкалық математик Клод Шеннонның Bell System Technical Journal журналындағы "Құпия жүйелердегі байланыс теориясы" мақаласында жарияланған. Осы журналда абсолютті берік жүйелерге келесідей талаптар көрсетілген:
кілт әр хабарламаға генерацияланады (кілт тек бір рет қана қолданылады);
кілт статистикалық тұрғыда берік (яғни әрбір мүмкін символдардың пайда болу мүмкіндігі тең, және символдардың ретпен орналасуы тәуелсіз және кездейсоқ);
кілттің ұзындығы хабарлама ұзындығына тең немес ұзын;
бастапқы мәтіннің кейбір артықтығы бар (бұл расшифровка дұрыстығын бағалау критерийі болып табылады).
Бұл жүйелердің тұрақтылығы криптоаналитиктің қандай есептеу мүмкіндіктеріне ие екендігіне байланысты емес. Абсолюттік беріктілік талаптарын қанағаттандыратын жүйелерді іс жүзінде қолдану, құны және пайдалану ыңғайлылығы тұрғысынан шектелген.
Шеннон практикалық тұрғыда абсолютті берік алгоритмнің мысалы, Вернам шифры (бір реттік блокнот) екендігін дәлелдеді. Яғни, Вернам шифрін дұрыс пайдалану зиянкеске ашық мәтін туралы ешқандай ақпарат бермейді (кез-келген хабарламаның битін 12 ықтималдығымен ғана табуға болады).
Есептеу ресурстарының немесе қалған ашық және шифрленген хабарламалардың іс жүзінде қол жетпейтін көлемін шабуылдаудан не оны ашуға кететін уақыттың соншалықты маңызды шығынын талап ететін, қорғалған ақпарат өзінің өзектілігін жоғалтатын алгоритм тұрақты болып саналады. Көп жағдайларда криптотөзімділік математикалық дәлелденген мүмкін емес; тек криптографиялық алгоритмнің осалдығын дәлелдеуге болады немесе (ашық кілтті криптожүйе жағдайоған кез келген ақпарат төтеп беруі ында) алгоритмді ашу міндетін есептеу күрделі болып саналатын кейбір міндетке қоюға болады (яғни "бұзу" бұл міндетті шешу оңай емес екенін дәлелдеу).
Жеткілікті берік жүйелер. негізінен азаматтық мақсаттағы криптографиялық жүйелерде іс жүзінде берік немесе есептеу тұрғысынан берік жүйелер қолданылады. Жүйенің есептеу тұрғысынан беріктілігі туралы, егер шифрды ашу ықтималдығы бар, бірақ ол үшін тек таңдалған параметрлер мен шифрлау кілттері қолданылса ғана айтылады. Практикада шабуылдаушы заманауи технологияларды дамытудың қазіргі кезеңінде өзіне қолайлы уақытта шифрді ашу үшін жеткілікті есептеу ресурстарына ие емес. Мұндай жүйелердің тұрақтылығы криптоаналитиктің қандай есептеу мүмкіндіктеріне ие екендігіне байланысты.
Мұндай жүйелердің практикалық тұрақтылығы күрделілік теориясына негізделеді және тек қана белгілі бір уақытта және екі позициядан жүйелі түрде бағаланады:
толық іріктеудің есептеуіш күрделілігі;
қазіргі уақытта белгілі криптографиялық осалдылықтарының есептеу күрделілігіне әсері.
Әрбір нақты жағдайда беріктілікті бағалаудың қосымша критерийлері болуы мүмкін.
Егер криптожүйенің беріктілігің дәлелдемесі алгоритмнің негізіне жататын белгілі бір қиын шешілетін математикалық проблеманы шешуге жеткен жағдайда, біз дәлелденген беріктілік туралы айта аламыз. Мысалы, RSA криптожүйесі келесі жағдайда берік болып саналады, егер сандық түрлендіру модулі полиномиалды уақыт ішінде факторизациялау мүмкін болмаса. Бұл дегеніміз, RSA шифрында n модулі үшін таңдап алынатын екі көбейткіштердің мәні үлкен сандарға ие болған сайын, алгоритмнің беріктілігі арта түседі.
Криптографиялық примитивтер және олардың криптоберіктілігі
Криптографиялық примитивтер - криптографиялық хаттамаларды құру үшін жиі қолданылатын төмен деңгейлі криптографиялық алгоритмдер. Бұл криптожүйенің талап етілетін қасиеттерін анықтайтын операциялар мен процедуралар.
Криптографиялық примитивтер криптожүйені құру кезінде негізгі құрылыс блоктары ретінде пайдаланылады, яғни олар сенімділіктің жоғары деңгейімен тек кейбір кластағы тапсырмаларды шешуге арналған. Мысал ретінде мұндай жағдайды қарастыруға болады: кейбір шифрлаудың үшін ол тек компьютердегі X операциясының санымен ғана бұзылуы мүмкін деп көрсетілсін, егер ол X-тен әлдеқайда аз операциялар санының көмегімен бұзылса, бұл криптографиялық примитив сенімсіз деп саналады.
Хаттамаларды және криптожүйелерді жобалау кезінде әзірлеуші композициялық кемшіліктерді жоюға жауапты болады. Олардың қауіпсіздігін дәлелдеу мүмкіндігі болмаса, әзірлеуші олар пайдаланатын сенімді примитивтерді санауы тиіс. Хаттамада пайдалану үшін қол жетімді ең жақсы примитивті таңдау, әдетте мүмкін ең жақсы қолжетімді қауіпсіздікті қамтамасыз етеді. Егер криптографиялық примитив бұзылған болса, оны пайдаланатын әрбір хаттама осал болады.
Криптографиялық примитивтер келесі қасиеттерге ие болуы керек:
қауіпсіздік деңгейі;
функционалдығы;
жұмыс жасау әдістері;
өнімділік;
реализациялау жеңілдігі.
Қазіргі заманғы криптографияның негізгі примитивтері:
Симметриялық криптожүйелер;
Блоктық шифрлау;
Ағындық шифрлау;
Асимметриялық криптожүйелер;
Хештау;
Электрондық қолтаңба;
Кілттерді басқару жүйелері;
Міндеттемелер схемасы;
Псевдокездейсоқ сандар генераторы.
1.2.1 Заманауи симметриялық алгоритмдер
Симметриялық криптожүйелер - хабарламаны шифрлау және дешифрлау үшін тек қана бір криптографиялық кілт қолданылады. Бұл критожүйе ассиметриялық криптожүйенің алдында қолданыста болған. Бұл криптожүйеде қолданылатын алгоритмдердің кілттері хабарлама алмасатын екі жақтанда барынша құпия болуы қажет және хабарлама алмасатын каналда үшінші артық адамдар болмауы қажет. Сонымен қатар, шифрланатын алгоритм екі жақпен хабарлама алмасудың алдында таңдалу керек [8].
Заманауи симметриялық криптожүйелер келесі талаптарға сай болуы қажет:
криптоанализге төзімділігі, кілттерді толығымен іріктегенде ғана хабарламаны оқу мүмкін болу қажет;
криптоберіктілік шифрлеу алгоритмінің құпиялығын емес, кілттің құпиялығын қамтамасыз ету керек;
шифрленген хабарлама ашық хабарлама көлемінен тым көп болмауы керек;
ақпаратты шифрлау уақыты мен бағасы тиімді болуы керек.
Заманауи симметриялық криптожүйелер келесідей екі топқа бөлінеді:
блоктық шифрлар. 64-256 бит аралығындағы блоктарда ақпаратты өңдейді, белгіленген тәртіпте блоктың кілтін қолдана отырып, әдетте бірнеше араластыру және орналастыру циклдары арқылы, раунд деп аталады. Екінші раундтардың нәтижесі-лавин тәрізді әсер-ашық және шифрланған деректер блоктарының арасындағы биттік сәйкестіктің жоғалуы.
ағымдық шифрлар. Гаммалау әдісін қолданатынШифрлеу әрбір бит немесе гаммирлеуді пайдалана отырып, бастапқы (ашық) мәтіннің байты үстінде жүргізілетін ағынды шифрлар. Ағынды шифр арнайы режимде іске қосылған блоктық (мысалы, ГОСТ 28147-89 гаммалау режимінде) негізінде оңай жасалуы мүмкін.
AES алгоритмі
Қазіргі уақытта 2002 жылы шифрлеу стандартында жарияланған AES (Advanced Data Encryption) шифрлеудің симметриялық алгоритмі аса өзекті [7]. AES - 128 биттік блок өлшемді блоктық алгоритм, ал кілттер 128, 192 немесе 256 биттік ұзындықта болуы мүмкін. Раундтардың саны кілттің ұзындығына байланысты және тиісінше 10, 12 немесе 14 раундтарды құрауы мүмкін. AES алгоритмі тестілеуден өткен кезде, ол 8-ші раундтан кейін шабуылдарға төзімді болып келетіні анықталды. Осылайша, ұсынылатын шифрлеу раундтарының ең аз дегендегі саны - 10 раунд болуы тиіс. AES алгоритмінде ығысу, араластыру, кестелердің көмегімен қою және әртүрлі алгебралық операциялар қолданылады. Мысалы, операциялардың бірі төмендегі суреттегідей көрсетіледі (Сурет 1).
Сурет 1 Қатарлардың ығысуы
AES алгоритмінің беріктілігіне келетін болсақ, криптографтар криптотөзімділікке арналған AES алгоритміне бірнеше рет зерттеулер жүргізді. Нәтижесінде осы алгоритмге шабуылдардың теориялық үлгілері әзірленді. Криптография саласындағы мамандар салыстыру үшін келесідей есептеулерді жүргізіп, мысал ретінде келесі сандарды келтірді. Мысалы, DES алгоритмін мифтік суперкомпьютердің көмегімен бір секундта бұзуға болар еді. Сол кезде AES алгоритмін бұзу үшін сол компьютер 149 триллион жылды қажет етеді. Ал енді AES-ті бұзу немесе әлсіздігін көрсету мақсатында құрылған теориялық шабуылдарға тоқталып өтсек:
XSL-шабуыл (ағылш. eXtended Sparse Linearization, алгебралық шабуыл) - бұл шифрлердің алгебралық қасиеттеріне негізделген криптографиялық талдау әдісі. Әдіс теңдеулердің ерекше жүйесін шешуді көздейді. Бұл әдіс 2001 жылы Николя Куртуа (Nicolas T.Courtois) және Юзеф Пешик (Josef Pieprzyk) ғалымдарымен ұсынылды. Алайда, бұл әдіс көптеген сындарға ұшырап, бірнеше мамандар бұл әдісті жоққа шығарды. Солардың бірі Брюс Шнайермен Нильс Фергюсон болды. Егер XSL шабуылдар шынымен жұмыс істесе, олар қазіргі кездегі барлық шифрлерді бұзады. Шифрді бұзудан сақтап қалу тек таза кездейсоқ болуы мүмкін. Екінші жағынан, XSL шабуылдар біздің ойымызша практикада да қолданысқа түсе алмауы әбден мүмкін немесе жоғары құрылымдалған шифрлердің шағын санына ғана қолдануға болады - деп, айтқан болатын. Осы оймен мамандардың барлығы дерлік келісе кетті. Алайда, бұл шабуылдың авторлары бұл оймен келісе қоймады. 2006 жылы осы шабуылдың жаңартылған моделін ұсынды. Бұл талпыныстары да сәтсіздікке ұшырап, AES қазіргі уақытқа дейін беріктілігі өте жоғары деңгейін сақтап келеді.
Үшінші тарап арналары бойынша шабуылдар шифрдің математикалық ерекшеліктерімен байланысты емес, бірақ құпия деректерді, оның ішінде кілтті ішінара немесе толық ашу мақсатында осы шифрлерді пайдаланатын жүйелерді іске асырудың белгілі бір ерекшеліктерін пайдаланады. AES алгоритмін қолданған жүйелерге осыған ұқсас бірнеше шабуылдар белгілі.
Симметриялы алгоритмдердің артықшылықтары мен кемшіліктері
Шифрлеудің симметриялы алгоритмдері ақпаратты өңдеудің жоғары жылдамдығына ие. Бұл алгоритмдерді операциялардың салыстырмалы қарапайымдылығына байланысты түрлендіру қиын емес. Сонымен қатар, симметриялы алгоритмдердің көмегімен үлкен көлемді деректерді кілттің салыстырмалы түрде аз көлемінде шифрлеуге болады.
Бірақ симметриялы алгоритмдерде бір маңызды кемшілік бар. Кілтті тасымалдау кезінде қиындықтар туындауы мүмкін. Осы орайда үшінші жақтағы қаскүнемдер шифрлеу кілтін ұрлап алуы мүмкін.
Хабарламаны шифрлеу үшін кілтті жіберу қажеттілігі, шифрлеудің симметриялы алгоритмдерінің басты мәселелерінің бірі болып табылады.
Тиісінше, кілтті қауіпсіз жолмен беру үшін де белгілі бір деңгейдегі қорғаныс қажет. Ал мұны шифрлеудің асимметриялық алгоритмдері арқылы орындауға болады.
1.2.2 Заманауи асимметриялық алгоритмдер
Мəліметтерді криптографиялық қорғаудың тиімді жүйесі асимметриялық криптожүйелер болып табылады. Бұл криптожүйе қазіргі заманғы криптография дәуірінде қарқынды дамып, қазіргі таңда көптеген мемлекеттер, ұйымдар осы ашық кілтті криптожүйе алгоритмдерін қолданады. Мұндай жүйелерде мəліметтерді шифрлауды бір кілт, ал мəліметтерді ашуда басқа кілт қолданылады (асимметриялық атауы осыдан шыққан). Бірінші кілт ашық кілт болып табылады жəне мəліметтерді шифрлайтын жүйелердегі барлық қолданушыларға пайдаланылуы үшін ол жария болуы мүмкін. Мəліметтерді ашық кілт көмегімен ашу мүмкін емес.
Шифрланған хабардың қабылдаушысы мəліметтерді ашу үшін құпия кілт болып табылатын екінші кілтті қолданады. Əрине, ашу кілті шифрлау кілтінен анықталуы мүмкін емес, яғни олар бір-бірімен байланысы жоқ.
Асимметриялық криптожүйенің сызбасын төменгі суретте көрсеттім [9]. Мұнда, КВ-А жіберушінің ашық кілті, kB-B қабылдаушының құпия кілті. B ақпарат қабылдаушысы болғандықтан кілттер генераторы қабылдаушының жағында орналастырдым. kB құпия кілті қорғалмаған канал арқылы жіберілмеуі керек. Себебі, kB кілті асимметриялық криптожүйенің негізгі қауіпсіздігі болып табылады. КВ және kB кілттерінің мәні кілттер генераторының бастапты күйіне тәуелді (2 - сурет).
Тек асимметриялық криптожүйелерге тән ерекшеліктері:
КВ ашық кілті мен С шифртексті қорғалмаған каналдар арқылы жіберілуі мүмкін, яғни олар қарсыласқа белгілі болады.
Шифрлау және дешифрлау алгоритмдері ашық болып табылады:
EB:M--C
DB:C--M
EB
DB
А жіберуші KB Қорғалмаған канал В қабылдаушы
М хабары
Кілттер г.
С шифртекст
Қарсылас
kB
Сурет 2 Ашық кілтті асимметриялық криптожүйелердің жалпы сызбасы.
Осы сызбаға сай У. Диффи мен М. Хеллманның асимметриялы криптожүйесіне қойылатын келесі негізгі талаптарды көрсетті:
В қабылдаушының (KB, kB) есептеу қарапайым болуы керек.
А жіберуші KB ашық кілті мен М хабарламасын біле отырып, шифртекстті оңай есептей алады: С = EKBM=EB(M).
В қабылдаушы kB құпия кілтін және С шифртекстін қолдана отырып, алғашқы хабарламаны оңай аша алады:
M = DKBC= DB(C) = DB[EB(M)].
Асимметриялы алгоритмдердің кемшіліктері:
Деректер көлемі бірдей болғанда асимметриялық алгоритм үшін ақпаратты өңдеу көбірек уақыт талап етеді. Сонымен қатар кілттің ұзындығы симметриялық алгоритмге қарағанда әлдеқайда көбірек болады.
Асимметриялық алгоритмді модификациялау симметриялық алгоритмдерге қарағанда әлдеқайда күрделі немесе мүмкін емес болып табылады. Өйткені асимметриялық алгоритм күрделі математикалық тапсырма негізінде құрылады.
Ал асимметриялық алгоритмдердің артықшылықтарына келетін болсақ, бұл қорғалмаған арна бойынша ашық кілттермен алмасу мүмкіндігі. Алайда, асимметриялық алгоритмдер MITM-шабуылға (man-in-the-middle -- ортадағы адам) ұшырауы мүмкін. Шабуылдың мәні делдал тараптардың бір-бірімен қарым-қатынасын ұқсата отырып, ашық кілттерді ұстап алады және өзгертеді. Алайда, жария кілттерді ұстап алу жеткіліксіз, жеке деректерді есептеу қажет. Бұл өте күрделі жұмыс болып табылады.
Қазіргі уақытта шифрлеудің симметриялы және асимметриялы алгоритмдері бірлесіп қолданылады. Бұл шифрлеудің екі түрінің артықшылықтарын біріктіруге мүмкіндік береді.
RSA алгоритмі
RSA (Rivest, Shamir, Adleman) - үлкен бүтін сандарды факторизациялау күрделілігіне негізделген ашық кілтті криптографиялық алгоритм.
Қазіргі таңда RSA шифры көптеген мемлекеттерде әр түрлі бағытта қолданылады, соның ішінде Қазақстанда бұл алгоритм түрі электронды қолтаңбаларда қолданылады. Мысалы, біздің елдегі электронды қолтаңбада жабық кілт 256 биттен, ал ашық кілт 1024 биттен тұрады. Электронды қолтаңбаның мерзімі 1 жылды құрайды. Уақыты біткеннен кейін орнына жаңа кілт алу талап етіледі.
RSA алгоритмінің криптотөзімділігіне келетін болсақ, алгоритмді бұзушының басты міндеті болып екі қарапайым n және q көбейткіштерін есептеу болып табылады. 2010 жылы осы міндетті 768 биттік RSA криптографиялық кілті үшін қарапайым көбейткіштерді есептей алған ғалымдар тобы пайда болды. RSA-768-ді бұзуға екі жыл уақыт кетті және жүздеген компьютерлердің есептеуіш қуаты қолданылды. Ғалымдар RSA алгоритмі 1024 биттен кем емес кілт ұзындығында ғана беріктілігі жоғары болуы мүмкін деген қорытындыға келді. Бірақ есептеу техникасындағы даму прогресстерінің салдарынан 1024-биттік кілтпен ақпаратты сенімді қорғау жеткіліксіз болып қалды. Қазіргі уақытта RSA кілтінің ұсынылған ұзындығы 2048 битті құрайды, бірақ бұл да қазіргі даму қарқынына ұзақ уақытқа шыдай алмауы мүмкін. Егер зиянкестер құпия кілтті ала алса, олар ағымдағы шифрленген хабарды ғана емес, сонымен қатар барлық алдыңғы хабарларды да оқуға мүмкіндік алады (3 - сурет).
Сурет 3 RSA алгоритмінің суреттегі көрінісі
Осы суреттегідей алдымен кілттерді генерациялау алгоритмін қарастырайық [10].
1. Сымбат бір-бірінен ерекшеленетін екі үлкен p және q жай сандарын дайындайды. Бұл ретте p-q - үлкен сандар, бірақ p және q сандарының биттік өлшемдері шамамен бірдей болып табылады.
2. p және q сандарын құпияда ұстай отырып, Шыңғыс алгоритмнің модулі болып табылатын n=p*q көбейтіндісін есептейді.
3. Талғат алдындағы n көбейтіндісінің мәні үшін Эйлер функциясын
φn=(p-1)(q-1) формуласы бойынша есептейді.
4. Сымбат φ(n) функциясының мәнімен өзара қарапайым болатын e санын таңдайды. Бұл сан шифрлеу экспоненті деп аталады. Әдетте, e саны ретінде 3, 17 немесе 65537 секілді сандары таңдап алынады.
5. Сымбат e және φn сандар жұптарына Евклидтің кеңейтілген алгоритмін қолдана отырып, e∙d≡1(mod(φ(n))) салыстыруын қанағаттандыратын d мәнін есептейді. Бұл мән шифрден шешу экспоненті деп аталады.
6. (e, n) сандар жұбы Сымбаттың ашық кілті ретінде жарияланады, d жабық кілт болып табылады және құпияда сақталады.
Шифрлеу алгоритмі.
1. Шыңғыс Сымбат дайындаған (e, n) түпнұсқалық сандар жұбының көшірмесін алады.
2. Шыңғыс хабарламаны m саны ретінде белгілейді. Бұл сан өз кезегінде алгоритмнің модулі болып табылатын n санынан кіші болып табылады. Жалпы жағдайда хабарлама блоктарға бөлінуі мүмкін, олардың әрқайсысы өз санымен ұсынылады.
3. Шыңғыс C=memod n бойынша C мәнін есептейді есептейді. C мәні шифрленген хабар болып табылады.
4. Шифрленген хабар Сымбатқа жіберіледі.
Дешифрлеу алгоритмі.
1. Сымбат C криптограммасын Шыңғыстан алады.
2. Сымбат m=Cd(mod n) формуласы бойынша бастапқы m мәнін анықтап, ақпаратты шифрден шешіп оқиды.
Енді осы шифрлеу алгоритміне жасалатын танымал шабуылдармен танысып өтейік:
n ортақ модульді схемасы
Нотариус схемасындағы RSA қолтаңбасына шабуыл
Хастад шабуылы
Франклин-Рейтер шабуылы
Критографияда үлкен сандармен жұмыс жасауға арналған құралдар
Программалау тілдерінің стандартты кітапханалары мен криптографиялық беріктілігі
Қазіргі заманғы криптографияда үлкен сандармен жұмыс жасайтын құралдарды дұрыс таңдай білу, ақпаратты қорғаудың криптоберіктілігіне маңызды болып келеді.
Программалау тілдерінде үлкен сандармен жұмыс құралдар келесідей талаптарға жауап беру керек [6]:
Өте үлкен сандармен жұмыс істеу мүмкіндігі;
Криптографиялық алгоритмдермен жұмыс істеу мүмкіндігі;
Алгоритмдердегі есептеу дәлдігі мен жылдамдығы;
Кроссплатформалық;
Параллельді есептеу мүмкіндіктері.
Бұл бөлімде үлкен сандармен жұмыс жасайтын құралдар рөліндегі алгоритмдер, программалау тілдері, кітапханалар және аппараттық құрылғаларға қысқаша сипаттама беріліп, олардың мүмкіндіктері мен беріктіліктері қарастырылатын болады.
Программалау тілдеріндегі кітапхана - программа жасау үшін пайдаланылатын кіші программалар немесе объектілер жинағы. Бұл әр түрлі тапсырмалар үшін сыныптар, компоненттер немесе модульдер жиынтығы. Қазіргі таңда бәсекеге қабілетті софт жасап шығару үшін, кодының алдын жазылып қойған бөліктерін қайта жазбас үшін, программисттер әр түрлі программалау тілдерінің өзіне сай стандартты кітапханаларын, яғни дайын шешімдерін енгізеді.
Бірінші рет "кіші программа" және "кіші программа кітапханасы" сияқты ұғымдар леди Лавлейс түсіндірмелерінде белгіленді.
"Кіші программалар кітапханасы" термині алғаш 1951 жылы М. Уилкс, Д. Уиллер, С. Гилл "Электрондық есептеу машиналарына арналған программаларды құру" оқулығында компьютерде есептеуді ұйымдастырудың бір түрі ретінде көрсетілген. Олардың кітабында кітапхана деп "жеке, жиі кездесетін (стандартты) есептеу операцияларына арналған қысқа, алдын ала дайындалған программалар" түсіндірілген.
Программалау тілінің стандартты кітапханасы - модульдер, сыныптар, объектілер, константалар, жаһандық айнымалылар, шаблондар, макростар, функциялар мен процедуралар жиынтығы, осы тілде жазылған және тілдің барлық реализацияларында қатысушы.
Кейбір программалау тілдерінде бір модуль, басқа программалау тілдерінде бірнеше модульден құралуы мүмкін. Операциялық жүйе және программалық қамтама тұрғысынан кітапханалар динамикалық және статикалық болып бөлінеді.
Динамикалық кітапхана - машиналық коды бар файл. Процесс жадына операциялық жүйенің программасын жүктеуші немесе процесті құру кезінде, немесе жұмыс істеп тұрған процестің сұрауы бойынша, яғни динамикалық жүктейді.
Программаны жазу кезінде трансляторға (компиляторға немесе интерпретаторға) кітапханаға баратын жолды және функцияның атауын көрсету жеткілікті. Функцияның бастапқы мәтіні де, оның орындалатын коды да программа құрамына кірмейді.
Статикалық кітапхана - бастапқы коды бар файл немесе құрастыру кезеңінде программаға ендіруге арналған объектілік файл.
Бастапқы код түрінде таратылатын кітапханалар компилятор объектілік файлдарға айналады. Содан кейін компановщик кітапхана объектілік файлдарын және программаңыздың объектілік файлдарын бір орындалатын файлға қосады.
Мысалы, бастапқы мәтіндерде қолданылатын кітапханалар:
Java тіліне арналған кітапханалар;
Python тіліне арналған кітапханалар;
С++ тіліне арналған кітапханасы.
Объектілік файлдар түрінде таратылатын кітапханалар компоновкаға дайын болып келеді. Компановщик орындалатын файлды жасау кезінде кітапханалардың объектілік файлдарын және программаңыздың объектілік файлдарын қосады.
Ашық бастапқы кодтары бар ұзын арифметиканың ең кең қолданылатын стандартты кітапханалары gmp, crypto++ және ntl болып табылады.
Бүтін сандардың диапазоны
Бүтін сандар - нөлге және теріс сандарға қосылған табиғи сандардың жиынының кеңеюі.
Қазіргі компьютерлердегі бүтін сандар және бүтін сандармен есептеу өте маңызды. Себебі, барлық адрестік арифметика және массивтер индексімен операциялар бүтін сандармен есептеу операцияларына негізделген.
Бүтін (ағылш. Integer), информатикада - программалау тілдеріндегі қарапайым және ең көп таралған деректер түрлерінің бірі. Бүтін сандарды ұсыну үшін қызмет етеді. Ұзыдығы 16 бит 4 байт. Диапазоны -32768...32767.
Бүтін сандардың диапазоны, әдетте, бір айнымалыға бөлінген компьютер жадындағы байттардың санымен анықталады.
Типтік компьютерлік жүйенің жадында бүтін сан тіркелген (8 есе) өлшемдегі биттер тізбегі түрінде берілген. Бұл нөлдер мен бірліктердің тізбегі-сандардың екілік жазбасы ретінде өзгеше емес, себебі қазіргі заманғы компьютерлік техникада сандарды ұсыну үшін позициялық екілік код қолданылады. Бүтін сандардың диапазоны, әдетте, бір айнымалыға бөлінген компьютер жадындағы байттардың санымен анықталады.
Көптеген программалау тілдері қысқа (ағылш. short), ұзын (ағылш. long) және тұтас стандартты ұзындығы. Стандартты тұтас түрдегі ұзындығы, әдетте, мақсатты платформадағы машиналық сөздің өлшемімен сәйкес келеді. 16-биттік операциялық жүйелер - бұл түрі (int) - 2 байт және сәйкес келеді типімен short int (пайдалануға болады short, опуская сөз int) үшін 32-биттік операциялық жүйелер, ол тең болады 4 байтам мен тұспа-тұс келеді ұзын бүтін long int (пайдалануға болады long, опуская сөз int), және бұл жағдайда болады 4 байт. Қысқа бүтін short int үшін 16-биттік операциялық жүйе, 32-разрядты операциялық жүйелердің және көптеген 64-биттік операциялық жүйелер құрайды - 2 байт. Сондай-ақ, кейбір тілдерде 8 байтты құрайтын қос ұзын long long деректер түрін пайдалануға болады [5].
64-биттік операциялық жүйелер үшін, деректер үлгілерінің (LP64, LLP64, ILP64) айырмашылығын ескере отырып, әртүрлі деректер үлгілеріндегі тұтас түрдегі көрініс бір-бірімен ерекшеленуі мүмкін. Int және long түрі 4 және 8 байтты құрауы мүмкін.
Айта кету керек, әрбір программалау тілі халықаралық стандарттардан өзгеше болуы мүмкін, бірақ оны қолдауға міндетті бүтін сандарды ұсыну сигналын іске асырады. Мысалы, qt кросс-платформалық кітапханасын жатқызуға болады, мұнда бүтін qintX және quintX түрі болып табылады, мұнда X-8, 16, 32, 64.
Кездейсоқ сандардың генераторлары
Криптография саласында кездейсоқ және псевдокездейсоқ сандар өте маңызды рөл атқарады. Себебі, кездейсоқ сандарды дұрыс генерациялау криптожүйенің құпиялығы мен криптоберіктігіне маңызды болып келеді. Мысалы, көптеген протоколдарды сипаттағанда, жабық кілттер үлкен кездейсоқ сандар мен тексттерді генерациялайды [4].
Кездейсоқ сандар генераторлары - кездейсоқ сандар беретін құрылғылар немесе программалар. Әдетте, кездейсоқ сандар генераторы программалау тілдерінде стандартты функциялар мен процедуралар құрамына кіретін программа. Мысалы, Паскаль тілінде RANDOM(N) функциясы 0 ден N-1 аралығындағы бүтін сан қайтарады. Егер программа қайта орындалса, функция сол санды қайталайды. Кездейсоктық деңгейін арттыру үшін тілде генерация базасын өзгертетін RANDOMIZE процедурасы бар, бұл процедура RANDOM функциясының алдында орындалуы қажет.
Кездейсоқ сандардың аппараттық генераторы (шынайы кездейсоқ сандардың генераторы) - кездейсоқ сандардың тізбегін өлшенетін, ретсіз өзгеретін физикалық процестің параметрлерінің негізінде генерациялайтын құрылғы. Мұндай құрылғылардың жұмысы жылу шуы, бөлшек шуы, фотоэлектрлік әсерге, кванттық құбылыстар және т.б. сияқты сенімді энтропия көздерін пайдалануға негізделген (4 - сурет).
Сурет 4 Бұл кеңейту картасы желі арқылы берілетін деректерді шифрлау үшін криптографиялық кілттерді жасау үшін кездейсоқ сандардың аппараттық генераторын пайдаланады.
Кездейсоқ сандардың аппараттық генераторлары негізінен статистикалық сынақтар жүргізу үшін және криптографияда қолданылады, онда олар деректерді шифрлау үшін криптографиялық кілттерді жасау үшін пайдаланылады. Сондай-ақ, мұндай құрылғылар, мысалы, рулеткалар үшін Интернет Казинода кеңінен қолданылады. Бірақ іске асыру қиындығы мен салыстырмалы баяу болғандықтан, мұндай генераторларды пайдалану нақты пәндік саланың қажеттіліктеріне және генератордың өз құрылғысына байланысты.
Нақты уақытта оларды генерациялайтын кездейсоқ сандардың генераторлары көп таралған. 1951 жылы Ferranti Mark 1 компьютеріне резистордың шуын пайдалана отырып, кездейсоқ сандарды генерациялайтын программа енгізілді. Бұл программаны құру идеясы А. Тьюрингке тиесілі. 1957 жылы ENIAC (Electronic Random Number Indicator Equipment) машинасы ойлап тапты. Бұл құрылғы бастапқыда Британдық лотереяда ұтыс облигацияларының нөмірлерін жасауға арналған (5 - сурет).
Сурет 5 Жалпы қолданыстағы электро-цифрлық есептеулермен айналысатын алғашқы машина ENIAC
Кездейсоқ сандардың аппараттық генераторлары монетка, ойлы сүйек немесе рулетка дөңгелегі сияқты заттарды пайдалана отырып, макроскопиялық кездейсоқ процестерге негізделуі мүмкін. Деректерде болжаусыздықтың болуы тұрақсыз динамикалық жүйелердің теориясымен және хаос теориясымен түсіндіріледі. Тіпті Ньютон теңдеулерімен толық анықталған макроскопиялық жүйелердің іс жүзінде болжанбаған шығуы бар, өйткені ол бастапқы жағдайлардың микроскопиялық бөлшектеріне байланысты.
Қазіргі таңда криптографияда үлкен генерацияланған сандармен көптеген алгоритмдер, протоколдар және т.б. жұмыс жасайды. Солардың бірі 1917 жылы AT&T қызметкері Гильберт Вернам ойлап тапқан, симметриялық криптожүйеге жататын Вернам шифры (6 - сурет).
Вернам шифры бір рет қана қолданылатын блокнотқа жатады. Сондықтан бұл шифр қарапайым криптожүйенің бірі болғанымен, абсолютті криптоберік болып табылады.
Криптожүйе бинарлық хабарламаларға негізделген телеграф хабарламаларын шифрлауға ұсынылған. Бинарлық хабарламаларда ашық текст Бодо кодымен ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz