Algorithm ya ubadilishaji wa kriptografia kulingana na GOST 28147 89. Kiwango cha usimbaji data wa ndani. Mahitaji muhimu ya habari

Neno maarufu "utendaji wa processor" ni lengo, kigezo kilichohesabiwa ambacho hupimwa kwa flops. Walakini, watu wengi huipima kwa gigahertz, kwa ujinga wakiamini kuwa wao ni kitu kimoja. Hakuna mtu anayejua neno "utendaji wa kanuni", na nitaelezea mara moja kwa nini.

Sababu ni kwamba nilikuja nayo hivi karibuni na sijamwambia mtu yeyote kuhusu hilo bado. Walakini, utendakazi wa msimbo, kama utendakazi wa kichakataji, una sifa zenye lengo zinazoweza kupimwa. Nakala hii inahusu utendakazi wa msimbo unaotekelezwa na msingi wa processor.

Utendaji wa kanuni hupimwaje? Kwa kuwa nilikuwa wa kwanza kuzungumza juu ya hili, kwa haki ya mgunduzi nitaipima katika vitengo vya RTT;).

Sasa kwa umakini. Katika wasindikaji wa kisasa, mabadiliko kuu ni shughuli kwenye nambari 32-bit; kila kitu kingine ni, kwa kiasi kikubwa, kigeni. Kwa hiyo, tutazingatia jambo kuu - shughuli na nambari 32-bit. Je, unafikiri ni shughuli ngapi za 32-bit msingi wa kichakataji wa kisasa unaweza kufanya kwa wakati mmoja?

Mwanafunzi atajibu - moja, mwalimu wake atafikiri na kusema kwamba kuna nne, mtaalamu - kwamba kuna shughuli kumi na mbili tu hadi sasa.

Kwa hivyo, msimbo wa programu unaopakia vitengo vyote vya utekelezaji wa processor wakati huo huo katika muda wote wa utekelezaji wa msimbo utakuwa na utendaji wa RTTs 12. Upeo zaidi! Kuwa waaminifu, sijawahi kuandika kanuni kama hiyo hapo awali, lakini katika makala hii nitajaribu kufanya jitihada.

Nitathibitisha kwamba nambari na utekelezaji wa wakati mmoja wa shughuli kumi na mbili za 32-bit inawezekana

Msimbo wa programu unaotumia kitendaji kimoja katika msingi wa kichakataji kwa kawaida utakuwa na utendakazi wa 1 RTT. Mipango inayotengenezwa na watunzi wa lugha wa kiwango cha juu na wakalimani wa mashine pepe wanaweza kujivunia utendakazi wa msimbo kama huo. Hakuna haja ya kudhani kuwa kiashiria cha mzigo wa processor, ambacho kinaweza kuonekana kwenye meneja wa kazi wa OS, kinaweza kutumika kama kigezo cha lengo la ufanisi wa msimbo. Mzigo wa msingi wa processor unaweza kuwa 100%, lakini msimbo wa programu utatumia kitengo kimoja cha utekelezaji ndani yake (utendaji 1 RTT). Katika kesi hii, kwa mzigo wa 100%, msingi wa processor utafanya kazi saa 1/12 ya utendaji wake wa juu. Kwa maneno mengine, wakati Kidhibiti Kazi cha Windows kinaonyesha mzigo wa juu wa processor, utendaji wake halisi unaweza kutofautiana kutoka 1 hadi 12 RTT. Ikiwa utaona mzigo wa 100% kwenye msingi wowote wa processor kwenye dirisha la utendaji, ni makosa kudhani kwamba watendaji wote wanafanya kazi katika msingi huu, sio kabisa!

Kigezo pekee cha kutathmini kwa njia isiyo ya moja kwa moja utendakazi wa msingi wa processor katika utendakazi wa juu zaidi inaweza kuwa matumizi yake ya nguvu na, kama matokeo, kelele ya baridi. Sasa, ikiwa baridi ni kelele, basi ndiyo, mzigo umekwenda kwa kiwango cha juu. Walakini, ni wakati wa kumaliza na dhana za jumla na kuendelea na mazoezi makali.

Utekelezaji wa jadi wa GOST 28147-89

Mimi si mtaalamu katika uwanja wa usalama wa habari, lakini bado ninafahamu mada ya usimbaji fiche. Nilitiwa moyo kujifunza usimbaji fiche wa mkondo linganifu hasa kwa mazungumzo na mtaalamu wa kuandika fiche ambaye ninamheshimu sana. Na, baada ya kuchukua mada hii, nilijaribu kuifanya vizuri, na sio vizuri tu, lakini pia haraka, nikifanya idadi kubwa ya shughuli kwa kila kitengo cha wakati. Kwa maneno mengine, nilikabiliwa na kazi ya kuandika msimbo wa programu na thamani ya juu ya RTT.

Mabadiliko ya kriptografia kulingana na GOST 28147-89 hutumiwa kwa usimbaji fiche wa habari katika njia za mawasiliano na kwenye anatoa za diski.

Hivi sasa, utekelezaji wa programu ya GOST hii kwenye RON ya processor ya kati hutumiwa sana. Katika mbinu zinazojulikana za kutekeleza GOST, taarifa zote za siri (funguo za encryption, vitalu vya uingizwaji) ziko kwenye RAM. Hii inapunguza kuegemea kwa usimbuaji, kwani kuwa na dampo la RAM kunaweza kufichua kabisa mambo yote ya siri ya ubadilishaji wa crypto. Kwa kuongeza, njia hiyo ina vikwazo vya utendaji kutokana na eneo la vitu kuu vya uongofu wa crypto katika OP na upakiaji usio kamili wa vitengo vya utendaji vya ALU. Wasindikaji wa kisasa, kutekeleza utaratibu wa crypto kwa kutumia njia inayojulikana, wanaweza kutoa kasi ya encryption ya megabytes 40-60 kwa pili. Na ikiwa tunaelewa hadi mwisho, sababu ya utendaji mdogo na usalama dhaifu wa uongofu wa crypto ni utekelezaji wa programu ya kuzuia badala. Kwa maelezo yake katika GOST, ona Mtini. 1.

Kwa mujibu wa kifungu cha 1.2 cha GOST, kizuizi hiki kinatekeleza vibali vya tetrad (bits nne) kwa neno la 32-bit, lakini usanifu wa processor ya x86/64 na mfumo wake wa maelekezo hauna uwezo wa kuendesha tetradi kwa ufanisi.

Kwa utekelezaji wa programu ya block ya uingizwaji, meza maalum katika RAM hutumiwa, iliyoandaliwa katika hatua ya kuanzishwa kwa cryptofunction. Majedwali haya yanachanganya nodi za uingizwaji za tetradi zilizo karibu katika meza 8 × 8-bit, hivyo kuweka meza nne za 256-byte kwenye RAM.

Katika utekelezaji wa hali ya juu zaidi, majedwali haya yana ukubwa wa ka 1024 (maneno 256 ya ka nne). Hii ilifanywa ili kutekeleza katika jedwali mabadiliko ya ziada ya mzunguko kwa nafasi 11 za neno la 32-bit lililopatikana kama matokeo ya uingizwaji (operesheni inayofuata ya algorithm ya ubadilishaji kulingana na GOST). Mfano wa utekelezaji wa GOST kwa kutumia njia hii umeonyeshwa kwenye Kiambatisho 1 (kwenye diski).

Taarifa ya block ya uingizwaji ni sehemu ya siri ya cryptofunction (kama ilivyoandaliwa katika GOST, ona Mchoro 2).

Kuweka meza hizi na funguo za kizuizi cha uingizwaji katika OP inapingana na mahitaji ya GOST (kifungu cha 1.7), kwa kuwa habari za siri zinapatikana kwa programu za tatu zinazoendesha kwenye ufungaji wa kompyuta. FSB, ambayo pia inathibitisha utekelezaji wa programu ya usimbuaji kulingana na GOST, inaangalia ukiukwaji huu, ili kuiweka kwa upole, kwa unyenyekevu. Ikiwa, ili kuweka funguo kwenye OP, FSB bado inahitaji "jani la mtini" - kufunga funguo kwa kutumia operesheni ya XOR, basi hakuna kitu kinachohitajika kwa vizuizi vya uingizwaji kwenye OP; huhifadhiwa kwa fomu wazi.

Kwa kifupi, FSB inaruhusu utekelezaji wa programu hiyo ya cryptoprocedures kupita, licha ya kupungua kwa dhahiri kwa usalama wa ufumbuzi huo na ukiukwaji wa moja kwa moja wa mahitaji yake kulingana na GOST (kifungu 1.7). Na hii licha ya njia zinazojulikana za kuvunja nambari kwa kuchukua utupaji wa kumbukumbu ...

Tutarudi kwenye suala la kuhifadhi funguo na vitalu vya uingizwaji katika rejista za ndani za processor baadaye kidogo (kuna suluhisho nzuri na la haraka), lakini kwa sasa tutahifadhi tu funguo za encryption katika rejista za MMX, hii ni ya kuaminika zaidi.

Lakini maneno ya kutosha, kilicho muhimu ndani ya mfumo wa mada inayozingatiwa ni kwamba msimbo huu wa programu una utendaji wa 1 RTT. Sasa hebu tuandike msimbo na utendaji wa 2 RTTs.

Utekelezaji wa multithreaded wa GOST 28147-89

Njia pekee ya kuharakisha taratibu za crypto katika algorithm inayojulikana ni kuanzisha multithreading. Hatua ya mabadiliko haya katika utekelezaji wa algorithm ni kuhesabu vitalu kadhaa vya data kwa sambamba.

Watengenezaji programu wengi humaanisha kwa usindikaji sambamba pekee kazi ya cores kadhaa za kichakataji, zilizosawazishwa kwa kukatizwa na semaphores kwenye kumbukumbu.

Hata hivyo, kuna chaguo jingine kwa usindikaji wa data sambamba kwenye msingi mmoja wa processor. Acha nieleze wazo hili lisilo wazi.

Wasindikaji wa kisasa ni pamoja na angalau mbili, na hata vitengo vitatu hadi sita vya hesabu-mantiki. Hizi ALUs (FPUs, vitengo vya hesabu vya anwani, na kadhalika) zinaweza kufanya kazi bila ya zenyewe; sharti pekee la utendakazi wao sambamba ni kwamba vifaa vya programu vinavyofanya kazi haviungani. Kwa maneno mengine, katika maagizo ambayo hutekeleza ALU wakati huo huo, anwani za kumbukumbu na nambari za rejista lazima ziwe tofauti. Au, hakuna uandishi unapaswa kufanywa kwa rejista za pamoja na anwani za kumbukumbu zinazofikiwa na vitengo mbalimbali vya utekelezaji wa processor.

Mzigo wa kazi wa ALU zote unadhibitiwa na kitengo maalum cha maunzi ndani ya msingi wa kichakataji - kipanga ratiba, ambacho huchanganua msimbo unaoweza kutekelezeka mbele, kwa kina cha baiti 32-64. Ikiwa kipanga ratiba kitagundua maagizo ambayo yanaweza kuendeshwa kwenye ALU bila migongano, basi huyaendesha kwa wakati mmoja kwenye vifaa tofauti vya utekelezaji. Katika kesi hii, counter ya amri zilizotekelezwa inaonyesha amri ya utekelezaji (kuna kadhaa yao katika mpango huo), baada ya hapo amri zote tayari zimetekelezwa.

Mipangilio mingi ya programu inayozalishwa kiotomatiki (na wakusanyaji) haiwezi kupakia ALU na FPU zote zilizo kwenye msingi wa kichakataji. Katika kesi hii, vifaa vya processor havifanyi kazi, ambayo hupunguza sana utendaji wake unaosababishwa. Wasanidi wa kichakataji wanaelewa hili na kuanzisha modi za kuongeza marudio ya msingi wakati maunzi hayatumiki kikamilifu. Hivi ndivyo pia mifumo ya biashara ya hypertrading imeundwa, na nitatumia mfumo huu "kubonyeza" msimbo hadi kiwango cha juu zaidi katika siku zijazo.

Vikusanyaji, hata vilivyoboreshwa zaidi, na hata zaidi injini za mashine pepe, haziwezi kutoa msimbo ulioboreshwa katika suala la utendakazi. Mpangaji programu aliye na maarifa ya uhandisi pekee ndiye anayeweza kuandika msimbo ulioboreshwa kama huu, na zana ya kuiandika ni mkusanyiko wa kipekee.

Kielelezo cha kawaida cha uwezekano wa kutekeleza nyuzi kadhaa za programu za kujitegemea kwenye msingi mmoja wa processor ni utekelezaji wa GOST, unaotekelezwa katika nyuzi mbili kwenye msingi mmoja wa processor. Wazo la msimbo ni rahisi: kuna vizuizi viwili vya data vya kusimba / kusimbua, lakini msingi mmoja wa kichakataji ambao utafanya ubadilishaji. Inawezekana kufanya uongofu kwenye vitalu hivi viwili vya data kwa mfululizo, na hii imefanywa hadi leo. Katika kesi hii, wakati unaohitajika kukamilisha mabadiliko huongezeka mara mbili.

Lakini unaweza kufanya hivyo tofauti: amri mbadala zinazohusiana na usindikaji wa vitalu tofauti vya data. Chaguzi hizi zimewasilishwa kwa picha kwenye Mtini. 3.


Katika takwimu, mfano wa juu unaonyesha utaratibu wa kawaida wa usindikaji vitalu viwili vya kujitegemea vya data. Kizuizi cha kwanza kinasindika kwanza, kisha processor inaendelea kusindika kizuizi cha pili. Kwa kawaida, wakati unaotokana ni sawa na mara mbili ya muda unaohitajika kusindika block moja, na watendaji wa msingi wa processor hawajapakia kikamilifu.

Ifuatayo ni mfano wa amri zinazoingiliana kutoka kwa nyuzi tofauti za usindikaji. Katika kesi hii, amri zinazohusiana na vizuizi tofauti vya data zimeunganishwa. Kipanga ratiba huchagua maagizo ambayo ni huru kutoka kwa kila mmoja na kuyasambaza kwa ALU1 na ALU2 kwa utekelezaji. Upangaji wa amri za nyuzi za kwanza na za pili kwenye ALU hizi hufanywa kiatomati, kwani algorithm ya kufanya kazi ya mpangilio inajumuisha kikundi cha amri zilizounganishwa na data ya kawaida kwenye kifaa sawa cha mtendaji.

Ili msimbo kama huo wa programu ufanye kazi bila kupunguzwa kwa ALU, ni muhimu kwamba kila thread ya programu ifanye kazi na seti yake ya rejista. Cache katika mpango huu inakuwa kizuizi (ina bandari mbili tu za pato la data), kwa hivyo tunahifadhi funguo kwenye rejista za MMX. Kwa kuwa katika kesi hii nodi za uingizwaji (na shift) kwenye kumbukumbu zinasomwa tu, zinaweza kuwa za kawaida kwa nyuzi zote mbili za programu.

Hii, kwa kweli, ni maelezo rahisi sana ya kanuni ya utekelezaji sambamba wa nyuzi za programu kwenye msingi mmoja; kwa kweli, kila kitu ni ngumu zaidi. Katika mazoezi, unahitaji kuzingatia usanifu wa bomba la watendaji, vikwazo vya upatikanaji wa wakati huo huo wa cache na kuzuia rejista ya RON, kuwepo kwa nodes za hesabu za anwani, swichi na mengi zaidi ... Kwa hiyo hii ni mada kwa wataalamu, ambaye anaweza kuhesabiwa kwenye vidole ... vya mkono mmoja.

Njia ya usimbaji sambamba inatekelezwa kwa ufanisi tu kwa hali ya uendeshaji ya processor 64-bit, kwa kuwa katika hali hii kuna idadi ya kutosha ya RON (vipande 16!). Mfano wa utekelezaji wa GOST kwa kutumia njia hii umeonyeshwa kwenye Kiambatisho 2 (kwenye diski).

Ni wazi kwamba utekelezaji huu wa GOST una utendaji wa kificho wa nambari 2 za RTT. Sasa hebu tuone jinsi hii inathiri wakati wa utekelezaji.

Mzunguko wa usimbuaji wa nyuzi moja (Kiambatisho 1) ni mizunguko ya saa 352, na wakati huu baiti 8 za data zinahesabiwa; kwa utekelezaji wa nyuzi mbili za GOST (Kiambatisho 2) mizunguko ya processor 416 inahitajika, lakini byte 16 zinahesabiwa. Kwa hivyo, kasi ya uongofu inayotokana huongezeka kutoka megabytes 80 hadi 144 kwa processor ya 3.6 GHz.

Picha ya kupendeza inatokea: nambari ina amri mara mbili zaidi, na hutekeleza 15% tu, lakini nadhani wasomaji tayari wameelewa sababu ya jambo hili ...

Kinadharia, msimbo kutoka kwa mfano wa pili unapaswa kutekelezwa kwa idadi sawa ya mizunguko kama msimbo kutoka kwa mfano wa kwanza, lakini nodi ya mpangilio inatengenezwa na wahandisi wa Intel, lakini pia ni binadamu, na sisi sote ni mbali na kamilifu. Kwa hiyo inawezekana kutathmini ufanisi wa uumbaji wao. Nambari hii pia itaendesha kwenye processor ya AMD, na unaweza kulinganisha matokeo yao.

Ikiwa mtu yeyote hachukui neno langu kwa ajili yake, basi kwa wasioamini vile, mipango ya mtihani na vihesabu vya saa imejumuishwa kwenye diski. Programu ziko katika msimbo wa chanzo, bila shaka katika mkusanyiko, kwa hiyo kuna fursa ya kuangalia maneno yangu, na wakati huo huo, angalia baadhi ya hila za coding kitaaluma.

Kutumia rejista za SSE na amri za AVX za wasindikaji wa kisasa kutekeleza GOST 28147-89

Wasindikaji wa kisasa wa usanifu wa x86/64 ni pamoja na seti ya rejista za SSE za ukubwa wa byte 16 na FPU maalum (angalau mbili) kufanya shughuli mbalimbali kwenye rejista hizi. Inawezekana kutekeleza GOST kwenye vifaa hivi, na katika kesi hii, nodes za uingizwaji zinaweza kuwekwa si kwa namna ya meza katika RAM, lakini moja kwa moja kwenye rejista za kujitolea za SSE.

Rejesta moja ya SSE inaweza kubeba meza mbili za safu 16 mara moja. Kwa hivyo, rejista nne za SSE zitashughulikia kabisa meza zote za uingizwaji. Hali pekee ya uwekaji huo ni mahitaji ya kuingiliana, kulingana na ambayo tetrads za byte sawa zinapaswa kuwekwa kwenye rejista tofauti za SSE. Kwa kuongeza, ni vyema kuweka tetradi za chini na za juu za byte za pembejeo, kwa mtiririko huo, katika tetrads za chini na za juu za byte za rejista za SSE.

Mahitaji haya huamuliwa kwa uboreshaji wa seti iliyopo ya amri za AVX. Kwa hivyo, kila byte ya rejista ya SSE itakuwa na tetradi mbili zinazolingana na ka tofauti za rejista ya pembejeo ya kizuizi cha uingizwaji, wakati nafasi ya byte katika rejista ya SSE inalingana kipekee na faharisi kwenye jedwali la uingizwaji la kizuizi.

Mchoro wa mojawapo ya uwekaji unaowezekana wa nodi za uingizwaji kwenye rejista za SSE umeonyeshwa kwenye Mtini. 4.


Kuweka habari za siri za nodi za uingizwaji kwenye rejista za SSE huongeza usalama wa utaratibu wa crypto, lakini kutengwa kamili kwa habari hii ya siri kunawezekana ikiwa hali zifuatazo zinapatikana:

  • Msingi wa kichakataji hubadilishwa kuwa hali ya mwenyeji wa hypervisor, na kizuizi cha kukatiza (APIC) kimezimwa ndani yake. Katika kesi hii, msingi wa processor umetengwa kabisa na OS na programu zinazoendesha kwenye ufungaji wa kompyuta.
  • Rejesta za SSE hupakiwa na msingi wa kompyuta hutengwa kabla ya mfumo wa uendeshaji kuanza; ni vyema kutekeleza taratibu hizi kutoka kwa moduli ya kuwasha inayoaminika (TLM).
  • Programu za taratibu za crypto kwa mujibu wa GOST ziko katika eneo la kumbukumbu lisiloweza kurekebishwa la usakinishaji wa kompyuta (ama BIOS au kumbukumbu ya flash ya MDZ).

Kuzingatia mahitaji haya kutahakikisha kutengwa kamili na kutobadilika kwa msimbo wa programu ya cryptoprocedures na taarifa za siri zinazotumiwa ndani yao.

Kwa sampuli bora za rejista za SSE za tetrad, swichi za byte za pembejeo nyingi zilizojumuishwa kwenye vizuizi vya FPU hutumiwa. Swichi hizi huruhusu uhamishaji kutoka kwa chanzo chochote hadi kwa byte yoyote lengwa, kwa kutumia fahirisi zilizo katika rejista maalum ya faharasa ya SSE. Kwa kuongezea, uhamishaji unafanywa kwa sambamba kwa baiti zote 16 za rejista ya mpokeaji wa SSE.

Kuwa na nodi za uhifadhi wa uingizwaji kwenye rejista za SSE na ubadilishaji wa pembejeo nyingi kwenye vizuizi vya FPU, inawezekana kuandaa mabadiliko yafuatayo katika kizuizi cha uingizwaji (Mchoro 5).

Katika mpango huu, rejista ya pembejeo katika kila tetrad inataja anwani ya kubadili sambamba, ambayo hupeleka taarifa kutoka kwa anatoa za nodes za uingizwaji kwenye rejista ya pato kupitia basi ya data. Mpango huu unaweza kupangwa kwa njia tatu:

  • Unda muundo unaofaa wa chip, lakini hii ni nzuri kwetu.
  • Kupanga upya msimbo wa microcode na kuunda amri yako ya processor kutekeleza kazi hii kwenye wasindikaji waliopo sio fantasy tena, lakini, kwa bahati mbaya, ni isiyo ya kweli katika hali ya sasa.
  • Andika programu kwa kutumia amri rasmi za AVX. Chaguo linaweza lisiwe na ufanisi sana, lakini linaweza kutekelezwa "hapa na sasa." Hivyo ndivyo tutakavyofanya baadaye.

Uendeshaji wa swichi unadhibitiwa na amri maalum ya anwani tatu AVX VPSHUFB. Operesheni yake ya kwanza ni mpokeaji wa habari kutoka kwa swichi, pili ni chanzo ambacho pembejeo za swichi zimeunganishwa. Operand ya tatu ni rejista ya udhibiti wa swichi, kila byte ambayo inahusishwa na kubadili sambamba; thamani ndani yake inabainisha idadi ya mwelekeo ambao swichi inasoma habari. Kwa maelezo ya amri hii kutoka kwa nyaraka rasmi za Intel, ona Mtini. 5. Katika Mtini. Mchoro wa 6 unaonyesha mchoro wa jinsi amri hii inavyofanya kazi - nusu tu ya rejista za SSE zinaonyeshwa, kwa nusu ya pili kila kitu kinafanana.


Kubadili hutumia bits nne za chini zaidi ili kuamua mwelekeo wa ubadilishaji, kidogo ya mwisho katika kila byte hutumiwa kulazimisha byte ya mpokeaji sambamba hadi sifuri, lakini kazi hii ya kubadili bado haihitajiki kwa upande wetu.

Programu ya sampuli za tetradi kupitia swichi za FPU iliandikwa, lakini hata sikuiweka kwenye programu - ilikuwa ya kusikitisha sana. Kuwa na rejista ya 128-bit na kutumia bits 32 tu ndani yake sio taaluma.

Kama wanasema, "Mstari wetu wa kumalizia ndio upeo wa macho," kwa hivyo itapunguza, itapunguza ... tutaibonyeza na kuiweka kwenye mifuko!

Huu sio mchezo wa maneno, lakini ukweli mkali wa FPU - rejista za SSE zinaweza kugawanywa katika sehemu sawa na mabadiliko sawa yanaweza kufanywa kwa sehemu hizi kwa amri moja. Ili processor kuelewa hili, kuna herufi ya kichawi "P" - pakiti ambayo imewekwa mbele ya kumbukumbu za amri, na sio herufi ndogo za kichawi "Q", "D", "W", "B", ambayo zimewekwa mwishoni na kutangaza Je, rejista za SSE zimegawanywa katika sehemu gani katika amri hii?

Tunavutiwa na hali ya kundi na rejista ya SSE imegawanywa katika vizuizi vinne vya 32-bit; ipasavyo, amri zote zitawekwa awali na "P" na mwisho na ishara "D". Hii inafanya uwezekano wa kusindika vizuizi vinne vya 32-bit sambamba na amri moja ya processor, ambayo ni, kuhesabu vizuizi vinne vya data kwa sambamba.

Programu inayotekeleza njia hii inapatikana katika Kiambatisho 3, pamoja na maelezo yote hapo.

Walakini, bonyeza sana! Wasindikaji wa kisasa wana angalau FPU mbili, na nyuzi mbili za maagizo huru zinaweza kutumika kuzipakia kikamilifu. Ukibadilisha kwa usahihi amri kutoka kwa nyuzi huru, unaweza kupakia vitengo vyote viwili vya FPU na kazi na kupata mitiririko minane ya data iliyochakatwa mara moja. Programu kama hiyo iliandikwa, na inaweza kutazamwa katika Kiambatisho 4, lakini unahitaji kuiangalia kwa uangalifu - unaweza kwenda wazimu. Hii ndio inaitwa "msimbo sio wa kila mtu ...".

Suala la bei

Matumizi ya rejista za SSE kuhifadhi nodes za uingizwaji inaeleweka - hutoa dhamana fulani ya kutengwa kwa habari za siri, lakini maana ya kuhesabu cryptofunction yenyewe kwenye FPU si dhahiri. Kwa hiyo, muda wa utekelezaji wa taratibu za kawaida ulipimwa kwa kutumia njia ya uingizwaji wa moja kwa moja kwa mujibu wa GOST kwa nyuzi nne na nane.

Kwa nyuzi nne, kasi ya utekelezaji wa mzunguko wa processor 472 ilipatikana. Kwa hivyo, kwa processor yenye mzunguko wa 3.6 GHz, thread moja inahesabiwa kwa kasi ya megabytes 59 kwa pili, na nyuzi nne, kwa mtiririko huo, kwa kasi ya megabytes 236 kwa pili.

Kwa nyuzi nane, kasi ya utekelezaji wa mzunguko wa processor 580 ilipatikana. Kwa hiyo, kwa processor ya 3.6 GHz, thread moja inahesabu megabytes 49 kwa pili, na nyuzi nane kwa megabytes 392 kwa pili.

Kama msomaji anavyoweza kuona, msimbo katika mfano #3 una utendaji wa 4 RTT, na msimbo katika mfano #4 una utendaji wa 8 RTT. Katika mifano hii kwenye rejista za SSE, mifumo ni sawa na wakati wa kutumia RON, mpangilio tu umepunguza ufanisi wake. Kwa sasa inatoa ongezeko la 20% kwa muda huku ikiongeza urefu wa msimbo mara mbili.

Zaidi ya hayo, matokeo haya yalipatikana kwa kutumia amri za AVX zinazopatikana katika vichakataji vya Intel na AMD. Ikiwa utaboresha kwa processor ya AMD, matokeo yatakuwa bora zaidi. Inaonekana kinyume na mwenendo, lakini ni kweli, na hii ndiyo sababu: Wasindikaji wa AMD wana seti ya ziada ya maagizo, kinachojulikana kama ugani wa XOP, na katika seti hii ya ziada ya maagizo kuna wale ambao hurahisisha sana utekelezaji wa Algorithm ya GOST.

Hii inarejelea amri za mabadiliko ya kimantiki ya baiti na mabadiliko ya mzunguko wa maneno mawili. Katika mifano iliyotolewa katika Viambatisho 3 na 4, mlolongo wa amri za ulimwengu wote hutumiwa kutekeleza mabadiliko muhimu: katika kesi ya kwanza, amri moja "ya ziada", na katika hali nyingine, amri nne za ziada mara moja. Kwa hivyo kuna akiba ya uboreshaji, na kubwa.

Linapokuja suala la uboreshaji zaidi, inafaa kukumbuka uwepo wa rejista za 256-bit (rejista za YMM), kwa kutumia ambayo unaweza kinadharia mara mbili ya kasi ya mahesabu. Lakini kwa sasa hili ni matarajio tu; kwa sasa, wasindikaji hupunguza kasi sana wakati wa kutekeleza maagizo ya 256-bit (FPU zina upana wa njia ya bits 128). Majaribio yameonyesha kuwa kwenye wasindikaji wa kisasa, kuhesabu nyuzi 16 kwenye rejista za YMM haitoi faida yoyote. Lakini hii ni kwa sasa tu; kwa mifano mpya ya wasindikaji, utendaji wa maagizo ya 256-bit bila shaka utaongezeka, na kisha matumizi ya nyuzi 16 zinazofanana zitapendekezwa na itasababisha ongezeko kubwa zaidi la kasi ya utaratibu wa crypto. .

Kinadharia, unaweza kutegemea kasi ya megabaiti 600-700 kwa sekunde ikiwa kichakataji kina FPU mbili na upana wa njia ya kufanya kazi wa biti 256 kila moja. Katika kesi hii, tunaweza kuzungumza juu ya kuandika msimbo kwa ufanisi wa 16 RTT, na hii sio fantasy, lakini siku za usoni.

Hali iliyochanganywa

Tena swali la idadi ya rejista linatokea; haitoshi kwao kukuza algorithm kama hiyo. Lakini hali ya hypertrading itatusaidia. Msingi wa processor una seti ya pili ya rejista zinazopatikana katika hali ya processor ya kimantiki. Kwa hiyo, tutafanya msimbo sawa kwenye wasindikaji wawili wa mantiki mara moja. Katika hali hii, kwa kweli, hatutakuwa na watendaji zaidi, lakini kwa sababu ya kubadilishana tunaweza kupata mzigo kamili wa watendaji wote.

Huwezi kutegemea ongezeko la 50% hapa; kizuizi ni kumbukumbu ya kache ambapo masks ya teknolojia huhifadhiwa, lakini bado unaweza kupata ongezeko la megabytes 100 za ziada. Chaguo hili halionyeshwa kwenye viambatisho (macros ni sawa na yale yaliyotumiwa katika msimbo wa 8 RTT), lakini inapatikana katika faili za programu. Kwa hivyo ikiwa mtu haamini uwezekano wa usimbuaji kwa kasi ya megabytes 500 kwa sekunde kwenye msingi mmoja wa kichakataji, wacha aendeshe faili za majaribio. Pia kuna maandishi yaliyo na maoni ili hakuna mtu anayefikiria kuwa ninadanganya.

Mtazamo huu unawezekana tu kwa vichakataji vya Intel; AMD ina vitengo viwili tu vya FPU kwa moduli mbili za kichakataji (sawa na hali ya biashara ya hypertrading). Lakini kuna ALU nne zaidi ambazo zingekuwa dhambi kutozitumia.

Unaweza kuweka moduli za processor za Bulldozer katika hali inayofanana na hali ya biashara ya juu, lakini endesha ubadilishaji hadi RON kwenye moduli tofauti kwenye uzi mmoja, na kwenye rejista za SSE kwenye uzi mwingine na upate RTTs 12 sawa. Sijajaribu chaguo hili, lakini nadhani nambari 12 ya RTT itafanya kazi kwa ufanisi zaidi kwenye AMD. Wale wanaopenda wanaweza kuijaribu; programu za majaribio zinaweza kurekebishwa ili kufanya kazi kwenye "Bulldozers" kwa urahisi kabisa.

Nani anaihitaji?

Swali zito, lakini kwa jibu rahisi - kila mtu anahitaji hii. Hivi karibuni sisi sote tutaunganishwa kwenye mawingu, tutahifadhi data na programu zote huko, na huko, oh, jinsi tunataka kuunda kona yetu ya kibinafsi. Ili kufanya hivyo, utalazimika kusimba trafiki, na kasi ya ubadilishaji wa crypto itakuwa sababu kuu ya kuamua kazi ya starehe kwenye wingu. Chaguo letu la algorithm ya usimbuaji ni ndogo - ama GOST au AES.

Kwa kuongezea, isiyo ya kawaida, algorithm ya usimbuaji wa AES iliyojengwa ndani ya wasindikaji inageuka kuwa polepole zaidi; vipimo vinaonyesha kasi ya megabytes 100-150 kwa sekunde, na hii ni kwa utekelezaji wa vifaa vya algorithm! Shida iko katika hesabu ya nyuzi moja na kizuizi cha uingizwaji, ambacho hufanya kazi kwenye ka (meza ya safu 256). Kwa hivyo GOST inageuka kuwa nzuri zaidi wakati inatekelezwa kwenye usanifu wa x86/64, ni nani angefikiria ...

Hii ni ikiwa tunazungumza juu ya kiwango kilichopatikana cha kasi ya usimbuaji. Na ikiwa tunakumbuka uboreshaji wa kinadharia katika uwanja wa kuongeza ufanisi wa msimbo, basi uwezekano mkubwa hakuna mtu anayehitaji hili. Kwa kweli hakuna wataalam katika kiwango cha 3-6 RTT, wakusanyaji kwa ujumla hutoa nambari katika kiwango cha 1-2.5 RTT, na watengenezaji programu wengi hawajui mkusanyaji, na hata kama wanajua tahajia yake, hawaelewi muundo wa processor ya kisasa. Na bila ujuzi huu, haijalishi ikiwa ni mkusanyiko au aina fulani ya SI-mkali.

Lakini si kila kitu kinasikitisha sana: msingi baada ya wiki ya usiku usio na usingizi ni algorithm mpya ya kutekeleza GOST, ambayo itakuwa dhambi si kwa patent. Na maombi ya hati miliki (tatu kwa jumla) tayari imekamilika na kuwasilishwa, kwa hiyo, waheshimiwa, wafanyabiashara, mstari - wanawake na watoto wanapata punguzo.

) Wakati huo huo, katika vyombo vya habari vya Kirusi na blogu za watumiaji wa Kirusi, idadi ya maelezo kuhusu algorithm hii inakua: wote hufunika matokeo ya mashambulizi ya kiwango cha Kirusi na viwango tofauti vya kuaminika, na vyenye maoni kuhusu sifa zake za uendeshaji. Waandishi (na, kwa hivyo, wasomaji) wa madokezo haya mara nyingi hupata hisia kwamba algoriti ya usimbaji wa ndani imepitwa na wakati, polepole na ina udhaifu unaoifanya iwe rahisi kushambuliwa kuliko algoriti za usimbaji fiche za kigeni zenye urefu sawa wa ufunguo. Kwa mfululizo huu wa maelezo tungependa kukuambia kwa fomu inayoweza kupatikana kuhusu hali ya sasa ya mambo na kiwango cha Kirusi. Sehemu ya kwanza itashughulikia mashambulizi yote kwenye GOST 28147-89 inayojulikana na jumuiya ya kimataifa ya cryptographic na tathmini za sasa za nguvu zake. Katika machapisho yajayo, tutazingatia pia kwa undani mali ya kiwango kutoka kwa mtazamo wa uwezo wa kujenga utekelezaji mzuri.

Nicolas Courtois - "kubwa na ya kutisha"

Hebu tuanze na hadithi kuhusu shughuli za Nicolas Courtois, ambaye ni mwandishi wa mfululizo mzima wa kazi zinazotolewa kwa kiwango cha usimbuaji wa kuzuia Kirusi ().

Mnamo Oktoba 2010, mchakato wa kuzingatia kuingizwa kwa algorithm ya GOST 28147-89 katika kiwango cha kimataifa ISO/IEC 18033-3 ilianza. Tayari mnamo Mei 2011, nakala ya mwandishi mashuhuri Nicolas Courtois ilionekana kwenye kumbukumbu ya elektroniki ya ePrint, iliyoonyeshwa na mtazamo usioeleweka sana kwake kutoka kwa jamii ya ulimwengu ya kriptografia. Machapisho ya Courtois ni mfano wa kusikitisha wa udanganyifu wa dhana, ambao hauonyeshi sifa yoyote mpya ya kitu kinachohusika, lakini kwa madai ya hisia huchochea kuenea kwa maoni potofu kuhusu mali yake halisi katika mazingira yasiyofaa.

Mbinu ya algebra

Hoja ya Courtois imejengwa katika aina mbili za mbinu za uchanganuzi wa siri: mbinu za aljebra na zile tofauti. Hebu tuangalie darasa la kwanza la mbinu.

Kwa njia iliyorahisishwa, njia ya cryptanalysis ya algebraic inaweza kuelezewa kama mkusanyiko na suluhisho la mfumo mkubwa wa equations, kila suluhisho ambalo linalingana na lengo la cryptanalyst (kwa mfano, ikiwa mfumo umeundwa kwa kutumia jozi moja. ya maandishi wazi na ciphertext, basi masuluhisho yote ya mfumo huu yanahusiana na funguo ambazo maandishi haya wazi yanabadilishwa kuwa haya yamesimbwa). Hiyo ni, katika kesi ya shida ya cryptanalysis ya block cipher, kiini cha njia ya algebraic ya cryptanalysis ni kwamba ufunguo hupatikana kama matokeo ya kutatua mfumo wa equations polynomial. Ugumu kuu ni kuwa na uwezo wa kuunda mfumo rahisi iwezekanavyo, kwa kuzingatia sifa za cipher fulani, ili mchakato wa kutatua inachukua muda kidogo iwezekanavyo. Hapa jukumu muhimu linachezwa na vipengele vya kila cipher maalum inayochambuliwa.

Njia ya aljebra inayotumiwa na Courtois inaweza kuelezewa kwa ufupi kama ifuatavyo. Katika hatua ya kwanza, mali kama hizo za GOST 28147-89 hutumiwa kama uwepo wa sehemu iliyowekwa kwa sehemu ya ubadilishaji wa usimbuaji, na vile vile kinachojulikana kama sehemu ya kutafakari. Shukrani kwa mali hizi, jozi kadhaa huchaguliwa kutoka kwa idadi kubwa ya kutosha ya jozi za maandishi-siri, ambayo inafanya uwezekano wa kuzingatia mabadiliko sio 32, lakini kwa raundi 8 tu. Hatua ya pili ni kwamba, kulingana na matokeo ya mabadiliko ya pande zote 8 yaliyopatikana katika hatua ya kwanza, mfumo wa equations zisizo za kawaida hujengwa, ambayo bits muhimu hazijulikani. Ifuatayo, mfumo huu unatatuliwa (hii inasikika rahisi, lakini kwa kweli ni sehemu inayotumia wakati mwingi wa njia, kwani mfumo una hesabu zisizo za mstari).

Kama ilivyoonyeshwa hapo juu, hakuna mahali popote katika kazi kuna maelezo ya kina na uchambuzi wa ugumu wa hatua ya pili na kuu ya kuamua ufunguo. Ni ugumu wa hatua ya pili ambayo huamua ugumu wa njia nzima kwa ujumla. Badala yake, mwandishi hutoa "ukweli" mbaya kwa msingi ambao yeye hufanya makadirio ya nguvu ya kazi. "Ukweli" huu unasemekana kutegemea matokeo ya majaribio. Uchambuzi wa "ukweli" kutoka kwa kazi ya Courtois kwa ujumla hutolewa katika kazi ya waandishi wa ndani. Waandishi wa kazi hii wanaona kuwa "ukweli" mwingi wa Courtois uliowasilishwa bila ushahidi wowote ulionekana kuwa wa uwongo wakati wa majaribio ya majaribio. Waandishi wa makala walikwenda zaidi na, kufuatia Courtois, walifanya uchambuzi wa utata wa hatua ya pili kwa kutumia algorithms na makadirio yenye msingi. Makadirio ya uchangamano yanayotokana yanaonyesha kutotumika kabisa kwa shambulio lililowasilishwa. Mbali na waandishi wa ndani, matatizo makubwa ambayo Courtois anayo na tathmini na uhalali wa mbinu zake pia zilibainishwa, kwa mfano, katika kazi.

Mbinu tofauti

Wacha tuchunguze njia ya pili ya Courtois, ambayo inategemea uchambuzi tofauti wa cryptanalysis.

Njia ya jumla ya uchanganuzi wa kutofautisha ni msingi wa unyonyaji wa mali ya michoro isiyo ya mstari inayotumiwa katika maandishi ya kriptografia, inayohusishwa na ushawishi wa dhamana kuu juu ya utegemezi kati ya tofauti kati ya jozi za pembejeo na jozi za maadili ya pato la ramani hizi. . Wacha tueleze wazo kuu la njia tofauti ya uchambuzi wa kriptografia ya block cipher. Kwa kawaida, kuzuia ciphers kubadilisha data ya pembejeo katika hatua kwa kutumia idadi ya kinachojulikana mabadiliko ya pande zote, na kila mabadiliko ya pande zote haitumii ufunguo mzima, lakini sehemu yake tu. Wacha tuchunguze cipher "iliyopunguzwa" kidogo, ambayo inatofautiana na ile ya asili kwa kuwa haina raundi ya mwisho. Wacha tuchukue kuwa imewezekana kubaini kwamba usimbaji wa maandishi mawili ya wazi ambayo hutofautiana katika nafasi fulani zisizohamishika kwa kutumia cipher kama hiyo "iliyopunguzwa" itasababisha matini ambayo pia hutofautiana katika nafasi fulani zisizobadilika. Sifa hii inaonyesha kwamba kisifa "kilichopunguzwa" kuna uwezekano mkubwa huacha utegemezi kati ya baadhi ya maandishi wazi na matokeo ya usimbaji wao. Ili kurejesha sehemu ya ufunguo kwa kutumia dosari hii dhahiri, ni muhimu kuweza kusimba maandishi wazi yaliyochaguliwa awali kwenye ufunguo tunaotaka kurejesha (kinachojulikana kama "shambulio la maandishi lililochaguliwa"). Mwanzoni mwa utaratibu wa "ufunguo wa ufunguo", idadi ya jozi za maandishi wazi hutolewa kwa nasibu, tofauti katika nafasi hizo hizo zisizohamishika. Maandishi yote yamesimbwa kwa njia fiche kwa kutumia cipher "kamili". Jozi za maandishi ya msimbo yanayotokana hutumika kurejesha biti hizo muhimu ambazo zilitumika katika mabadiliko ya mzunguko wa mwisho, kama ifuatavyo. Kwa kutumia baadhi ya thamani iliyochaguliwa kwa nasibu ya biti za vitufe unavyotaka, ubadilishaji wa mageuzi hadi mageuzi ya mzunguko wa mwisho unatumika kwa maandishi yote ya siri. Kwa kweli, ikiwa tulikisia thamani inayotaka ya biti muhimu, tutapata matokeo ya cipher "iliyopunguzwa", na ikiwa hatukukisia, kwa kweli "tutasimba data kwa njia fiche zaidi," ambayo itapunguza tu utegemezi kati ya vizuizi vilivyoainishwa hapo juu (tofauti iko katika nafasi zingine). Kwa maneno mengine, ikiwa kati ya matokeo ya "usindikaji wa ziada" kama huo wa maandishi kulikuwa na jozi nyingi ambazo hutofautiana katika nafasi zisizohamishika zinazojulikana kwetu, basi hii inamaanisha kuwa tumebashiri vitu muhimu vinavyohitajika. Vinginevyo, kutakuwa na wachache sana jozi kama hizo. Kwa kuwa sehemu tu ya ufunguo inatumika katika kila raundi, biti zilizotafutwa (hiyo ni, vitufe muhimu vilivyotumika katika raundi ya mwisho) sio nyingi kama biti kwenye kitufe kamili na zinaweza kurudiwa kwa kurudia hatua zilizo hapo juu. . Katika kesi hii, hakika tutajikwaa juu ya maana sahihi siku moja.

Kutoka kwa maelezo hapo juu inafuata kwamba jambo muhimu zaidi katika njia ya uchanganuzi wa kutofautisha ni nambari za nafasi hizo katika maandishi wazi na maandishi, tofauti ambazo zina jukumu muhimu katika kurejesha vifungu muhimu. Uwepo wa kimsingi wa nafasi hizi, pamoja na seti ya nambari zao, moja kwa moja inategemea mali ya mabadiliko hayo yasiyo ya mstari ambayo hutumiwa katika cipher yoyote ya block (kawaida "kutokuwa na usawa" hujilimbikizia kwenye kinachojulikana kama sanduku za S au. nodi za uingizwaji).

Courtois hutumia toleo lililobadilishwa kidogo la njia ya kutofautisha. Hebu tukumbuke mara moja kwamba Courtois anafanya uchambuzi wake kwa S-boxes ambazo ni tofauti na za sasa na kutoka kwa zile zilizopendekezwa katika ISO. Kazi hutoa sifa tofauti (namba hizo ambazo vitalu vinapaswa kutofautiana) kwa idadi ndogo ya pande zote. Uhalali wa kupanua sifa kwa raundi zaidi ni, kama kawaida, kulingana na "ukweli". Courtois anaelezea, tena, bila chochote isipokuwa mamlaka yake, dhana isiyoungwa mkono kwamba kubadilisha masanduku ya S hakutaathiri upinzani wa GOST 28147-89 dhidi ya shambulio lake (wakati kwa sababu zisizojulikana, S-sanduku kutoka kwa rasimu ya 1 ya kazi ya nyongeza ya ISO/IEC 18033-3 ya kawaida haikuzingatiwa). Uchambuzi uliofanywa na waandishi wa kifungu hicho unaonyesha kuwa hata ikiwa tunachukua "ukweli" usio na msingi wa Courtois juu ya imani na kuchambua GOST 28147-89 na vizuizi vingine vya S, shambulio hilo tena linageuka kuwa sio bora kuliko utaftaji kamili.

Uchambuzi wa kina wa kazi za Courtois na uthibitisho wa kina wa kutokuwa na msingi wa taarifa zote kuhusu kupungua kwa upinzani wa kiwango cha Kirusi ulifanyika katika kazi [,].

Wakati huo huo, hata Courtois mwenyewe anakubali ukosefu kamili wa usahihi katika mahesabu! Slaidi ifuatayo imechukuliwa kutoka kwa wasilisho la Courtois katika sehemu ya taarifa fupi ya FSE 2012.

Ikumbukwe kwamba kazi ya Courtois pia imekosolewa mara kwa mara na watafiti wa kigeni. Kwa mfano, kazi yake ya kuunda shambulio kwenye algorithm ya usimbuaji wa kizuizi cha AES kwa kutumia njia ya XSL ilikuwa na dosari sawa za kimsingi kama kazi ya uchambuzi wa kiwango cha Kirusi: makadirio mengi ya nguvu ya kazi yanaonekana kwenye maandishi hayana msingi kabisa na hayana uthibitisho - ya kina. ukosoaji unaweza kupatikana, kwa mfano, katika kazi. Kwa kuongeza, Courtois mwenyewe anakubali kukataa kuenea kwa kuchapisha kazi yake katika mikutano mikuu ya cryptography na katika majarida yaliyopitiwa na rika, mara nyingi humwacha fursa tu ya kuzungumza katika sehemu fupi ya tangazo. Kwa mfano, unaweza kusoma kuhusu hili katika sehemu ya 3 ya kazi. Hapa kuna baadhi ya nukuu kutoka kwa Courtois mwenyewe zinazohusiana na kazi yake:

  • "Nadhani watazamaji wa Asiacrypt hawatahisi kuwa ya kufurahisha." Mkaguzi wa Asiacrypt 2011.
  • "... kuna tatizo kubwa, kubwa, kubwa: shambulio hili, ambalo ni mchango mkuu wa karatasi tayari limechapishwa kwenye FSE'11 (hata ilikuwa karatasi bora zaidi), ...". Mkaguzi wa Crypto 2011.

Kwa hivyo, sehemu ya kitaalamu ya jumuiya ya kimataifa ya kriptografia inazingatia ubora wa kazi ya Courtois bila shaka yoyote kuliko, kusema, taarifa za baadhi ya wataalamu wa Kirusi kuhusu uwezo wao wa kupasua AES kwa 2,100, ambayo haijathibitishwa na hesabu yoyote thabiti, au "ushahidi" wa hivi karibuni wa nadharia ya kurasa mbili juu ya usawa wa madarasa ya utata P na NP.

Mashambulizi ya Isobe na Dinur-Dankelman-Shamir

Wazo la jumla la shambulio la Isobe () na Dinur-Dankelman-Shamir (baadaye: shambulio la DDS) () ni kuunda kwa seti fulani nyembamba ya maandishi ya wazi mabadiliko sawa kwenye seti hii, ambayo ina muundo rahisi kuliko ugeuzaji wa usimbaji yenyewe. Kwa upande wa mbinu ya Isobe, hii ni seti ya vizuizi 64-bit x hivi kwamba F 8 -1 (Swap(F 8 (z))) = z, ambapo z = F 16 (x), kupitia F 8 ( x) na F 16 ( x) zinaonyesha raundi 8 za kwanza na 16 za kwanza za usimbuaji wa GOST 28147-89, mtawaliwa, kupitia Ubadilishanaji - operesheni ya kubadilisha nusu ya neno 64-byte. Ikiwa maandishi ya wazi yamejumuishwa katika seti hii, matokeo ya mabadiliko kamili ya raundi 32 ya GOST 28147-89 inalingana na matokeo ya raundi 16, ambayo mwandishi wa shambulio hilo anatumia. Kwa upande wa njia ya DDS, hii ni seti ya x vile F 8 (x) = x (hatua isiyobadilika ya mabadiliko F 8). Kwa maandishi yoyote ya wazi kutoka kwa seti hii, mabadiliko ya GOST 28147-89 hufanya kazi sawa na raundi zake 8 zilizopita, ambayo hurahisisha uchanganuzi.

Ugumu wa shambulio la Isobe ni shughuli 2,224 za usimbuaji, shambulio la DDS ni 2,192. Hata hivyo, maswali yote kuhusu kama mashambulizi ya Isobe na DDS yanaleta vikwazo vipya kwa masharti ya kutumia algoriti yetu yanaondolewa kwa kutathmini mahitaji ya kiasi cha nyenzo zinazohitajika kutekeleza kila shambulio: Mbinu ya Isobe inahitaji jozi 2 32 za maandishi wazi. na maandishi ya siri, na kwa njia ya DDS - 2 64. Usindikaji wa kiasi kama hicho cha nyenzo bila kubadilisha ufunguo ni jambo lisilokubalika kwa cipher yoyote ya block na urefu wa block ya 64: kwa nyenzo ya kiasi cha 2 32, kwa kuzingatia tatizo la siku za kuzaliwa (tazama, kwa mfano, ), uwezekano wa tukio. ya vitalu mara kwa mara ni karibu na 1/2, ambayo itatoa mshambuliaji ni uwezo wa kuteka hitimisho fulani kuhusu plaintexts kutoka ciphertexts bila kuamua muhimu. Uwepo wa jozi 2 64 za maandishi wazi na yaliyosimbwa yaliyopatikana kwenye ufunguo mmoja kwa kweli huruhusu adui kutekeleza shughuli za usimbuaji na usimbuaji bila kujua ufunguo huu hata kidogo. Hii ni kwa sababu ya mali ya ujumuishaji: adui katika kesi hii ana jedwali zima la ubadilishaji wa usimbaji fiche. Hali hii haikubaliki kabisa chini ya hali yoyote nzuri ya uendeshaji. Kwa mfano, katika CryptoPro CSP kuna kizuizi cha kiufundi juu ya kiasi cha nyenzo zilizosimbwa (bila ubadilishaji wa ufunguo) wa 4 MB (tazama). Kwa hivyo, marufuku madhubuti ya kutumia ufunguo kwenye nyenzo ya kiasi kama hicho ni ya asili katika cipher yoyote ya block na urefu wa block ya bits 64, na kwa hivyo, mashambulizi ya Isobe na DDS kwa njia yoyote hayapunguza wigo wa matumizi ya GOST 28147-89 algorithm. huku ikidumisha uwezo wa juu unaowezekana wa 2,256.

Bila shaka, ni lazima ieleweke kwamba watafiti (Isobe na Dinur-Dankelman-Shamir) wameonyesha kwamba baadhi ya mali ya algorithm ya GOST 28147-89 hufanya iwezekanavyo kupata njia za uchambuzi ambazo hazikuzingatiwa na waundaji wa algorithm. Njia rahisi ya ratiba muhimu, ambayo hurahisisha kwa kiasi kikubwa kazi ya kujenga utekelezaji mzuri, pia inaruhusu baadhi ya matukio adimu ya funguo na maandishi wazi kuunda maelezo rahisi zaidi ya mabadiliko yanayotolewa na algoriti.

Kazi inaonyesha kwamba mali hii hasi ya algorithm inaweza kuondolewa kwa urahisi na uhifadhi kamili wa sifa za uendeshaji, lakini, kwa bahati mbaya, ni sehemu muhimu ya algorithm katika fomu yake ya kawaida kutumika.

Kumbuka kwamba uzembe fulani katika makadirio ya kiwango cha wastani cha kazi pia upo katika kazi ya Dinur, Dunkelman na Shamir. Kwa hivyo, wakati wa kuunda shambulio, umakini unaofaa haujalipwa kwa nukta ifuatayo: kwa sehemu kubwa ya funguo, seti ya maandishi ya wazi x, kama F 8 (x) = x, haina tupu: kunaweza kuwa hakuna alama maalum. kwa raundi 8 za mabadiliko. Uwepo wa pointi zilizowekwa pia inategemea uchaguzi wa nodes za uingizwaji. Kwa hivyo, shambulio hilo linatumika tu kwa nodi fulani za uingizwaji na funguo.

Inafaa pia kutaja kazi moja zaidi na shambulio la GOST 28147-89. Mnamo Februari 2012, toleo lililosasishwa la nakala hiyo (ya Novemba 2011) lilionekana kwenye kumbukumbu ya elektroniki ya ePrint ya chama cha kimataifa cha kriptografia, ambacho kilikuwa na shambulio jipya kwenye GOST 28147-89. Tabia za shambulio lililowasilishwa ni kama ifuatavyo: kiasi cha nyenzo ni 2 32 (kama Isobe), na nguvu ya kazi ni 2 192 (kama DDS). Kwa hivyo, shambulio hili liliboresha shambulio la DDS la rekodi ya wakati kulingana na kiasi cha nyenzo kutoka 2 64 hadi 2 32. Tunaona kando kwamba waandishi waliwasilisha kwa uaminifu mahesabu yote kwa uhalali wa ugumu na kiasi cha nyenzo. Baada ya miezi 9, hitilafu ya kimsingi ilipatikana katika hesabu zilizo hapo juu, na tangu Novemba 2012, toleo lililosasishwa la nakala kwenye kumbukumbu ya elektroniki halina matokeo yoyote kuhusu algorithm ya nyumbani.

Mashambulizi ya kudhani kuwa mshambuliaji anajua "kitu" kuhusu funguo

Hatimaye, tunaona kwamba katika fasihi pia kuna idadi ya kazi (tazama, kwa mfano, na) iliyotolewa kwa mashambulizi ya GOST 28147-89 katika kinachojulikana kinachounganishwa mfano muhimu. Mtindo huu kimsingi una dhana kwamba mshambuliaji anaweza kupata ufikiaji wa uchanganuzi sio tu kwa jozi za maandishi wazi na kusimbwa kwa kutumia kitufe unachotaka, lakini pia kwa jozi za maandishi wazi na yaliyosimbwa yaliyopatikana kwa kutumia funguo (pia hazijulikani) ambazo ni tofauti na zinazohitajika. kwa njia inayojulikana ya kawaida (kwa mfano, katika nafasi zisizobadilika). Katika mfano huu, inawezekana kupata matokeo ya kuvutia kuhusu GOST 28147-89, lakini katika mfano huu inawezekana kupata matokeo yenye nguvu kuhusu, kwa mfano, kiwango cha AES, ambacho kinatumiwa sana katika mitandao ya kisasa ya umma. tazama, kwa mfano,). Kumbuka kwamba masharti ya kutekeleza aina hii ya mashambulizi hutokea wakati wa kutumia cipher katika itifaki fulani. Ikumbukwe kwamba matokeo ya aina hii, ingawa ni ya maslahi yasiyo na shaka ya kitaaluma kutoka kwa mtazamo wa kusoma sifa za mabadiliko ya kriptografia, kwa kweli sio muhimu kwa mazoezi. Kwa mfano, zana zote za ulinzi wa habari za kriptografia zilizoidhinishwa na FSB ya Urusi zinakidhi mahitaji madhubuti ya mipango ya uundaji wa ufunguo wa usimbaji fiche (tazama, kwa mfano,). Kama inavyoonyeshwa katika matokeo ya uchanganuzi, ikiwa kuna funguo 18 zinazohusiana na jozi 2 10 za maandishi wazi na maandishi ya siri, ugumu wa kufungua kabisa ufunguo wa kibinafsi, na uwezekano wa kufaulu kwa 1-10 -4, kwa kweli ni 2 26. . Walakini, ikiwa mahitaji yaliyotajwa hapo juu ya ukuzaji wa nyenzo muhimu yamefikiwa, uwezekano wa kupata funguo kama hizo ni 2 -4352, ambayo ni mara 24096 chini ya ikiwa unajaribu tu kukisia ufunguo wa siri kwenye jaribio la kwanza.

Kazi zinazohusiana na mfano na funguo zilizounganishwa pia zinajumuisha kazi, ambayo mwaka 2010 ilisababisha kelele nyingi katika machapisho ya elektroniki ya Kirusi, ambayo hayana shida na tabia ya kuangalia kwa makini nyenzo katika mbio za hisia. Matokeo yaliyowasilishwa ndani yake hayakuungwa mkono na uhalali wowote mkali, lakini yalikuwa na taarifa kubwa juu ya uwezo wa kudanganya kiwango cha serikali ya Shirikisho la Urusi kwenye kompyuta ndogo dhaifu katika sekunde chache - kwa ujumla, nakala hiyo iliandikwa katika mila bora. ya Nicolas Courtois. Lakini, licha ya kutokuwa na msingi wa kifungu hicho kwa msomaji ambaye anafahamu zaidi kanuni za msingi za machapisho ya kisayansi, ilikuwa ni kuwahakikishia umma wa Kirusi baada ya kazi hiyo kwamba Rudsky aliandika maandishi ya kina na ya kina yenye uchambuzi wa kina. ya upungufu huu. Nakala iliyo na kichwa cha kujieleza "Kwenye umuhimu wa sifuri wa vitendo wa kazi "Shambulio kuu la uokoaji kwenye nambari kamili ya kizuizi cha GOST na wakati sifuri na kumbukumbu" hutoa uhalali wa kuwa ugumu wa wastani wa njia iliyotolewa sio chini ya ugumu. ya utafutaji kamili.

Mabaki ya kavu: ni nini kudumu katika mazoezi?

Kwa kumalizia, tunawasilisha jedwali lililo na data juu ya matokeo yote ya mashambulizi yaliyoelezwa madhubuti na ya haki kwenye GOST 28147-89 inayojulikana kwa jumuiya ya kimataifa ya cryptographic. Kumbuka kuwa ugumu hutolewa katika shughuli za usimbuaji wa algorithm ya GOST 28147-89, na kumbukumbu na nyenzo zinaonyeshwa kwenye vizuizi vya algorithm (64 bits = 8 byte).

Shambulio Nguvu ya kazi Kumbukumbu Nyenzo zinazohitajika
Isobe 2 224 2 64 2 32
Dinur-Dankelman-Shamir, FP, 2DMitM 2 192 2 36 2 64
Dinur-Dankelman-Shamir, FP, kumbukumbu ya chini 2 204 2 19 2 64
2 224 2 36 2 32
Dinur-Dankelman-Shamir, Tafakari, 2DMitM 2 236 2 19 2 32
Kamilisha utafutaji 2 256 1 4
Idadi ya nanoseconds tangu kuumbwa kwa Ulimwengu 2 89

Licha ya mzunguko mkubwa wa utafiti katika uwanja wa upinzani wa algorithm ya GOST 28147-89, kwa sasa hakuna shambulio moja linalojulikana, hali ya utekelezaji ambayo inaweza kufikiwa na mahitaji yanayoambatana ya kufanya kazi. urefu wa block ya bits 64. Vikwazo vya kiasi cha nyenzo ambacho kinaweza kuchakatwa kwenye ufunguo mmoja kutokana na vigezo vya cipher (urefu wa biti muhimu, urefu wa biti ya block) ni kali zaidi kuliko kiwango cha chini kinachohitajika kutekeleza shambulio lolote linalojulikana kwa sasa. Kwa hivyo, wakati wa kukidhi mahitaji yaliyopo ya kiutendaji, hakuna njia yoyote ya uchanganuzi wa siri iliyopendekezwa hadi sasa GOST 28147-89 inaruhusu kuamua ufunguo na nguvu ya kazi chini ya utaftaji kamili.

Katika nchi yetu, algorithm ya umoja ya uwakilishi wa data ya kriptografia imeanzishwa kwa mifumo ya usindikaji wa habari katika mitandao ya kompyuta, mifumo ya kompyuta ya kibinafsi na kompyuta, ambayo imedhamiriwa. GOST 28147-89.

Algorithm hii ya ubadilishaji wa data ya kriptografia ni algoriti ya 64-bit yenye ufunguo wa 256-bit, iliyoundwa kwa ajili ya utekelezaji wa maunzi na programu, inakidhi mahitaji ya kriptografia na haiwekei vikwazo kwa kiwango cha usiri wa taarifa iliyolindwa.

Wakati wa kuelezea algorithm, nukuu ifuatayo hutumiwa:

L na R - mlolongo kidogo;
LR ni muunganisho wa mfuatano L na R, ambamo biti za mlolongo R hufuata biti za mlolongo L;
(+) - bitwise kuongeza modulo 2 ("kipekee AU operesheni");
[+] - nyongeza ya nambari 32-bit modulo 2 32;
(+) - nyongeza ya nambari 32-bit modulo 2 32 -1.

Nambari zinafupishwa kulingana na kanuni ifuatayo:

A [+] B = A + B ikiwa A + B< 2 32 ,
A [+] B = A + B - 2 32 ikiwa A + B >= 2 32 . A (+) B = A + B ikiwa A + B< 2^32 - 1, A {+} B = A + B - (2^32 - 1), если A + B >= 2^32 - 1.

Algorithm hutoa njia nne za kufanya kazi:

Kwa vyovyote vile, kitufe cha 256-bit K kinatumika kusimba data, ambayo inawakilishwa kama funguo nane za 32-bit K i:

K = K 7 K 6 K 5 K 4 K 3 K 2 K 1 K 0.

Usimbuaji unafanywa kwa kutumia ufunguo sawa na usimbaji fiche, lakini mchakato huo ni kinyume cha mchakato wa usimbaji data.

Njia rahisi ya uingizwaji

Njia ya kwanza na rahisi ni mbadala. Data itakayosimbwa imegawanywa katika vizuizi 64-bit. Utaratibu wa usimbuaji wa kizuizi cha data wazi T 0 inajumuisha mizunguko 32 (j=1...32).

Block T 0 imegawanywa katika mlolongo mbili wa bits 32: B (0) A (0), ambapo B (0) ni bits ya kushoto au ya juu, A (0) ni bits ya kulia au ya chini.

Mifuatano hii imeingizwa kwenye viendeshi N 1 na N 2 kabla ya kuanza kwa mzunguko wa kwanza wa usimbaji fiche.

Mzunguko wa kwanza (j=1) wa utaratibu wa usimbaji fiche wa uzuiaji wa data wa biti 64 unaelezewa na fomula zifuatazo:

Hapa ninaashiria nambari ya kurudia (i = 1, 2,..., 32).

Chaguo za kukokotoa f inaitwa kazi ya usimbaji fiche. Hoja yake ni jumla, modulo 2, ya nambari 32 A(i), iliyopatikana katika hatua ya awali ya kurudia, na nambari muhimu X(j) (kipimo cha kila moja ya nambari hizi ni tarakimu 32).

Kazi ya usimbaji fiche inahusisha shughuli mbili kwenye jumla inayotokana ya 32-bit. Operesheni ya kwanza inaitwa uingizwaji wa K. Kizuizi cha kubadilisha K kinajumuisha nodi 8 K(1) ... K(8) zenye kumbukumbu ya biti 64 kila moja. Vekta ya 32-bit inayofika kwenye kizuizi cha uingizwaji imegawanywa katika vekta 8 zinazofuatana za 4-bit, ambayo kila moja inabadilishwa kuwa vekta 4-bit na nodi inayolingana ya uingizwaji, ambayo ni jedwali la nambari 16 katika safu 0. .15.

Vekta ya pembejeo hubainisha anwani ya safu mlalo kwenye jedwali, nambari ambayo ni vekta ya pato. Vekta 4 za pato kisha huunganishwa kwa mpangilio katika vekta 32-bit. Jedwali la kuzuia mbadala K lina vipengele muhimu ambavyo ni vya kawaida kwenye mtandao wa kompyuta na hubadilishwa mara chache.

Operesheni ya pili ni mabadiliko ya mzunguko kuelekea upande wa kushoto wa vekta ya 32-bit iliyopatikana kama matokeo ya uingizwaji wa K. Kizuizi cha biti 64 cha data iliyosimbwa T sh inawakilishwa kama T sh = A (32) B (32).

Vitalu vilivyobaki vya data wazi katika hali rahisi ya uingizwaji vimesimbwa kwa njia ile ile.

Tafadhali kumbuka kuwa hali rahisi ya uingizwaji inaweza kutumika tu kusimba data katika hali chache. Kesi hizi ni pamoja na kutoa ufunguo na kuusimba kwa njia fiche kwa utoaji wa ulinzi wa kuiga (ulinzi dhidi ya uwekaji wa data ya uwongo) kwa upitishaji wa njia za mawasiliano au uhifadhi kwenye kumbukumbu ya kompyuta.

Hali ya Gamma

Data iliyofunguliwa, iliyogawanywa katika vizuizi vya biti 64 T(i) (i=1, 2,..., m, ambapo m huamuliwa na kiasi cha data iliyosimbwa), imesimbwa kwa njia fiche katika hali ya gamma kwa kuongeza kidogo modulo 2 na gamma cipher Гш, ambayo huzalishwa katika vitalu vya bits 64, yaani, Гш = (Г (1), Г (2),..., Г(i),...,Г(m)).

Mlinganyo wa usimbaji data katika hali ya gamma unaweza kuwasilishwa kama ifuatavyo:

Ш(i) = A (Y(i-1) [+] C2, Z(i-1) (+) C1) (+) T(i) = Г(i) (+) T(i) .
Hapa Ш(i) ni kizuizi cha 64-bit cha maandishi ya siri,
Kazi ya usimbaji fiche katika hali rahisi ya uingizwaji (hoja za kazi hii ni nambari mbili za 32-bit),
C1 na C2 ni vitu vya kudumu vilivyoainishwa katika GOST 28147-89,
Y(i) na Z(i) ni kiasi ambacho hubainishwa mara kwa mara huku gamma inapoundwa kama ifuatavyo:
(Y(0), Z(0)) = A(S), ambapo S ni mfuatano wa binary wa biti 64 (ujumbe wa kusawazisha);
(Y(i), Z(i)) = (Y(i-1) [+] C2, Z(i-1) (+) C1) kwa i = 1, 2,...,m.

Usimbuaji wa data unawezekana tu mbele ya ujumbe wa maingiliano, ambayo sio kipengele cha siri cha siri na inaweza kuhifadhiwa kwenye kumbukumbu ya kompyuta au kupitishwa kupitia njia za mawasiliano pamoja na data iliyosimbwa.

Hali ya Gamma yenye maoni

Hali michezo ya kubahatisha na maoni ni sawa na hali ya gamma. Kama ilivyo katika hali ya gamma, data iliyofunguliwa, iliyogawanywa katika vizuizi 64-bit T(i) (i=1, 2,..., m, ambapo m imedhamiriwa na kiasi cha data iliyosimbwa), imesimbwa kwa njia fiche kwa kuongeza kidogo modulo. 2 na gamma cipher Г sh, ambayo hutolewa kwa vitalu vya biti 64:

G w = (G(1),G(2),...,G(i),...,G(m)).

Idadi ya tarakimu za binary katika kizuizi cha T(m) inaweza kuwa chini ya 64, ilhali sehemu ya cipher gamut isiyotumika kwa usimbaji fiche kutoka kwa kizuizi cha G(m) hutupwa.

Mlinganyo wa usimbaji data katika modi ya gamma iliyofungwa inaweza kuwasilishwa kama ifuatavyo:


Hapa Ш(i) ni kizuizi cha 64-bit cha maandishi ya siri,
A - kazi ya usimbuaji katika hali rahisi ya uingizwaji. Hoja ya kazi katika hatua ya kwanza ya algorithm ya kurudia ni ujumbe wa upatanishi wa 64-bit, na katika hatua zote zinazofuata ni kizuizi cha awali cha data iliyosimbwa Ш(i-1).

Maendeleo ya kuingiza kuiga

Mchakato wa uzalishaji imitovstaki ni sawa kwa aina zozote za usimbaji data.

Uingizaji wa kuiga ni kizuizi cha p bits (kuiga kuingizwa Ir), ambayo hutolewa ama kabla ya kusimba ujumbe mzima, au sambamba na usimbaji wa block-block. Vitalu vya kwanza vya data wazi vinavyoshiriki katika uzalishaji wa kuingiza kuiga vinaweza kuwa na taarifa za huduma (kwa mfano, sehemu ya anwani, wakati, ujumbe wa maingiliano) na hazijasimbwa. Thamani ya parameter p (idadi ya biti za binary katika uingizaji wa simulation) imedhamiriwa na mahitaji ya cryptographic, kwa kuzingatia ukweli kwamba uwezekano wa kuweka kuingiliwa kwa uongo ni sawa na 1/2 ^ p.

Ili kupata uingizaji wa kuiga, data wazi imewasilishwa kwa namna ya vitalu vya 64-bit T (i) (i = 1, 2,..., m, ambapo m imedhamiriwa na kiasi cha data iliyosimbwa). Kizuizi cha kwanza cha data wazi T(1) hupitia mabadiliko yanayolingana na mizunguko 16 ya kwanza ya algoriti ya usimbaji katika hali rahisi ya uingizwaji. Zaidi ya hayo, ufunguo unaotumiwa kusimba data kwa njia fiche hutumika kama ufunguo wa kuunda kiingilio cha kuiga.

Nambari ya biti-64 iliyopatikana baada ya mizunguko 16 ya operesheni inafupishwa modulo 2 na kizuizi cha pili cha data wazi T(2). Matokeo ya majumuisho yanakabiliwa tena na mabadiliko yanayolingana na mizunguko 16 ya kwanza ya algorithm ya usimbuaji katika hali rahisi ya uingizwaji. Nambari inayotokana ya 64-bit inafupishwa modulo 2 na kizuizi cha tatu cha data wazi T(3), nk. Kizuizi cha mwisho T(m), ikiwa ni lazima, kilichowekwa kwa kizuizi kamili cha 64-bit na sifuri, kinafupishwa modulo 2 na matokeo ya kazi katika hatua ya m-1, baada ya hapo imesimbwa kwa njia rahisi ya uingizwaji zaidi ya ya kwanza. Mizunguko 16 ya algorithm. Kutoka kwa nambari inayotokana ya 64-bit, sehemu ya Ir ya urefu wa p bits imechaguliwa.

Uingizaji wa kuiga Ir hupitishwa kupitia njia ya mawasiliano au kwenye kumbukumbu ya kompyuta baada ya data iliyosimbwa. Data iliyosimbwa iliyopokelewa imesimbwa, na kutoka kwa vizuizi vilivyopokelewa vya data wazi T(i), uingizaji unaoiga wa Ir huzalishwa, ambao hulinganishwa na uingizaji ulioigwa wa Ir uliopokewa kutoka kwa njia ya mawasiliano au kutoka kwa kumbukumbu ya kompyuta. viingilio havilingani, data yote iliyosimbwa inachukuliwa kuwa sivyo.

Algorithm ya usimbuaji wa GOST 28147-89, matumizi yake na utekelezaji wa programu kwa kompyuta kwenye jukwaa la Intel x86.


Andrey Vinokurov

Maelezo ya algorithm.

Masharti na uteuzi.

Maelezo ya kiwango cha usimbuaji wa Shirikisho la Urusi yamo katika hati ya kuvutia sana inayoitwa "Cryptographic conversion algorithm GOST 28147-89". Ukweli kwamba kwa jina lake badala ya neno "usimbuaji" kunaonekana wazo la jumla zaidi " ubadilishaji wa kriptografia ”, sio bahati mbaya hata kidogo. Mbali na taratibu kadhaa za usimbaji fiche zinazohusiana kwa karibu, hati inaelezea algoriti moja ya kutengeneza kuiga ingizo . Mwisho sio chochote zaidi ya mchanganyiko wa udhibiti wa siri, ambayo ni, nambari inayotokana na data asili kwa kutumia ufunguo wa siri kwa madhumuni ya kuiga ulinzi , au kulinda data dhidi ya mabadiliko ambayo hayajaidhinishwa.

Katika hatua tofauti za algorithms za GOST, data wanayofanya kazi inatafsiriwa na kutumika kwa njia tofauti. Katika baadhi ya matukio, vipengele vya data huchukuliwa kama safu za biti huru, katika hali zingine kama nambari kamili ambayo haijatiwa saini, katika zingine kama kipengele changamano kilichoundwa kinachojumuisha vipengele kadhaa rahisi. Kwa hiyo, ili kuepuka kuchanganyikiwa, ni muhimu kukubaliana juu ya notation iliyotumiwa.

Vipengele vya data katika kifungu hiki vimeteuliwa kwa herufi kubwa na mtindo wa italiki (kwa mfano, X) Kupitia | X| inaashiria ukubwa wa kipengele cha data X katika bits. Kwa hivyo, ikiwa tutafasiri kipengele cha data X Kama nambari kamili isiyo hasi, tunaweza kuandika ukosefu wa usawa ufuatao:.

Ikiwa kipengele cha data kina vipengele kadhaa vidogo, basi ukweli huu unaonyeshwa kama ifuatavyo: X=(X 0 ,X 1 ,…,Xn –1)=X 0 ||X 1 ||…||Xn-1 . Mchakato wa kuchanganya vipengele kadhaa vya data katika moja huitwa mshikamano data na inaonyeshwa kwa ishara "||". Kwa kawaida, uhusiano ufuatao lazima uridhishwe kwa ukubwa wa vipengele vya data: | X|=|X 0 |+|X 1 |+…+|Xn-1 |. Wakati wa kubainisha vipengele vya data changamano na uendeshaji wa kuunganisha, vipengele vya data vilivyojumuishwa vimeorodheshwa kwa mpangilio wa kupanda wa utangulizi. Kwa maneno mengine, ikiwa tutafasiri kipengele cha mchanganyiko na vipengele vyake vyote vya data kama nambari kamili ambazo hazijasainiwa, basi tunaweza kuandika usawa ufuatao:

Katika algoriti, kipengele cha data kinaweza kufasiriwa kama safu ya biti za kibinafsi, ambapo biti huonyeshwa kwa herufi sawa na safu, lakini katika toleo la herufi ndogo, kama inavyoonyeshwa katika mfano ufuatao:

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

Kwa hivyo, ikiwa umeona, kinachojulikana GOST kimepitishwa. "kidogo-endian" nambari za tarakimu, i.e. Ndani ya maneno ya data ya biti nyingi, biti za kibinafsi na vikundi vya nambari za chini za biti hazina umuhimu mdogo. Hii imesemwa moja kwa moja katika aya ya 1.3 ya kiwango: "Wakati wa kuongeza na kubadilisha vekta za binary, vitu muhimu zaidi huchukuliwa kuwa vijiti vya viendeshi vilivyo na idadi kubwa." Zaidi ya hayo, vifungu vya kiwango cha 1.4, 2.1.1 na vingine vinahitaji kuanza kujaza rejista za hifadhi za kifaa cha usimbaji fiche na data kutoka kwa chini kabisa, i.e. kategoria zisizo muhimu. Hasa utaratibu huo wa nambari unapitishwa katika usanifu wa Intel x86 microprocessor, ndiyo sababu wakati wa kutekeleza cipher katika programu kwenye usanifu huu, hakuna vibali vya ziada vya bits ndani ya maneno ya data inahitajika.

Ikiwa operesheni fulani ambayo ina maana ya mantiki inafanywa kwa vipengele vya data, basi inachukuliwa kuwa operesheni hii inafanywa kwenye bits zinazofanana za vipengele. Kwa maneno mengine A B=(a 0 b 0 ,a 1 b 1 ,…,n –1 b n-1), wapi n=|A|=|B|, na ishara "" inaashiria operesheni ya kimantiki ya binary; kama sheria, hii inamaanisha upasuaji kipekee au , ambayo pia ni operesheni ya muhtasari wa modulo 2:

Mantiki ya kujenga cipher na muundo wa habari muhimu ya GOST.

Ikiwa utasoma kwa uangalifu GOST 28147-89 ya asili, utaona kuwa ina maelezo ya algorithms katika viwango kadhaa. Juu kabisa kuna algorithms ya vitendo iliyoundwa kusimba safu za data na kukuza viingilio vya kuiga kwao. Zote zinategemea algorithms tatu za kiwango cha chini, zinazoitwa katika maandishi ya GOST mizunguko . Algorithms hizi za kimsingi zinarejelewa katika nakala hii kama mizunguko ya msingi kuzitofautisha na mizunguko mingine yote. Wana majina na alama zifuatazo, za mwisho zimepewa kwenye mabano na maana yao itaelezewa baadaye:

  • mzunguko wa encryption (32-З);
  • mzunguko wa usimbuaji (32-P);
  • mzunguko wa uzalishaji wa kuingiza kuiga (16-Z).

Kwa upande mwingine, kila moja ya mizunguko ya msingi ni marudio mengi ya utaratibu mmoja, unaohitajika kwa uhakika zaidi katika kazi hii. hatua kuu ya ubadilishaji wa crypto .

Kwa hivyo, ili kuelewa GOST, unahitaji kuelewa mambo matatu yafuatayo:

  • nini kilitokea hatua ya msingi ubadilishaji wa crypto;
  • jinsi mizunguko ya msingi inavyoundwa kutoka kwa hatua za msingi;
  • kama tatu mizunguko ya msingi algorithms zote za vitendo za GOST zinaongezwa.

Kabla ya kuendelea na kujifunza masuala haya, tunapaswa kuzungumza juu ya habari muhimu inayotumiwa na algorithms ya GOST. Kwa mujibu wa kanuni ya Kirchhoff, ambayo imeridhika na ciphers zote za kisasa zinazojulikana kwa umma kwa ujumla, ni usiri wake unaohakikisha usiri wa ujumbe uliosimbwa. Katika GOST, habari muhimu ina miundo miwili ya data. Licha ya ukweli ufunguo , muhimu kwa sifa zote, pia ina meza mbadala . Chini ni sifa kuu za miundo muhimu ya GOST.

Hatua kuu ya ubadilishaji wa crypto.

Hatua ya msingi ya ubadilishaji wa crypto kimsingi ni taarifa inayobainisha ubadilishaji wa kizuizi cha data cha 64-bit. Kigezo cha ziada cha mwendeshaji huyu ni kizuizi cha 32-bit, ambacho hutumiwa kama kipengele muhimu. Mchoro wa algorithm ya hatua kuu unaonyeshwa kwenye Mchoro 1.


Kielelezo 1. Mpango wa hatua kuu ya uongofu wa crypto-algorithm ya GOST 28147-89.

Ifuatayo ni maelezo ya algorithm ya hatua kuu:

Hatua ya 0

  • N- kizuizi cha data cha 64-bit kilichobadilishwa, wakati wa utekelezaji wa hatua ndogo yake ( N 1) na mwandamizi ( N 2) sehemu zinachukuliwa kama nambari kamili za 32-bit ambazo hazijasainiwa. Kwa hivyo, tunaweza kuandika N=(N 1 ,N 2).
  • X- kipengee muhimu cha 32-bit;

Hatua ya 1

Nyongeza na ufunguo. Nusu ya chini ya block iliyobadilishwa imeongezwa modulo 2 32 na kipengele muhimu kilichotumiwa kwenye hatua, matokeo huhamishiwa kwenye hatua inayofuata;

Hatua ya 2

Kuzuia uingizwaji. Thamani ya biti-32 iliyopatikana katika hatua ya awali inafasiriwa kama safu ya vizuizi nane vya msimbo wa 4-bit: S=(S 0 , S 1 , S 2 , S 3 , S 4 , S 5 , S 6 , S 7), na S 0 ina 4 mdogo zaidi, na S 7-4 sehemu muhimu zaidi S.

Ifuatayo, thamani ya kila moja ya vitalu nane inabadilishwa na mpya, ambayo huchaguliwa kutoka kwa meza ya uingizwaji kama ifuatavyo: thamani ya kuzuia. S i mabadiliko kwa S i- kipengee kwa mpangilio (nambari kutoka sifuri) i-nodi hiyo ya uingizwaji (yaani. i-th mstari wa meza ya uingizwaji, kuhesabu pia kutoka mwanzo). Kwa maneno mengine, kipengee kutoka kwa jedwali la uingizwaji na nambari ya safu mlalo sawa na nambari ya kizuizi kinachobadilishwa na nambari ya safu wima sawa na thamani ya kizuizi kinachobadilishwa kama nambari kamili isiyo ya hasi ya biti 4 huchaguliwa kama mbadala. kwa thamani ya block. Hii hufanya saizi ya jedwali la uingizwaji kuwa wazi: idadi ya safu ndani yake ni sawa na idadi ya vitu 4-bit kwenye kizuizi cha data cha 32-bit, ambayo ni nane, na idadi ya safu wima ni sawa na nambari. maadili tofauti ya block 4-bit data, ambayo inajulikana kuwa 2 4, kumi na sita.

Hatua ya 3

Zungusha biti 11 upande wa kushoto. Matokeo ya hatua ya awali hubadilishwa kwa mzunguko kwa biti 11 kuelekea biti muhimu zaidi na hupitishwa kwa hatua inayofuata. Katika mchoro wa algorithm, ishara inaonyesha kazi ya kubadilisha kwa mzunguko hoja yake 11 bits upande wa kushoto, i.e. kuelekea vyeo vya juu.

Hatua ya 4

Nyongeza ya Bitwise: Thamani iliyopatikana katika hatua ya 3 inaongezwa bitwise modulo 2 huku nusu ya juu ya kizuizi ikibadilishwa.

Hatua ya 5

Shift kando ya mlolongo: sehemu ya chini ya block iliyobadilishwa inabadilishwa mahali pa mzee, na matokeo ya hatua ya awali imewekwa mahali pake.

Hatua ya 6

Thamani inayotokana ya block iliyogeuzwa inarejeshwa kama matokeo ya kutekeleza algorithm ya hatua kuu ya ubadilishaji wa crypto.

Mizunguko ya kimsingi ya mabadiliko ya kriptografia.

Kama ilivyoonyeshwa mwanzoni mwa kifungu hiki, GOST ni ya darasa la misimbo ya kuzuia, ambayo ni, kitengo cha usindikaji wa habari ndani yake ni kizuizi cha data. Kwa hivyo, ni busara kabisa kutarajia kwamba itafafanua algorithms kwa mabadiliko ya kriptografia, ambayo ni, kwa usimbaji fiche, decrypting na "uhasibu" kwa mchanganyiko wa udhibiti wa block moja ya data. Algorithms hizi zinaitwa mizunguko ya msingi GOST, ambayo inasisitiza umuhimu wao wa msingi kwa ajili ya ujenzi wa cipher hii.

Vitanzi vya msingi vinajengwa kutoka hatua kuu mabadiliko ya kriptografia yaliyojadiliwa katika sehemu iliyotangulia. Wakati wa hatua kuu, kipengele kimoja tu cha 32-bit hutumiwa, wakati ufunguo wa GOST una vipengele nane vile. Kwa hiyo, ili ufunguo utumike kikamilifu, kila loops za msingi lazima zitekeleze mara kwa mara hatua kuu na vipengele vyake mbalimbali. Wakati huo huo, inaonekana asili kabisa kwamba katika kila mzunguko wa msingi vitu vyote muhimu vinapaswa kutumika kwa idadi sawa ya nyakati; kwa sababu za nguvu ya cipher, nambari hii inapaswa kuwa zaidi ya moja.

Mawazo yote yaliyotolewa hapo juu, kwa kuzingatia tu akili ya kawaida, yaligeuka kuwa sahihi. Vitanzi vya msingi vinajumuisha utekelezaji unaorudiwa hatua kuu kutumia vipengele muhimu tofauti na hutofautiana kutoka kwa kila mmoja tu kwa idadi ya marudio ya hatua na utaratibu ambao vipengele muhimu hutumiwa. Chini ni agizo hili kwa mizunguko mbalimbali.

Mzunguko wa usimbaji 32-Z:

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


Kielelezo 2a. Mpango wa mzunguko wa usimbuaji 32-З

Mzunguko wa kusimbua 32-P:

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


Kielelezo 2b. Mpango wa mzunguko wa usimbuaji wa 32-P

Mzunguko wa uzalishaji wa kuingiza kuiga 16-З:

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


Kielelezo 2c. Mpango wa mzunguko wa uzalishaji wa kuiga kuingiza 16-Z.

Kila moja ya mizunguko ina muundo wake wa alphanumeric unaolingana na muundo " n-X", ambapo kipengele cha kwanza cha uteuzi ( n), inabainisha idadi ya marudio ya hatua kuu katika mzunguko, na kipengele cha pili cha uteuzi ( X), herufi, hubainisha mpangilio wa usimbaji fiche (“Z”) au usimbuaji (“P”) katika matumizi ya vipengele muhimu. Agizo hili linahitaji maelezo zaidi:

Mzunguko wa usimbuaji lazima uwe kinyume cha mzunguko wa usimbaji fiche, yaani, utumizi mfuatano wa mizunguko hii miwili kwa kizuizi kiholela lazima hatimaye itoe kizuizi asili, ambacho kinaonyeshwa katika uhusiano ufuatao: C 32-Р ( C 32-З ( T))=T, Wapi T- kizuizi cha data cha 64-bit, C X ( T) - matokeo ya utekelezaji wa kitanzi X juu ya kizuizi cha data T. Ili kutimiza hali hii kwa algorithms sawa na GOST, ni muhimu na ya kutosha kwamba utaratibu wa matumizi ya vipengele muhimu na mzunguko unaofanana ni kinyume. Ni rahisi kuthibitisha uhalali wa hali ya maandishi kwa kesi inayozingatiwa kwa kulinganisha mlolongo hapo juu kwa mzunguko wa 32-З na 32-Р. Tokeo moja la kuvutia linafuata kutoka kwa hapo juu: mali ya mzunguko kuwa kinyume na mzunguko mwingine ni sawa, yaani, mzunguko wa 32-Z ni kinyume na mzunguko wa 32-P. Kwa maneno mengine, usimbuaji wa kizuizi cha data kinaweza kufanywa kinadharia kwa kutumia mzunguko wa usimbuaji, katika hali ambayo usimbuaji wa kizuizi cha data lazima ufanywe na mzunguko wa usimbaji fiche. Kati ya mizunguko miwili ya kinyume, moja inaweza kutumika kwa usimbuaji, basi ya pili lazima itumike kusimbua data, hata hivyo, kiwango cha GOST 28147-89 kinapeana majukumu kwa mizunguko na haimpi mtumiaji haki ya kuchagua katika suala hili. .

Mzunguko wa kutengeneza uingizaji wa kuiga ni nusu ya muda mrefu kama mizunguko ya usimbuaji, mpangilio wa kutumia vitu muhimu ndani yake ni sawa na katika hatua 16 za kwanza za mzunguko wa usimbuaji, ambayo ni rahisi kudhibitisha kwa kuzingatia mlolongo hapo juu, kwa hivyo. agizo hili katika muundo wa mzunguko umewekwa na herufi sawa "Z".

Mipango ya mizunguko ya kimsingi imeonyeshwa kwenye Mchoro 2a-c. Kila mmoja wao huchukua kama hoja na kurudisha kama matokeo ya data 64-bit, iliyoonyeshwa kwenye michoro. N. Hatua ya Alama ( N,X) inaashiria utekelezaji wa hatua kuu ya ubadilishaji wa crypto kwa kuzuia data N kwa kutumia kipengele muhimu X. Kuna tofauti moja zaidi kati ya mizunguko ya hesabu ya usimbuaji na uingizaji wa kuiga, ambayo haijatajwa hapo juu: mwishoni mwa mizunguko ya msingi ya usimbuaji, sehemu za juu na za chini za kizuizi cha matokeo hubadilishwa, hii ni muhimu kwa urekebishaji wao wa pande zote.

Njia za msingi za usimbaji fiche.

GOST 28147-89 hutoa njia tatu zifuatazo za usimbuaji data:

  • uingizwaji rahisi,
  • michezo ya kubahatisha,
  • kucheza na maoni,

na hali moja ya ziada ya kutengeneza viingilio vya kuiga.

Katika mojawapo ya njia hizi, data inasindika katika vitalu vya bits 64, ambayo safu imegawanywa na inakabiliwa na mabadiliko ya cryptographic, ndiyo sababu GOST inahusu kuzuia ciphers. Hata hivyo, katika hali mbili za gamma inawezekana kusindika kizuizi kisicho kamili cha data chini ya baiti 8 kwa ukubwa, ambayo ni muhimu wakati wa kusimba safu za data za ukubwa wa kiholela, ambazo haziwezi kuwa nyingi za 8 byte.

Kabla ya kuendelea na mjadala wa algoriti maalum za mabadiliko ya kriptografia, ni muhimu kufafanua nukuu inayotumika kwenye michoro katika sehemu zifuatazo:

T O, T w - safu za data iliyo wazi na iliyosimbwa, mtawaliwa;

, – i- vizuizi vya 64-bit vya data wazi na iliyosimbwa, mtawaliwa: , , block ya mwisho inaweza kuwa haijakamilika:;

n- idadi ya vizuizi 64 katika safu ya data;

C X - kazi ya kubadilisha kizuizi cha data 64-bit kwa kutumia algorithm ya mzunguko wa msingi "X".

Sasa tutaelezea njia kuu za usimbuaji:

Uingizwaji rahisi.

Usimbaji fiche katika hali hii inajumuisha kutumia mzunguko wa 32-З kwa vizuizi vya data wazi, usimbuaji - mzunguko wa 32-Р kwa vizuizi vya data iliyosimbwa. Hii ndio njia rahisi zaidi; vizuizi vya data-64 vinachakatwa kwa kujitegemea. Miradi ya algoriti za usimbaji fiche na usimbuaji katika hali rahisi ya uingizwaji zinaonyeshwa kwenye Kielelezo 3a na b, mtawalia; ni ndogo na hazihitaji maoni.


Kuchora. 3a. Algorithm ya usimbaji data katika hali rahisi ya uingizwaji


Kuchora. 3b. Algorithm ya kusimbua data katika hali rahisi ya uingizwaji

Saizi ya safu ya data iliyo wazi au iliyosimbwa, chini ya usimbaji fiche au usimbuaji, mtawalia, lazima iwe kizidishio cha biti 64: | T o |=| T w |=64· n , baada ya kufanya operesheni, ukubwa wa safu ya data inayotokana haibadilika.

Njia rahisi ya usimbaji fiche ina sifa zifuatazo:

  • Kwa kuwa vizuizi vya data vimesimbwa kwa njia fiche bila ya kila kimoja na nafasi yake katika safu ya data, usimbaji fiche vizuizi viwili vya maandishi wazi husababisha vizuizi vinavyofanana vya maandishi ya siri na kinyume chake. Sifa iliyobainishwa itamruhusu mchambuzi kufanya hitimisho kuhusu utambulisho wa vizuizi asili vya data ikiwa atakumbana na vizuizi vinavyofanana katika safu ya data iliyosimbwa, ambayo haikubaliki kwa nambari mbaya ya siri.
  • Ikiwa urefu wa safu ya data iliyosimbwa sio kizidishio cha baiti 8 au biti 64, shida itatokea ya jinsi na jinsi ya kuongeza kizuizi cha data kisichokamilika cha safu hadi biti 64 kamili. Kazi hii sio rahisi kama inavyoonekana mwanzoni. Suluhisho za wazi kama vile "kuongeza kizuizi kisicho kamili kwa biti sifuri" au, kwa ujumla zaidi, "kuongeza kizuizi kisicho kamili na mchanganyiko thabiti wa sifuri na biti moja" zinaweza, chini ya hali fulani, kumpa cryptanalyst fursa ya kutumia njia za nguvu kubaini. yaliyomo kwenye kizuizi hiki kisicho kamili, na ukweli huu unamaanisha kupungua kwa cipher ya usalama. Kwa kuongeza, urefu wa maandishi ya siri utabadilika, na kuongezeka hadi nambari kamili ya karibu zaidi ya biti 64, ambayo mara nyingi haifai.

Kwa mtazamo wa kwanza, vipengele vilivyo hapo juu hufanya iwe vigumu kutumia hali rahisi ya uingizwaji, kwa sababu inaweza tu kutumika kusimba safu za data na saizi ambayo ni nyingi ya biti 64 na haina vizuizi vya 64-bit. Inaonekana kwamba kwa data yoyote halisi haiwezekani kuhakikisha utimilifu wa masharti haya. Hii ni karibu kweli, lakini kuna ubaguzi mmoja muhimu sana: kumbuka kwamba ukubwa wa ufunguo ni ka 32, na ukubwa wa meza ya uingizwaji ni 64 byte. Kwa kuongeza, kuwepo kwa vitalu vya mara kwa mara 8-byte katika ufunguo au meza ya uingizwaji itaonyesha ubora wao mbaya sana, hivyo kurudia vile hawezi kuwepo katika vipengele muhimu vya kweli. Kwa hivyo, tuligundua kuwa hali rahisi ya uingizwaji inafaa kabisa kwa usimbuaji wa habari muhimu, haswa kwani njia zingine sio rahisi kwa kusudi hili, kwani zinahitaji uwepo wa kipengee cha data cha kusawazisha - ujumbe wa kusawazisha (tazama sehemu inayofuata) . Nadhani yetu ni sahihi; GOST inaagiza utumizi wa modi rahisi ya uingizwaji kwa ajili ya kusimba data muhimu pekee.

Gumming.

Unawezaje kuondokana na mapungufu ya mode rahisi ya uingizwaji? Ili kufanya hivyo, inahitajika kufanya uwezekano wa kusimba vizuizi na saizi ya chini ya bits 64 na uhakikishe kuwa kizuizi cha maandishi inategemea nambari yake, kwa maneno mengine, randomize mchakato wa usimbaji fiche. Katika GOST hii inafanikiwa kwa njia mbili tofauti katika njia mbili za usimbuaji, kutoa michezo ya kubahatisha . Gumming - huu ni uwekaji (kuondolewa) wa kiwango cha kriptografia kwenye data iliyo wazi (iliyosimbwa), yaani, mlolongo wa vipengele vya data vinavyotengenezwa kwa kutumia algoriti ya kriptografia ili kupata data iliyosimbwa (wazi). Ili kutumia gamma wakati wa usimbaji fiche na kuiondoa wakati wa kusimbua, shughuli za mfumo wa jozi kinyume na pande zote lazima zitumike, kwa mfano, kuongeza na kutoa modulo 2 64 kwa vizuizi vya data 64-bit. Katika GOST, kwa kusudi hili, operesheni ya kuongeza kidogo modulo 2 hutumiwa, kwa kuwa ni kinyume chake yenyewe na, zaidi ya hayo, inatekelezwa kwa urahisi katika vifaa. Gamma hutatua shida zote mbili zilizotajwa: kwanza, vitu vyote vya gamma ni tofauti kwa safu halisi zilizosimbwa na, kwa hivyo, matokeo ya usimbaji fiche hata vizuizi viwili vinavyofanana katika safu moja ya data itakuwa tofauti. Pili, ingawa vitu vya gamma vinatolewa kwa sehemu sawa za biti 64, sehemu ya kizuizi kama hicho yenye saizi sawa na saizi ya kizuizi kilichosimbwa inaweza kutumika.

Sasa hebu tuende moja kwa moja kwenye maelezo ya hali ya gamma. Gamma ya modi hii inapatikana kama ifuatavyo: kwa msaada wa jenereta ya mlolongo wa nambari ya algorithmic ya kawaida (RNGN), vizuizi vya data 64-bit vinatolewa, ambavyo hubadilishwa kwa kutumia mzunguko wa 32-3, ambayo ni, iliyosimbwa kwa njia rahisi. hali ya uingizwaji, na kusababisha vitalu vya gamma. Kwa sababu ya ukweli kwamba utumaji na uondoaji wa gamma unafanywa kwa kutumia upekee au utendakazi sawa, algoriti za usimbaji na usimbuaji katika hali ya gamma zinafanana, mpango wao wa jumla unaonyeshwa kwenye Mchoro 4.

RGPG inayotumiwa kutoa kiwango ni kazi inayorudiwa: - vitu vya mlolongo wa kawaida, f- kazi ya mabadiliko. Kwa hivyo, swali linatokea juu ya uanzishaji wake, ambayo ni, juu ya kipengele. Kwa kweli, kipengele hiki cha data ni kigezo cha algorithm cha modi za gamma; katika michoro imeteuliwa kama S, na inaitwa cryptography landanisha kutuma , na katika GOST yetu - kujaza awali moja ya rejista za encoder. Kwa sababu fulani, watengenezaji wa GOST waliamua kutumia sio ujumbe wa maingiliano moja kwa moja kuanzisha RGFC, lakini matokeo ya ubadilishaji wake kulingana na mzunguko wa 32-Z: . Mlolongo wa mambo yanayotokana na RGHR inategemea kabisa kujaza kwake kwa awali, yaani, vipengele vya mlolongo huu ni kazi ya idadi yao na kujaza kwa awali kwa RGHR: wapi. f i(X)=f(f i –1 (X)), f 0 (X)=X. Kwa kuzingatia mabadiliko kwa kutumia algorithm rahisi ya uingizwaji, utegemezi wa ufunguo pia huongezwa:

Wapi Г ii- kipengele cha mizani, K- ufunguo.

Kwa hivyo, mlolongo wa vipengele vya gamma vya kutumika katika hali ya gamma huamuliwa kipekee na data muhimu na ujumbe wa ulandanishi. Kwa kawaida, ili utaratibu wa usimbaji fiche uweze kutenduliwa, ujumbe sawa wa ulandanishi lazima utumike katika michakato ya usimbaji na usimbuaji. Kutoka kwa hitaji la upekee wa gamma, kushindwa kufuata ambayo husababisha kupungua kwa janga kwa nguvu ya cipher, inafuata kwamba ili kusimba safu mbili tofauti za data kwenye ufunguo huo huo, ni muhimu kuhakikisha matumizi ya ujumbe tofauti wa ulandanishi. Hii husababisha hitaji la kuhifadhi au kusambaza ujumbe wa maingiliano kando ya njia za mawasiliano pamoja na data iliyosimbwa, ingawa katika hali zingine maalum inaweza kuamuliwa mapema au kuhesabiwa kwa njia maalum ikiwa usimbaji wa safu mbili kwa ufunguo sawa haujajumuishwa.

Sasa hebu tuangalie kwa karibu RGPC iliyotumiwa katika GOST kuzalisha vipengele vya gamut. Kwanza kabisa, ni lazima ieleweke kwamba haihitajiki kutoa sifa zozote za takwimu za mlolongo unaozalishwa wa nambari. RGHR iliundwa na watengenezaji wa GOST kulingana na hitaji la kutimiza masharti yafuatayo:

  • kipindi cha kurudia kwa mlolongo wa nambari zinazozalishwa na RGPC haipaswi kutofautiana sana (kwa maneno ya asilimia) kutoka kwa thamani ya juu iwezekanavyo kwa ukubwa wa kuzuia 2 64;
  • maadili ya karibu yaliyotolewa na RGPG lazima yatofautiane kutoka kwa kila mmoja, vinginevyo kazi ya cryptanalyst itarahisishwa;
  • RGPC inapaswa kuwa rahisi kutekeleza katika maunzi na programu kwenye aina za kawaida za vichakataji, ambazo nyingi zinajulikana kuwa 32-bit.

Kulingana na kanuni zilizoorodheshwa, waundaji wa GOST walitengeneza RGHR iliyofanikiwa sana, ambayo ina sifa zifuatazo:

Wapi C 0 =1010101 16 ;

Wapi C 1 =1010104 16 ;

Usajili katika nambari unaonyesha mfumo wake wa nambari, kwa hivyo viunga vilivyotumiwa katika hatua hii vimeandikwa kwa hexadecimal.

Usemi wa pili unahitaji maoni, kwani maandishi ya GOST yana kitu kingine: , na thamani sawa ya mara kwa mara C 1 . Lakini zaidi katika maandishi ya kiwango maoni yanatolewa kwamba, inageuka, chini ya operesheni ya kuchukua modulo iliyobaki 2 32 -1. hapo haieleweki kwa njia sawa na katika hisabati. Tofauti ni kwamba kulingana na GOST (2 32 -1) mod(2 32 –1)=(2 32 –1), si 0. Kwa kweli, hii hurahisisha utekelezaji wa fomula, na usemi sahihi wa kihisabati kwa ajili yake umetolewa hapo juu.

  • kipindi cha marudio ya mlolongo kwa sehemu ya chini ni 2 32, kwa sehemu ya zamani 2 32 -1, kwa mlolongo mzima kipindi ni 2 32 (2 32 -1), uthibitisho wa ukweli huu ni rahisi sana, pata. mwenyewe. Ya kwanza ya fomula mbili inatekelezwa kwa amri moja, ya pili, licha ya ugumu wake dhahiri, katika amri mbili kwa wasindikaji wote wa kisasa wa 32-bit - amri ya kwanza hufanya kawaida ya kuongeza modulo 2 32 na kuhifadhi kidogo ya kubeba, na ya pili. amri inaongeza kubeba kidogo kwa maana inayosababisha.

Mchoro wa algoriti ya usimbaji katika hali ya gamma umeonyeshwa kwenye Mchoro wa 4; hapa chini ni maelezo ya mpango huo:


Kielelezo 4. Algorithm ya usimbaji fiche (decrypting) data katika hali ya gamma.

Hatua ya 0

Inafafanua data ya ingizo ya hatua kuu ya ubadilishaji wa crypto:

  • T o(w) - safu ya data wazi (iliyosimbwa) ya saizi ya kiholela, iliyo chini ya utaratibu wa usimbuaji (decryption); wakati wa utaratibu, safu inabadilishwa katika sehemu 64-bit;
  • S kusawazisha ujumbe , kipengele cha data cha biti 64 kinachohitajika ili kuanzisha jenereta ya gamma;

Hatua ya 1

Mabadiliko ya awali ya ujumbe wa maingiliano, uliofanywa ili "kuifanya bila mpangilio", ambayo ni, kuondoa mifumo ya takwimu iliyopo ndani yake, matokeo yake hutumiwa kama ujazo wa awali wa RGPC;

Hatua ya 2

Hatua moja ya operesheni ya RGPC, kutekeleza algorithm yake ya kawaida. Katika hatua hii, mkubwa ( S 1) na mdogo ( S 0) sehemu za mlolongo wa data zinazalishwa kwa kujitegemea;

Hatua ya 3

Gumming. Kipengele kinachofuata cha 64-bit kinachozalishwa na RGPC kinakabiliwa na utaratibu wa usimbaji fiche kwa kutumia mzunguko wa 32-3, matokeo yake hutumika kama kipengele cha gamma kusimba (kusimbua) kizuizi kinachofuata cha data iliyofunguliwa (iliyosimbwa) ya ukubwa sawa.

Hatua ya 4

Matokeo ya algorithm ni safu ya data iliyosimbwa (iliyosimbwa).

Zifuatazo ni vipengele vya gamma kama hali ya usimbaji fiche:

  1. Vitalu sawa katika safu ya data iliyo wazi vitatoa vizuizi tofauti vya maandishi ya siri wakati yamesimbwa, ambayo itafanya iwezekane kuficha ukweli wa utambulisho wao.
  2. Kwa kuwa uwekaji wa juu wa gamma unatekelezwa kwa njia kidogo, usimbaji fiche wa kizuizi kidogo cha data unakamilishwa kwa urahisi kwa kusimba biti za sehemu hiyo kwa kutumia biti zinazolingana za kizuizi cha gamma. Kwa hivyo, ili kusimba kizuizi kisicho kamili cha biti 1, kulingana na kiwango, sehemu ndogo kutoka kwa kizuizi cha gamma inapaswa kutumika.
  3. Ujumbe wa kusawazisha unaotumiwa kwa usimbaji fiche lazima utumike kwa njia fulani ya kusimbua. Hii inaweza kupatikana kwa njia zifuatazo:
  • kuhifadhi au kusambaza ujumbe wa maingiliano pamoja na safu ya data iliyosimbwa, ambayo itasababisha kuongezeka kwa saizi ya safu ya data wakati imesimbwa kwa saizi ya ujumbe wa maingiliano, ambayo ni, kwa ka 8;
  • tumia thamani iliyotanguliwa ya ujumbe wa maingiliano au uizalishe kwa usawazishaji na chanzo na mpokeaji kulingana na sheria fulani, katika kesi hii hakuna mabadiliko katika saizi ya safu ya data iliyopitishwa au iliyohifadhiwa;

Njia zote mbili zinakamilishana, na katika hali hizo adimu ambapo ya kwanza, ya kawaida haifanyi kazi, ya pili, ya kigeni zaidi inaweza kutumika. Njia ya pili ina matumizi machache sana, kwani inawezekana kufanya ujumbe wa maingiliano kuamuliwa tu ikiwa hakuna safu zaidi ya moja ya data iliyosimbwa kwa seti fulani ya habari muhimu, ambayo haifanyiki mara nyingi. Pia si mara zote inawezekana kutoa ujumbe wa ulandanishi kwa kusawazisha kwenye chanzo na mpokeaji wa safu ya data, kwani inahitaji muunganisho mkali kwa kitu kwenye mfumo. Kwa hivyo, wazo linaloonekana kuwa sawa la kutumia nambari ya ujumbe uliopitishwa kama ujumbe wa maingiliano katika mfumo wa kusambaza ujumbe uliosimbwa haifai, kwani ujumbe unaweza kupotea na usifikie mpokeaji, kwa hali ambayo mifumo ya usimbuaji wa chanzo. na kipokezi kitatenganishwa. Kwa hivyo, katika kesi inayozingatiwa, hakuna njia mbadala ya kusambaza ujumbe wa maingiliano pamoja na ujumbe uliosimbwa.

Kwa upande mwingine, mfano wa kinyume unaweza kutolewa. Wacha tuseme usimbuaji wa data hutumiwa kulinda habari kwenye diski, na inatekelezwa kwa kiwango cha chini; ili kuhakikisha ufikiaji wa kujitegemea, data imesimbwa na sekta. Katika kesi hii, haiwezekani kuhifadhi ujumbe wa kusawazisha pamoja na data iliyosimbwa, kwani saizi ya sekta haiwezi kubadilishwa, lakini inaweza kuhesabiwa kama kazi fulani ya nambari ya kichwa iliyosomwa ya diski, nambari ya wimbo (silinda) na nambari ya sekta. kwenye wimbo. Katika kesi hii, ujumbe wa maingiliano umefungwa kwa nafasi ya sekta kwenye diski, ambayo haiwezekani kubadilika bila kurekebisha diski, yaani, bila kuharibu data juu yake.

Hali ya gamma ina kipengele kingine cha kuvutia. Katika hali hii, biti za safu ya data zimesimbwa kwa njia fiche bila ya kila mmoja. Kwa hivyo, kila sehemu ya maandishi hutegemea sehemu inayolingana ya maandishi wazi na, kwa kweli, nambari ya mlolongo wa biti katika safu: . Hii ina maana kwamba kubadilisha biti ya maandishi-siri hadi thamani kinyume kutasababisha mabadiliko sawa na thamani tofauti ya biti ya maandishi wazi:

ambapo inaashiria inverted kwa heshima na t thamani kidogo ().

Sifa hii humpa mshambulizi fursa, kwa kushawishi biti za maandishi-siri, kufanya mabadiliko yanayotabirika na hata yaliyolengwa kwa maandishi wazi yanayolingana yaliyopatikana baada ya kusimbua, bila kuwa na ufunguo wa siri. Hii inaonyesha ukweli unaojulikana sana katika cryptology kwamba usiri na uhalisi ni mali tofauti mifumo ya kriptografia . Kwa maneno mengine, sifa za mfumo wa siri ili kutoa ulinzi dhidi ya ufikiaji usioidhinishwa wa yaliyomo ya ujumbe na dhidi ya mabadiliko yasiyoidhinishwa kwa ujumbe ni huru na inaweza tu kuingiliana katika hali fulani. Hii ina maana kwamba kuna algoriti za kriptografia ambazo hutoa usiri fulani wa data iliyosimbwa na wakati huo huo hailinde dhidi ya mabadiliko kwa njia yoyote, na kinyume chake, kuhakikisha ukweli wa data na kwa njia yoyote kuzuia uwezo wa kujijulisha na. yao. Kwa sababu hii, mali inayozingatiwa ya hali ya gamma haipaswi kuzingatiwa kama hasara yake.

Gamma na maoni.

Njia hii ni sawa na modi ya gamma na inatofautiana nayo tu kwa njia ambayo vitu vya gamma vinatengenezwa - kipengee kinachofuata cha gamma hutolewa kama matokeo ya mabadiliko ya mzunguko wa 32-3 wa kizuizi cha hapo awali cha data iliyosimbwa, na kusimba kwa njia fiche. kizuizi cha kwanza cha safu ya data, kipengele cha gamma kinatolewa kama matokeo ya mzunguko wa upatanishi sawa wa mabadiliko. Hii inafanikisha uwekaji mnyororo wa vizuizi—kila uzuiaji wa maandishi ya siri katika hali hii unategemea vizuizi vinavyolingana na vyote vilivyotangulia. Kwa hiyo, hali hii wakati mwingine inaitwa michezo ya kubahatisha yenye vitalu vilivyounganishwa . Ukweli kwamba vitalu vinaunganishwa hauna athari kwa nguvu ya cipher.

Mchoro wa algorithms ya usimbuaji na usimbuaji katika hali ya gamma na maoni imeonyeshwa kwenye Mchoro wa 5 na, kwa sababu ya unyenyekevu wake, hauitaji maoni yoyote.


Mchoro wa 5. Algorithm ya kusimba (decrypting) data katika hali ya gamma na maoni.

Usimbaji fiche wa gamma wa kitanzi-chini una vipengele sawa na usimbaji fiche wa kawaida wa gamma, isipokuwa kwa athari za uharibifu wa maandishi ya siri kwenye maandishi mahususi yanayolingana. Kwa kulinganisha, hebu tuandike kazi za usimbuaji wa kuzuia kwa njia zote mbili zilizotajwa:

Gumming;

Gamma na maoni;

Ikiwa katika hali ya kawaida ya gamma, mabadiliko katika bits fulani za ciphertext huathiri tu vipande vinavyolingana vya maandishi wazi, basi katika hali ya maoni ya gamma picha ni ngumu zaidi. Kama inavyoweza kuonekana kutoka kwa mlinganyo unaolingana, wakati wa kusimbua kizuizi cha data katika hali ya gamma iliyofungwa, kizuizi cha data wazi kinategemea vizuizi vya data vilivyosimbwa na vya awali. Kwa hivyo, ikiwa utaanzisha upotoshaji kwenye kizuizi kilichosimbwa, basi baada ya kufutwa kwa vitalu viwili vya data wazi vitapotoshwa - inayolingana na ile inayofuata, na upotoshaji katika kesi ya kwanza utakuwa wa asili sawa na katika hali ya gamma. , na katika kesi ya pili - kama katika uingizwaji rahisi. Kwa maneno mengine, katika kizuizi kinacholingana cha data wazi bits sawa zitaharibiwa kama kwenye kizuizi cha data iliyosimbwa, na katika block inayofuata ya data wazi bits zote zinajitegemea kwa kila mmoja na uwezekano 1. / 2 itabadilisha maadili yao.

Uundaji wa kipengee kilichoigwa cha safu ya data.

Katika sehemu zilizopita, tulijadili athari za ufisadi wa data iliyosimbwa kwa njia fiche kwenye data ya kawaida inayolingana. Tumegundua kuwa wakati wa kusimbua katika hali rahisi ya uingizwaji, kizuizi kinacholingana cha data wazi kinageuka kupotoshwa kwa njia isiyotabirika, na wakati wa kusimbua kizuizi katika hali ya gamma, mabadiliko yanatabirika. Katika hali ya kufungwa kwa gamma, vitalu viwili vinapotoshwa, kimoja kwa njia ya kutabirika na kingine kwa njia isiyotabirika. Hii ina maana kwamba kutoka kwa mtazamo wa ulinzi dhidi ya kuwekwa kwa data ya uongo, hali ya gamma ni mbaya, na uingizwaji rahisi na njia za gamma za maoni ni nzuri? - Kwa hali yoyote. Wakati wa kuchambua hali hii, ni muhimu kuzingatia kwamba mabadiliko yasiyotabirika katika kizuizi cha data kilichosimbwa yanaweza kugunduliwa tu ikiwa data hii ni ya ziada, na kiwango kikubwa cha upungufu, kuna uwezekano mkubwa wa kugundua uharibifu. Upungufu mkubwa sana hutokea, kwa mfano, kwa maandiko katika lugha za asili na za bandia, katika kesi hii ukweli wa kupotosha hugunduliwa karibu bila kuepukika. Hata hivyo, katika hali nyingine, kwa mfano, wakati picha za sauti zilizobanwa na dijiti zimepotoshwa, tutapata tu picha tofauti ambayo sikio letu linaweza kutambua. Upotovu katika kesi hii utabaki bila kutambuliwa, isipokuwa, bila shaka, kuna habari ya kipaumbele kuhusu asili ya sauti. Hitimisho hapa ni hili: kwa kuwa uwezo wa baadhi ya njia za usimbuaji kugundua upotoshaji unaoletwa kwenye data iliyosimbwa unategemea sana uwepo na kiwango cha upungufu wa data iliyosimbwa, uwezo huu sio mali ya asili ya njia zinazolingana na hauwezi kuzingatiwa kama. faida yao.

Ili kutatua tatizo la kugundua upotovu katika safu ya data iliyosimbwa na uwezekano fulani, GOST hutoa hali ya ziada ya mabadiliko ya kriptografia - maendeleo ya uingizaji wa kuiga. Uingizaji wa kuiga ni mchanganyiko wa udhibiti ambao unategemea data wazi na maelezo ya siri ya ufunguo. Madhumuni ya kutumia uingizaji wa kuiga ni kugundua mabadiliko yote ya bahati mbaya au ya kimakusudi katika safu ya taarifa. Shida iliyoelezewa katika aya iliyotangulia inaweza kutatuliwa kwa mafanikio kwa kuongeza vipengee vya kuiga kwenye data iliyosimbwa. Kwa mshambuliaji anayewezekana, kazi mbili zifuatazo karibu haziwezekani kusuluhisha ikiwa hana ufunguo:

  • hesabu ya uingizaji wa kuiga kwa safu ya wazi ya habari;
  • uteuzi wa data wazi kwa kuingizwa kwa simulation iliyotolewa;

Mchoro wa algorithm ya kuunda kiingilio cha kuiga umeonyeshwa kwenye Mchoro 6.


Mchoro 6. Algorithm ya kutengeneza kiingilio cha kuingiza data kwa safu.

Sehemu ya kizuizi kilichopokelewa kwenye pato huchukuliwa kama uingizaji ulioiga, kwa kawaida biti zake 32 zisizo muhimu zaidi. Wakati wa kuchagua ukubwa wa kuingiza bandia, mtu lazima azingatie kwamba uwezekano wa kuweka data ya uongo kwa ufanisi ni sawa na 2 -| I | kwa kila jaribio la uteuzi, ikiwa mshambuliaji hana mbinu bora zaidi ya uteuzi kuliko kubahatisha rahisi. Unapotumia kiigizo cha 32-bit, uwezekano huu ni sawa na

Majadiliano ya algoriti za siri za GOST.

Nguvu ya Cryptographic ya GOST.

Wakati wa kuchagua algorithm ya cryptographic kwa matumizi katika maendeleo fulani, moja ya mambo ya kuamua ni nguvu zake, yaani, upinzani dhidi ya majaribio ya adui ya kuifunua. Swali la nguvu ya msimbo, juu ya uchunguzi wa karibu, linakuja kwa maswali mawili yanayohusiana:

  • Je, inawezekana kuvunja msimbo huu hata kidogo?
  • ikiwa ni hivyo, ni vigumu jinsi gani kufanya kwa vitendo;

Ciphers ambazo haziwezi kuvunjika kabisa huitwa nguvu kabisa au kinadharia. Kuwepo kwa herufi kama hizo kunathibitishwa na nadharia ya Shannon, lakini bei ya nguvu hii ni hitaji la kutumia ufunguo kusimba kila ujumbe ambao sio mdogo kwa saizi kuliko ujumbe wenyewe. Katika hali zote, isipokuwa idadi ya maalum, bei hii ni nyingi, kwa hivyo katika mazoezi, ciphers ambazo sio salama kabisa hutumiwa hasa. Kwa hivyo, mipango ya kawaida ya usimbuaji inaweza kuvunjika kwa muda mfupi, au, kwa usahihi, kwa idadi ndogo ya hatua, ambayo kila moja ni operesheni fulani kwenye nambari. Kwao, dhana muhimu zaidi ni kuendelea kwa vitendo, ambayo inaonyesha ugumu wa vitendo wa ugunduzi wao. Kipimo cha kiasi cha ugumu huu kinaweza kuwa idadi ya shughuli za msingi za hesabu na kimantiki ambazo lazima zifanywe ili kufungua msimbo, yaani, ili kubaini maandishi ya msingi yanayolingana ya maandishi fulani yenye uwezekano usiopungua thamani fulani. Wakati huo huo, pamoja na safu ya data iliyosimbwa, cryptanalyst inaweza kuwa na vizuizi vya data wazi na data inayolingana iliyosimbwa, au hata uwezo wa kupata data inayolingana iliyosimbwa kwa data yoyote wazi anayochagua - kulingana na waliotajwa na wengine wengi ambao hawajabainishwa. hali, aina tofauti za cryptanalysis zinajulikana.

Mifumo yote ya kisasa ya kificho imejengwa juu ya kanuni ya Kirchhoff, ambayo ni, usiri wa ujumbe uliosimbwa imedhamiriwa na usiri wa ufunguo. Hii inamaanisha kuwa hata kama algorithm ya usimbuaji yenyewe inajulikana kwa cryptanalyst, yeye, hata hivyo, hana uwezo wa kusimbua ujumbe ikiwa hana ufunguo unaofaa. Cipher inachukuliwa kuwa imeundwa vizuri ikiwa hakuna njia ya kuivunja kwa ufanisi zaidi kuliko kwa nguvu ya brute juu ya nafasi nzima muhimu, i.e. juu ya maadili yote muhimu yanayowezekana. GOST pengine inalingana na kanuni hii - zaidi ya miaka ya utafiti wa kina, hakuna njia moja ya ufanisi ya cryptanalysis yake imependekezwa. Kwa upande wa nguvu, ni maagizo mengi ya ukubwa kuliko kiwango cha awali cha usimbaji fiche cha Marekani, DES.

GOST hutumia ufunguo wa 256-bit na kiasi cha nafasi muhimu ni 2,256. Hakuna kifaa chochote cha kielektroniki kilichopo kwa sasa au kinachotarajiwa kutekelezwa katika siku za usoni kinachoweza kutumika kuchukua ufunguo kwa muda usiozidi mamia ya miaka. Thamani hii imekuwa kiwango cha ukubwa wa ufunguo halisi kwa algoriti za kriptografia linganifu siku hizi, na kiwango kipya cha usimbaji fiche cha Marekani pia kinaitumia. Kiwango cha zamani cha Amerika, DES, na ukubwa wake halisi wa ufunguo wa bits 56 na kiasi cha nafasi muhimu ya 2 56 tu haina utulivu wa kutosha kwa kuzingatia uwezo wa zana za kisasa za kompyuta. Hii ilionyeshwa mwishoni mwa miaka ya 90 na majaribio kadhaa ya nguvu ya kikatili ya kuvunja DES. Kwa kuongezea, DES iliathiriwa na mbinu maalum za uchanganuzi wa siri kama vile utofautishaji na mstari. Katika suala hili, DES inaweza kuwa ya utafiti au maslahi ya kisayansi badala ya maslahi ya vitendo. Mnamo 1998, udhaifu wake wa kriptografia ulitambuliwa rasmi - Taasisi ya Kitaifa ya Viwango ya Amerika ilipendekeza matumizi ya usimbaji fiche wa DES mara tatu. Na mwishoni mwa 2001, kiwango kipya cha usimbuaji wa Amerika, AES, kiliidhinishwa rasmi, kilichojengwa kwa kanuni tofauti na bila mapungufu ya mtangulizi wake.

Vidokezo juu ya usanifu wa GOST.

Inajulikana kuwa kiwango cha usimbaji fiche wa ndani ni mwakilishi wa familia nzima ya misimbo iliyojengwa kwa kanuni sawa. "Jamaa" wake maarufu zaidi ni kiwango cha zamani cha usimbaji cha Marekani, algoriti ya DES. Sifa hizi zote, kama GOST, zina algorithms ya ngazi tatu. Katika msingi daima kuna "hatua ya msingi", kwa misingi ambayo "mizunguko ya msingi" hujengwa kwa njia sawa, na kwa misingi yao taratibu za vitendo za encryption na maendeleo ya kuingiza kuiga hujengwa. Kwa hivyo, maalum ya kila moja ya vifungu vya familia hii iko katika hatua yake kuu, au tuseme hata katika sehemu yake. Ingawa usanifu wa ciphers classical block, ambayo GOST inahusu, iko mbali zaidi ya upeo wa makala hii, bado inafaa kusema maneno machache kuhusu hilo.

Algorithms ya "hatua kuu za ubadilishaji-crypto" kwa misimbo kama GOST imeundwa kwa njia ile ile, na usanifu huu unaitwa. mtandao wa Feistel wenye usawa (sawazisha mtandao wa Feistel) baada ya jina la mtu aliyependekeza kwanza. Mpango wa ubadilishaji wa data kwenye mzunguko mmoja, au, kama inavyoitwa kawaida, pande zote , imeonyeshwa kwenye Mchoro 7.


Kielelezo 7. Yaliyomo ya hatua kuu ya mabadiliko ya crypto-kwa block ciphers sawa na GOST.

Kizuizi cha saizi sawa hutolewa kwa pembejeo ya hatua kuu, nusu ya juu na ya chini ambayo inasindika tofauti kutoka kwa kila mmoja. Wakati wa ubadilishaji, nusu ya chini ya kizuizi huwekwa mahali pa nusu ya zamani, na nusu ya zamani, pamoja na operesheni ya bitwise. kipekee au ” kwa matokeo ya kukokotoa utendaji fulani, badala ya mdogo zaidi. Kazi hii inachukua kama hoja nusu ya chini ya kizuizi na kipengele muhimu cha habari ( X), ni sehemu ya maudhui ya msimbo na inaitwa kazi ya usimbaji fiche . Kwa sababu tofauti, iligeuka kuwa faida kugawa kizuizi kilichosimbwa katika sehemu mbili za saizi sawa: | N 1 |=|N 2 | - ukweli huu unaonyeshwa na neno "usawa" kwa jina la usanifu. Walakini, usimbaji fiche wa mitandao isiyosawazishwa pia hutumiwa mara kwa mara, ingawa sio mara nyingi kama ile iliyosawazishwa. Kwa kuongeza, mazingatio ya nguvu ya cipher yanahitaji kwamba ukubwa wa kipengele muhimu haipaswi kuwa chini ya ukubwa wa nusu ya block: katika GOST, ukubwa wote watatu ni sawa na bits 32. .

Ikiwa tutatumia hapo juu kwenye mchoro wa hatua kuu ya algorithm ya GOST, itakuwa dhahiri kwamba vitalu 1,2,3 vya algorithm (tazama Mchoro 1) huamua hesabu ya kazi yake ya usimbuaji, na huzuia 4 na 5. taja uundaji wa kizuizi cha pato cha hatua kuu kulingana na yaliyomo kwenye kizuizi cha pembejeo na maadili ya kazi ya usimbuaji. Maelezo zaidi juu ya usanifu wa ciphers za kisasa za kuzuia na ufunguo wa siri zinaweza kupatikana katika kazi za classic, au, kwa fomu iliyobadilishwa, katika kazi zangu.

Katika sehemu iliyopita, tayari tulilinganisha DES na GOST kwa suala la kudumu, sasa tutawafananisha kwa suala la maudhui ya kazi na urahisi wa utekelezaji. Katika mizunguko ya usimbuaji wa GOST, hatua kuu inarudiwa mara 32, kwa DES thamani hii ni 16. Hata hivyo, kazi ya usimbuaji wa GOST yenyewe ni rahisi zaidi kuliko kazi sawa ya DES, ambayo ina vibali vingi vya bit isiyo ya kawaida. Operesheni hizi hazina tija sana kwa wasindikaji wa kisasa ambao sio maalum. GOST haina shughuli kama hizo, kwa hivyo ni rahisi zaidi kwa utekelezaji wa programu.

Hakuna utekelezaji wa DES kwa jukwaa la Intel x86 lililokaguliwa na mwandishi unaofikia hata nusu ya utendakazi wa utekelezaji wa GOST uliopendekezwa katika makala haya, licha ya mzunguko mfupi mara mbili. Yote hapo juu inaonyesha kuwa watengenezaji wa GOST walizingatia mambo mazuri na mabaya ya DES, na pia walitathmini kwa kweli uwezo wa sasa na wa baadaye wa cryptanalysis. Hata hivyo, kuchukua DES kama msingi wakati wa kulinganisha utendakazi wa utekelezaji wa cipher sio muhimu tena. Kiwango kipya cha usimbaji fiche cha Marekani kinafanya vyema zaidi kwa ufanisi - kikiwa na ukubwa wa ufunguo sawa na GOST (biti 256), AES hufanya kazi kwa kasi ya 14% - hii ni ikilinganishwa na idadi ya "shughuli za msingi". Kwa kuongezea, GOST kivitendo haiwezi kusawazishwa, wakati AES ina uwezekano zaidi katika suala hili. Katika baadhi ya usanifu faida hii ya AES inaweza kuwa ndogo, kwa wengine inaweza kuwa kubwa zaidi. Kwa hiyo, kwenye processor ya Intel Pentium hufikia 28%. Maelezo yanaweza kupatikana ndani.

Mahitaji ya ubora wa taarifa muhimu na vyanzo vya funguo.

Sio funguo zote na jedwali zingine zinazotoa nguvu ya juu zaidi ya msimbo. Kila algoriti ya usimbaji fiche ina vigezo vyake vya kutathmini taarifa muhimu. Kwa hivyo, kwa algorithm ya DES inajulikana kuwa kuna kinachojulikana kama " funguo dhaifu ", inapotumiwa, muunganisho kati ya data iliyo wazi na iliyosimbwa haijafichwa vya kutosha, na msimbo huvunjika kwa urahisi.

Ikiwa jibu la kina kwa swali kuhusu vigezo vya ubora wa funguo za GOST na meza za uingizwaji zinaweza kupatikana popote, inaweza tu kutoka kwa watengenezaji wa algorithm. Data husika haikuchapishwa kwenye vyombo vya habari wazi. Walakini, kulingana na utaratibu uliowekwa, kusimba habari iliyoainishwa, data muhimu iliyopokelewa kutoka kwa shirika lililoidhinishwa lazima itumike. Kwa njia isiyo ya moja kwa moja, hii inaweza kuonyesha uwepo wa njia za kuangalia data muhimu kwa chawa. Ikiwa uwepo wa funguo dhaifu katika GOST ni suala linaloweza kujadiliwa, basi uwepo wa vitengo vya uingizwaji dhaifu ni zaidi ya shaka. Kwa wazi, meza ya uingizwaji "isiyo na maana", kulingana na ambayo thamani yoyote inabadilishwa yenyewe, ni dhaifu sana kwamba wakati wa kuitumia, cipher inaweza kupasuka kwa urahisi, bila kujali ufunguo ni nini.

Kama ilivyoelezwa hapo juu, vigezo vya kutathmini taarifa muhimu hazipatikani, lakini baadhi ya masuala ya jumla bado yanaweza kufanywa juu yao.

Ufunguo

Ufunguo lazima uwe safu ya biti zinazojitegemea kitakwimu ambazo huchukua thamani 0 na 1 kwa uwezekano sawa. Haiwezi kuamuliwa kabisa kuwa baadhi ya thamani kuu maalum zinaweza kuwa "dhaifu", yaani, cipher haiwezi kutoa kiwango maalum cha nguvu ikiwa itatumika. Walakini, labda, idadi ya maadili kama haya katika jumla ya funguo zote zinazowezekana ni ndogo sana. Angalau, utafiti wa kina katika msimbo bado haujafichua ufunguo mmoja kama huo kwa jedwali zozote mbadala zinazojulikana (yaani, zilizopendekezwa na FAPSI). Kwa hivyo, funguo zinazozalishwa kwa kutumia kihisi cha nambari nasibu zitakuwa za ubora wa juu na uwezekano unaotofautiana na umoja kwa kiasi kidogo sana. Ikiwa funguo zinazalishwa kwa kutumia jenereta ya nambari ya pseudo-random, basi jenereta inayotumiwa inapaswa kutoa sifa za takwimu hapo juu, na, kwa kuongeza, kuwa na nguvu ya juu ya cryptographic - si chini ya ile ya GOST yenyewe. Kwa maneno mengine, kazi ya kuamua wajumbe waliopotea wa mlolongo wa vipengele vinavyotokana na jenereta haipaswi kuwa rahisi zaidi kuliko kazi ya kuvunja cipher. Kwa kuongeza, vigezo mbalimbali vya takwimu vinaweza kutumika kukataa funguo na sifa mbaya za takwimu. Kwa mazoezi, vigezo viwili kawaida vinatosha: kuangalia usambazaji unaowezekana wa bits muhimu kati ya maadili 0 na 1, mtihani wa Pearson (chi mraba) hutumiwa kawaida, na kuangalia uhuru wa bits muhimu, mtihani wa kukimbia hutumiwa. . Unaweza kusoma kuhusu vigezo vilivyotajwa katika vitabu vya kiada au vitabu vya kumbukumbu juu ya takwimu za hisabati.

Njia bora ya kutengeneza funguo itakuwa kutumia sensorer za midrange ya vifaa, lakini hii haikubaliki kila wakati kwa sababu za kiuchumi. Wakati wa kutoa safu ndogo ya habari muhimu, njia mbadala inayofaa ya kutumia sensor kama hiyo ni njia ya "roulette ya elektroniki", ambayo hutumiwa sana katika mazoezi, wakati sehemu inayofuata ya bits za nasibu inategemea wakati kwa wakati operator anabonyeza. ufunguo fulani kwenye kibodi ya kompyuta. Katika mpango huu, chanzo cha data random ni mtumiaji wa kompyuta, au kwa usahihi zaidi, sifa za wakati wa majibu yake. Katika kesi hii, bits chache tu za data random inaweza kuzalishwa kwa keystroke, hivyo kasi ya jumla ya kuzalisha taarifa muhimu ni ya chini - hadi bits kadhaa kwa pili. Kwa wazi, mbinu hii haifai kwa kupata safu kubwa za funguo.

Katika kesi wakati ni muhimu kuzalisha safu kubwa ya habari muhimu, matumizi ya programu mbalimbali sensorer pseudo-random idadi inawezekana na kuenea sana. Kwa kuwa sensor kama hiyo inahitaji viwango vya juu vya nguvu ya maandishi, ni kawaida kutumia jenereta ya gamma ya cipher yenyewe kama ilivyo - "tunakata" gamma inayotokana na cipher kuwa "vipande" vya saizi inayohitajika, kwa GOST - 32 baiti. Bila shaka, kwa njia hii tutahitaji "ufunguo mkuu", ambao tunaweza kupata kwa kutumia njia ya roulette ya elektroniki iliyoelezwa hapo juu, na kwa msaada wake, kwa kutumia cipher katika hali ya jenereta ya gamma, tunapata safu ya habari muhimu ya ukubwa. Tunahitaji. Kwa hiyo njia hizi mbili za kuzalisha funguo - "mwongozo" na "algorithmic" - zinafanya kazi kwa sanjari, zikisaidiana. Mipango muhimu ya kizazi katika "bajeti ya chini" mifumo ya ulinzi wa siri ya habari karibu kila mara hujengwa juu ya kanuni hii.

Jedwali la uingizwaji

Jedwali la uingizwaji ni kipengele muhimu cha muda mrefu, yaani, ni halali kwa muda mrefu zaidi kuliko ufunguo mmoja. Inachukuliwa kuwa ni kawaida kwa nodi zote za usimbaji fiche ndani ya mfumo huo wa ulinzi wa kriptografia. Hata kama usiri wa jedwali la uingizwaji umekiukwa, nguvu ya msimbo hubaki juu sana na haipungui chini ya kikomo kinachoruhusiwa. Kwa hiyo, hakuna haja maalum ya kuweka meza ya siri, na katika maombi mengi ya kibiashara ya GOST hii inafanywa. Kwa upande mwingine, jedwali la uingizwaji ni kipengele muhimu cha kuhakikisha uimara wa msimbo mzima. Kuchagua jedwali lisilo sahihi kunaweza kusababisha msimbo kuvunjika kwa urahisi na mbinu zinazojulikana za uchanganuzi wa siri. Vigezo vya kuunda vitengo vingine ni siri inayolindwa kwa karibu na hakuna uwezekano wa FAPSI kuishiriki na umma katika siku za usoni. Hatimaye, kueleza kama jedwali fulani la kubadilisha ni nzuri au mbaya kunahitaji kazi kubwa—maelfu mengi ya saa za mtu na mashine. Mara baada ya kuchaguliwa na kutumika, jedwali lazima libadilishwe ikiwa na tu ikiwa nambari inayoitumia ilionekana kuwa hatari kwa aina moja au nyingine ya uchanganuzi wa siri. Kwa hivyo, chaguo bora kwa mtumiaji wa wastani wa cipher itakuwa kuchukua moja ya majedwali kadhaa ambayo yamekuwa ya umma. Kwa mfano, kutoka kwa kiwango cha chaguo la kukokotoa la heshi, pia inajulikana kama chaguo la kukokotoa la "benki kuu"; habari kuhusu meza hizi zinaweza kupatikana kwenye vyombo vya habari vya wazi na hata kwenye mtandao, ikiwa unatazama kutosha.

Kwa wale ambao hawajazoea kuchukua njia rahisi, hapa chini kuna mpango wa jumla wa kupata meza za hali ya juu:

  1. Kwa kutumia mbinu moja au nyingine, unatengeneza seti ya vitengo vinane vya uingizwaji vilivyo na sifa za uhakika zisizo za mstari. Kuna mbinu kadhaa kama hizo, moja yao ni matumizi ya kinachojulikana kama kazi za bent.
  2. Unaangalia utimilifu wa "vigezo vya ubora" rahisi zaidi - kwa mfano, vile vilivyochapishwa kwa nodi za uingizwaji za DES. Hapa kuna mazingatio machache zaidi ya jumla katika suala hili: Kila nodi mbadala inaweza kuelezewa na kazi nne za kimantiki kutoka kwa hoja nne za kimantiki. Ikiwa kazi hizi zimeandikwa ndani fomu ndogo(yaani, na urefu wa chini unaowezekana wa kujieleza) haitakuwa ngumu vya kutosha, nodi kama hiyo ya uingizwaji imekataliwa. Kwa kuongeza, kazi za kibinafsi ndani ya jedwali zima la uingizwaji lazima ziwe tofauti vya kutosha kutoka kwa kila mmoja. Katika hatua hii, meza nyingi za ubora wa chini huondolewa.
  3. Kwa cipher yenye majedwali ya chaguo lako, jenga miundo tofauti ya duara inayolingana na aina tofauti za uchanganuzi wa siri na upime sifa zinazolingana za "wasifu". Kwa hivyo, kwa uchanganuzi wa mstari, jenga analog ya takwimu ya mzunguko wa usimbuaji na uhesabu tabia ya "wasifu" - kiashiria cha kutokuwa na usawa. Ikiwa haitoshi, meza ya uingizwaji inakataliwa.
  4. Hatimaye, kwa kutumia matokeo ya aya iliyotangulia, unaweka msimbo kwa jedwali ulilochagua kwa utafiti wa kina - jaribio la uchanganuzi wa siri kwa kutumia mbinu zote zinazojulikana. Hatua hii ni ngumu zaidi na inayotumia wakati. Lakini ikiwa imefanywa kwa ubora wa juu, basi kwa kiwango cha juu cha uwezekano inaweza kusemwa kwamba cipher na meza uliyochagua haitapasuka na wanadamu tu, na, inawezekana, itakuwa ngumu sana kwa akili. huduma.

Walakini, unaweza kuifanya kwa urahisi zaidi. Jambo ni kwamba duru nyingi ziko kwenye cipher, ndivyo ushawishi mdogo wa sifa za nguvu za duru moja zina juu ya nguvu ya cipher nzima. GOST ina raundi nyingi kama 32 - zaidi ya karibu misimbo yote yenye usanifu sawa. Kwa hivyo, kwa matumizi mengi ya nyumbani na ya kibiashara inatosha kupata nodi mbadala kama vibali huru vya nambari kutoka 0 hadi 15. Hii inaweza kutekelezwa kivitendo, kwa mfano, kwa kuchanganya staha ya kadi kumi na sita, ambayo kila moja imepewa moja ya kadi. maadili ya safu maalum.

Kuhusu jedwali la uingizwaji, ukweli mmoja wa kuvutia zaidi unapaswa kuzingatiwa. Kwa urejeshaji wa mizunguko ya usimbuaji wa "32-З" na "32-Р", haihitajiki kwamba nodi za uingizwaji ziwe vibali vya nambari kutoka 0 hadi 15. Kila kitu hufanya kazi hata ikiwa nodi ya uingizwaji ina vitu vya kurudia, na uingizwaji. imedhamiriwa na node kama hiyo, haiwezi kutenduliwa, lakini katika kesi hii nguvu ya cipher imepunguzwa. Kwa nini hii ni hivyo hasa haijajadiliwa katika makala hii, lakini si vigumu kuthibitisha ukweli yenyewe. Ili kufanya hivyo, inatosha kwanza kujaribu kusimba na kisha kusimbua kizuizi cha data kwa kutumia jedwali la uingizwaji "lisilo kamili", nodi ambazo zina maadili duplicate.

Tofauti juu ya mada ya GOST

Mara nyingi sana, kwa matumizi katika mfumo wa ulinzi wa data ya kriptografia, algorithm yenye kasi ya utekelezaji wa kasi kuliko GOST inahitajika, na nguvu ya juu ya cryptographic haihitajiki. Mfano wa kawaida wa majukumu kama haya ni aina mbalimbali za mifumo ya kielektroniki ya biashara ya hisa inayodhibiti vipindi vya biashara kwa wakati halisi. Hapa, algorithms ya usimbuaji inayotumiwa inahitajika ili kuifanya isiwezekane kusimbua data ya uendeshaji ya mfumo wakati wa kikao (data kuhusu maagizo yaliyowasilishwa, shughuli zilizohitimishwa, nk), baada ya kumalizika muda wake, data hii, kama sheria, haipo tena. haina maana kwa washambuliaji. Kwa maneno mengine, uimara wa uhakika wa saa chache tu unahitajika - huu ni muda wa kawaida wa kikao cha biashara. Ni wazi kuwa kutumia GOST iliyojaa katika hali hii itakuwa shomoro na kanuni.

Nini cha kufanya katika kesi hii na sawa ili kuongeza kasi ya usimbuaji? Jibu liko juu ya uso - tumia muundo wa cipher na hatua kuu chache (duru) katika mizunguko ya msingi. Mara tunapunguza idadi ya duru za usimbaji fiche, utendaji huongezeka kwa kiwango sawa. Mabadiliko haya yanaweza kupatikana kwa njia mbili - kwa kupunguza urefu wa ufunguo na kupunguza idadi ya "mizunguko ya mapitio" ya ufunguo. Kumbuka kwamba idadi ya hatua za msingi katika mizunguko ya usimbaji fiche ni N=n·m, Wapi n- idadi ya vitu 32-bit kwenye ufunguo, m- idadi ya mizunguko ya matumizi ya vitu muhimu, katika kiwango n=8, m=4. Unaweza kupunguza nambari yoyote kati ya hizi, lakini chaguo rahisi ni kupunguza urefu wa ufunguo bila kuathiri njia inayotumiwa.

Ni wazi kwamba bei ya kuharakisha kazi itakuwa kupungua kwa nguvu ya cipher. Ugumu kuu ni kwamba ni ngumu sana kukadiria kwa usahihi zaidi au chini ukubwa wa upunguzaji huu. Ni wazi, njia pekee inayowezekana ya kufanya hivyo ni kufanya uchunguzi kamili wa anuwai za kisifio na mizunguko iliyopunguzwa ya ubadilishaji wa kriptografia. Ni wazi kwamba, kwanza, hii inahitaji matumizi ya habari iliyoainishwa, ambayo inamilikiwa tu na watengenezaji wa GOST, na, pili, ni kazi kubwa sana. Kwa hiyo, sasa tutajaribu kutoa tathmini mbaya sana, kwa kuzingatia tu mifumo ya jumla.

Kuhusu upinzani wa cipher kupasuka kwa njia "pana", ambayo ni, kwa shambulio la "nguvu ya kikatili", kila kitu kiko wazi zaidi au kidogo hapa: ufunguo wa bits 64 uko mahali pengine karibu na kupatikana kwa aina hii. ya mashambulizi, cipher yenye ufunguo wa biti 96 au zaidi ( kumbuka kwamba ufunguo lazima uwe na nambari kamili ya vipengele 32-bit) ni sugu kwa hilo. Hakika, miaka kadhaa iliyopita, kiwango cha awali cha usimbuaji wa Marekani, DES, kilidukuliwa mara kwa mara na mbinu za nguvu za kikatili - kwanza ilidukuliwa na mtandao wa kompyuta uliopangwa kwa misingi ya mtandao wa kimataifa, na kisha kwa mtandao maalumu, i.e. kompyuta iliyoundwa mahsusi kwa kusudi hili. Hebu tufikiri kwamba toleo la kawaida la GOST, linapotekelezwa katika programu kwenye wasindikaji wa kisasa, hufanya kazi mara nne kwa kasi zaidi kuliko DES. Kisha "GOST iliyopunguzwa" ya pande 8 itafanya kazi mara 16 kwa kasi zaidi kuliko DES. Wacha pia tuchukulie kuwa katika wakati tangu udukuzi wa DES, utendakazi wa kompyuta umeongezeka mara nne kwa mujibu wa Sheria ya Moore. Matokeo yake, tunapata kwamba sasa kuangalia ufunguo mmoja wa 64-bit kwa "GOST iliyopunguzwa" na mizunguko minane ni mara 64 kwa kasi zaidi kuliko kuangalia ufunguo mmoja wa DES kwa wakati mmoja. Kwa hivyo, faida ya toleo hili la GOST juu ya DES kwa suala la ugumu wa shambulio la nguvu ya kikatili imepunguzwa kutoka 2 64-56 = 2 8 = 256 hadi 256. / 64 = mara 4. Kukubaliana, hii ni tofauti ya udanganyifu sana, karibu hakuna chochote.

Ni ngumu zaidi kutathmini upinzani wa marekebisho dhaifu ya GOST kwa njia "kali" za uchanganuzi wa siri. Walakini, muundo wa jumla unaweza kufuatiliwa hapa pia. Ukweli ni kwamba sifa za "wasifu" za aina nyingi za nguvu zaidi za cryptanalysis leo hutegemea kwa kiasi kikubwa idadi ya duru za usimbuaji. Kwa hivyo, kwa cryptanalysis ya mstari (LCA) hii itakuwa tabia ya mstari L :

Wapi C na ni thabiti, R ni idadi ya miduara. Uhusiano sawa upo kwa uchanganuzi tofauti wa cryptanalysis. Katika "maana yao ya kimwili," sifa zote za aina hii ni uwezekano. Kwa kawaida, kiasi cha data ya awali inayohitajika kwa uchanganuzi wa cryptanalysis na utata wake ni kinyume sawia na sifa hizo. Inafuata kwamba viashiria hivi vya nguvu ya kazi hukua kwa kasi kwa idadi ya hatua za msingi za usimbaji fiche. Kwa hiyo, wakati idadi ya pande zote inapungua mara kadhaa, utata wa aina zinazojulikana zaidi za uchambuzi zitabadilika kama, takriban sana na takribani, mizizi ya nguvu hii kutoka kwa wingi wa awali. Hili ni tone kubwa sana la kudumu.

Kwa upande mwingine, GOST iliundwa kwa kiasi kikubwa cha usalama na leo ni sugu kwa aina zote zinazojulikana za cryptanalysis, ikiwa ni pamoja na tofauti na linear. Kuhusiana na LCA, hii ina maana kwamba kwa utekelezaji wake wa mafanikio, jozi zaidi za "block-encrypted block" zaidi zinahitajika kuliko "ipo katika asili," yaani, zaidi ya 2 64 . Kwa kuzingatia hapo juu, hii ina maana kwamba kwa LCA yenye mafanikio ya GOST 16-raundi, angalau vitalu au 2 35 byte au 32 GB ya data itahitajika, na kwa raundi ya 8, angalau vitalu au 2 19. baiti au 0.5 MB.

Hitimisho kutoka kwa yote hapo juu hutolewa katika meza ifuatayo, ambayo ni muhtasari wa sifa za matoleo yaliyopunguzwa ya GOST.

Idadi ya raundi Ukubwa muhimu, bits Kielezo cha utendaji Sifa zinazowezekana za msimbo (makadirio mabaya sana)
24 192 1,33 Inastahimili aina nyingi zinazojulikana za CA, au kwenye ukingo wa ukinzani. Utekelezaji wa vitendo wa CA hauwezekani kwa sababu ya mahitaji ya juu ya data ya awali na nguvu ya kazi.
16 128 2 Kinadharia, haina uthabiti kwa aina fulani za uchanganuzi wa siri, lakini utekelezaji wao wa vitendo katika hali nyingi ni mgumu kwa sababu ya mahitaji ya juu ya data ya chanzo na nguvu ya kazi.
12 95 2,67 Haipingani na aina fulani za cryptanalysis, lakini inafaa kwa ajili ya kuhakikisha usiri wa kiasi kidogo cha data (hadi makumi au mamia ya kilobytes) kwa muda mfupi.
8 64 4 Haiwezi kupinga baadhi ya aina zinazojulikana za cryptanalysis, lakini inafaa kwa ajili ya kuhakikisha usiri wa kiasi kidogo cha data (hadi makumi ya kilobytes) kwa muda mfupi.

Chaguzi mbili za mwisho, na raundi 12 na 8, zina uwezo wa kutoa ulinzi wa muda mdogo sana. Matumizi yao yanahesabiwa haki tu katika kazi ambapo usiri wa muda mfupi tu wa data iliyolindwa inahitajika, kwa utaratibu wa masaa kadhaa. Eneo linalowezekana la matumizi ya lahaja hizi dhaifu za cipher ni kuzuia trafiki ya UDP kutoka kwa mifumo ya biashara ya kubadilishana kielektroniki. Katika kesi hii, kila pakiti ya data (datagram, "D" ya kati kutoka kwa kifupi UDP) imesimbwa kwa kutumia ufunguo tofauti wa 64-bit, na ufunguo yenyewe umesimbwa kwa kutumia ufunguo wa kikao (ufunguo ambao upeo wake ni kikao cha mawasiliano kati ya kompyuta mbili) na hupitishwa pamoja na data.

Kabla ya kumaliza na matoleo yaliyopunguzwa ya GOST, nitasema kwamba mambo yote hapo juu yanafikiriwa sana. Kiwango hutoa uimara kwa lahaja moja tu, ya raundi 32. Na hakuna mtu anayeweza kukupa dhamana kwamba upinzani wa matoleo yaliyopunguzwa ya cipher kwa kupasuka itabadilika kwa njia iliyoonyeshwa hapo juu. Ikiwa hata hivyo utaamua kuzitumia katika maendeleo yako, kumbuka kwamba umepiga hatua kwenye ardhi iliyotetemeka, ambayo inaweza kuteleza kutoka chini ya miguu yako wakati wowote. Kwa kuwa kasi ya usimbaji fiche ni suala muhimu kwako, labda unapaswa kuzingatia kutumia cipher haraka au kompyuta yenye nguvu zaidi? Kuzingatia nyingine kwa nini hii inafaa kufanywa ni kwamba matoleo dhaifu ya GOST yatakuwa nyeti zaidi kwa ubora wa vitengo vya uingizwaji vinavyotumiwa.

Suala linalozingatiwa pia lina upande wake. Je, ikiwa kasi ya usimbaji fiche sio muhimu, lakini mahitaji ya nguvu ni kali sana? Upinzani wa GOST unaweza kuongezeka kwa njia mbili - hebu tuwaite "pana" na "intensive". Wa kwanza wao sio zaidi ya ongezeko rahisi la idadi ya duru za usimbuaji. Sio wazi kabisa kwangu kwa nini hii inaweza kweli kuhitajika, kwani kiwango cha ndani tayari hutoa uimara muhimu bila hii. Walakini, ikiwa unakabiliwa na paranoia zaidi ya kiwango kinachohitajika (na "watetezi wa habari" wote wanalazimika kuteseka nayo, hii ni hali ya kufaa kitaaluma, swali pekee ni ukali wa kesi :), hii itasaidia. unatulia kiasi fulani. Ikiwa huna uhakika kuhusu misimbo hii ya KGB au jedwali mbadala unalotumia, kwa urahisi, mara mbili, mara nne, n.k. idadi ya mizunguko - chagua wingi kulingana na ukali wa kesi yako. Njia hii hukuruhusu kuongeza nguvu ya cipher - ikiwa cryptanalysis ya mapema haikuwezekana, sasa haiwezekani mraba!

Swali gumu zaidi na la kuvutia ni ikiwa inawezekana kuongeza nguvu ya cipher bila kubadilisha nambari na muundo wa hatua kuu za usimbuaji. Kwa kushangaza, jibu la hili ni chanya, ingawa tunakanyaga tena kwenye msingi wa uvumi. Ukweli ni kwamba katika GOST, katika hatua kuu ya uongofu, inatakiwa kuchukua nafasi ya bits 4 kwa 4, lakini kwa mazoezi (tutazungumzia kuhusu hili baadaye) utekelezaji wote wa programu hufanya byte ya uingizwaji kwa byte, i.e. 8 kwa 8 bits - hii inafanywa kwa sababu za ufanisi. Ikiwa tutabuni mara moja kibadilishaji kama cha 8-bit, tutaboresha sana utendaji wa raundi moja. Kwanza, kiashiria cha "mgawanyiko" au kiashiria cha "banguko" kitaongezeka - sehemu moja ya data ya chanzo na/au ufunguo utaathiri idadi kubwa ya vipande vya matokeo. Pili, kwa nodi kubwa za uingizwaji, tofauti za chini na sifa za mstari zinaweza kupatikana, na hivyo kupunguza uwezekano wa cipher kwa aina sawa za uchanganuzi wa crypt. Hii ni kweli hasa kwa mizunguko iliyopunguzwa ya GOST, na kwa chaguzi 8 na 12 za pande zote hatua hiyo ni muhimu tu. Hii itafidia kwa kiasi fulani upotezaji wa uimara ndani yao kutoka kwa kupunguzwa kwa idadi ya raundi. Kinachofanya kutumia mbinu hii kuwa ngumu ni kwamba itabidi utengeneze vitengo vya uingizwaji "vilivyopanuliwa" mwenyewe. Na pia ukweli kwamba vitengo vikubwa kwa ujumla ni ngumu zaidi kuunda kuliko ndogo.

Matumizi yasiyo ya kawaida ya kiwango.

Bila shaka, lengo kuu la algorithms ya siri ya GOST ni usimbaji fiche na ulinzi wa data. Hata hivyo, wanaweza pia kupata programu nyingine zinazohusiana, kwa kawaida, na usalama wa habari. Wacha tuzungumze kwa ufupi juu yao:

1. Kwa usimbaji fiche katika hali ya gamma, GOST hutoa kwa ajili ya maendeleo ya gamma ya kriptografia - mlolongo wa bits na sifa nzuri za takwimu na nguvu ya juu ya kriptografia. Kisha gamma hii hutumika kurekebisha data iliyo wazi, hivyo kusababisha data iliyosimbwa kwa njia fiche. Walakini, hii sio utumiaji pekee unaowezekana wa gamma ya kriptografia. Ukweli ni kwamba algorithm kwa kizazi chake ni jenereta ya mlolongo wa nambari ya pseudo-random (PRNG) yenye sifa bora. Kwa kweli, kutumia PRNG kama hiyo ambapo sifa tu za takwimu za mlolongo unaozalishwa zinahitajika, lakini nguvu ya kriptografia haihitajiki, sio busara sana - kwa kesi hizi kuna jenereta zenye ufanisi zaidi. Lakini kwa matumizi anuwai yanayohusiana na usalama wa habari, chanzo kama hicho kitakuwa muhimu sana:

  • Kama ilivyoonyeshwa hapo juu, gamma inaweza kutumika kama "malighafi" kwa kutengeneza funguo. Ili kufanya hivyo, unahitaji tu kupata sehemu ya gamma ya urefu unaohitajika - 32 byte. Kwa njia hii, funguo zinaweza kufanywa kama inahitajika na hazitahitaji kuhifadhiwa - ikiwa ufunguo kama huo unahitajika tena, itakuwa rahisi sana kuizalisha tena. Unahitaji tu kukumbuka ni ufunguo gani ulitolewa hapo awali, ni ujumbe gani wa ulandanishi ulitumiwa, na ufunguo ulianza na byte gani ya gamma inayozalishwa. Taarifa zote isipokuwa ufunguo uliotumiwa hazijaainishwa. Mbinu hii itafanya iwe rahisi kudhibiti mfumo wa ufunguo tata na wenye matawi kwa kutumia "ufunguo mkuu" mmoja tu.
  • Sawa na ile iliyotangulia, gamma inaweza kutumika kama "malighafi" ya awali ya kutengeneza manenosiri. Hapa swali linaweza kutokea: kwa nini ni muhimu kuzizalisha kabisa? Je, si rahisi kuzivumbua inavyohitajika? Kushindwa kwa njia hii kulionyeshwa wazi na mfululizo wa matukio katika mitandao ya kompyuta, kubwa zaidi ambayo ilikuwa kupooza kwa mtandao kila siku mnamo Novemba 1988 iliyosababishwa na mdudu wa Morris. Mojawapo ya njia ambazo programu hasidi iliingia kwenye kompyuta ilikuwa kwa kubahatisha nywila: programu ilijaribu kuingia kwenye mfumo kwa kujaribu nywila kutoka kwa orodha yake ya ndani ya mia kadhaa, na kwa idadi kubwa ya kesi ilifanikiwa. Mawazo ya kibinadamu ya kuunda nywila yaligeuka kuwa duni sana. Ndiyo maana katika mashirika hayo ambapo usalama unapewa kipaumbele kinachofaa, nywila huzalishwa na kusambazwa kwa watumiaji na msimamizi wa usalama wa mfumo. Kuunda nenosiri ni ngumu zaidi kuliko kutengeneza funguo, kwani katika kesi hii "bichi" ya gamma ya binary lazima ibadilishwe kuwa fomu ya mfano, na sio "kukatwa" vipande vipande. Zaidi ya hayo, maadili ya mtu binafsi yanaweza kutupwa ili kuhakikisha kwamba herufi zote za alfabeti zina uwezekano wa kuonekana kwenye nenosiri.
  • Njia nyingine ya kutumia kriptografia gamma ni uhakika wa kufuta data kwenye midia ya sumaku. Ukweli ni kwamba hata wakati habari imeandikwa tena kwenye kati ya magnetic, athari za data za awali zinabakia, ambazo zinaweza kurejeshwa kwa uchunguzi unaofaa. Ili kuharibu athari hizi, uandishi kama huo lazima ufanyike mara nyingi. Ilibadilika kuwa itakuwa muhimu kuandika tena habari kwenye vyombo vya habari mara chache zaidi ikiwa utaratibu kama huo ulitumia data ya nasibu au ya uwongo ambayo ingebaki haijulikani kwa wataalam wanaojaribu kurejesha habari iliyofutwa. Sifa ya gamma itafaa hapa.

2. Sio tu gamma ya kriptografia, lakini pia ubadilishaji wa kriptografia yenyewe inaweza kutumika kwa mahitaji ambayo hayahusiani moja kwa moja na usimbaji fiche:

  • Tunajua kuwa moja ya chaguzi hizi za kutumia GOST ni ukuzaji wa viingilio vilivyoiga kwa safu za data. Walakini, kwa msingi wa cipher yoyote ya block, pamoja na GOST, ni rahisi sana kuunda mpango wa kuhesabu kazi ya njia moja ya hashi, inayoitwa pia katika fasihi MDC, ambayo katika vyanzo tofauti inasimama. badilisha msimbo wa utambuzi / ghiliba (M marekebisho/ M uhuishaji D etection C ode) au muhtasari wa ujumbe (M insha D igest C ode). Decoding ya kwanza ilionekana kwenye fasihi mapema zaidi, ya pili, fupi, nadhani, ilizuliwa na wale ambao hawakuweza kukumbuka ya kwanza :), - ilikuwa utani. MDC inaweza kutumika moja kwa moja katika mifumo ya ulinzi wa kuiga kama analog ya uingizaji wa kuiga, ambayo, hata hivyo, haitegemei ufunguo wa siri. Kwa kuongeza, MDC hutumiwa sana katika mipango ya saini ya dijiti ya elektroniki (EDS), kwa sababu miradi mingi kama hiyo imeundwa kwa njia ambayo ni rahisi kusaini kizuizi cha data cha saizi iliyowekwa. Kama unavyojua, kwa msingi wa kiwango kilichojadiliwa cha GOST 28147-89, kiwango cha Shirikisho la Urusi cha kuhesabu kazi ya njia moja ya hashi GOST R34.11-94 ilijengwa.
  • Haijulikani sana kwamba kwa msingi wa cipher yoyote ya kuzuia, ikiwa ni pamoja na GOST, mpango wa saini ya digital unaofanya kazi kikamilifu unaweza kujengwa, na ufunguo wa saini ya siri na mchanganyiko wa uthibitishaji wazi. Kwa sababu kadhaa, mpango huu haujapokea usambazaji mpana wa vitendo, hata hivyo, katika hali zingine bado unaweza kuzingatiwa kama njia mbadala ya kuvutia kwa mifumo ya "hisabati" ya saini za dijiti inayotawala kwa sasa ulimwenguni.

Fasihi

Mifumo ya usindikaji wa habari. Ulinzi wa kriptografia. Algorithm ya mabadiliko ya kriptografia GOST 28147-89. Jimbo Com. USSR kulingana na viwango, M., 1989. ftp://ftp.wtc-ural.ru/pub/ru.crypt/GOST-28147
Shannon Claude. Nadharia ya hisabati ya mifumo ya siri. Katika mkusanyiko "Inafanya kazi juu ya nadharia ya habari na cybernetics", M., IL, 1963, p. 333-369. http://www.enlight.ru/crypto/articles/shannon/shann__i.htm
Inatangaza Uidhinishaji wa Kiwango cha Uchakataji wa Taarifa za Shirikisho (FIPS) 197, Kiwango cha Juu cha Usimbaji Fiche (AES), Sajili ya Shirikisho Vol. 66, Na. 235 / Alhamisi, Desemba 6, 2001 / Notisi, uk 63369–63371. http://csrc.nist.gov/encryption/aes/
Feistel Horst. Cryptography na usalama wa kompyuta. Tafsiri na A. Vinokurov kulingana na uchapishaji Horst Feistel. Usiri na Faragha ya Kompyuta, Scientific American, Mei 1973, Vol. 228, Na. 5, uk. 15-23. http://www.enlight.ru/crypto/articles/feistel/feist_i.htm
Schneier Bruce. kriptografia iliyotumika. 2 ed. Itifaki, algoriti na maandishi chanzo katika lugha C., M., "Triumph", 2002 http://www.ssl.stu.neva.ru/psw/crypto/appl_rus/appl_cryp.htm
Menezes Alfred, van Oorschot Paul, Vanstone Scott. Mwongozo wa kriptografia iliyotumika. ttp://www.cacr.math.uwaterloo.ca/hac/
Vinokurov Andrey. Je, msimbo wa kuzuia hufanya kazi vipi? Muswada. http://www.enlight.ru/crypto/articles/vinokurov/blcyph_i.htm
Vinokurov Andrey. Masuala ya kriptografia ya jarida la kielektroniki katika INFUSED BYTES mtandaoni. http://www.enlight.ru/crypto/articles/ib/ib.htm
Vinokurov Andrey, Primenko Eduard. Maandishi ya ripoti "Juu ya utekelezaji wa programu ya viwango vya usimbaji fiche katika Shirikisho la Urusi na Marekani," mkutano wa taarifa, Moscow, MEPhI, Januari 28-29, 2001. Imechapishwa katika shughuli za mkutano.
Teknolojia ya habari. Ulinzi wa habari wa kriptografia. Kazi ya Hash GOST R34.11-94, Kiwango cha Jimbo la Shirikisho la Urusi, M., 1994.

Algorithm hii ni ya lazima kutumika kama algoriti ya usimbaji fiche katika mashirika ya serikali ya Shirikisho la Urusi na idadi ya yale ya kibiashara.

Maelezo ya algorithm

Mchoro wa algorithm unaonyeshwa kwenye Mtini. 3.1. Kama unaweza kuona, muundo wa algorithm hii ni rahisi sana, ambayo hurahisisha programu yake au utekelezaji wa vifaa.

Algorithm ya GOST 28147-89 husimba habari katika vizuizi vya bits 64, ambavyo vimegawanywa katika sehemu ndogo mbili za bits 32 (N1 na N2). Kizuizi kidogo cha N1 kinachakatwa kwa njia fulani, baada ya hapo thamani yake huongezwa

na thamani ya kizuizi kidogo N2 (nyongeza inafanywa modulo 2), kisha vizuizi vidogo vinabadilishwa. Mabadiliko haya yanafanywa kwa idadi fulani ya pande zote: 16 au 32, kulingana na hali ya uendeshaji ya algorithm (ilivyoelezwa hapa chini). Katika kila mzunguko, shughuli zifuatazo hufanywa:

1. Utumizi muhimu. Yaliyomo kwenye kizuizi kidogo cha /VI huongezwa modulo 2 32 na sehemu ya kitufe cha Kx.

Ufunguo wa usimbuaji wa algoriti ya GOST 28147-89 ina mwelekeo wa biti 256, na Kx ni sehemu yake ya 32-bit, i.e. ufunguo wa usimbaji wa 256-bit unawakilishwa kama muunganisho wa funguo ndogo-32 (Mchoro 3.2):

Shch ATI, AG2, Yu, AG4, K5, Kb, K7.

Wakati wa mchakato wa usimbuaji, moja ya subkeys hizi hutumiwa, kulingana na nambari ya pande zote na hali ya uendeshaji ya algorithm.

Mchele. 3.1. Mchoro wa algorithm GOST 28147-

Mchele. 3.2. Ufunguo wa usimbuaji wa algorithm ya GOST 28147-89

2. Uingizwaji wa meza. Baada ya ufunguo, kizuizi cha / VI kinagawanywa katika sehemu 8 za bits 4, thamani ya kila ambayo inabadilishwa kibinafsi kwa mujibu wa meza ya uingizwaji ya sehemu hii ya kizuizi. Ubadilishaji wa jedwali (Sanduku mbadala, S-sanduku) mara nyingi hutumiwa katika algoriti za kisasa za usimbuaji, kwa hivyo inafaa kuzizingatia kwa undani zaidi.

Uingizaji wa jedwali hutumiwa kwa njia hii: kizuizi cha data ya ukubwa fulani (katika kesi hii, 4-bit) hutolewa kwa pembejeo, uwakilishi wa nambari ambayo huamua idadi ya thamani ya pato. Kwa mfano, tunayo sanduku la S la fomu ifuatayo:

4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1.

Hebu kizuizi cha 4-bit "0100" kije kwenye pembejeo, yaani thamani 4. Kwa mujibu wa meza, thamani ya pato itakuwa sawa na 15, i.e. "1111" (0 inabadilishwa na 4, 1 na 11, thamani ya 2 bado haijabadilika, nk).

Kama unaweza kuona, muundo wa algorithm ni rahisi sana, ambayo inamaanisha kuwa mzigo mkubwa zaidi wa usimbaji fiche wa data huanguka kwenye meza za uingizwaji. Kwa bahati mbaya, algorithm ina mali ambayo kuna meza za uingizwaji "dhaifu", kwa kutumia ambayo algorithm inaweza kutatuliwa kwa njia za cryptanalytic. Dhaifu ni pamoja na, kwa mfano, jedwali ambalo matokeo ni sawa na ingizo:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

3. Mabadiliko ya mzunguko wa bitwise kwenda kushoto kwa biti 11.

Njia za uendeshaji za algorithm

Algorithm ya GOST 28147-89 ina njia 4 za kufanya kazi:

□ hali rahisi ya uingizwaji;

□ hali ya gamma;

P gamma mode na maoni;

□ namna ya ukuzaji wa viambatisho vya kuiga.

Njia hizi ni tofauti na zile zinazokubaliwa kwa ujumla (zilizofafanuliwa katika Sehemu ya 1.4), kwa hivyo inafaa kuzizingatia kwa undani zaidi.

Njia hizi zina madhumuni tofauti, lakini tumia ubadilishaji sawa wa usimbaji uliofafanuliwa hapo juu.

Njia rahisi ya uingizwaji

Katika hali rahisi ya uingizwaji, kila kizuizi cha habari cha 64-bit kinasimbwa kwa njia fiche kwa kutumia miduara 32 iliyoelezwa hapo juu. Vifunguo vidogo vya 32-bit vinatumika katika mlolongo ufuatao:

□ KO, Kl, K2, KZ, K4, K5, KB, AG7, KO, ATI, nk - katika raundi 1 hadi 24;

□ K1, Kb, K5, K4, KZ, K2, K\, KO - kwa raundi kutoka 25 hadi 32.

Usimbuaji katika hali rahisi ya uingizwaji hufanywa kwa njia ile ile, lakini kwa mlolongo tofauti kidogo wa kutumia funguo ndogo:

□ KO, K\, K2, KZ, K4, K5, Kb, KP - katika raundi 1 hadi 8;

□ KP, Kb, K5, K4, KZ, K2, K\, KO, K1, Kb, n.k. - katika raundi kutoka 9 hadi 32.

Sawa na hali ya kawaida ya ECB, kwa sababu ya usimbuaji tofauti wa vizuizi, hali rahisi ya uingizwaji haipendekezi kabisa kwa kusimba data yenyewe; inapaswa tu kutumika kusimba funguo nyingine za usimbaji fiche katika mipango ya vitufe vingi.

Hali ya Gamma

Katika hali ya gamma (Mchoro 3.3), kila kizuizi cha maandishi wazi huongezwa kidogo kidogo modulo 2 hadi 64-bit cipher gamma block. Cipher ya gamma ni mlolongo maalum ambao hutolewa kwa kutumia mabadiliko yaliyoelezwa hapo juu kama ifuatavyo:

1. Ujazo wao wa awali umeandikwa kwa rejista N1 na N2 - thamani ya 64-bit inayoitwa "ujumbe wa kusawazisha" (ujumbe wa kusawazisha kwa kweli ni analog ya vekta ya uanzishaji katika njia za CBC, CFB na OFB).

2. Yaliyomo kwenye rejista za / VI na N2 (katika kesi hii, ujumbe wa kusawazisha) umesimbwa kwa njia rahisi ya uingizwaji.

3. Yaliyomo ya N1 yanaongezwa modulo (2 32 - 1) na CI ya mara kwa mara = 2 24 + 2 16 + 2 8 + 4, matokeo ya kuongeza imeandikwa kwenye rejista ya / VI.

4. Yaliyomo ya N2 yanaongezwa modulo 2 na mara kwa mara C2 = 2 24 + 2 16 + 2 8 +1, matokeo ya kuongeza imeandikwa kujiandikisha N2.

5. Yaliyomo kwenye rejista za /VI na N2 hutolewa kama kizuizi cha 64-bit cipher gamma (yaani, katika kesi hii, /VI na N2 huunda kizuizi cha kwanza cha gamma).

6. Ikiwa kizuizi kifuatacho cha gamma kinahitajika (yaani, usimbaji fiche zaidi au usimbaji fiche unahitaji kufanywa), rudi kwenye hatua ya 2.

Kwa usimbuaji, gamma inatolewa kwa njia sawa, kisha maandishi ya siri na biti za gamma huwekwa tena XOR.

Ili kutengeneza safu sawa ya misimbo, mtumiaji anayesimbua kriptogramu lazima awe na ufunguo sawa na thamani sawa ya ujumbe wa ulandanishi ambayo ilitumika wakati wa kusimba maelezo kwa njia fiche. Vinginevyo, haitawezekana kupata maandishi asili kutoka kwa ile iliyosimbwa.

Katika utekelezaji mwingi wa algoriti ya GOST 28147-89, ujumbe wa kusawazisha sio kitu cha siri, hata hivyo, ujumbe wa kusawazisha unaweza kuwa siri kama ufunguo wa usimbaji fiche. Katika kesi hii, tunaweza kuzingatia kwamba urefu wa ufunguo unaofaa wa algorithm (biti 256) huongezeka kwa bits nyingine 64 za ujumbe wa maingiliano, ambayo inaweza kuzingatiwa kama kipengele muhimu cha ziada.

Hali ya Gamma yenye maoni

Katika hali ya gamma na maoni, matokeo ya kusimba kizuizi cha awali cha maandishi wazi hutumiwa kujaza rejista za / VI na L/2, kuanzia kizuizi cha 2, sio kizuizi cha awali cha gamma, lakini matokeo ya kusimba kizuizi cha maandishi ya awali. (Mchoro 3.4). Kizuizi cha kwanza katika hali hii kinazalishwa sawasawa na uliopita.

Mchele. 3.4. Inazalisha cipher gamma katika hali ya gamma na maoni

Kuiga hali ya uzalishaji wa viambatisho

Kiambishi awali ni ukaguzi wa kriptografia unaokokotolewa kwa kutumia ufunguo wa usimbaji fiche na iliyoundwa ili kuthibitisha uadilifu wa ujumbe. Ili kuihesabu, kuna hali maalum ya algorithm ya GOST 28147-89.

Kuunda kiambishi awali cha kuiga hufanywa kama ifuatavyo:

1. Sehemu ya kwanza ya habari ya 64-bit ambayo kiambishi awali cha kuiga kinahesabiwa imeandikwa kwa rejista N1 na N2 na kusimbwa kwa njia rahisi ya uingizwaji, ambayo raundi 16 za kwanza kati ya 32 hufanywa.

2. Matokeo yaliyopatikana ni muhtasari wa modulo 2 na kizuizi kinachofuata cha habari, kuhifadhi matokeo katika N1 na N2.

3. M na N2 zimesimbwa tena katika hali iliyofupishwa ya uingizwaji, nk hadi kizuizi cha mwisho cha habari.

Kiambishi awali cha kuiga kinachukuliwa kuwa ni maudhui yanayotokana na 64-bit ya rejista N1 na N2 au sehemu yake. Mara nyingi, kiambishi awali cha kuiga cha 32-bit hutumiwa, i.e. nusu ya yaliyomo kwenye rejista. Hii inatosha, kwani, kama hundi yoyote, kiambatisho cha kuiga kinakusudiwa, kwanza kabisa, kulinda dhidi ya upotoshaji wa habari kwa bahati mbaya. Ili kulinda dhidi ya urekebishaji wa kimakusudi wa data, mbinu zingine za kriptografia hutumiwa - kimsingi saini ya kielektroniki ya dijiti (angalia Sehemu ya 1.1).

Kiambishi awali cha kuiga kinatumika kama ifuatavyo:

1. Wakati wa kusimba maelezo yoyote kwa njia fiche, kiambishi awali cha kuiga matini huhesabiwa na kutumwa pamoja na maandishi ya siri.

2. Baada ya kusimbua, kiambishi awali cha kuiga kinahesabiwa tena na kulinganishwa na kile kilichotumwa.

3. Ikiwa viambishi awali vya uigaji vilivyokokotolewa na kutumwa havilingani, maandishi ya msimbo yalipotoshwa wakati wa uwasilishaji au funguo zisizo sahihi zilitumiwa wakati wa kusimbua.

Kiambishi awali cha kuiga ni muhimu sana kwa kuangalia usimbuaji sahihi wa habari muhimu wakati wa kutumia miradi ya vitufe vingi.

Kiambishi awali cha kuiga ni analog fulani ya msimbo wa uthibitishaji wa ujumbe wa MAC, uliohesabiwa katika hali ya CBC; Tofauti ni kwamba wakati wa kuhesabu kiambishi awali cha kuiga, ujumbe wa maingiliano hautumiwi, ambapo wakati wa kuhesabu MAC, vector ya uanzishaji hutumiwa.

Nguvu ya algorithm ya kriptografia

Mnamo 1994, maelezo ya algorithm ya GOST 28147-89 ilitafsiriwa kwa Kiingereza na kuchapishwa; ilikuwa baada ya hili kwamba matokeo ya uchambuzi wake, uliofanywa na wataalamu wa kigeni, ilianza kuonekana; hata hivyo, hakuna mashambulizi yanayokaribia uwezekano yalipatikana kwa muda mrefu.

□ urefu wa ufunguo mkubwa - bits 256; pamoja na ujumbe wa maingiliano ya siri, urefu wa ufunguo unaofaa huongezeka hadi bits 320;

□ raundi 32 za mabadiliko; tayari baada ya raundi 8 athari kamili ya utawanyiko wa data ya pembejeo inafanikiwa: kubadilisha sehemu moja ya kizuizi cha maandishi wazi kutaathiri bits zote za kizuizi cha maandishi, na kinyume chake, i.e. kuna ukingo wa nguvu nyingi.

Hebu fikiria matokeo ya cryptanalysis ya GOST 28147-89 algorithm.

Uchambuzi wa meza mbadala

Kwa kuwa majedwali ya kubadilisha hayajatolewa katika kiwango, kazi kadhaa (kwa mfano, katika) zinapendekeza kwamba "shirika linalofaa" linaweza kutoa jedwali za kubadilisha "nzuri" na "mbaya". Walakini, mtaalam maarufu Bruce Schneier anaita mawazo kama hayo "uvumi." Ni wazi kuwa nguvu ya kriptografia ya algorithm kwa kiasi kikubwa inategemea sifa za jedwali za uingizwaji zinazotumiwa; ipasavyo, kuna meza dhaifu za uingizwaji (tazama mfano hapo juu), matumizi ambayo yanaweza kurahisisha shambulio la algorithm. Walakini, uwezekano wa kutumia jedwali tofauti za uingizwaji unaonekana kama wazo linalofaa sana, kwa niaba ya ambayo mambo mawili yafuatayo kutoka kwa historia ya kiwango cha usimbaji cha DES yanaweza kutajwa (kwa maelezo, angalia Sehemu ya 3.15):

□ mashambulizi kwa kutumia cryptanalysis ya mstari na tofauti ya algorithm ya DES kutumia vipengele maalum vya jedwali za uingizwaji; wakati wa kutumia meza zingine, cryptanalysis italazimika kuanza tena;

Majaribio yamefanywa ili kuimarisha DES dhidi ya uchanganuzi wa siri na tofauti kwa kutumia majedwali madhubuti zaidi ya uingizwaji; meza kama hizo, ambazo kwa kweli ni zenye nguvu zaidi, zilipendekezwa, kwa mfano, katika algorithm ya s 5 DES; lakini, ole, haikuwezekana kuchukua nafasi ya DES na s 5 DES, kwani meza za uingizwaji zimefafanuliwa madhubuti katika kiwango, na ipasavyo, utekelezaji wa algorithm labda hauungi mkono uwezo wa kubadilisha meza kwa wengine.

Idadi ya kazi (kwa mfano,, na ) inahitimisha kimakosa kuwa meza za uingizwaji za siri za algorithm ya GOST 28147-89 zinaweza kuwa sehemu ya ufunguo na kuongeza urefu wake wa ufanisi (ambao sio muhimu, kwani algorithm ina 256 kubwa sana. - ufunguo kidogo). Walakini, kazi hiyo inathibitisha kuwa meza za uingizwaji za siri zinaweza kuhesabiwa kwa kutumia shambulio lifuatalo, ambalo linaweza kutumika kivitendo:

1. Ufunguo wa sifuri umewekwa na utafutaji wa "vector zero" unafanywa, yaani thamani z = / (0), ambapo / () ni kazi ya pande zote ya algorithm. Hatua hii inachukua takriban shughuli 2 za usimbaji fiche.

2. Kutumia vekta ya sifuri, maadili ya meza za uingizwaji huhesabiwa, ambayo inachukua si zaidi ya shughuli 2 11.

Marekebisho ya algorithm na uchambuzi wao

Kazi ilifanya uchambuzi wa cryptanalysis ya marekebisho ya GOST 28147-89 algorithm:

□ GOST-H algorithm, ambayo, kuhusiana na algorithm ya awali, utaratibu wa kutumia subkeys umebadilishwa, yaani katika raundi kutoka kwa subkeys 25 hadi 32 hutumiwa kwa utaratibu wa moja kwa moja, i.e. sawa sawa na katika raundi za awali za algorithm;

□ Algorithm ya GOST® ya raundi 20, ambapo duru hutumia XOR badala ya nyongeza ya modulo-2 kuweka ufunguo.

Kulingana na matokeo ya uchambuzi, ilihitimishwa kuwa GOST-H na GOST© ni dhaifu kuliko algorithm ya awali ya GOST 28147-89, kwa kuwa wote wawili wana madarasa ya funguo dhaifu. Ni muhimu kuzingatia kwamba kwa mujibu wa GOST© cryptanalysis, kazi inarudia neno kwa neno sehemu iliyotolewa kwa cryptanalysis ya GOST 28147-89 algorithm, kazi inayojulikana iliyochapishwa mwaka 2000 (bila marejeleo yoyote ya asili). Hili linatilia shaka taaluma ya watunzi wa kazi hiyo na matokeo yake mengine.

Marekebisho ya kuvutia sana ya algorithm yalipendekezwa katika kazi: majedwali S\...S lazima lazima ziwe tofauti; katika kila duru ya algorithm lazima zipangwa upya kulingana na sheria fulani. Ruhusa hii inaweza kutegemea ufunguo wa usimbaji fiche, au inaweza pia kuwa siri (yaani, iwe sehemu ya ufunguo mkubwa zaidi wa usimbaji fiche kuliko ufunguo asili wa 256-bit). Chaguzi hizi zote mbili, kulingana na waandishi wao, huongeza kwa kiasi kikubwa upinzani wa algorithm dhidi ya cryptanalysis ya mstari na tofauti.

Na marekebisho moja zaidi yanayohusiana na meza za uingizwaji hutolewa katika kazi, ambayo inachambua moja ya njia zinazowezekana za kuhesabu meza za uingizwaji kulingana na ufunguo wa usimbuaji. Waandishi wa kazi hiyo walihitimisha kuwa utegemezi kama huo unadhoofisha algorithm, kwani husababisha uwepo wa funguo dhaifu na kwa udhaifu fulani wa algorithm.

Uchambuzi wa Algorithm ya Mzunguko Kamili

Pia kuna mashambulizi ya pande zote GOST 28147-89 bila marekebisho yoyote. Moja ya kazi za kwanza za umma za kuchambua algorithm, kazi inayojulikana, imejitolea kwa mashambulizi ambayo hutumia udhaifu katika utaratibu muhimu wa upanuzi wa idadi ya algoriti inayojulikana ya usimbuaji. Hasa, algorithm kamili ya GOST 28147-89 inaweza kuvunjwa kwa kutumia cryptanalysis tofauti kwenye funguo zinazohusiana, lakini tu ikiwa meza za uingizwaji dhaifu hutumiwa. Toleo la raundi 24 la algorithm (ambayo raundi 8 za kwanza hazipo) hufunguliwa kwa njia sawa na meza yoyote ya uingizwaji, lakini meza za uingizwaji zenye nguvu (kwa mfano, ile iliyotolewa) hufanya shambulio kama hilo kuwa lisilowezekana kabisa.

Wanasayansi wa ndani A. G. Rostovtsev na E. B. Makhovenko mnamo 2001 walipendekeza njia mpya ya kimsingi ya uchanganuzi (kulingana na waandishi, yenye ufanisi zaidi kuliko uchanganuzi wa mstari na tofauti) kwa kuunda kazi ya kusudi kutoka kwa maandishi wazi yanayolingana na maandishi yake ya siri na thamani kuu inayotakikana. kupata upeo wake unaolingana na thamani ya ufunguo wa kweli. Pia walipata darasa kubwa la funguo dhaifu za algorithm ya GOST 28147-89, ambayo inafanya uwezekano wa kufungua algorithm kwa kutumia maandishi 4 tu yaliyochaguliwa na maandishi yanayolingana na utata wa chini kabisa. Cryptanalysis ya algorithm inaendelea katika kazi.

Mnamo 2004, kikundi cha wataalamu kutoka Korea kilipendekeza shambulio ambalo, kwa kutumia uchanganuzi tofauti kwenye funguo zinazohusiana, linaweza kupata bits 12 za ufunguo wa siri na uwezekano wa 91.7%. Shambulio hilo linahitaji maandishi 2 35 yaliyochaguliwa na shughuli 2 36 za usimbaji fiche. Kama unaweza kuona, shambulio hili halina maana kwa kweli kuvunja algorithm.