Аппараттық және бағдарламалық қамтамасыз етуді орнату

Деректерді шифрлаудың отандық стандарты. Деректерді шифрлаудың отандық стандарты

ГОСТ 28147-89 бойынша анықталған алгоритм шифрлау кілтінің ұзындығы 256 бит. Ол 64 биттік блоктардағы ақпаратты шифрлайды (мұндай алгоритмдер блоктық алгоритмдер деп аталады), олар кейін 32 биттен тұратын екі ішкі блокқа (N1 және N2) бөлінеді (1-сурет). N1 қосалқы блок белгілі бір жолмен өңделеді, содан кейін оның мәні N2 қосалқы блоктың мәніне қосылады (қосу 2 модуль бойынша орындалады, яғни логикалық XOR операциясы қолданылады - «ерекше немесе»), содан кейін ішкі блоктар ауыстырылады. Бұл түрлендіру белгілі бір рет («дөңгелек») орындалады: алгоритм режиміне байланысты 16 немесе 32. Әр айналымда екі операция орындалады.

Сурет 1. Алгоритмнің схемасы ГОСТ 28147-89.

Біріншісі - пернелеу. N1 ішкі блоктың мазмұны Kx кілтінің 32-биттік бөлігіне 2 модулі қосылады. Толық шифрлау кілті 32-разрядты ішкі кілттердің бірігуі ретінде ұсынылған: K0, K1, K2, K3, K4, K5, K6, K7. Бұл ішкі кілттердің бірі шифрлау процесінде дөңгелек санға және алгоритмнің жұмыс режиміне байланысты қолданылады.

Екінші операция – кестені ауыстыру. Пернелеуден кейін N1 қосалқы блок 4 биттен тұратын 8 бөлікке бөлінеді, олардың әрқайсысының мәні ішкі блоктың осы бөлігінің ауыстыру кестесіне сәйкес ауыстырылады. Содан кейін ішкі блок биттік солға 11 битке бұрылады.

Кестені ауыстыру (Substitution box – S-box) қазіргі шифрлау алгоритмдерінде жиі қолданылады, сондықтан мұндай операцияның қалай ұйымдастырылғанын түсіндіріп өткен жөн. Блоктардың шығыс мәндері кестеге жазылады. Белгілі бір өлшемді деректер блогы (біздің жағдайда 4-разрядты) шығыс мәнінің санын анықтайтын өзінің сандық көрінісіне ие. Мысалы, егер S-қорапшасы 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 және 4-разрядты блок «0100» сияқты көрінсе. кіріске келді (мән 4), содан кейін кестеге сәйкес шығыс мәні 15 болады, яғни «1111» (0 a 4, 1 a 11, 2 a 2 ...).

ГОСТ 28147-89 анықталған алгоритм төрт жұмыс режимін қарастырады: қарапайым ауыстыру, масштабтау, кері байланыспен масштабтау және имитация префикстерін генерациялау. Олар жоғарыда сипатталған бірдей шифрлау трансформациясын пайдаланады, бірақ режимдердің мақсаты әртүрлі болғандықтан, бұл түрлендіру олардың әрқайсысында әр түрлі жүзеге асырылады.

Қарапайым ауыстыру режимінде ақпараттың әрбір 64-бит блогын шифрлау үшін жоғарыда сипатталған 32 айналым орындалады. Бұл жағдайда 32-биттік ішкі кілттер келесі реттілікпен пайдаланылады:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1 және т.б. - 1-ден 24-ке дейінгі раундтарда;

K7, K6, K5, K4, K3, K2, K1, K0 - 25-32 раундтарда.

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

K0, K1, K2, K3, K4, K5, K6, K7 - 1-8 раундтарда;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6 және т.б. - 9-дан 32-ге дейін.

Барлық блоктар бір-бірінен тәуелсіз шифрланады, яғни әрбір блоктың шифрлау нәтижесі оның мазмұнына ғана байланысты (тиісті бастапқы блок). Түпнұсқа (қарапайым) мәтіннің бірнеше бірдей блоктары болса, сәйкес шифрлық мәтін блоктары да бірдей болады, бұл шифрды ашуға тырысатын криптоаналитикке қосымша пайдалы ақпарат береді. Сондықтан бұл режимол негізінен шифрлау кілттерінің өзін шифрлау үшін қолданылады (көп кілтті схемалар жиі орындалады, оларда бірқатар себептерге байланысты кілттер бірінің үстіне бірі шифрланады). Ақпараттың өзін шифрлау үшін жұмыстың екі басқа режимі - кері байланысы бар гамма және гамма.

Гамма режимінде әрбір ашық мәтін блогы 64-биттік шифрлық гамма блогына биттік модуль 2 қосылады. Шифрлық гамма - бұл N1 және N2 регистрлерімен белгілі бір операциялардың нәтижесінде алынатын ерекше тізбек.

  • 1. N1 және N2 регистрлерде олардың бастапқы толтырылуы жазылады – синхрондау хабарламасы деп аталатын 64-разрядты мән.
  • 2. N1 және N2 регистрлерінің мазмұнын шифрлау (бұл жағдайда хабарламаларды синхрондау) қарапайым ауыстыру режимінде орындалады.
  • 3. N1 регистрдің мазмұны С1 = 224 + 216 + 28 + 24 тұрақтысы бар модуль (232 - 1) қосылады және N1 регистріне қосу нәтижесі жазылады.
  • 4. N2 регистрінің мазмұнына C2 = 224 + 216 + 28 + 1 тұрақтысы бар 232 модулі қосылады және N2 регистріне қосу нәтижесі жазылады.
  • 5. N1 және N2 регистрлерінің мазмұны 64-биттік шифрлы гамма блогы ретінде шығарылады (бұл жағдайда N1 және N2 бірінші гамма блогын құрайды).

Келесі гамма блогы қажет болса (яғни шифрлау немесе шифрды шешуді жалғастыру қажет), 2-қадамға оралыңыз.

Шифрды шешу үшін гамма ұқсас жолмен жасалады, содан кейін шифрленген мәтін мен гамма биттері қайтадан XOR-ге айналады. Бұл операция қайтымды болғандықтан, дұрыс құрылған гамма жағдайында түпнұсқа мәтін алынады (1-кесте).

1-кесте.Гамма режимінде шифрлау және шифрды шешу

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

ГОСТ 28147-89 алгоритмін іске асырудың көпшілігінде синхрондау хабарламасы құпия емес, бірақ синхрондау хабары шифрлау кілті сияқты құпия элемент болып табылатын жүйелер бар. Мұндай жүйелер үшін алгоритм кілтінің тиімді ұзындығы (256 бит) құпия синхрондау хабарламасының тағы 64 битіне артады, оны да негізгі элемент ретінде қарастыруға болады.

Кері байланыс гамма режимінде N1 және N2 регистрлерін толтыру үшін 2-ші блоктан бастап алдыңғы гамма блогы емес, алдыңғы ашық мәтіндік блоктың шифрлау нәтижесі қолданылады (2-сурет). Бұл режимдегі бірінші блок дәл алдыңғы блок сияқты жасалады.

Сурет 2. Кері байланыс гамма режимінде шифр гаммасының генерациясы.

Еліктеу префикстерінің жасалу тәсілін қарастыра отырып, буын субъектісі ұғымын анықтау қажет. Спуф – бұл шифрлау кілті арқылы есептелетін және хабарламалардың тұтастығын тексеруге арналған криптографиялық бақылау сомасы. Префиксті құру кезінде келесі әрекеттер орындалады: префикс есептелетін ақпараттық массивтің бірінші 64 разрядты блогы N1 және N2 регистрлеріне жазылады және қысқартылған қарапайым ауыстыру режимінде шифрланады (алғашқы 16 32 раунд орындалады). Алынған нәтиже N1 және N2-де нәтижені сақтай отырып, келесі ақпарат блогымен 2-модульге қосылды.

Цикл ақпараттың соңғы блогына дейін қайталанады. N1 және N2 регистрлерінің 64-разрядты мазмұны немесе оның бір бөлігі осы түрлендірулердің нәтижесінде имитация префиксі деп аталады. Префикс өлшемі хабарлардың қажетті сенімділігіне байланысты таңдалады: префикс r бит ұзындығымен хабарламадағы өзгерістің байқалмай қалу ықтималдығы 2-r. Көбінесе 32 биттік префикс болып табылады. пайдаланылады, яғни регистрлер мазмұнының жартысы Бұл жеткілікті, өйткені кез келген бақылау сомасы сияқты, имитация префиксі ең алдымен ақпаратты кездейсоқ бұрмалаудан қорғауға арналған. Деректерді әдейі өзгертуден қорғау үшін басқа криптографиялық әдістер қолданылады - ең алдымен электрондық цифрлық қолтаңба.

Ақпарат алмасу кезінде еліктеу префиксі бақылаудың қосымша құралы ретінде қызмет етеді. Ол кейбір ақпарат шифрланған және шифрленген мәтінмен бірге жіберілген кезде ашық мәтін үшін есептеледі. Шифрды шешкеннен кейін имитациялық префикстің жаңа мәні есептеледі, ол жіберілгенмен салыстырылады. Егер мәндер сәйкес келмесе, бұл тасымалдау кезінде шифрленген мәтіннің бұрмаланғанын немесе шифрды шешу кезінде дұрыс емес кілттердің пайдаланылғанын білдіреді. Иммитациялық префикс әсіресе көп кілтті схемаларды пайдалану кезінде негізгі ақпараттың шифрын дұрыс шешуді тексеру үшін пайдалы.

ГОСТ 28147-89 алгоритмі өте күшті алгоритм болып саналады - қазіргі уақытта оны ашу үшін жоғарыда айтылған «қатал күш» әдісінен тиімдірек әдістер ұсынылмаған. Оның жоғары қауіпсіздігіне, ең алдымен, үлкен кілт ұзындығының арқасында қол жеткізіледі - 256 бит. Құпия синхрондау хабарламасын пайдаланған кезде тиімді кілт ұзындығы 320 битке дейін артады, ал ауыстыру кестесінің құпиясы қосымша биттерді қосады. Сонымен қатар, криптографиялық беріктік ГОСТ 28147-89 бойынша 32 болуы керек түрлендірулердің айналымдарының санына байланысты (кіріс деректерінің дисперсиясының толық әсері 8 айналымнан кейін қол жеткізіледі).

ГОСТ 28147-89 артықшылығы жалған мәліметтерді енгізуден қорғаудың болуы (еліктеу кірістіру дамуы) және барлық төрт ГОСТ алгоритмдерінде бірдей шифрлау циклінің болуы.

«Тірі тұрғанда өлме, мына дүниеге қара.
Мұндағылардың көбінің жаны өлі – іштей өлі.
Бірақ олар өздерінің жоқтығын білмей жүріп, күледі.
Өлімге асықпа, - деді ол маған.

Ария, «Жоғарыда»

  1. Кіріспе
  1. Блоктық шифрларға кіріспе

2.1 Feistel желілері.
2.2 Блоктық шифр ГОСТ 28147-89

  1. Теориялық минимум

3.1 Негізгі ақпарат
3.2 Криптовалюта трансформациясының негізгі кезеңі

3.3 Негізгі циклдар:32-З, 32-Р.

  1. Жаттығу

4.1 Криптотрансформацияның негізгі қадамын жүзеге асыру
4.2 Алгоритмнің жылдамдығын арттыру
5.
6. Пайдаланылған әдебиеттер тізімі
7. рахмет.

Кіріспе.

Бұл құжат ең қарапайым, бірақ соған қарамастан техникалық сауатты тілде ГОСТ 28147-89 шифрлау алгоритмін жай ғана ауыстыру әдісін сипаттауға тырыстым. Қаншалықты сәтті болдым, оқырман алғашқы алты тармақты оқығаннан кейін өз пікірін айтады.

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

Блоктық шифрларға кіріспе.

Алгоритмді қарастыруды бастамас бұрын, біз шифрдың осы түрінің жасалу тарихымен танысуымыз керек. Алгоритм блоктық шифрлар санатына жатады, оның архитектурасында ақпарат шектеулі блоктар санына бөлінген, соңғысы табиғи түрде толық болмауы мүмкін. Шифрлау процесі шифрлық мәтінді құрайтын толық блоктарда дәл орындалады. Соңғы блок, егер ол толық емес болса, бір нәрсемен толықтырылады (оны қосудың нюанстары туралы төменде айтатын боламын) және толық блоктар сияқты шифрланады. Шифрленген мәтін бойынша мен түсінемін - пайдаланушы шифрлауға жіберген деректердің белгілі бір көлеміне шифрлау функциясының әрекетінің нәтижесі. Басқаша айтқанда, шифрлау мәтіні шифрлаудың соңғы нәтижесі болып табылады.

Блоктық шифрлардың даму тарихы 70-ші жылдардың басымен байланысты IBM компаниясыКомпьютерлік байланыс арналары арқылы деректерді беру кезінде ақпаратты қорғау қажеттілігін түсініп, ол өзінің жеке бағдарламасын жүзеге асыра бастады ғылыми зерттеулерэлектронды желілерде, соның ішінде криптографияда ақпаратты қорғауға арналған.

Симметриялық кілт схемасы бар шифрлау жүйелерін зерттеуді бастаған IBM компаниясының зерттеушілері - әзірлеушілер тобын доктор. Хорст Фейстель.

2.1 Feistel желілері

Классикалық әдебиетте Фейстель ұсынған жаңа шифрлау әдісінің архитектурасы «Фейстель архитектурасы» деп аталды, бірақ қазіргі уақытта орыс және шетел әдебиетінде біршама қалыптасқан термин қолданылады - «Фейстель желісі» немесе Фейстелдің желілік жұмысы. Кейіннен Люцифер шифрі осы архитектураға салынды - ол кейінірек жарияланды және жалпы криптографияға қызығушылықтың жаңа толқынын тудырды.

Feistel желісінің архитектурасының идеясы келесідей: кіріс ақпарат ағыны өлшемі бойынша n биттік блоктарға бөлінеді, мұнда n - жұп сан. Әрбір блок екі бөлікке бөлінеді - L және R, содан кейін бұл бөліктер итерациялық блок шифріне беріледі, онда j-ші кезеңнің нәтижесі алдыңғы j-1 кезеңінің нәтижесімен анықталады! Мұны мысалмен көрсетуге болады:

Күріш. бір

Мұндағы, А функциясы блоктық шифрдің негізгі әрекеті болып табылады. XOR операциясы сияқты қарапайым әрекет болуы мүмкін немесе одан да көп болуы мүмкін күрделі көрінісбірнеше қарапайым әрекеттердің тізбегі болуы - модульді қосу, солға жылжыту, элементтерді ауыстыру және т.б. қарапайым қадамдардеп аталатын қалыптастыру - крипто-трансформацияның негізгі қадамы.

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

Feistel желілерінің идеясы толығымен түсінікті болуы үшін суретте көрсетілген қарапайым жағдайды қарастырыңыз. күріш. бір, мұнда A функциясында - «mod 2» («xor») операциялары орындалады, бірақ бұл қарапайымдынеғұрлым күрделі жағдайда, мысалы, ұлттық маңызы бар ақпаратты жасыру, А функциясы күрделірек болуы мүмкін (менің көргенімше, А функциясы өте күрделі болуы мүмкін):

Бастапқы деректер:

L=1110b, R=0101, K=1111b

Шифрлық мәтінді алыңыз

  1. (R + K) мод 2 4 = Smod, Smod = 0100b
  2. (Smod + L) мод 2 = Sxor, Sxor = 1010b
  3. L=R, R=Sxor

L=0101b, R=1010b

Қадамдарымызды түсіндірейік:

  1. Бұл әрекет қосу режимі 2 4 . Іс жүзінде мұндай операция қарапайым қосуға дейін қайнатылады, мұнда біз екі санды қосып, 5-ші санға тасымалдауды елемеуіміз керек. Егер санның екілік кескінінің цифрларының үстіне көрсеткішті қойсақ, бесінші разрядтың үстінде төрт көрсеткіш болатындықтан, біздің операциямыздың әрекеттерін көрсететін төмендегі суретке назар аударыңыз:

Күріш. 2

Мұнда мен көрсеткішті көрсеткі арқылы көрсеттім, көріп отырғаныңыздай, нәтиже 10100 болуы керек еді, бірақ mod 2 4 операциясы кезінде тасымалдау еленбейтіндіктен, біз 0100 аламыз.

  1. Бұл операция әдебиетте mod 2 деп аталады, ассемблер тілінде ол команда арқылы жүзеге асырылады XOR. Бірақ оның дұрыс атауы мод 2 1. Бұл бірегей операциясыз жылдам, оңай іске асырылатын шифрлау алгоритмін құру және сонымен бірге криптоға төзімді болу мүмкін емес. Бұл операцияның бірегейлігі оның өзіне кері әрекет етуінде! Мысалы, егер А саны В санымен XOR болса, нәтиже C болады, болашақта A санының алдыңғы мәнін алу үшін B және C сандарын бірге XOR қайталау жеткілікті!

Бұл операцияда бізде 1110 және 0100 сандары бар 1010 алдық, 1110-ды қайтару үшін 0100 және 1010 сандарын бірге XOR жасау жеткілікті! Бұл операция туралы толығырақ ақпаратты сайтқа енгізілген мақалада табуға болады. www.wasm.ru, « Бастауыш нұсқаулығыCRC_қатені анықтау алгоритмдері» автор кім Росс Н. Уильямс. Бұл жұмыста абзац бар - 5. Екілік арифметикааударымдарды қоспағанда«. Дәл осы мақалада операция сипатталған хор!Мен айтамын, өйткені бұл мақалада бұл операция оқырман бұл операцияның қалай жұмыс істейтінін түсініп қана қоймай, оны бастайды. көру, есту және сезіну!

  1. Бұл әрекет шифрленген мәтіннен шифрды ашу кезінде бастапқы мәндерді алу үшін қажет.

2.2 Блоктық шифр ГОСТ 28147-89

ГОСТ 28147 - 89 шифрлау алгоритмі Feistel теңдестірілген желі архитектурасында жұмыс істейтін блоктық шифрлар санатына жатады, мұнда таңдалған ақпараттық блоктың екі бөлігі бірдей мөлшерде болады. Алгоритм КГБ сегізінші бөлімінің тереңдігінде әзірленді, қазір FAPSI түрлендірілді және шифрлау стандарты ретінде бекітілді. Ресей Федерациясысонау 1989 жылы КСРО кезінде.

Алгоритмнің бұл әдісі жұмыс істеуі үшін ақпаратты өлшемі 64 бит блоктарға бөлу қажет. Келесі негізгі ақпаратты жасаңыз немесе шифрлау жүйесіне енгізіңіз: кілт және ауыстыру кестесі. Шифрлау үшін кілт пен ауыстыру кестесін таңдауға өте байыпты қарау керек, өйткені. бұл сіздің ақпаратыңыздың қауіпсіздігінің негізі болып табылады. Кілтке қандай талаптар қойылатыны және ауыстырулар кестесі туралы «Негізгі ақпаратқа қойылатын талаптар» тармағын қараңыз.

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

теориялық минимум.

3.1 Негізгі ақпарат

Жоғарыда айтқанымдай, деректерді шифрлауға келесілер белсенді қатысады:

3.1.1. Кілт - әрқайсысы 32 биттен тұратын сегіз элементтің тізбегі. Әрі қарай K таңбасын белгілейміз, ал оның құрамдас элементтері – k1,k2,k3,k4,k5,k6,k7,k8.

3.1.2 Ауыстыру кестесі бұдан әрі Hij деп аталатын сегіз жолдан және он алты бағаннан тұратын матрица болып табылады. i жолы мен j бағанының қиылысындағы әрбір элемент 4 бит алады.

Шифрлау процесіндегі негізгі әрекет крипто түрлендірудің негізгі қадамы болып табылады. Бұл белгілі бір алгоритм бойынша деректерді шифрлау әрекетінен басқа ештеңе емес, тек әзірлеушілер енгізген атау тым ауыр болды :).

Шифрлауды бастамас бұрын блок әрқайсысы 32 бит болатын L және R екі бөлікке бөлінеді. Негізгі элемент таңдалады және содан кейін ғана блоктың осы екі бөлігі беріледі, негізгі элемент негізгі қадам функциясына ауыстыру кестесі болып табылады, негізгі қадамның нәтижесі негізгі циклдің бір итерациясы болып табылады, ол келесі бөлімде талқыланады. келесі абзац. Негізгі қадам келесі қадамдардан тұрады:

  1. R блогының қосу бөлігі K негізгі элементіне қосылады mod 2 32 . Мен жоғарыда ұқсас операцияны сипаттадым, мұнда бәрі бірдей, тек көрсеткіш «4» емес, «32» - бұл операцияның нәтижесі болашақта Smod арқылы белгіленеді.
  2. Бұрын алынған Smod нәтижесін s7,s6,s5,s4,s3,s2,s1,s0 төрт разрядтық элементтерге бөліп, оны ауыстыру функциясына береміз. Ауыстыру келесідей: Smod - s i элементі таңдалды, басынан біз ең төменгі элементтен бастаймыз және оны ауыстыру кестесіндегі мәнмен i - s i элементінің мәнімен көрсетілген жол мен бағанмен ауыстырамыз. Біз s i +1 элементіне өтеміз және солай істейміз және соңғы элементтің мәнін ауыстырғанша жалғастырамыз Smod - бұл операцияның нәтижесі S Simple деп белгіленеді.
  3. Бұл операцияда Ssimple мәні циклді түрде солға 11 битке жылжытылады және біз Srol аламыз.
  4. Біз L блогының екінші бөлігін таңдаймыз және Srol көмегімен мод 2 қосамыз, нәтижесінде бізде Sxor бар.
  5. Бұл кезеңде блоктың L бөлігі R бөлігінің мәніне тең болады, ал R бөлігі өз кезегінде Sxor нәтижесімен инициализацияланады және бұл негізгі қадам функциясын аяқтайды!

3.3 Негізгі циклдар: “32-Z”, “32-R”.

Ақпаратты шифрлау үшін оны көлемі 64 бит болатын блоктарға бөлу қажет, әрине соңғы блок 64 биттен аз болуы мүмкін. Бұл факт осы «қарапайым ауыстыру» әдісінің Ахиллес өкшесі болып табылады. Оны 64 битке қосу шифрлық мәтіннің криптографиялық күшін арттырудың өте маңызды міндеті болғандықтан, бұл сезімтал орын, егер ол ақпарат массивінде болса, бірақ ол болмауы мүмкін (мысалы, өлшемі 512 байт файл). !), үлкен жауапкершілікпен қарау керек!

Ақпаратты блоктарға бөлгеннен кейін кілтті элементтерге бөлу керек:

К = k1,k2,k3,k4,k5,k6,k7,k8

Шифрлаудың өзі негізгі циклдар деп аталатындарды пайдаланудан тұрады. Бұл, өз кезегінде, негізгі крипто-трансформация қадамдарының n -ші санын қамтиды.

Негізгі циклдар, қалай айту керек, белгіленеді: n - м. Мұндағы n – базалық циклдегі негізгі крипто-трансформация қадамдарының саны, ал m – базалық циклдің «түрі», яғни. бұл не туралы, деректерді «Z» шифрлау немесе «R» шифрлау.

Негізгі шифрлау циклі 32–3 32 негізгі криптографиялық қадамнан тұрады. N блогы және К кілтінің элементі қадамның әрекеттерін жүзеге асыратын функцияға беріледі және бірінші қадам k1-де, екіншісі нәтиженің үстінде k2 элементімен және т.б. келесі схема бойынша:

k1,k2,k3,k4,k5,k6,k7,k8,k1,k2,k3,k4,k5,k6,k7,k8,k1,k2,k3,k4,k5,k6,k7,k8k8,k7, k6,k5,k4,k3,k2,k1

32-P шифрын шешу процесі ұқсас жолмен жүреді, бірақ негізгі элементтер кері тәртіпте беріледі:

k1,k2,k3,k4,k5,k6,k7,k8,k8,k7,k6,k5,k4,k3,k2,k1,k8,k7,k6,k5,k4,k3,k2,k1,k8, k7,k6,k5,k4,k3,k2,k1

Жаттығу.

Ақпаратты шифрлау теориясымен танысқаннан кейін шифрлаудың іс жүзінде қалай жұмыс істейтінін көретін кез келді.

Бастапқы деректер:

N = 0102030405060708h ақпарат блогын алайық, мұнда L және R бөліктері тең:

L = 01020304h, R = 05060708h, кілтті алыңыз:

K=' ретінде28 zw37 q839 7342ui23 8e2t вквм2 ewp1' (бұл ASCII кодтары, он алтылық көріністі көру үшін бұл файлды көру режимінде ашуға болады. Жалпы қолбасшыпернесін басу « F3», содан кейін « пернесі 3 «). Бұл кілтте элемент мәндері болады:

k1 = 'as28', k2 = 'zw37', k3 = 'q839', k4 = '7342'

k5 = 'ui23', k6 = '8e2t', k7 = 'wqm2', k8 = 'ewp1'

Сондай-ақ келесі ауыстыру кестесін алыңыз:

Күріш. 3

Мұнда жолдар 0-ден 7-ге дейін, бағандар 0-ден F-ге дейін нөмірленеді.

Ескерту:Барлық ақпарат, соның ішінде ауыстыру кестесі бар кілт, алгоритмді қарастыру үшін мысал ретінде алынған!

«Бастапқы деректерді» пайдалана отырып, криптографиялық түрлендірудің негізгі қадамының әрекетінің нәтижесін алу керек.

  1. Біз R = 05060708h бөлігін және k1 = 'as28' негізгі элементін таңдаймыз, он алтылық нысанда негізгі элемент келесідей болады: 61733238h. Енді біз 2 32 қосындысының әрекетін орындаймыз:

Күріш. 4

Суретте көріп отырғанымыздай, біз қызыл түспен белгіленген және көрсеткіші бар 33 битке тасымалдамадық. 32 «. Егер бізде R және негізгі элементтің басқа мәндері болса, бұл орын алуы мүмкін, содан кейін біз оны елемейміз және болашақта тек сары түспен белгіленген биттерді пайдаланамыз.

Мен мұндай операцияны ассемблер командасымен орындаймын қосу:

; eax=R, ebx='as28'

Бұл операцияның нәтижесі Smod = 66793940h

  1. Қазір ең күрделі операция, бірақ мұқият қарасаңыз, бұл бастапқыда көрінетіндей қорқынышты емес. Смодты келесі пішінде елестетейік:

ҮЛГІ САҚТАЛМАЙДЫ

Күріш. бес

Мен суреттегі Smod элементтерін елестетуге тырыстым, бірақ бәрібір түсіндіремін:

s0 = 0, s1 = 4, s2 = 9, т.б.

Енді s0 ең төменгі элементінен бастап ауыстыруды орындаймыз. Абзацты еске түсіру 3.2 Криптотрансформацияның негізгі қадамы» i – жол, s i – баған, біз нөлдік жол мен нөлдік бағандағы мәнді іздейміз:

6-сурет

Сондықтан Smod-тың ағымдағы мәні 6679394 емес 0 h, және 6679394 5 h.

Біз s1 ауыстыруды жалғастырамыз, яғни. төрт. Бірінші жолды және төртінші бағанды ​​пайдалану (s1= 4!). Суретке назар аударайық:

Күріш. 7

Енді мән 667939 емес, Smod болып табылады 4 5 сағ, 667939 2 5 сағ. Менің ойымша, қазір ауыстыру алгоритмі оқырманға түсінікті және Ssimple-дің соңғы нәтижесінен кейін келесі мәнге ие болады деп айта аламын - 11e10325h.

Мұны ассемблер пәрмендері түрінде жүзеге асырудың ең оңай жолы туралы мен кеңейтілген кесте туралы сөйлескеннен кейін келесі абзацта сөйлесемін.

  1. Біз алынған Ssimple мәнін 11 бит солға жылжытуымыз керек.

Күріш. 8

Көріп отырғаныңыздай, бұл әрекет өте қарапайым және ассемблер тілінің бір пәрменімен орындалады - орамжәне осы Srol операциясының нәтижесі - 0819288Fh.

  1. Енді ол Srol мәні бар XOR ақпарат блогының L бөлігі болып қалады. Мен w2k sp4 калькуляторын алып, Sxor = 091b2b8bh аламын.
  2. Бұл әрекет түпкілікті болып табылады және біз жай ғана R бөлігін L бөлігінің мәнін тағайындаймыз, тазалаймыз және L бөлігін Sxor мәнімен инициализациялаймыз.

Соңғы нәтиже:

L=091b2b8bh, R=01020304h

4.2 Алгоритмнің жылдамдығын арттыру

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

Мен өзімнің бағдарламама шифрлау алгоритмін енгізген кезде келесі әрекеттерді орындадым:

  1. L блогының бөлігін eax регистріне, ал R - edx-ке таңдаңыз.
  2. Кеңейтілген кілттің мекенжайы бар esi регистріне инициализацияланған, төменде бұл туралы толығырақ.
  3. Мен кеңейтілген ауыстыру кестесінің мекенжайының мәнін ebx регистріне тағайындадым, бұл туралы төменде толығырақ
  4. Жағдайға байланысты 32 - Z немесе 32 - R негізгі циклінің функциясына 1,2, 3 тармақтар ақпаратын берді.

Егер сіз тармақтағы негізгі элементтерді жеткізу схемасын қарасаңыз Негізгі циклдар: “32-Z”, “32-R””, содан кейін 32 - Z негізгі циклінің кілтін келесідей көрсетуге болады:

K 32-Z =

'as28','zw37','q839','7342','ui23','8e2t','wqm2','ewp1',

'as28','zw37','q839','7342','ui23','8e2t','wqm2','ewp1',

'ewp1','wqm2','8e2t','ui23','7342','q839','zw37','as28'

Анау. басынан бастап жүріңіз k1,k2,k3,k4,k5,k6,k7,k8 - 28', 'zw37', 'q839', '7342', 'ui23', '8e2t', 'wqm2', 'ewp1'Бұл реттілік үш рет қайталанады. Содан кейін элементтер кері ретпен жүреді, яғни: k8,k7,k6,k5,k4,k3,k2,k1 - 'ewp1', 'wqm2', '8e2t', 'ui23', '7342', 'q839', 'zw37', 'as28'.

Мен массивтің элементтерін 32 - Z-де қызмет ету ретімен алдын ала орналастырдым. Осылайша мен әр пернеге қажетті жадты ұлғайттым, бірақ өзімді қажет емес кейбір ойлау процестерінен құтқардым және жұмыс жылдамдығын арттырдым. жадқа қол жеткізу уақытын қысқарту арқылы алгоритм! Мұнда мен тек 32 - Z кілтін сипаттадым, 32 - R циклі үшін мен дәл солай жасадым, бірақ элементтерді жеткізудің басқа схемасын қолдандым, мен оны тармақта сипаттадым « Негізгі циклдар: «32-Z», «32-R».

Жоғарыда уәде еткенімдей, ауыстыру функциясының орындалуын сипаттайтын уақыт келді. Мен бұрын сипаттай алмадым, өйткені. бұл жаңа тұжырымдаманы - кеңейтілген ауыстыру кестесін енгізуді талап етеді. Мен саған оның не екенін түсіндіре алмаймын. Оның орнына мен оны көрсетемін, ал сіз оның не екенін өзіңіз тұжырымдай аласыз ба - кеңейтілген ауыстыру кестесі?

Сонымен, кеңейтілген ауыстыру кестесінің не екенін түсіну үшін бізге ауыстыру кестесі қажет, мысалы, мен суретте көрсетілгенді аламын. 3.

Мысалы, бізге 66793940h санын ауыстыру керек болды. Мен оны келесі формада ұсынамын:

ҮЛГІ САҚТАЛМАЙДЫ

Күріш. тоғыз

Енді s1,s0 элементтерін алсақ, яғни. төмен байт болса, онда ауыстыру функциясының нәтижесі 25 сағ болады! «Мен тармақта келтірген Андрей Винокуровтың мақаласын оқығаннан кейін Пайдаланылған әдебиеттер тізімі”, сіз екі жолды алсаңыз, ассемблер пәрмені арқылы ауыстыру элементтерін жылдам табуға мүмкіндік беретін массив алуға болатынын көресіз. xlat.Олар мұны басқа жолмен, тезірек мүмкін дейді, бірақ Андрей Винокуров ГОСТ енгізудің жылдам алгоритмдерін зерттеуге шамамен төрт жыл жұмсады! Менің ойымша, доңғалақ бұрыннан бар болса, оны қайта ойлап табудың қажеті жоқ.

Сонымен, массив туралы:

Алғашқы екі жолды, нөлді және біріншіні алып, 256 байт массивін жасайық. Енді бір мүмкіндікті байқаймыз, егер сізге 00сағ түрлендіру қажет болса, онда нәтиже 75сағ болады (3-сурет негізінде) – бұл мәнді массивке 00h ығысуына қойыңыз. Біз 01h мәнін аламыз, ауыстыру функциясының нәтижесі 79h, оны массивке 01 ығысуымен және т.б. 0FFh дейін қоямыз, бұл бізге 0FCh береді, біз оны 0FFh ығысуында массивке қоямыз. Осылайша, біз жолдардың бірінші тобына ауыстырудың кеңейтілген кестесін алдық: бірінші және нөл. Бірақ әлі де үш топ бар: екінші 2 бет, 3 бет, үшінші бет 4, 5 бет, төртінші 6 бет, 7 бет. Осы үш топпен біз бірінші топтағы сияқты әрекет етеміз. Нәтиже – кеңейтілген ауыстыру кестесі!

Енді сіз ауыстыруды орындайтын алгоритмді жүзеге асыра аласыз. Ол үшін біз Андрей Винокуров өз парақшасында жариялаған бастапқы кодтарды аламыз, қараңыз « Библиография».

lea ebx, кеңейтілген_кесте_қарапайым

mov eax,[алмастыру үшін нөмірді қойыңыз]

ebx,100h қосыңыз;келесі екі түйінге өтіңіз

sub ebx,300h ; сондықтан болашақта ebx кестені көрсетеді

Енді тағы бір мүмкіндік, біз алдыңғы әрекеттерді ауыстырып қана қоймай, санды солға 8 битке жылжыттық! Санды тағы 3 бит солға жылжытуымыз керек:

және біз rol eax,11 операциясының нәтижесін аламыз!

Оңтайландыруға қосымша ештеңе қоса алмаймын, мен жоғарыда айтқанымды баса айта алатын жалғыз нәрсе - жадқа кіруге қарағанда регистрлерді жиі пайдалану. Менің ойымша, бұл сөздер тек жаңадан бастағандарға арналған, тәжірибелі адамдар мұны менің сөзімсіз жақсы түсінеді :).

Негізгі ақпаратқа қойылатын талаптар.

Андрей Винокуровтың мақаласында айтылғандай, кілт екі критерий бойынша таңдалады:

- 1 және 0 мәндері арасындағы биттердің тең ықтималды таралу критерийі. Әдетте Пирсон критерийі («хи-квадрат») биттердің тең ықтималды таралу критерийі ретінде әрекет етеді.

Бұл кілтті білдіреді, негізінен кез келген сан мүмкін. Яғни, кілттің келесі битін қалыптастыру кезінде оны бір немесе нөлге инициализациялау ықтималдығы 50/50!

Кілттің әрқайсысы 32 биттен тұратын сегіз элементі бар екенін ескеріңіз, сондықтан кілтте барлығы 32 * 8 = 256 бит және мүмкін болатын пернелердің саны 2 256! Бұл сізге әсер етпейді ме? 🙂

— қатар критерийі.

Егер мен тармақта берген кілтімізге қарасақ » 4.1 Криптотрансформацияның негізгі қадамын жүзеге асыру», содан кейін келесі жазбаның дұрыс екенін байқайсыз:

Күріш. 10

Бір сөйлемде k 1 мәні k 2-де емес, кілттің кез келген басқа элементінде қайталанбауы керек.

Яғни, біз шифрлау алгоритмін қарастыру ретінде таңдаған кілт жоғарыдағы екі критерийге жақсы сәйкес келеді.

Енді ауыстыру кестесін таңдау туралы:

Енді дұрыс ауыстыру кестесін қалай таңдау керектігі туралы сөйлесейік. Ауыстыру кестелерін таңдаудың негізгі талабы - әрқайсысының өлшемі 4 бит болатын элементтердің «қайталанбау» құбылысы. Жоғарыда көргеніңіздей, ауыстыру кестесінің әрбір жолы 0h, 1h, 2h, 3h, ..., 0fh мәндерінен тұрады. Сонымен, негізгі талап - әрбір жолда 0h, 1h, 2h, ... , 0fh мәндері және әрбір осындай мән бір данада болуы. Мысалы, реттілік:

1 2 3 4 5 6 7 8 9 A B C D E F

Бұл талапқа толығымен сәйкес келеді, бірақ бәрібір! Мұндай тізбекті жол ретінде таңдау ұсынылмайды. Өйткені, егер сіз осындай жолға сүйенетін функцияның кірісіне мән берсеңіз, онда шығыста бірдей мән аласыз! Сенбейсіз бе? Содан кейін 332DA43Fh санын және ауыстыру кестесі сияқты сегіз жолды алыңыз. Ауыстыру операциясын орындаңыз, мен сізді сендіремін, шығыс 332DA43Fh саны болады! Яғни, сіз операцияның кірісіне бергеніңізбен бірдей! Бұл шифрлаудағы жақсы форманың белгісі емес, солай ма? 🙂

Бұл бір талап болды, келесі критерий мынаны айтады - шығыс блогының әрбір биті кіріс блогының әрбір битінен статистикалық тәуелсіз болуы керек!

Бұл қалай оңай көрінеді? Міне, мысалы, жоғарыдағы саннан s0 = 0Fh, 01111b элементін таңдадық. Енді бірінші битті бір немесе нөлге ауыстыру ықтималдығы 0,5! Екінші, үшінші және төртінші биттерді, әрқайсысы бөлек қарастырылатын, бір немесе нөлге ауыстыру ықтималдығы да 0,5. s1 = 0Eh таңдағанда, біз нөлдік бит болу ықтималдығын ауыстырамыз, бұл «0» , нөлге немесе бір тым тең - 0,5! Осылайша, бұл критерий бойынша s0, s1 элементтерінің нөлдік разрядтарын ауыстыру арасында заңдылық жоқ! Иә, сіз бірлерді ауыстыра аласыз, бірақ нөлдерді де қоюға болады. 🙂

Осы критерий бойынша кестені бағалау үшін мына формула бойынша есептелетін корреляция коэффициенттерінің кестесін құруға болады:

— егер p = 1 болса, онда шығыстағы j битінің мәні кірістегі биттердің кез келген комбинациясы үшін кірістегі i биттің мәніне тең болады;

— егер p = -1 болса, онда j разрядының шығысындағы мәні әрқашан кіріс i разрядының инверсиясы болады;

— егер p = 0 болса, j шығыс биті i кіріс битінің кез келген тіркелген мәні үшін бірдей ықтималдықпен 0 және 1 мәндерін қабылдайды.

Бір жолды мысалға алайық:

D Б 4 1 3 Ф 5 9 0 А Е 7 6 8 2 C

Оны құрамдас бөліктерге бөлейік:

Жоғарыдағы формула арқылы бір коэффициентті есептейміз. Мұның қалай жасалатынын түсінуді жеңілдету үшін мен толығырақ түсіндіремін:

- кірісте 0-ші санның 0-ші битін (0) аламыз, ал шығысында (1) 0-шы санның 0-ші битін аламыз 0 XOR 1 = 1 операциясын орындаймыз.

- 1-ші санның (1) 0-ші битін кірісте және 1-ші санның 0-ын шығысында (1) аламыз 1 XOR 1 = 0 операциясын орындаймыз.

- кірісте 2-ші санның 0-ші битін (0) аламыз және шығысында 2-ші санның 0-ші битін аламыз (0) 0 XOR 0 = 0 операциясын орындаймыз.

- 3-ші санның (1) 0-ші битін кірісте және 3-ші санның 0-ын шығысында (1) аламыз 1 XOR 1 = 0 операциясын орындаймыз.

Осындай реттілікпен XOR операцияларын ретімен орындағаннан кейін біз барлық нөлдік емес мәндердің санын есептейміз, 6 мәнін аламыз. Осыдан P 00 = 1-(6/2 4-1) = 0,25. Сонымен, 16 жағдайдың 4-інде шығыстағы 0 разрядының мәні кірістегі 0 разрядының мәніне тең екені анықталды;

Соңғы коэффициенттер кестесі:

Коэффициенттер кестесі келесідей болады (қайта есептеуге жалқау емес)

Кіру
Шығару 0 1 2 3
0 -0,25 0,00 0,00 0,00
1 0,00 1,00 0,00 0,00
2 0,00 0,00 1,00 0,00
3 0,00 0,00 0,00 -0,50

Бұл кестеде бәрі нашар - топтың 1 және 2 биттері өзгеріссіз қалады! Криптоаналитиктің айналатын орны бар 🙂 Осы талаптардың барлығын ескере отырып, қарапайым санау («басқа») көрсетілген теорияға сәйкес келетін ауыстыру кестелерін тапты (бүгінгі күні - 1276 комбинация) Міне, олардың кейбіреулері:

09 0D 03 0E-06 02 05 08-0A 07 00 04-0C 01 0F 0B
00 05 0A 07-03 08 0F 0C-0E 0B 04 09-0D 06 01 02
06 0B 0F 00-0C 01 02 0D-08 07 09 04-05 0A 03 0E
04 0E 00 09-0B 01 0F 06-03 0D 07 0A-0C 02 08 05
04 02 08 0E-05 0F 03 09-0B 01 0D 07-0A 0C 06 00
07 03 09 0C-08 00 06 0F-0E 04 01 0A-0D 0B 02 05
06 0F 03 08-0D 04 0A 01-09 02 05 0C-00 0B 0E 07
0C 06 08 01-03 09 07 0E-0B 05 0F 02-04 0A 00 0D
04 0B 09 06-0E 01 00 0F-0A 05 03 0C-0D 02 07 08
00 0E 0F 01-07 08 09 06-04 0B 0A 05-03 0D 0C 02
0F 09 01 07-04 0A 08 06-0E 00 02 0C-05 03 0B 0D
0A 03 04 01-05 0C 0B 0E-08 06 0F 0D-07 09 00 02
0B 06 0F 01-04 0A 08 05-00 0D 0C 02-07 09 03 0E
0C 03 02 08-0D 06 0B 05-07 09 04 0F-0A 00 01 0E
02 0B 0F 04-09 00 06 0D-05 0E 01 08-0C 07 0A 03

Пайдаланылған әдебиеттер тізімі.

  1. Андрей Винокуровтың мақаласы:

ГОСТ 28147-89 шифрлау алгоритмі, оны қолдану және енгізу

Intel x86 платформалы компьютерлеріне арналған.

(http://www.enlight.ru/crypto/frame.htm сайтынан табуға болады).

Мұнда шифрлау алгоритмін жүзеге асырудың бастапқы кодтары берілген.

  1. Хорст Фейстелдің мақаласы:

Криптография және компьютерлік қауіпсіздік.

(алдыңғы мақаланың мекенжайы бойынша табуға болады)

  1. Росс Н. Уильямс:

CRC қателерін анықтау алгоритмдеріне арналған қарапайым нұсқаулық

Сайтта жарияланған www.болдым.kk.

рахмет.

Мен www.wasm.ru форумының барлық келушілеріне алғысымды білдіргім келеді. Бірақ мен қатысқан ChS-ге ерекше алғыс айтқым келеді қазіргі уақытта SteelRat ретінде белгілі, ол маған ешқашан түсінбейтін нәрселерді түсінуге көмектесті, сонымен қатар абзац жазуға көмектесті: « Негізгі ақпаратқа қойылатын талаптар», осы абзацтың негізгі бөлігін өзі жазған. ҚарМТУ қызметкеріне де алғысым шексіз. А.Н. Туполев Аникин Игорь Вячеславович және Крис Касперскийді айтпау күнә болар еді, ол үшін ол, ал Володя / wasm.ru оның нұсқаулары үшін. О, мен одан аламын :). Мен сондай-ақ кейбір математикалық джунглиді ойыма әкелгені үшін Sega-Zero / Callipso-ны атап өткім келеді.

Менің сізге айтқым келгені осы шығар.

Мен осы мақалаға қатысты сын немесе сұрақтарға немесе жай кеңестерге ризамын. Менің байланыс деректерім: [электрондық пошта қорғалған], ICQ - 337310594.

Құрметпен, Evil`s Interrupt.

P.S.: Мен бұл мақаламен ешкімнен асып түсуге тырыспадым. Бұл ГОСТ оқуды жеңілдету мақсатында жазылған, егер сізде қиындықтар болса, бұл мен кінәлі дегенді білдірмейді. Парасатты болыңыз және шыдамды болыңыз, сізге барлық жақсылық!

ГОСТ 28147-89 шифрлау алгоритмі, оны қолдану және Intel x86 платформасының компьютерлері үшін бағдарламалық қамтамасыз етуді енгізу.


Андрей Винокуров

Алгоритмнің сипаттамасы.

Терминдер мен белгілеулер.

Ресей Федерациясының шифрлау стандартының сипаттамасы «ГОСТ 28147-89 криптографиялық түрлендіру алгоритмі» деп аталатын өте қызықты құжатта қамтылған. Оның атауында «шифрлау» терминінің орнына жалпылама түсінік « криптографиялық түрлендіру ' кездейсоқ емес. Бір-бірімен тығыз байланысты бірнеше шифрлау процедураларынан басқа, құжат құрудың бір алгоритмін сипаттайды. еліктеуіш кірістірулер . Соңғысы криптографиялық басқару комбинациясынан басқа ештеңе емес, яғни құпия кілт арқылы бастапқы деректерден жасалған код. имитациядан қорғау , немесе деректерді рұқсатсыз өзгертулерден қорғаңыз.

ГОСТ алгоритмдерінің әртүрлі қадамдарында олар әрекет ететін деректер әртүрлі тәсілдермен түсіндіріледі және пайдаланылады. Кейбір жағдайларда деректер элементтері тәуелсіз разрядтардың массивтері ретінде, басқа жағдайларда таңбасыз бүтін сан ретінде, басқаларында бірнеше қарапайым элементтерден тұратын құрылымы бар күрделі элемент ретінде қарастырылады. Сондықтан шатаспау үшін қолданылатын белгіні келісу керек.

Осы мақаладағы деректер элементтері курсивпен бас латын әріптерімен белгіленген (мысалы, X). | арқылы X| деректер элементінің өлшемін білдіреді Xбиттерде. Осылайша, деректер элементін түсіндіретін болсақ XТеріс емес бүтін сан ретінде келесі теңсіздікті жаза аламыз:

Егер деректер элементі кішірек өлшемдегі бірнеше элементтерден тұрса, онда бұл факт келесі түрде көрсетіледі: X=(X 0 ,X 1 ,…,X n –1)=X 0 ||X 1 ||…||X n-бір . Бірнеше деректер элементтерін бір элементке біріктіру процедурасы деп аталады жалғау деректер және «||» белгісімен белгіленеді. Әрине, деректер элементтерінің өлшемдері үшін келесі қатынас сақталуы керек: | X|=|X 0 |+|X 1 |+…+|X n-1 |. Күрделі деректер элементтерін және біріктіру әрекетін көрсеткенде, құраушы деректер элементтері басымдықтың өсу ретімен тізімделеді. Басқаша айтқанда, құрама элементті және оған енгізілген барлық деректер элементтерін таңбасыз бүтін сандар ретінде түсіндірсек, онда келесі теңдікті жаза аламыз:

Алгоритмде деректер элементін жеке биттердің массиві ретінде түсіндіруге болады, бұл жағдайда биттер массив сияқты бірдей әріппен белгіленеді, бірақ келесі мысалда көрсетілгендей кіші әріппен белгіленеді:

X=(x 0 ,x 1 ,…,x n –1)=x 0 +2 1 x 1 +…+2 n-бір · x n –1 .

Осылайша, сіз назар аударған болсаңыз, деп аталатын. цифрлардың «кішкентай-эндиан» нөмірленуі, яғни. көп разрядты деректер сөздерінде жеке екілік цифрлар және олардың кіші сандары бар топтары маңызды емес. Бұл стандарттың 1.3 тармағында анық көрсетілген: «Екілік векторларды қосу және циклдік ауыстыру кезінде ең жоғары разрядтар үлкен сандары бар аккумуляторлардың разрядтары болып саналады». Әрі қарай, стандарттың 1.4, 2.1.1 және басқалары тармақтары виртуалды шифрлау құрылғысының сақтау регистрлерін төменгі деректермен толтыруды бастайды, яғни. маңыздырақ дәрежелер. Нөмірлеудің дәл осындай тәртібі қабылданған микропроцессордың архитектурасы Intel x86, сондықтан осы архитектурада шифрды бағдарламалық қамтамасыз ету деректер сөздерінің ішіндегі биттердің қосымша ауыстырылуын қажет етпейді.

Егер логикалық мағынасы бар деректер элементтеріне қандай да бір операция орындалса, онда бұл операция элементтердің сәйкес биттерімен орындалады деп есептеледі. Басқа сөздермен айтқанда А Б=(а 0 б 0 ,а 1 б 1 ,…,а п –1 б н–1), қайда n=|А|=|Б|, ал « » символы ерікті екілік логикалық операцияны білдіреді; әдетте операцияға сілтеме жасайды эксклюзивті немесе , бұл сонымен қатар 2-қосынды модулінің операциясы:

Шифрды құру логикасы және ГОСТ негізгі ақпаратының құрылымы.

Егер сіз ГОСТ 28147–89 түпнұсқасын мұқият зерттесеңіз, онда бірнеше деңгейлі алгоритмдердің сипаттамасы бар екенін байқайсыз. Ең жоғарғы жағында деректер массивтерін шифрлауға және олар үшін жалған кірістірулерді әзірлеуге арналған практикалық алгоритмдер бар. Олардың барлығы мәтінде ГОСТ деп аталатын төменгі деңгейдегі үш алгоритмге негізделген циклдар . Бұл негізгі алгоритмдер осы мақалада аталады негізгі циклдар оларды барлық басқа циклдерден ажырату үшін. Олардың келесі атаулары мен белгілері бар, соңғылары жақшада берілген және олардың мағынасы кейінірек түсіндіріледі:

  • шифрлау циклі (32-3);
  • шифрды шешу циклі (32-P);
  • имитациялық кірістіруді жасау циклі (16-Z).

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

Осылайша, ГОСТ түсіну үшін келесі үш нәрсені түсіну керек:

  • не болды негізгі қадам криптографиялық түрлендірулер;
  • негізгі қадамдардан негізгі циклдер қалай қалыптасады;
  • үшеуден сияқты негізгі циклдар ГОСТ-тың барлық практикалық алгоритмдерін қосыңыз.

Осы мәселелерді зерттеуге кіріспес бұрын, ГОСТ алгоритмдері қолданатын негізгі ақпарат туралы айту керек. Жалпы жұртшылыққа белгілі барлық заманауи шифрларды қанағаттандыратын Кирхгоф принципіне сәйкес, шифрланған хабарламаның құпиялығын қамтамасыз ететін оның құпиялығы. ГОСТ-та негізгі ақпарат екі деректер құрылымынан тұрады. Қосымша ретінде кілт барлық шифрлар үшін қажет, ол сондай-ақ қамтиды ауыстыру кестесі . Төменде ГОСТ негізгі құрылымдарының негізгі сипаттамалары берілген.

Криптовалюта трансформациясының негізгі қадамы.

Крипто түрлендірудің негізгі қадамы 64-биттік деректер блогын түрлендіруді анықтайтын оператор болып табылады. Бұл оператордың қосымша параметрі 32 разрядты блок болып табылады, ол кілттің кез келген элементі ретінде пайдаланылады. Негізгі қадамдық алгоритмнің схемасы 1-суретте көрсетілген.


Сурет 1. ГОСТ 28147-89 алгоритмінің крипто-трансформациясының негізгі қадамының схемасы.

Төменде негізгі қадам алгоритмінің түсіндірмесі берілген:

0-қадам

  • Н– 64-биттік деректер блогы түрлендіруге жатады, қадамды орындау кезінде оның ең аз маңыздылығы ( Н 1) және одан жоғары ( Н 2) бөліктер бөлек 32-биттік таңбасыз бүтін сандар ретінде қарастырылады. Осылайша, адам жаза алады N=(Н 1 ,Н 2).
  • X– 32-биттік негізгі элемент;

1-қадам

Кілтпен қосу. Түрлендірілген блоктың төменгі жартысы қадамда пайдаланылатын негізгі элементі бар 2 32 модулі қосылады, нәтиже келесі қадамға өтеді;

2-қадам

Блокты ауыстыру. Алдыңғы қадамда алынған 32-биттік мән сегіз 4-биттік код блоктарының массиві ретінде түсіндіріледі: S=(С 0 , С 1 , С 2 , С 3 , С 4 , С 5 , С 6 , С 7), және С 0 құрамында 4 ең кішісі бар, және С 7 - 4 ең маңызды бит С.

Әрі қарай сегіз блоктың әрқайсысының мәні жаңасымен ауыстырылады, ол келесідей ауыстыру кестесінен таңдалады: блоктың мәні Сиөзгереді Си-реттегі элемент (нөлден бастап нөмірлеу) мен-сол ауыстыру түйінінің (яғни. мен- ауыстырулар кестесінің нөлден бастап нөмірленуі). Басқаша айтқанда, блок мәнін ауыстыру ретінде ауыстыру кестесінен элемент ауыстырылатын блок нөміріне тең жол нөмірі және 4 разрядты теріс емес бүтін сан ретінде ауыстырылатын блок мәніне тең баған нөмірі бар элемент таңдалады. Осыдан ауыстырылатын кестенің өлшемі анық болады: ондағы жолдар саны 32-биттік деректер блогындағы 4-разрядты элементтердің санына тең, яғни сегіз, ал бағандар саны 2 4, он алты екені белгілі 4 биттік деректер блогының ерекше мәндерінің саны.

3-қадам

11 бит солға бұру. Алдыңғы қадамның нәтижесі жоғары разрядтарға қарай циклдік 11 битке жылжытылады және келесі қадамға ауыстырылады. Алгоритмдік диаграммада символ оның аргументінің солға 11 битке циклдік ығысу функциясын білдіреді, яғни. жоғары деңгейлерге қарай.

4-қадам

Биттік қосу: 3-қадамда алынған мән түрлендірілетін блоктың жоғарғы жартысына модуль бойынша 2 бит қосылады.

5-қадам

Тізбек бойымен жылжу: түрлендірілген блоктың төменгі бөлігі ескінің орнына ауыстырылады, ал алдыңғы қадамның нәтижесі оның орнына қойылады.

6-қадам

Негізгі крипто-түрлендіру қадамының алгоритмін орындау нәтижесінде түрлендірілетін блоктың нәтиже мәні қайтарылады.

Криптографиялық түрлендірулердің негізгі циклдері.

Осы мақаланың басында атап өтілгендей, ГОСТ блоктық шифрлар класына жатады, яғни ондағы ақпаратты өңдеу бірлігі мәліметтер блогы болып табылады. Сондықтан оның криптографиялық түрлендірулер алгоритмдерін, яғни деректердің бір блогының басқару комбинациясында шифрлау, дешифрлеу және «есепке алу» алгоритмдерін анықтайды деп күту әбден қисынды. Бұл алгоритмдер деп аталады негізгі циклдар Бұл шифрды құру үшін олардың түбегейлі маңыздылығын көрсететін ГОСТ.

Негізгі циклдар мыналардан құрастырылған негізгі қадамдар алдыңғы бөлімде қарастырылған криптографиялық түрлендіру. Негізгі қадамды орындау кезінде тек бір ғана 32-разрядты кілттік элемент пайдаланылады, ал ГОСТ кілтінде мұндай сегіз элемент бар. Сондықтан кілттің толық пайдаланылуы үшін негізгі циклдердің әрқайсысы өзінің әртүрлі элементтерімен негізгі қадамды қайта-қайта орындауы керек. Сонымен қатар, әрбір негізгі циклде кілттің барлық элементтері бірдей рет пайдаланылуы әбден заңды болып көрінеді, шифрдың беріктігіне байланысты бұл сан біреуден көп болуы керек.

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

Шифрлау циклі 32-3:

Қ 0 ,Қ 1 ,Қ 2 ,Қ 3 ,Қ 4 ,Қ 5 ,Қ 6 ,Қ 7 ,Қ 0 ,Қ 1 ,Қ 2 ,Қ 3 ,Қ 4 ,Қ 5 ,Қ 6 ,Қ 7 ,Қ 0 ,Қ 1 ,Қ 2 ,Қ 3 ,Қ 4 ,Қ 5 ,Қ 6 ,Қ 7 ,Қ 7 ,Қ 6 ,Қ 5 ,Қ 4 ,Қ 3 ,Қ 2 ,Қ 1 ,Қ 0 .


2а-сурет. 32-Z шифрлау циклінің схемасы

Шифрды шешу циклі 32-P:

Қ 0 ,Қ 1 ,Қ 2 ,Қ 3 ,Қ 4 ,Қ 5 ,Қ 6 ,Қ 7 ,Қ 7 ,Қ 6 ,Қ 5 ,Қ 4 ,Қ 3 ,Қ 2 ,Қ 1 ,Қ 0 ,Қ 7 ,Қ 6 ,Қ 5 ,Қ 4 ,Қ 3 ,Қ 2 ,Қ 1 ,Қ 0 ,Қ 7 ,Қ 6 ,Қ 5 ,Қ 4 ,Қ 3 ,Қ 2 ,Қ 1 ,Қ 0 .


2b-сурет. 32-P шифрын шешу циклінің диаграммасы

16-З имитациялық кірістіруді өндіру циклі:

Қ 0 ,Қ 1 ,Қ 2 ,Қ 3 ,Қ 4 ,Қ 5 ,Қ 6 ,Қ 7 ,Қ 0 ,Қ 1 ,Қ 2 ,Қ 3 ,Қ 4 ,Қ 5 ,Қ 6 ,Қ 7 .


2c сурет. 16-З имитациялық қосымшаның өндірістік циклінің схемасы.

Циклдердің әрқайсысының үлгісіне сәйкес келетін өзінің әріптік-цифрлық белгісі бар. n-X", мұнда белгілеудің бірінші элементі ( n), циклдегі негізгі қадамның қайталану санын және белгілеудің екінші элементін ( X), әріп, негізгі элементтерді пайдалану кезінде шифрлау («З») немесе шифрды шешу («Р») тәртібін көрсетеді. Бұл тапсырыс қосымша түсіндіруді қажет етеді:

Шифрды шешу циклі шифрлау циклінің кері болуы керек, яғни осы екі циклды ерікті блокқа ретімен қолдану бастапқы блокқа әкеліп соғуы керек, ол келесі қатынас арқылы көрсетіледі: C 32-R ( C 32-З ( Т)), қайда Т– ерікті 64-биттік деректер блогы, C X( Т) циклдің нәтижесі болып табылады Xдеректер блогының үстінде Т. ГОСТ-қа ұқсас алгоритмдер үшін бұл шартты орындау үшін негізгі элементтердің сәйкес циклдармен пайдалану реті өзара кері болуы қажет және жеткілікті. 32-3 және 32-П циклдері үшін жоғарыда келтірілген тізбектерді салыстыру арқылы қарастырылып отырған іс бойынша жазбаша шарттың негізділігін тексеру оңай. Айтылғандардан бір қызық нәтиже шығады: циклдің басқа циклге кері болу қасиеті өзара, яғни 32-3 цикл 32-Р цикліне кері. Басқаша айтқанда, деректер блогын шифрлауды шифрды шешу циклімен теориялық түрде жүзеге асыруға болады, бұл жағдайда деректер блогының шифрын шешу шифрлау циклімен орындалуы керек еді. Екі өзара кері циклдің біреуін шифрлау үшін пайдалануға болады, содан кейін екіншісі деректерді шифрын шешу үшін пайдаланылуы керек, дегенмен ГОСТ28147-89 стандарты циклдерге рөлдерді тағайындайды және пайдаланушыға осы мәселеде таңдау құқығын бермейді. .

Кірістіру имитациясын генерациялау циклі шифрлау циклдарынан жарты есе ұзақ, ондағы негізгі элементтерді пайдалану тәртібі шифрлау циклінің алғашқы 16 қадамындағыдай, жоғарыда келтірілген тізбектерді қарастыру арқылы оңай көруге болады, сондықтан цикл белгілеуіндегі бұл тәртіп бірдей «Z» әрпімен кодталады.

Негізгі циклдердің схемалары 2а-в суреттерінде көрсетілген. Олардың әрқайсысы аргумент ретінде қабылдайды және нәтижесінде диаграммаларда көрсетілген 64 биттік деректер блогын қайтарады. Н. Таңба қадамы( Н,X) деректер блогы үшін негізгі крипто-түрлендіру қадамының орындалуын білдіреді Ннегізгі элементті пайдалану X. Шифрлау циклдері мен модельдеу кірістіруін есептеу арасында жоғарыда айтылмаған тағы бір айырмашылық бар: шифрлаудың негізгі циклдерінің соңында нәтиже блогының жоғары және төменгі бөліктері ауыстырылады, бұл олардың өзара қайтымдылығы үшін қажет. .

Негізгі шифрлау режимдері.

ГОСТ 28147-89 деректерді шифрлаудың келесі үш режимін қарастырады:

  • қарапайым ауыстыру,
  • ойын ойнау,
  • кері байланыс гаммасы,

және имитацияны енгізудің бір қосымша режимі.

Осы режимдердің кез келгенінде деректер массив бөлінген, криптографиялық түрлендіруге ұшырайтын 64 биттік блоктарда өңделеді, сондықтан ГОСТ блоктық шифрларға жатады. Дегенмен, екі ойын режимінде көлемі 8 байттан аз толық емес деректер блогын өңдеуге болады, бұл 8 байтқа еселік болмауы мүмкін ерікті өлшеммен деректер массивтерін шифрлау кезінде өте маңызды.

Криптографиялық түрлендірулердің нақты алгоритмдерін қарастыруға кіріспес бұрын, келесі бөлімдердегі диаграммаларда қолданылатын белгілерді нақтылау қажет:

Ттуралы, Т w – сәйкесінше ашық және шифрланған деректер массивтері;

, – мен- сәйкесінше ашық және шифрланған деректердің 64-биттік блоктары: , , соңғы блок толық емес болуы мүмкін: ;

n– деректер массивіндегі 64-биттік блоктар саны;

C X – «X» негізгі циклінің алгоритміне сәйкес 64-биттік деректер блогын түрлендіру функциясы.

Енді шифрлаудың негізгі режимдерін сипаттайық:

Қарапайым ауыстыру.

Бұл режимдегі шифрлау деректер блоктарын ашу үшін 32-3 циклін, шифрды шешу - шифрланған деректер блоктарына 32-Р циклін қолданудан тұрады. Бұл режимдердің ең қарапайымы, онда 64-биттік деректер блоктары бір-бірінен тәуелсіз өңделеді. Қарапайым ауыстыру режиміндегі шифрлау және дешифрлеу алгоритмдерінің схемалары сәйкесінше 3а және б суреттерінде көрсетілген, олар тривиальды және түсініктемелерді қажет етпейді.


Сурет. 3а. Қарапайым ауыстыру режимінде деректерді шифрлау алгоритмі


Сурет. 3б. Қарапайым ауыстыру режимінде деректер шифрын шешу алгоритмі

Тиісінше шифрлауға немесе шифрды шешуге жататын ашық немесе шифрланған деректер массивінің өлшемі 64 битке еселік болуы керек: | Т o |=| Т w |=64 n , операция орындалғаннан кейін алынған деректер массивінің өлшемі өзгермейді.

Қарапайым ауыстыру шифрлау режимінің келесі мүмкіндіктері бар:

  • Деректер блоктары бір-бірінен және олардың деректер массивіндегі орнынан тәуелсіз шифрланғандықтан, екі бірдей ашық мәтін блогы шифрланғанда, бірдей шифрленген мәтін блоктары алынады және керісінше. Белгіленген қасиет криптоаналитикке шифрланған деректер массивінде бірдей блоктармен кездессе, бастапқы деректердің блоктары бірдей деген қорытынды жасауға мүмкіндік береді, бұл маңызды шифр үшін қолайсыз.
  • Егер шифрланған деректер массивінің ұзындығы 8 байтқа немесе 64 битке еселік болмаса, массивтің соңғы толық емес деректер блогын толық 64 битке қалай және қалай толтыру мәселесі туындайды. Бұл тапсырма бірінші көзқараста көрінетіндей қарапайым емес. «Аяқталмаған блокты нөлдік биттермен толтыру» немесе, жалпы алғанда, «нөл мен бір биттің тіркелген тіркесімі бар толық емес блокты толтыру» сияқты айқын шешімдер белгілі бір жағдайларда криптоаналитикке осының мазмұнын анықтау мүмкіндігін бере алады. санау әдістері бойынша толық емес блок және бұл факт қауіпсіздік шифрінің төмендеуін білдіреді. Сонымен қатар, шифрленген мәтіннің ұзындығы өзгеріп, 64 биттің ең жақын бүтін еселілігіне дейін артады, бұл жиі қажет емес.

Бір қарағанда, жоғарыда аталған мүмкіндіктер қарапайым ауыстыру режимін пайдалануды іс жүзінде мүмкін емес етеді, өйткені ол тек 64 битке еселік және қайталанатын 64 биттік блоктарды қамтымайтын өлшемдегі деректер массивтерін шифрлау үшін ғана пайдаланылуы мүмкін. Кез келген нақты деректер үшін бұл шарттарды орындауға кепілдік беру мүмкін емес сияқты. Бұл дерлік шындық, бірақ бір өте маңызды ерекшелік бар: кілт өлшемі 32 байт, ал ауыстыру кестесінің өлшемі 64 байт екенін есте сақтаңыз. Сонымен қатар, кілт немесе ауыстыру кестесінде қайталанатын 8 байт блоктардың болуы олардың өте нашар сапасын көрсетеді, сондықтан нақты негізгі элементтерде мұндай қайталану болуы мүмкін емес. Осылайша, біз қарапайым ауыстыру режимі негізгі ақпаратты шифрлау үшін өте қолайлы екенін білдік, әсіресе басқа режимдер бұл мақсат үшін ыңғайлы емес, өйткені олар қосымша синхрондау деректер элементін - синхрондау хабарын қажет етеді (келесі бөлімді қараңыз). Біздің болжамымыз дұрыс, ГОСТ қарапайым ауыстыру режимін тек негізгі деректерді шифрлау үшін пайдалануды ұсынады.

Құмар ойындар.

Қарапайым ауыстыру режимінің кемшіліктерінен қалай құтылуға болады? Ол үшін өлшемі 64 биттен аз блоктарды шифрлау мүмкіндігін жасау және шифрлы мәтін блогының оның санына тәуелді болуын қамтамасыз ету қажет, басқаша айтқанда: рандомизациялау шифрлау процесі. ГОСТ-те бұл қамтамасыз ету, екі шифрлау режимінде екі түрлі жолмен қол жеткізіледі масштабтау . Құмар ойындар - бұл ашық (шифрланған) деректерге криптографиялық диапазонды енгізу (жою), яғни шифрланған (ашық) деректерді алу үшін қандай да бір криптографиялық алгоритмді қолдану арқылы жасалған деректер элементтерінің тізбегі. Шифрлау кезінде гамманы қабаттастыру және шифрды шешу кезінде оны жою үшін өзара кері екілік операциялар қолданылуы керек, мысалы, 64-биттік деректер блоктары үшін қосу және алу модулі 2 64. ГОСТ-та осы мақсатта разрядтық қосу модулі 2 операциясы қолданылады, өйткені ол өзіне кері болып табылады және сонымен қатар аппараттық құралдарда қарапайым түрде жүзеге асырылады. Ойын ойнау аталған екі мәселені де шешеді: біріншіден, нақты шифрланған массивтер үшін барлық гамма элементтері әртүрлі, сондықтан бір деректер массивіндегі тіпті екі бірдей блокты шифрлау нәтижесі әртүрлі болады. Екіншіден, гамма элементтері 64 биттің тең бөліктерінде шығарылғанымен, шифрланған блоктың өлшеміне тең өлшемі бар мұндай блоктың бөлігін де пайдалануға болады.

Енді гамма режимінің сипаттамасына тікелей көшейік. Бұл режим үшін гамма келесі түрде алынады: кейбір алгоритмдік қайталанатын сандар реті генераторын (RGCH) пайдаланып, 64-биттік деректер блоктары жасалады, олар кейін 32-3 түрлендіруге, яғни қарапайым ауыстыру режимінде шифрлауға ұшырайды, нәтижесінде гамма блоктарында. Гамманы қабаттастыру және жою бірдей разрядтық XOR операциясы арқылы жүзеге асырылатындықтан, гамма режиміндегі шифрлау және дешифрлеу алгоритмдері бірдей, олардың жалпы схемасы 4-суретте көрсетілген.

Шкаланы құру үшін пайдаланылатын RGHR қайталанатын функция болып табылады: – қайталанатын реттілік элементтері, fтүрлендіру функциясы болып табылады. Сондықтан оның инициализациясы, яғни элемент туралы сөзсіз сұрақ туындайды.Шын мәнінде, бұл деректер элементі гамма режимдері үшін алгоритм параметрі болып табылады, ол диаграммаларда келесідей көрсетілген С, және криптографияда деп аталады синхрондау хабары , ал біздің ГОСТ-та - бастапқы толтыру кодтаушы регистрлердің бірі. Белгілі бір себептерге байланысты ГОСТ әзірлеушілері RGHR инициализациясы үшін тікелей синхрондау хабарламасын емес, оны 32-3 цикліне сәйкес түрлендіру нәтижесін пайдалануды шешті: . RGHR тудыратын элементтер тізбегі толығымен оның бастапқы толтырылуына байланысты, яғни бұл тізбектің элементтері олардың санына және RGHR бастапқы толтырылуына байланысты: мұнда fi(X)=f(fi –1 (X)), f 0 (X)=X. Қарапайым ауыстыру алгоритмі бойынша түрлендіруді ескере отырып, кілтке тәуелділік те қосылады:

қайда Г имен- шкаланың элементі, Қ- кілт.

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

Енді гамма элементтерін генерациялау үшін ГОСТ-та қолданылатын RGHR-ді егжей-тегжейлі қарастырайық. Ең алдымен, генерацияланған сандар тізбегінің статистикалық сипаттамаларын беру талап етілмейтінін атап өткен жөн. RGHR келесі шарттарды орындау қажеттілігіне негізделген ГОСТ әзірлеушілерімен әзірленген:

  • RGHR генерациялайтын сандар тізбегінің қайталану периоды мүмкін болған кездегі максималдыдан айтарлықтай ерекшеленбеуі керек (пайыздық қатынаста) берілген өлшеммән блогы 2 64 ;
  • RGHR шығаратын көрші мәндер әр байтта бір-бірінен ерекшеленуі керек, әйтпесе криптоаналитиктің тапсырмасы жеңілдетіледі;
  • RGHR процессорлардың ең көп тараған түрлерінде аппараттық және бағдарламалық қамтамасыз етуде іске асыру өте оңай болуы керек, олардың көпшілігі, өзіңіз білетіндей, 32 биттік сыйымдылыққа ие.

Осы принциптерге сүйене отырып, ГОСТ жасаушылар келесі сипаттамаларға ие өте сәтті RGHR құрастырды:

Қайда C 0 =1010101 16 ;

Қайда C 1 =1010104 16 ;

Санның жазылуындағы жазылу оның санау жүйесін білдіреді, сондықтан бұл қадамда қолданылатын тұрақтылар он алтылық санау жүйесінде жазылады.

Екінші өрнек түсініктемелерді қажет етеді, өйткені ГОСТ мәтінінде тағы бір нәрсе берілген: , тұрақтының бірдей мәнімен Cбір . Бірақ әрі қарай стандарт мәтінінде 2 32 -1 модулінің қалған бөлігін алу операциясы бойынша түсініктеме берілген. Ана жердематематикадағы сияқты емес түсініледі. Айырмашылық ГОСТ бойынша (2 32 -1) мод(2 32 –1)=(2 32 –1), 0 емес. Шындығында, бұл формуланың орындалуын жеңілдетеді және оның математикалық дұрыс өрнек жоғарыда келтірілген.

  • кіші бөлік үшін тізбектің қайталану периоды 2 32, үлкені 2 32 -1, бүкіл реттілік үшін кезең 2 32 (2 32 -1), бұл фактінің дәлелі өте қарапайым, сіз өзіңді ал. Екеуінің бірінші формуласы бір нұсқауда жүзеге асырылады, екіншісі, оның көрінетін қиындығына қарамастан, барлық заманауи 32 разрядты процессорлардағы екі нұсқаулықта - бірінші нұсқау әдеттегі қосу модулі 2 32 тасымалдау разрядын сақтай отырып, және екінші нұсқау алынған мәнге тасымалдау битін қосады.

Гамма режиміндегі шифрлау алгоритмінің схемасы 4-суретте көрсетілген, төменде схемаға түсініктемелер берілген:


Сурет 4. Гамма режиміндегі деректерді шифрлау (дешифрлеу) алгоритмі.

0-қадам

Негізгі крипто түрлендіру қадамы үшін бастапқы деректерді анықтайды:

  • Т o(w) - шифрлау (дешифрлеу) процедурасына ұшырайтын еркін көлемдегі ашық (шифрланған) деректер массиві, процедура барысында массив 64 биттік бөліктерге түрлендіріледі;
  • С синхрондау хабары , гамма генераторын инициализациялау үшін қажет 64-биттік деректер элементі;

1-қадам

Синхрондау хабарламасының бастапқы түрлендіруі, оны «рандомизациялау» үшін орындалады, яғни ондағы статистикалық заңдылықтарды жою үшін нәтиже RGHR бастапқы толтыру ретінде пайдаланылады;

2-қадам

Оның қайталанатын алгоритмін жүзеге асыратын RGHR жұмысының бір қадамы. Бұл қадамда үлкені ( С 1) және кіші ( С 0) деректер тізбегінің бөліктері бір-бірінен тәуелсіз құрылады;

3-қадам

Құмар ойындар. RGHR шығаратын келесі 64-биттік элемент 32-3 шифрлау процедурасына ұшырайды, нәтиже бірдей көлемдегі ашық (шифрланған) деректердің келесі блогын шифрлау (шифрын ашу) үшін гамма элементі ретінде пайдаланылады.

4-қадам

Алгоритмнің нәтижесі шифрланған (шифрдан шығарылған) деректер массиві болып табылады.

Төменде шифрлау режимі ретіндегі гамма мүмкіндіктері берілген:

  1. Ашық деректер массивіндегі бірдей блоктар шифрланған кезде әртүрлі шифрлық мәтін блоктарын береді, бұл олардың сәйкестік фактісін жасыруға мүмкіндік береді.
  2. Гамма бит бойынша орындалатындықтан, толық емес деректер блогын шифрлау осы толық емес блоктың биттерін шифрлау ретінде оңай орындалады, ол үшін гамма блогының сәйкес биттері пайдаланылады. Сонымен, 1 биттік толық емес блокты шифрлау үшін стандартқа сәйкес гамма-блоктан ең аз маңызды бит пайдаланылуы керек.
  3. Шифрлауда пайдаланылған синхрондау хабары шифрды шешуде пайдалану үшін қандай да бір жолмен берілуі керек. Бұған келесі жолдармен қол жеткізуге болады:
  • синхрондау хабарламасын шифрланған деректер массивімен бірге сақтау немесе беру, бұл шифрлау кезінде деректер массивінің өлшемін синхрондау хабарламасының өлшеміне, яғни 8 байтқа ұлғайтады;
  • синхрондау хабарламасының алдын ала анықталған мәнін пайдалану немесе белгілі бір заңға сәйкес оны бастапқы және қабылдаушы арқылы синхронды түрде генерациялау, бұл жағдайда берілетін немесе сақталған деректер массивінің өлшемінде өзгеріс болмайды;

Екі әдіс бір-бірін толықтырады және олардың біріншісі, ең көп таралғаны жұмыс істемейтін сирек жағдайларда, екіншісі, экзотикалық түрде қолданылуы мүмкін. Екінші әдіс анағұрлым пайдалы емес, өйткені синхрондау хабарын алдын ала анықталған кілттік ақпараттың берілген жинағында бірден көп емес деректер массиві шифрланбаған жағдайда ғана жасауға болады, бұл жиі болмайды. Сондай-ақ, синхронды хабарды деректер массивінің көзінде және алушысында синхронды түрде жасау әрқашан мүмкін емес, себебі ол жүйедегі бір нәрсеге қатты қосылуды талап етеді. Осылайша, шифрланған хабарламаларды жіберу жүйесінде синхрондау хабарламасы ретінде жіберілген хабарламаның нөмірін пайдалану дұрыс болып көрінетін идея жарамайды, өйткені хабарлама жоғалып кетуі және адресатқа жетпей қалуы мүмкін, бұл жағдайда көздің шифрлау жүйелері және қабылдағыш синхрондалмаған болады. Сондықтан қарастырылып отырған жағдайда шифрланған хабарламамен бірге синхрондау хабарын жіберудің баламасы жоқ.

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

Гамма режимінің тағы бір қызықты мүмкіндігі бар. Бұл режимде деректер массивінің биттері бір-бірінен тәуелсіз шифрланады. Осылайша, шифрленген мәтіннің әрбір биті ашық мәтіннің сәйкес битіне және, әрине, массивтегі биттің реттік нөміріне байланысты: . Бұдан шығатыны, шифрленген мәтіннің бір бөлігін қарама-қарсы мәнге өзгерту ашық мәтіннің битінің қарама-қарсыға ұқсас өзгеруіне әкеледі:

қатысты инверсияны білдіреді тбит мәні ().

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

Кері байланыс арқылы құмар ойындар.

Бұл режим гамма-режимге өте ұқсас және одан тек гамма-элементтердің генерациялану тәсілімен ерекшеленеді – келесі гамма элементі шифрланған деректердің алдыңғы блогының 32-3 циклі бойымен түрлендіру нәтижесінде пайда болады және деректер массивінің бірінші блогын шифрлаңыз, гамма элементі сол синхрондау цикліне сәйкес түрлендіру нәтижесінде құрылады. Бұл блокты байланыстыруға қол жеткізеді - осы режимдегі шифрлық мәтіннің әрбір блогы ашық мәтіннің сәйкес және барлық алдыңғы блоктарына байланысты. Сондықтан бұл режим кейде деп аталады торлы блоктармен масштабтау . Блоктардың байланысқандығы шифрдың қауіпсіздігіне әсер етпейді.

Кері байланыс гамма режимінде декодтау және дешифрлеу алгоритмдерінің схемасы 5-суретте көрсетілген және өзінің қарапайымдылығына байланысты түсініктемелерді қажет етпейді.


Сурет 5. Кері байланыспен гамма режимінде деректерді шифрлау (дешифрлеу) алгоритмі.

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

Ойын ойнау;

Кері байланыспен ойын ойнау;

Қалыпты масштабтау режимінде шифрленген мәтіннің белгілі бір биттерінің өзгеруі тек ашық мәтіннің сәйкес биттеріне әсер еткенде, кері байланыс масштабтау режимінде сурет біршама күрделірек болады. Сәйкес теңдеуден көрініп тұрғандай, жабық цикл гамма режимінде деректер блогының шифрын ашу кезінде ашық деректер блогы сәйкес және алдыңғы шифрланған деректер блоктарына тәуелді болады. Сондықтан, егер шифрланған блокқа бұрмалануларды енгізетін болсақ, онда шифрды шешкеннен кейін ашық деректердің екі блогы бұрмаланады - сәйкес және одан кейінгі, ал бірінші жағдайда бұрмаланулар гаммадағыдай сипатта болады. режимі, ал екінші жағдайда - қарапайым ауыстыру режиміндегідей. Басқаша айтқанда, сәйкес ашық деректер блогында шифрланған деректер блогындағыдай бірдей биттер бұзылады, ал келесі ашық деректер блогында барлық биттер бір-бірінен 1 ықтималдықпен тәуелсіз болады. / 2 өз мәндерін өзгертеді.

Деректер массивіне кірістіру симуляциясын әзірлеу.

Алдыңғы бөлімдерде біз шифрланған деректердің сәйкес анық деректерге бүлінуінің әсерін талқыладық. Қарапайым ауыстыру режимінде шифрды ашу кезінде ашық деректердің сәйкес блогы болжауға болмайтын түрде бұрмаланатынын, ал гамма режимінде блокты шифрдан шығару кезінде өзгерістер болжамды болатынын анықтадық. Жабық циклды масштабтау режимінде екі блок бұрмаланады, біреуі болжамды түрде, екіншісі болжаусыз түрде. Бұл жалған деректерді енгізуден қорғау тұрғысынан гамма режимі нашар, ал қарапайым ауыстыру және кері байланыс гамма режимдері жақсы дегенді білдіре ме? - Ешқандай жағдайда. Бұл жағдайды талдаған кезде шифры шешілген деректер блогындағы күтпеген өзгерістерді дәл осы деректердің артықтығы жағдайында ғана анықтауға болатынын және артықтық дәрежесі неғұрлым жоғары болса, соғұрлым ықтималдығын ескеру қажет. бұрмалануын анықтау. Өте үлкен артықшылық, мысалы, табиғи және жасанды тілдердегі мәтіндер үшін орын алады, бұл жағдайда бұрмалау фактісі сөзсіз дерлік болады. Дегенмен, басқа жағдайларда, мысалы, қысылған цифрланған дыбыстық кескіндерді бұрмалағанда, біз жай ғана құлағымыз қабылдай алатын басқа кескінді аламыз. Бұл жағдайда бұрмалану, әрине, дыбыстың табиғаты туралы априорлы ақпарат болмаса, анықталмай қалады. Бұдан шығатын қорытынды: кейбір шифрлау режимдерінің шифрланған деректерге енгізілген бұрмалануларды анықтау қабілеті негізінен шифрланған деректердің бар-жоғы мен артық болу дәрежесіне байланысты болғандықтан, бұл қабілет сәйкес режимдердің имманентті қасиеті болып табылмайды және оны шифрланған деректерге енгізілген бұрмалауларды анықтауға болады. олардың артықшылығы.

Берілген ықтималдықпен шифрланған деректер массивіндегі бұрмалануларды анықтау мәселесін шешу үшін ГОСТ криптографиялық түрлендірудің қосымша режимін – имитацияланған кірістіру генерациясын қарастырады. Жалған кірістіру - ашық деректер мен құпия кілт ақпаратына тәуелді басқару комбинациясы. Кірістіру мимикаларын пайдалану мақсаты ақпарат массивіндегі барлық кездейсоқ немесе әдейі өзгерістерді анықтау болып табылады. Алдыңғы абзацта сипатталған мәселені шифрланған деректерге имитацияланған кірістіруді қосу арқылы сәтті шешуге болады. Потенциалды шабуылдаушы үшін кілтке ие болмаса, келесі екі тапсырма іс жүзінде шешілмейді:

  • берілген ашық ақпарат массиві үшін кірістіру симуляциясын есептеу;
  • берілген модельдеу кірістіру үшін ашық деректерді таңдау;

Модельдік кірістіруді құру алгоритмінің схемасы 6-суретте көрсетілген.


Сурет 6. Деректер массиві үшін имитацияланған кірістіруді құру алгоритмі.

Шығу кезінде алынған блок бөлігі имитациялау кірістіру ретінде қабылданады, әдетте оның 32 ең аз маңызды биттері. Модельдік кірістіру өлшемін таңдағанда, жалған деректерді сәтті енгізу ықтималдығы 2 –| I | шабуылдаушының қарапайым болжаудан гөрі тиімдірек күш қолдану әдісі болмаса. 32-биттік жалған кірістіруді пайдаланғанда, бұл ықтималдық

ГОСТ криптографиялық алгоритмдерін талқылау.

ГОСТ криптографиялық күші.

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

  • бұл шифрды мүлдем ашуға болады ма;
  • егер солай болса, іс жүзінде қаншалықты қиын;

Мүлдем бұзылмайтын шифрлар абсолютті немесе теориялық қауіпсіз деп аталады. Мұндай шифрлардың болуы Шеннон теоремасымен дәлелденді, бірақ бұл күштің бағасы әрбір хабарламаны шифрлау үшін хабарламаның өзінен кіші емес кілтті пайдалану қажеттілігі болып табылады. Барлық жағдайларда, бірқатар ерекшелерді қоспағанда, бұл баға шамадан тыс, сондықтан іс жүзінде абсолютті қауіпсіздікке ие емес шифрлар қолданылады. Осылайша, ең жиі қолданылатын шифрлау схемалары шектеулі уақыт ішінде, немесе, дәлірек айтқанда, әрқайсысы сандарға қандай да бір операция болып табылатын қадамдардың шектеулі санында шешілуі мүмкін. Олар үшін ең маңыздыоларды ашудың практикалық қиындығын білдіретін практикалық тұрақтылық түсінігі бар. Бұл қиындықтың сандық өлшемі шифрды шешу үшін, яғни берілген мәннен кем емес ықтималдықпен берілген шифрлық мәтінге сәйкес ашық мәтінді анықтау үшін орындалатын қарапайым арифметикалық және логикалық операциялардың саны болуы мүмкін. Сонымен қатар, шифры шешілген деректер массивінен басқа, криптоаналитикте ашық деректер блоктары және сәйкес шифрланған деректер болуы мүмкін немесе тіпті ол таңдаған кез келген ашық деректер үшін сәйкес шифрланған деректерді алу мүмкіндігі болуы мүмкін - тізімде көрсетілген және көптеген басқа анықталмаған жағдайлар, криптоанализдің жекелеген түрлері ажыратылады.

Барлық қазіргі криптожүйелер Кирхгоф принципі бойынша құрастырылған, яғни шифрланған хабарламалардың құпиялылығы кілттің құпиялылығымен анықталады. Бұл криптоаналитикке шифрлау алгоритмінің өзі белгілі болса да, ол сәйкес кілті болмаса, хабарламаның шифрын аша алмайды дегенді білдіреді. Шифрды одан да көп бұзуға мүмкіндік болмаса, жақсы жобаланған деп саналады тиімді жолыБүкіл кілттік кеңістікте толық іздеуге қарағанда, яғни. барлық мүмкін негізгі мәндердің үстінен. ГОСТ бұл принципке сәйкес болуы мүмкін - қарқынды зерттеулер жылдарында оны криптоталдаудың бірде-бір тиімді әдісі ұсынылмаған. Күштілігі жағынан ол бұрынғы американдық шифрлау стандарты DES-тен көп мөлшерде асып түседі.

ГОСТ 256 биттік кілтті пайдаланады және кілт кеңістігінің өлшемі 2256 . Қазіргі уақытта бар немесе жақын арада жүзеге асырылуы күтілетіндердің ешқайсысы электрондық құрылғыбірнеше жүздеген жылдар ішінде кілтті алу мүмкін емес. Бұл мән осы күндері симметриялық криптографиялық алгоритмдер үшін шын мәнінде кілт өлшемі стандарты болды және АҚШ-тың жаңа шифрлау стандарты да оны қолдайды. Бұрынғы американдық стандарт, DES, оның нақты өлшемі 56 бит және кілт кеңістігінің өлшемі бар болғаны 256, қазіргі заманғы есептеу құралдарының мүмкіндіктерін ескере отырып, енді жеткілікті күшті емес. Бұл 1990 жылдардың соңында DES-ке бірнеше сәтті шабуылдар арқылы көрсетілді. Сонымен қатар, DES сезімталдығы анықталды ерекше тәсілдердифференциалды және сызықтық сияқты криптоталдау. Осыған байланысты DES практикалық қызығушылықтан гөрі зерттеу немесе ғылыми қызығушылық болуы мүмкін. 1998 жылы оның криптографиялық әлсіздігі ресми түрде мойындалды - АҚШ Ұлттық стандарттар институты үш еселік DES шифрлауын қолдануды ұсынды. Ал 2001 жылдың соңында АҚШ-тың AES шифрлаудың жаңа стандарты ресми түрде бекітілді, ол әртүрлі принциптерге негізделген және алдыңғысының кемшіліктері жоқ.

ГОСТ архитектурасы бойынша ескертулер.

Отандық шифрлау стандарты бірдей принциптерге құрылған шифрлардың тұтас тобының өкілі екені белгілі. Оның ең танымал «туысы» бұрынғы американдық шифрлау стандарты, DES алгоритмі болып табылады. Бұл шифрлардың барлығы ГОСТ сияқты үш деңгейлі алгоритмдерден тұрады. Негіз әрқашан белгілі бір «негізгі қадам» болып табылады, оның негізінде «негізгі циклдар» ұқсас түрде құрылады, ал шифрлаудың практикалық процедуралары және имитацияны енгізуді дамыту олардың негізінде құрастырылған. Осылайша, осы отбасының шифрларының әрқайсысының ерекшелігі дәл оның негізгі қадамында, дәлірек айтқанда, оның бөлігінде. ГОСТ жататын классикалық блоктық шифрлардың архитектурасы осы мақаланың шеңберінен алыс болса да, бұл туралы бірнеше сөз айту керек.

ГОСТ сияқты шифрлар үшін «крипто-трансформацияның негізгі қадамдары» үшін алгоритмдер бірдей жолмен құрастырылған және бұл архитектура деп аталады. теңдестірілген Feistel желісі (балансталған Feistel желісі) оны алғаш ұсынған адамның атымен аталған. Деректерді бір циклде түрлендіру схемасы, немесе, әдетте, дөңгелек , 7-суретте көрсетілген.


Сурет 7. ГОСТ-қа ұқсас блоктық шифрлар үшін негізгі крипто-трансформация қадамының мазмұны.

Негізгі сатының кірісіне біркелкі өлшемді блок беріледі, оның жоғарғы және төменгі жартысы бір-бірінен бөлек өңделеді. Трансформация кезінде блоктың төменгі жартысы ескінің орнына қойылады, ал үлкені биттік « эксклюзивті немесе » кішінің орнына кейбір функцияны есептеу нәтижесімен. Аргумент ретінде блоктың төменгі жартысын және негізгі ақпараттың элементін қабылдайтын бұл функция ( X), шифрдың мазмұндық бөлігі болып табылады және ол деп аталады шифрлау функциясы . Әртүрлі себептерге байланысты шифрланған блокты бірдей өлшемдегі екі бөлікке бөлу тиімді болып шықты: | Н 1 |=|Н 2 | – дәл осы факт сәулет атауындағы «теңдестірілген» сөзін көрсетеді. Дегенмен шифрлау теңгерімсіз желілер де теңгерімді желілер сияқты жиі болмаса да, мезгіл-мезгіл пайдаланылады. Сонымен қатар, шифрдың беріктігі туралы ойлар негізгі элементтің өлшемі блоктың жартысының өлшемінен кем болмауын талап етеді: ГОСТ-те барлық үш өлшем 32 бит. .

Жоғарыда айтылғандарды ГОСТ алгоритмінің негізгі қадамының сұлбасына қолданатын болсақ, алгоритмнің 1,2,3 блоктары (1-суретті қараңыз) оның шифрлау функциясының есебін анықтайтыны, ал 4 және 5-ші блоктар жиыны айқын болады. кіріс блогының мазмұны мен шифрлау функциясының мәні негізінде негізгі қадамның шығыс блогын қалыптастыру. Құпия кілті бар заманауи блоктық шифрлардың архитектурасы туралы толығырақ классикалық шығармалардан немесе бейімделген түрде менің жұмыстарымнан табуға болады.

Алдыңғы бөлімде біз DES пен ГОСТ-ты төзімділік тұрғысынан салыстырдық, енді біз оларды функционалдық мазмұны мен орындаудың қарапайымдылығы бойынша салыстырамыз. ГОСТ шифрлау циклдерінде негізгі қадам 32 рет қайталанады, DES үшін бұл мән 16. Дегенмен, ГОСТ шифрлау функциясының өзі көптеген ретсіз бит ауыстырулары бар ұқсас DES функциясына қарағанда әлдеқайда қарапайым. Бұл операциялар заманауи мамандандырылған емес процессорларда өте тиімсіз орындалады. ГОСТ мұндай операцияларды қамтымайды, сондықтан бағдарламалық қамтамасыз етуді енгізу үшін әлдеқайда ыңғайлы.

Intel x86 платформасы үшін автор қарастырған DES іске асыруларының ешқайсысы циклдің екі есе қысқарғанына қарамастан, осы мақалада назарларыңызға ұсынылған ГОСТ енгізуінің тіпті жартысына да қол жеткізе алмайды. Жоғарыда айтылғандардың барлығы ГОСТ әзірлеушілері DES-тің оң және теріс аспектілерін ескергенін, сонымен қатар криптоталдаудың ағымдағы және болашақ мүмкіндіктерін шынайырақ бағалағанын көрсетеді. Дегенмен, шифрларды іске асыру өнімділігін салыстыру кезінде DES негізін алу енді өзекті емес. АҚШ-тың жаңа шифрлау стандарты тиімділікпен әлдеқайда жақсы жұмыс істейді - 256 биттегі ГОСТ сияқты бірдей кілт өлшемімен AES одан шамамен 14% жылдам жұмыс істейді - бұл «элементар операциялар» санымен салыстырғанда. Сонымен қатар, ГОСТ-ты параллельдеу іс жүзінде мүмкін емес, ал AES-тің осыған байланысты мүмкіндіктері әлдеқайда көп. Кейбір архитектураларда AES бұл артықшылығы аз болуы мүмкін, ал басқаларында ол көп болуы мүмкін. Осылайша, Intel Pentium процессорында ол 28% жетеді. Толық ақпаратты мына жерден табуға болады.

Ақпарат сапасына қойылатын негізгі талаптар және негізгі көздер.

Барлық кілттер мен ауыстыру кестелері шифрдың максималды күшін қамтамасыз ете бермейді. Әрбір шифрлау алгоритмінің негізгі ақпаратты бағалаудың өз критерийлері бар. Сонымен, DES алгоритмі үшін « әлсіз кілттер ”, онда ашық және шифрланған деректер арасындағы байланыс жеткілікті түрде маскирленбеген және шифр салыстырмалы түрде оңай бұзылады.

Кілттердің және ГОСТ ауыстыру кестелерінің сапа критерийлері туралы сұраққа толық жауап, егер сіз оны кез келген жерден ала алсаңыз, тек алгоритмді әзірлеушілерден. Тиісті деректер ашық баспасөзде жарияланған жоқ. Дегенмен, белгіленген тәртіпке сәйкес уәкілетті ұйымнан алынған негізгі деректер мөрі бар ақпаратты шифрлау үшін пайдаланылуы тиіс. Жанама түрде бұл «бит» үшін негізгі деректерді тексеру әдістерінің болуын көрсетуі мүмкін. Егер ГОСТ-та әлсіз кілттердің болуы даулы мәселе болса, онда әлсіз ауыстыру түйіндерінің болуы күмән тудырмайды. Әлбетте, «тривиальды» алмастыру кестесі, оған сәйкес кез келген мән өздігінен ауыстырылады, соншалықты әлсіз, оны пайдалану кезінде, қандай кілт болса да, шифр жай ғана бұзылады.

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

Кілт

Кілт 0 және 1 мәндерін бірдей ықтималдықпен қабылдайтын статистикалық тәуелсіз биттердің массиві болуы керек. Кейбір нақты кілт мәндерінің «әлсіз» болып шығуы мүмкін екенін толығымен жоққа шығаруға болмайды, яғни егер олар пайдаланылса, шифр берілген қауіпсіздік деңгейін қамтамасыз етпеуі мүмкін. Дегенмен, мүмкін болатын кілттердің жалпы массасындағы мұндай мәндердің үлесі шамалы. Кем дегенде, шифрлауды қарқынды зерттеу белгілі (яғни FAPSI ұсынған) ауыстыру кестелерінің ешқайсысы үшін мұндай кілтті әлі ашқан жоқ. Демек, нақты кездейсоқ сандардың белгілі бір генераторының көмегімен жасалған кілттер бірліктен елеусіз аз мөлшерде ерекшеленетін ықтималдықпен жоғары сапалы болады. Егер кілттер псевдокездейсоқ сандар генераторының көмегімен жасалса, онда пайдаланылатын генератор жоғарыда келтірілген статистикалық сипаттамаларды қамтамасыз етуі керек, сонымен қатар, ГОСТ-тың өзінен кем емес жоғары криптографиялық беріктікке ие болуы керек. Басқаша айтқанда, генератор тудыратын элементтер тізбегінің жетіспейтін мүшелерін анықтау міндеті шифрды бұзудан оңай болмауы керек. Сонымен қатар, статистикалық көрсеткіштері нашар кілттерді қабылдамау үшін әртүрлі статистикалық критерийлерді пайдалануға болады. Тәжірибеде әдетте екі критерий жеткілікті – 0 және 1 мәндері арасындағы негізгі биттердің тең ықтималды таралуын тексеру үшін әдетте Пирсон критерийі («хи квадраты») пайдаланылады, ал негізгі биттердің тәуелсіздігін тексеру үшін сериялық критерий қолданылады. пайдаланылады. Аталмыш критерийлер туралы оқулықтардан немесе математикалық статистика бойынша анықтамалықтардан оқуға болады.

Кілттерді жасаудың ең жақсы тәсілі аппараттық MF сенсорларын пайдалану болады, бірақ бұл экономикалық себептерге байланысты әрқашан қолайлы емес. Кілттік ақпараттың шағын массивін генерациялау кезінде мұндай сенсорды пайдаланудың ақылға қонымды баламасы «электрондық рулетка» әдісімен практикада кеңінен қолданылады, бұл кезде кездейсоқ биттердің келесі генерацияланған бөлігі оператордың белгілі бір пернені басқан сәтіне байланысты болады. компьютер пернетақтасында. Бұл схемада кездейсоқ деректердің көзі компьютерді пайдаланушы, дәлірек айтқанда, оның реакциясының уақытша сипаттамалары болып табылады. Бұл жағдайда бір пернені басу үшін кездейсоқ деректердің бірнеше биттерін ғана жасауға болады, сондықтан негізгі ақпаратты генерациялаудың жалпы жылдамдығы төмен - секундына бірнеше битке дейін. Әлбетте, бұл тәсіл кілттердің үлкен массивтерін алу үшін қолайлы емес.

Негізгі ақпараттың үлкен массивін әзірлеу қажет болған жағдайда, жалған кездейсоқ сандардың әртүрлі бағдарламалық сенсорларын қолдану мүмкін және өте кең таралған. Мұндай сенсор жоғары криптографиялық күшті қажет ететіндіктен, шифрдің гамма-генераторын пайдалану табиғи нәрсе - біз шифр жасаған гамманы қажетті өлшемдегі «бөліктерге» «қиып аламыз», ГОСТ үшін - әрқайсысы 32 байт . Әрине, бұл тәсіл үшін бізге жоғарыда сипатталған электронды рулетка әдісі арқылы алуға болатын «бас кілт» қажет және оның көмегімен гамма-генератор режимінде шифрды пайдалана отырып, біз негізгі ақпарат массивін аламыз. бізге қажет көлем. Сонымен, кілттерді жасаудың бұл екі әдісі - «қолмен» және «алгоритмдік» - бірін-бірі толықтыра отырып, тандемде жұмыс істейді. «Төмен бюджеттік» ақпаратты криптографиялық қорғау жүйелеріндегі кілттерді генерациялау схемалары әрқашан дерлік осы принцип бойынша құрастырылады.

Ауыстыру кестесі

Ауыстыру кестесі ұзақ мерзімді негізгі элемент болып табылады, яғни ол бір кілтке қарағанда әлдеқайда ұзақ мерзімге жарамды. Ол бір жүйедегі барлық шифрлау түйіндеріне ортақ деп есептеледі. криптографиялық қорғау. Ауыстыру кестесінің құпиялылығы бұзылса да, шифрдің беріктігі өте жоғары болып қалады және одан төмендемейді. рұқсат етілген шек. Сондықтан кестені құпия сақтаудың ерекше қажеттілігі жоқ және ГОСТ-тың көптеген коммерциялық қосымшаларында бұл осылай жасалады. Екінші жағынан, ауыстыру кестесі бүкіл шифрдің беріктігін қамтамасыз ететін маңызды элемент болып табылады. Қате кестені таңдау белгілі криптоталдау әдістерімен шифрдың оңай бұзылуына әкелуі мүмкін. Ауыстыру түйіндерін дамыту критерийлері жеті мөрі бар құпия болып табылады және FAPSI оны жақын болашақта жұртшылықпен бөлісуі екіталай. Сайып келгенде, бұл нақты ауыстыру кестесі жақсы немесе жаман екенін айту үшін сізге үлкен жұмыс көлемін жұмсау керек - мыңдаған адам мен машина сағаттары. Таңдалған және пайдаланылғаннан кейін кесте, егер оны қолданумен бірге шифр криптоталдаудың бір немесе басқа түріне осал болып шықса ғана ауыстырылады. Сондықтан шифрдың қарапайым пайдаланушысы үшін ең жақсы таңдау жалпыға қол жетімді болған бірнеше кестелердің бірін алу болып табылады. Мысалы, хэш-функция стандартынан ол да «орталық банкинг» болып табылады; бұл кестелер туралы ақпаратты ашық баспасөзден, тіпті Интернеттен табуға болады, егер сіз жақсы іздесеңіз.

Оңай жолға үйренбегендер үшін төменде сапалы кестелерді алудың жалпы схемасы берілген:

  1. Бір немесе басқа әдісті қолдана отырып, сіз кепілдік берілген сызықтық емес сипаттамалары бар сегіз ауыстыру түйіндерінің жинағын жасайсыз. Мұндай бірнеше әдістер бар, олардың бірі - иілген функциялар деп аталатындарды пайдалану.
  2. Сіз қарапайым «сапа критерийлерінің» орындалуын тексересіз - мысалы, DES ауыстыру түйіндері үшін жарияланған. Міне, осы көрсеткіш бойынша тағы бірнеше жалпы ойлар: Әрбір ауыстыру түйінін төрт логикалық аргументтен төрт логикалық функция арқылы сипаттауға болады. Егер бұл функциялар, ішінде жазылған минималды нысаны(яғни, ең аз мүмкін болатын өрнек ұзындығымен) жеткілікті күрделі емес, мұндай ауыстыру түйіні қабылданбайды. Сонымен қатар, барлық ауыстыру кестесіндегі жеке функциялар бір-бірінен жеткілікті дәрежеде ерекшеленуі керек. Бұл кезеңде көптеген әдейі сапасыз кестелер жойылады.
  3. Таңдаған кестелері бар шифр үшін сәйкес келетін әртүрлі дөңгелек үлгілерді құрастырыңыз әртүрлі түрлерікриптоталдау және сәйкес «профиль» сипаттамаларын өлшеу. Сонымен, сызықтық криптоталдау үшін шифрлау раундының сызықтық статистикалық аналогын құрастырыңыз және «профиль» сипаттамасын – сызықтық емес индексті есептеңіз. Егер ол жеткіліксіз болып шықса, ауыстыру кестесі қабылданбайды.
  4. Соңында, алдыңғы абзацтың нәтижелерін пайдалана отырып, сіз таңдаған кестемен шифрды қарқынды зерттеуге - барлық белгілі әдістермен криптоталдау әрекетіне бағындырыңыз. Бұл кезең ең қиын және көп уақытты қажет етеді. Бірақ егер ол жоғары сапада жасалса, онда сіз таңдаған кестелері бар шифрды тек адамдар ашпайды деп айтуға болады, және, мүмкін, ол үшін өте қиын болады. арнайы қызметтер.

Дегенмен, мұны әлдеқайда оңай жасауға болады. Мәселе мынада, шифрда неғұрлым көп айналым болса, бір раундтың қауіпсіздік сипаттамалары бүкіл шифрдың қауіпсіздігіне соғұрлым аз әсер етеді. ГОСТ-та 32 раунд бар - бұл ұқсас архитектурасы бар барлық дерлік шифрларға қарағанда көп. Сондықтан, көптеген отандық және коммерциялық қолданбалар үшін 0-ден 15-ке дейінгі сандардың тәуелсіз кездейсоқ ауыстырулары ретінде ауыстыру түйіндерін алу жеткілікті. Мұны іс жүзінде жүзеге асыруға болады, мысалы, әрқайсысына бір карта тағайындалған он алты карта палубасын араластыру арқылы жүзеге асыруға болады. көрсетілген диапазон мәндерінің.

Ауыстыру кестесіне қатысты тағы бір қызықты фактіні атап өту керек. 32-3 және 32-R шифрлау циклдерінің қайтымдылығы ауыстыру түйіндерінің 0-ден 15-ке дейінгі сандардың ауысуы болуын талап етпейді. Ауыстыру түйінінде қайталанатын элементтер болса да, бәрі жұмыс істейді және ауыстыру осындай түйінмен анықталады. , қайтымсыз – дегенмен, бұл жағдайда шифрдың күші төмендейді. Неліктен бұл бұл мақалада қарастырылмаған, бірақ фактінің өзін тексеру қиын емес. Мұны істеу үшін түйіндерінде қайталанатын мәндер бар осындай «төмен» ауыстыру кестесін пайдаланып, алдымен шифрлау, содан кейін деректер блогын шифрын ашу жеткілікті.

ГОСТ тақырыбы бойынша вариациялар

Көбінесе деректерді криптографиялық қорғау жүйесінде пайдалану үшін ГОСТ-қа қарағанда жоғарырақ іске асыру жылдамдығы бар алгоритм қажет және мұндай жоғары криптографиялық беріктік қажет емес. Мұндай тапсырмалардың типтік мысалы нақты уақыт режимінде сауда сессияларын басқаратын электрондық биржалық сауда жүйелерінің әртүрлі түрлері болып табылады. Мұнда қолданылатын шифрлау алгоритмдері сеанс кезінде жүйенің операциялық деректерін шифрдан шығаруды (орналастырылған тапсырыстар, жасалған мәмілелер туралы деректер және т.б.) мүмкін етпеу үшін қажет, бірақ одан кейін бұл деректер, әдетте, пайдасыз шабуылдаушылар үшін. Басқаша айтқанда, тек бірнеше сағаттық кепілдік берілген табандылық қажет, бұл сауда сессиясының әдеттегі ұзақтығы. Бұл жағдайда толыққанды ГОСТ қолдану торғайларға зеңбірекпен атқылау болатыны анық.

Осы және ұқсас жағдайларда шифрлау жылдамдығын арттыру үшін қалай әрекет ету керек? Жауап бетінде жатыр - негізгі циклдарда азырақ негізгі қадамдар (дөңгелек) бар шифрдың модификациясын пайдаланыңыз. Шифрлау раундтарының санын қанша рет азайтсақ, өнімділік бірдей мөлшерге артады. Бұл өзгеріске екі жолмен қол жеткізуге болады – кілттің ұзындығын қысқарту және кілттің «іздеу циклдерінің» санын азайту арқылы. Еске салайық, негізгі шифрлау циклдеріндегі негізгі қадамдар саны Н=n м, қайда nкілттегі 32 разрядты элементтердің саны, м- стандартта негізгі элементтерді пайдалану циклдарының саны n=8, м=4. Сіз осы сандардың кез келгенін азайта аласыз, бірақ ең қарапайым нұсқа - оны пайдалану схемасына әсер етпестен кілттің ұзындығын азайту.

Жұмысты тездетудің бағасы шифрдің беріктігінің төмендеуі болатыны анық. Негізгі қиындық мынада: бұл төмендеудің көлемін азды-көпті дәл бағалау өте қиын. Әлбетте, мұны істеудің жалғыз мүмкін жолы - криптографиялық түрлендірудің қысқартылған циклдары бар шифрдың нұсқаларын зерттеу. толық бағдарлама«. Бұл, біріншіден, бұл тек ГОСТ әзірлеушілеріне тиесілі құпия ақпаратты пайдалануды талап ететіні анық, ал екіншіден, бұл өте еңбекқор. Сондықтан біз енді тек жалпы заңдылықтарға сүйене отырып, өте, өте өрескел баға беруге тырысамыз.

Шифрдың «кең» әдістерімен крекингке, яғни «дөрекі күш» шабуылына төзімділігіне келетін болсақ, мұнда бәрі азды-көпті анық: 64 биттік кілт осы түрге қол жетімді болу алдында. шабуылға қарсы, 96 бит және одан жоғары кілті бар шифр (кілтте 32 биттік элементтердің бүтін саны болуы керек екенін есте сақтаңыз) оған қарсы өте сенімді. Шынында да, бірнеше жыл бұрын АҚШ-тың бұрынғы шифрлау стандарты DES бірнеше рет өрескел күшпен бұзылды - алдымен оны ғаламдық Интернет негізінде ұйымдастырылған компьютерлік желі бұзды, содан кейін мамандандырылған, т.б. осы мақсат үшін арнайы жасалған компьютер. ГОСТ стандартты нұсқасы қазіргі заманғы процессорларда бағдарламалық қамтамасыз етуде енгізілгенде DES-тен төрт есе жылдам жұмыс істейді деп есептейік. Сонда 8 раундтық «қысқартылған ГОСТ» DES-тен 16 есе жылдам жұмыс істейді. Сондай-ақ, DES бұзылған уақыттан бері Мур заңы бойынша есептеуіш технологиялардың өнімділігі төрт есе өсті делік. Нәтижесінде, қазір сегіз циклі бар «қысқартылған ГОСТ» үшін бір 64 биттік кілтті тексеру бір DES кілтін тексеруден 64 есе жылдамырақ екенін көреміз. Осылайша, ГОСТ-тың бұл нұсқасының DES-тен артықшылығы қатаң шабуылдың күрделілігі бойынша 2 64–56 = 2 8 = 256-дан 256-ға дейін азаяды. / 64 = 4 есе. Келісіңіз, бұл өте иллюзиялық айырмашылық, дерлік ештеңе жоқ.

ГОСТ-тың әлсіреген модификацияларының криптоталдаудың «интенсивті» әдістеріне төзімділігін бағалау әлдеқайда қиын. Дегенмен, жалпы заңдылықты мұнда да байқауға болады. Өйткені криптоталдаудың қазіргі кездегі ең күшті түрлерінің көпшілігінің «профильдік» сипаттамалары шифрлау айналымдарының санына экспоненциалды түрде тәуелді. Сонымен, сызықтық криптоталдау (LCA) үшін бұл сызықтық сипаттама болады Л :

қайда C және тұрақтылар, R – айналымдар саны. Осыған ұқсас байланыс дифференциалды криптоталдау үшін де бар. Олардың «физикалық мағынасы» бойынша мұндай сипаттамалардың барлығы ықтималдық болып табылады. Әдетте криптоталдау үшін қажетті бастапқы деректердің көлемі және оның күрделілігі мұндай сипаттамаларға кері пропорционалды болады. Бұдан шығатыны, бұл еңбек сыйымдылығының көрсеткіштері негізгі шифрлау қадамдары санының өсуімен экспоненциалды түрде өседі. Сондықтан раундтардың саны бірнеше есе азайған кезде, ең белгілі талдау түрлерінің күрделілігі, өте шамамен және шамамен алғанда, бастапқы сомадан осы қуаттың түбірі ретінде өзгереді. Бұл төзімділіктің өте үлкен төмендеуі.

Екінші жағынан, ГОСТ үлкен қауіпсіздік шегімен жобаланған және бүгінгі күні дифференциалды және сызықты қоса алғанда, криптоанализдің барлық белгілі түрлеріне төзімді. LCA-ға келетін болсақ, бұл оны сәтті жүзеге асыру үшін «табиғатта бар» ға қарағанда, «ашық блок – шифрланған блок» жұптары қажет екенін білдіреді, яғни 2 64-тен көп. Жоғарыда айтылғандарды ескере отырып, бұл 16 раундтық ГОСТ-тың сәтті LCA үшін кем дегенде блоктар немесе 2 35 байт немесе 32 ГБ деректер қажет болады, ал 8 раундтық ГОСТ үшін кемінде блоктар немесе 2 19 қажет болады. байт немесе 0,5 МБ.

Жоғарыда айтылғандардың барлығынан қорытындылар ГОСТ қысқартылған нұсқаларының сипаттамаларын жинақтайтын келесі кестеде келтірілген.

Раундтардың саны Кілт өлшемі, бит Жылдам әрекет индексі Шифрдың ықтимал сипаттамалары (өте дөрекі бағалау)
24 192 1,33 КА-ның көптеген белгілі түрлеріне төзімді немесе қарсылық шегінде болыңыз. Бастапқы деректерге және еңбек сыйымдылығына қойылатын жоғары талаптарға байланысты СА практикалық жүзеге асыру мүмкін емес.
16 128 2 Теориялық тұрғыдан ол криптоанализдің кейбір түрлеріне тұрақсыз, бірақ бастапқы деректерге және еңбек сыйымдылығына қойылатын жоғары талаптарға байланысты олардың практикалық орындалуы көп жағдайда қиын.
12 95 2,67 Ол криптоталдаудың кейбір белгілі түрлеріне төзімді емес, дегенмен ол қысқа уақыт ішінде шағын көлемдегі деректердің (ондаған немесе жүздеген КБ дейін) құпиялығын қамтамасыз ету үшін қолайлы.
8 64 4 Ол криптоанализдің кейбір белгілі түрлеріне төзімді емес, бірақ ол қысқа уақыт ішінде шағын көлемдегі мәліметтердің (ондаған Кбайтқа дейін) құпиялығын қамтамасыз ету үшін қолайлы.

12 және 8 раундтары бар соңғы екі нұсқа уақытында өте шектеулі қорғанысты қамтамасыз ете алады. Оларды пайдалану тек бірнеше сағаттық тәртіпте жабық деректердің қысқа мерзімді құпиялылығы талап етілетін тапсырмаларда ғана негізделген. Осы әлсіз шифрларды қолданудың ықтимал саласы электрондық биржалық сауда жүйелерінің UDP трафигін жабу болып табылады. Бұл жағдайда әрбір деректер пакеті (датаграмма, UDP аббревиатурасының ортасындағы «D») жеке 64 биттік кілтпен, ал кілттің өзі сеанс кілтімен (қолдану аясы екі компьютер арасындағы бір байланыс сеансы болып табылатын кілт) шифрланады. ) және деректермен бірге беріледі.

ГОСТ-тың қысқартылған нұсқаларымен аяқтамас бұрын, мен жоғарыда аталған барлық ойлар өте алыпсатарлық екенін айтайын. Стандарт тек бір, 32 раундты опция үшін төзімділікті қамтамасыз етеді. Шифрдың қысқартылған нұсқаларының бұзылуға төзімділігі жоғарыда көрсетілгендей өзгеретініне ешкім сізге кепілдік бере алмайды. Егер сіз әлі де оларды әзірлемелеріңізде пайдалануды шешсеңіз, кез келген сәтте аяғыңыздың астынан сырғып кетуі мүмкін өте дірілдеген жерге аяқ басқаныңызды есте сақтаңыз. Шифрлау жылдамдығы сіз үшін өте маңызды болғандықтан, жылдамырақ шифрды немесе қуаттырақ компьютерді пайдалануды қарастыру керек шығар? Мұны істеуге тұрарлық тағы бір мәселе - ГОСТ-тың әлсіреген нұсқалары пайдаланылатын ауыстыру қондырғыларының сапасына барынша сезімтал болады.

Қарастырылып отырған мәселенің де кемшілігі бар. Егер шифрлау жылдамдығы маңызды емес болса және күшке қойылатын талаптар өте қатаң болса ше? ГОСТ қарсылығын арттырудың екі жолы бар - біз оларды шартты түрде «кең» және «интенсивті» деп атаймыз. Олардың біріншісі шифрлау раундтарының санының қарапайым өсуінен басқа ештеңе емес. Бұл не үшін қажет болуы мүмкін екені маған толық түсініксіз, өйткені отандық стандарт онсыз қажетті тұрақтылықты қамтамасыз етеді. Алайда, егер сіз паранойядан талап етілетін деңгейден көп зардап шегетін болсаңыз (және барлық «ақпаратты қорғаушылар» одан зардап шегуге міндетті, бұл кәсіби жарамдылықтың шарты, мәселенің ауырлығы ғана :), бұл болады аздап тыныштандыруға көмектеседі. Егер сіз осы KGB шифріне немесе сіз қолданып жатқан ауыстыру кестесіне сенімді болмасаңыз, жай ғана екі, төрт және т.б. раундтардың саны - ісіңіздің ауырлығына қарай көбейтіндіні таңдаңыз. Бұл тәсіл шынымен шифрдың күшін арттыруға мүмкіндік береді - егер бұрын криптоталдау жай ғана мүмкін емес болса, қазір шаршыда мүмкін емес!

Негізгі шифрлау қадамдарының саны мен құрылымын өзгертпестен шифрдың күшін арттыруға бола ма деген сұрақ күрделірек және қызықты. Бір ғажабы, бұл сұрақтың жауабы иә, дегенмен біз тағы да алыпсатарлықтың солқылдақ жерін таптап жатырмыз. Мәселе мынада, ГОСТ-те түрлендірудің негізгі қадамында ол 4-тен 4 битке ауыстырылуы керек, бірақ іс жүзінде (бұл туралы кейінірек айтатын боламыз), бағдарламалық қамтамасыз етудің барлық іске асырулары ауыстыру байтты байтпен орындайды, яғни. 8 8 бит - бұл тиімділік себептері үшін жасалады. Егер біз мұндай ауыстыруды бірден 8 биттік ретінде құрастыратын болсақ, онда біз бір раундтың сипаттамаларын айтарлықтай жақсартамыз. Біріншіден, «диффузия» сипаттамасы немесе «көшкін» көрсеткіші артады - бастапқы деректердің бір биті және/немесе кілт нәтиженің көбірек биттеріне әсер етеді. Екіншіден, үлкенірек алмастыру түйіндері үшін төменгі дифференциалды және сызықтық сипаттамаларды алуға болады, осылайша шифрдың криптоталдаудың ұқсас түрлеріне бейімділігін төмендетеді. Бұл әсіресе төмендетілген ГОСТ циклдеріне қатысты, ал 8 және 12 айналым нұсқалары үшін мұндай қадам жай ғана қажет. Бұл раундтар санының азаюынан олардағы төзімділіктің жоғалуын біршама өтейді. Бұл әдістемені пайдалануды қиындататын нәрсе - мұндай «ұлғайтылған» ауыстыру түйіндерін өзіңіз құрастыруға тура келеді. Сондай-ақ үлкенірек түйіндерді жобалау кішігірім түйіндерге қарағанда айтарлықтай қиынырақ.

Стандартты стандартты емес пайдалану.

Әрине, ГОСТ криптографиялық алгоритмдерінің негізгі мақсаты деректерді шифрлау және имитациядан қорғау болып табылады. Дегенмен, оларды табиғи түрде ақпаратты қорғауға қатысты басқа қолданбалардан табуға болады. Оларға қысқаша тоқталайық:

1. Гамма режимінде шифрлау үшін ГОСТ криптографиялық гамманы – жақсы статистикалық сипаттамалары және жоғары криптографиялық беріктігі бар разрядтар тізбегін генерациялауды қарастырады. Әрі қарай, бұл гамма ашық деректерді өзгерту үшін пайдаланылады, нәтижесінде шифрланған деректер пайда болады. Дегенмен, бұл криптографиялық гамманың мүмкін болатын жалғыз қолданбасы емес. Өйткені, оны әзірлеу алгоритмі тамаша сипаттамалары бар псевдокездейсоқ сандар тізбегі генераторы (PRNG) болып табылады. Әрине, мұндай PRNG пайдалану үшін тек алу статистикалық сипаттамаларқұрылған реттілік және криптографиялық күш қажет емес, өте ақылға қонымды емес - бұл жағдайлар үшін әлдеқайда тиімді генераторлар бар. Бірақ ақпараттық қауіпсіздікке қатысты әртүрлі қолданбалар үшін мұндай көз өте пайдалы болады:

  • Жоғарыда айтылғандай, гамма кілттерді генерациялау үшін «шикізат» ретінде пайдаланылуы мүмкін. Мұны істеу үшін сізге қажетті ұзындықтағы гамма сегментін алу жеткілікті - 32 байт. Осылайша, кілттерді қажетінше жасауға болады және оларды сақтаудың қажеті жоқ - егер мұндай кілт қайтадан қажет болса, оны қайтадан жасау оңай болады. Ол бастапқыда қай пернеде жасалғанын, қандай синхрондау хабарламасы пайдаланылғанын және генерацияланған гамманың қай байтынан кілт басталғанын есте сақтау қажет. Қолданылған кілттен басқа барлық ақпарат құпия емес. Бұл тәсіл бір ғана «бас кілтті» пайдалана отырып, жеткілікті күрделі және тармақталған кілттер жүйесін басқаруды жеңілдетеді.
  • Алдыңғыға ұқсас, гамма парольдерді жасау үшін бастапқы «шикізат» ретінде пайдаланылуы мүмкін. Бұл жерде неліктен оларды генерациялау керек деген сұрақ туындауы мүмкін, қажет болған жағдайда оларды ойлап табу оңай емес пе? Бұл тәсілдің сәтсіздігін компьютерлік желілердегі бірқатар инциденттер анық көрсетті, олардың ең үлкені 1988 жылы қарашада «Моррис құрты» тудырған Интернеттің тәуліктік салдануы болды. Зиянды бағдарламаның компьютерге ену жолдарының бірі құпия сөзді болжау болды: бағдарлама өзінің ішкі тізімінен бірнеше жүздеген құпия сөздерді дәйекті түрде сұрыптау арқылы жүйеге кіруге тырысты және жағдайлардың айтарлықтай бөлігінде ол мұны істей алды. Адамның құпия сөздерді ойлап табудағы қиялы өте нашар болып шықты. Сондықтан қауіпсіздікке тиісті назар аударылатын ұйымдарда қауіпсіздік жүйесінің әкімшісі құпия сөздерді жасайды және пайдаланушыларға таратады. Құпия сөзді генерациялау кілттерді құруға қарағанда біршама күрделірек, өйткені бұл жағдайда «шикі» екілік гамма тек бөліктерге «кесіп» емес, таңбалық пішінге түрлендіру керек. Бұған қоса, алфавиттің барлық таңбалары құпия сөзде бірдей көрінетініне көз жеткізу үшін жеке мәндерді алып тастау қажет болуы мүмкін.
  • Криптографиялық гамманы пайдаланудың тағы бір тәсілі - магниттік тасымалдағыштағы деректерді өшіруге кепілдік беріледі. Тіпті ақпаратты қайта жазу кезінде де факт магниттік ортатиісті сараптама арқылы қалпына келтіруге болатын бұрынғы деректердің іздері бар. Бұл іздерді жою үшін мұндай қайта жазу бірнеше рет орындалуы керек. Егер мұндай процедура кездейсоқ немесе псевдокездейсоқ деректерді пайдаланса, қайта жазылған ақпаратты қалпына келтіруге тырысатын сарапшыларға белгісіз болып қалатын ақпаратты БАҚ-қа қайта жазу қажет болатыны белгілі болды. Гамма-шифр осы жерде пайдалы болады.

2. Криптографиялық гамма ғана емес, сонымен қатар криптографиялық түрлендірудің өзі де шифрлауға тікелей қатысы жоқ қажеттіліктер үшін пайдаланылуы мүмкін:

  • ГОСТ-ты қолданудың осындай нұсқаларының бірі деректер массивтері үшін имитацияланған кірістіруді әзірлеу екенін білеміз. Дегенмен, кез келген блоктық шифр, соның ішінде ГОСТ негізінде әдебиетте MDC деп те аталатын бір жақты хэш-функцияны есептеу схемасын құру өте оңай, ол әртүрлі дереккөздерде мынаны білдіреді: анықтау кодын өзгерту / манипуляция (Ммодификация/ Манипуляция Dэтеекция Cода) немесе хабарлама дайджесті (Мэссе Dигест Cода). Бірінші декодтау әдебиетте әлдеқайда ертерек пайда болды, екіншісі, қысқарақ, менің ойымша, біріншісін есте сақтай алмайтындар ойлап тапты :) - бұл әзіл болды. MDC имитациядан қорғау жүйелерінде имитациялық кірістірудің аналогы ретінде тікелей қолданылуы мүмкін, бірақ ол құпия кілтке тәуелді емес. Сонымен қатар, МДЦ электрондық цифрлық қолтаңба (ЭЦҚ) схемаларында кеңінен қолданылады, өйткені бұл схемалардың көпшілігі бекітілген өлшемдегі деректер блогына қол қоюға ыңғайлы етіп жасалған. Өздеріңіз білетіндей, талқыланған ГОСТ 28147-89 стандартының негізінде Ресей Федерациясының ГОСТ R34.11-94 бір жақты хэш функциясын есептеу стандарты салынған.
  • Кез келген блоктық шифрдың, соның ішінде ГОСТ негізінде оны толығымен салуға болатыны аз белгілі функционалдық диаграммаҚұпия қолтаңба кілті және ашық тексеру комбинациясы бар ЭСҚ. Бірқатар себептерге байланысты бұл схема кең практикалық таралымға ие болмады, бірақ кейбір жағдайларда оны қазіргі уақытта әлемде басым болып табылатын «математикалық» ЭСҚ схемаларына өте тартымды балама ретінде қарастыруға болады.

Әдебиет

Ақпаратты өңдеу жүйелері. Криптографиялық қорғау. Криптографиялық түрлендіру алгоритмі ГОСТ 28147-89. Мемлекет. Com. КСРО стандарттар бойынша, М., 1989. ftp://ftp.wtc-ural.ru/pub/ru.crypt/GOST-28147
Шеннон Клод. Құпия жүйелердің математикалық теориясы. «Ақпарат теориясы және кибернетика бойынша еңбектер» жинағында М., И.Л., 1963, б. 333-369. http://www.enlight.ru/crypto/articles/shannon/shann__i.htm
Ақпаратты өңдеудің федералдық стандартының (FIPS) 197, Жетілдірілген шифрлау стандартының (AES) бекітілгені туралы хабарландыру, Федералдық тіркелім томы. 66, жоқ. 235 / Бейсенбі, 6 желтоқсан 2001 ж. / Хабарламалар, 63369–63371 беттер. http://csrc.nist.gov/encryption/aes/
Фейстель Хорст. Криптография және компьютерлік қауіпсіздік. А.Винокуровтың аудармасы, Хорст Фейстель баспасы. Криптография және компьютерлік құпиялылық, Scientific American, 1973 жылғы мамыр, Т. 228, жоқ. 5, бет. 15-23. http://www.enlight.ru/crypto/articles/feistel/feist_i.htm
Шнайер Брюс. Қолданбалы криптография. 2-ші басылым. Си тіліндегі хаттамалар, алгоритмдер және бастапқы мәтіндер., М., «Триумф», 2002 http://www.ssl.stu.neva.ru/psw/crypto/appl_rus/appl_cryp.htm
Менезес Альфред, ван Оршот Пол, Ванстон Скотт. Қолданбалы криптография бойынша анықтамалық. http://www.cacr.math.uwaterloo.ca/hac/
Винокуров Андрей. Блоктық шифр қалай құрылымдалған? Қолжазба. http://www.enlight.ru/crypto/articles/vinokurov/blcyph_i.htm
Винокуров Андрей. iNFUSED BYTES онлайн электронды журналы үшін криптография мәселелері. http://www.enlight.ru/crypto/articles/ib/ib.htm
Винокуров Андрей, Применко Эдуард. Баяндама мәтіні «О бағдарламалық қамтамасыз етуді енгізуРесей Федерациясы мен АҚШ-тың шифрлау стандарттары», Ақпараттандыру конференциясы, Мәскеу, MEPhI, 28-29 қаңтар 2001 ж. Конференция материалдарында жарияланған.
Ақпараттық технология. Ақпаратты криптографиялық қорғау. Хэш функциясы ГОСТ R34.11-94, РФ Мемстандарты, М., 1994 ж.

Шифрлау алгоритмі ГОСТ 28147-89. Қарапайым ауыстыру әдісі. — WASM.RU мұрағаты

«Тірі тұрғанда өлме, мына дүниеге қара.
Мұндағылардың көбінің жаны өлі – іштей өлі.
Бірақ олар өздерінің жоқтығын білмей жүріп, күледі.
Өлімге асықпа, - деді ол маған.

Ария, «Жоғарыда»

2.1 Feistel желілері.
2.2 Блоктық шифр ГОСТ 28147-89

3.1 Негізгі ақпарат
3.2 Криптовалюта трансформациясының негізгі кезеңі

3.3 Негізгі циклдар:32-З, 32-Р.

4.1 Криптотрансформацияның негізгі қадамын жүзеге асыру
4.2 Алгоритмнің жылдамдығын арттыру
5. Негізгі ақпаратқа қойылатын талаптар
6. Пайдаланылған әдебиеттер тізімі
7. рахмет.

Кіріспе.

Бұл құжат ең қарапайым, бірақ соған қарамастан техникалық сауатты тілде ГОСТ 28147-89 шифрлау алгоритмін жай ғана ауыстыру әдісін сипаттауға тырыстым. Қаншалықты сәтті болдым, оқырман алғашқы алты тармақты оқығаннан кейін өз пікірін айтады.

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

Блоктық шифрларға кіріспе.

Алгоритмді қарастыруды бастамас бұрын, біз шифрдың осы түрінің жасалу тарихымен танысуымыз керек. Алгоритм блоктық шифрлар санатына жатады, оның архитектурасында ақпарат шектеулі блоктар санына бөлінген, соңғысы табиғи түрде толық болмауы мүмкін. Шифрлау процесі шифрлық мәтінді құрайтын толық блоктарда дәл орындалады. Соңғы блок, егер ол толық емес болса, бір нәрсемен толықтырылады (оны қосудың нюанстары туралы төменде айтатын боламын) және толық блоктар сияқты шифрланады. Шифрленген мәтін бойынша мен түсінемін - пайдаланушы шифрлауға жіберген деректердің белгілі бір көлеміне шифрлау функциясының әрекетінің нәтижесі. Басқаша айтқанда, шифрлау мәтіні шифрлаудың соңғы нәтижесі болып табылады.

Блоктық шифрлардың даму тарихы 70-ші жылдардың басымен байланысты, IBM компьютерлік байланыс арналары арқылы деректерді беру кезінде ақпаратты қорғау қажеттілігін түсініп, электронды түрде ақпаратты қорғауға арналған жеке зерттеу бағдарламасын жүзеге асыра бастады. желілер, соның ішінде криптография.

Симметриялық кілт схемасы бар шифрлау жүйелерін зерттеуді бастаған IBM компаниясының зерттеушілері - әзірлеушілер тобын доктор. Хорст Фейстель.

2.1 Feistel желілері

Классикалық әдебиетте Фейстель ұсынған жаңа шифрлау әдісінің архитектурасы «Фейстель архитектурасы» деп аталды, бірақ қазіргі уақытта орыс және шетел әдебиетінде біршама қалыптасқан термин қолданылады - «Фейстель желісі» немесе Фейстелдің желілік жұмысы. Кейіннен осы архитектураға сәйкес «Люцифер» шифры салынды - ол кейінірек жарияланды және жалпы криптографияға қызығушылықтың жаңа толқынын тудырды.

Feistel желісінің архитектурасының идеясы келесідей: кіріс ақпарат ағыны өлшемі бойынша n биттік блоктарға бөлінеді, мұнда n - жұп сан. Әрбір блок екі бөлікке бөлінеді - L және R, содан кейін бұл бөліктер итерациялық блок шифріне беріледі, онда j-ші кезеңнің нәтижесі алдыңғы j-1 кезеңінің нәтижесімен анықталады! Мұны мысалмен көрсетуге болады:

Күріш. бір

Мұндағы, А функциясы блоктық шифрдің негізгі әрекеті болып табылады. Бұл қарапайым әрекет болуы мүмкін, мысалы, XOR операциясы немесе күрделірек нысаны болуы мүмкін, бірнеше қарапайым әрекеттердің тізбегі болуы мүмкін - модульді қосу, солға жылжыту, элементтерді ауыстыру және т.б., жиынтықта бұл қарапайым әрекеттер крипто түрлендірудің негізгі қадамы деп аталатынды құрайды.

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

Feistel желілерінің идеясы толығымен түсінікті болуы үшін суретте көрсетілген қарапайым жағдайды қарастырыңыз. күріш. бір, мұнда A функциясында - «mod 2» («xor») операциялары орындалады, бірақ бұл қарапайымдынеғұрлым күрделі жағдайда, мысалы, ұлттық маңызы бар ақпаратты жасыру, А функциясы күрделірек болуы мүмкін (менің көргенімше, А функциясы өте күрделі болуы мүмкін):

Бастапқы деректер:

L=1110b, R=0101, K=1111b

Шифрлық мәтінді алыңыз

1. (R + K) мод 2 4 = Smod, Smod = 0100b

2. (Smod + L) мод 2 = Sxor, Sxor = 1010b

3. L=R, R=Sxor

L=0101b, R=1010b

Қадамдарымызды түсіндірейік:

1. Бұл әрекет қосу режимі 2 4 . Іс жүзінде мұндай операция қарапайым қосуға дейін қайнатылады, мұнда біз екі санды қосып, 5-ші санға тасымалдауды елемеуіміз керек. Егер санның екілік кескінінің цифрларының үстіне көрсеткішті қойсақ, бесінші разрядтың үстінде төрт көрсеткіш болатындықтан, біздің операциямыздың әрекеттерін көрсететін төмендегі суретке назар аударыңыз:

Күріш. 2

Мұнда мен көрсеткішті көрсеткі арқылы көрсеттім, көріп отырғаныңыздай, нәтиже 10100 болуы керек еді, бірақ mod 2 4 операциясы кезінде тасымалдау еленбейтіндіктен, біз 0100 аламыз.

2. Бұл операция әдебиетте mod 2 деп аталады, ассемблер тілінде ол команда арқылы жүзеге асырылады XOR. Бірақ оның дұрыс атауы мод 2 1. Бұл бірегей операциясыз жылдам, оңай іске асырылатын шифрлау алгоритмін құру және сонымен бірге криптоға төзімді болу мүмкін емес. Бұл операцияның бірегейлігі оның өзіне кері әрекет етуінде! Мысалы, егер А саны В санымен XOR болса, нәтиже C болады, болашақта A санының алдыңғы мәнін алу үшін B және C сандарын бірге XOR қайталау жеткілікті!

Бұл операцияда бізде 1110 және 0100 сандары бар 1010 алдық, 1110-ды қайтару үшін 0100 және 1010 сандарын бірге XOR жасау жеткілікті! Бұл операция туралы толығырақ ақпаратты сайтқа енгізілген мақалада табуға болады. www.wasm.ru, « Бастауыш нұсқаулығыCRC_қатені анықтау алгоритмдері» автор кім Росс Н. Уильямс. Бұл жұмыста параграф бар - « 5. Тасымалдаусыз екілік арифметика«. Дәл осы мақалада операция сипатталған хор!Мен айтамын, өйткені бұл мақалада бұл операция оқырман бұл операцияның қалай жұмыс істейтінін түсініп қана қоймай, оны бастайды. көру, есту және сезіну!

3. Бұл әрекет шифрленген мәтіннен шифрды ашу кезінде бастапқы мәндерді алу үшін қажет.

2.2 Блоктық шифр ГОСТ 28147-89

ГОСТ 28147 - 89 шифрлау алгоритмі Feistel теңдестірілген желі архитектурасында жұмыс істейтін блоктық шифрлар санатына жатады, мұнда таңдалған ақпараттық блоктың екі бөлігі бірдей мөлшерде болады. Алгоритм КГБ сегізінші бөлімінің тереңдігінде әзірленді, қазір FAPSI-ге айналды және 1989 жылы КСРО кезінде Ресей Федерациясының шифрлау стандарты ретінде бекітілді.

Алгоритмнің бұл әдісі жұмыс істеуі үшін ақпаратты өлшемі 64 бит блоктарға бөлу қажет. Келесі негізгі ақпаратты жасаңыз немесе шифрлау жүйесіне енгізіңіз: кілт және ауыстыру кестесі. Шифрлау үшін кілт пен ауыстыру кестесін таңдауға өте байыпты қарау керек, өйткені. бұл сіздің ақпаратыңыздың қауіпсіздігінің негізі болып табылады. Кілтке қандай талаптар қойылатыны және ауыстырулар кестесі туралы «Негізгі ақпаратқа қойылатын талаптар» тармағын қараңыз.

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

теориялық минимум.

3.1 Негізгі ақпарат

Жоғарыда айтқанымдай, деректерді шифрлауға келесілер белсенді қатысады:

3.1.1. Кілт - әрқайсысы 32 биттен тұратын сегіз элементтің тізбегі. Әрі қарай K таңбасын белгілейміз, ал оның құрамдас элементтері – k1,k2,k3,k4,k5,k6,k7,k8.

3.1.2 Ауыстыру кестесі бұдан әрі Hij деп аталатын сегіз жолдан және он алты бағаннан тұратын матрица болып табылады. i жолы мен j бағанының қиылысындағы әрбір элемент 4 бит алады.

3.2 Криптотрансформацияның негізгі қадамы

Шифрлау процесіндегі негізгі әрекет крипто түрлендірудің негізгі қадамы болып табылады. Бұл белгілі бір алгоритм арқылы деректерді шифрлау әрекетінен басқа ештеңе емес, тек әзірлеушілер енгізген атау тым ауыр болды.

Шифрлауды бастамас бұрын блок әрқайсысы 32 бит болатын L және R екі бөлікке бөлінеді. Негізгі элемент таңдалады және содан кейін ғана блоктың осы екі бөлігі беріледі, негізгі элемент негізгі қадам функциясына ауыстыру кестесі болып табылады, негізгі қадамның нәтижесі негізгі циклдің бір итерациясы болып табылады, ол келесі бөлімде талқыланады. келесі абзац. Негізгі қадам келесі қадамдардан тұрады:

  1. R блогының қосу бөлігі K негізгі элементіне қосылады mod 2 32 . Мен жоғарыда ұқсас операцияны сипаттадым, мұнда бірдей нәрсе тек көрсеткіш «4» емес, «32» - бұл операцияның нәтижесі болашақта Smod арқылы белгіленеді.
  2. Бұрын алынған Smod нәтижесін s7,s6,s5,s4,s3,s2,s1,s0 төрт разрядтық элементтерге бөліп, оны ауыстыру функциясына береміз. Ауыстыру келесідей: Smod - si элементі таңдалды, басынан біз ең төменгі элементтен бастаймыз және оны si элементінің мәнімен көрсетілген i - жол және баған үшін ауыстыру кестесіндегі мәнмен ауыстырамыз. . Біз s i +1 элементіне өтеміз және солай істейміз және соңғы элементтің мәнін ауыстырғанша жалғастырамыз Smod - бұл операцияның нәтижесі S Simple деп белгіленеді.
  3. Бұл операцияда Ssimple мәні циклді түрде солға 11 битке жылжытылады және біз Srol аламыз.
  4. Біз L блогының екінші бөлігін таңдаймыз және Srol көмегімен мод 2 қосамыз, нәтижесінде бізде Sxor бар.
  5. Бұл кезеңде блоктың L бөлігі R бөлігінің мәніне тең болады, ал R бөлігі өз кезегінде Sxor нәтижесімен инициализацияланады және бұл негізгі қадам функциясын аяқтайды!

3.3 Негізгі циклдар: “32-Z”, “32-R”.

Ақпаратты шифрлау үшін оны көлемі 64 бит болатын блоктарға бөлу қажет, әрине соңғы блок 64 биттен аз болуы мүмкін. Бұл факт осы «қарапайым ауыстыру» әдісінің Ахиллес өкшесі болып табылады. Оны 64 битке қосу шифрлық мәтіннің криптографиялық күшін арттырудың өте маңызды міндеті болғандықтан, бұл сезімтал орын, егер ол ақпарат массивінде болса, бірақ ол болмауы мүмкін (мысалы, өлшемі 512 байт файл). !), үлкен жауапкершілікпен қарау керек!

Ақпаратты блоктарға бөлгеннен кейін кілтті элементтерге бөлу керек:

К = k1,k2,k3,k4,k5,k6,k7,k8

Шифрлаудың өзі негізгі циклдар деп аталатындарды пайдаланудан тұрады. Бұл, өз кезегінде, негізгі крипто-трансформация қадамдарының n -ші санын қамтиды.

Негізгі циклдар, қалай айту керек, белгіленеді: n - м. Мұндағы n – базалық циклдегі негізгі крипто-трансформация қадамдарының саны, ал m – базалық циклдің «түрі», яғни. бұл не туралы, деректерді «Z» шифрлау немесе «R» шифрлау.

Негізгі шифрлау циклі 32–3 32 негізгі криптографиялық қадамнан тұрады. N блогы және К кілтінің элементі қадамның әрекеттерін жүзеге асыратын функцияға беріледі және бірінші қадам k1-де, екіншісі нәтиженің үстінде k2 элементімен және т.б. келесі схема бойынша:

k1,k2,k3,k4,k5,k6,k7,k8,k1,k2,k3,k4,k5,k6,k7,k8,k1,k2,k3,k4,k5,k6,k7,k8k8,k7, k6,k5,k4,k3,k2,k1

32-P шифрын шешу процесі ұқсас жолмен жүреді, бірақ негізгі элементтер кері тәртіпте беріледі:

k1,k2,k3,k4,k5,k6,k7,k8,k8,k7,k6,k5,k4,k3,k2,k1,k8,k7,k6,k5,k4,k3,k2,k1,k8, k7,k6,k5,k4,k3,k2,k1

Жаттығу.

4.1 Криптотрансформацияның негізгі қадамын жүзеге асыру

Ақпаратты шифрлау теориясымен танысқаннан кейін шифрлаудың іс жүзінде қалай жұмыс істейтінін көретін кез келді.

Бастапқы деректер:

N = 0102030405060708h ақпарат блогын алайық, мұнда L және R бөліктері тең:

L = 01020304h, R = 05060708h, кілтті алыңыз:

K=' ретінде28 zw37 q839 7342ui23 8e2t вквм2 ewp1' (бұл ASCII кодтары, он алтылық кескінді көру үшін бұл файлды көру режимінде Total Commander бағдарламасында " түймесін басу арқылы ашуға болады. F3», содан кейін « пернесі 3 «). Бұл кілтте элемент мәндері болады:

k1 = 'as28', k2 = 'zw37', k3 = 'q839', k4 = '7342'

k5 = 'ui23', k6 = '8e2t', k7 = 'wqm2', k8 = 'ewp1'

Сондай-ақ келесі ауыстыру кестесін алыңыз:

Күріш. 3

Мұнда жолдар 0-ден 7-ге дейін, бағандар 0-ден F-ге дейін нөмірленеді.

Ескерту:Барлық ақпарат, соның ішінде ауыстыру кестесі бар кілт, алгоритмді қарастыру үшін мысал ретінде алынған!

«Бастапқы деректерді» пайдалана отырып, криптографиялық түрлендірудің негізгі қадамының әрекетінің нәтижесін алу керек.

1. R = 05060708h бөлігін және k1 = 'as28' негізгі элементін таңдаңыз, он алтылық пішінде негізгі элемент келесідей болады: 61733238h. Енді біз 2 32 қосындысының әрекетін орындаймыз:

Күріш. 4

Суретте көріп отырғанымыздай, біз қызыл түспен белгіленген және көрсеткіші бар 33 битке тасымалдамадық. 32 «. Егер бізде R және негізгі элементтің басқа мәндері болса, бұл орын алуы мүмкін, содан кейін біз оны елемейміз және болашақта тек сары түспен белгіленген биттерді пайдаланамыз.

Мен мұндай операцияны ассемблер командасымен орындаймын қосу:

; eax=R, ebx='as28'

Бұл операцияның нәтижесі Smod = 66793940h

2. Қазір ең күрделі операция, бірақ мұқият қарасаңыз, бұл енді бастапқыда көрінетіндей қорқынышты емес. Смодты келесі пішінде елестетейік:

Күріш. бес

Мен суреттегі Smod элементтерін елестетуге тырыстым, бірақ бәрібір түсіндіремін:

s0 = 0, s1 = 4, s2 = 9, т.б.

Енді s0 ең төменгі элементінен бастап ауыстыруды орындаймыз. Абзацты еске түсіру 3.2 Криптотрансформацияның негізгі қадамы» i – жол, s i – баған, біз нөлдік жол мен нөлдік бағандағы мәнді іздейміз:

6-сурет

Сондықтан Smod-тың ағымдағы мәні 6679394 емес 0 h, және 6679394 5 h.

Біз s1 ауыстыруды жалғастырамыз, яғни. төрт. Бірінші жолды және төртінші бағанды ​​пайдалану (s1= 4!). Суретке назар аударайық:

Күріш. 7

Енді мән 667939 емес, Smod болып табылады 4 5 сағ, 667939 2 5 сағ. Менің ойымша, қазір ауыстыру алгоритмі оқырманға түсінікті және Ssimple-дің соңғы нәтижесінен кейін келесі мәнге ие болады деп айта аламын - 11e10325h.

Мұны ассемблер пәрмендері түрінде жүзеге асырудың ең оңай жолы туралы мен кеңейтілген кесте туралы сөйлескеннен кейін келесі абзацта сөйлесемін.

  1. Біз алынған Ssimple мәнін 11 бит солға жылжытуымыз керек.

Күріш. 8

Көріп отырғаныңыздай, бұл әрекет өте қарапайым және ассемблер тілінің бір пәрменімен орындалады - орамжәне осы Srol операциясының нәтижесі - 0819288Fh.

4. Енді ол Srol мәні бар XOR ақпарат блогының L бөлігі болып қалады. Мен w2k sp4 калькуляторын алып, Sxor = 091b2b8bh аламын.

5. Бұл әрекет түпкілікті болып табылады және біз жай ғана R бөлігін L бөлігінің мәнін тағайындаймыз, тазалаймыз және L бөлігін Sxor мәнімен инициализациялаймыз.

Соңғы нәтиже:

L=091b2b8bh, R=01020304h

4.2 Алгоритмнің жылдамдығын арттыру

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

Мен өзімнің бағдарламама шифрлау алгоритмін енгізген кезде келесі әрекеттерді орындадым:

1. eax регистрінде L блогының таңдалған бөлігі, ал edx ішіндегі R.

2. esi регистріне кеңейтілген кілт мекенжайымен инициализацияланған, бұл туралы төменде толығырақ.

3. Мен кеңейтілген ауыстыру кестесінің мекенжайының мәнін ebx регистріне тағайындадым, бұл туралы толығырақ төменде

4. Жағдайға байланысты 32 - Z немесе 32 - R негізгі циклінің функциясына 1,2, 3 тармақтар ақпаратын берді.

Егер сіз тармақтағы негізгі элементтерді жеткізу схемасын қарасаңыз Негізгі циклдар: “32-Z”, “32-R””, содан кейін 32 - Z негізгі циклінің кілтін келесідей көрсетуге болады:

K 32-Z =

'as28','zw37','q839','7342','ui23','8e2t','wqm2','ewp1',

'as28','zw37','q839','7342','ui23','8e2t','wqm2','ewp1',

'ewp1','wqm2','8e2t','ui23','7342','q839','zw37','as28'

Анау. басынан бастап жүріңіз k1,k2,k3,k4,k5,k6,k7,k8 - 28', 'zw37', 'q839', '7342', 'ui23', '8e2t', 'wqm2', 'ewp1'Бұл реттілік үш рет қайталанады. Содан кейін элементтер кері ретпен жүреді, яғни: k8,k7,k6,k5,k4,k3,k2,k1 - 'ewp1', 'wqm2', '8e2t', 'ui23', '7342', 'q839', 'zw37', 'as28'.

Мен массивтің элементтерін 32 - Z-де қызмет ету ретімен алдын ала орналастырдым. Осылайша мен әр пернеге қажетті жадты ұлғайттым, бірақ өзімді қажет емес кейбір ойлау процестерінен құтқардым және жұмыс жылдамдығын арттырдым. жадқа қол жеткізу уақытын қысқарту арқылы алгоритм! Мұнда мен тек 32 - Z кілтін сипаттадым, 32 - R циклі үшін мен дәл солай жасадым, бірақ элементтерді жеткізудің басқа схемасын қолдандым, мен оны тармақта сипаттадым « Негізгі циклдар: «32-Z», «32-R».

Жоғарыда уәде еткенімдей, ауыстыру функциясының орындалуын сипаттайтын уақыт келді. Мен бұрын сипаттай алмадым, өйткені. бұл жаңа тұжырымдаманы - кеңейтілген ауыстыру кестесін енгізуді талап етеді. Мен саған оның не екенін түсіндіре алмаймын. Оның орнына мен оны көрсетемін, ал сіз оның не екенін өзіңіз тұжырымдай аласыз ба - кеңейтілген ауыстыру кестесі?

Сонымен, кеңейтілген ауыстыру кестесінің не екенін түсіну үшін бізге ауыстыру кестесі қажет, мысалы, мен суретте көрсетілгенді аламын. 3.

Мысалы, бізге 66793940h санын ауыстыру керек болды. Мен оны келесі формада ұсынамын:

Күріш. тоғыз

Енді s1,s0 элементтерін алсақ, яғни. төмен байт болса, онда ауыстыру функциясының нәтижесі 25 сағ болады! «Мен тармақта келтірген Андрей Винокуровтың мақаласын оқығаннан кейін Пайдаланылған әдебиеттер тізімі”, сіз екі жолды алсаңыз, ассемблер пәрмені арқылы ауыстыру элементтерін жылдам табуға мүмкіндік беретін массив алуға болатынын көресіз. xlat.Олар мұны басқа жолмен, тезірек мүмкін дейді, бірақ Андрей Винокуров ГОСТ енгізудің жылдам алгоритмдерін зерттеуге шамамен төрт жыл жұмсады! Менің ойымша, доңғалақ бұрыннан бар болса, оны қайта ойлап табудың қажеті жоқ.

Сонымен, массив туралы:

Алғашқы екі жолды, нөлді және біріншіні алып, 256 байт массивін жасайық. Енді бір мүмкіндікті байқаймыз, егер сізге 00сағ түрлендіру қажет болса, онда нәтиже 75сағ болады (3-сурет негізінде) – бұл мәнді массивке 00h ығысуына қойыңыз. Біз 01h мәнін аламыз, ауыстыру функциясының нәтижесі 79h, оны массивке 01 ығысуымен және т.б. 0FFh дейін қоямыз, бұл бізге 0FCh береді, біз оны 0FFh ығысуында массивке қоямыз. Осылайша, біз жолдардың бірінші тобына ауыстырудың кеңейтілген кестесін алдық: бірінші және нөл. Бірақ әлі де үш топ бар: екінші 2 бет, 3 бет, үшінші бет 4, 5 бет, төртінші 6 бет, 7 бет. Осы үш топпен біз бірінші топтағы сияқты әрекет етеміз. Нәтиже – кеңейтілген ауыстыру кестесі!

Енді сіз ауыстыруды орындайтын алгоритмді жүзеге асыра аласыз. Ол үшін біз Андрей Винокуров өз парақшасында жариялаған бастапқы кодтарды аламыз, қараңыз « Библиография».

lea ebx, кеңейтілген_кесте_қарапайым

mov eax,[алмастыру үшін нөмірді қойыңыз]

ebx,100h қосыңыз;келесі екі түйінге өтіңіз

sub ebx,300h ; сондықтан болашақта ebx кестені көрсетеді

Енді тағы бір мүмкіндік, біз алдыңғы әрекеттерді ауыстырып қана қоймай, санды солға 8 битке жылжыттық! Санды тағы 3 бит солға жылжытуымыз керек:

және біз rol eax,11 операциясының нәтижесін аламыз!

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

Негізгі ақпаратқа қойылатын талаптар.

Андрей Винокуровтың мақаласында айтылғандай, кілт екі критерий бойынша таңдалады:

1 және 0 мәндері арасындағы биттердің тең ықтималды таралуының критерийі. Әдетте, биттердің тең ықтималды таралуының критерийі Пирсон критерийі («хи-квадрат») болып табылады.

Бұл кілтті білдіреді, негізінен кез келген сан мүмкін. Яғни, кілттің келесі битін қалыптастыру кезінде оны бір немесе нөлге инициализациялау ықтималдығы 50/50!

Кілттің әрқайсысы 32 биттен тұратын сегіз элементі бар екенін ескеріңіз, сондықтан кілтте барлығы 32 * 8 = 256 бит және мүмкін болатын пернелердің саны 2 256! Бұл сізге әсер етпейді ме?

қатар критерийлері.

Егер мен тармақта берген кілтімізге қарасақ » 4.1 Криптотрансформацияның негізгі қадамын жүзеге асыру», содан кейін келесі жазбаның дұрыс екенін байқайсыз:

Күріш. 10

Бір сөйлемде k 1 мәні k 2-де емес, кілттің кез келген басқа элементінде қайталанбауы керек.

Яғни, біз шифрлау алгоритмін қарастыру ретінде таңдаған кілт жоғарыдағы екі критерийге жақсы сәйкес келеді.

Енді ауыстыру кестесін таңдау туралы:

Енді дұрыс ауыстыру кестесін қалай таңдау керектігі туралы сөйлесейік. Ауыстыру кестелерін таңдаудың негізгі талабы - әрқайсысының өлшемі 4 бит болатын элементтердің «қайталанбау» құбылысы. Жоғарыда көргеніңіздей, ауыстыру кестесінің әрбір жолы 0h, 1h, 2h, 3h, ..., 0fh мәндерінен тұрады. Сонымен, негізгі талап - әрбір жолда 0h, 1h, 2h, ... , 0fh мәндері және әрбір осындай мән бір данада болуы. Мысалы, реттілік:

1 2 3 4 5 6 7 8 9 A B C D E F

Бұл талапқа толығымен сәйкес келеді, бірақ бәрібір! Мұндай тізбекті жол ретінде таңдау ұсынылмайды. Өйткені, егер сіз осындай жолға сүйенетін функцияның кірісіне мән берсеңіз, онда шығыста бірдей мән аласыз! Сенбейсіз бе? Содан кейін 332DA43Fh санын және ауыстыру кестесі сияқты сегіз жолды алыңыз. Ауыстыру операциясын орындаңыз, мен сізді сендіремін, шығыс 332DA43Fh саны болады! Яғни, сіз операцияның кірісіне бергеніңізбен бірдей! Бұл шифрлаудағы жақсы форманың белгісі емес, солай ма?

Бұл бір талап болды, келесі критерий мынаны айтады - шығыс блогының әрбір биті кіріс блогының әрбір битінен статистикалық тәуелсіз болуы керек!

Бұл қалай оңай көрінеді? Міне, мысалы, жоғарыдағы саннан s0 = 0Fh, 01111b элементін таңдадық. Енді бірінші битті бір немесе нөлге ауыстыру ықтималдығы 0,5! Екінші, үшінші және төртінші биттерді, әрқайсысы бөлек қарастырылатын, бір немесе нөлге ауыстыру ықтималдығы да 0,5. s1 = 0Eh таңдағанда, біз нөлдік бит болу ықтималдығын ауыстырамыз, бұл «0» , нөлге немесе бір тым тең - 0,5! Осылайша, бұл критерий бойынша s0, s1 элементтерінің нөлдік разрядтарын ауыстыру арасында заңдылық жоқ! Иә, сіз бірлерді ауыстыра аласыз, бірақ нөлдерді де қоюға болады.

Осы критерий бойынша кестені бағалау үшін мына формула бойынша есептелетін корреляция коэффициенттерінің кестесін құруға болады:

Егер p = 1 болса, онда шығыстағы j битінің мәні кірістегі биттердің кез келген комбинациясы үшін кірістегі i битінің мәніне тең;

Егер p = -1 болса, онда j битінің шығысындағы мәні әрқашан кіріс i битіне кері болады;

Егер p = 0 болса, j шығыс биті i кіріс битінің кез келген тіркелген мәні үшін бірдей ықтималдықпен 0 және 1 мәндерін қабылдайды.

Бір жолды мысалға алайық:

Оны құрамдас бөліктерге бөлейік:

Жоғарыдағы формула арқылы бір коэффициентті есептейміз. Мұның қалай жасалатынын түсінуді жеңілдету үшін мен толығырақ түсіндіремін:

Кірістегі 0-ші санның (0) 0-ші битін, шығысында (1) 0-ші санның 0-ші битін алып, 0 XOR 1 = 1 операциясын орындаймыз.

Кірістегі 1-ші санның (1) 0-ші битін, шығысында (1) 1-ші санның 0-ші битін алып, 1 XOR 1 = 0 операциясын орындаймыз.

Кірістегі 2-ші санның (0) 0-ші битін, шығысында (0) 2-ші санның 0-ші битін алып, 0 XOR 0 = 0 операциясын орындаймыз.

Кірістегі 3-ші санның (1) 0-ші битін, шығысындағы (1) 3-ші санның 0-ші битін алып, 1 XOR 1 = 0 операциясын орындаймыз.

Осындай реттілікпен XOR операцияларын ретімен орындағаннан кейін біз барлық нөлдік емес мәндердің санын есептейміз, 6 мәнін аламыз. Осыдан P 00 = 1-(6/2 4-1) = 0,25. Сонымен, 16 жағдайдың 4-інде шығыстағы 0 разрядының мәні кірістегі 0 разрядының мәніне тең екені анықталды;

Соңғы коэффициенттер кестесі:

Корреляциялық коэффициенттер кестесінен көрініп тұрғандай, кірістегі 3 бит шығыстағы 0 битке қатысты 16 жағдайдың 14-інде инверттелген, бұл 87,5% Бұл қалыпты шифрлау жүйелері үшін енді қабылданбайды. Өзгеріс үшін тағы бір мысал келтірейік:

Коэффициенттер кестесі келесідей болады (қайта есептеуге жалқау емес)

Бұл кестеде бәрі нашар - топтың 1 және 2 биттері өзгеріссіз қалады! Криптоаналитиктің айналатын орны бар Осы талаптардың барлығын ескере отырып, қарапайым санау («басынан») көрсетілген теорияға сәйкес келетін ауыстыру кестелерін тапты (бүгінгі күні - 1276 комбинация) Олардың кейбіреулері:

09 0D 03 0E-06 02 05 08-0A 07 00 04-0C 01 0F 0B

00 05 0A 07-03 08 0F 0C-0E 0B 04 09-0D 06 01 02

06 0B 0F 00-0C 01 02 0D-08 07 09 04-05 0A 03 0E

04 0E 00 09-0B 01 0F 06-03 0D 07 0A-0C 02 08 05

04 02 08 0E-05 0F 03 09-0B 01 0D 07-0A 0C 06 00

07 03 09 0C-08 00 06 0F-0E 04 01 0A-0D 0B 02 05

06 0F 03 08-0D 04 0A 01-09 02 05 0C-00 0B 0E 07

0C 06 08 01-03 09 07 0E-0B 05 0F 02-04 0A 00 0D

04 0B 09 06-0E 01 00 0F-0A 05 03 0C-0D 02 07 08

00 0E 0F 01-07 08 09 06-04 0B 0A 05-03 0D 0C 02

0F 09 01 07-04 0A 08 06-0E 00 02 0C-05 03 0B 0D

0A 03 04 01-05 0C 0B 0E-08 06 0F 0D-07 09 00 02

0B 06 0F 01-04 0A 08 05-00 0D 0C 02-07 09 03 0E

0C 03 02 08-0D 06 0B 05-07 09 04 0F-0A 00 01 0E

02 0B 0F 04-09 00 06 0D-05 0E 01 08-0C 07 0A 03

Пайдаланылған әдебиеттер тізімі.

  1. Андрей Винокуровтың мақаласы:

ГОСТ 28147-89 шифрлау алгоритмі, оны қолдану және енгізу

Intel x86 платформалы компьютерлеріне арналған.

Мұнда шифрлау алгоритмін жүзеге асырудың бастапқы кодтары берілген.

  1. Хорст Фейстелдің мақаласы:

Криптография және компьютерлік қауіпсіздік.

(алдыңғы мақаланың мекенжайы бойынша табуға болады)

  1. Росс Н. Уильямс:

CRC қателерін анықтау алгоритмдеріне арналған қарапайым нұсқаулық

Сайтта жарияланған www.болдым.kk.

рахмет.

Мен www.wasm.ru форумының барлық келушілеріне алғысымды білдіргім келеді. Бірақ мен қазір SteelRat деген атпен танымал ChS-ге алғысымды білдіргім келеді, ол маған ешқашан түсінбейтін нәрселерді түсінуге көмектесті, сонымен қатар абзацты жазуға көмектесті: « Негізгі ақпаратқа қойылатын талаптар», осы абзацтың негізгі бөлігін өзі жазған. ҚарМТУ қызметкеріне де алғысым шексіз. А.Н. Туполев Аникин Игорь Вячеславович және Крис Касперскийді айтпау күнә болар еді, ол үшін ол, ал Володя / wasm.ru оның нұсқаулары үшін. О, мен одан аламын. Мен сондай-ақ кейбір математикалық джунглиді ойыма әкелгені үшін Sega-Zero / Callipso-ны атап өткім келеді.

Менің сізге айтқым келгені осы шығар.

Мен осы мақалаға қатысты сын немесе сұрақтарға немесе жай кеңестерге ризамын. Менің байланыс деректерім: [электрондық пошта қорғалған], ICQ - 337310594.

Құрметпен, Evil`s Interrupt.

P.S.: Мен бұл мақаламен ешкімнен асып түсуге тырыспадым. Бұл ГОСТ оқуды жеңілдету мақсатында жазылған, егер сізде қиындықтар болса, бұл мен кінәлі дегенді білдірмейді. Парасатты болыңыз және шыдамды болыңыз, сізге барлық жақсылық!

). Сонымен қатар, ресейлік БАҚ-та және ресейлік пайдаланушылардың блогтарында осы алгоритм туралы мақалалар саны артып келеді: әртүрлі сенімділік дәрежесі бар ресейлік стандартқа шабуылдардың нәтижелерін қамтитын және оның операциялық сипаттамалары туралы пікірлерді қамтитын. Осы жазбалардың авторлары (және, демек, оқырмандар) көбінесе отандық шифрлау алгоритмі ескірген, баяу және кілт ұзындығы ұқсас шетелдік шифрлау алгоритмдеріне қарағанда оны шабуылдарға әлдеқайда сезімтал ететін осалдықтары бар деген әсер қалдырады. Осы жазбалар сериясымен біз ресейлік стандарттың қазіргі жағдайы туралы қол жетімді түрде айтқымыз келеді. Бірінші бөлімде халықаралық криптографиялық қоғамдастыққа белгілі ГОСТ 28147-89 бойынша барлық шабуылдар, оның күшін ағымдағы бағалау қарастырылады. Болашақ басылымдарда біз стандарттың қасиеттерін тиімді іске асыруды құру мүмкіндігі тұрғысынан егжей-тегжейлі қарастырамыз.

Николас Куртуа - «ұлы және қорқынышты»

Ресейлік блоктық шифрлау стандарты () бойынша жұмыстардың тұтас сериясының авторы Николас Куртуаның қызметі туралы әңгімеден бастайық.

2010 жылдың қазан айында МЕМСТ 28147-89 алгоритмін ISO/IEC 18033-3 халықаралық стандартына енгізуді қарастыру процесі басталды. 2011 жылдың мамырында атақты криптограф Николас Куртуаның мақаласы ePrint электронды мұрағатында пайда болды, ол әлемдік криптографиялық қоғамдастықтың оған деген өте екіұшты көзқарасымен ерекшеленеді. Куртуаның жарияланымдары қарастырылып отырған объектінің қандай да бір жаңа қасиеттерін ашпайтын, бірақ сенсациялық талаппен оның нақты қасиеттері туралы қате пікірлердің біліксіз ортада таралуын тудыратын тұжырымдамаларды манипуляциялаудың қайғылы мысалы болып табылады.

Алгебралық әдіс

Куртуаның пайымдауы криптоталдау әдістерінің екі класына негізделген: алгебралық әдістер және дифференциалдық әдістер. Әдістердің бірінші класын қарастырыңыз.

Жеңілдетілген түрде алгебралық криптоталдау әдісін әрбір шешімі криптоаналитиктің мақсатына сәйкес келетін үлкен теңдеулер жүйесін құрастыру және шешу ретінде сипаттауға болады (мысалы, егер жүйе бір жұпты пайдаланып құрастырылса). ашық мәтіннен және шифрленген мәтіннен тұрады, онда бұл жүйенің барлық шешімдері осы ашық мәтін берілген шифрланғанға түрлендірілетін кілттерге сәйкес келеді). Яғни блоктық шифрды криптоталдау мәселесінде криптоанализдің алгебралық әдісінің мәні көпмүшелік теңдеулер жүйесін шешу нәтижесінде кілттің табылуында. Негізгі қиындық - белгілі бір шифрдың сипаттамаларын ескере отырып, мүмкіндігінше қарапайым жүйені құра білу, оны шешу процесі мүмкіндігінше аз уақытты алады. Мұнда әрбір нақты талданатын шифрдың ерекшеліктері шешуші рөл атқарады.

Куртуа пайдаланған алгебралық әдісті төмендегідей қысқаша сипаттауға болады. Бірінші кезеңде ГОСТ 28147-89 мұндай қасиеттері шифрлау түрлендіру бөлігі үшін бекітілген нүктенің болуы, сондай-ақ шағылысатын нүкте деп аталады. Осы қасиеттердің арқасында жеткілікті үлкен санашық шифрленген мәтіндердің жұптары, түрлендірулерді 32 емес, тек 8 айналымда қарастыруға мүмкіндік беретін бірнеше жұп таңдалды. Екінші кезең бірінші кезеңде алынған 8-дөңгелек түрлендірулердің нәтижелері бойынша белгісіздер шешуші разрядтар болып табылатын сызықтық емес теңдеулер жүйесі құрылатынынан тұрады. Содан кейін бұл жүйе шешіледі (бұл қарапайым естіледі, бірақ шын мәнінде әдістің ең көп уақытты қажет ететін бөлігі, өйткені жүйе сызықты емес теңдеулерден тұрады).

Жоғарыда айтылғандай, жұмыстың ешбір жерінде кілтті анықтаудың екінші және негізгі кезеңінің күрделілігін егжей-тегжейлі сипаттау және талдау жоқ. Бұл жалпы әдістің күрделілігін анықтайтын екінші кезеңнің күрделілігі. Оның орнына автор атышулы «фактілерді» келтіреді, соның негізінде еңбек сыйымдылығына баға береді. Бұл «фактілер» эксперимент нәтижелеріне негізделген дейді. Куртуа шығармасынан алынған «фактілерді» талдау отандық авторлардың еңбектерінде тұтастай берілген. Бұл жұмыстың авторлары Куртуаның ешқандай дәлелсіз келтірген көптеген «фактілері» эксперименталды тексеру кезінде жалған болып шыққанын атап өтеді. Мақала авторлары әрі қарай жүріп, Куртуа үшін дәлелді алгоритмдер мен бағалаулар арқылы екінші кезеңнің күрделілігін талдады. Күрделіліктің нәтижесінде алынған бағалаулар ұсынылған шабуылдың толық қолданылмайтындығын көрсетеді. Отандық авторлардан басқа, Куртуаның оның әдістерін бағалау мен негіздеудегі үлкен проблемалары, мысалы, жұмыста атап өтілді.

Дифференциалдық әдіс

Екінші Куртуа әдісін қарастырайық, ол дифференциалды криптоанализге негізделген.

Дифференциалды криптоталдаудың жалпы әдісі криптографиялық примитивтерде қолданылатын сызықты емес салыстырулардың қасиеттерін пайдалануға негізделген, кілт мәнінің осы салыстырулардың кіріс және шығыс мәндерінің жұптары арасындағы айырмашылықтар арасындағы тәуелділіктерге әсерімен байланысты. . Блоктық шифрды криптографиялық талдаудың дифференциалды әдісінің негізгі идеясын сипаттайық. Әдетте блоктық шифрлар кіріс деректерін бірнеше дөңгелек түрлендірулерді пайдалана отырып, кезең-кезеңімен түрлендіреді және әрбір дөңгелек түрлендіру бүкіл кілтті пайдаланбайды, тек кейбірін ғана пайдаланады. Түпнұсқадан соңғы раундтың жоқтығымен ерекшеленетін сәл «қысқартылған» шифрды қарастырайық. Осындай «қысқартылған» шифрды пайдалана отырып, кейбір тұрақты позицияларында ерекшеленетін екі ашық мәтінді шифрлау нәтижесінде жоғары ықтималдықпен кейбір тұрақты позицияларда да ерекшеленетін шифрлық мәтіндер алынатыны анықталды деп есептейік. Бұл сипат «қысқартылған» шифрдың кейбір ашық мәтіндер мен олардың шифрлау нәтижелері арасында тәуелділік қалдыру ықтималдығы жоғары екенін көрсетеді. Осы көрінетін кемшілігі бар кілттің бір бөлігін қалпына келтіру үшін алдын ала таңдалған ашық мәтіндерді қалпына келтіргіміз келетін кілтпен («таңдалған ашық мәтіндік шабуыл» деп аталатын) шифрлау мүмкіндігі болуы қажет. «Кілтті ашу» процедурасының басында бірдей бекітілген позицияларда ерекшеленетін ашық мәтін жұптарының белгілі бір саны кездейсоқ жасалады. Барлық мәтіндер «толық» шифр арқылы шифрланады. Алынған шифрленген мәтін жұптары келесідей соңғы айналымда қолданылатын негізгі биттерді қалпына келтіру үшін пайдаланылады. Кілттің қажетті биттерінің кездейсоқ таңдалған кейбір мәндерінің көмегімен түрлендіру барлық шифрлық мәтіндерге, соңғы айналымның кері түрлендіруіне қолданылады. Шын мәнінде, егер біз кілт биттерінің қажетті мәнін болжасақ, біз «қысқартылған» шифрдың нәтижесін аламыз, ал егер біз таппаған болсақ, біз шын мәнінде «деректерді одан да көп шифрлаймыз», бұл тек азайтады. жоғарыда аталған блоктар арасындағы тәуелділік (кейбір бекітілген позициялардағы айырмашылық). Басқаша айтқанда, егер шифрланған мәтіндерді «қосымша өңдеу» нәтижелерінің арасында бізге белгілі тұрақты позицияларда ерекшеленетін жұптар өте көп болса, бұл біз қажетті кілт биттерін болжағанымызды білдіреді. Әйтпесе, мұндай жұптар айтарлықтай аз. Әрбір раундта кілттің бір бөлігі ғана пайдаланылғандықтан, ізделетін биттер (яғни соңғы раундта пайдаланылған кілттің биттері) толық кілттегі биттер сияқты көп емес және оларды жай ғана қайталауға болады: жоғарыдағы қадамдарды қайталау. Бұл жағдайда біз міндетті түрде бір күні дұрыс мәнге сүрінеміз.

Жоғарыда келтірілген сипаттамадан шығатыны, дифференциалды талдау әдісіндегі ең маңыздысы - бұл ашық мәтіндер мен шифрленген мәтіндердегі дәл сол позициялардың сандары, олардың айырмашылықтары негізгі биттерді қалпына келтіруде шешуші рөл атқарады. Бұл позициялардың іргелі болуы, сондай-ақ олардың сандарының жиынтығы кез келген блоктық шифрде қолданылатын сызықты емес түрлендірулердің қасиеттеріне тікелей байланысты (әдетте, барлық «сызықты емес» деп аталатындар шоғырланған. S-қораптары немесе ауыстыру түйіндері).

Куртуа дифференциалдық әдістің сәл өзгертілген нұсқасын қолданады. Бірден біз Куртуа қазіргіден және ISO-да ұсынылғандардан ерекшеленетін S-жәшіктерге талдау жүргізетінін атап өтеміз. Қағазда раундтардың аз саны үшін дифференциалдық сипаттамалар (блоктар ерекшеленуі керек сандар) берілген. Көбірек раундтар үшін статистиканы ұзарту негіздемесі әдетте «фактілерге» негізделген. Куртуа, өз өкілеттігінен басқа ешнәрсесіз, S-қораптарын өзгерту оның шабуылына қарсы ГОСТ 28147-89 қарсылығына әсер етпейтіні туралы дәлелсіз болжамды білдіреді (бір уақытта, белгісіз себептермен, 1-ші жұмыс істейтін S-қораптары ISO/IEC 18033-3 стандартына қосымшаның жобасы қаралған жоқ). Мақала авторлары жүргізген талдау көрсеткендей, Куртуаның сенімге қатысты негізсіз «фактілерін» алып, ГОСТ 28147-89-ды басқа S-қораптарымен талдасақ та, шабуыл қайтадан толық тізімнен артық емес болып шығады.

Орыс стандартының тұрақтылығының төмендеуі туралы барлық мәлімдемелердің негізсіздігін егжей-тегжейлі негіздей отырып, Куртуаның жұмыстарын егжей-тегжейлі талдау [ , ] жылы жүргізілді.

Сонымен қатар, тіпті Куртуаның өзі есептеулердегі дәлдіктің абсолютті жоқтығын мойындайды! Келесі слайд Куртуаның FSE 2012 қысқаша хабарландыру бөліміндегі презентациясынан алынды.

Айта кетейік, Куртуа еңбектері шетелдік зерттеушілер тарапынан да бірнеше рет сынға ұшыраған болатын. Мысалы, оның XSL әдісін қолдана отырып, AES блоктық шифр алгоритміне шабуыл жасау бойынша жұмысында ресейлік стандартты талдау жұмысындағыдай іргелі кемшіліктер болды: еңбек қарқындылығының бағалауларының көпшілігі мәтінде толығымен негізсіз және дәлелсіз көрінеді - егжей-тегжейлі сын табуға болады, мысалы, жұмыс . Сонымен қатар, Куртуаның өзі өз жұмысын ірі криптографиялық конференцияларда және рецензияланатын журналдарда жариялаудан кеңінен бас тартуды мойындайды, бұл оған көбінесе қысқа хабарландырулар бөлімінде сөйлеу мүмкіндігін қалдырады. Мұны, мысалы, жұмыстың 3-бөлімінен оқуға болады. Міне, Куртуаның өзі келтірген және оның жұмысына қатысты кейбір дәйексөздер:

  • «Менің ойымша, Asiacrypt аудиториясы оны қызықты деп санамайды». Asiacrypt 2011 шолушысы.
  • «... үлкен, үлкен, үлкен мәселе бар: қағаздың негізгі үлесі болып табылатын бұл шабуыл FSE'11-де жарияланған (бұл тіпті ең жақсы қағаз болды) ...». Crypto Reviewer 2011.

Осылайша, халықаралық криптографиялық қоғамдастықтың кәсіби бөлігі Куртуа жұмысының сапасына, айталық, кейбір ресейлік мамандардың AES-ті 2100-ге бұзуға қабілеттілігі туралы мәлімдемелерінен немесе екі беттегі келесі «дәлелдерден» кем емес күмәнмен қарайды. П және NP күрделілік кластарының теңсіздігі туралы ешқандай дәйекті есептеулермен расталмаған гипотеза.

Исобе және Динур-Дункелман-Шамир шабуылдары

Isobe шабуылдарының () және Динур-Данкелман-Шамирдің (бұдан әрі: DDSH шабуылы) () жалпы идеясы ашық мәтіндердің белгілі бір (кілтке тәуелді) тар жиынтығы үшін осы жиынтықта трансформация эквивалентін құру болып табылады. шифрлауды түрлендіруге қарағанда қарапайым құрылым. Isobe әдісі жағдайында бұл F 8 -1 (Ауыстыру(F 8 (z))) = z, мұндағы z = F 16 (x), F 8 () болатындай 64-биттік x блоктарының жинағы. x) және F 16 ( x) сәйкесінше ГОСТ 28147-89 шифрлаудың алғашқы 8 және алғашқы 16 айналымы болып табылады, Swap арқылы - 64 байт сөздің жартыларын ауыстыру операциясы. Ашық мәтін осы жинаққа енген кезде, ГОСТ 28147-89 толық 32 раундтық түрлендіру нәтижесі шабуыл авторы пайдаланатын 16 раундтық нәтижемен сәйкес келеді. DDS әдісі жағдайында бұл F 8 (x) = x (F 8 түрлендірудің бекітілген нүктесі) болатын x жиыны. Осы жиынтықтағы кез келген ашық мәтін үшін ГОСТ 28147-89 түрлендіру оның соңғы 8 раундымен бірдей жұмыс істейді, бұл талдауды жеңілдетеді.

Isobe шабуылының күрделілігі - 2224 шифрлау операциясы, LDS шабуылы - 2192. Дегенмен, Isobe және LDS шабуылдары біздің алгоритмді қолдану шарттарына жаңа шектеулер енгізеді дегенге қатысты барлық сұрақтар шабуылдардың әрқайсысын жүзеге асыру үшін қажетті материалдың көлеміне қойылатын талаптарды бағалау арқылы жойылады: Isobe. әдіс 232 жұп ашық мәтінді және шифрлық мәтінді қажет етеді, ал DDSH - 2 әдісі үшін 64 . Кілтті өзгертпей материалдың мұндай көлемін өңдеу блоктың ұзындығы 64 болатын кез келген блоктық шифр үшін априорлы түрде қолайсыз: туған күн мәселесін ескере отырып, көлемі 2 32 материал бойынша (мысалы, бұзушыға қараңыз). кілтті анықтамай-ақ шифрленген мәтіндерден ашық мәтіндер туралы белгілі бір қорытынды жасай білу. Бір кілтте алынған 264 жұп ашық және шифрленген мәтіндердің болуы қарсыласқа бұл кілтті мүлде білмей-ақ шифрлау және дешифрлеу операцияларын орындауға мүмкіндік береді. Бұл таза комбинаторлық қасиетке байланысты: бұл жағдайда қарсыласта шифрлаудың барлық түрлендіру кестесі бар. Бұл жағдай кез келген ақылға қонымды операциялық талаптарға сәйкес мүлдем қабылданбайды. Мысалы, CryptoPro CSP бар техникалық шектеу 4 МБ шифрланған (кілт түрлендірусіз) материал көлемі үшін (қараңыз). Осылайша, мұндай өлшемдегі материалға кілтті пайдалануға қатаң тыйым салу блок ұзындығы 64 бит болатын кез келген блоктық шифрға тән, сондықтан Isobe және DDSH шабуылдары қолдану аймағын тарылтпайды. максималды мүмкін қауіпсіздікті сақтай отырып, ГОСТ 28147-89 алгоритмі 2 256.

Әрине, зерттеушілер (Исобе және Динур-Данкелман-Шамир) ГОСТ 28147-89 алгоритмінің кейбір қасиеттері алгоритмді жасаушылар ескермеген талдау жолдарын табуға мүмкіндік беретінін атап өткен жөн. . Тиімді іске асыруды құру тапсырмасын айтарлықтай жеңілдететін кілттік кестенің қарапайым нысаны сонымен қатар кілттер мен ашық мәтіндердің кейбір сирек жағдайлары үшін алгоритм орындайтын түрлендірулердің қарапайым сипаттамаларын құруға мүмкіндік береді.

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

Орташа еңбек шығынын бағалауда белгілі бір немқұрайлылық Дінұр, Дәнкелман, Шамир еңбектерінде де бар екенін байқаймыз. Осылайша, шабуылды құру кезінде келесі тармаққа назар аударылмайды: кілттердің айтарлықтай үлесі үшін F 8 (x) = x болатын ашық мәтіндер жинағы бос: 8 түрлендіру раунды жай ғана болмауы мүмкін. бекітілген нүктелері бар. Бекітілген нүктелердің болуы ауыстыру түйіндерін таңдауға да байланысты. Осылайша, шабуыл белгілі бір ауыстыру түйіндері мен кілттеріне ғана қолданылады.

Сондай-ақ ГОСТ 28147-89 бойынша шабуылмен тағы бір жұмысты атап өткен жөн. 2012 жылдың ақпан айында халықаралық криптографиялық бірлестіктің ePrint электронды мұрағатында мақаланың жаңартылған нұсқасы (2011 жылдың қарашасында) пайда болды, онда ГОСТ 28147-89 жаңа шабуылы бар. Ұсынылған шабуылдың сипаттамалары келесідей: материалдың көлемі 232 (Isobe сияқты), ал еңбек қарқындылығы 2192 (DDSh сияқты). Осылайша, бұл шабуыл материал көлемі бойынша рекордтық LDS шабуылын 2 64-тен 2 32-ге дейін жақсартты. Авторлар материалдың күрделілігі мен көлемін негіздей отырып, барлық есептеулерді шынайы түрде ұсынғанын бөлек атап өтеміз. 9 айдан кейін жоғарыда аталған есептеулерде іргелі қате табылды, ал 2012 жылдың қараша айынан бастап электронды мұрағаттағы мақаланың жаңартылған нұсқасында отандық алгоритмге қатысты нәтижелер жоқ.

Шабуылдаушы кілттер туралы «бірдеңе» біледі деген болжамға негізделген шабуылдар

Соңында, әдебиетте (мысалы, және қараңыз) байланысқан кілттері бар модель деп аталатын модельде ГОСТ 28147-89 шабуылдарына арналған бірқатар жұмыстар бар екенін атап өтеміз. Бұл модель негізінен зиянкестің қажетті кілтті пайдаланып ашық және шифрланған мәтіндердің жұптарына ғана емес, сонымен қатар келесіден айырмашылығы бар (сонымен бірге белгісіз) кілттердің көмегімен алынған ашық және шифрланған мәтіндердің жұптарына талдауға қол жеткізу мүмкіндігі туралы болжамды қамтиды. ізделетін белгілі регулярлы жол (мысалы, бекітілген разряд позицияларында). Бұл модельде шынымен де ГОСТ 28147-89 бойынша қызықты нәтижелерге қол жеткізуге болады, дегенмен, бұл модельде, мысалы, ең көп қолданылатыны туралы кем емес күшті нәтижелерге қол жеткізуге болады. заманауи желілержалпы пайдалану AES стандарты (мысалы, қараңыз). Мұндай шабуылдарды жүзеге асыру шарттары белгілі бір хаттамада шифр пайдаланылған кезде туындайтынын ескеріңіз. Айта кету керек, мұндай нәтижелер криптографиялық түрлендірулердің қасиеттерін зерттеу тұрғысынан сөзсіз академиялық қызығушылық тудырса да, іс жүзінде тәжірибеде қолданылмайды. Мысалы, Ресейдің ФСБ сертификатталған барлық криптографиялық ақпаратты қорғау құралдары шифрлау кілттерін құру схемаларына қойылатын ең қатаң талаптарды орындайды (мысалы, қараңыз). 18 байланыстырылған кілттер мен ашық және шифрлы мәтіннің 2 10 жұп блоктары болған кезде жүргізілген талдау нәтижелерінде көрсетілгендей, толық ашудың күрделілігі жеке кілт, табыс ықтималдығы 1-10 -4, шын мәнінде 2 26. Дегенмен, негізгі материалды әзірлеуге жоғарыда көрсетілген талаптар орындалса, мұндай кілттерді табу ықтималдығы 2 -4352, яғни бірінші әрекетте құпия кілтті болжауға тырысқаннан 24096 есе аз.

Байланыстырылған кілттері бар модельге қатысты жұмыстарға сондай-ақ 2010 жылы ресейлік электронды басылымдарда көп шу шығарған жұмыс кіреді, олар сезімдерді қуу процесінде материалды мұқият тексеру әдетінен зардап шекпейді. Онда ұсынылған нәтижелер ешқандай қатаң негіздемемен расталмады, бірақ бірнеше секунд ішінде әлсіз ноутбукте Ресей Федерациясының мемлекеттік стандартын бұзу мүмкіндігі туралы қатты мәлімдемелерден тұрады - тұтастай алғанда мақала ең жақсы дәстүрлерде жазылған. Николя Куртуа. Бірақ, оқырманға толықтай түсінікті, ғылыми жарияланымның негізгі қағидаларымен, мақаланың негізсіздігімен азды-көпті таныс болғанына қарамастан, бұл жұмыстан кейін Рудский жан-жақты мазмұнды қамтитын егжей-тегжейлі және егжей-тегжейлі мәтін жазған деп орыс жұртшылығын сендіру үшін дәл болды. осы кемшілікті талдау. «Нөлдік уақыт пен жады бар толық ГОСТ блоктық шифрға кілтті қалпына келтіру шабуылы» жұмысының нөлдік практикалық маңыздылығы туралы» мақаласы әдістемеде келтірілген әдістің орташа күрделілігінің орташа күрделіліктен кем емес екендігін негіздейді. толық санаудың күрделілігі.

Құрғақ қалдық: іс жүзінде қарсылық қандай?

Қорытындылай келе, біз халықаралық криптографиялық қауымдастыққа белгілі ГОСТ 28147-89 бойынша қатаң сипатталған және негізделген шабуылдардың барлық нәтижелері туралы деректерді қамтитын кестені ұсынамыз. Күрделілігі ГОСТ 28147-89 алгоритмінің шифрлау операцияларында, ал жады мен материал алгоритм блоктарында (64 бит = 8 байт) көрсетілгенін ескеріңіз.

Шабуыл Еңбек қарқындылығы Жад Қажетті материал
Изобе 2 224 2 64 2 32
Динур-Дункелман-Шамир, ФП, 2DMitM 2 192 2 36 2 64
Динур-Дюнкельман-Шамир, Ф.П., есте сақтау қабілеті төмен 2 204 2 19 2 64
2 224 2 36 2 32
Динур-Дункелман-Шамир, Рефлексия, 2DMitM 2 236 2 19 2 32
өрескел күш 2 256 1 4
Ғалам пайда болғаннан бергі наносекундтар саны 2 89

ГОСТ 28147-89 алгоритмінің қауіпсіздік саласындағы жеткілікті ауқымды зерттеу цикліне қарамастан, қазіргі уақытта 64 блок ұзындығының ілеспе операциялық талаптарымен қол жеткізуге болатын бірде-бір шабуыл белгілі емес. бит. Шифрдың параметрлерінен (кілттің бит ұзындығы, блоктың бит ұзындығы) туындайтын бір кілтте өңдеуге болатын материал көлеміне шектеулер кез келген операцияны орындау үшін қажетті ең аз мөлшерден айтарлықтай қатаңырақ. қазіргі уақытта белгілі шабуылдар. Сондықтан, қолданыстағы операциялық талаптар орындалған кезде, осы уақытқа дейін ұсынылған ГОСТ 28147-89 криптоталдау әдістерінің ешқайсысы толық іздеуден аз еңбекқорлығы бар кілтті анықтауға мүмкіндік бермейді.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
рахмет. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!