Cryպտյալ փոխակերպման ալգորիթմ `ըստ ԳՕՍՏ 28147 89 -ի: Ներքին տվյալների կոդավորման ստանդարտ

Գաղտնագրման ալգորիթմ ԳՕՍՏ 28147-89: Փոխարինման պարզ մեթոդ: - արխիվ WASM.RU

«Քանի դեռ դու կենդանի ես, մի՛ մեռնիր, նայիր այս աշխարհին:
Շատերն այստեղ մեռած հոգի ունեն. Նրանք ներսում մեռած են:
Բայց նրանք քայլում և ծիծաղում են ՝ չիմանալով, որ այդպիսին չեն,
Մի շտապեք ձեր մահվան ժամը », - ասաց նա ինձ:

Արիա, «Բարձր այնտեղ»

2.1 Ֆեյսթելի ցանցեր:
2.2 Արգելափակման ծածկագիր ԳՕՍՏ 28147-89

3.1 Հիմնական տեղեկատվություն
3.2 Theպտյալ փոխակերպման հիմնական քայլը

3.3 Հիմնական ցիկլեր.32-, 32-Ռ.

4.1 Theպտյալ փոխակերպման հիմնական քայլի իրականացումը
4.2 Ալգորիթմի արագության բարձրացում
5. Տեղեկատվության հիմնական պահանջները
6. Օգտագործված գրականության ցանկ
7. Շնորհակալագրեր:

Ներածություն:

Այս փաստաթուղթն իմ փորձն է նկարագրել ԳՕՍՏ 28147-89 ծածկագրման ալգորիթմը պարզապես ամենապարզ, բայց, այնուամենայնիվ, տեխնիկապես գրագետ լեզվով փոխարինելու մեթոդ: Առաջին վեց կետերը կարդալուց հետո ընթերցողը կտա իր կարծիքը, թե ինչպես եմ դա արել:

Որպեսզի իմ աշխատանքը ավելի շատ օգուտ տա, խորհուրդ եմ տալիս զինվել օգտագործված գրականության ցանկում նշված հեղինակների ստեղծագործություններով: Նաև խորհուրդ է տրվում, որ հաշվիչը գործառնությունը հաշվարկելու գործառույթ ունենա: XORի վեր հոդվածը կարդալը ենթադրում է, որ ընթերցողը մտադիր էր ուսումնասիրել կոդավորման այս ալգորիթմը: Չնայած այն նաև հարմար է որպես հղում, բայց ես այս հոդվածը գրել եմ հենց որպես ուսուցողական:

Բլոկային ծածկագրերի մասին նախնական տեղեկություններ:

Նախքան ալգորիթմի դիտարկումը սկսելը, մենք պետք է ծանոթանանք այս տեսակի ծածկագրերի ստեղծման պատմությանը: Ալգորիթմը պատկանում է բլոկային ծածկագրերի կատեգորիայի, որոնց ճարտարապետության մեջ տեղեկատվությունը բաժանված է սահմանափակ թվով բլոկների, վերջնականը, բնականաբար, կարող է ամբողջական չլինել: Գաղտնագրման գործընթացը տեղի է ունենում ամբողջական բլոկների վրա, որոնք կազմում են ծածկագիրը: Վերջնական բլոկը, եթե այն թերի է, լրացվում է ինչ -որ բանով (ստորև կասեմ այն ​​լրացնելու նրբությունների մասին) և կոդավորված է այնպես, ինչպես ամբողջական բլոկները: Գաղտնագրություն ասելով ՝ ես նկատի ունեմ գաղտնագրման գործառույթի արդյունքը, որը գործում է որոշակի քանակությամբ տվյալների վրա, որոնք օգտագործողը ներկայացրել է գաղտնագրման համար: Այլ կերպ ասած, ծածկագրումը գաղտնագրման վերջնական արդյունքն է:

Բլոկային ծածկագրերի զարգացման պատմությունը կապված է 70 -ականների սկզբի հետ, երբ IBM- ը, գիտակցելով տեղեկատվության պաշտպանման անհրաժեշտությունը համակարգչային հաղորդակցության ուղիներով, ձեռնամուխ եղավ էլեկտրոնային ցանցերում տեղեկատվության պաշտպանությանը նվիրված սեփական հետազոտական ​​ծրագրին, ներառյալ գաղտնագրությունը:

IBM- ի մշակողների խումբը, որը սկսեց կոդավորման համակարգերի հետազոտումը սիմետրիկ բանալիների օգտագործման սխեմայով, ղեկավարում էր դոկտ. Հորստ Ֆեյստել.

2.1 Ֆեյսթելի ցանցեր

Դասական գրականության մեջ Ֆեյստելի առաջարկած ծածկագրման նոր մեթոդի ճարտարապետությունը կոչվում է «Ֆեյստելի ճարտարապետություն», սակայն այս պահին ռուս և արտասահմանյան գրականության մեջ ավելի հաստատված տերմին է օգտագործվում ՝ «Ֆեյստելի ցանց» կամ Ֆեյստելի NetWork: Հետագայում, «Լյուցիֆեր» ծածկագիրը կառուցվեց այս ճարտարապետության վրա, որը հետագայում հրապարակվեց և ընդհանրապես ծածկագրության նկատմամբ հետաքրքրության նոր ալիք առաջացրեց:

«Feistel network» ճարտարապետության գաղափարը հետևյալն է. Տեղեկատվության մուտքային հոսքը բաժանված է n բիթ չափի բլոկների, որտեղ n- ն զույգ թիվ է: Յուրաքանչյուր բլոկ բաժանվում է երկու մասի `L և R, այնուհետև այդ մասերը սնվում են կրկնվող բլոկի ծածկագրով, որի դեպքում j- րդ փուլի արդյունքը որոշվում է նախորդ փուլի արդյունքով j-1: Սա կարող է լուսաբանվել օրինակով.

Բրինձ 1

Որտեղ, A գործառույթը բլոկի ծածկագրման հիմնական գործողությունն է: Դա կարող է լինել պարզ գործողություն, օրինակ ՝ XOR գործողություն, կամ կարող է ունենալ ավելի բարդ ձև ՝ որպես մի շարք պարզ գործողությունների հաջորդականություն ՝ մոդուլային հավելում, ձախ հերթափոխ, տարրերի փոխարինում և այլն, միասին վերցրած, այս պարզ գործողությունները ձևավորվում են այսպես կոչված - ծպտյալ փոխակերպման հիմնական քայլը:

Հարկ է նշել, որ գործառույթի գործունեության հիմնական տարրերն են հիմնական տարրերի մատակարարումը և XOR գործողությունը, և այդ գործողությունների աշխատանքը որքանով մտածված է, այն խոսում է ծածկագրման գաղտնագրման ուժի մասին:

Որպեսզի Feistel ցանցերի գաղափարը վերջնականապես պարզ լինի, հաշվի առեք ներկայացված ամենապարզ դեպքը բրինձ. 1, որտեղ A գործառույթում կլինեն գործողություններ «mod 2» («xor»), բայց սա ամենապարզըմի դեպք, ավելի լուրջ իրավիճակում, օրինակ ՝ պետական ​​նշանակության տեղեկատվությունը թաքցնելու դեպքում, A գործառույթը կարող է ավելի բարդ լինել (որքան ես տեսել եմ, A գործառույթը իսկապես շատ բարդ է).

Նախնական տվյալներ.

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

Ստացեք գաղտնագրում

1. (R + K) mod 2 4 = Smod, Smod = 0100b

2. (Smod + L) mod 2 = Sxor, Sxor = 1010b

3. L = R, R = Sxor

L = 0101b, R = 1010b

Եկեք բացատրենք մեր գործողությունները.

1. Այս գործողությունը լրացման եղանակ է 2 4: Գործնականում նման գործողությունը կրճատվում է պարզ գումարման, որտեղ մենք պետք է գումարենք երկու թիվ և անտեսենք փոխանցումը 5 -րդ թվանշանին: Քանի որ, եթե թվի երկուական ներկայացման թվանշանների թվերը վեր ենք դնում, ապա հինգերորդ թվանշանից վեր կլինի չորս ցուցիչ, եկեք նայենք ստորև ներկայացված նկարին, որը ցույց է տալիս մեր գործողությունների գործողությունները.

Բրինձ 2

Այստեղ ես սլաքով ցույց տվեցի ցուցիչներին, ինչպես տեսնում եք, արդյունքը պետք է լիներ 10100, բայց քանի որ mod 2 4 գործողության ընթացքում փոխանցումն անտեսվում է, մենք ստանում ենք 0100:

2. Գրականության մեջ այս գործողությունը կոչվում է mod 2, հավաքման լեզվով այն իրականացվում է հրամանով XOR... Բայց դրա առավել ճիշտ անվանումը mod 2 1 է: Առանց այս յուրահատուկ գործողության, դժվար թե հնարավոր լինի կառուցել արագ, հեշտությամբ իրականացվող ծածկագրման ալգորիթմ և միևնույն ժամանակ այնպես, որ այն դեռ բավականին ծածկագրորեն ուժեղ լինի: Այս գործողության յուրահատկությունը կայանում է նրանում, որ այն ինքնին հակառակն է: Օրինակ, եթե A թիվը XOR է B թվով, արդյունքում կստանանք B, ապագայում բավական է reXOR B և C թվերը միմյանց միջև A- ի նախորդ արժեքը ստանալու համար:

Այս գործողության ընթացքում մենք ստացանք 1010 ՝ 1110 և 0100 թվերով, 1110 – ը հետ ստանալու համար բավական է նորից XOR- ը 0100 և 1010 համարները վերագտնել: Այս գործողության մասին ավելի մանրամասն կարելի է գտնել հոդվածում, որը կցված է կայքին: www.wasm.ru, « Տարրական ուղեցույց դեպիCRC_ սխալի հայտնաբերման ալգորիթմներ»Հեղինակը ով Ռոսս Ն. Ուիլյամս... Այս աշխատանքում կա մի կետ. 5. Երկուական թվաբանություն առանց գծանշանի". Այս հոդվածում է նկարագրված գործողությունը: xor!Ես բացականչում եմ, քանի որ այս հոդվածում այս գործողությունն այնքան պլանավորված է, որ ընթերցողը ոչ միայն հասկանում է, թե ինչպես է աշխատում այս գործողությունը, այլ նույնիսկ սկսում է այն: տեսեք, լսեք և զգացեք!

3. Այս գործողությունը անհրաժեշտ է, որպեսզի գաղտնագրման ընթացքում սկզբնական արժեքները ստանան գաղտնագրումից:

2.2 Արգելափակ ծածկագիր ԳՕՍՏ 28147-89

ԳՕՍՏ 28147 - 89 ծածկագրման ալգորիթմը պատկանում է բլոկային ծածկագրերի կատեգորիայի, որոնք գործում են ըստ հավասարակշռված Feistel ցանցերի ճարտարապետության, որտեղ տեղեկատվության ընտրված բլոկի երկու մասը հավասար չափի են: Ալգորիթմը մշակվել է ՊԱԿ -ի ութերորդ վարչության խորքում, այժմ վերածվել է FAPSI- ի և ամրագրվել որպես Ռուսաստանի Դաշնության կոդավորման ստանդարտ դեռևս 1989 թվականին ՝ ԽՍՀՄ -ի օրոք:

Ալգորիթմի այս մեթոդի աշխատանքի համար անհրաժեշտ է տեղեկատվությունը բաժանել 64 բիթ չափի բլոկների: Ստեղծեք կամ մուտքագրեք ծածկագրման համակարգ հետևյալ հիմնական տեղեկությունները ՝ բանալին և փոխարինման աղյուսակը: Գաղտնագրման բանալին և փոխարինող աղյուսակի ընտրությունը պետք է շատ լուրջ ընդունել, քանի որ սա ձեր տեղեկատվության անվտանգության հիմքն է: Տեղեկությունների համար, թե ինչ պահանջներ են դրված բանալին և փոխարինումների աղյուսակը, տե՛ս «Հիմնական տեղեկատվության պահանջներ» կետը:

Մեթոդը դիտարկելիս մենք չենք կենտրոնանա դրա վրա, քանի որ Այս հոդվածը, ինչպես ասացի վերևում, գրվել է այն նպատակով, որպեսզի ընթերցողին սովորեցնի տվյալների գաղտնագրումը `օգտագործելով այս ծածկագրման ալգորիթմի պարզ փոխարինման մեթոդը, բայց հոդվածի վերջում մենք անպայման կանդրադառնանք այս հարցին:

Տեսական նվազագույնը:

3.1 Հիմնական տեղեկատվություն

Ինչպես ասացի վերևում, տվյալների գաղտնագրման մեջ ակտիվորեն ներգրավված են հետևյալները.

3.1.1. Բանալին ութ տարրերի հաջորդականություն է ՝ յուրաքանչյուրը 32 բիթ: Հետևյալում մենք կնշենք K խորհրդանիշով, և որի տարրերը այն են ՝ k1, k2, k3, k4, k5, k6, k7, k8:

3.1.2 Փոխարինման աղյուսակ `ութ տողերի և տասնվեց սյունակների մատրիցա, այսուհետ` Հիջ: I- ի և j սյունակի խաչմերուկում գտնվող յուրաքանչյուր տարր զբաղեցնում է 4 բիթ:

3.2 ptպտյալ փոխակերպման հիմնական քայլը

Գաղտնագրման գործընթացի հիմնական քայլը ծպտյալ փոխակերպման հիմնական քայլն է: Սա ոչ այլ ինչ է, քան որոշակի ալգորիթմի համաձայն տվյալների կոդավորման գործողություն, միայն մշակողները ներկայացրել են չափազանց ծանրաբեռնված անունը:

Մինչև կոդավորումը սկսելը բլոկը բաժանվում է երկու մասի L և R ՝ յուրաքանչյուրը 32 բիթ: Հիմնական տարրը ընտրվում է, և միայն դրանից հետո բլոկի այս երկու մասերը ՝ հիմնական տարրը ՝ փոխարինման աղյուսակը, մտնում են հիմնական քայլի գործառույթի մեջ, հիմնական քայլի արդյունքը բազային ցիկլի մեկ կրկնությունն է, որը կքննարկվի հաջորդ պարբերությունը: Հիմնական քայլը բաղկացած է հետևյալից.

  1. R բլոկի լրացուցիչ մասը ամփոփվում է K mod 2 32 առանցքային տարրով: Ես նկարագրեցի նմանատիպ գործողություն վերևում, այստեղ նույն բանը միայն ցուցիչը ոչ թե «4» է, այլ «32» - այս գործողության արդյունքը ապագայում կնշվի որպես Սմոդ:
  2. Նախկինում ստացված արդյունքը Smod- ը բաժանեք չորս բիթանոց տարրերի s7, s6, s5, s4, s3, s2, s1, s0 և սնուցեք այն փոխարինող գործառույթով: Փոխարինումը հետևյալն է. Smod -si տարրը ընտրված է, սկզբից մենք սկսում ենք ամենացածր տարրով, և փոխարինում ենք փոխարինումների աղյուսակից ստացված արժեքով i - տողով և սյունակով, որը մատնանշված է տարրի արժեքով: ես եմ Անցնում ենք s i +1 տարրին և շարունակում նույն կերպ և շարունակում ենք այդպես, մինչև չփոխենք Smod- ի վերջին տարրի արժեքը. Այս գործողության արդյունքը կնշանավորվի որպես Ssimple:
  3. Այս գործողության ընթացքում մենք Ssimple արժեքը ցիկլիկորեն տեղափոխում ենք ձախ 11 բիթ և ստանում Srol:
  4. Մենք ընտրում ենք L բլոկի երկրորդ մասը և Srol- ով ավելացնում այն ​​mod 2, արդյունքում ունենում ենք Sxor:
  5. Այս փուլում L բլոկի մասը հավասար է R մասի արժեքին, իսկ R մասը, իր հերթին, սկզբնավորվում է Sxor- ի արդյունքով, և դրանով իսկ ավարտվում է հիմնական քայլի գործառույթը:

3.3 Հիմնական ցիկլեր ՝ «32-З», «32-Р»:

Տեղեկատվությունը ծածկագրելու համար անհրաժեշտ է այն բաժանել 64 բիթ չափի բլոկների, իհարկե վերջին բլոկը կարող է 64 բիթից պակաս լինել: Այս փաստը այս «հեշտ փոխարինման» մեթոդի աքիլեսյան գարշապարն է: Քանի որ դրա ավելացումը 64 բիթերի վրա շատ կարևոր խնդիր է ծածկագրման ծրագրի ծածկագրման ուժը և այս զգայուն վայրը բարձրացնելու համար, եթե այն առկա է տեղեկատվական զանգվածում, բայց այն կարող է գոյություն չունենալ (օրինակ ՝ 512 բայթ ֆայլ: ), Պետք է վերաբերվել մեծ պատասխանատվությամբ:

Տեղեկատվությունը բլոկների բաժանելուց հետո բանալին պետք է բաժանել տարրերի.

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

Կոդավորումը ինքնին բաղկացած է այսպես կոչված հիմնական ցիկլերի օգտագործումից: Ինչն իր հերթին ներառում է ծպտյալ փոխակերպման հիմնական քայլերի n-րդ թիվը:

Հիմնական ցիկլերը պիտակավորված են, թե ինչպես կարելի է ասել `n - m: Որտեղ n- ը բազային ցիկլում ծպտյալ փոխակերպման հիմնական քայլերի թիվն է, իսկ m- ը հիմնական ցիկլի «տեսակն» է, այսինքն. ինչի մասին է խոսքը ՝ տվյալների «Z» կոդավորման կամ «R» ծածկագրման մասին:

32-З հիմնական ծածկագրման ցիկլը բաղկացած է ծպտյալ փոխակերպման 32 հիմնական քայլերից: N բլոկը և K ստեղնի տարրը մտնում են քայլի գործողություններն իրականացնող գործառույթի մեջ, և առաջին քայլը տեղի է ունենում k1- ով, երկրորդը ՝ k2 տարրով ստացված արդյունքի վրա և այլն: հետևյալ սխեմայի համաձայն.

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

32-P- ի վերծանման գործընթացը տեղի է ունենում նույն ձևով, բայց հիմնական տարրերը տրված են հակառակ հերթականությամբ.

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

Բաղվեք:

4.1 ptպտյալ փոխակերպման հիմնական քայլի իրականացումը

Այն բանից հետո, երբ մենք ծանոթացանք տեղեկատվության գաղտնագրման տեսությանը, ժամանակն էր տեսնել, թե ինչպես է գործում գաղտնագրումը գործնականում:

Նախնական տվյալներ.

Վերցրեք N = 0102030405060708h տեղեկատվության բլոկը, այստեղ L և R մասերը հավասար են.

L = 01020304h, R = 05060708h, եկեք վերցնենք բանալին.

K = ' ինչպես 28 zw37 q839 7342ui23 8e2t wqm2 ewp1 '(դրանք ASCII- կոդերն են, տասնվեցական ներկայացումը դիտելու համար կարող եք բացել այս ֆայլը դիտման ռեժիմում Total Commander- ում ՝ սեղմելով ստեղնը F3«Եվ հետո բանալին» 3 "): Այս բանալիում տարրերի արժեքները կլինեն.

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

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

Վերցրեք նաև փոխարինման հետևյալ աղյուսակը.

Բրինձ 3

Այստեղ տողերը համարակալված են 0 -ից 7 -ը, սյուները `0 -ից մինչև F:

Նախազգուշացում.Բոլոր տեղեկությունները, ներառյալ փոխարինման աղյուսակի բանալին, օրինակ են վերցվում ալգորիթմը դիտարկելու համար:

Օգտագործելով «Նախնական տվյալները», անհրաժեշտ է ձեռք բերել ծպտյալ փոխակերպման հիմնական քայլի գործողության արդյունքը:

1. Ընտրեք R = 05060708h հատվածը և հիմնական տարրը k1 = 'as28', տասնվեցերորդ ձևով առանցքային տարրը կունենա այս տեսքը `61733238 ժ. Այժմ մենք կատարում ենք գումարման գործողություն mod 2 32:

Բրինձ 4

Ինչպես տեսնում եք նկարում, մենք չունեինք փոխանցում կարմիր բիթով և ցուցիչով նշված 33 բիթերի վրա: 32 ". Եվ եթե մենք ունենայինք R- ի և հիմնական տարրի այլ արժեքներ, դա կարող էր տեղի ունենալ, և ապա մենք անտեսած կլինեինք այն և հետագայում օգտագործեին միայն դեղին գույնով նշված բիթերը:

Այս գործողությունը կատարում եմ հավաքողի հրամանով ավելացնել:

; eax = R, ebx = 'as28'

Այս գործողության արդյունքը Smod = 66793940h

2. Այժմ ամենաբարդ գործողությունը, բայց եթե ուշադիր նայեք, այն այլևս սարսափելի չէ, ինչպես թվում էր սկզբում: Եկեք Սմոդին պատկերացնենք հետևյալ կերպ.

Բրինձ 5

Փորձեցի պատկերացնել Սմոդի տարրերը նկարում, բայց ամեն դեպքում կբացատրեմ.

s0 = 0, s1 = 4, s2 = 9 և այլն:

Այժմ, սկսած ամենացածր տարրից s0, մենք կատարում ենք փոխարինումը: Հիշել պարբերությունը » 3.2 ptպտյալ փոխակերպման հիմնական քայլը»I - row, s i - սյունակ, արժեքը փնտրեք զրոյական տողում և զրո սյունակում.

Նկար 6

Այսպիսով, Smod- ի ներկայիս արժեքը 6679394 չէ 0 հ, եւ 6679394 5 ժ

Մենք շարունակում ենք փոխարինել s1- ը, այսինքն. չորս Օգտագործելով առաջին շարքը և չորրորդ սյունակը (s1 = 4!): Մենք նայում ենք նկարին.

Բրինձ 7

Այժմ արդեն Smod- ի արժեքը, ոչ թե 667939 4 5 ժ, 667939 2 5 ժ Ենթադրում եմ, որ այժմ փոխարինող ալգորիթմը պարզ է ընթերցողի համար, և կարող եմ ասել, որ Ssimple- ի վերջնական արդյունքից հետո կունենա հետևյալ արժեքը `11e10325h:

Ես կխոսեմ այն ​​մասին, թե ինչպես է դա ամենահեշտն իրականացվել հավաքողի հրամանների տեսքով ՝ հաջորդ հաջորդ պարբերությունում, ընդլայնված սեղանի մասին խոսելուց հետո:

  1. Ստացված Ssimple արժեքը 11 բիթ պետք է տեղափոխենք ձախ:

Բրինձ ութ

Ինչպես տեսնում եք, այս գործողությունը բավականին պարզ է և իրականացվում է հավաքման լեզվի մեկ հրամանով. գլորումև այս Srol գործողության արդյունքն է 0819288Fh:

4. Այժմ մեր տեղեկատվության բլոկի L մասը պետք է XOR- ով Srol արժեքով: Ես վերցնում եմ հաշվիչ w2k sp4- ից և ստանում Sxor = 091b2b8bh:

5. Այս գործողությունը վերջնական է, և մենք պարզապես նշանակում, մաքրում ենք R- ը, L մասի արժեքը և L մասը նախաստորագրում ենք Sxor արժեքով:

Վերջնական արդյունք.

L = 091b2b8bh, R = 01020304 ժ

4.2 Ալգորիթմի արագության բարձրացում

Այժմ խոսենք արագության ալգորիթմի օպտիմալացման մասին: Նախագծի իրականացման գործընթացում պետք է հաշվի առնել, որ ծրագիրն, որն ավելի հաճախ է աշխատում գրանցամատյաններով, քան հիշողությամբ, աշխատում է առավել արագ, և այստեղ այս դատողությունը նույնպես շատ կարևոր է, քանի որ տեղեկատվության մեկ բլոկից ավելի քան 32 կոդավորման գործողություն:

Երբ ես իմ ծրագրում ներդրի ծածկագրման ալգորիթմը, ես արեցի հետևյալը.

1. L բլոկի ընտրված մասը դեպի eax գրանցամատյան, և R դեպի edx:

2. esi գրանցամատյանում, որը նախաստորագրված է ընդլայնված բանալու հասցեով, դրա մասին ավելին ՝ ստորև:

3. Գրանցման ebx- ում նշանակվել է փոխարինումների ընդլայնված աղյուսակի հասցեի արժեքը, ավելին ՝ ստորև

4. 1, 2, 3 կետերի տեղեկատվությունը փոխանցել հիմնական ցիկլի 32 - З կամ 32 - Р գործառույթին ՝ կախված իրավիճակից:

Եթե ​​նայեք պարբերության հիմնական տարրերի հոսքի դիագրամին » Հիմնական ցիկլեր ՝ «32-З», «32-Р»«, Հետո 32 - 3 հիմնական ցիկլի մեր բանալին կարող է ներկայացվել հետևյալ կերպ.

K 32-Z =

«As28», «zw37», «q839», «7342», «ui23», «8e2t», «wqm2», «ewp1»,

«As28», «zw37», «q839», «7342», «ui23», «8e2t», «wqm2», «ewp1»,

«Ewp1», «wqm2», «8e2t», «ui23», «7342», «q839», «zw37», «as28»

Նրանք սկզբից կան k1, k2, k3, k4, k5, k6, k7, k8 - as28 ','zw37 ','q839 ',' 7342 ','ui23 ',' 8e2t ','wqm2 ','ewp1 'այս հաջորդականությունը կրկնվում է երեք անգամ: Այնուհետեւ տարրերը գնում են հակառակ կարգով, այսինքն. K8, k7, k6, k5, k4, k3, k2, k1 - «Ewp1», «wqm2», «8e2t», «ui23», «7342», «q839», «zw37», «as28».

Iանգվածի տարրերը նախօրոք դասավորել եմ այն ​​կարգով, որով դրանք պետք է սնվեն 32 - Z: Այսպիսով, ես ավելացրեցի բանտարկությամբ պահանջվող հիշողությունը, բայց ինքս ինձ փրկեցի որոշ մտածողության գործընթացներից, որոնք ինձ պետք չէին և ավելացրեցի արագությունը: ալգորիթմի համար, քանի որ նվազեցնելով հիշողության հասանելիության ժամանակը: Այստեղ ես նկարագրեցի միայն 32 - З բանալին, 32 - Р ցիկլի համար ես նույնը արեցի, բայց օգտագործելով տարրերի մատակարարման այլ սխեմա, որը ես նկարագրեցի նաև պարբերությունում »: Հիմնական ցիկլեր. «32-Z», «32-P».

Այժմ ժամանակն է նկարագրելու փոխարինող գործառույթի իրականացումը, ինչպես որ խոստացել էի վերևում: Ավելի վաղ չէի կարող նկարագրել, քանի որ սա պահանջում է նոր հայեցակարգի ներդրում `ընդլայնված փոխարինման աղյուսակ: Ես չեմ կարող ձեզ բացատրել, թե ինչ է դա: Փոխարենը, ես ձեզ ցույց կտամ այն, և դուք ինքներդ ձևակերպեք ինքներդ ձեզ համար, ի՞նչ է դա ՝ փոխարինումների ընդլայնված սեղան:

Այսպիսով, որպեսզի հասկանանք, թե ինչ է ընդլայնված փոխարինման աղյուսակը, մեզ պետք է փոխարինման աղյուսակ, օրինակ ՝ ես կվերցնեմ Նկարում պատկերվածը: 3

Օրինակ, մենք պետք է փոխարինեինք 66793940h թիվը: Ես դա կներկայացնեմ հետևյալ կերպ.

Բրինձ ինը

Այժմ, եթե վերցնենք s1, s0 տարրերը, այսինքն. նվազագույն նշանակություն ունեցող բայթ, փոխարինող գործառույթի արդյունքը կլինի 25 ժամ: Անդրեյ Վինոկուրովի հոդվածը կարդալուց հետո, որը ես մեջբերեցի պարբերությունում » Օգտագործված գրականության ցանկ«Դուք իրականում գտնում եք, որ երկու տող վերցնելու դեպքում կարող եք ստանալ զանգված, որը թույլ է տալիս արագ գտնել փոխարինող տարրերը ՝ օգտագործելով հավաքողի հրամանը xlatՆրանք ասում են, որ դա կարելի է անել այլ կերպ ավելի արագ, բայց Անդրեյ Վինոկուրովը մոտ չորս տարի անցկացրեց ԳՕՍՏ -ի ներդրման արագ ալգորիթմների հետազոտման համար: Չեմ կարծում, որ դուք պետք է նորից հայտնագործեք անիվը, երբ այն արդեն ունեք:

Այսպիսով, զանգվածի մասին.

Վերցրեք զրոյի առաջին երկու տողերը և առաջինը, ստեղծեք 256 բայթ զանգված: Այժմ մենք նկատում ենք մի առանձնահատկություն, որ եթե անհրաժեշտ է փոխակերպել 00h- ը, ապա արդյունքը կլինի 75h (նկ. 3 -ի հիման վրա). Մենք այս արժեքը զանգվածի մեջ ենք դնում 00h օֆսեթում: Մենք վերցնում ենք 01h արժեքը, 79h փոխարինման գործառույթի արդյունքը, այն դնում ենք զանգվածի մեջ 01 -ի օֆսեթում և այդպես մինչև 0FFh, ինչը մեզ կտա 0FCh, որը մենք զանգվածի մեջ կդնենք 0FFh օֆսեթում: Այսպիսով, մենք ստացանք փոխարինման ընդլայնված աղյուսակ տողերի առաջին խմբի համար `առաջին և զրո: Բայց դեռ երեք խումբ կա ՝ երկրորդ էջ 2, էջ 3, երրորդ էջ 4, էջ 5, չորրորդ էջ 6, էջ 7: Մենք այս երեք խմբերի հետ վարվում ենք այնպես, ինչպես առաջինի հետ: Արդյունքն ընդլայնված փոխարինման աղյուսակ է:

Այժմ մենք կարող ենք իրականացնել ալգորիթմ, որը կկատարի փոխարինումը: Դա անելու համար մենք վերցնում ենք այն կոդերը, որոնք Անդրեյ Վինոկուրովը տեղադրել է իր էջում, տես » Մատենագիտություն».

lea ebx, spreaded_table_simple

mov eax, [տեղադրեք փոխարինվող թիվը]

ավելացնել ebx, 100h; անցնել հաջորդ երկու հանգույցներին

ենթ ebx, 300 ժ; այնպես, որ ապագայում ebx- ը ցույց տա սեղանին

Այժմ ևս մեկ գործառույթ ՝ նախորդ գործողություններով մենք ոչ միայն փոխարինեցինք, այլև թիվը 8 բիթով ձախ տեղափոխեցինք: Մենք պարզապես պետք է թիվը տեղափոխենք ևս 3 բիթ ձախ:

և մենք ստանում ենք գործողության արդյունքը rol eax, 11!

Օպտիմալացման մասին ավելին չեմ կարող ավելացնել, միակ բանը, որ կարող եմ շեշտել, վերը ասվածս է. Ավելի հաճախ օգտագործել գրանցամատյանները, քան հիշողության հասանելիությունը: Կարծում եմ, որ այս բառերը միայն սկսնակների համար են, փորձառու և առանց իմ բառերի դա հիանալի հասկանում:

Հիմնական տեղեկատվության պահանջներ:

Ինչպես նշվում է Անդրեյ Վինոկուրովի հոդվածում, բանալին ընտրվում է երկու չափանիշի համաձայն.

1 և 0. արժեքների միջև բիթերի հավասարաչափ բաշխման չափանիշը Սովորաբար բիթերի հավասարաչափ բաշխման չափանիշը Pearson- ի չափանիշն է («chi-square»):

Սա նշանակում է, որ հիմնականը, սկզբունքորեն, ցանկացած թիվ կարող է: Այսինքն, երբ ձևավորվում է բանալու հաջորդ բիթը, մեկով կամ զրոյով սկսելու հավանականությունը 50/50 է:

Խնդրում ենք նկատի ունենալ, որ բանալին բաղկացած է ութ տարրերից, յուրաքանչյուրը 32 բիթից, այնպես որ բանալին ընդամենը 32 * 8 = 256 բիթ է, և հնարավոր բանալիների թիվը 2 256 է: Դա ձեզ չի՞ հարվածում:

Սերիայի չափանիշ:

Եթե ​​նայենք մեր բանալիին, որը ես տվեցի պարբերությունում » 4.1 ptպտյալ փոխակերպման հիմնական քայլի իրականացումը», Այնուհետև կնկատեք, որ հետևյալ նշումը վավեր է.

Բրինձ տասը

Մեկ արտահայտության մեջ k 1 արժեքը չպետք է կրկնվի ոչ k 2 -ում, ոչ էլ բանալու այլ տարրում:

Այսինքն, այն բանալին, որը մենք ընտրել ենք որպես գաղտնագրման ալգորիթմի դիտարկումը լիովին համապատասխանում է վերը նշված երկու չափանիշներին:

Այժմ փոխարինումների աղյուսակի ընտրության մասին.

Այժմ եկեք խոսենք այն մասին, թե ինչպես ընտրել ճիշտ փոխարինման աղյուսակը: Փոխարինող սեղանների ընտրության հիմնական պահանջը տարրերի «չկրկնվողության» երևույթն է, որոնցից յուրաքանչյուրի չափը 4 բիթ է: Ինչպես տեսաք վերևում, փոխարինման աղյուսակի յուրաքանչյուր տող բաղկացած է 0h, 1h, 2h, 3h,…, 0fh արժեքներից: Այսպիսով, հիմնական պահանջն այն է, որ յուրաքանչյուր տող պարունակի 0h, 1h, 2h, ..., 0fh և յուրաքանչյուր այդպիսի արժեք մեկ պատճենում: Օրինակ ՝ հաջորդականությունը.

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

Այն լիովին համապատասխանում է այս պահանջին, բայց այնուամենայնիվ: Խորհուրդ չի տրվում նման հաջորդականություն ընտրել որպես տող: Քանի որ եթե դուք արժեք եք տալիս այնպիսի տողի վրա հենվող գործառույթի մուտքին, ապա ելքի վրա կստանաք նույն արժեքը: Չե՞ք հավատում: Այնուհետև վերցրեք 332DA43Fh համարը և ութ նման տող ՝ որպես փոխարինման աղյուսակ: Կատարեք փոխարինման գործողությունը, և ես ձեզ հավաստիացնում եմ, որ ելքը կլինի 332DA43Fh համարը: Այսինքն ՝ նույնը, ինչ դուք ներկայացրել եք գործողության մուտքագրմանը: Եվ սա գաղտնագրման մեջ լավ ձևի նշան չէ՞, և այդպես էր:

Սա մեկ պահանջ էր, հաջորդ չափանիշն ասում է. Ելքային բլոկի յուրաքանչյուր բիթ պետք է վիճակագրորեն անկախ լինի մուտքային բլոկի յուրաքանչյուր բիթից:

Ինչպե՞ս է այն ավելի պարզ տեսք ունենում: Եվ ահա թե ինչպես, օրինակ, վերը նշված թվից ընտրեցինք s0 = 0Fh, 01111b տարրը: Հավանականությունը, որ մենք այժմ կփոխարինենք առաջին բիթը մեկով կամ զրոյով, 0.5 է: Երկրորդ, երրորդ և չորրորդ բիթերը, յուրաքանչյուր բիթը փոխարինելու հավանականությունը, յուրաքանչյուրը համարում ենք առանձին, մեկներով կամ զրոներով նույնպես 0, 5. s1 = 0Eh ընտրելիս հավանականությունը, որ մենք զրո բիթ ենք, և սա «0» է , կփոխարինվի զրոյով կամ մեկով հավասար `0.5! Այսպիսով, ըստ այս չափանիշի, օրինաչափություն չկա s0, s1 տարրերի զրո բիթերի փոխարինման միջև: Այո, դուք կարող եք փոխարինել մեկին, բայց կարող եք նաև փոխարինել զրոներին:

Այս չափանիշով աղյուսակը գնահատելու համար կարող եք կառուցել հարաբերակցության գործակիցների աղյուսակ ՝ հաշվարկված բանաձևով.

Եթե ​​p = 1, ապա ելքի j- ի արժեքը հավասար է մուտքի բիթ i- ի արժեքին մուտքի բիտերի ցանկացած համակցությունների համար.

Եթե ​​p = -1, ապա ելքի j բի արժեքը միշտ i- ի մուտքի բի հակադարձն է.

Եթե ​​p = 0, ապա ելքային բիթը հավասար հավանականությամբ վերցնում է 0 և 1 արժեքները մուտքային բիտ i- ի ցանկացած հաստատուն արժեքի համար:

Եկեք վերցնենք մեկ տողի օրինակ.

Եկեք այն բաժանենք «բաղադրիչների».

Եկեք հաշվարկենք մեկ գործակից `ըստ վերը նշված բանաձևի: Որպեսզի ավելի հեշտ լինի հասկանալ, թե ինչպես է դա արվում, ես ավելի մանրամասն կբացատրեմ.

Մենք մուտքագրում ենք 0 -րդ համարի 0 -րդ բիթը (0) և ելքի 0 -րդ համարի 0 -րդ բիթը (1) կատարում ենք 0 XOR 1 = 1 գործողությունը:

Մենք մուտքագրում ենք 1 -ին համարի (1) 0 -րդ բիտը և ելքի 1 -ին թվի 0 -րդ բիթը (1) իրականացնում ենք 1 XOR 1 = 0 գործողությունը:

Մենք մուտքագրում ենք 2 -րդ համարի 0 -րդ բիթը (0) և ելքի 2 -րդ համարի 0 -րդ բիթը (0) կատարում ենք 0 XOR 0 = 0 գործողությունը:

Մենք մուտքագրում ենք 3 -րդ համարի (1) 0 -րդ բիտը և ելքի 3 -րդ համարի 0 -րդ բիթը (1) իրականացնում ենք 1 XOR 1 = 0 գործողությունը:

Այս հաջորդականությամբ հաջորդաբար XOR գործողություններ կատարելով ՝ մենք հաշվում ենք բոլոր ոչ զրոյական արժեքների թիվը, ստանում ենք արժեքը 6. Հետևաբար P 00 = 1- (6/2 4-1) = 0.25: Այսպիսով, պարզվեց, որ ելքի 0 բիթի արժեքը 16 -ից 4 դեպքում հավասար է մուտքի 0 բիթի արժեքին;

Գործակիցների վերջնական աղյուսակը.

Ինչպես երևում է հարաբերակցության գործակիցների աղյուսակից, մուտքի մոտ 3 բիթը 16 -ից 14 դեպքում շրջվում է ելքային բիտ 0 -ի համեմատ, ինչը կազմում է 87.5%: Սա սովորական կոդավորման համակարգերի համար այլևս ընդունելի չէ: Վերցնենք փոփոխության մեկ այլ օրինակ.

Գործակիցների աղյուսակը կլինի հետևյալը (որոնց վերահաշվարկը ծույլ չէ)

Դե, այս աղյուսակում ամեն ինչ ավելի վատ է. Խմբի 1 -ին և 2 -րդ բիթերը մնում են անփոփոխ: Cryptanalyst- ն ուր պետք է շրջվի: Հաշվի առնելով այս բոլոր պահանջները ՝ պարզ որոնում («գլխի») գտնվեց նշված տեսությանը համապատասխանող մուտքի աղյուսակներ (այսօր ՝ 1276 համակցություն) Ահա դրանցից մի քանիսը.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Օգտագործված գրականության ցանկ:

  1. Անդրեյ Վինոկուրովի հոդվածը.

Գաղտնագրման ալգորիթմ ԳՕՍՏ 28147-89, դրա օգտագործումը և իրականացումը

Intel x86 հարթակի համակարգիչների համար:

Կան նաև կոդավորման ալգորիթմի իրականացման սկզբնաղբյուրներ:

  1. Հորստ Ֆեյստելի հոդվածը.

Գաղտնագրություն և համակարգչային անվտանգություն:

(կարելի է գտնել նախորդ հոդվածի նույն հասցեով)

  1. Ռոսս Ն. Ուիլյամս.

CRC Սխալների հայտնաբերման ալգորիթմների տարրական ուղեցույց

Տեղադրված է կայքում www.վասմru.

Շնորհակալագրեր:

Likeանկանում եմ իմ երախտագիտությունը հայտնել www.wasm.ru ֆորումի բոլոր այցելուներին: Բայց ես հատկապես կցանկանայի շնորհակալություն հայտնել ChS- ին, որը ներկայումս հայտնի է որպես SteelRat, նա օգնեց ինձ հասկանալ այնպիսի բաներ, որոնք ես հավանաբար երբեք չէի հասկանա, ինչպես նաև օգնեց պարբերությունը գրելիս. Տեղեկատվության հիմնական պահանջները», Այս պարբերության հիմնական մասը գրել է նա: Նաև խորապես շնորհակալ եմ KSTU- ի անվան աշխատակցին Ա.Ն. Տուպոլև Անիկին Իգոր Վյաչեսլավովիչին և մեղք կլիներ չհիշատակել Քրիս Կասպերսկուն այն բանի համար, որ նա կա, իսկ Վոլոդյա / wasm.ru- ն ՝ իր ցուցումների համար: Օ Oh, և ես դա ստանում եմ նրանից: Նաև ուզում եմ նշել Sega-Zero / Callipso- ն, բայց դա որոշ մաթեմատիկական ջունգլիներ բերեց իմ մտքում:

Սա, թերևս, այն ամենն է, ինչ ես կցանկանայի ասել ձեզ:

Ես երախտապարտ կլինեմ այս հոդվածի հետ կապված քննադատության կամ հարցերի կամ պարզապես խորհուրդների համար: Իմ կոնտակտային տվյալները. [էլփոստը պաշտպանված է], ICQ - 337310594:

Հարգանքներով ՝ Evil`s ընդհատում:

P.S. Այս հոդվածով ես չեմ փորձել գերազանցել որևէ մեկին: Այն գրված է միտումնավոր ՝ ԳՕՍՏ -ի ուսումնասիրությունը հեշտացնելու համար, և եթե դժվարություններ ունեք, դա չի նշանակում, որ ես մեղավոր եմ դրա համար: Եղեք ողջամիտ և համբերատար, ամենայն բարիք ձեզ:

«Քանի դեռ դու կենդանի ես, մի՛ մեռնիր, նայիր այս աշխարհին:
Շատերն այստեղ մեռած հոգի ունեն. Նրանք ներսում մեռած են:
Բայց նրանք քայլում և ծիծաղում են ՝ չիմանալով, որ այդպիսին չեն,
Մի շտապեք ձեր մահվան ժամը », - ասաց նա ինձ:

Արիա, «Բարձր այնտեղ»

  1. Ներածություն
  1. Բլոկային ծածկագրերի մասին նախնական տեղեկություններ

2.1 Ֆեյսթելի ցանցեր:
2.2 Արգելափակման ծածկագիր ԳՕՍՏ 28147-89

  1. Տեսական նվազագույնը

3.1 Հիմնական տեղեկատվություն
3.2 Theպտյալ փոխակերպման հիմնական քայլը

3.3 Հիմնական ցիկլեր.32-, 32-Ռ.

  1. Բաղվեք

4.1 Theպտյալ փոխակերպման հիմնական քայլի իրականացումը
4.2 Ալգորիթմի արագության բարձրացում
5.
6. Օգտագործված գրականության ցանկ
7. Շնորհակալագրեր:

Ներածություն:

Այս փաստաթուղթն իմ փորձն է նկարագրել ԳՕՍՏ 28147-89 ծածկագրման ալգորիթմը պարզապես ամենապարզ, բայց, այնուամենայնիվ, տեխնիկապես գրագետ լեզվով փոխարինելու մեթոդ: Առաջին վեց կետերը կարդալուց հետո ընթերցողը կտա իր կարծիքը, թե ինչպես եմ դա արել:

Որպեսզի իմ աշխատանքը ավելի շատ օգուտ տա, խորհուրդ եմ տալիս զինվել օգտագործված գրականության ցանկում նշված հեղինակների ստեղծագործություններով: Նաև խորհուրդ է տրվում, որ հաշվիչը գործառնությունը հաշվարկելու գործառույթ ունենա: XORի վեր հոդվածը կարդալը ենթադրում է, որ ընթերցողը մտադիր էր ուսումնասիրել կոդավորման այս ալգորիթմը: Չնայած այն նաև հարմար է որպես հղում, բայց ես այս հոդվածը գրել եմ հենց որպես ուսուցողական:

Բլոկային ծածկագրերի մասին նախնական տեղեկություններ:

Նախքան ալգորիթմի դիտարկումը սկսելը, մենք պետք է ծանոթանանք այս տեսակի ծածկագրերի ստեղծման պատմությանը: Ալգորիթմը պատկանում է բլոկային ծածկագրերի կատեգորիայի, որոնց ճարտարապետության մեջ տեղեկատվությունը բաժանված է սահմանափակ թվով բլոկների, վերջնականը, բնականաբար, կարող է ամբողջական չլինել: Գաղտնագրման գործընթացը տեղի է ունենում ամբողջական բլոկների վրա, որոնք կազմում են ծածկագիրը: Վերջնական բլոկը, եթե այն թերի է, լրացվում է ինչ -որ բանով (ստորև կասեմ այն ​​լրացնելու նրբությունների մասին) և կոդավորված է այնպես, ինչպես ամբողջական բլոկները: Գաղտնագրություն ասելով ՝ ես նկատի ունեմ գաղտնագրման գործառույթի արդյունքը, որը գործում է որոշակի քանակությամբ տվյալների վրա, որոնք օգտագործողը ներկայացրել է գաղտնագրման համար: Այլ կերպ ասած, ծածկագրումը գաղտնագրման վերջնական արդյունքն է:

Բլոկային ծածկագրերի զարգացման պատմությունը կապված է 70 -ականների սկզբի հետ, երբ IBM- ը, գիտակցելով տեղեկատվության պաշտպանման անհրաժեշտությունը համակարգչային հաղորդակցության ուղիներով, ձեռնամուխ եղավ էլեկտրոնային ցանցերում տեղեկատվության պաշտպանությանը նվիրված սեփական հետազոտական ​​ծրագրին, ներառյալ գաղտնագրությունը:

IBM- ի մշակողների խումբը, որը սկսեց կոդավորման համակարգերի հետազոտումը սիմետրիկ բանալիների օգտագործման սխեմայով, ղեկավարում էր դոկտ. Հորստ Ֆեյստել.

2.1 Ֆեյսթելի ցանցեր

Դասական գրականության մեջ Ֆեյստելի առաջարկած ծածկագրման նոր մեթոդի ճարտարապետությունը կոչվում էր «Ֆեյստելի ճարտարապետություն», սակայն այս պահին ռուս և արտասահմանյան գրականության մեջ ավելի հաստատված տերմին է օգտագործվում ՝ «Ֆեյստելի ցանց» կամ Ֆեյստելի NetWork: Հետագայում, «Լյուցիֆեր» ծածկագիրը կառուցվեց այս ճարտարապետության վրա, որը հետագայում հրապարակվեց և ընդհանրապես ծածկագրության նկատմամբ հետաքրքրության նոր ալիք առաջացրեց:

«Feistel network» ճարտարապետության գաղափարը հետևյալն է. Տեղեկատվության մուտքային հոսքը բաժանված է n բիթ չափի բլոկների, որտեղ n- ն զույգ թիվ է: Յուրաքանչյուր բլոկ բաժանվում է երկու մասի `L և R, այնուհետև այդ մասերը սնվում են կրկնվող բլոկի ծածկագրով, որի դեպքում j- րդ փուլի արդյունքը որոշվում է նախորդ փուլի արդյունքով j-1: Սա կարող է լուսաբանվել օրինակով.

Բրինձ 1

Որտեղ, A գործառույթը բլոկի ծածկագրման հիմնական գործողությունն է: Դա կարող է լինել պարզ գործողություն, օրինակ ՝ XOR գործողություն, կամ կարող է ունենալ ավելի բարդ ձև ՝ որպես մի շարք պարզ գործողությունների հաջորդականություն ՝ մոդուլային հավելում, ձախ հերթափոխ, տարրերի փոխարինում և այլն, միասին վերցրած, այս պարզ գործողությունները ձևավորվում են այսպես կոչված - ծպտյալ փոխակերպման հիմնական քայլը:

Հարկ է նշել, որ գործառույթի գործունեության հիմնական տարրերն են հիմնական տարրերի մատակարարումը և XOR գործողությունը, և այդ գործողությունների աշխատանքը որքանով մտածված է, այն խոսում է ծածկագրման գաղտնագրման ուժի մասին:

Որպեսզի Feistel ցանցերի գաղափարը վերջնականապես պարզ լինի, հաշվի առեք ներկայացված ամենապարզ դեպքը բրինձ. 1, որտեղ A գործառույթում կլինեն գործողություններ «mod 2» («xor»), բայց սա ամենապարզըմի դեպք, ավելի լուրջ իրավիճակում, օրինակ ՝ պետական ​​նշանակության տեղեկատվությունը թաքցնելու դեպքում, A գործառույթը կարող է ավելի բարդ լինել (որքան ես տեսել եմ, A գործառույթը իսկապես շատ բարդ է).

Նախնական տվյալներ.

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

Ստացեք գաղտնագրում

  1. (R + K) mod 2 4 = Smod, Smod = 0100b
  2. (Smod + L) mod 2 = Sxor, Sxor = 1010 բ
  3. L = R, R = Sxor

L = 0101b, R = 1010b

Եկեք բացատրենք մեր գործողությունները.

  1. Այս գործողությունը mod 2 4 հավելումն է: Գործնականում նման գործողությունը կրճատվում է պարզ գումարման, որտեղ մենք պետք է գումարենք երկու թիվ և անտեսենք փոխանցումը 5 -րդ թվանշանին: Քանի որ, եթե թվի երկուական ներկայացման թվանշանների թվերը վեր ենք դնում, ապա հինգերորդ թվանշանից վեր կլինի չորս ցուցիչ, եկեք նայենք ստորև ներկայացված նկարին, որը ցույց է տալիս մեր գործողությունների գործողությունները.

Բրինձ 2

Այստեղ ես սլաքով ցույց տվեցի ցուցիչներին, ինչպես տեսնում եք, արդյունքը պետք է լիներ 10100, բայց քանի որ mod 2 4 գործողության ընթացքում փոխանցումն անտեսվում է, մենք ստանում ենք 0100:

  1. Գրականության մեջ այս գործողությունը կոչվում է mod 2, հավաքման լեզվով այն իրականացվում է հրամանով XOR... Բայց դրա առավել ճիշտ անվանումը mod 2 1 է: Առանց այս յուրահատուկ գործողության, դժվար թե հնարավոր լինի կառուցել արագ, հեշտությամբ իրականացվող ծածկագրման ալգորիթմ և միևնույն ժամանակ այնպես, որ այն դեռ բավականին ծածկագրորեն ուժեղ լինի: Այս գործողության յուրահատկությունը կայանում է նրանում, որ այն ինքնին հակառակն է: Օրինակ, եթե A թիվը XOR է B թվով, արդյունքում կստանանք B, ապագայում բավական է reXOR B և C թվերը միմյանց միջև A- ի նախորդ արժեքը ստանալու համար:

Այս գործողության ընթացքում մենք ստացանք 1010 ՝ 1110 և 0100 թվերով, 1110 – ը հետ ստանալու համար բավական է նորից XOR- ը 0100 և 1010 համարները վերագտնել: Այս գործողության մասին ավելի մանրամասն կարելի է գտնել հոդվածում, որը կցված է կայքին: www.wasm.ru, « Տարրական ուղեցույց դեպիCRC_ սխալի հայտնաբերման ալգորիթմներ»Հեղինակը ով Ռոսս Ն. Ուիլյամս... Այս աշխատանքում կա մի կետ. 5. Երկուական թվաբանություն առանց գծանշանի". Այս հոդվածում է նկարագրված գործողությունը: xor!Ես բացականչում եմ, քանի որ այս հոդվածում այս գործողությունն այնքան պլանավորված է, որ ընթերցողը ոչ միայն հասկանում է, թե ինչպես է աշխատում այս գործողությունը, այլ նույնիսկ սկսում է այն: տեսեք, լսեք և զգացեք!

  1. Այս գործողությունը անհրաժեշտ է, որպեսզի գաղտնագրման ընթացքում սկզբնական արժեքները հնարավոր լինի ստանալ ծածկագրից:

2.2 Արգելափակ ծածկագիր ԳՕՍՏ 28147-89

ԳՕՍՏ 28147 - 89 ծածկագրման ալգորիթմը պատկանում է բլոկային ծածկագրերի կատեգորիայի, որոնք գործում են ըստ հավասարակշռված Feistel ցանցերի ճարտարապետության, որտեղ տեղեկատվության ընտրված բլոկի երկու մասը հավասար չափի են: Ալգորիթմը մշակվել է ՊԱԿ -ի ութերորդ վարչության խորքում, այժմ վերածվել է FAPSI- ի և ամրագրվել որպես Ռուսաստանի Դաշնության կոդավորման ստանդարտ դեռևս 1989 թվականին ՝ ԽՍՀՄ -ի օրոք:

Ալգորիթմի այս մեթոդի աշխատանքի համար անհրաժեշտ է տեղեկատվությունը բաժանել 64 բիթ չափի բլոկների: Ստեղծեք կամ մուտքագրեք ծածկագրման համակարգ հետևյալ հիմնական տեղեկությունները ՝ բանալին և փոխարինման աղյուսակը: Գաղտնագրման բանալին և փոխարինող աղյուսակի ընտրությունը պետք է շատ լուրջ ընդունել, քանի որ սա ձեր տեղեկատվության անվտանգության հիմքն է: Տեղեկությունների համար, թե ինչ պահանջներ են դրված բանալին և փոխարինումների աղյուսակը, տե՛ս «Հիմնական տեղեկատվության պահանջներ» կետը:

Մեթոդը դիտարկելիս մենք չենք կենտրոնանա դրա վրա, քանի որ Այս հոդվածը, ինչպես ասացի վերևում, գրվել է այն նպատակով, որպեսզի ընթերցողին սովորեցնի տվյալների գաղտնագրումը `օգտագործելով այս ծածկագրման ալգորիթմի պարզ փոխարինման մեթոդը, բայց հոդվածի վերջում մենք անպայման կանդրադառնանք այս հարցին:

Տեսական նվազագույնը:

3.1 Հիմնական տեղեկատվություն

Ինչպես ասացի վերևում, տվյալների գաղտնագրման մեջ ակտիվորեն ներգրավված են հետևյալները.

3.1.1. Բանալին ութ տարրերի հաջորդականություն է ՝ յուրաքանչյուրը 32 բիթ: Հետևյալում մենք կնշենք K խորհրդանիշով, և որի տարրերը այն են ՝ k1, k2, k3, k4, k5, k6, k7, k8:

3.1.2 Փոխարինման աղյուսակ `ութ տողերի և տասնվեց սյունակների մատրիցա, այսուհետ` Հիջ: I- ի և j սյունակի խաչմերուկում գտնվող յուրաքանչյուր տարր զբաղեցնում է 4 բիթ:

Գաղտնագրման գործընթացի հիմնական քայլը ծպտյալ փոխակերպման հիմնական քայլն է: Սա ոչ այլ ինչ է, քան որոշակի ալգորիթմի համաձայն տվյալների կոդավորման գործողություն, միայն մշակողները են անունը չափազանց ծանրաբեռնել :):

Մինչև կոդավորումը սկսելը բլոկը բաժանվում է երկու մասի L և R ՝ յուրաքանչյուրը 32 բիթ: Հիմնական տարրը ընտրվում է, և միայն դրանից հետո բլոկի այս երկու մասերը ՝ հիմնական տարրը ՝ փոխարինման աղյուսակը, մտնում են հիմնական քայլի գործառույթի մեջ, հիմնական քայլի արդյունքը բազային ցիկլի մեկ կրկնությունն է, որը կքննարկվի հաջորդ պարբերությունը: Հիմնական քայլը բաղկացած է հետևյալից.

  1. R բլոկի լրացուցիչ մասը ամփոփվում է K mod 2 32 առանցքային տարրով: Ես նկարագրեցի նմանատիպ գործողություն վերևում, այստեղ նույն բանը միայն ցուցիչը ոչ թե «4» է, այլ «32» - այս գործողության արդյունքը ապագայում կնշվի որպես Սմոդ:
  2. Նախկինում ստացված արդյունքը Smod- ը բաժանեք չորս բիթանոց տարրերի s7, s6, s5, s4, s3, s2, s1, s0 և սնուցեք այն փոխարինող գործառույթով: Փոխարինումը հետևյալն է. Smod - si տարրը ընտրված է, մենք սկզբից սկսում ենք ամենացածր տարրով և փոխարինում փոխարինող աղյուսակի արժեքով i - տողով և սյունակով մատնանշված s տարրի արժեքով: ես Անցնում ենք s i +1 տարրին և շարունակում նույն կերպ և շարունակում ենք այդպես, մինչև չփոխենք Smod- ի վերջին տարրի արժեքը. Այս գործողության արդյունքը կնշանակվի որպես, Ssimple:
  3. Այս գործողության ընթացքում մենք Ssimple արժեքը ցիկլիկորեն տեղափոխում ենք ձախ 11 բիթ և ստանում Srol:
  4. Մենք ընտրում ենք L բլոկի երկրորդ մասը և Srol- ով ավելացնում այն ​​mod 2, արդյունքում ունենում ենք Sxor:
  5. Այս փուլում L բլոկի մասը հավասար է R մասի արժեքին, իսկ R մասը, իր հերթին, սկզբնավորվում է Sxor- ի արդյունքով, և դրանով իսկ ավարտվում է հիմնական քայլի գործառույթը:

3.3 Հիմնական ցիկլեր ՝ «32-З», «32-Р»:

Տեղեկատվությունը ծածկագրելու համար անհրաժեշտ է այն բաժանել 64 բիթ չափի բլոկների, իհարկե վերջին բլոկը կարող է 64 բիթից պակաս լինել: Այս փաստը այս «հեշտ փոխարինման» մեթոդի աքիլեսյան գարշապարն է: Քանի որ դրա ավելացումը 64 բիթերի վրա շատ կարևոր խնդիր է ծածկագրման ծրագրի ծածկագրման ուժը և այս զգայուն վայրը բարձրացնելու համար, եթե այն առկա է տեղեկատվական զանգվածում, բայց այն կարող է գոյություն չունենալ (օրինակ ՝ 512 բայթ ֆայլ: ), Պետք է վերաբերվել մեծ պատասխանատվությամբ:

Տեղեկատվությունը բլոկների բաժանելուց հետո բանալին պետք է բաժանել տարրերի.

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

Կոդավորումը ինքնին բաղկացած է այսպես կոչված հիմնական ցիկլերի օգտագործումից: Ինչն իր հերթին ներառում է ծպտյալ փոխակերպման հիմնական քայլերի n-րդ թիվը:

Հիմնական ցիկլերը պիտակավորված են, թե ինչպես կարելի է ասել `n - m: Որտեղ n- ը բազային ցիկլում ծպտյալ փոխակերպման հիմնական քայլերի թիվն է, իսկ m- ը հիմնական ցիկլի «տեսակն» է, այսինքն. ինչի մասին է խոսքը ՝ տվյալների «Z» կոդավորման կամ «R» ծածկագրման մասին:

32-З հիմնական ծածկագրման ցիկլը բաղկացած է ծպտյալ փոխակերպման 32 հիմնական քայլերից: N բլոկը և K ստեղնի տարրը մտնում են քայլի գործողություններն իրականացնող գործառույթի մեջ, և առաջին քայլը տեղի է ունենում k1- ով, երկրորդը ՝ k2 տարրով ստացված արդյունքի վրա և այլն: հետևյալ սխեմայի համաձայն.

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

32-P- ի վերծանման գործընթացը տեղի է ունենում նույն ձևով, բայց հիմնական տարրերը տրված են հակառակ հերթականությամբ.

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

Բաղվեք:

Այն բանից հետո, երբ մենք ծանոթացանք տեղեկատվության գաղտնագրման տեսությանը, ժամանակն էր տեսնել, թե ինչպես է գործում գաղտնագրումը գործնականում:

Նախնական տվյալներ.

Վերցրեք N = 0102030405060708h տեղեկատվության բլոկը, այստեղ L և R մասերը հավասար են.

L = 01020304h, R = 05060708h, եկեք վերցնենք բանալին.

K = ' ինչպես 28 zw37 q839 7342ui23 8e2t wqm2 ewp1 '(դրանք ASCII- կոդերն են, տասնվեցական ներկայացումը դիտելու համար կարող եք բացել այս ֆայլը դիտման ռեժիմում Total Commander- ում ՝ սեղմելով ստեղնը F3«Եվ հետո բանալին» 3 "): Այս բանալիում տարրերի արժեքները կլինեն.

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

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

Վերցրեք նաև փոխարինման հետևյալ աղյուսակը.

Բրինձ 3

Այստեղ տողերը համարակալված են 0 -ից 7 -ը, սյուները `0 -ից մինչև F:

Նախազգուշացում.Բոլոր տեղեկությունները, ներառյալ փոխարինման աղյուսակի բանալին, օրինակ են վերցվում ալգորիթմը դիտարկելու համար:

Օգտագործելով «Նախնական տվյալները», անհրաժեշտ է ձեռք բերել ծպտյալ փոխակերպման հիմնական քայլի գործողության արդյունքը:

  1. Մենք ընտրում ենք R = 05060708h հատվածը և հիմնական տարրը k1 = 'as28', տասնվեցերորդ ձևով առանցքային տարրը կունենա այս տեսքը `61733238 ժ. Այժմ մենք կատարում ենք գումարման գործողություն mod 2 32:

Բրինձ 4

Ինչպես տեսնում եք նկարում, մենք չունեինք փոխանցում կարմիր բիթով և ցուցիչով նշված 33 բիթերի վրա: 32 ". Եվ եթե մենք ունենայինք R- ի և հիմնական տարրի այլ արժեքներ, դա կարող էր տեղի ունենալ, և ապա մենք անտեսած կլինեինք այն և հետագայում օգտագործեին միայն դեղին գույնով նշված բիթերը:

Այս գործողությունը կատարում եմ հավաքողի հրամանով ավելացնել:

; eax = R, ebx = 'as28'

Այս գործողության արդյունքը Smod = 66793940h

  1. Այժմ ամենաբարդ գործողությունը, բայց եթե ուշադիր նայեք, այն այլևս սարսափելի չէ, ինչպես թվում էր սկզբում: Եկեք Սմոդին պատկերացնենք հետևյալ կերպ.

ՆԿԱՐ ՉՊԱՀՎԵԼ

Բրինձ 5

Փորձեցի պատկերացնել Սմոդի տարրերը նկարում, բայց ամեն դեպքում կբացատրեմ.

s0 = 0, s1 = 4, s2 = 9 և այլն:

Այժմ, սկսած ամենացածր տարրից s0, մենք կատարում ենք փոխարինումը: Հիշել պարբերությունը » 3.2 ptպտյալ փոխակերպման հիմնական քայլը»I - row, s i - սյունակ, արժեքը փնտրեք զրոյական տողում և զրո սյունակում.

Նկար 6

Այսպիսով, Smod- ի ներկայիս արժեքը 6679394 չէ 0 հ, եւ 6679394 5 ժ

Մենք շարունակում ենք փոխարինել s1- ը, այսինքն. չորս Օգտագործելով առաջին շարքը և չորրորդ սյունակը (s1 = 4!): Մենք նայում ենք նկարին.

Բրինձ 7

Այժմ արդեն Smod- ի արժեքը, ոչ թե 667939 4 5 ժ, 667939 2 5 ժ Ենթադրում եմ, որ այժմ փոխարինող ալգորիթմը պարզ է ընթերցողի համար, և կարող եմ ասել, որ Ssimple- ի վերջնական արդյունքից հետո կունենա հետևյալ արժեքը `11e10325h:

Ես կխոսեմ այն ​​մասին, թե ինչպես է դա ամենահեշտն իրականացվել հավաքողի հրամանների տեսքով ՝ հաջորդ հաջորդ պարբերությունում, ընդլայնված սեղանի մասին խոսելուց հետո:

  1. Ստացված Ssimple արժեքը 11 բիթ պետք է տեղափոխենք ձախ:

Բրինձ ութ

Ինչպես տեսնում եք, այս գործողությունը բավականին պարզ է և իրականացվում է հավաքման լեզվի մեկ հրամանով. գլորումև այս Srol գործողության արդյունքն է 0819288Fh:

  1. Այժմ մնում է մեր տեղեկատվության բլոկի L մասը `XOR- ով Srol արժեքով: Ես վերցնում եմ հաշվիչ w2k sp4- ից և ստանում Sxor = 091b2b8bh:
  2. Այս գործողությունը վերջնական է, և մենք պարզապես նշանակում, մաքրում ենք R- ը, L մասի արժեքը և L հատվածը նախաստորագրում ենք Sxor արժեքով:

Վերջնական արդյունք.

L = 091b2b8bh, R = 01020304 ժ

4.2 Ալգորիթմի արագության բարձրացում

Այժմ խոսենք արագության ալգորիթմի օպտիմալացման մասին: Նախագծի իրականացման գործընթացում պետք է հաշվի առնել, որ ծրագիրն, որն ավելի հաճախ է աշխատում գրանցամատյաններով, քան հիշողությամբ, աշխատում է առավել արագ, և այստեղ այս դատողությունը նույնպես շատ կարևոր է, քանի որ տեղեկատվության մեկ բլոկից ավելի քան 32 կոդավորման գործողություն:

Երբ ես իմ ծրագրում ներդրի ծածկագրման ալգորիթմը, ես արեցի հետևյալը.

  1. Բլոկի ընտրված հատվածը դեպի eax գրանցամատյան, և R- ը ՝ edx:
  2. Esi գրանցամատյանում, որը նախաստորագրված է ընդլայնված բանալու հասցեով, դրա մասին ավելին ՝ ստորև:
  3. Ebx գրանցամատյանում նշանակվել է փոխարինումների ընդլայնված աղյուսակի հասցեի արժեքը, ավելին ՝ ստորև
  4. 1 -ին, 2 -րդ, 3 -րդ կետերի տեղեկատվությունը փոխանցել հիմնական ցիկլի գործառույթին `32 - З կամ 32 - Р, կախված իրավիճակից:

Եթե ​​նայեք պարբերության հիմնական տարրերի հոսքի դիագրամին » Հիմնական ցիկլեր ՝ «32-З», «32-Р»«, Հետո 32 - 3 հիմնական ցիկլի մեր բանալին կարող է ներկայացվել հետևյալ կերպ.

K 32-Z =

«As28», «zw37», «q839», «7342», «ui23», «8e2t», «wqm2», «ewp1»,

«As28», «zw37», «q839», «7342», «ui23», «8e2t», «wqm2», «ewp1»,

«Ewp1», «wqm2», «8e2t», «ui23», «7342», «q839», «zw37», «as28»

Նրանք սկզբից կան k1, k2, k3, k4, k5, k6, k7, k8 - as28 ','zw37 ','q839 ',' 7342 ','ui23 ',' 8e2t ','wqm2 ','ewp1 'այս հաջորդականությունը կրկնվում է երեք անգամ: Այնուհետեւ տարրերը գնում են հակառակ կարգով, այսինքն. K8, k7, k6, k5, k4, k3, k2, k1 - «Ewp1», «wqm2», «8e2t», «ui23», «7342», «q839», «zw37», «as28».

Iանգվածի տարրերը նախօրոք դասավորել եմ այն ​​կարգով, որով դրանք պետք է սնվեն 32 - Z: Այսպիսով, ես ավելացրեցի բանտարկությամբ պահանջվող հիշողությունը, բայց ինքս ինձ փրկեցի որոշ մտածողության գործընթացներից, որոնք ինձ պետք չէին և ավելացրեցի արագությունը: ալգորիթմի համար, քանի որ նվազեցնելով հիշողության հասանելիության ժամանակը: Այստեղ ես նկարագրեցի միայն 32 - З բանալին, 32 - Р ցիկլի համար ես նույնը արեցի, բայց օգտագործելով տարրերի մատակարարման այլ սխեմա, որը ես նկարագրեցի նաև պարբերությունում »: Հիմնական ցիկլեր. «32-Z», «32-P».

Այժմ ժամանակն է նկարագրելու փոխարինող գործառույթի իրականացումը, ինչպես որ խոստացել էի վերևում: Ավելի վաղ չէի կարող նկարագրել, քանի որ սա պահանջում է նոր հայեցակարգի ներդրում `ընդլայնված փոխարինման աղյուսակ: Ես չեմ կարող ձեզ բացատրել, թե ինչ է դա: Փոխարենը, ես ձեզ ցույց կտամ այն, և դուք ինքներդ ձևակերպեք ինքներդ ձեզ համար, ի՞նչ է դա ՝ փոխարինումների ընդլայնված սեղան:

Այսպիսով, որպեսզի հասկանանք, թե ինչ է ընդլայնված փոխարինման աղյուսակը, մեզ պետք է փոխարինման աղյուսակ, օրինակ ՝ ես կվերցնեմ Նկարում պատկերվածը: 3

Օրինակ, մենք պետք է փոխարինեինք 66793940h թիվը: Ես դա կներկայացնեմ հետևյալ կերպ.

ՆԿԱՐ ՉՊԱՀՎԵԼ

Բրինձ ինը

Այժմ, եթե վերցնենք s1, s0 տարրերը, այսինքն. նվազագույն նշանակություն ունեցող բայթ, փոխարինող գործառույթի արդյունքը կլինի 25 ժամ: Անդրեյ Վինոկուրովի հոդվածը կարդալուց հետո, որը ես մեջբերեցի պարբերությունում » Օգտագործված գրականության ցանկ«Դուք իրականում գտնում եք, որ երկու տող վերցնելու դեպքում կարող եք ստանալ զանգված, որը թույլ է տալիս արագ գտնել փոխարինող տարրերը ՝ օգտագործելով հավաքողի հրամանը xlatՆրանք ասում են, որ դա կարելի է անել այլ կերպ ավելի արագ, բայց Անդրեյ Վինոկուրովը մոտ չորս տարի անցկացրեց ԳՕՍՏ -ի ներդրման արագ ալգորիթմների հետազոտման համար: Չեմ կարծում, որ դուք պետք է նորից հայտնագործեք անիվը, երբ այն արդեն ունեք:

Այսպիսով, զանգվածի մասին.

Վերցրեք զրոյի առաջին երկու տողերը և առաջինը, ստեղծեք 256 բայթ զանգված: Այժմ մենք նկատում ենք մի առանձնահատկություն, որ եթե անհրաժեշտ է փոխակերպել 00h- ը, ապա արդյունքը կլինի 75h (նկ. 3 -ի հիման վրա). Մենք այս արժեքը զանգվածի մեջ ենք դնում 00h օֆսեթում: Մենք վերցնում ենք 01h արժեքը, 79h փոխարինման գործառույթի արդյունքը, այն դնում ենք զանգվածի մեջ 01 -ի օֆսեթում և այդպես մինչև 0FFh, ինչը մեզ կտա 0FCh, որը մենք զանգվածի մեջ կդնենք 0FFh օֆսեթում: Այսպիսով, մենք ստացանք փոխարինման ընդլայնված աղյուսակ տողերի առաջին խմբի համար `առաջին և զրո: Բայց դեռ երեք խումբ կա ՝ երկրորդ էջ 2, էջ 3, երրորդ էջ 4, էջ 5, չորրորդ էջ 6, էջ 7: Մենք այս երեք խմբերի հետ վարվում ենք այնպես, ինչպես առաջինի հետ: Արդյունքն ընդլայնված փոխարինման աղյուսակ է:

Այժմ մենք կարող ենք իրականացնել ալգորիթմ, որը կկատարի փոխարինումը: Դա անելու համար մենք վերցնում ենք այն կոդերը, որոնք Անդրեյ Վինոկուրովը տեղադրել է իր էջում, տես » Մատենագիտություն».

lea ebx, spreaded_table_simple

mov eax, [տեղադրեք փոխարինվող թիվը]

ավելացնել ebx, 100h; անցնել հաջորդ երկու հանգույցներին

ենթ ebx, 300 ժ; այնպես, որ ապագայում ebx- ը ցույց տա սեղանին

Այժմ ևս մեկ գործառույթ ՝ նախորդ գործողություններով մենք ոչ միայն փոխարինեցինք, այլև թիվը 8 բիթով ձախ տեղափոխեցինք: Մենք պարզապես պետք է թիվը տեղափոխենք ևս 3 բիթ ձախ:

և մենք ստանում ենք գործողության արդյունքը rol eax, 11!

Օպտիմալացման մասին ավելին չեմ կարող ավելացնել, միակ բանը, որ կարող եմ շեշտել, վերը ասվածս է. Ավելի հաճախ օգտագործել գրանցամատյանները, քան հիշողության հասանելիությունը: Կարծում եմ, որ այս բառերը միայն սկսնակների, փորձառուների համար են և առանց իմ բառերի դա հիանալի հասկանում :):

Հիմնական տեղեկատվության պահանջներ:

Ինչպես նշվում է Անդրեյ Վինոկուրովի հոդվածում, բանալին ընտրվում է երկու չափանիշի համաձայն.

- 1 և 0. արժեքների միջև բիթերի հավասարաչափ բաշխման չափանիշ: Սովորաբար, բիթերի հավասարաչափ բաշխման չափանիշը Pearson- ի չափանիշն է («chi-square»):

Սա նշանակում է, որ հիմնականը, սկզբունքորեն, ցանկացած թիվ կարող է: Այսինքն, երբ ձևավորվում է բանալու հաջորդ բիթը, մեկով կամ զրոյով սկսելու հավանականությունը 50/50 է:

Խնդրում ենք նկատի ունենալ, որ բանալին բաղկացած է ութ տարրերից, յուրաքանչյուրը 32 բիթից, այնպես որ բանալին ընդամենը 32 * 8 = 256 բիթ է, և հնարավոր բանալիների թիվը 2 256 է: Դա ձեզ չի՞ հարվածում: 🙂

- շարքի չափանիշ:

Եթե ​​նայենք մեր բանալիին, որը ես տվեցի պարբերությունում » 4.1 ptպտյալ փոխակերպման հիմնական քայլի իրականացումը», Այնուհետև կնկատեք, որ հետևյալ նշումը վավեր է.

Բրինձ տասը

Մեկ արտահայտության մեջ k 1 արժեքը չպետք է կրկնվի ոչ k 2 -ում, ոչ էլ բանալու այլ տարրում:

Այսինքն, այն բանալին, որը մենք ընտրել ենք որպես գաղտնագրման ալգորիթմի դիտարկումը լիովին համապատասխանում է վերը նշված երկու չափանիշներին:

Այժմ փոխարինումների աղյուսակի ընտրության մասին.

Այժմ եկեք խոսենք այն մասին, թե ինչպես ընտրել ճիշտ փոխարինման աղյուսակը: Փոխարինող սեղանների ընտրության հիմնական պահանջը տարրերի «չկրկնվողության» երևույթն է, որոնցից յուրաքանչյուրի չափը 4 բիթ է: Ինչպես տեսաք վերևում, փոխարինման աղյուսակի յուրաքանչյուր տող բաղկացած է 0h, 1h, 2h, 3h,…, 0fh արժեքներից: Այսպիսով, հիմնական պահանջն այն է, որ յուրաքանչյուր տող պարունակի 0h, 1h, 2h, ..., 0fh և յուրաքանչյուր այդպիսի արժեք մեկ պատճենում: Օրինակ ՝ հաջորդականությունը.

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

Այն լիովին համապատասխանում է այս պահանջին, բայց այնուամենայնիվ: Խորհուրդ չի տրվում նման հաջորդականություն ընտրել որպես տող: Քանի որ եթե դուք արժեք եք տալիս այնպիսի տողի վրա հենվող գործառույթի մուտքին, ապա ելքի վրա կստանաք նույն արժեքը: Չե՞ք հավատում: Այնուհետև վերցրեք 332DA43Fh համարը և ութ նման տող ՝ որպես փոխարինման աղյուսակ: Կատարեք փոխարինման գործողությունը, և ես ձեզ հավաստիացնում եմ, որ ելքը կլինի 332DA43Fh համարը: Այսինքն ՝ նույնը, ինչ դուք ներկայացրել եք գործողության մուտքագրմանը: Եվ սա գաղտնագրման մեջ լավ ձևի նշան չէ՞, և այդպես էր: 🙂

Սա մեկ պահանջ էր, հաջորդ չափանիշն ասում է. Ելքային բլոկի յուրաքանչյուր բիթ պետք է վիճակագրորեն անկախ լինի մուտքային բլոկի յուրաքանչյուր բիթից:

Ինչպե՞ս է այն ավելի պարզ տեսք ունենում: Եվ ահա թե ինչպես, օրինակ, վերը նշված թվից ընտրեցինք s0 = 0Fh, 01111b տարրը: Հավանականությունը, որ մենք այժմ կփոխարինենք առաջին բիթը մեկով կամ զրոյով, 0.5 է: Երկրորդ, երրորդ և չորրորդ բիթերը, յուրաքանչյուր բիթը փոխարինելու հավանականությունը, յուրաքանչյուրը համարում ենք առանձին, մեկներով կամ զրոներով նույնպես 0, 5. s1 = 0Eh ընտրելիս հավանականությունը, որ մենք զրո բիթ ենք, և սա «0» է , կփոխարինվի զրոյով կամ մեկով հավասար `0.5! Այսպիսով, ըստ այս չափանիշի, օրինաչափություն չկա s0, s1 տարրերի զրո բիթերի փոխարինման միջև: Այո, դուք կարող եք փոխարինել մեկին, բայց կարող եք նաև փոխարինել զրոներին: 🙂

Այս չափանիշով աղյուսակը գնահատելու համար կարող եք կառուցել հարաբերակցության գործակիցների աղյուսակ ՝ հաշվարկված բանաձևով.

- եթե p = 1, ապա ելքի j բի արժեքը հավասար է մուտքի բիթ i- ի արժեքին մուտքի բիտերի ցանկացած համադրության համար.

- եթե p = -1, ապա ելքի j բի արժեքը միշտ i- ի մուտքային բի հակադարձն է.

- եթե p = 0, ապա ելքային բիթը հավասար հավանականությամբ վերցնում է 0 և 1 արժեքները մուտքային բիտ i- ի ցանկացած հաստատուն արժեքի համար:

Եկեք վերցնենք մեկ տողի օրինակ.

Դ Բ 4 1 3 Ֆ 5 9 0 Ա Է 7 6 8 2 Գ

Եկեք այն բաժանենք «բաղադրիչների».

Եկեք հաշվարկենք մեկ գործակից `ըստ վերը նշված բանաձևի: Որպեսզի ավելի հեշտ լինի հասկանալ, թե ինչպես է դա արվում, ես ավելի մանրամասն կբացատրեմ.

- մենք մուտքագրում ենք 0 -րդ համարի 0 -րդ բիթը (0) և ելքի 0 -րդ համարի 0 -րդ բիթը (1) իրականացնում ենք 0 XOR 1 = 1 գործողությունը:

- մուտքի մոտ վերցնում ենք 1 -ին թվի (1) 0 -րդ բիտը և ելքի 1 -ին համարի 0 -րդ բիթը (1) կատարում ենք 1 XOR 1 = 0 գործողությունը:

- մուտքի վրա վերցնում ենք 2 -րդ համարի 0 -րդ բիտը և ելքի 2 -րդ համարի 0 -րդ բիթը (0) կատարում ենք 0 XOR 0 = 0 գործողությունը:

- մուտքի վրա վերցնում ենք 3 -րդ համարի (1) 0 -րդ բիտը և ելքի 3 -րդ համարի 0 -րդ բիթը (1) կատարում ենք 1 XOR 1 = 0 գործողությունը:

Այս հաջորդականությամբ հաջորդաբար XOR գործողություններ կատարելով ՝ մենք հաշվում ենք բոլոր ոչ զրոյական արժեքների թիվը, ստանում ենք արժեքը 6. Հետևաբար P 00 = 1- (6/2 4-1) = 0.25: Այսպիսով, պարզվեց, որ ելքի 0 բիթի արժեքը 16 -ից 4 դեպքում հավասար է մուտքի 0 բիթի արժեքին;

Գործակիցների վերջնական աղյուսակը.

Գործակիցների աղյուսակը կլինի հետևյալը (որոնց վերահաշվարկը ծույլ չէ)

մուտքը
Ելք 0 1 2 3
0 -0,25 0,00 0,00 0,00
1 0,00 1,00 0,00 0,00
2 0,00 0,00 1,00 0,00
3 0,00 0,00 0,00 -0,50

Դե, այս աղյուսակում ամեն ինչ ավելի վատ է. Խմբի 1 -ին և 2 -րդ բիթերը մնում են անփոփոխ: Ptպտյալ վերլուծաբանն ուր պետք է դիմի 🙂 Հաշվի առնելով այս բոլոր պահանջները ՝ պարզ որոնման միջոցով («գլխիվայր») գտնվեցին նշված տեսությանը համապատասխանող մուտքերի աղյուսակներ (այսօր ՝ 1276 համակցություն) Ահա դրանցից մի քանիսը.

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

Օգտագործված գրականության ցանկ:

  1. Անդրեյ Վինոկուրովի հոդվածը.

Գաղտնագրման ալգորիթմ ԳՕՍՏ 28147-89, դրա օգտագործումը և իրականացումը

Intel x86 հարթակի համակարգիչների համար:

(կարելի է գտնել ՝ http://www.enlight.ru/crypto/frame.htm):

Կան նաև կոդավորման ալգորիթմի իրականացման սկզբնաղբյուրներ:

  1. Հորստ Ֆեյստելի հոդվածը.

Գաղտնագրություն և համակարգչային անվտանգություն:

(կարելի է գտնել նախորդ հոդվածի նույն հասցեով)

  1. Ռոսս Ն. Ուիլյամս.

CRC Սխալների հայտնաբերման ալգորիթմների տարրական ուղեցույց

Տեղադրված է կայքում www.վասմru.

Շնորհակալագրեր:

Likeանկանում եմ իմ երախտագիտությունը հայտնել www.wasm.ru ֆորումի բոլոր այցելուներին: Բայց ես հատկապես կցանկանայի շնորհակալություն հայտնել ChS- ին, որը ներկայումս հայտնի է որպես SteelRat, նա օգնեց ինձ հասկանալ այնպիսի բաներ, որոնք ես հավանաբար երբեք չէի հասկանա, ինչպես նաև օգնեց պարբերությունը գրելիս. Տեղեկատվության հիմնական պահանջները», Այս պարբերության հիմնական մասը գրել է նա: Նաև խորապես շնորհակալ եմ KSTU- ի անվան աշխատակցին Ա.Ն. Տուպոլև Անիկին Իգոր Վյաչեսլավովիչին և մեղք կլիներ չհիշատակել Քրիս Կասպերսկուն այն բանի համար, որ նա կա, իսկ Վոլոդյա / wasm.ru- ն ՝ իր ցուցումների համար: Օ, և ես դա ստանում եմ նրանից :): Նաև ուզում եմ նշել Sega-Zero / Callipso- ն, բայց դա որոշ մաթեմատիկական ջունգլիներ բերեց իմ մտքում:

Սա, թերևս, այն ամենն է, ինչ ես կցանկանայի ասել ձեզ:

Ես երախտապարտ կլինեմ այս հոդվածի հետ կապված քննադատության կամ հարցերի կամ պարզապես խորհուրդների համար: Իմ կոնտակտային տվյալները. [էլփոստը պաշտպանված է], ICQ - 337310594:

Հարգանքներով ՝ Evil`s ընդհատում:

P.S. Այս հոդվածով ես չեմ փորձել գերազանցել որևէ մեկին: Այն գրված է միտումնավոր ՝ ԳՕՍՏ -ի ուսումնասիրությունը հեշտացնելու համար, և եթե դժվարություններ ունեք, դա չի նշանակում, որ ես մեղավոր եմ դրա համար: Եղեք ողջամիտ և համբերատար, ամենայն բարիք ձեզ:

Այս ալգորիթմը պարտադիր է ՝ որպես կոդավորման ալգորիթմ Ռուսաստանի Դաշնության պետական ​​և մի շարք առևտրային կազմակերպություններում:

Ալգորիթմի նկարագրություն

Ալգորիթմի դիագրամը ներկայացված է Նկ. 3.1. Ինչպես տեսնում եք, այս ալգորիթմի սխեման բավականին պարզ է, ինչը միանշանակ պարզեցնում է դրա ծրագրային կամ ապարատային իրականացումը:

ԳՕՍՏ 28147-89 ալգորիթմը գաղտնագրում է տեղեկատվությունը 64 բիթանոց բլոկներում, որոնք բաժանված են 32 բիթանոց երկու ենթաբլոկների (N1 և N2): Subblock N1- ը մշակվում է որոշակի եղանակով, որից հետո ավելացվում է դրա արժեքը

N2 ենթաբլոկային արժեքով (գումարումը կատարվում է մոդուլ 2), այնուհետև ենթաբլոկները փոխանակվում են: Նման փոխակերպումը կատարվում է որոշակի թվով փուլերով ՝ 16 կամ 32 ՝ կախված ալգորիթմի աշխատանքի եղանակից (նկարագրված է ստորև): Յուրաքանչյուր փուլում կատարվում են հետևյալ գործողությունները.

1. Բանալիների ծածկույթ: Ենթաբլոկի / VI- ի բովանդակությունը ավելացվում է modulo 2 32 Kx ստեղնի մի մասով:

ԳՕՍՏ 28147-89 ալգորիթմի ծածկագրման բանալին ունի 256 բիթ չափ, իսկ Kx- ը դրա 32-բիթ մասն է, այսինքն ՝ 256-բիթ ծածկագրման բանալին ներկայացված է որպես 32-բիթ ենթակապերի միացում (նկ. 3.2) :

SH ATI, AG2, YU, AG4, K5, KB, K7:

Կոդավորման գործընթացում այս ենթակապերից մեկը օգտագործվում է ՝ կախված կլոր համարից և ալգորիթմի աշխատանքի եղանակից:

Բրինձ 3.1. Ալգորիթմի սխեմա ԳՕՍՏ 28147-

Բրինձ 3.2. Ալգորիթմի գաղտնագրման բանալին ԳՕՍՏ 28147-89

2. Աղյուսակային փոխարինում: Բանալին պարտադրվելուց հետո ենթաբլոկը / VI- ը բաժանվում է 4 բիթերի 8 մասի, որոնցից յուրաքանչյուրի արժեքը անհատապես փոխարինվում է `ենթաբլոկի այս հատվածի փոխարինող աղյուսակի համաձայն: Փոխարինման տուփերը (S- տուփեր) հաճախ օգտագործվում են ժամանակակից ծածկագրման ալգորիթմներում, ուստի արժե դրանք ավելի մանրամասն դիտարկել:

Աղյուսակային փոխարինումը օգտագործվում է այս կերպ. Որոշակի չափման տվյալների բլոկ (այս դեպքում `4 բիթ) մուտքագրվում է մուտքի վրա, որի թվային ներկայացումը որոշում է ելքային արժեքի թիվը: Օրինակ, մենք ունենք հետևյալ ձևի S- տուփ.

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

Թող «0100» 4-բիթանոց բլոկը գա մուտքի մոտ, այսինքն ՝ արժեքը 4. Աղյուսակի համաձայն ՝ ելքային արժեքը կլինի 15, այսինքն. «1111» (0 -ը փոխարինվում է 4 -ով, 1 -ը փոխարինվում է 11 -ով, 2 -ի արժեքը չի փոխվում և այլն):

Ինչպես տեսնում եք, ալգորիթմի սխեման շատ պարզ է, ինչը նշանակում է, որ տվյալների կոդավորման ամենամեծ բեռը ընկնում է փոխարինող սեղանների վրա: Unfortunatelyավոք, ալգորիթմն ունի այն հատկությունը, որ կան «թույլ» փոխարինման աղյուսակներ, որոնցից օգտվելիս ալգորիթմը կարող է բացահայտվել գաղտնագրման մեթոդներով: Թույլերը ներառում են, օրինակ, աղյուսակ, որում ելքը հավասար է մուտքին.

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

3. Բիթային ցիկլային ձախ տեղաշարժը 11 բիթով:

Ալգորիթմի շահագործման ռեժիմներ

ԳՕՍՏ 28147-89 ալգորիթմը ունի 4 գործող ռեժիմ.

Replacement պարզ փոխարինման ռեժիմ;

□ գամմա ռեժիմ;

P գամմա ռեժիմ հետադարձ կապով;

Sim սիմուլյատորների արտադրության եղանակ:

Այս ռեժիմները որոշ չափով տարբերվում են ընդհանուր ընդունվածներից (նկարագրված է Բաժին 1.4 -ում), ուստի արժե դրանք ավելի մանրամասն դիտարկել:

Այս ռեժիմներն ունեն տարբեր նպատակներ, բայց օգտագործում են վերը նկարագրված նույն ծածկագրման փոխակերպումը:

Հեշտ փոխարինման ռեժիմ

Փոխարինման պարզ ռեժիմում վերը նկարագրված 32 փուլերը պարզապես կատարվում են տեղեկատվության յուրաքանչյուր 64-բիթանոց ծածկագրման համար: 32-բիթ ենթակապերն օգտագործվում են հետևյալ հաջորդականությամբ.

O KO, Kl, K2, KZ, K4, K5, Kb, AG7, KO, ATI և այլն `1 -ից 24 -րդ տուրերում;

□ K1, Kb, K5, K4, KZ, K2, K \, KO - 25 -ից 32 -րդ փուլերում:

Պարզ փոխարինման ռեժիմում վերծանումը կատարվում է ճիշտ նույն ձևով, բայց ենթակալի մի փոքր այլ հաջորդականությամբ.

□ KO, K \, K2, KZ, K4, K5, Kb, KP - 1 -ից 8 փուլով;

□ KP, Kb, K5, K4, KZ, K2, K \, KO, K1, Kb և այլն `9 -ից 32 -րդ փուլերում:

Ստանդարտ ԵԿԲ ռեժիմի նման, բլոկների առանձին կոդավորման պատճառով, պարզ փոխարինման ռեժիմը խստորեն չի խրախուսվում տվյալների կոդավորումը ինքնին. այն պետք է օգտագործվի միայն բազմակողմանի սխեմաներում այլ ծածկագրման բանալիներ կոդավորելու համար:

Գամմա ռեժիմ

Գամմա ռեժիմում (նկ. 3.3), պարզ տեքստի յուրաքանչյուր բլոկ բիթով ավելացվում է մոդուլ 2-ին `64-բիթանոց ծածկագրման գամմա բլոկով: Գաղտնագրման գաման հատուկ հաջորդականություն է, որը ստեղծվում է վերը նկարագրված վերափոխումների միջոցով ՝ հետևյալ կերպ.

1. N1 և N2 գրանցամատյաններում գրված է դրանց սկզբնական լրացումը `64 -բիթանոց արժեք, որը կոչվում է« համաժամացման պայթյուն »(սինխրո պայթյունը գործնականում նման է CBC, CFB և OFB ռեժիմների սկզբնավորման վեկտորին):

2. Գրանցիչների / VI և N2 (այս դեպքում `համաժամացման հաղորդագրությունների) բովանդակության կոդավորումը կատարվում է փոխարինման պարզ ռեժիմով:

3. N1- ի բովանդակությունը ավելացվում է մոդուլո (2 32 - 1) CI = 2 24 + 2 16 + 2 8 + 4 հաստատունով, ավելացման արդյունքը գրվում է / VI գրանցամատյանում:

4. N2- ի բովանդակությունը գումարվում է modulo 2 C2 = 2 24 + 2 16 + 2 8 +1 հաստատունով, ավելացման արդյունքը գրվում է N2 գրանցման համար:

5. Գրանցիչների / VI և N2- ի բովանդակությունը դուրս է բերվում որպես 64-բիթանոց ծածկագրման գամմա բլոկ (այսինքն ՝ այս դեպքում / VI և N2- ը կազմում են առաջին գամմա բլոկը):

6. Եթե անհրաժեշտ է գամմայի հաջորդ բլոկը (այսինքն ՝ պետք է շարունակել գաղտնագրումը կամ վերծանումը), ապա վերադառնում եք 2 -րդ քայլին:

Գաղտնազերծման համար գամման ստեղծվում է նույն ձևով, այնուհետև XOR գործողությունը կրկին կիրառվում է ծածկագրված տեքստի և գամմա բիթերի վրա:

Գաղտնագրման նույն շրջանակը ստեղծելու համար ծածկագրողն ապակոդավորող օգտվողը պետք է ունենա նույն բանալին և նույն սինխրո-հաղորդագրության արժեքը, որն օգտագործվել է տեղեկատվությունը կոդավորելու համար: Հակառակ դեպքում հնարավոր չի լինի բնօրինակ տեքստը ստանալ կոդավորվածից:

ԳՕՍՏ 28147-89 ալգորիթմի իրականացման մեծ մասում համաժամացման հաղորդագրությունը գաղտնի տարր չէ, այնուամենայնիվ, համաժամացման հաղորդագրությունը կարող է լինել նույնքան գաղտնի, որքան ծածկագրման բանալին: Այս դեպքում մենք կարող ենք ենթադրել, որ ալգորիթմի ստեղնի արդյունավետ երկարությունը (256 բիթ) ավելացվում է համաժամացման հաղորդագրության ևս 64 բիթով, ինչը կարող է դիտվել որպես լրացուցիչ առանցքային տարր:

Գամմա ռեժիմ ՝ հետադարձ կապով

Գամմա ռեժիմում հետադարձ կապով, որպես գրանցամատյանների լրացում / VI և L / 2, սկսած 2 -րդ բլոկից, օգտագործվում է ոչ թե նախորդ գամմա բլոկը, այլ պարզ տեքստի նախորդ բլոկի ծածկագրման արդյունքը (նկ. 3.4) . Այս ռեժիմի առաջին բլոկը գեներացվում է նախորդին լիովին նման:

Բրինձ 3.4. Գամմա ռեժիմում գաղտնագրման գամմայի ստեղծում հետադարձ կապով

Սիմուլյատորի արտադրության եղանակ

Նախածանցը գաղտնագրման ստուգիչ գումար է, որը հաշվարկվում է ծածկագրման բանալու միջոցով `հաղորդագրությունների ամբողջականությունը ստուգելու համար: Այն հաշվարկելու համար կա ԳՕՍՏ 28147-89 ալգորիթմի հատուկ ռեժիմ:

Սիմուլյատորի ստեղծումը կատարվում է հետևյալ կերպ.

1. Տեղեկատվության առաջին 64-բիթանոց բլոկը, որի համար նախածանցը հաշվարկվում է, գրվում է N1 և N2 գրանցամատյաններում և կոդավորված է պարզ փոխարինման կրճատված ռեժիմով, որում կատարվում են 32-ից առաջին 16 փուլերը:

2. Ստացված արդյունքն ամփոփվում է մոդուլ 2 -ով `տեղեկատվության հաջորդ բլոկով` արդյունքը պահելով N1 և N2- ում:

3. M և N2- ը կրկին ծածկագրվում են պարզ փոխարինման կրճատված ռեժիմով և այդպես մինչև տեղեկատվության վերջին բլոկը:

Իմիտատորը N1 և N2 գրանցամատյանների 64 % -անոց արդյունքն է կամ դրա մի մասը: Օգտագործվում է ամենից հաճախ օգտագործվող 32-բիթ նախածանցը, այսինքն `գրանցամատյանի բովանդակության կեսը: Սա բավական է, քանի որ, ինչպես ցանկացած ստուգիչ գումար, սիմուլյատորը հիմնականում նախատեսված է տեղեկատվության պատահական խեղաթյուրումից պաշտպանելու համար: Տվյալների կանխամտածված փոփոխությունից պաշտպանվելու համար օգտագործվում են գաղտնագրման այլ մեթոդներ ՝ առաջին հերթին էլեկտրոնային թվային ստորագրություն (տես բաժին 1.1):

Իմիտատորը օգտագործվում է հետևյալ կերպ.

1. informationանկացած տեղեկատվություն ծածկագրելիս պարզ տեքստի նախածանցը հաշվարկվում և ուղարկվում է ծածկագրված տեքստի հետ միասին:

2. Վերծանումից հետո նախածանցը կրկին հաշվարկվում է եւ համեմատվում է ուղարկվածի հետ:

3. Եթե հաշվարկված և ուղարկված նախածանցները չեն համընկնում, ապա ծածկագրման տեքստը աղավաղվել է փոխանցման ընթացքում կամ սխալ բանալիներ են օգտագործվել գաղտնագրման ժամանակ:

Նախածանցը հատկապես օգտակար է բազմալիքային սխեմաներ օգտագործելիս հիմնական տեղեկատվության ճիշտ գաղտնագրման ստուգման համար:

Իմիտատորը CBC հաղորդագրության նույնականացման ծածկագրի որոշ անալոգ է, որը հաշվարկվում է CBC ռեժիմում. տարբերությունն այն է, որ համաժամացման հաղորդագրությունը չի օգտագործվում նախածանցի հաշվարկման մեջ, մինչդեռ սկզբնավորման վեկտորը օգտագործվում է MAC- ի հաշվարկում:

Ալգորիթմի ծպտյալ ուժը

1994 թվականին ԳՕՍՏ 28147-89 ալգորիթմի նկարագրությունը թարգմանվեց անգլերեն և հրապարակվեց. դրանից հետո էր, որ սկսեցին հայտնվել իր վերլուծության արդյունքները, որոնք իրականացրել էին օտարերկրյա փորձագետները. այնուամենայնիվ, զգալի ժամանակահատվածում ոչ մի հարձակում չի գտնվել իրագործելի:

Key բանալու երկարություն `256 բիթ; գաղտնի համաժամացման հաղորդագրության հետ միասին, բանալիի արդյունավետ երկարությունը ավելանում է մինչև 320 բիթ;

Transform փոխակերպումների 32 փուլ; 8 ռաունդից հետո հասնում է մուտքային տվյալների ցրման ամբողջական էֆեկտը. պարզ տեքստային բլոկի մեկ բիթի փոփոխությունը կազդի ծածկագրված տեքստի բլոկի բոլոր բիթերի վրա, և հակառակը, այսինքն `կա անվտանգության բազմակի լուսանցք:

Դիտարկենք ԳՕՍՏ 28147-89 ալգորիթմի ծպտյալ վերլուծության արդյունքները:

Փոխարինող սեղանների վերլուծություն

Քանի որ փոխարինման աղյուսակները տրված չեն ստանդարտում, մի շարք աշխատանքներ (օրինակ ՝ գ) ենթադրում են, որ «իրավասու կազմակերպությունը» կարող է պատրաստել ինչպես «լավ», այնպես էլ «վատ» փոխարինման աղյուսակներ: Սակայն հայտնի փորձագետ Բրյուս Շնայերը նման ենթադրություններն անվանում է «ասեկոսեներ»: Հասկանալի է, որ ալգորիթմի գաղտնագրման ուժը մեծապես կախված է օգտագործվող փոխարինող աղյուսակների հատկություններից, համապատասխանաբար, կան թույլ փոխարինող աղյուսակներ (տես վերը բերված օրինակը), որոնց օգտագործումը կարող է պարզեցնել հարձակումը ալգորիթմի վրա: Այնուամենայնիվ, փոխարինման տարբեր աղյուսակներ օգտագործելու հնարավորությունը կարծես շատ արժանի գաղափար է, որի օգտին կարելի է մեջբերել DES ծածկագրման ստանդարտի պատմությունից բերված հետևյալ երկու փաստերը (մանրամասների համար տե՛ս բաժին 3.15 -ը).

□ DES ալգորիթմի ինչպես գծային, այնպես էլ դիֆերենցիալ գաղտնագրման օգտագործմամբ հարձակումները օգտագործում են փոխարինող աղյուսակների հատուկ առանձնահատկությունները. այլ աղյուսակներ օգտագործելիս ծպտյալ վերլուծությունը պետք է նորից սկսվի.

□ Փորձեր են արվել ամրապնդել DES- ը գծային և դիֆերենցիալ գաղտնագրման դեմ `օգտագործելով ավելի ամուր փոխարինման աղյուսակներ; նման աղյուսակները, որոնք իսկապես ավելի ամուր են, առաջարկվեցին, օրինակ, s 5 DES ալգորիթմում. բայց, ավաղ, անհնար էր փոխարինել DES- ը s 5 DES- ով, քանի որ փոխարինող աղյուսակները ստանդարտում խստորեն սահմանված են, համապատասխանաբար, ալգորիթմի իրականացումը, հավանաբար, չի աջակցում աղյուսակներն այլոց փոխելու հնարավորությունը:

Մի շարք աշխատանքներում (օրինակ, և) սխալմամբ եզրակացություն է արվում, որ ԳՕՍՏ 28147-89 ալգորիթմի փոխարինումների գաղտնի աղյուսակները կարող են լինել առանցքի մաս և մեծացնել դրա արդյունավետ երկարությունը (ինչը աննշան է, քանի որ ալգորիթմը ունի շատ մեծ 256-բիթանոց բանալին): Այնուամենայնիվ, աշխատանքը ապացուցեց, որ գաղտնի փոխարինման աղյուսակները կարող են հաշվարկվել ՝ օգտագործելով հետևյալ հարձակումը, որը կարող է կիրառվել գործնականում.

1. zeroրո բանալին սահմանվում է, և կատարվում է «զրո վեկտորի» որոնում, այսինքն ՝ z = / (0) արժեքները, որտեղ / () ալգորիթմի փուլի գործառույթն է: Այս փուլը տևում է մոտ 2 կոդավորման գործողություն:

2. theրոյական վեկտորի միջոցով հաշվարկվում են փոխարինման աղյուսակների արժեքները, որոնք տևում են ոչ ավելի, քան 2 11 գործողություն:

Ալգորիթմի փոփոխություններ և դրանց վերլուծություն

Աշխատանքն իրականացրել է ԳՕՍՏ 28147-89 ալգորիթմի փոփոխությունների ծպտյալ վերլուծություն.

□ ԳՕՍՏ-Հ ալգորիթմը, որի դեպքում, սկզբնական ալգորիթմի համեմատ, ենթակապերի օգտագործման կարգը փոխվում է, այսինքն ՝ 25-ից 32-րդ փուլերում ենթակապերն օգտագործվում են ուղղակի կարգով, այսինքն ՝ այնպես, ինչպես ալգորիթմի նախորդ փուլերը;

G 20 կլոր ԳՕՍՏ® ալգորիթմ, որն օգտագործում է XOR ՝ բանալին 32-ի հավելման փոխարեն կիրառելու համար:

Վերլուծության արդյունքների հիման վրա եզրակացվեց, որ ԳՕՍՏ-Հ-ն և ԳՕՍՏ ©-ն ավելի թույլ են, քան սկզբնական ԳՕՍՏ 28147-89 ալգորիթմը, քանի որ երկուսն էլ ունեն թույլ բանալիների դասեր: Հարկ է նշել, որ ԳՕՍՏ © գաղտնագրման մասում աշխատանքը բառ առ բառ կրկնում է ԳՕՍՏ 28147-89 ալգորիթմի ծպտյալ վերլուծությանը նվիրված հատվածը, որը հրապարակվել է 2000 թվականին հայտնի աշխատության կողմից (առանց բնօրինակի հղումների) . Սա կասկածի տակ է դնում ստեղծագործության հեղինակների պրոֆեսիոնալիզմը և դրա մնացած արդյունքները:

Աշխատանքի մեջ առաջարկվում է ալգորիթմի շատ հետաքրքիր փոփոխություն. S \… Ss աղյուսակները պետք է տարբեր լինեն. ալգորիթմի յուրաքանչյուր փուլում դրանք պետք է վերադասավորվեն ըստ որոշակի օրենքի: Այս փոխարինումը կարող է կախված լինել գաղտնագրման բանալուց կամ գաղտնի լինել (այսինքն ՝ այն կարող է լինել գաղտնագրման բանալու մաս, որն ավելի մեծ է, քան 256 բիթանոց բանալին): Այս երկու տարբերակներն էլ, ըստ իրենց հեղինակների, զգալիորեն մեծացնում են ալգորիթմի դիմադրությունը գծային և դիֆերենցիալ գաղտնագրման նկատմամբ:

Եվ աշխատանքում տրված է փոխարինման աղյուսակների հետ կապված ևս մեկ փոփոխություն, որը վերլուծում է ծածկագրման բանալու հիման վրա փոխարինման աղյուսակները հաշվարկելու հնարավոր եղանակներից մեկը: Աշխատանքի հեղինակները եզրակացրեցին, որ նման կախվածությունը թուլացնում է ալգորիթմը, քանի որ դա հանգեցնում է թույլ ստեղների առկայության և ալգորիթմի որոշ հավանական խոցելիությունների:

Ալգորիթմի ամբողջական կլոր վերլուծություն

Գրոհային հարձակումներ են գործում ամբողջ ԳՕՍՏ 28147-89-ի վրա `առանց որևէ փոփոխության: Ալգորիթմը վերլուծող առաջին բաց հոդվածներից մեկը, որը հայտնի հոդված է, նվիրված է հարձակումներին, որոնք օգտագործում են մի շարք հայտնի ծածկագրման ալգորիթմների հիմնական ընդլայնման ընթացակարգի թույլ կողմերը: Մասնավորապես, ԳՕՍՏ 28147-89-ի ամբողջական կլոր ալգորիթմը կարող է խախտվել `օգտագործելով կապակցված ստեղների վրա դիֆերենցիալ գաղտնագրություն, բայց միայն այն դեպքում, երբ օգտագործվում են թույլ փոխարինման աղյուսակներ: Ալգորիթմի 24-փուլանոց տարբերակը (որին բացակայում են առաջին 8 փուլերը) նույն կերպ բացվում է ցանկացած փոխարինման սեղանների համար, սակայն փոխարինման ուժեղ աղյուսակները (օրինակ ՝ գ) ցույց են տալիս նման հարձակումը բոլորովին անիրագործելի:

Հայրենական գիտնականներ Ա. Գ. Ռոստովցևը և Է. ցանկալի բանալին և գտնել դրա ծայրահեղությունը, որը համապատասխանում է իսկական հիմնական արժեքին: Նրանք նաև գտան ԳՕՍՏ 28147-89 ալգորիթմի թույլ բանալիների մեծ դաս, որոնք թույլ են տալիս բացել ալգորիթմը ՝ օգտագործելով ընդամենը 4 ընտրված պարզ տեքստ և համապատասխան ծածկագրային տեքստեր ՝ բավականին ցածր բարդությամբ: Ալգորիթմի ծպտյալ վերլուծությունը շարունակվում է աշխատանքում:

2004 թվականին Կորեայից ժամանած մասնագետների խումբը առաջարկեց հարձակում, որի միջոցով, օգտագործելով կապակցված բանալիների դիֆերենցիալ ծածկագրումը, հնարավոր է ստանալ 91,7% հավանականությամբ գաղտնի բանալու 12 բիթ: Հարձակման համար պահանջվում է 2 35 ընտրված պարզ տեքստ և 2 36 կոդավորման գործողություն: Ինչպես տեսնում եք, այս հարձակումը գործնականում անօգուտ է ալգորիթմի իրական հարձակման համար:

Ալգորիթմ ԳՕՍՏ 28147-89 և ծածկագիր «Մագմա» (ԳՕՍՏ Ռ 34.12-2015)

Ալգորիթմի ընդհանուր սխեման: ԳՕՍՏ 28147-89 «Տեղեկատվության մշակման համակարգեր» նկարագրված ալգորիթմը: Գաղտնագրման պաշտպանություն: Գաղտնագրման փոխակերպման ալգորիթմ », սիմետրիկ ծածկագրման ներքին չափանիշ է (մինչև 2016 թ. Հունվարի 1 -ը) և պարտադիր է պետական ​​տեղեկատվական համակարգերում և, որոշ դեպքերում, առևտրային համակարգերում օգտագործվող գաղտնագրված տեղեկատվության պաշտպանության հավաստագրված գործիքների ներդրման համար: Տեղեկատվության գաղտնագրման պաշտպանության միջոցների սերտիֆիկացումն անհրաժեշտ է Ռուսաստանի Դաշնության պետական ​​գաղտնիք հանդիսացող տեղեկատվությունը պաշտպանելու համար, և այն տեղեկատվությունը, որի գաղտնիությունը պահանջվում է ապահովել գործող օրենսդրությանը համապատասխան: Նաև Ռուսաստանի Դաշնությունում ԳՕՍՏ 28147-89 ալգորիթմի օգտագործումը խորհուրդ է տրվում բանկային տեղեկատվական համակարգերի պաշտպանության համար:

ԳՕՍՏ 28147-89 ալգորիթմը (նկ. 2.21) հիմնված է Ֆեյստելի սխեմայի վրա և տեղեկատվությունը ծածկագրում է 64 բիթանոց բլոկներում, որոնք բաժանված են 32 բիթանոց երկու ենթաբլոկների (I, և Ռ):Ենթաբլոկ Ռ,մշակվում է կլոր փոխակերպման գործառույթով, որից հետո դրա արժեքը ավելացվում է Lj ենթաբլոկի արժեքին, այնուհետև ենթաբլոկները փոխանակվում են: Ալգորիթմն ունի 16 կամ 32 փուլ ՝ կախված ծածկագրման եղանակից (իմիտացիայի տեղադրման կամ կոդավորման այլ եղանակների հաշվարկ):

Բրինձ 2.21.

Ալգորիթմի յուրաքանչյուր փուլում կատարվում են հետևյալ փոխակերպումները.

1. Բանալիների ծածկույթ:Ենթաբլոկի բովանդակություն R iավելացվել է modulo 2 32 կլոր բանալիով K. Kjսկզբնական ստեղնի 32-բիթանոց մասն է, որն օգտագործվում է որպես կլոր: ԳՕՍՏ 28147-89 ns ալգորիթմը օգտագործում է բանալիների ընդլայնման ընթացակարգ, սկզբնական 256-բիթանոց ծածկագրման բանալին ներկայացված է որպես ութ 32-բիթանոց 8 ութ ենթակապերի միացում (համակցում) (նկ. 2.22). K 0, K (, K t K, K A, K 5, K 6, K 7:

Գաղտնագրման գործընթացը օգտագործում է այս ենթակապերից մեկը Դեպի

1 -ից 24 -րդ տուրից `ուղղակի կարգով.

25 -ից 32 -րդ տուրից `հակառակ հերթականությամբ.

Բրինձ 2.22. ԳՕՍՏ 28147-89 ալգորիթմի գաղտնագրման բանալու կառուցվածքը

2. Աղյուսակային փոխարինում:Բանալին կիրառելուց հետո ենթաբլոկը R iբաժանված է ութ մասի, բայց 4 բիթ, որոնցից յուրաքանչյուրի արժեքը առանձին-առանձին փոխարինվում է ՝ համապատասխան իր փոխարինող աղյուսակին (S-box): Ընդհանուր առմամբ օգտագործվում է ութ S տուփ `S 0, S, S 2, S 3, S 4, S 5, S 6, S 7: ԳՕՍՏ 28147-89 ալգորիթմի յուրաքանչյուր S տուփ վեկտոր է (միաչափ զանգված), ^ տարրերով ՝ 0-ից 15-ը: S- տուփի արժեքները 4-բիթանոց թվեր են. 0 -ից 15 թվեր:

S- տուփի աղյուսակից վերցված է մի տարր, որի հաջորդականության համարը համընկնում է փոխարինման մուտքին եկած արժեքի հետ:

Օրինակ 2.6.

Թող լինի հետևյալ ձևի S- բլոկ.

Թող 0100 2 = 4 արժեքը տրվի այս S- տուփի մուտքին: S- տուփի ելքը կլինի փոխարինման աղյուսակի 4-րդ տարրը, այսինքն. 15 = 1111 2 (տարրերը համարակալվում են զրոյից սկսած):

փոխարինող անձինք սահմանված չեն ստանդարտով, ինչպես դա արվում է, օրինակ, DES ծածկագրում: Փոխարինվող աղյուսակների փոխարինելի արժեքները շատ ավելի դժվար են դարձնում ալգորիթմի գաղտնագրումը: Միևնույն ժամանակ, ալգորիթմի առողջությունը զգալիորեն կախված է դրանց ճիշտ ընտրությունից:

Unfortunatelyավոք, ԳՕՍՏ 28147-89 ալգորիթմն ունի «թույլ» փոխարինման աղյուսակներ, որոնցից օգտվելիս ալգորիթմը բավականին հեշտությամբ կարող է բացահայտվել գաղտնագրման մեթոդներով: «Թույլերի» շարքում է, օրինակ, փոխարինումների չնչին աղյուսակը, որում մուտքը հավասար է ելքին (Աղյուսակ 2.16):

Աղյուսակ 2.16

Թույլ S- տուփի օրինակ

Ենթադրվում է, որ փոխարինող աղյուսակների հատուկ արժեքները պետք է գաղտնի պահվեն և երկարաժամկետ հիմնական տարր են, այսինքն. վավեր են շատ ավելի երկար ժամանակ, քան առանձին բանալիները: Այնուամենայնիվ, փոխարինող աղյուսակների գաղտնի արժեքները բանալին չեն և չեն կարող մեծացնել դրա արդյունավետ երկարությունը:

Իրոք, գաղտնի փոխարինման աղյուսակները կարող են հաշվարկվել ՝ օգտագործելով հետևյալ հարձակումը, որը կարող է կիրառվել գործնականում.

  • սահմանվում է զրոյական բանալին և կատարվում է «զրո վեկտորի» որոնում, այսինքն. իմաստը զ = F ( 0), որտեղ F -ալգորիթմի կլոր փոխակերպման գործառույթը: Սա պահանջում է մոտ 32 32 թեստավորման կոդավորման գործողություն.
  • օգտագործելով զրո վեկտորը, հաշվարկվում են փոխարինման աղյուսակների արժեքները, որոնք տևում են ոչ ավելի, քան 2 11 գործողություն:

Այնուամենայնիվ, նույնիսկ եթե խախտվում է փոխարինման սեղանների գաղտնիությունը, ծածկագրման ուժը մնում է չափազանց բարձր և չի իջնում ​​թույլատրելի սահմանից:

Ենթադրվում է նաև, որ փոխարինման աղյուսակները սովորական են ծածկագրման պաշտպանության նույն համակարգի բոլոր ծածկագրման հանգույցների համար:

S- տուփերի կառուցվածքի բարելավումը սիմետրիկ բլոկային ծածկագրերի ոլորտում առավել ինտենսիվ հետազոտված խնդիրներից է: Հիմնականում պահանջվում է, որ S- արկղերի մուտքերի ցանկացած փոփոխություն թափվի մեջը պատահականկարծես թե փոխում է ելքը: Մի կողմից, որքան մեծ են S- տուփերը, այնքան ավելի դիմացկուն է ալգորիթմը գծային և դիֆերենցիալ գաղտնագրման մեթոդների նկատմամբ: Մյուս կողմից, մեծ փոխարինող սեղանը ավելի դժվար է նախագծել:

Modernամանակակից ալգորիթմներում S- տուփերը սովորաբար վեկտոր են (միաչափ զանգված), որը պարունակում է 2 "t-բիտ տարրեր: Բլոկի մուտքը սահմանում է տարրի քանակը, որի արժեքը ծառայում է որպես S- բլոկի ելք:

S- տուփերի նախագծման համար առաջադրվել են մի շարք չափանիշներ: Փոխարինման աղյուսակը պետք է համապատասխանի.

  • ձնահյուսի խիստ չափանիշ;
  • բիտ անկախության չափանիշ;
  • մուտքային արժեքներից ոչ գծային պահանջ:

Վերջին պահանջը կատարելու համար առաջարկվեց հստակեցնել գծային համադրություն եսբիթ ( ես = 1, ..., Տ)փոխարինման աղյուսակի արժեքները թեքված գործառույթներ(անգլ., ծռված -շեղվող, այս դեպքում `գծային գործառույթներից): Թեքված գործառույթները ձևավորում են բուլյան գործառույթների հատուկ դաս, որը բնութագրվում է ոչ գծայինության և ձնահյուսի խիստ չափանիշին համապատասխանության ամենաբարձր դասով:

Որոշ աշխատանքներում, S- տուփերի համար, առաջարկվում է ստուգել y կարգի երաշխավորված ձնահյուսի էֆեկտի կատարումը. Երբ մեկ մուտքային բիթ փոխվում է, S- տուփի առնվազն ելքային բիթերը փոխվում են: 2-ից 5-ի կարգի y- ի կարգի երաշխավորված ձնահյուսի ազդեցությունը ապահովում է S- տուփերի բավական լավ դիֆուզիոն բնութագրեր ցանկացած ծածկագրման ալգորիթմի համար:

Բավական մեծ փոխարինող սեղաններ նախագծելիս կարող են օգտագործվել հետևյալ մոտեցումները.

  • պատահական ընտրություն (փոքր S- տուփերի համար դա կարող է հանգեցնել թույլ փոխարինող աղյուսակների ստեղծմանը);
  • պատահական ընտրություն, որին հաջորդում է տարբեր չափանիշներին համապատասխանության ստուգումը և թույլ S տուփերի մերժումը.
  • ձեռքով ընտրություն (չափազանց աշխատատար մեծ S- բլոկների համար);
  • մաթեմատիկական մոտեցում, օրինակ ՝ ծռված գործառույթներ օգտագործող սերունդ (այս մոտեցումը կիրառվում է CAST ալգորիթմում):

ԳՕՍՏ 28147-89 ալգորիթմի առանձին S բլոկների նախագծման հետևյալ ընթացակարգը կարող է առաջարկվել.

  • յուրաքանչյուր S- տուփ կարելի է նկարագրել չորս տրամաբանական գործառույթներով, գործառույթներից յուրաքանչյուրը պետք է ունենա չորս տրամաբանական արգումենտ;
  • այս գործառույթները պետք է բավականաչափ բարդ լինեն: Այս բարդության պահանջը չի կարող պաշտոնապես արտահայտվել, սակայն, որպես անհրաժեշտ պայման, կարող է պահանջվել, որ համապատասխան տրամաբանական գործառույթները, որոնք գրված են նվազագույն ձևով (այսինքն ՝ արտահայտման նվազագույն երկարությամբ) հիմնական տրամաբանական գործողությունների միջոցով, չպետք է լինեն ավելի կարճ, քան որոշակի պահանջվող արժեք;
  • առանձին գործառույթները, որոնք նույնիսկ օգտագործվում են փոխարինման տարբեր աղյուսակներում, պետք է բավականաչափ տարբերվեն միմյանցից:

2011-ին առաջարկվեց նոր «ռեֆլեքսային հանդիպում մեջտեղում», որը փոքր-ինչ նվազեցնում է ԳՕՍՏ 28147-89-ի դիմադրությունը (2256-ից մինչև 2225-ը): Ալգորիթմի գաղտնագրման լավագույն արդյունքը 2012 թվականի դրությամբ նվազեցնում է դրա ուժը մինչև 2,192 ՝ պահանջելով համեմատաբար մեծ ծածկագրված չափ և նախապես ձևավորված տվյալների ծավալ: Չնայած առաջարկվող հարձակումներին, ԳՕՍՏ 28147-89-ը գործնականում կայուն է մնում համակարգչային տեխնոլոգիաների զարգացման ներկա մակարդակում:

Կոդ «Մագմա» (ԳՕՍՏ Ռ 34.12-2015):ԳՕՍՏ 28147-89 ստանդարտը գործում է Ռուսաստանում ավելի քան 25 տարի: Այս ընթացքում այն ​​ցույց է տվել ծրագրակազմի և ապարատային սարքավորումների, այդ թվում ՝ ցածր ռեսուրս ունեցող սարքերի բավարար դիմացկունություն և լավ արդյունավետություն: Թեև առաջարկվել են ծպտյալ անալիտիկ հարձակումներ, որոնք նվազեցնում են դրա դիմադրության գնահատականները (լավագույնը ՝ 2,192 -ն է), սակայն դրանք հեռու են իրագործելի լինելուց: Հետևաբար, որոշվեց ԳՕՍՏ 28147-89 ալգորիթմը ներառել նոր մշակված սիմետրիկ ծածկագրման ստանդարտում:

2015-ի խանութում ընդունվեցին գաղտնագրման երկու նոր ազգային չափորոշիչներ ՝ ԳՕՍՏ Ռ 34.12-2015 «Տեղեկատվական տեխնոլոգիաներ. Գաղտնագրման տեղեկատվության պաշտպանություն: Արգելափակման ծածկագրեր »և ԳՕՍՏ Ռ 34.13-2015« Տեղեկատվական տեխնոլոգիաներ. Գաղտնագրման տեղեկատվության պաշտպանություն: Բլոկային ծածկագրերի գործառնական ռեժիմներ », որն ուժի մեջ է մտնում 2016 թվականի հունվարի 1 -ից:

ԳՕՍՏ Ռ 34.12-2015 ստանդարտը պարունակում է 128 և 64 բիթանոց բլոկների երկարությամբ երկու բլոկային ծածկագրերի նկարագրություն: ԳՕՍՏ 28147-89 ծածկագիրը ՝ ամրագրված ոչ գծային փոխարինման բլոկներով, ներառված է նոր ԳՕՍՏ Ռ 34.12-2015-ում ՝ որպես «Մագմա» կոչվող 64-բիթանոց ծածկագրիչ:

Ստորև բերված են ստանդարտում ամրագրված փոխարինող բլոկները.

Ստանդարտում տրված S- տուփերի հավաքածուն ապահովում է լավագույն հատկանիշները, որոնք որոշում են ծպտյալալգորիթմի դիմադրությունը դիֆերենցիալ և գծային գաղտնագրման նկատմամբ:

Ըստ «Գաղտնագրման տեղեկատվության անվտանգություն» ստանդարտացման տեխնիկական կոմիտեի (TC 26) ՝ ոչ գծային փոխարինման բլոկների ամրագրումը ԳՕՍՏ 28147-89 ալգորիթմը կդարձնի ավելի միասնական և կօգնի վերացնել «թույլ» ոչ գծային փոխարինող բլոկների օգտագործումը: Բացի այդ, ծածկագրման բոլոր երկարաժամկետ պարամետրերի ստանդարտի ամրագրումը համապատասխանում է ընդունված միջազգային պրակտիկային: ԳՕՍՏ Ռ 34.12-2015 նոր ստանդարտը տերմինաբանորեն և հայեցակարգորեն կապված է ISO / IEC 10116 միջազգային ստանդարտների հետ `« Տեղեկատվական տեխնոլոգիաներ: Անվտանգության մեթոդներ: Գործող ռեժիմներ «-bit բլոկային ծածկագրերի» համար (ISO / IEC 10116: 2006 Տեղեկատվական տեխնոլոգիաներ - Անվտանգության տեխնիկա - Գործողությունների ռեժիմներ n -bit բլոկի ծածկագրման համար) և ISO / IEC 18033 շարքի «Տեղեկատվական տեխնոլոգիաներ. Անվտանգության ապահովման մեթոդներ և միջոցներ: Գաղտնագրման ալգորիթմներ ». ISO / IEC 18033-1: 2005« Մաս 1. Ընդհանուր »(ISO / IEC 18033-1: 2005 Տեղեկատվական տեխնոլոգիաներ - Անվտանգության տեխնիկա - Գաղտնագրման ալգորիթմներ - Մաս 1. Ընդհանուր) և ISO / IEC 18033-3: 2010 «Մաս 3. Արգելափակման ծածկագրեր» (ISO / IEC 18033-3: 2010 (Տեղեկատվական տեխնոլոգիաներ - Անվտանգության տեխնիկա - Գաղտնագրման ալգորիթմներ - Մաս 3. Արգելափակման ծածկագրեր)):

ԳՕՍՏ Պ 34.12-2015 ստանդարտը ներառում է նաև նոր բլոկային ծածկագիր («Մորեխ») ՝ 128 բիթ բլոկի չափսերով: Ակնկալվում է, որ այս ծածկագրումն ամուր կլինի այսօր հայտնի բոլոր բլոկային ծածկագրերի հարձակումների դեմ:

Բլոկային ծածկագրերի շահագործման եղանակները (պարզ փոխարինում, գամա, ելք հետադարձ կապով, գամա `ծածկագրված հետադարձմամբ, պարզ փոխարինում ներգրավվածությամբ և իմիտացիոն ներդիրի ստեղծում) ներառված են առանձին ստանդարտ ԳՕՍՏ Ռ 34.13-2015-ում, որը համապատասխանում է ընդունված միջազգային պրակտիկա: Այս ռեժիմները կիրառելի են ինչպես Magma ծածկագրի, այնպես էլ Grasshopper- ի նոր ծածկագրի համար:

  • Կատարվում է բիթային շրջանաձև ձախ տեղաշարժ 11 բիթով: Գաղտնագրումն իրականացվում է նույն սխեմայի համաձայն, բայց օգտագործման առանցքային այլ ժամանակացույցով ՝ վերծանման 1 -ից 8 -րդ փուլից `ուղղակի կարգով. Գաղտնագրման 9 -ից 32 -րդ փուլից` հակառակ հերթականությամբ. ԳՕՍՏ 28147-89-ի DES ծածկագիրը ունի հետևյալ առավելությունները. Զգալիորեն ավելի երկար բանալին (256 բիթ դիմաց 56-ը DES ծածկագրման համար), հարձակումը, որի վրա առանցքային հավաքածուի կոպիտ թվարկմամբ այս պահին անհնար է թվում. բանալին օգտագործելու պարզ ժամանակացույց, որը հեշտացնում է ալգորիթմի իրականացումը և մեծացնում հաշվարկների արագությունը: S- բլոկների նախագծում ԳՕՍՏ 28147-89: Ակնհայտ է, որ ԳՕՍՏ 28147-89 ալգորիթմի սխեման շատ պարզ է: Սա նշանակում է, որ գաղտնագրման ամենամեծ բեռը ընկնում է փոխարինման սեղանների վրա: Ներդիրի արժեքներ
  • Panasepko S.P. Գաղտնագրման ալգորիթմներ. Հատուկ տեղեկատու գիրք: SPb.: BHV-Peter-burg, 2009 թ.
  • Կարա Օ. Արտացոլման հարձակումներ արտադրանքի ծածկագրերի վրա: URL: http://eprint.iacr.org/2007/043.pdf
  • Գաղտնագրման ռուսական ստանդարտ. Ուժը նվազել է: URL: http://cryptofaq.ru/index.php/2010-12-23-18-20-21/2010-12-23-18-22-09/90-2011-02-01-07-47- 27
  • Աչեկսեև Է. Կ., Սմիշլյաև Ս. Վ. ԳՕՍՏ 28147-89. «Մի շտապեք թաղել նրան»:

Հայտնի հետազոտող, հանրահաշվական ծպտյալ վերլուծության հիմնադիր Նիկոլա Կուրտուան ​​պնդում է, որ ԳՕՍՏ բլոկի ծածկագիրը, որը մոտ ապագայում պետք է դառնար միջազգային չափանիշ, իրականում կոտրված է և ապագայում սպասում է բազմաթիվ հրապարակումների, որոնք պետք է զարգացնեն նրա գաղափարները այս ալգորիթմի անկայունությունը:

Ստորև բերված են այս աշխատությունից կարճ հատվածներ, որոնք կարող են դիտվել որպես տագնապալի հարձակում միջազգային ստանդարտացման պայմաններում (հեղինակը հայտնի էր AES- ի հետ կապված նման չափազանցություններով, բայց նրա աշխատանքը այնուհետև տեսականորեն մեծ ազդեցություն ունեցավ գաղտնագրման վրա, բայց չի հանգեցրել բուն AES- ի վրա գործնական հարձակումների): Բայց, թերևս, սա նաև իսկական նախազգուշացում է «ինքնաթիռի սուզվող պոչի մեջ» փուլի սկզբի մասին, որը կարող է ավարտվել գաղտնագրման ազգային ստանդարտի փլուզումով, ինչպես եղավ SHA-1 հեշինգի ալգորիթմի դեպքում և փաստացի MD5 հեշինգի ալգորիթմը:

ԳՕՍՏ 28147-89-ը ստանդարտացվել է 1989 թ. Եվ առաջին անգամ դարձել է գաղտնի տեղեկատվության պաշտպանության պաշտոնական ստանդարտ, սակայն ծածկագրման բնութագիրը փակ է մնացել: 1994 թվականին ստանդարտը գաղտնազերծվեց, հրապարակվեց և թարգմանվեց անգլերեն: AES- ի (և ի տարբերություն DES- ի) անալոգիայի `ԳՕՍՏ -ին թույլատրվում է պաշտպանել դասակարգված տեղեկատվությունը առանց սահմանափակումների` համաձայն Ռուսաստանի ստանդարտում նշված եղանակի: Որ ԳՕՍՏ-ը DES- ի անալոգը չէ, այլ 3-DES- ի մրցակիցը երեք անկախ բանալիներով կամ AES-256- ով: Ակնհայտ է, որ ԳՕՍՏ -ը բավականին լուրջ ծածկագիր է, որը համապատասխանում է ռազմական չափանիշներին ՝ ստեղծված ամենալուրջ ծրագրերի ակնկալիքով: ԳՕՍՏ S տուփերի առնվազն երկու հավաքածու է հայտնաբերվել `հիմնվելով ռուսական բանկերի կողմից կիրառվող դիմումների վրա: Այս բանկերը պետք է գաղտնի հաղորդակցություններ վարեն հարյուրավոր մասնաճյուղերի հետ և միլիարդավոր դոլարներ պաշտպանեն խարդախ գողություններից:

ԳՕՍՏ-ը բլոկային ծածկագիր է `պարզ Feistel կառուցվածքով, 64 բիթ բլոկի չափսերով, 256-բիթանոց ստեղնով և 32 փուլով: Յուրաքանչյուր փուլ պարունակում է modulo 2 ^ 32 ստեղնային հավելում, ութ 4-բիթանոց S տուփերի հավաքածու և 11-բիթանոց պարզ ցիկլային տեղաշարժ: ԳՕՍՏ-ի առանձնահատկությունը S- բլոկները գաղտնի պահելու ունակությունն է, որը կարող է ներկայացվել որպես երկրորդ բանալին, որը արդյունավետ բանալի նյութը հասցնում է 610 բիթի: S- տուփերի փաթեթը հրատարակվել է 1994 թվականին ՝ ԳՕՍՏ-Ռ 34.11-94 հեշ գործառույթի ճշգրտման մասով և, ինչպես գրել է Շնեյերը, օգտագործվել է Ռուսաստանի Դաշնության Կենտրոնական բանկի կողմից: Այն ներառված է նաև RFC4357 ստանդարտում ՝ «id-GostR3411-94-CryptoProParamSet» մասում: Շնեյերի գրքի վերջում աղբյուրի կոդի սխալ կար (S- տուփի կարգով): Բնիկ ռուսական ծագման առավել ճշգրիտ տեղեկատուի ներդրումն այժմ կարելի է գտնել OpenSSL գրադարանում: Եթե ​​ինչ-որ տեղ գաղտնի S տուփեր են օգտագործվում, ապա դրանք կարող են հանվել ծրագրային ապահովման ներդրումներից և միկրոշրջաններից, ըստ էության, համապատասխան աշխատանքները հրապարակվել են:

ԳՕՍՏ -ը լուրջ մրցակից է

Ի լրումն շատ մեծ բանալու չափի, ԳՕՍՏ -ն ունի զգալիորեն ավելի ցածր կատարողական արժեք `համեմատած AES- ի և նմանատիպ այլ ծածկագրման համակարգերի հետ: Իրականում, այն շատ ավելի էժան է, քան AES- ը, որը պահանջում է չորս անգամ ավելի շատ ապարատային տրամաբանական դարպասներ `ավելի ցածր հայտարարված անվտանգության համար:

Surprisingարմանալի չէ, որ ԳՕՍՏ -ը դարձել է ինտերնետային ստանդարտ, մասնավորապես, այն ներառված է բազմաթիվ ծպտյալ գրադարաններում, ինչպիսիք են OpenSSL- ը և Crypto ++ -ը, և ավելի հայտնի է դառնում ծագման երկրից դուրս: 2010 թվականին ԳՕՍՏ -ը հայտարարվեց ISO ստանդարտացման համար `որպես համաշխարհային կոդավորման ստանդարտ: Չափազանց փոքր թվով ալգորիթմներ կարողացել են դառնալ միջազգային չափանիշներ: ISO / IEC 18033-3: 2010-ը նկարագրում է հետևյալ ալգորիթմները. Չորս 64-բիթ ծածկագրեր `TDEA, MISTY1, CAST-128, HIGHT և երեք 128-բիթ ծածկագրեր` AES, Camellia, SEED: ԳՕՍՏ-ն առաջարկվում է ավելացնել նույն ISO / IEC 18033-3 ստանդարտին:

Արդյունաբերական ստանդարտացման պատմության մեջ առաջին անգամ մենք գործ ունենք նման մրցունակ ալգորիթմի հետ `ծախսերի և անվտանգության մակարդակի օպտիմալության առումով: ԳՕՍՏ-ն ունի 20 տարվա գաղտնագրման աշխատանքներ, և մինչև վերջերս նրա ռազմական աստիճանի անվտանգությունը կասկածի տակ չի դրվել:

Ինչպես հեղինակը վերջերս է սովորել մասնավոր նամակագրությունից, Սինգապուրում ISO- ի քվեարկության ժամանակ երկրների մեծամասնությունը դեմ է արտահայտվել ԳՕՍՏ -ին, սակայն այս քվեարկության արդյունքները դեռ կքննարկվեն ISO SC27 լիագումար նիստում, ուստի ԳՕՍՏ -ը դեռ ստանդարտացման փուլում է այս աշխատանքի հրապարակումը:

ԳՕՍՏ -ի վերաբերյալ փորձագետների կարծիքներ

ԳՕՍՏ -ի վերաբերյալ առկա տեղեկատվությունից և գրականությունից ոչինչ հիմք չի տալիս ենթադրելու, որ ծածկագրումը կարող է անապահով լինել: Ընդհակառակը, բանալիների մեծ չափը և մեծ թվով պտույտները ԳՕՍՏ -ին դարձնում են, առաջին հայացքից, հարմար տասնամյակներ օգտագործելու համար:

Մուրի օրենքին ծանոթ յուրաքանչյուր ոք գիտակցում է, որ տեսականորեն 256-բիթանոց բանալիները ապահով կմնան առնվազն 200 տարի: ԳՕՍՏ -ը լայնորեն ուսումնասիրվել է գաղտնագրման ոլորտի առաջատար փորձագետների կողմից, որոնք հայտնի են բլոկային ծածկագրերի վերլուծության ոլորտում, ինչպիսիք են ՝ Շնեյերը, Բիրյուկովը, Դանկելմանը, Վագները, ավստրալացի, ճապոնացի և ռուս շատ գիտնականներ, ISO- ի գաղտնագրման փորձագետներ և բոլոր հետազոտողները: արտահայտեց, որ ամեն ինչ կարծես այսպիսին է, որ նա կարող է լինել կամ պետք է ապահով լինի: Չնայած այն կարծիքին, որ ընդհանուր հասկացության է հասել, որ ԳՕՍՏ -ի կառուցվածքը ինքնին չափազանց թույլ է, օրինակ, համեմատած DES- ի հետ, մասնավորապես, դիֆուզիոն այնքան էլ լավ չէ, այնուամենայնիվ, դա միշտ պայմանավորված էր նրանով, որ դա պետք է փոխհատուցվի մեծ թվով ռաունդներ (32), ինչպես նաև մոդուլային հավելումով ապահովված լրացուցիչ ոչ գծայնություն և դիֆուզիոն:

Բիրյուկովը և Վագները գրում են. Նույն աշխատության մեջ մենք կարդում ենք. «Timeամանակի և ջանքերի զգալի ներդրումից հետո բաց գրականության մեջ ստանդարտի ծածկագրման վերլուծության մեջ առաջընթաց չի գրանցվել»: Այսպիսով, չկային էական հարձակումներ, որոնք թույլ կտային գաղտնագրում կամ բանալիների վերականգնում իրատեսական սցենարով, երբ ԳՕՍՏ -ն օգտագործվում է բազմաթիվ տարբեր պատահական բանալիներով ծածկագրման մեջ: Ի հակադրություն, կան բազմաթիվ աշխատանքներ, որոնք հայտնի են ԳՕՍՏ-ում թույլ ստեղների վրա հարձակումների, հարակից բանալիների հետ հարձակումների, գաղտնի S- տուփերի վերականգնման վրա հարձակումների վերաբերյալ: Crypto-2008- ում ներկայացվեց այս ծածկագրի հիման վրա հեշ գործառույթի կոտրումը: Բոլոր հարձակումներում հարձակվողն ունի զգալիորեն ավելի մեծ ազատության մակարդակ, քան իրեն սովորաբար թույլ կտար: Պատահականորեն ընտրված ստեղների կիրառմամբ ծածկագրման ավանդական ծրագրերում մինչ այժմ GOST- ի վրա գաղտնագրման լուրջ հարձակումներ չեն հայտնաբերվել, ինչը 2010 -ին արտահայտվել է վերջնական արտահայտությամբ. ճեղքված »(Axel Poschmann, San Ling, and Huaxiong Wang: 256 Bit Standardized Crypto for 650 GE GOST Revisited, In CHES 2010, LNCS 6225, pp. 219-233, 2010):

ԳՕՍՏ գծային և դիֆերենցիալ վերլուծություն

Շնեյերի հայտնի գրքում մենք կարդում ենք. «Ի տարբերություն դիֆերենցիալ և գծային գաղտնագրման, ԳՕՍՏ-ը, հավանաբար, ավելի ամուր է, քան DES- ը»: ԳՕՍՏ -ի անվտանգության հիմնական գնահատականը տրվել է 2000 թվականին Գաբիդուլինի և այլոց կողմից: Դրանց արդյունքները շատ տպավորիչ են. 2 ^ 256 անվտանգության մակարդակով հինգ փուլը բավարար է ԳՕՍՏ -ը գծային ծածկագրումից պաշտպանելու համար: Ավելին, նույնիսկ S- տուփերը նույնականներով փոխարինելուց և միակ ոչ գծային ծածկագրման գործողությունից `հավելում mod 2 ^ 32 - ծածկագիրը դեռ դիմացկուն է գծային գաղտնագրման 32 -ից 6 փուլից հետո: ԳՕՍՏ -ի դիֆերենցիալ գաղտնագրումը համեմատաբար ավելի հեշտ է թվում և ավելի մեծ ուշադրություն է գրավում: Անվտանգության 2 ^ 128 մակարդակի համար հետազոտողները (Վիտալի Վ. Շորին, Վադիմ Վ. Lezելեզնյակով և Էռնստ Մ. Գաբիդուլին. Ռուսական ԳՕՍՏ -ի գծային և դիֆերենցիալ ծպտյալ վերլուծություն, 2001 թ. Ապրիլի 4 -ին ներկայացված Elsevier Preprint- ին տրված տպագիր) 7 ռաունդում բավարար երկարակեցություն էին ենթադրում: Նրանց կարծիքով, ավելի քան հինգ փուլերում ԳՕՍՏ -ի խախտումը «չափազանց դժվար է»: Ավելին, երկու ճապոնացի հետազոտողներ ցույց են տվել, որ մեկ դիֆերենցիալ բնութագրիչով դասական ուղիղ դիֆերենցիալ հարձակումը մեծ թվով փուլեր անցնելու չափազանց ցածր հավանականություն ունի: Հիմք ընդունելով սահմանափակ թվով փուլերի բավականաչափ «լավ» կրկնվող դիֆերենցիալ բնութագիր ուսումնասիրելու փաստը (որն ինքնին ունի մեկ փուլից ոչ ավելի, քան 2-11,4-ից անցնելու հավանականություն), համապատասխան բանալիների փաթեթի արժեքը կեսից պակաս է: . Ամբողջական ԳՕՍՏ-ի համար մեկ բնութագրիչով նման հարձակումը կաշխատի միայն 2-62 կարգի բանալիների աննշան մասով (և նույնիսկ այս փոքր մասում այն ​​կունենա հավանականություն ՝ անցնել ոչ ավելի, քան 2-360) ):

Առավել բարդ հարձակումները ներառում են բազմաթիվ դիֆերենցիալներ, որոնք հետևում են որոշակի օրինաչափությունների, օրինակ ՝ առանձին S- տուփերի օգտագործումը, որոնք զրոյական դիֆերենցիալ ունեն, իսկ մյուս բիթերն ունեն ոչ զրո: Մենք խոսում ենք ԳՕՍՏ -ի վատ դիֆուզիոն հատկությունների վրա հիմնված խտրական հարձակումների մասին: Այս հարձակումներից լավագույնը գործում է ԳՕՍՏ -ի 17 փուլի դեմ, կախված է բանալուց և ինքնին ելքի ծայրահեղ պատահական տվյալների ծայրահեղ թույլ տարբերակիչ է, այնպես որ այն ինչ -որ կերպ կարող է օգտագործվել բանալու մասին տեղեկատվություն ստանալու համար:

Սայթաքել և շեղել հարձակումները

Ըստ Բիրյուկովի և Վագների, ԳՕՍՏ-ի կառուցվածքը, որը ներառում է վերջին փուլերի ենթակապերի հակառակ կարգը, այն դիմադրողական է դարձնում սահող հարձակումներին (այսպես կոչված, «սահիկների հարձակումներ»): Այնուամենայնիվ, ծածկագրում մեծ նմանության առկայության պատճառով դա թույլ է տալիս առանցքային հակադարձ հարձակումներ կատարել որոշակի թույլ բանալիների ֆիքսված կետերի և «արտացոլման» հատկությունների վրա (այսպես կոչված «ռեֆլեկտիվ հարձակումներ»): Այս հարձակման բարդությունը 2 ^ 192 և 2 ^ 32 համապատասխան պարզ տեքստեր են:

Վերջին արդյունքները

Նոր հարձակումները նույնպես օգտագործում են արտացոլումը և իրականում կոտրեցին ԳՕՍՏ -ը, որը ներկայացվեց FSE 2011 համաժողովում: Այս հարձակումները նույնպես ինքնուրույն հայտնաբերվեցին այս հոդվածի հեղինակի կողմից: Հարձակման համար պահանջվում է 2 ^ 132 բայթ հիշողություն, որն իրականում ավելի վատ է, քան դանդաղ հարձակումները ՝ ավելի քիչ հիշողության պահանջներով:

Ինքնանմանության մի շարք նոր հարձակումներ գործում են ԳՕՍՏ-ի բոլոր ստեղների դեմ և թույլ են տալիս կոտրել ամբողջական ԳՕՍՏ-ը 256-բիթանոց ստեղնով, ոչ միայն թույլ բանալիների դեպքում, ինչպես նախկինում էր: Այս բոլոր հարձակումները զգալիորեն ավելի քիչ հիշողություն են պահանջում և զգալիորեն ավելի արագ են:

Այս նոր հարձակումները կարող են դիտվել որպես բլոգային ծածկագրերի ծածկագրման նոր ընդհանուր պարադիգմայի օրինակներ, որը կոչվում է «հանրահաշվական բարդության նվազեցում» ՝ այդ հարձակումների ընդհանրացմամբ հայտնի ֆիքսված կետերով, սահիկներով, ներգրավվածությամբ և ցիկլերով հարձակումների բազմաթիվ հատուկ դեպքերի: Կարևոր է, որ այս բոլոր հարձակումների ընտանիքում կան այնպիսիք, որոնք թույլ են տալիս ԳՕՍՏ -ի ծածկագրում ՝ առանց որևէ արտացոլման և առանց որևէ սիմետրիկ կետի, որոնք հայտնվում են հաշվարկների ընթացքում: Օրինակներից մեկը ԳՕՍՏ -ի պարզ հաքերային հարձակումն է ՝ առանց այս աշխատանքում արտացոլման:

Հանրահաշվական ծպտյալ վերլուծություն և ցածր տվյալների բարդության հարձակումներ կրճատված ռադիոծրագրերի վրա

Բլոկային և հոսքային ծածկագրերի վրա հանրահաշվական հարձակումները կարող են ներկայացվել որպես բուլյան հանրահաշվական հավասարումների մեծ համակարգի լուծման խնդիր, որը հետևում է որոշակի գաղտնագրման սխեմայի երկրաչափությանը և կառուցվածքին: Հենց գաղափարը վերադառնում է Շենոնին: Գործնականում այն ​​ներկայացվել է DES- ի համար (առաջինը ներկայացվել է այս աշխատանքի հեղինակի կողմից) որպես կոդավորման պաշտոնական մեթոդ և կարող է 6 փուլ ճեղքել միայն մեկ հայտնի պարզ տեքստով: Հավասարումների մանիպուլյացիան հիմնված է XL ալգորիթմների, Gröbner հիմքերի, ElimLin մեթոդի, SAT լուծիչների վրա:

Գործնականում հանրահաշվական հարձակումներն իրականացվել են բլոկային ծածկագրերի շատ փոքր քանակությամբ, բայց արդեն հանգեցրել են հոսքի ծածկագրերի ճեղքման, ինչպես նաև հաջողություններ են գրանցվել միկրո սարքավորումների համար չափազանց թեթև ծածկագրեր կոտրելու գործում: Հիշողության չափի և հաշվիչ ծախսերի գնահատման դժվարությունների պատճառով դրանք զուգորդվում են այլ հարձակումների հետ:

Ինչպե՞ս կոտրել ԳՕՍՏ -ը:

Այս հրատարակության մեջ առավել մանրամասն ներկայացված է հանրահաշվական հարձակումը ԳՕՍՏ-ի ամբողջական շրջանակի վրա: Նախորդ աշխատանքում հեղինակը արդեն նախանշել է 20 հանրահաշվական հարձակումներ ԳՕՍՏ -ի վրա և մոտ ապագայում ակնկալում է դրանց մեծ քանակ: Այս աշխատանքում առաջարկվող հարձակումը դրանցից լավագույնը չէ, բայց այն բացում է պարզ (գոնե գաղտնագրագետների ընկալման համար) ուղի հետագա զարգացումների համար `ԳՕՍՏ -ը ճեղքելու հատուկ մեթոդաբանություն ստեղծելու համար:

Գործնական արդյունքը դեռ համեստ է. 2 ^ 64 հայտնի պարզ տեքստ և 2 ^ 64 հիշողություն `պարզ տեքստ / ծածկագրված զույգեր պահելու համար հնարավորություն են տալիս ԳՕՍՏ 2 ^ 8 -ը ավելի արագ ճեղքել, քան պարզ բիրտ ուժը: Բայց ծպտյալ անալիզի առումով սա լիովին արդարացի է դարձնում ասել, որ «ԳՕՍՏ -ը ճեղքված է»:

եզրակացություններ

ԳՕՍՏ -ը նախագծված է գալիք 200 տարիների անվտանգության մակարդակի ապահովման համար: ԳՕՍՏ -ն ուսումնասիրած առաջատար փորձագետներից շատերը համաձայնել են, որ «չնայած քսան տարվա ընթացքում ծպտյալ վերլուծական նշանակալի ջանքերին, ԳՕՍՏ -ը դեռ չի ճեղքվել»: 2010 թ. -ին ԳՕՍՏ -ը բարձրացվում է որպես ISO 18033 ՝ որպես կոդավորման համաշխարհային ստանդարտ:

Հանրահաշվական գաղտնագրման վերաբերյալ գաղափարների հիմքը ծագեց ավելի քան 60 տարի առաջ: Բայց միայն վերջին 10 տարիների ընթացքում են մշակվել արդյունավետ ծրագրային գործիքներ `NP- ամբողջական խնդիրների (մասնակի) լուծման համար: Մի շարք հոսքային ծածկագրեր ճեղքվել են: Այս մեթոդով կոտրվել է միայն մեկ բլոկային ծածկագիր `թույլ KeeLoq- ն: Այս աշխատանքում հեղինակը խախտում է կարևոր, իրականում օգտագործված ԳՕՍՏ ծածկագրումը: Նա նշում է, որ սա պատմության մեջ առաջին դեպքն է, երբ ստանդարտացված պետական ​​ծածկագիրը խախտվում է հանրահաշվական գաղտնագրման միջոցով:

FOST 2011 համաժողովում արդեն ներկայացվել է պարզ «MITM արտացոլմամբ» հարձակում ԳՕՍՏ -ի վրա: Այս հոդվածում քննարկված աշխատանքում մեկ այլ հարձակում ներկայացվում է միայն այն փաստը ցույց տալու համար, որ ԳՕՍՏ -ի վրա քանի հարձակում արդեն հայտնվել է, որոնցից շատերը ավելի արագ են, և հանրահաշվական հարձակումը պահանջում է շատ ավելի քիչ հիշողություն և հակառակորդի համար բացում է գրեթե անսպառ հնարավորություններ ՝ տարբեր կերպ հարձակվելու ծածկագրի վրա: Նաև այս հոդվածում ցույց է տրվում, որ կարիք չկա արտացոլման հատկությունը կոտրելու համար օգտագործել:

Հեղինակը պնդում է, որ ակնհայտ է, որ ԳՕՍՏ -ն ունի լուրջ թերություններ և այժմ չի ապահովում ISO- ի կողմից պահանջվող ամրության մակարդակը: ԳՕՍՏ -ի վրա բազմաթիվ հարձակումներ ներկայացված են հանրահաշվական բարդության նվազեցման պարադիգմայի հաստատման շրջանակներում:

Վերջապես, հետազոտողը հատկապես նշում է որոշ փաստեր, որոնք դեռ հասանելի չեն ընթերցողին, բայց հայտնի են հետազոտողին, որոնք կարևոր են ISO ստանդարտացման գործընթացի ընթացքում: Այս հարձակումը պարզապես «սերտիֆիկացման» հարձակում չէ ԳՕՍՏ -ի վրա, որն ավելի արագ է, քան բիրտ ուժի բիրտ ուժի հարձակումը: Փաստորեն, ԳՕՍՏ -ի ստանդարտացումն այժմ չափազանց վտանգավոր և անպատասխանատու կլինի: Դա պայմանավորված է նրանով, որ որոշ հարձակումներ գործնական են: Գործնականում ԳՕՍՏ -ի որոշ բանալիներ նույնիսկ կարող են վերծանվել ՝ անկախ նրանից, որ դրանք թույլ բանալիներ են, թե ԳՕՍՏ -ի մասնավոր իրական ծրագրերից բանալիներ: Նախորդ աշխատանքում հեղինակը մանրամասն դիտարկում է գործնական հարձակումների հնարավորության դեպքերը: Հատկանշական է, որ «սա պատմության մեջ առաջին անգամն է, որ լուրջ ստանդարտացված բլոկ-ծածկագրումը, որը նախատեսված է պաշտպանելու ռազմական կարգի գաղտնիքները և նախատեսված է կառավարությունների, խոշոր բանկերի և այլ կազմակերպությունների պետական ​​գաղտնիքները պաշտպանելու համար, ենթարկվել է մաթեմատիկական հարձակման»: