Дипломдық ЖҰмыс 5B100200 «Ақпараттық қауіпсіздік жүйелері»



бет3/14
Дата19.01.2022
өлшемі1,11 Mb.
#129475
түріДиплом
1   2   3   4   5   6   7   8   9   ...   14
Байланысты:
Дипломдық жұмыс Talgat

В қабылдаушының ( ) есептеу қарапайым болуы керек.

  • А жіберуші ашық кілті мен М хабарламасын біле отырып, шифртекстті оңай есептей алады: С = .

  • В қабылдаушы құпия кілтін және С шифртекстін қолдана отырып, алғашқы хабарламаны оңай аша алады:

    M = (C) = .

    Асимметриялы алгоритмдердің кемшіліктері:



    • Деректер көлемі бірдей болғанда асимметриялық алгоритм үшін ақпаратты өңдеу көбірек уақыт талап етеді. Сонымен қатар кілттің ұзындығы симметриялық алгоритмге қарағанда әлдеқайда көбірек болады.

    • Асимметриялық алгоритмді модификациялау симметриялық алгоритмдерге қарағанда әлдеқайда күрделі немесе мүмкін емес болып табылады. Өйткені асимметриялық алгоритм күрделі математикалық тапсырма негізінде құрылады.

    Ал асимметриялық алгоритмдердің артықшылықтарына келетін болсақ, бұл қорғалмаған арна бойынша ашық кілттермен алмасу мүмкіндігі. Алайда, асимметриялық алгоритмдер 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. Сымбат бір-бірінен ерекшеленетін екі үлкен және жай сандарын дайындайды. Бұл ретте | | – үлкен сандар, бірақ және сандарының биттік өлшемдері шамамен бірдей болып табылады.

    2. p және q сандарын құпияда ұстай отырып, Шыңғыс алгоритмнің модулі болып табылатын көбейтіндісін есептейді.

    3. Талғат алдындағы n көбейтіндісінің мәні үшін Эйлер функциясын



    формуласы бойынша есептейді.

    4. Сымбат φ(n) функциясының мәнімен өзара қарапайым болатын e санын таңдайды. Бұл сан шифрлеу экспоненті деп аталады. Әдетте, e саны ретінде 3, 17 немесе 65537 секілді сандары таңдап алынады.

    5. Сымбат және сандар жұптарына Евклидтің кеңейтілген алгоритмін қолдана отырып, салыстыруын қанағаттандыратын мәнін есептейді. Бұл мән шифрден шешу экспоненті деп аталады.

    6. ( сандар жұбы Сымбаттың ашық кілті ретінде жарияланады, жабық кілт болып табылады және құпияда сақталады.


    Шифрлеу алгоритмі.

    1. Шыңғыс Сымбат дайындаған ( түпнұсқалық сандар жұбының көшірмесін алады.

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

    3. Шыңғыс бойынша мәнін есептейді есептейді. мәні шифрленген хабар болып табылады.

    4. Шифрленген хабар Сымбатқа жіберіледі.
    Дешифрлеу алгоритмі.

    1. Сымбат криптограммасын Шыңғыстан алады.

    2. Сымбат формуласы бойынша бастапқы мәнін анықтап, ақпаратты шифрден шешіп оқиды.

    Енді осы шифрлеу алгоритміне жасалатын танымал шабуылдармен танысып өтейік:



    • n ортақ модульді схемасы

    • Нотариус схемасындағы RSA қолтаңбасына шабуыл

    • Хастад шабуылы

    • Франклин-Рейтер шабуылы




    1. Критографияда үлкен сандармен жұмыс жасауға арналған құралдар



      1. Программалау тілдерінің стандартты кітапханалары мен криптографиялық беріктілігі

    Қазіргі заманғы криптографияда үлкен сандармен жұмыс жасайтын құралдарды дұрыс таңдай білу, ақпаратты қорғаудың криптоберіктілігіне маңызды болып келеді.

    Программалау тілдерінде үлкен сандармен жұмыс құралдар келесідей талаптарға жауап беру керек [6]:



    • Өте үлкен сандармен жұмыс істеу мүмкіндігі;

    • Криптографиялық алгоритмдермен жұмыс істеу мүмкіндігі;

    • Алгоритмдердегі есептеу дәлдігі мен жылдамдығы;

    • Кроссплатформалық;

    • Параллельді есептеу мүмкіндіктері.

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

    Программалау тілдеріндегі кітапхана – программа жасау үшін пайдаланылатын кіші программалар немесе объектілер жинағы. Бұл әр түрлі тапсырмалар үшін сыныптар, компоненттер немесе модульдер жиынтығы. Қазіргі таңда бәсекеге қабілетті софт жасап шығару үшін, кодының алдын жазылып қойған бөліктерін қайта жазбас үшін, программисттер әр түрлі программалау тілдерінің өзіне сай стандартты кітапханаларын, яғни дайын шешімдерін енгізеді.

    Бірінші рет "кіші программа" және "кіші программа кітапханасы" сияқты ұғымдар леди Лавлейс түсіндірмелерінде белгіленді.

    "Кіші программалар кітапханасы" термині алғаш 1951 жылы М. Уилкс, Д. Уиллер, С. Гилл "Электрондық есептеу машиналарына арналған программаларды құру" оқулығында компьютерде есептеуді ұйымдастырудың бір түрі ретінде көрсетілген. Олардың кітабында кітапхана деп "жеке, жиі кездесетін (стандартты) есептеу операцияларына арналған қысқа, алдын ала дайындалған программалар" түсіндірілген.

    Программалау тілінің стандартты кітапханасы – модульдер, сыныптар, объектілер, константалар, жаһандық айнымалылар, шаблондар, макростар, функциялар мен процедуралар жиынтығы, осы тілде жазылған және тілдің барлық реализацияларында қатысушы.

    Кейбір программалау тілдерінде бір модуль, басқа программалау тілдерінде бірнеше модульден құралуы мүмкін. Операциялық жүйе және программалық қамтама тұрғысынан кітапханалар динамикалық және статикалық болып бөлінеді.

    Динамикалық кітапхана – машиналық коды бар файл. Процесс жадына операциялық жүйенің программасын жүктеуші немесе процесті құру кезінде, немесе жұмыс істеп тұрған процестің сұрауы бойынша, яғни динамикалық жүктейді.

    Программаны жазу кезінде трансляторға (компиляторға немесе интерпретаторға) кітапханаға баратын жолды және функцияның атауын көрсету жеткілікті. Функцияның бастапқы мәтіні де, оның орындалатын коды да программа құрамына кірмейді.

    Статикалық кітапхана – бастапқы коды бар файл немесе құрастыру кезеңінде программаға ендіруге арналған объектілік файл.

    Бастапқы код түрінде таратылатын кітапханалар компилятор объектілік файлдарға айналады. Содан кейін компановщик кітапхана объектілік файлдарын және программаңыздың объектілік файлдарын бір орындалатын файлға қосады.

    Мысалы, бастапқы мәтіндерде қолданылатын кітапханалар:


    • Java тіліне арналған кітапханалар;

    • Python тіліне арналған кітапханалар;

    • С++ тіліне арналған кітапханасы.

    Объектілік файлдар түрінде таратылатын кітапханалар компоновкаға дайын болып келеді. Компановщик орындалатын файлды жасау кезінде кітапханалардың объектілік файлдарын және программаңыздың объектілік файлдарын қосады.

    Ашық бастапқы кодтары бар ұзын арифметиканың ең кең қолданылатын стандартты кітапханалары gmp, crypto++ және ntl болып табылады.



        1. Бүтін сандардың диапазоны

    Бүтін сандар – нөлге және теріс сандарға қосылған табиғи сандардың жиынының кеңеюі.

    Қазіргі компьютерлердегі бүтін сандар және бүтін сандармен есептеу өте маңызды. Себебі, барлық адрестік арифметика және массивтер индексімен операциялар бүтін сандармен есептеу операцияларына негізделген.

    Бүтін (ағылш. 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.



        1. Кездейсоқ сандардың генераторлары

    Криптография саласында кездейсоқ және псевдокездейсоқ сандар өте маңызды рөл атқарады. Себебі, кездейсоқ сандарды дұрыс генерациялау криптожүйенің құпиялығы мен криптоберіктігіне маңызды болып келеді. Мысалы, көптеген протоколдарды сипаттағанда, жабық кілттер үлкен кездейсоқ сандар мен тексттерді генерациялайды [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 1 0 0 0). Ал қағазда «1» саны тесік болса, «0» санында тесік болмайды.





    Достарыңызбен бөлісу:
  • 1   2   3   4   5   6   7   8   9   ...   14




    ©www.engime.org 2024
    әкімшілігінің қараңыз

        Басты бет