კრიპტოგრაფიული ტრანსფორმაციის ალგორითმი GOST 28147 89 -ის შესაბამისად. მონაცემთა შიდა დაშიფვრის სტანდარტი

დაშიფვრის ალგორითმი GOST 28147-89. ჩანაცვლების მარტივი მეთოდი. - არქივი WASM.RU

”სანამ ცოცხალი ხარ, ნუ მოკვდები, შეხედე ამ სამყაროს.
აქ ბევრ ადამიანს აქვს მკვდარი სული - ისინი შინაგანად მკვდარი არიან.
ისინი დადიან და იცინიან, არ იციან რომ არ არიან,
ნუ ჩქარობ სიკვდილის საათს, ”მითხრა მან.

არია, "იქ მაღლა"

2.1 ფეისტელის ქსელები.
2.2 ბლოკის შიფრა GOST 28147-89

3.1 ძირითადი ინფორმაცია
3.2 კრიპტო გარდაქმნის მთავარი ნაბიჯი

3.3 ძირითადი ციკლები:32-ზ, 32-რ.

4.1 კრიპტო გარდაქმნის ძირითადი საფეხურის განხორციელება
4.2 ალგორითმის სიჩქარის გაზრდა
5. ძირითადი ინფორმაციის მოთხოვნები
6. გამოყენებული ლიტერატურის ჩამონათვალი
7. მადლობები.

შესავალი.

ეს დოკუმენტი არის ჩემი მცდელობა აღვწერო მეთოდი GOST 28147-89 დაშიფვრის ალგორითმის უბრალოდ უმარტივესი, მაგრამ, მიუხედავად ამისა, ტექნიკურად კომპეტენტური ენით შეცვლის მეთოდისა. პირველი ექვსი პუნქტის წაკითხვის შემდეგ მკითხველი გამოთქვამს თავის აზრს იმის შესახებ, თუ როგორ გავაკეთე ეს.

იმისათვის, რომ ჩემმა მუშაობამ მეტი სარგებელი მოიტანოს, გირჩევთ, შეიარაღდეთ გამოყენებული ლიტერატურის ჩამონათვალში მითითებული ავტორების ნამუშევრებით. ასევე რეკომენდირებულია, რომ კალკულატორს ჰქონდეს ოპერაციის გამოთვლის ფუნქცია. XORმას შემდეგ სტატიის წაკითხვა ვარაუდობს, რომ მკითხველს განზრახული აქვს შეისწავლოს ამ დაშიფვრის ალგორითმი. მიუხედავად იმისა, რომ ის ასევე შესაფერისია როგორც მითითება, მაგრამ მე დავწერე ეს სტატია ზუსტად როგორც სასწავლო.

წინასწარი ინფორმაცია ბლოკის შიფრების შესახებ.

სანამ დავიწყებთ ალგორითმის დათვალიერებას, ჩვენ უნდა გავეცნოთ ამ სახის შიფრების შექმნის ისტორიას. ალგორითმი მიეკუთვნება ბლოკის შიფრების კატეგორიას, რომლის არქიტექტურაში ინფორმაცია იყოფა ბლოკების სასრულ რაოდენობად, საბოლოო კი ბუნებრივია შეიძლება არ იყოს სრული. დაშიფვრის პროცესი ხდება მთელ ბლოკებზე, რომლებიც ქმნიან შიფრს. საბოლოო ბლოკი, თუ ის არასრულია, ავსებს რაღაცას (ქვემოთ ვიტყვი მისი დასრულების ნიუანსებზე) და დაშიფრულია ისევე, როგორც სრული ბლოკები. შიფრში ვგულისხმობ დაშიფვრის ფუნქციის შედეგს, რომელიც მოქმედებს გარკვეული რაოდენობის მონაცემებზე, რომელიც მომხმარებელმა წარადგინა დაშიფვრისათვის. სხვა სიტყვებით რომ ვთქვათ, შიფრი არის დაშიფვრის საბოლოო შედეგი.

ბლოკ -შიფრების განვითარების ისტორია ასოცირდება 70 -იანი წლების დასაწყისთან, როდესაც IBM, გააცნობიერა ინფორმაციის დაცვის აუცილებლობა კომპიუტერული საკომუნიკაციო არხებით ინფორმაციის გადაცემისას, დაიწყო საკუთარი კვლევითი პროგრამა, რომელიც ეძღვნება ინფორმაციის დაცვას ელექტრონულ ქსელებში, მათ შორის კრიპტოგრაფია.

მკვლევართა ჯგუფს - დეველოპერებს IBM– დან, რომლებმაც დაიწყეს დაშიფვრის სისტემების კვლევა სიმეტრიული გასაღებების გამოყენების სქემით, ხელმძღვანელობდა დოქტორი. ჰორსტ ფეისტელი.

2.1 ფეისტელის ქსელები

კლასიკურ ლიტერატურაში ფეისტელის მიერ შემოთავაზებული დაშიფვრის ახალი მეთოდის არქიტექტურა ეწოდება "ფეისტელის არქიტექტურა", მაგრამ ამჟამად რუსულ და უცხოურ ლიტერატურაში უფრო დამკვიდრებული ტერმინია გამოყენებული - "ფეისტელის ქსელი" ან ფეისტელის NetWork. შემდგომში, ამ არქიტექტურის საფუძველზე შეიქმნა შიფრი "ლუციფერი" - რომელიც მოგვიანებით გამოქვეყნდა და გამოიწვია კრიპტოგრაფიისადმი ინტერესის ახალი ტალღა ზოგადად.

"ფეისტელის ქსელის" არქიტექტურის იდეა ასეთია: ინფორმაციის შეყვანის ნაკადი იყოფა n ბიტიანი ბლოკის ზომით, სადაც n არის ლუწი რიცხვი. თითოეული ბლოკი იყოფა ორ ნაწილად-L და R, შემდეგ ეს ნაწილები იკვებება განმეორებითი ბლოკის შიფრით, რომელშიც j-th ეტაპის შედეგი განისაზღვრება წინა ეტაპის j-1 შედეგით! ამის ილუსტრირება შესაძლებელია მაგალითით:

ბრინჯი 1

სადაც, ფუნქცია A არის ბლოკის შიფრის მთავარი მოქმედება. ეს შეიძლება იყოს მარტივი მოქმედება, როგორიცაა XOR ოპერაცია, ან შეიძლება ჰქონდეს უფრო რთული ფორმა, როგორც რიგი მარტივი მოქმედებების თანმიმდევრობა - მოდულის დამატება, მარცხენა ცვლა, ელემენტის შეცვლა და ა.შ., ერთად აღებული, ეს მარტივი მოქმედებები ე.წ. - კრიპტო გარდაქმნის მთავარი ნაბიჯი.

უნდა აღინიშნოს, რომ ფუნქციის მუშაობის ძირითადი ელემენტებია ძირითადი ელემენტების მიწოდება და XOR ოპერაცია, და რამდენად კარგად არის გააზრებული ამ ოპერაციების მუშაობა, ის საუბრობს მთლიანად შიფრის კრიპტოგრაფიულ სიძლიერეზე.

იმისათვის, რომ ფეისტელის ქსელების იდეა საბოლოოდ გასაგები იყოს, განვიხილოთ მასში ნაჩვენები უმარტივესი შემთხვევა ბრინჯი 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. ეს ოპერაცია არის დამატება mod 2 4. პრაქტიკაში, ასეთი ოპერაცია მცირდება უბრალო დამატებით, სადაც უნდა დავამატოთ ორი რიცხვი და იგნორირება გავუკეთოთ მე –5 ციფრზე გადაცემას. ვინაიდან, თუ რიცხვის ორობითი გამოსახვის ციფრებს ზემოთ ჩამოვთვლით, მეხუთე ციფრის ზემოთ იქნება ოთხი, მოდით შევხედოთ ქვემოთ მოცემულ ფიგურას, რომელიც აჩვენებს ჩვენი ოპერაციის მოქმედებებს:

ბრინჯი 2

აქ მე ისრებით ვანიშნე ექსპონენტებზე, როგორც ხედავთ, შედეგი უნდა ყოფილიყო 10100, მაგრამ რადგან გადაცემა იგნორირებულია mod 2 4 ოპერაციის დროს, ჩვენ ვიღებთ 0100 -ს.

2. ამ ოპერაციას ლიტერატურაში ეწოდება mod 2, ასამბლეის ენაზე იგი ხორციელდება ბრძანებით XOR... მაგრამ მისი უფრო სწორი სახელია mod 2 1. ამ უნიკალური ოპერაციის გარეშე, ძნელად შესაძლებელია შეიქმნას სწრაფი, ადვილად განსახორციელებელი დაშიფვრის ალგორითმი, და ამავე დროს, ისე რომ ის მაინც საკმაოდ კრიპტოგრაფიულად ძლიერი იყოს. ამ ოპერაციის უნიკალურობა იმაში მდგომარეობს, რომ ის თავისთავად საპირისპიროა! მაგალითად, თუ რიცხვი A არის XOR- ით B რიცხვით, შედეგად მივიღებთ B- ს, მომავალში საკმარისია ხელახლა XOR რიცხვები B და C ერთმანეთთან, რომ მივიღოთ A- ს წინა მნიშვნელობა!

ამ ოპერაციაში ჩვენ მივიღეთ 1010 ნომრებით 1110 და 0100, რომ დავბრუნდეთ 1110, საკმარისია ხელახლა XOR რიცხვები 0100 და 1010! ამ ოპერაციის შესახებ უფრო დეტალური ინფორმაცია შეგიძლიათ იხილოთ სტატიაში, რომელიც ერთვის საიტს. www.wasm.ru, « ელემენტარული გზამკვლევიCRC_ შეცდომის გამოვლენის ალგორითმები»ავტორი ვინ როს ნ უილიამსი... ამ ნაწარმოებში არის წერტილი - ” 5. ორობითი არითმეტიკა ჰიფენაციის გარეშე". ამ სტატიაშია აღწერილი ოპერაცია. xor!მე ვიძახი, რადგან ამ სტატიაში ეს ოპერაცია იმდენად არის დაგეგმილი, რომ მკითხველს არა მხოლოდ ესმის როგორ მუშაობს ეს ოპერაცია, ის კი იწყებს მას ნახე, მოისმინე და იგრძენი!

3. ეს ქმედება აუცილებელია ისე, რომ გაშიფვრის დროს საწყისი მნიშვნელობების მიღება შესაძლებელია დაშიფვრისგან.

2.2 ბლოკის შიფრი GOST 28147-89

დაშიფვრის ალგორითმი GOST 28147 - 89 მიეკუთვნება ბლოკ -შიფრების კატეგორიას, რომლებიც მოქმედებენ დაბალანსებული ფეისტელის ქსელების არქიტექტურის მიხედვით, სადაც ინფორმაციის შერჩეული ბლოკის ორი ნაწილი თანაბარი ზომისაა. ალგორითმი შეიქმნა კგბ -ს მერვე განყოფილების სიღრმეში, ახლა გარდაიქმნა 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 კრიპტო გარდაქმნის ძირითადი საფეხური

დაშიფვრის პროცესში მთავარი ნაბიჯი არის - კრიპტო გარდაქმნის მთავარი ნაბიჯი. ეს სხვა არაფერია თუ არა კონკრეტული ალგორითმის მიხედვით მონაცემების დაშიფვრის ქმედება, მხოლოდ დეველოპერებმა წარმოადგინეს სახელი, რომელიც ძალიან რთული იყო.

დაშიფვრის დაწყებამდე ბლოკი იყოფა ორ ნაწილად L და R, თითოეული 32 ბიტი. საკვანძო ელემენტი შეირჩევა და მხოლოდ ამის შემდეგ ბლოკის ეს ორი ნაწილი, ძირითადი ელემენტი, შემცვლელი მაგიდა იკვებება ძირითადი საფეხურის ფუნქციით, ძირითადი ნაბიჯის შედეგი არის საბაზო ციკლის ერთი გამეორება, რომელიც განხილული იქნება მომდევნო აბზაცი ძირითადი ნაბიჯი მოიცავს შემდეგს:

  1. ბლოკის R დამატებითი ნაწილი შეჯამებულია ძირითადი ელემენტით K mod 2 32. მე აღვწერე მსგავსი ოპერაცია ზემოთ, აქ ერთი და იგივე მხოლოდ ექსპონენტი არ არის "4", არამედ "32" - ამ ოპერაციის შედეგი მომავალში იქნება სმოდი.
  2. გაყავით ადრე მიღებული შედეგი სმოდი ოთხბიტიან ელემენტებად s7, s6, s5, s4, s3, s2, s1, s0 და მიაწოდეთ მას შემცვლელი ფუნქცია. ჩანაცვლება შემდეგნაირად ხდება: შერჩეულია ელემენტი Smod - si, ჩვენ ვიწყებთ თავიდან ყველაზე დაბალი ელემენტით და ვცვლით მნიშვნელობით ჩანაცვლების ცხრილიდან i - რიგით და სვეტით, რომელიც მითითებულია s ელემენტის მნიშვნელობით მე. ჩვენ გადავალთ s i +1 ელემენტზე და ვაგრძელებთ იმავე გზით და ვაგრძელებთ ასე სანამ არ შევცვლით Smod- ის ბოლო ელემენტის მნიშვნელობას - ამ ოპერაციის შედეგი აღინიშნება როგორც, Ssimple.
  3. ამ ოპერაციისას ჩვენ Ssimple მნიშვნელობას ციკლურად გადავიტანთ მარცხნივ 11 ბიტით და მივიღებთ Srol- ს.
  4. ჩვენ ვირჩევთ L ბლოკის მეორე ნაწილს და ვამატებთ მას mod 2 Srol– ით, შედეგად გვაქვს Sxor.
  5. ამ ეტაპზე, L ბლოკის ნაწილი უდრის R ნაწილის მნიშვნელობას, ხოლო R ნაწილი, თავის მხრივ, ინიციალიზებულია Sxor– ის შედეგით და ამით მთავრდება ძირითადი ნაბიჯის ფუნქცია!

3.3 ძირითადი ციკლები: "32-З", "32-Р".

ინფორმაციის დაშიფვრის მიზნით, აუცილებელია მისი გაყოფა 64 ბიტიანი ზომის ბლოკებად, რა თქმა უნდა, ბოლო ბლოკი შეიძლება იყოს 64 ბიტზე ნაკლები. ეს ფაქტი არის აქილევსის ქუსლი ამ "მარტივი ჩანაცვლების" მეთოდისა. ვინაიდან მისი დამატება 64 ბიტზე არის ძალიან მნიშვნელოვანი ამოცანა შიფრის კოდის კრიპტოგრაფიული სიძლიერის გასაზრდელად და ამ მგრძნობიარე ადგილას, თუ ის არის ინფორმაციის მასივში, მაგრამ ის არ არსებობს (მაგალითად, 512 ბაიტიანი ფაილი! ), დიდი პასუხისმგებლობით უნდა მოეპყრო!

მას შემდეგ რაც ინფორმაცია გაყავით ბლოკებად, თქვენ უნდა გაყოთ გასაღები ელემენტებად:

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

დაშიფვრა თავისთავად მოიცავს ეგრეთ წოდებული ძირითადი ციკლების გამოყენებას. რაც, თავის მხრივ, მოიცავს კრიპტოტრანსფორმაციის ძირითადი საფეხურების n-th რიცხვს.

ძირითადი ციკლები იარლიყით, როგორ უნდა ვთქვათ: 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, k2, k3, k4, k5, k6, k7, k8k8, k7, k6, k5, k4, k3, k2, k1

32-P- ის გაშიფვრის პროცესი ხდება ანალოგიურად, მაგრამ ძირითადი ელემენტები მოცემულია საპირისპირო მიზნით:

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

ივარჯიშე

4.1 კრიპტო გარდაქმნის ძირითადი საფეხურის განხორციელება

მას შემდეგ რაც გავეცანით თეორიას, თუ როგორ ხდება ინფორმაციის დაშიფვრა, დრო იყო ვნახოთ როგორ ხდება დაშიფვრა პრაქტიკაში.

საწყისი მონაცემები:

მიიღეთ ინფორმაციის ბლოკი N = 0102030405060708h, აქ ნაწილები L და R ტოლია:

L = 01020304h, R = 05060708h, ავიღოთ გასაღები:

K = ' როგორც 28 zw37 q839 7342ui23 8e2t 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'

ამ ოპერაციის შედეგი სმოდი = 66793940 სთ

2. ახლა ყველაზე რთული ოპერაცია, მაგრამ თუ ყურადღებით დააკვირდებით, ის აღარ არის ისეთი საშინელი, როგორც თავიდან ჩანდა. წარმოვიდგინოთ სმოდი შემდეგნაირად:

ბრინჯი 5

მე შევეცადე წარმოედგინა Smod ელემენტები ფიგურაში, მაგრამ მაინც ავხსნი:

s0 = 0, s1 = 4, s2 = 9 და ა.

ახლა, დაწყებული ყველაზე დაბალი ელემენტიდან s0, ჩვენ ვაკეთებთ ჩანაცვლებას. აბზაცის გახსენება " 3.2 კრიპტო გარდაქმნის ძირითადი საფეხური»I - row, s i - სვეტი, მოძებნეთ მნიშვნელობა ნულოვან მწკრივში და ნულოვან სვეტში:

ნახ. 6

სმოდის ამჟამინდელი მნიშვნელობა არ არის 6679394 0 თ და 6679394 5

ჩვენ ვაგრძელებთ s1– ის ჩანაცვლებას, ე.ი. ოთხი პირველი რიგისა და მეოთხე სვეტის გამოყენებით (s1 = 4!). ჩვენ ვუყურებთ სურათს:

ბრინჯი 7

ახლა უკვე სმოდის ღირებულებაა და არა 667939 4 5 სთ, 667939 2 5 სთ მე ვთვლი, რომ ახლა ჩანაცვლების ალგორითმი მკითხველისთვის ნათელია და შემიძლია ვთქვა, რომ Ssimple– ის საბოლოო შედეგის შემდეგ ექნება შემდეგი მნიშვნელობა - 11e10325 სთ.

მე ვისაუბრებ იმაზე, თუ როგორ არის ეს ყველაზე ადვილად განსახორციელებელი ასამბლერი ბრძანებების სახით შემდგომ მომდევნო პარაგრაფში, მას შემდეგ რაც ვისაუბრებ გაფართოებულ ცხრილზე.

  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. ბლოკის შერჩეული ნაწილი eax რეგისტრში და R to 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".

მასივის ელემენტები წინასწარ დავაწყე იმ თანმიმდევრობით, რომლითაც უნდა იკვებებოდეს 32 - Z. ამდენად, გავზარდე ანალოგიურად საჭირო მეხსიერება, მაგრამ დავიხსენი აზროვნების პროცესებისგან, რომლებიც არ მჭირდებოდა და გავზარდე სიჩქარე ალგორითმი, მეხსიერების წვდომის დროის შემცირებით! აქ მე აღვწერე მხოლოდ გასაღები 32 - З, ციკლისთვის 32 - Р მე იგივე გავაკეთე, მაგრამ ელემენტების მიწოდების განსხვავებული სქემის გამოყენებით, რაც მე ასევე აღწერილი მაქვს პარაგრაფში " ძირითადი ციკლები: "32-Z", "32-P».

ახლა დროა აღწეროთ შემცვლელი ფუნქციის განხორციელება, როგორც ზემოთ დავპირდი. ადრე ვერ აღვწერ, რადგან ეს მოითხოვს ახალი კონცეფციის დანერგვას - გაფართოებული შემცვლელი ცხრილი. ვერ აგიხსნით რა არის. სამაგიეროდ, მე გაჩვენებ ამას, და შენ თვითონ ჩამოაყალიბე საკუთარი თავი, რა არის ეს - ცვლილებების გაფართოებული ცხრილი?

ასე რომ, იმის გასაგებად, თუ რა არის გაფართოებული შემცვლელი ცხრილი, ჩვენ გვჭირდება შემცვლელი მაგიდა, მაგალითად, მე ავიღებ მას, რაც ნაჩვენებია ნახატზე. 3

მაგალითად, ჩვენ გვჭირდება რიცხვის შეცვლა 66793940h. მე მას შემდეგნაირად წარმოვადგენ:

ბრინჯი ცხრა

ახლა თუ ავიღებთ ელემენტებს s1, s0, ე.ი. არანაკლებ მნიშვნელოვანი ბაიტი, შემცვლელი ფუნქციის შედეგი იქნება 25 სთ! ანდრეი ვინოკუროვის სტატიის წაკითხვის შემდეგ, რომელიც მე მოვიყვანე აბზაცში " გამოყენებული ლიტერატურის ჩამონათვალი", თქვენ ნამდვილად აღმოაჩენთ, რომ თუ ორ ხაზს აიღებთ, შეგიძლიათ მიიღოთ მასივი, რომელიც საშუალებას მოგცემთ სწრაფად იპოვოთ შემცვლელი ელემენტები ასამბლერის ბრძანების გამოყენებით xlatისინი ამბობენ, რომ ამის გაკეთება სხვაგვარად უფრო სწრაფად შეიძლება, მაგრამ ანდრეი ვინოკუროვმა დაახლოებით ოთხი წელი გაატარა GOST– ის დანერგვის სწრაფი ალგორითმების შესასწავლად! მე არ ვფიქრობ, რომ თქვენ უნდა ხელახლა გამოიგონოთ ბორბალი, როცა უკვე გაქვთ.

ასე რომ, მასივის შესახებ:

ავიღოთ პირველი ორი ხაზი ნული და პირველი, შევქმნათ მასივი 256 ბაიტიდან. ახლა ჩვენ ვამჩნევთ ერთ თავისებურებას, რომ თუ საჭიროა 00h გარდაქმნა, მაშინ შედეგი იქნება 75h (ნახ. 3 -ის საფუძველზე) - ჩვენ ამ მნიშვნელობას მასივში ჩავდებთ 00h ოფსეტში. ჩვენ ვიღებთ 01h მნიშვნელობას, 79h შემცვლელი ფუნქციის შედეგს, მას ვათავსებთ მასივში 01 – ის ოფსეტში და ასე შემდეგ 0FFh– მდე, რაც მოგვცემს 0FCh– ს, რომელსაც მასივში ჩავდებთ 0FFh– ის ოფსეტურით. ასე რომ, ჩვენ მივიღეთ გაფართოებული შემცვლელი ცხრილი რიგების პირველი ჯგუფისათვის: პირველი და ნული. მაგრამ ჯერ კიდევ სამი ჯგუფია: მეორე გვერდი 2, გვერდი 3, მესამე გვერდი 4, გვერდი 5, მეოთხე გვერდი 6, გვერდი 7. ჩვენ ამ სამ ჯგუფს ისე ვუმკლავდებით, როგორც პირველს. შედეგი არის გაფართოებული შემცვლელი მაგიდა!

ახლა ჩვენ შეგვიძლია განვახორციელოთ ალგორითმი, რომელიც შეასრულებს ჩანაცვლებას. ამისათვის ჩვენ ვიღებთ წყაროს კოდებს, რომლებიც ანდრეი ვინოკუროვმა გამოაქვეყნა თავის გვერდზე, იხილეთ " ბიბლიოგრაფია».

lea ebx, გაფართოებული_ცხრილი_ მარტივი

mov eax, [ჩაწერეთ შესაცვლელი ნომერი]

დაამატეთ ebx, 100h; გადადით შემდეგ ორ კვანძზე

ქვე ebx, 300 სთ; რათა მომავალში ebx მიუთითოს მაგიდაზე

ახლა კიდევ ერთი ფუნქცია, წინა მოქმედებებით ჩვენ არა მხოლოდ შევცვალეთ, არამედ გადავიტანეთ რიცხვი 8 ბიტით მარცხნივ! ჩვენ უბრალოდ უნდა გადავიტანოთ რიცხვი კიდევ 3 ბიტი მარცხნივ:

და ჩვენ ვიღებთ ოპერაციის შედეგს rol eax, 11!

ოპტიმიზაციას მეტს ვერაფერს დავამატებ, ერთადერთი რისი ხაზგასმა შემიძლია არის ის რაც ზემოთ ვთქვი - უფრო ხშირად გამოიყენეთ რეგისტრები ვიდრე მეხსიერებაზე წვდომა. მე ვფიქრობ, რომ ეს სიტყვები მხოლოდ დამწყებთათვისაა, გამოცდილი და ჩემი სიტყვების გარეშე მშვენივრად მესმის.

მოთხოვნები ძირითადი ინფორმაციისთვის.

როგორც ანდრეი ვინოკუროვის სტატიაშია ნათქვამი, გასაღები შეირჩევა ორი კრიტერიუმის მიხედვით:

ბიტების თანაბარი განაწილების კრიტერიუმი მნიშვნელობებს შორის 1 და 0. ჩვეულებრივ, ბიტების თანაბარი განაწილების კრიტერიუმი არის პირსონის კრიტერიუმი ("chi-square").

ეს ნიშნავს გასაღებს, პრინციპში, ნებისმიერ რიცხვს შეუძლია. ანუ, როდესაც იქმნება გასაღების შემდეგი ბიტი, მისი ინიციალიზაციის ალბათობა ერთით ან ნულით არის 50/50!

გთხოვთ გაითვალისწინოთ, რომ გასაღები შედგება რვა ელემენტისგან, თითოეული 32 ბიტიდან, ამიტომ გასაღებში არის მხოლოდ 32 * 8 = 256 ბიტი და შესაძლო გასაღებების რაოდენობაა 2 256! ეს არ გტკივა?

სერიის კრიტერიუმი.

თუ გადავხედავთ ჩვენს გასაღებს, რომელიც მე მოვიყვანე აბზაცში " 4.1 კრიპტო გარდაქმნის ძირითადი საფეხურის განხორციელება», მაშინ შეამჩნევთ, რომ შემდეგი აღნიშვნა მართებულია:

ბრინჯი ათი

ერთ ფრაზაში, 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, მაშინ ბი ჯის მნიშვნელობა გამომავალზე ყოველთვის არის ინვერსიული შეყვანის ბიტი i;

თუ p = 0, მაშინ გამომავალი ბიტი j თანაბარი ალბათობით იღებს 0 და 1 მნიშვნელობებს შეყვანის ბიტის i ნებისმიერი ფიქსირებული მნიშვნელობისათვის.

ავიღოთ ერთი სტრიქონის მაგალითი:

მოდით დავყოთ იგი "კომპონენტებად":

მოდით გამოვთვალოთ ერთი კოეფიციენტი ზემოაღნიშნული ფორმულის მიხედვით. იმის გასაგებად, თუ როგორ კეთდება ეს, მე უფრო დეტალურად ავხსნი:

ჩვენ ვიღებთ 0 რიცხვის (0) მე –0 ბიტს შეყვანისას და მე –0 რიცხვის მე –0 ბიტს გამომავალზე (1) ჩვენ ვასრულებთ ოპერაციას 0 XOR 1 = 1.

ჩვენ ვიღებთ 1 რიცხვის (1) მე -0 ბიტს შესასვლელში და გამოშვებაში პირველი რიცხვის მე -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 ბიტის მნიშვნელობა უდრის 0 ბიტის მნიშვნელობას შეყვანისას 16 – დან 4 შემთხვევაში;

კოეფიციენტების საბოლოო ცხრილი:

როგორც კორელაციის კოეფიციენტების ცხრილიდან ჩანს, ბიტი 3 შეყვანისას შემობრუნებულია 0 ბიტის მიმართ გამომავალი 16 -დან 14 შემთხვევაში, რაც არის 87.5%. ეს აღარ არის მისაღები ნორმალური დაშიფვრის სისტემებისთვის. ავიღოთ სხვა მაგალითი ცვლილებისთვის:

კოეფიციენტების ცხრილი იქნება შემდეგი (ვისთვისაც არ არის ზარმაცი ხელახალი გამოთვლა)

ამ ცხრილში ყველაფერი კიდევ უფრო უარესია - ჯგუფის 1 და 2 ნაწილები უცვლელი რჩება! კრიპტანალიტიკოსს აქვს სად უნდა გადაბრუნდეს ყველა ამ მოთხოვნის გათვალისწინებით, უბრალო ძიებამ ("თავში") აღმოაჩინა პერმუტაციის ცხრილი, რომელიც შეესაბამება მითითებულ თეორიას (დღეს - 1276 კომბინაცია) აქ არის რამოდენიმე მათგანი:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

გამოყენებული ლიტერატურის ჩამონათვალი.

  1. ანდრეი ვინოკუროვის სტატია:

დაშიფვრის ალგორითმი GOST 28147-89, მისი გამოყენება და განხორციელება

Intel x86 პლატფორმის კომპიუტერებისთვის.

ასევე არსებობს დაშიფვრის ალგორითმის განხორციელების წყაროს კოდები.

  1. ჰორსტ ფეისტელის სტატია:

კრიპტოგრაფია და კომპიუტერული უსაფრთხოება.

(შეგიძლიათ იხილოთ იმავე სტატიაში, როგორც წინა სტატია)

  1. როს ნ უილიამსი:

CRC შეცდომის გამოვლენის ალგორითმების ელემენტარული გზამკვლევი

გამოქვეყნებულია საიტზე www.ვასმიru.

მადლობები.

მინდა მადლობა გადავუხადო www.wasm.ru ფორუმის ყველა ვიზიტორს. მაგრამ განსაკუთრებით მინდა მადლობა გადავუხადო ChS- ს, რომელიც ამჟამად ცნობილია როგორც SteelRat, ის დამეხმარა იმის გაგებაში, რასაც მე ალბათ ვერასდროს გავიგებდი, ასევე პარაგრაფის დაწერაში: " ძირითადი ინფორმაციის მოთხოვნები”, ამ აბზაცის ძირითადი ნაწილი მის მიერ არის დაწერილი. ასევე უღრმესი მადლობელი ვარ KSTU– ს სახელობის თანამშრომლის ა.ნ. ტუპოლევიკი ანიკინ იგორ ვიაჩესლავოვიჩი და ცოდვა იქნება არ აღვნიშნო კრის კასპერსკი იმის გამო, რომ ის არის და ვოლოდია / wasm.ru მისი მითითებებისათვის. ოჰ, და მე მივიღებ მისგან. მე ასევე მინდა აღვნიშნო Sega-Zero / Callipso, მაგრამ ამან მათემატიკური ჯუნგლები მომიყვანა გონებაში.

ეს არის, ალბათ, ყველაფერი, რაც მინდა გითხრათ.

მადლობელი ვიქნები ამ სტატიასთან დაკავშირებული კრიტიკისთვის ან კითხვებისთვის ან უბრალოდ რჩევისთვის. ჩემი საკონტაქტო ინფორმაცია: [ელფოსტა დაცულია], ICQ - 337310594.

პატივისცემით, Evil`s Interrupt.

P.S .: ამ სტატიით მე არ ვცდილობდი ვინმეს აჯობო. იგი დაიწერა განზრახვით, GOST– ის შესწავლის გასაადვილებლად და თუ თქვენ გაქვთ სირთულეები, ეს არ ნიშნავს რომ მე ვარ დამნაშავე ამაში. იყავით გონივრული და მოთმინება, ყოველივე საუკეთესოს თქვენთვის!

”სანამ ცოცხალი ხარ, ნუ მოკვდები, შეხედე ამ სამყაროს.
აქ ბევრ ადამიანს აქვს მკვდარი სული - ისინი შინაგანად მკვდარი არიან.
ისინი დადიან და იცინიან, არ იციან რომ არ არიან,
ნუ ჩქარობ სიკვდილის საათს, ”მითხრა მან.

არია, "იქ მაღლა"

  1. შესავალი
  1. წინასწარი ინფორმაცია ბლოკის შიფრების შესახებ

2.1 ფეისტელის ქსელები.
2.2 ბლოკის შიფრა GOST 28147-89

  1. თეორიული მინიმუმი

3.1 ძირითადი ინფორმაცია
3.2 კრიპტო გარდაქმნის მთავარი ნაბიჯი

3.3 ძირითადი ციკლები:32-ზ, 32-რ.

  1. ივარჯიშე

4.1 კრიპტო გარდაქმნის ძირითადი საფეხურის განხორციელება
4.2 ალგორითმის სიჩქარის გაზრდა
5.
6. გამოყენებული ლიტერატურის ჩამონათვალი
7. მადლობები.

შესავალი.

ეს დოკუმენტი არის ჩემი მცდელობა აღვწერო მეთოდი GOST 28147-89 დაშიფვრის ალგორითმის უბრალოდ უმარტივესი, მაგრამ, მიუხედავად ამისა, ტექნიკურად კომპეტენტური ენით შეცვლის მეთოდისა. პირველი ექვსი პუნქტის წაკითხვის შემდეგ მკითხველი გამოთქვამს თავის აზრს იმის შესახებ, თუ როგორ გავაკეთე ეს.

იმისათვის, რომ ჩემმა მუშაობამ მეტი სარგებელი მოიტანოს, გირჩევთ, შეიარაღდეთ გამოყენებული ლიტერატურის ჩამონათვალში მითითებული ავტორების ნამუშევრებით. ასევე რეკომენდირებულია, რომ კალკულატორს ჰქონდეს ოპერაციის გამოთვლის ფუნქცია. XORმას შემდეგ სტატიის წაკითხვა ვარაუდობს, რომ მკითხველს განზრახული აქვს შეისწავლოს ამ დაშიფვრის ალგორითმი. მიუხედავად იმისა, რომ ის ასევე შესაფერისია როგორც მითითება, მაგრამ მე დავწერე ეს სტატია ზუსტად როგორც სასწავლო.

წინასწარი ინფორმაცია ბლოკის შიფრების შესახებ.

სანამ დავიწყებთ ალგორითმის დათვალიერებას, ჩვენ უნდა გავეცნოთ ამ სახის შიფრების შექმნის ისტორიას. ალგორითმი მიეკუთვნება ბლოკის შიფრების კატეგორიას, რომლის არქიტექტურაში ინფორმაცია იყოფა ბლოკების სასრულ რაოდენობად, საბოლოო კი ბუნებრივია შეიძლება არ იყოს სრული. დაშიფვრის პროცესი ხდება მთელ ბლოკებზე, რომლებიც ქმნიან შიფრს. საბოლოო ბლოკი, თუ ის არასრულია, ავსებს რაღაცას (ქვემოთ ვიტყვი მისი დასრულების ნიუანსებზე) და დაშიფრულია ისევე, როგორც სრული ბლოკები. შიფრში ვგულისხმობ დაშიფვრის ფუნქციის შედეგს, რომელიც მოქმედებს გარკვეული რაოდენობის მონაცემებზე, რომელიც მომხმარებელმა წარადგინა დაშიფვრისათვის. სხვა სიტყვებით რომ ვთქვათ, შიფრი არის დაშიფვრის საბოლოო შედეგი.

ბლოკ -შიფრების განვითარების ისტორია ასოცირდება 70 -იანი წლების დასაწყისთან, როდესაც IBM, გააცნობიერა ინფორმაციის დაცვის აუცილებლობა კომპიუტერული საკომუნიკაციო არხებით ინფორმაციის გადაცემისას, დაიწყო საკუთარი კვლევითი პროგრამა, რომელიც ეძღვნება ინფორმაციის დაცვას ელექტრონულ ქსელებში, მათ შორის კრიპტოგრაფია.

მკვლევართა ჯგუფს - დეველოპერებს IBM– დან, რომლებმაც დაიწყეს დაშიფვრის სისტემების კვლევა სიმეტრიული გასაღებების გამოყენების სქემით, ხელმძღვანელობდა დოქტორი. ჰორსტ ფეისტელი.

2.1 ფეისტელის ქსელები

კლასიკურ ლიტერატურაში ფეისტელის მიერ შემოთავაზებული დაშიფვრის ახალი მეთოდის არქიტექტურა ეწოდა "ფეისტელის არქიტექტურა", მაგრამ ამ დროისთვის რუსულ და უცხოურ ლიტერატურაში უფრო დამკვიდრებული ტერმინია გამოყენებული - "ფეისტელის ქსელი" ან ფეისტელის NetWork. შემდგომში, ამ არქიტექტურის საფუძველზე შეიქმნა შიფრი "ლუციფერი" - რომელიც მოგვიანებით გამოქვეყნდა და გამოიწვია კრიპტოგრაფიისადმი ინტერესის ახალი ტალღა ზოგადად.

"ფეისტელის ქსელის" არქიტექტურის იდეა ასეთია: ინფორმაციის შეყვანის ნაკადი იყოფა n ბიტიანი ბლოკის ზომით, სადაც n არის ლუწი რიცხვი. თითოეული ბლოკი იყოფა ორ ნაწილად-L და R, შემდეგ ეს ნაწილები იკვებება განმეორებითი ბლოკის შიფრით, რომელშიც j-th ეტაპის შედეგი განისაზღვრება წინა ეტაპის j-1 შედეგით! ამის ილუსტრირება შესაძლებელია მაგალითით:

ბრინჯი 1

სადაც, ფუნქცია A არის ბლოკის შიფრის მთავარი მოქმედება. ეს შეიძლება იყოს მარტივი მოქმედება, როგორიცაა XOR ოპერაცია, ან შეიძლება ჰქონდეს უფრო რთული ფორმა, როგორც რიგი მარტივი მოქმედებების თანმიმდევრობა - მოდულის დამატება, მარცხენა ცვლა, ელემენტის შეცვლა და ა.შ., ერთად აღებული, ეს მარტივი მოქმედებები ე.წ. - კრიპტო გარდაქმნის მთავარი ნაბიჯი.

უნდა აღინიშნოს, რომ ფუნქციის მუშაობის ძირითადი ელემენტებია ძირითადი ელემენტების მიწოდება და XOR ოპერაცია, და რამდენად კარგად არის გააზრებული ამ ოპერაციების მუშაობა, ის საუბრობს მთლიანად შიფრის კრიპტოგრაფიულ სიძლიერეზე.

იმისათვის, რომ ფეისტელის ქსელების იდეა საბოლოოდ გასაგები იყოს, განვიხილოთ მასში ნაჩვენები უმარტივესი შემთხვევა ბრინჯი 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. ეს ოპერაცია არის დამატება mod 2 4. პრაქტიკაში, ასეთი ოპერაცია მცირდება უბრალო დამატებით, სადაც უნდა დავამატოთ ორი რიცხვი და იგნორირება გავუკეთოთ მე –5 ციფრზე გადაცემას. ვინაიდან, თუ რიცხვის ორობითი გამოსახვის ციფრებს ზემოთ ჩამოვთვლით, მეხუთე ციფრის ზემოთ იქნება ოთხი, მოდით შევხედოთ ქვემოთ მოცემულ ფიგურას, რომელიც აჩვენებს ჩვენი ოპერაციის მოქმედებებს:

ბრინჯი 2

აქ მე ისრებით ვანიშნე ექსპონენტებზე, როგორც ხედავთ, შედეგი უნდა ყოფილიყო 10100, მაგრამ რადგან გადაცემა იგნორირებულია mod 2 4 ოპერაციის დროს, ჩვენ ვიღებთ 0100 -ს.

  1. ამ ოპერაციას ლიტერატურაში ეწოდება mod 2, ასამბლეის ენაზე იგი ხორციელდება ბრძანებით XOR... მაგრამ მისი უფრო სწორი სახელია mod 2 1. ამ უნიკალური ოპერაციის გარეშე, ძნელად შესაძლებელია შეიქმნას სწრაფი, ადვილად განსახორციელებელი დაშიფვრის ალგორითმი, და ამავე დროს, ისე რომ ის მაინც საკმაოდ კრიპტოგრაფიულად ძლიერი იყოს. ამ ოპერაციის უნიკალურობა იმაში მდგომარეობს, რომ ის თავისთავად საპირისპიროა! მაგალითად, თუ რიცხვი A არის XOR- ით B რიცხვით, შედეგად მივიღებთ B- ს, მომავალში საკმარისია ხელახლა XOR რიცხვები B და C ერთმანეთთან, რომ მივიღოთ A- ს წინა მნიშვნელობა!

ამ ოპერაციაში ჩვენ მივიღეთ 1010 ნომრებით 1110 და 0100, რომ დავბრუნდეთ 1110, საკმარისია ხელახლა XOR რიცხვები 0100 და 1010! ამ ოპერაციის შესახებ უფრო დეტალური ინფორმაცია შეგიძლიათ იხილოთ სტატიაში, რომელიც ერთვის საიტს. www.wasm.ru, « ელემენტარული გზამკვლევიCRC_ შეცდომის გამოვლენის ალგორითმები»ავტორი ვინ როს ნ უილიამსი... ამ ნაწარმოებში არის წერტილი - ” 5. ორობითი არითმეტიკა ჰიფენაციის გარეშე". ამ სტატიაშია აღწერილი ოპერაცია. xor!მე ვიძახი, რადგან ამ სტატიაში ეს ოპერაცია იმდენად არის დაგეგმილი, რომ მკითხველს არა მხოლოდ ესმის როგორ მუშაობს ეს ოპერაცია, ის კი იწყებს მას ნახე, მოისმინე და იგრძენი!

  1. ეს ქმედება აუცილებელია ისე, რომ გაშიფვრისას საწყისი მნიშვნელობების მიღება შესაძლებელია შიფრისგან.

2.2 ბლოკის შიფრი GOST 28147-89

დაშიფვრის ალგორითმი GOST 28147 - 89 მიეკუთვნება ბლოკ -შიფრების კატეგორიას, რომლებიც მოქმედებენ დაბალანსებული ფეისტელის ქსელების არქიტექტურის მიხედვით, სადაც ინფორმაციის შერჩეული ბლოკის ორი ნაწილი თანაბარი ზომისაა. ალგორითმი შეიქმნა კგბ -ს მერვე განყოფილების სიღრმეში, ახლა გარდაიქმნა 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. გაყავით ადრე მიღებული შედეგი სმოდი ოთხბიტიან ელემენტებად s7, s6, s5, s4, s3, s2, s1, s0 და მიაწოდეთ მას შემცვლელი ფუნქცია. ჩანაცვლება შემდეგნაირად ხდება: შერჩეულია ელემენტი Smod - si, ჩვენ ვიწყებთ თავიდან ყველაზე დაბალი ელემენტით და ვცვლით მნიშვნელობით ჩანაცვლების ცხრილიდან i - რიგით და სვეტით, რომელიც მითითებულია s ელემენტის მნიშვნელობით მე. ჩვენ გადავალთ s i +1 ელემენტზე და ვაგრძელებთ იმავე გზით და ვაგრძელებთ ასე სანამ არ შევცვლით Smod- ის ბოლო ელემენტის მნიშვნელობას - ამ ოპერაციის შედეგი აღინიშნება როგორც, Ssimple.
  3. ამ ოპერაციისას ჩვენ Ssimple მნიშვნელობას ციკლურად გადავიტანთ მარცხნივ 11 ბიტით და მივიღებთ Srol- ს.
  4. ჩვენ ვირჩევთ L ბლოკის მეორე ნაწილს და ვამატებთ მას mod 2 Srol– ით, შედეგად გვაქვს Sxor.
  5. ამ ეტაპზე, L ბლოკის ნაწილი უდრის R ნაწილის მნიშვნელობას, ხოლო R ნაწილი, თავის მხრივ, ინიციალიზებულია Sxor– ის შედეგით და ამით მთავრდება ძირითადი ნაბიჯის ფუნქცია!

3.3 ძირითადი ციკლები: "32-З", "32-Р".

ინფორმაციის დაშიფვრის მიზნით, აუცილებელია მისი გაყოფა 64 ბიტიანი ზომის ბლოკებად, რა თქმა უნდა, ბოლო ბლოკი შეიძლება იყოს 64 ბიტზე ნაკლები. ეს ფაქტი არის აქილევსის ქუსლი ამ "მარტივი ჩანაცვლების" მეთოდისა. ვინაიდან მისი დამატება 64 ბიტზე არის ძალიან მნიშვნელოვანი ამოცანა შიფრის კოდის კრიპტოგრაფიული სიძლიერის გასაზრდელად და ამ მგრძნობიარე ადგილას, თუ ის არის ინფორმაციის მასივში, მაგრამ ის არ არსებობს (მაგალითად, 512 ბაიტიანი ფაილი! ), დიდი პასუხისმგებლობით უნდა მოეპყრო!

მას შემდეგ რაც ინფორმაცია გაყავით ბლოკებად, თქვენ უნდა გაყოთ გასაღები ელემენტებად:

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

დაშიფვრა თავისთავად მოიცავს ეგრეთ წოდებული ძირითადი ციკლების გამოყენებას. რაც, თავის მხრივ, მოიცავს კრიპტოტრანსფორმაციის ძირითადი საფეხურების n-th რიცხვს.

ძირითადი ციკლები იარლიყით, როგორ უნდა ვთქვათ: 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, k2, k3, k4, k5, k6, k7, k8k8, k7, k6, k5, k4, k3, k2, k1

32-P- ის გაშიფვრის პროცესი ხდება ანალოგიურად, მაგრამ ძირითადი ელემენტები მოცემულია საპირისპირო მიზნით:

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

ივარჯიშე

მას შემდეგ რაც გავეცანით თეორიას, თუ როგორ ხდება ინფორმაციის დაშიფვრა, დრო იყო ვნახოთ როგორ ხდება დაშიფვრა პრაქტიკაში.

საწყისი მონაცემები:

მიიღეთ ინფორმაციის ბლოკი N = 0102030405060708h, აქ ნაწილები L და R ტოლია:

L = 01020304h, R = 05060708h, ავიღოთ გასაღები:

K = ' როგორც 28 zw37 q839 7342ui23 8e2t 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'

ამ ოპერაციის შედეგი სმოდი = 66793940 სთ

  1. ახლა ყველაზე რთული ოპერაციაა, მაგრამ თუ ყურადღებით დააკვირდებით, ის აღარ არის ისეთი საშინელი, როგორც თავიდან ჩანდა. წარმოვიდგინოთ სმოდი შემდეგნაირად:

ფიგურა არ არის შენახული

ბრინჯი 5

მე შევეცადე წარმოედგინა Smod ელემენტები ფიგურაში, მაგრამ მაინც ავხსნი:

s0 = 0, s1 = 4, s2 = 9 და ა.

ახლა, დაწყებული ყველაზე დაბალი ელემენტიდან s0, ჩვენ ვაკეთებთ ჩანაცვლებას. აბზაცის გახსენება " 3.2 კრიპტო გარდაქმნის ძირითადი საფეხური»I - row, s i - სვეტი, მოძებნეთ მნიშვნელობა ნულოვან მწკრივში და ნულოვან სვეტში:

ნახ. 6

სმოდის ამჟამინდელი მნიშვნელობა არ არის 6679394 0 თ და 6679394 5

ჩვენ ვაგრძელებთ s1– ის ჩანაცვლებას, ე.ი. ოთხი პირველი რიგისა და მეოთხე სვეტის გამოყენებით (s1 = 4!). ჩვენ ვუყურებთ სურათს:

ბრინჯი 7

ახლა უკვე სმოდის ღირებულებაა და არა 667939 4 5 სთ, 667939 2 5 სთ მე ვთვლი, რომ ახლა ჩანაცვლების ალგორითმი მკითხველისთვის ნათელია და შემიძლია ვთქვა, რომ Ssimple– ის საბოლოო შედეგის შემდეგ ექნება შემდეგი მნიშვნელობა - 11e10325 სთ.

მე ვისაუბრებ იმაზე, თუ როგორ არის ეს ყველაზე ადვილად განსახორციელებელი ასამბლერი ბრძანებების სახით შემდგომ მომდევნო პარაგრაფში, მას შემდეგ რაც ვისაუბრებ გაფართოებულ ცხრილზე.

  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 to 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".

მასივის ელემენტები წინასწარ დავაწყე იმ თანმიმდევრობით, რომლითაც უნდა იკვებებოდეს 32 - Z. ამდენად, გავზარდე ანალოგიურად საჭირო მეხსიერება, მაგრამ დავიხსენი აზროვნების პროცესებისგან, რომლებიც არ მჭირდებოდა და გავზარდე სიჩქარე ალგორითმი, მეხსიერების წვდომის დროის შემცირებით! აქ მე აღვწერე მხოლოდ გასაღები 32 - З, ციკლისთვის 32 - Р მე იგივე გავაკეთე, მაგრამ ელემენტების მიწოდების განსხვავებული სქემის გამოყენებით, რაც მე ასევე აღწერილი მაქვს პარაგრაფში " ძირითადი ციკლები: "32-Z", "32-P».

ახლა დროა აღწეროთ შემცვლელი ფუნქციის განხორციელება, როგორც ზემოთ დავპირდი. ადრე ვერ აღვწერ, რადგან ეს მოითხოვს ახალი კონცეფციის დანერგვას - გაფართოებული შემცვლელი ცხრილი. ვერ აგიხსნით რა არის. სამაგიეროდ, მე გაჩვენებ ამას, და შენ თვითონ ჩამოაყალიბე საკუთარი თავი, რა არის ეს - ცვლილებების გაფართოებული ცხრილი?

ასე რომ, იმის გასაგებად, თუ რა არის გაფართოებული შემცვლელი ცხრილი, ჩვენ გვჭირდება შემცვლელი მაგიდა, მაგალითად, მე ავიღებ მას, რაც ნაჩვენებია ნახატზე. 3

მაგალითად, ჩვენ გვჭირდება რიცხვის შეცვლა 66793940h. მე მას შემდეგნაირად წარმოვადგენ:

ფიგურა არ არის შენახული

ბრინჯი ცხრა

ახლა თუ ავიღებთ ელემენტებს s1, s0, ე.ი. არანაკლებ მნიშვნელოვანი ბაიტი, შემცვლელი ფუნქციის შედეგი იქნება 25 სთ! ანდრეი ვინოკუროვის სტატიის წაკითხვის შემდეგ, რომელიც მე მოვიყვანე აბზაცში " გამოყენებული ლიტერატურის ჩამონათვალი", თქვენ ნამდვილად აღმოაჩენთ, რომ თუ ორ ხაზს აიღებთ, შეგიძლიათ მიიღოთ მასივი, რომელიც საშუალებას მოგცემთ სწრაფად იპოვოთ შემცვლელი ელემენტები ასამბლერის ბრძანების გამოყენებით xlatისინი ამბობენ, რომ ამის გაკეთება სხვაგვარად უფრო სწრაფად შეიძლება, მაგრამ ანდრეი ვინოკუროვმა დაახლოებით ოთხი წელი გაატარა GOST– ის დანერგვის სწრაფი ალგორითმების შესასწავლად! მე არ ვფიქრობ, რომ თქვენ უნდა ხელახლა გამოიგონოთ ბორბალი, როცა უკვე გაქვთ.

ასე რომ, მასივის შესახებ:

ავიღოთ პირველი ორი ხაზი ნული და პირველი, შევქმნათ მასივი 256 ბაიტიდან. ახლა ჩვენ ვამჩნევთ ერთ თავისებურებას, რომ თუ საჭიროა 00h გარდაქმნა, მაშინ შედეგი იქნება 75h (ნახ. 3 -ის საფუძველზე) - ჩვენ ამ მნიშვნელობას მასივში ჩავდებთ 00h ოფსეტში. ჩვენ ვიღებთ 01h მნიშვნელობას, 79h შემცვლელი ფუნქციის შედეგს, მას ვათავსებთ მასივში 01 – ის ოფსეტში და ასე შემდეგ 0FFh– მდე, რაც მოგვცემს 0FCh– ს, რომელსაც მასივში ჩავდებთ 0FFh– ის ოფსეტურით. ასე რომ, ჩვენ მივიღეთ გაფართოებული შემცვლელი ცხრილი რიგების პირველი ჯგუფისათვის: პირველი და ნული. მაგრამ ჯერ კიდევ სამი ჯგუფია: მეორე გვერდი 2, გვერდი 3, მესამე გვერდი 4, გვერდი 5, მეოთხე გვერდი 6, გვერდი 7. ჩვენ ამ სამ ჯგუფს ისე ვუმკლავდებით, როგორც პირველს. შედეგი არის გაფართოებული შემცვლელი მაგიდა!

ახლა ჩვენ შეგვიძლია განვახორციელოთ ალგორითმი, რომელიც შეასრულებს ჩანაცვლებას. ამისათვის ჩვენ ვიღებთ წყაროს კოდებს, რომლებიც ანდრეი ვინოკუროვმა გამოაქვეყნა თავის გვერდზე, იხილეთ " ბიბლიოგრაფია».

lea ebx, გაფართოებული_ცხრილი_ მარტივი

mov eax, [ჩაწერეთ შესაცვლელი ნომერი]

დაამატეთ ebx, 100h; გადადით შემდეგ ორ კვანძზე

ქვე ebx, 300 სთ; რათა მომავალში ebx მიუთითოს მაგიდაზე

ახლა კიდევ ერთი ფუნქცია, წინა მოქმედებებით ჩვენ არა მხოლოდ შევცვალეთ, არამედ გადავიტანეთ რიცხვი 8 ბიტით მარცხნივ! ჩვენ უბრალოდ უნდა გადავიტანოთ რიცხვი კიდევ 3 ბიტი მარცხნივ:

და ჩვენ ვიღებთ ოპერაციის შედეგს rol eax, 11!

ოპტიმიზაციას მეტს ვერაფერს დავამატებ, ერთადერთი რისი ხაზგასმა შემიძლია არის ის რაც ზემოთ ვთქვი - უფრო ხშირად გამოიყენეთ რეგისტრები ვიდრე მეხსიერებაზე წვდომა. მე ვფიქრობ, რომ ეს სიტყვები მხოლოდ დამწყებთათვის, გამოცდილებისთვისაა და ჩემი სიტყვების გარეშე ეს მშვენივრად მესმის :).

მოთხოვნები ძირითადი ინფორმაციისთვის.

როგორც ანდრეი ვინოკუროვის სტატიაშია ნათქვამი, გასაღები შეირჩევა ორი კრიტერიუმის მიხედვით:

- კრიტერიუმი ბიტების თანაბარი განაწილებისთვის 1 და 0. მნიშვნელობებს შორის. ჩვეულებრივ, ბიტების თანაბარი განაწილების კრიტერიუმი არის პირსონის კრიტერიუმი ("chi-square").

ეს ნიშნავს გასაღებს, პრინციპში, ნებისმიერ რიცხვს შეუძლია. ანუ, როდესაც იქმნება გასაღების შემდეგი ბიტი, მისი ინიციალიზაციის ალბათობა ერთით ან ნულით არის 50/50!

გთხოვთ გაითვალისწინოთ, რომ გასაღები შედგება რვა ელემენტისგან, თითოეული 32 ბიტიდან, ამიტომ გასაღებში არის მხოლოდ 32 * 8 = 256 ბიტი და შესაძლო გასაღებების რაოდენობაა 2 256! ეს არ გტკივა? 🙂

- სერიის კრიტერიუმი.

თუ გადავხედავთ ჩვენს გასაღებს, რომელიც მე მოვიყვანე აბზაცში " 4.1 კრიპტო გარდაქმნის ძირითადი საფეხურის განხორციელება», მაშინ შეამჩნევთ, რომ შემდეგი აღნიშვნა მართებულია:

ბრინჯი ათი

ერთ ფრაზაში, 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, მაშინ ბი ჯის მნიშვნელობა გამომავალზე ყოველთვის არის ინვერსიული შეყვანის ბიტი i;

- თუ p = 0, მაშინ გამომავალი ბიტი j თანაბარი ალბათობით იღებს მნიშვნელობებს 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 ბიტს შეყვანისას და პირველი რიცხვის მე -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 ბიტის მნიშვნელობა უდრის 0 ბიტის მნიშვნელობას შეყვანისას 16 – დან 4 შემთხვევაში;

კოეფიციენტების საბოლოო ცხრილი:

კოეფიციენტების ცხრილი იქნება შემდეგი (ვისთვისაც არ არის ზარმაცი ხელახალი გამოთვლა)

შესასვლელი
გამომავალი 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 ნაწილები უცვლელი რჩება! კრიპტოანალიტიკოსს აქვს სად უნდა მიმართოს all ყველა ამ მოთხოვნის გათვალისწინებით, მარტივი ძიებით ("თავით"), ნაპოვნი იქნა მითითებული თეორიის შესაბამისი პერმუტაციის ცხრილები (დღეს - 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. ანდრეი ვინოკუროვის სტატია:

დაშიფვრის ალგორითმი GOST 28147-89, მისი გამოყენება და განხორციელება

Intel x86 პლატფორმის კომპიუტერებისთვის.

(შეგიძლიათ იხილოთ: http://www.enlight.ru/crypto/frame.htm).

ასევე არსებობს დაშიფვრის ალგორითმის განხორციელების წყაროს კოდები.

  1. ჰორსტ ფეისტელის სტატია:

კრიპტოგრაფია და კომპიუტერული უსაფრთხოება.

(შეგიძლიათ იხილოთ იმავე სტატიაში, როგორც წინა სტატია)

  1. როს ნ უილიამსი:

CRC შეცდომის გამოვლენის ალგორითმების ელემენტარული გზამკვლევი

გამოქვეყნებულია საიტზე www.ვასმიru.

მადლობები.

მინდა მადლობა გადავუხადო ფორუმის ყველა ვიზიტორს www.wasm.ru. მაგრამ განსაკუთრებით მინდა მადლობა გადავუხადო ChS- ს, რომელიც ამჟამად ცნობილია როგორც SteelRat, ის დამეხმარა იმის გაგებაში, რასაც მე ალბათ ვერასდროს გავიგებდი, ასევე პარაგრაფის დაწერაში: " ძირითადი ინფორმაციის მოთხოვნები”, ამ აბზაცის ძირითადი ნაწილი მის მიერ არის დაწერილი. ასევე უღრმესი მადლობელი ვარ KSTU– ს სახელობის თანამშრომლის ა.ნ. ტუპოლევიკი ანიკინ იგორ ვიაჩესლავოვიჩი და ცოდვა იქნება არ აღვნიშნო კრის კასპერსკი იმის გამო, რომ ის არის და ვოლოდია / wasm.ru მისი მითითებებისათვის. ოჰ, და მე მისგან ვიღებ :). მე ასევე მინდა აღვნიშნო Sega-Zero / Callipso, მაგრამ ამან მათემატიკური ჯუნგლები მომიყვანა გონებაში.

ეს არის, ალბათ, ყველაფერი, რაც მინდა გითხრათ.

მადლობელი ვიქნები ამ სტატიასთან დაკავშირებული კრიტიკისთვის ან კითხვებისთვის ან უბრალოდ რჩევისთვის. ჩემი საკონტაქტო ინფორმაცია: [ელფოსტა დაცულია], ICQ - 337310594.

პატივისცემით, Evil`s Interrupt.

P.S .: ამ სტატიით მე არ ვცდილობდი ვინმეს აჯობო. იგი დაიწერა განზრახვით, GOST– ის შესწავლის გასაადვილებლად და თუ თქვენ გაქვთ სირთულეები, ეს არ ნიშნავს რომ მე ვარ დამნაშავე ამაში. იყავით გონივრული და მოთმინება, ყოველივე საუკეთესოს თქვენთვის!

ეს ალგორითმი სავალდებულოა რუსეთის ფედერაციის სახელმწიფო ორგანიზაციებში და არაერთ კომერციულ დაშიფვრის ალგორითმად გამოსაყენებლად.

ალგორითმის აღწერა

ალგორითმის დიაგრამა ნაჩვენებია ნახ. 3.1. როგორც ხედავთ, ამ ალგორითმის სქემა საკმაოდ მარტივია, რაც ერთმნიშვნელოვნად ამარტივებს მის პროგრამულ თუ ტექნიკურ განხორციელებას.

GOST 28147-89 ალგორითმი დაშიფვრავს ინფორმაციას 64 ბიტიანი ბლოკებით, რომლებიც იყოფა 32 ბიტის ორ ქვე-ბლოკად (N1 და N2). ქვებლოკი N1 დამუშავებულია გარკვეული გზით, რის შემდეგაც ემატება მისი მნიშვნელობა

ქვე-ბლოკის მნიშვნელობით N2 (დამატება ხორციელდება მოდული 2), შემდეგ ქვე ბლოკები იცვლება. ასეთი ტრანსფორმაცია ტარდება გარკვეული რაოდენობის რაუნდში: 16 ან 32, რაც დამოკიდებულია ალგორითმის მუშაობის რეჟიმზე (ქვემოთ აღწერილი). თითოეულ ტურში ტარდება შემდეგი ოპერაციები:

1. გასაღების გადაფარვა. ქვე-ბლოკის / VI შინაარსს ემატება მოდული 2 32 Kx გასაღების ნაწილით.

GOST 28147-89 ალგორითმის დაშიფვრის გასაღებს აქვს განზომილება 256 ბიტი, ხოლო Kx არის მისი 32-ბიტიანი ნაწილი, ანუ 256-ბიტიანი დაშიფვრის გასაღები წარმოდგენილია როგორც 32-ბიტიანი ქვეკეტების შეერთება (სურ. 3.2) :

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

დაშიფვრის პროცესში გამოიყენება ერთ – ერთი ასეთი ქვეკეტი, რაც დამოკიდებულია მრგვალი რიცხვისა და ალგორითმის მუშაობის რეჟიმზე.

ბრინჯი 3.1. ალგორითმის სქემა GOST 28147-

ბრინჯი 3.2. ალგორითმის დაშიფვრის გასაღები GOST 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.

მოდით 4-ბიტიანი ბლოკი "0100" მოვიდეს შესასვლელში, ანუ მნიშვნელობა 4. ცხრილის მიხედვით, გამომავალი მნიშვნელობა იქნება 15, ანუ. "1111" (0 შეიცვალა 4 -ით, 1 შეიცვალა 11 -ით, 2 -ის მნიშვნელობა უცვლელია და ა.შ.).

როგორც ხედავთ, ალგორითმის სქემა ძალიან მარტივია, რაც ნიშნავს რომ მონაცემთა დაშიფვრის ყველაზე დიდი დატვირთვა მოდის შემცვლელ ცხრილებზე. სამწუხაროდ, ალგორითმს აქვს ის თვისება, რომ არსებობს "სუსტი" შემცვლელი ცხრილი, რომლის გამოყენებისას ალგორითმის გამოვლენა შესაძლებელია კრიპტოანალიტიკური მეთოდებით. სუსტი მოიცავს, მაგალითად, ცხრილს, რომელშიც გამომავალი ტოლია შეყვანის:

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

3. ბიტიკურად ციკლური მარცხენა ცვლა 11 ბიტით.

ალგორითმის მუშაობის რეჟიმები

GOST 28147-89 ალგორითმს აქვს 4 ოპერაციული რეჟიმი:

Replacement მარტივი ჩანაცვლების რეჟიმი;

გამა რეჟიმი;

P გამა რეჟიმი უკუკავშირით;

Sim ტრენაჟორების წარმოების რეჟიმი.

ეს რეჟიმები გარკვეულწილად განსხვავდება ზოგადად მიღებულებისაგან (აღწერილია ქვეთავში 1.4), ამიტომ ღირს მათი უფრო დეტალურად განხილვა.

ამ რეჟიმებს აქვთ განსხვავებული მიზნები, მაგრამ იყენებენ დაშიფვრის ერთგვაროვან ტრანსფორმაციას ზემოთ აღწერილი.

მარტივი ჩანაცვლების რეჟიმი

მარტივი ჩანაცვლების რეჟიმში, ზემოთ აღწერილი 32 რაუნდი უბრალოდ შესრულებულია ინფორმაციის თითოეული 64-ბიტიანი ბლოკის დასაშიფრებლად. 32-ბიტიანი ქვე-კლავიშები გამოიყენება შემდეგი თანმიმდევრობით:

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 -მდე.

სტანდარტული ECB რეჟიმის მსგავსად, ბლოკების ცალკეული დაშიფვრის გამო, მარტივი ჩანაცვლების რეჟიმი მკაცრად არის მოხსნილი მონაცემების დაშიფვრისათვის; ის უნდა იქნას გამოყენებული მხოლოდ დაშიფვრის სხვა გასაღებების დაშიფვრა მრავალ გასაღების სქემებში.

გამა რეჟიმი

გამა რეჟიმში (ნახ. 3.3), თითოეული უბრალო ტექსტის ბლოკს ბიტუალურად ემატება მოდული 2 64-ბიტიანი შიფრული გამა ბლოკით. შიფრის გამა არის სპეციალური თანმიმდევრობა, რომელიც წარმოიქმნება ზემოთ აღწერილი გარდაქმნების გამოყენებით შემდეგნაირად:

1. რეგისტრებში N1 და N2 იწერება მათი საწყისი შევსება-64-ბიტიანი მნიშვნელობა, სახელწოდებით "synchro-burst" (სინქრონული ადიდება, ფაქტობრივად, არის ინიციალიზაციის ვექტორის ანალოგი CBC, CFB და OFB რეჟიმებში).

2. რეგისტრების / VI და N2 (ამ შემთხვევაში - შეტყობინებების სინქრონიზაცია) შინაარსის დაშიფვრა ხდება მარტივი ჩანაცვლების რეჟიმში.

3. N1- ის შინაარსი ემატება მოდულს (2 32 - 1) მუდმივი CI = 2 24 + 2 16 + 2 8 + 4, დამატების შედეგი იწერება / VI რეესტრში.

4. N2- ის შინაარსს ემატება მოდული 2 მუდმივი C2 = 2 24 + 2 16 + 2 8 +1, დამატების შედეგი იწერება N2 რეგისტრში.

5. რეგისტრების შინაარსი / VI და N2 გამოდის 64-ბიტიანი შიფრის გამა ბლოკის სახით (ანუ, ამ შემთხვევაში / VI და N2 ქმნის პირველ გამა ბლოკს).

6. თუ გამა მომდევნო ბლოკია საჭირო (ანუ თქვენ უნდა გააგრძელოთ დაშიფვრა ან გაშიფვრა), თქვენ ბრუნდებით მე –2 საფეხურზე.

გაშიფვრის მიზნით, გამა წარმოიქმნება ანალოგიურად, შემდეგ XOR ოპერაცია კვლავ გამოიყენება შიფროტექსტისა და გამა ბიტებისთვის.

შიფრის ერთი და იმავე დიაპაზონის შესაქმნელად, კრიპტოგრამის გაშიფვრის მომხმარებელს უნდა ჰქონდეს იგივე გასაღები და იგივე სინქრო-შეტყობინების მნიშვნელობა, რაც გამოიყენებოდა ინფორმაციის დაშიფვრისთვის. წინააღმდეგ შემთხვევაში, შეუძლებელი იქნება დაშიფრული ტექსტის ორიგინალის მიღება.

GOST 28147-89 ალგორითმის უმეტეს განხორციელებაში, სინქრონიზაციის შეტყობინება არ არის საიდუმლო ელემენტი, თუმცა, სინქრონიზაციის შეტყობინება შეიძლება იყოს ისეთივე საიდუმლო, როგორც დაშიფვრის გასაღები. ამ შემთხვევაში, ჩვენ შეგვიძლია ვივარაუდოთ, რომ ალგორითმის გასაღების ეფექტური სიგრძე (256 ბიტი) იზრდება სინქრონიზაციის შეტყობინების კიდევ 64 ბიტით, რაც შეიძლება ჩაითვალოს დამატებით საკვანძო ელემენტად.

გამა რეჟიმი უკუკავშირით

გამა რეჟიმში უკუკავშირით, როგორც რეგისტრების შევსება / VI და L / 2, მე –2 ბლოკიდან დაწყებული, არ გამოიყენება წინა გამა ბლოკი, არამედ უბრალო ტექსტის წინა ბლოკის დაშიფვრის შედეგი (სურ. 3.4) რა ამ რეჟიმში პირველი ბლოკი წარმოიქმნება წინა მსგავსი.

ბრინჯი 3.4. დაშიფრული გამა წარმოქმნის გამა რეჟიმში უკუკავშირით

სიმულატორის წარმოების მეთოდი

პრეფიქსი არის კრიპტოგრაფიული შემოწმება, რომელიც გამოითვლება დაშიფვრის გასაღების გამოყენებით შეტყობინებების მთლიანობის შესამოწმებლად. მისი გამოსათვლელად, არსებობს GOST 28147-89 ალგორითმის სპეციალური რეჟიმი.

სიმულატორის გენერირება ხორციელდება შემდეგნაირად:

1. ინფორმაციის პირველი 64 ბიტიანი ბლოკი, რომლისთვისაც გამოითვლება პრეფიქსი, იწერება N1 და N2 რეესტრებში და დაშიფრულია მარტივი ჩანაცვლების შემცირებული რეჟიმში, რომელშიც 32-დან პირველი 16 რაუნდი სრულდება.

2. მიღებული შედეგი ჯამდება მოდული 2 ინფორმაციის შემდეგი ბლოკით, ინახავს შედეგს N1 და N2.

3. M და N2 კვლავ დაშიფრულია მარტივი ჩანაცვლების შემცირებულ რეჟიმში და ასე შემდეგ ინფორმაციის ბოლო ბლოკამდე.

იმიტატორი არის N1 და N2 რეგისტრების 64-ბიტიანი შინაარსი, ან მისი ნაწილი. გამოიყენება ყველაზე ხშირად გამოყენებული 32 ბიტიანი პრეფიქსი, ანუ რეგისტრის შინაარსის ნახევარი. ეს საკმარისია, რადგან, როგორც ნებისმიერი საკონტროლო ჯამი, სიმულატორი შექმნილია პირველ რიგში ინფორმაციის შემთხვევითი დამახინჯებისგან დასაცავად. მონაცემთა შეგნებულად შეცვლისგან დასაცავად გამოიყენება სხვა კრიპტოგრაფიული მეთოდები - უპირველეს ყოვლისა, ელექტრონული ციფრული ხელმოწერა (იხ. ნაწილი 1.1).

იმიტატორი გამოიყენება შემდეგნაირად:

1. ნებისმიერი ინფორმაციის დაშიფვრისას გამოითვლება და იგზავნება უბრალო ტექსტის პრეფიქსი დაშიფრულ ტექსტთან ერთად.

2. გაშიფვრის შემდეგ, პრეფიქსი კვლავ გამოითვლება და შედარებულია გაგზავნილთან.

3. თუ გამოთვლილი და გაგზავნილი პრეფიქსი არ ემთხვევა - შიფრის ტექსტი დამახინჯებულია გადაცემის დროს ან არასწორი გასაღებები გამოიყენება გაშიფვრისას.

პრეფიქსი განსაკუთრებით სასარგებლოა ძირითადი ინფორმაციის სწორი გაშიფვრის შესამოწმებლად მრავალ გასაღები სქემების გამოყენებისას.

იმიტატორი არის MAC შეტყობინების ავტორიზაციის კოდის ზოგიერთი ანალოგი, რომელიც გამოითვლება CBC რეჟიმში; განსხვავება ისაა, რომ სინქრონიზაციის შეტყობინება არ გამოიყენება პრეფიქსის გამოთვლაში, ხოლო ინიციალიზაციის ვექტორი გამოიყენება MAC– ის გამოთვლაში.

ალგორითმის კრიპტოგრაფიული სიძლიერე

1994 წელს GOST 28147-89 ალგორითმის აღწერა ითარგმნა ინგლისურად და გამოქვეყნდა; ამის შემდეგ დაიწყო მისი ანალიზის შედეგები, რომელიც განხორციელდა უცხოელი ექსპერტების მიერ; თუმცა, მნიშვნელოვანი პერიოდის განმავლობაში, არცერთი თავდასხმა არ იქნა მიახლოვებული.

Key დიდი გასაღების სიგრძე - 256 ბიტი; საიდუმლო სინქრონიზაციის შეტყობინებასთან ერთად, გასაღების ეფექტური სიგრძე იზრდება 320 ბიტამდე;

Transform გარდაქმნების 32 რაუნდი; 8 რაუნდის შემდეგ მიიღწევა შეყვანის მონაცემების გაფანტვის სრული ეფექტი: უბრალო ტექსტის ბლოკის ერთ ბიტში ცვლილება გავლენას მოახდენს შიფრული ტექსტის ბლოკის ყველა ბიტზე და პირიქით, ანუ არის უსაფრთხოების მრავალჯერადი ზღვარი.

განვიხილოთ GOST 28147-89 ალგორითმის კრიპტოანალიზის შედეგები.

შემცვლელი ცხრილების ანალიზი

ვინაიდან შემცვლელი ცხრილები არ არის მოცემული სტანდარტში, რიგი სამუშაოები (მაგალითად, გ) ვარაუდობენ, რომ "კომპეტენტურ ორგანიზაციას" შეუძლია შექმნას როგორც "კარგი", ისე "ცუდი" შემცვლელი ცხრილი. თუმცა, ცნობილი ექსპერტი ბრიუს შნაიერი ასეთ ვარაუდებს "ჭორებს" უწოდებს. ნათელია, რომ ალგორითმის კრიპტოგრაფიული სიძლიერე დიდწილად დამოკიდებულია გამოყენებული შემცვლელი ცხრილების თვისებებზე; შესაბამისად, არის სუსტი შემცვლელი მაგიდები (იხ. მაგალითი ზემოთ), რომელთა გამოყენებამ შეიძლება გაამარტივოს თავდასხმა ალგორითმზე. მიუხედავად ამისა, სხვადასხვა ჩანაცვლების ცხრილების გამოყენების შესაძლებლობა ძალიან ღირსეულ იდეად გამოიყურება, რომლის სასარგებლოდ შეიძლება მოვიყვანოთ ორი ფაქტი DES დაშიფვრის სტანდარტის ისტორიიდან (დეტალებისათვის იხილეთ ნაწილი 3.15):

□ DES ალგორითმის ხაზოვანი და დიფერენციალური კრიპტოანალიზის გამოყენებით შეტევები იყენებენ შემცვლელი ცხრილების სპეციფიკურ მახასიათებლებს; სხვა ცხრილების გამოყენებისას კრიპტოანალიზი თავიდან უნდა დაიწყოს;

□ მცდელობა იქნა გაძლიერდეს DES ხაზოვანი და დიფერენციალური კრიპტოანალიზის წინააღმდეგ უფრო მძლავრი შემცვლელი ცხრილების გამოყენებით; ასეთი ცხრილები, რომლებიც მართლაც უფრო ძლიერია, შემოთავაზებულია, მაგალითად, s 5 DES ალგორითმში; მაგრამ, სამწუხაროდ, შეუძლებელი იყო DES– ის შეცვლა s 5 DES– ით, ვინაიდან შემცვლელი ცხრილები მკაცრად არის განსაზღვრული სტანდარტში, შესაბამისად, ალგორითმის განხორციელება ალბათ არ უწყობს ხელს ცხრილების სხვებისთვის შეცვლის შესაძლებლობას.

რიგი სამუშაოები (მაგალითად, და) შეცდომით ასკვნის, რომ GOST 28147-89 ალგორითმის შემცვლელი საიდუმლო ცხრილები შეიძლება იყოს გასაღების ნაწილი და გაზარდოს მისი ეფექტური სიგრძე (რაც უმნიშვნელოა, ვინაიდან ალგორითმს აქვს ძალიან დიდი 256-) ცოტა გასაღები). თუმცა, ნაშრომმა დაამტკიცა, რომ საიდუმლო შემცვლელი ცხრილების გამოთვლა შესაძლებელია შემდეგი შეტევის გამოყენებით, რომელიც შეიძლება გამოყენებულ იქნას პრაქტიკაში:

1. ნულოვანი გასაღები დაყენებულია და ხორციელდება "ნულოვანი ვექტორის" ძებნა, ანუ მნიშვნელობები z = / (0), სადაც / () არის ალგორითმის რაუნდის ფუნქცია. ეს ეტაპი მოიცავს დაშიფვრის 2 ოპერაციას.

2. ნულოვანი ვექტორის გამოყენებით გამოითვლება შემცვლელი ცხრილების მნიშვნელობები, რომელსაც არაუმეტეს 2 11 ოპერაცია სჭირდება.

ალგორითმის ცვლილებები და მათი ანალიზი

სამუშაოებმა ჩაატარეს GOST 28147-89 ალგორითმის მოდიფიკაციების კრიპტოანალიზი:

G GOST-H ალგორითმი, რომლის დროსაც, ორიგინალ ალგორითმთან შედარებით, იცვლება ქვეკეიების გამოყენების რიგი, კერძოდ, 25-დან 32-ე რაუნდებში, ქვეშირები გამოიყენება პირდაპირი თანმიმდევრობით, ანუ ისე, როგორც ალგორითმის წინა რაუნდები;

□ 20 მრგვალი GOST® ალგორითმი, რომელიც იყენებს XOR ღილაკს 32 მოდულის დამატების ნაცვლად.

ანალიზის შედეგების საფუძველზე დადგინდა, რომ GOST-H და GOST © უფრო სუსტია ვიდრე ორიგინალური GOST 28147-89 ალგორითმი, რადგან ორივეს აქვს სუსტი გასაღებების კლასები. უნდა აღინიშნოს, რომ GOST © კრიპტოანალიზის ნაწილში ნაშრომი სიტყვასიტყვით იმეორებს იმ განყოფილებას, რომელიც ეძღვნება GOST 28147-89 ალგორითმის კრიპტოანალიზს, გამოქვეყნებული 2000 წელს ცნობილი ნაწარმოების მიერ (ორიგინალის მითითების გარეშე) რა ეს ეჭვს ბადებს ნაწარმოების ავტორების პროფესიონალიზმზე და მის დანარჩენ შედეგებზე.

ალგორითმის ძალიან საინტერესო მოდიფიკაციაა შემოთავაზებული ნაწარმოებში: ცხრილი S \… Ss უნდა იყოს განსხვავებული; ალგორითმის თითოეულ რაუნდში ისინი უნდა გადააკეთონ გარკვეული კანონის შესაბამისად. ეს ჩანაცვლება შეიძლება იყოს დამოკიდებული დაშიფვრის გასაღებზე, ან შეიძლება იყოს საიდუმლო (ანუ ის შეიძლება იყოს დაშიფვრის გასაღების ნაწილი, რომელიც აღემატება თავდაპირველ 256 ბიტიან გასაღებს). ორივე ეს ვარიანტი, მათი ავტორების აზრით, მნიშვნელოვნად ზრდის ალგორითმის წინააღმდეგობას წრფივი და დიფერენციალური კრიპტოანალიზის მიმართ.

და კიდევ ერთი მოდიფიკაცია, რომელიც დაკავშირებულია ჩანაცვლების ცხრილებთან, მოცემულია სამუშაოში, რომელიც აანალიზებს შემცვლელი ცხრილების გამოთვლის ერთ – ერთ მეთოდს დაშიფვრის გასაღების საფუძველზე. სამუშაოს ავტორებმა დაასკვნეს, რომ ასეთი დამოკიდებულება ასუსტებს ალგორითმს, რადგან ეს იწვევს სუსტი გასაღებების არსებობას და ალგორითმის ზოგიერთ პოტენციურ დაუცველობას.

სრული მრგვალი ალგორითმის ანალიზი

არსებობს თავდასხმები სრულფასოვან GOST 28147-89– ზე ყოველგვარი ცვლილების გარეშე. ალგორითმის ანალიზის ერთ-ერთი პირველი ღია ნაშრომი, ცნობილი ნაშრომი, ეძღვნება თავდასხმებს, რომლებიც იყენებენ რიგი ცნობილი დაშიფვრის ალგორითმების ძირითადი გაფართოების პროცედურის სისუსტეებს. კერძოდ, სრული მრგვალი GOST 28147-89 ალგორითმი შეიძლება დაიშალოს დიფერენციალური კრიპტოანალიზის გამოყენებით დაკავშირებულ კლავიშებზე, მაგრამ მხოლოდ იმ შემთხვევაში, თუ სუსტი შემცვლელი ცხრილები გამოიყენება. ალგორითმის 24-რაუნდიანი ვარიანტი (რომელსაც აკლია პირველი 8 რაუნდი) ანალოგიურად იხსნება ნებისმიერი შემცვლელი ცხრილისთვის, მაგრამ ძლიერი შემცვლელი მაგიდები (მაგალითად, გ) ნაჩვენებია ასეთი შეტევა სრულიად არაპრაქტიკულად.

ადგილობრივმა მეცნიერებმა A.G. როსტოვცევმა და E.B. მახოვენკომ 2001 წელს თავიანთ ნაშრომებში შესთავაზეს კრიპტოანალიზის ფუნდამენტურად ახალი მეთოდი (ავტორების აზრით, ეს ბევრად უფრო ეფექტურია ვიდრე წრფივი და დიფერენციალური კრიპტოანალიზი) ობიექტური ფუნქციის ჩამოყალიბებით, მისი ცნობილი შიფრული ტექსტის შესაბამისი უბრალო ტექსტიდან და სასურველი საკვანძო მნიშვნელობა და მისი ექსტრემის პოვნა ჭეშმარიტი გასაღების მნიშვნელობის შესაბამისად. მათ ასევე აღმოაჩინეს GOST 28147-89 ალგორითმის სუსტი გასაღებების დიდი კლასი, რაც საშუალებას იძლევა დაარღვიოს ალგორითმი მხოლოდ 4 შერჩეული უბრალო ტექსტისა და შესაბამისი შიფროტექსტების გამოყენებით საკმაოდ დაბალი სირთულის მქონე. ალგორითმის კრიპტოანალიზი გრძელდება მუშაობაში.

2004 წელს, კორეელი სპეციალისტების ჯგუფმა შემოგვთავაზა თავდასხმა, რომლის დროსაც დაკავშირებულ გასაღებებზე დიფერენციალური კრიპტოანალიზის გამოყენებით შესაძლებელია საიდუმლო გასაღების 12 ბიტი, 91.7% ალბათობით. შეტევა მოითხოვს 2 35 არჩეულ უბრალო ტექსტს და 2 36 დაშიფვრის ოპერაციას. როგორც ხედავთ, ეს შეტევა პრაქტიკულად უსარგებლოა ალგორითმზე რეალური შეტევისთვის.

ალგორითმი GOST 28147-89 და კოდი "მაგმა" (GOST R 34.12-2015)

ალგორითმის ზოგადი სქემა. ალგორითმი აღწერილი GOST 28147-89 ”ინფორმაციის დამუშავების სისტემები. კრიპტოგრაფიული დაცვა. კრიპტოგრაფიული ტრანსფორმაციის ალგორითმი ", არის სიმეტრიული დაშიფვრის შიდა სტანდარტი (2016 წლის 1 იანვრამდე) და სავალდებულოა სახელმწიფო საინფორმაციო სისტემებში და, ზოგიერთ შემთხვევაში, კომერციულ სისტემებში გამოყენებული სერტიფიცირებული კრიპტოგრაფიული ინფორმაციის დაცვის ინსტრუმენტებში. ინფორმაციის კრიპტოგრაფიული დაცვის საშუალებების სერტიფიცირება საჭიროა რუსეთის ფედერაციის სახელმწიფო საიდუმლოების შემცველი ინფორმაციის დასაცავად და ინფორმაციის, რომლის კონფიდენციალურობა უზრუნველყოფილია მოქმედი კანონმდებლობის შესაბამისად. ასევე რუსეთის ფედერაციაში, GOST 28147-89 ალგორითმის გამოყენება რეკომენდირებულია საბანკო ინფორმაციის სისტემების დაცვის მიზნით.

GOST 28147-89 ალგორითმი (ნახაზი 2.21) ემყარება ფეისტელის სქემას და დაშიფვრავს ინფორმაციას 64 ბიტიანი ბლოკებით, რომლებიც იყოფა ორ ქვე ბლოკად 32 ბიტიანი (I, და რ).ქვებლოკი რ,მუშავდება მრგვალი ტრანსფორმაციის ფუნქციით, რის შემდეგაც მისი მნიშვნელობა ემატება ქვეჯგუფის Lj მნიშვნელობას, შემდეგ ქვებლოკები იცვლება. ალგორითმს აქვს 16 ან 32 რაუნდი, ეს დამოკიდებულია დაშიფვრის რეჟიმზე (იმიტაციის ჩასმის ან სხვა დაშიფვრის რეჟიმების გაანგარიშება).

ბრინჯი 2.21.

ალგორითმის თითოეულ რაუნდში ხორციელდება შემდეგი გარდაქმნები.

1. გასაღების გადაფარვა.დაბლოკვის შინაარსი რ იდაემატა მოდული 2 32 მრგვალი გასაღებით კ.ჯარის ორიგინალური გასაღების 32-ბიტიანი ნაწილი, რომელიც გამოიყენება როგორც მრგვალი. GOST 28147-89 ns ალგორითმი იყენებს გასაღების გაფართოების პროცედურას, ორიგინალური 256 ბიტიანი დაშიფვრის გასაღები წარმოდგენილია რვა 32-ბიტიანი რვა ღილაკის (ნახ. 2.22) შეჯამების სახით (შეხამება). K 0, K (, K t K, K A, K 5, K 6, K 7.

დაშიფვრის პროცესი იყენებს ერთ – ერთ ამ ქვესახეობას. TO

1 -დან 24 -ე ტურამდე - პირდაპირი თანმიმდევრობით:

25 -დან 32 -ე ტურამდე - საპირისპირო თანმიმდევრობით:

ბრინჯი 2.22. GOST 28147-89 ალგორითმის დაშიფვრის გასაღების სტრუქტურა

2. ცხრილის ჩანაცვლება.გასაღების გამოყენების შემდეგ, ქვე-ბლოკი რ იიყოფა რვა ნაწილად, მაგრამ 4 ბიტად, რომელთაგან თითოეული ინდივიდუალურად იცვლება მისი შემცვლელი ცხრილის (S- ყუთის) შესაბამისად. სულ რვა S ყუთი გამოიყენება - S 0, S, S 2, S 3, S 4, S 5, S 6, S 7. GOST 28147-89 ალგორითმის თითოეული S ყუთი არის ვექტორი (ერთგანზომილებიანი მასივი) ^ ელემენტებით, დანომრილი 0-დან 15-მდე. S- ყუთის მნიშვნელობები არის 4 ბიტიანი რიცხვები; მთელი რიცხვები 0 -დან 15 -მდე.

S- ყუთის ცხრილიდან არის აღებული ელემენტი, რომლის რიგითობის რიცხვი ემთხვევა შემცვლელ შეყვანის მნიშვნელობას.

მაგალითი 2.6.

დაე იყოს შემდეგი ფორმის S- ბლოკი:

ამ S- ყუთის შეყვანისთვის მიენიჭება მნიშვნელობა 0100 2 = 4. S- ყუთის გამომავალი იქნება შემცვლელი ცხრილის მე -4 ელემენტი, ე.ი. 15 = 1111 2 (ელემენტები დანომრილია ნულიდან დაწყებული).

შემცვლელი პირები არ არის განსაზღვრული სტანდარტით, როგორც ეს ხდება, მაგალითად, DES შიფრში. შემცვლელი ცხრილების ცვლადი მნიშვნელობები მნიშვნელოვნად ართულებს ალგორითმის კრიპტოანალიზს. ამავდროულად, ალგორითმის სიმტკიცე მნიშვნელოვნად არის დამოკიდებული მათ სწორ არჩევანზე.

სამწუხაროდ, GOST 28147-89 ალგორითმს აქვს "სუსტი" შემცვლელი ცხრილი, რომლის გამოყენებისას ალგორითმი შეიძლება ადვილად გამოვლინდეს კრიპტოანალიტიკური მეთოდებით. "სუსტებს" შორის არის, მაგალითად, ჩანაცვლების ტრივიალური ცხრილი, რომელშიც შეყვანა არის გამომავალი (ცხრილი 2.16).

ცხრილი 2.16

სუსტი S- ყუთის მაგალითი

ითვლება, რომ შემცვლელი ცხრილების კონკრეტული მნიშვნელობები უნდა იყოს დაცული და წარმოადგენს გრძელვადიან საკვანძო ელემენტს, ე.ი. ისინი მოქმედებენ გაცილებით დიდხანს, ვიდრე ცალკეული გასაღებები. თუმცა, შემცვლელი ცხრილების საიდუმლო მნიშვნელობები არ არის გასაღების ნაწილი და ვერ გაზრდის მის ეფექტურ სიგრძეს.

მართლაც, საიდუმლო შემცვლელი ცხრილების გამოთვლა შესაძლებელია შემდეგი თავდასხმის გამოყენებით, რომელიც შეიძლება გამოყენებულ იქნას პრაქტიკაში:

  • მითითებულია ნულოვანი გასაღები და ხორციელდება "ნულოვანი ვექტორის" ძებნა, ე.ი. მნიშვნელობა = F ( 0), სად F -ალგორითმის მრგვალი გარდაქმნის ფუნქცია. ამას სჭირდება დაახლოებით 32 ტესტირების დაშიფვრის ოპერაცია;
  • ნულოვანი ვექტორის გამოყენებით გამოითვლება შემცვლელი ცხრილების მნიშვნელობები, რომელსაც არაუმეტეს 2 11 ოპერაცია სჭირდება.

თუმცა, მაშინაც კი, თუ დარღვეულია შემცვლელი ცხრილების კონფიდენციალურობა, შიფრის სიძლიერე რჩება უკიდურესად მაღალი და არ ეცემა დასაშვებ ზღვარს ქვემოთ.

ასევე ვარაუდობენ, რომ შემცვლელი ცხრილები საერთოა ყველა დაშიფვრის კვანძისთვის იმავე კრიპტოგრაფიული დაცვის სისტემის შიგნით.

S- ყუთების სტრუქტურის გაუმჯობესება ერთ-ერთი ყველაზე ინტენსიურად შესწავლილი პრობლემაა სიმეტრიული ბლოკის შიფრების სფეროში. ძირითადად, საჭიროა, რომ ნებისმიერი ცვლილება S- ყუთების შეყვანისას შემთხვევითიროგორც ჩანს, იცვლება გამომავალი. ერთი მხრივ, რაც უფრო დიდია S- ყუთები, მით უფრო მდგრადია ალგორითმი ხაზოვანი და დიფერენციალური კრიპტოანალიზის მეთოდების მიმართ. მეორეს მხრივ, დიდი შემცვლელი მაგიდის დიზაინი უფრო რთულია.

თანამედროვე ალგორითმებში, S- ყუთები ჩვეულებრივ არის ვექტორი (ერთგანზომილებიანი მასივი), რომელიც შეიცავს 2 "t-ცოტა ელემენტები. ბლოკის შეყვანა განსაზღვრავს ელემენტის რაოდენობას, რომლის ღირებულება ემსახურება S- ბლოკის გამომავალს.

S- ყუთების დიზაინისთვის არაერთი კრიტერიუმია წამოყენებული. შემცვლელი ცხრილი უნდა აკმაყოფილებდეს:

  • ზვავის მკაცრი კრიტერიუმი;
  • ცოტა დამოუკიდებლობის კრიტერიუმი;
  • არაწრფივი მოთხოვნა შეყვანის მნიშვნელობებიდან.

ბოლო მოთხოვნის შესასრულებლად, შემოთავაზებულია ხაზოვანი კომბინაციის დაზუსტება მებიტი ( მე = 1, ..., ტ)შემცვლელი ცხრილის მნიშვნელობები მოხრილი ფუნქციები(ინგლ, მოხრილი -გადახრა, ამ შემთხვევაში - ხაზოვანი ფუნქციებიდან). მოხრილი ფუნქციები ქმნიან ბულის ფუნქციების სპეციალურ კლასს, რომელიც ხასიათდება არაწრფივობის უმაღლესი კლასით და ზვავის მკაცრი კრიტერიუმის დაცვით.

ზოგიერთ ნამუშევარში, S- ყუთებისთვის, შემოთავაზებულია შემოწმდეს y ბრძანების ზვავის გარანტირებული ეფექტის განხორციელება-როდესაც ერთი შეყვანის ბიტი იცვლება, S- ყუთის გამომავალი ბიტები მაინც იცვლება. Y– დან 2 – დან 5 – მდე ორდენის გარანტირებული ზვავის ეფექტის თვისება იძლევა S- ყუთების საკმარისად კარგ დიფუზიურ მახასიათებლებს ნებისმიერი დაშიფვრის ალგორითმისათვის.

საკმარისად დიდი შემცვლელი მაგიდების შემუშავებისას შეიძლება გამოყენებულ იქნას შემდეგი მიდგომები:

  • შემთხვევითი შერჩევა (მცირე ზომის S- ყუთებისთვის, ეს შეიძლება გამოიწვიოს სუსტი შემცვლელი ცხრილების შექმნა);
  • შემთხვევითი შერჩევა, რასაც მოჰყვება სხვადასხვა კრიტერიუმების შესაბამისობის შემოწმება და სუსტი S- ყუთების უარყოფა;
  • ხელით შერჩევა (ძალიან შრომატევადი დიდი S- ბლოკებისთვის);
  • მათემატიკური მიდგომა, მაგალითად, თაობა მოხრილი ფუნქციების გამოყენებით (ეს მიდგომა გამოიყენება CAST ალგორითმში).

შეიძლება შემოთავაზებული იყოს GOST 28147-89 ალგორითმის ინდივიდუალური S ბლოკების შემუშავების შემდეგი პროცედურა:

  • თითოეული S-box შეიძლება აღწერილი იყოს ოთხი ლოგიკური ფუნქციით, თითოეულ ფუნქციას უნდა ჰქონდეს ოთხი ლოგიკური არგუმენტი;
  • ეს ფუნქციები საკმარისად დახვეწილი უნდა იყოს. ეს სირთულის მოთხოვნა ფორმალურად არ შეიძლება გამოითქვას, თუმცა, როგორც აუცილებელი პირობა, შეიძლება მოთხოვნილი იყოს შესაბამისი ლოგიკური ფუნქციები, დაწერილი მინიმალური ფორმით (ანუ გამოხატვის მინიმალური შესაძლო სიგრძით) ძირითადი ლოგიკური ოპერაციების გამოყენებით, არ უნდა იყოს უფრო მოკლე ვიდრე გარკვეული საჭირო მნიშვნელობა;
  • ინდივიდუალური ფუნქციები, რომლებიც კი გამოიყენება სხვადასხვა შემცვლელ ცხრილებში, საკმარისად განსხვავებული უნდა იყოს ერთმანეთისგან.

2011 წელს შემოთავაზებულ იქნა ახალი შეტევა "რეფლექსური შეხვედრა შუაში", რომელიც ოდნავ ამცირებს GOST 28147-89 წინააღმდეგობას (2256-დან 2225-მდე). ალგორითმის კრიპტოანალიზის საუკეთესო შედეგი 2012 წლის მდგომარეობით ამცირებს მის სიძლიერეს 2,192-მდე, რაც მოითხოვს შედარებით დიდ შიფროტექსტის ზომას და წინასწარ ჩამოყალიბებული მონაცემების მოცულობას. შემოთავაზებული თავდასხმების მიუხედავად, GOST 28147-89 პრაქტიკულად სტაბილური რჩება კომპიუტერული ტექნოლოგიის განვითარების ამჟამინდელ დონეზე.

კოდი "მაგმა" (GOST R 34.12-2015). GOST 28147-89 სტანდარტი მოქმედებს რუსეთში 25 წელზე მეტი ხნის განმავლობაში. ამ დროის განმავლობაში, მან აჩვენა საკმარისი გამძლეობა და კარგი ეფექტურობა პროგრამული უზრუნველყოფისა და აპარატურის განხორციელებაში, მათ შორის დაბალი რესურსების მოწყობილობებში. მიუხედავად იმისა, რომ კრიპტოანალიტიკური შეტევები შემოთავაზებულია, რომლებიც ამცირებენ მის წინააღმდეგობას (საუკეთესოა 2,192 -მდე), ისინი შორს არიან განხორციელებადობისაგან. აქედან გამომდინარე, გადაწყდა GOST 28147-89 ალგორითმის ჩართვა ახლად შემუშავებული სიმეტრიული დაშიფვრის სტანდარტში.

2015 წლის მაღაზიაში ორი ახალი ეროვნული კრიპტოგრაფიული სტანდარტი იქნა მიღებული: GOST R 34.12-2015 „ინფორმაციული ტექნოლოგია. კრიპტოგრაფიული ინფორმაციის დაცვა. ბლოკების შიფრები "და GOST R 34.13-2015" ინფორმაციული ტექნოლოგია. კრიპტოგრაფიული ინფორმაციის დაცვა. ბლოკის შიფრების მუშაობის რეჟიმი “, რომელიც ამოქმედდება 2016 წლის 1 იანვრიდან.

GOST R 34.12-2015 სტანდარტი შეიცავს ორი ბლოკის შიფრის აღწერილობას ბლოკის სიგრძით 128 და 64 ბიტი. GOST 28147-89 შიფრი, ფიქსირებული არაწრფივი შემცვლელი ბლოკებით, შედის ახალ GOST R 34.12-2015-ში, როგორც 64 ბიტიანი შიფრი, სახელწოდებით "მაგმა".

ქვემოთ მოცემულია სტანდარტში დაფიქსირებული შემცვლელი ბლოკები:

სტანდარტში მოცემული S- ყუთების ნაკრები იძლევა საუკეთესო მახასიათებლებს, რომლებიც განსაზღვრავენ კრიპტოალგორითმის წინააღმდეგობას დიფერენციალური და ხაზოვანი კრიპტოანალიზის მიმართ.

სტანდარტიზაციის ტექნიკური კომიტეტის "ინფორმაციის კრიპტოგრაფიული დაცვა" (TC 26) თანახმად, არაწრფივი შემცვლელი ბლოკების დაფიქსირება გახდის GOST 28147-89 ალგორითმს უფრო უნიფიცირებულს და დაეხმარება აღმოფხვრას "სუსტი" არაწრფივი შემცვლელი ბლოკების გამოყენება. გარდა ამისა, შიფრის ყველა გრძელვადიანი პარამეტრის სტანდარტში დაფიქსირება აკმაყოფილებს მიღებულ საერთაშორისო პრაქტიკას. ახალი სტანდარტი GOST R 34.12-2015 ტერმინოლოგიურად და კონცეპტუალურად არის დაკავშირებული საერთაშორისო სტანდარტებთან ISO / IEC 10116 „ინფორმაციული ტექნოლოგიები. უსაფრთხოების მეთოდები. "ბიტიანი ბლოკის შიფრების" ოპერაციული რეჟიმები (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: ბლოკის შიფრები)).

GOST P 34.12-2015 სტანდარტი ასევე შეიცავს ახალ ბლოკ შიფრს ("Grasshopper") ბლოკის ზომა 128 ბიტი. მოსალოდნელია, რომ ეს შიფრი იქნება ძლიერი ყველა ბლოკ -შიფრის თავდასხმის წინააღმდეგ, რომელიც დღეს ცნობილია.

ბლოკის შიფრების მუშაობის რეჟიმი (მარტივი ჩანაცვლება, გამა, გამა გამომავალი უკუკავშირით, გამა შიფროტექსტური უკუკავშირით, მარტივი ჩანაცვლება ჩართულობით და იმიტაციის ჩანართის შემუშავება) შედის ცალკეულ სტანდარტში GOST R 34.13-2015, რომელიც შეესაბამება მიღებული საერთაშორისო პრაქტიკა. ეს რეჟიმები გამოიყენება როგორც მაგმის შიფრისთვის, ასევე ახალი გრაშოფერის შიფრისთვის.

  • ბიტური წრიული მარცხენა გადატანა ხდება 11 ბიტით. გაშიფვრა ხორციელდება იმავე სქემის მიხედვით, მაგრამ განსხვავებული საკვანძო გამოყენების გრაფიკით: გაშიფვრის 1 -დან მე -8 რაუნემდე - პირდაპირი თანმიმდევრობით: გაშიფვრის მე -9 -დან 32 -ე რაუნდამდე - საპირისპირო მიზნით: შედარებით GES 28147-89 – ში DES შიფრს აქვს შემდეგი უპირატესობები: მნიშვნელოვნად გრძელი გასაღები (256 ბიტი 56 – ის წინააღმდეგ DES შიფრისთვის), შეტევა, რომელზედაც საკვანძო ნაკრების უხეში ძალით ჩამოთვლა ამ მომენტში შეუძლებელია; გასაღების გამოყენების მარტივი გრაფიკი, რომელიც ამარტივებს ალგორითმის განხორციელებას და ზრდის გამოთვლების სიჩქარეს. S- ბლოკების დიზაინი GOST 28147-89. აშკარაა, რომ GOST 28147-89 ალგორითმის სქემა ძალიან მარტივია. ეს ნიშნავს, რომ ყველაზე დიდი დაშიფვრის დატვირთვა მოდის შემცვლელ ცხრილებზე. ჩანართების მნიშვნელობები
  • Panasepko S.P. დაშიფვრის ალგორითმები: სპეციალური საცნობარო წიგნი. SPb.: BHV-Peter-burg, 2009 წ.
  • Kara O. Reflection Attacks პროდუქტის შიფრებზე. 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
  • აჩექსევი ე. კ., სმიშლიაევი ს. ვ. GOST 28147-89: "ნუ ჩქარობ მის დასაფლავებას".

ცნობილი მკვლევარი, ალგებრული კრიპტოანალიზის დამფუძნებელი ნიკოლა კურტუა ირწმუნება, რომ GOST ბლოკის შიფრი, რომელიც უახლოეს მომავალში გახდებოდა საერთაშორისო სტანდარტი, ფაქტობრივად გატეხილია და მომავალში ელოდება ბევრ პუბლიკაციას, რომელიც უნდა ავითარებდეს მის იდეებს ამ ალგორითმის არასტაბილურობა.

ქვემოთ მოცემულია მოკლე ნაწყვეტები ამ ნაშრომიდან, რომელიც შეიძლება ჩაითვალოს განგაშის შეტევად საერთაშორისო სტანდარტიზაციის შუაგულში (ავტორი ცნობილი იყო მსგავსი გაზვიადებით AES– სთან დაკავშირებით, მაგრამ მისმა ნაშრომმა მაშინ დიდი თეორიული გავლენა მოახდინა კრიპტოანალიზზე, მაგრამ არ გამოიწვია პრაქტიკული თავდასხმები AES– ზე). მაგრამ, ალბათ, ეს ასევე არის ნამდვილი გაფრთხილება "თვითმფრინავის ჩაძირვის კუდის" ეტაპის დაწყების შესახებ, რომელიც შეიძლება დასრულდეს დაშიფვრის ეროვნული სტანდარტის დაშლით, როგორც ეს იყო SHA-1 ჰეშირების ალგორითმის შემთხვევაში და დე ფაქტო MD5 ჰაშინის ალგორითმი.

GOST 28147-89 იყო სტანდარტიზებული 1989 წელს და გახდა ოფიციალური სტანდარტი კონფიდენციალური ინფორმაციის დაცვისთვის პირველად, მაგრამ შიფრის სპეციფიკა დახურული დარჩა. 1994 წელს სტანდარტი გაშიფრეს, გამოქვეყნდა და ითარგმნა ინგლისურად. AES– ის ანალოგიით (და DES– ისგან განსხვავებით), GOST– ს უფლება აქვს დაიცვას კლასიფიცირებული ინფორმაცია შეზღუდვების გარეშე, შესაბამისად, როგორც ეს მითითებულია რუსულ სტანდარტში. რომ GOST არ არის DES– ის ანალოგი, არამედ 3-DES– ის კონკურენტი სამი დამოუკიდებელი გასაღებით ან AES-256. ცხადია, GOST არის საკმაოდ სერიოზული შიფრი, რომელიც აკმაყოფილებს სამხედრო კრიტერიუმებს, შექმნილია ყველაზე სერიოზული განაცხადების მოლოდინით. GOST S ყუთების სულ მცირე ორი კომპლექტი დადგენილია რუსული ბანკების მიერ გამოყენებული პროგრამების საფუძველზე. ამ ბანკებმა უნდა განახორციელონ საიდუმლო კომუნიკაციები ასობით ფილიალთან და დაიცვან მილიარდობით დოლარი თაღლითური ქურდობისგან.

GOST არის ბლოკის შიფრი მარტივი Feistel სტრუქტურით, ბლოკის ზომა 64 ბიტი, 256 ბიტიანი გასაღები და 32 რაუნდი. თითოეული რაუნდი შეიცავს მოდულის 2 ^ 32 გასაღების დამატებას, რვა 4 ბიტიანი S- ყუთის კომპლექტს და მარტივ 11 ბიტიან ციკლურ ცვლას. GOST– ის მახასიათებელია S– ბლოკების ფარულად შენახვის შესაძლებლობა, რომელიც შეიძლება წარმოდგენილი იყოს როგორც მეორე გასაღები, რომელიც ზრდის ეფექტური გასაღების მასალას 610 ბიტამდე. S- ყუთების ერთი ნაკრები გამოქვეყნდა 1994 წელს, როგორც GOST-R 34.11-94 ჰეშ-ფუნქციის სპეციფიკაციის ნაწილი და, როგორც შნაიერი წერდა, გამოიყენებოდა რუსეთის ფედერაციის ცენტრალური ბანკის მიერ. ის ასევე შედის RFC4357 სტანდარტში "id-GostR3411-94-CryptoProParamSet" ნაწილში. შნაიერის წიგნის ბოლოს იყო წყაროს კოდის შეცდომა (S-box შეკვეთით). მშობლიური რუსული წარმოშობის ყველაზე ზუსტი მითითება შეიძლება ნახოთ OpenSSL ბიბლიოთეკაში. თუ საიდუმლო S- ყუთები გამოიყენება სადმე, მაშინ მათი ამოღება შესაძლებელია პროგრამული უზრუნველყოფის დანერგვიდან და მიკროცირკულაციიდან, ფაქტობრივად, გამოქვეყნდა შესაბამისი ნამუშევრები.

GOST არის სერიოზული კონკურენტი

გასაღების ძალიან დიდი ზომის გარდა, GOST– ს აქვს მნიშვნელოვნად დაბალი ღირებულება AES– თან და სხვა მსგავსი დაშიფვრის სისტემებთან შედარებით. სინამდვილეში, ღირს ბევრად ნაკლები ვიდრე AES, რაც მოითხოვს ოთხჯერ მეტ ტექნიკურ ლოგიკურ კარიბჭეს უსაფრთხოების გაცილებით დაბალი დონისთვის.

გასაკვირი არ არის, რომ GOST გახდა ინტერნეტ სტანდარტი, კერძოდ, ის შედის ბევრ კრიპტო ბიბლიოთეკაში, როგორიცაა OpenSSL და Crypto ++ და უფრო პოპულარული ხდება მისი წარმოშობის ქვეყნის გარეთ. 2010 წელს, GOST გამოცხადდა ISO სტანდარტიზაციისთვის, როგორც მსოფლიო დაშიფვრის სტანდარტი. ძალიან მცირე რაოდენობის ალგორითმებმა შეძლეს საერთაშორისო სტანდარტად ქცევა. ISO / IEC 18033-3: 2010 აღწერს შემდეგ ალგორითმებს: ოთხი 64 ბიტიანი შიფრი-TDEA, MISTY1, CAST-128, HIGHT-და სამი 128-ბიტიანი შიფრი-AES, Camellia, SEED. GOST შემოთავაზებულია დაემატოს იმავე ISO / IEC 18033-3 სტანდარტს.

პირველად სამრეწველო სტანდარტიზაციის ისტორიაში, ჩვენ საქმე გვაქვს ასეთ კონკურენტულ ალგორითმთან ღირებულებისა და უსაფრთხოების დონის ოპტიმალურობის თვალსაზრისით. GOST– ს აქვს 20 წლიანი კრიპტოანალიზის მცდელობა და ბოლო დრომდე მისი სამხედრო დონის უსაფრთხოება კითხვის ნიშნის ქვეშ არ დადგა.

როგორც ავტორმა ახლახანს შეიტყო პირადი მიმოწერისგან, ქვეყნების უმეტესობა დაუპირისპირდა GOST- ს სინგაპურში ISO კენჭისყრისას, მაგრამ ამ კენჭისყრის შედეგები კვლავ განიხილება ISO SC27 პლენარულ შეხვედრაზე, ამიტომ GOST ჯერ კიდევ სტანდარტიზაციის პროცესშია ამ ნაწარმოების გამოქვეყნება.

ექსპერტების მოსაზრებები GOST– ის შესახებ

GOST– ის შესახებ არსებული ინფორმაციადან და ლიტერატურიდან არაფერი იძლევა იმის ვარაუდს, რომ შიფრი შეიძლება იყოს დაუცველი. პირიქით, დიდი გასაღების ზომა და დიდი რაოდენობის რაუნდი GOST, ერთი შეხედვით, შესაფერისია ათწლეულების განმავლობაში.

ვინც იცნობს მურის კანონს, ხვდება, რომ თეორიულად 256 ბიტიანი გასაღებები დაცული იქნება მინიმუმ 200 წლის განმავლობაში. GOST ფართოდ არის შესწავლილი კრიპტოგრაფიის სფეროში წამყვანი ექსპერტების მიერ, რომლებიც ცნობილია ბლოკ -შიფრის ანალიზის სფეროში, როგორიცაა შნაიერი, ბიირუკოვი, დანკელმანი, ვაგნერი, ბევრი ავსტრალიელი, იაპონელი და რუსი მეცნიერი, ISO– ს კრიპტოგრაფიის ექსპერტები და ყველა მკვლევარი გამოხატა, რომ ყველაფერი ასე გამოიყურება, რომ ის შეიძლება იყოს ან უნდა იყოს უსაფრთხო. მიუხედავად იმისა, რომ მოსაზრებას მიაღწია ფართო გაგებამ, რომ GOST- ის სტრუქტურა უკიდურესად სუსტია, მაგალითად, DES– თან შედარებით, კერძოდ, დიფუზია არც ისე კარგია, თუმცა, ეს ყოველთვის განპირობებული იყო იმით, რომ ეს უნდა ანაზღაურებულიყო რაუნდების დიდი რაოდენობა (32), ასევე მოდულის დამატებით გათვალისწინებული დამატებითი არაწრფივობა და დიფუზია.

ბიირუკოვმა და ვაგნერმა დაწერა: "დიდი რაოდენობის რაუნდი (32) და კარგად შესწავლილი ფეისტელის კონსტრუქცია, შერწყმულია შენონის თანმიმდევრული პერმუტაციებით, იძლევა მყარ საფუძველს GOST უსაფრთხოებისათვის." ამავე ნაშრომში ვკითხულობთ: "დროის და ძალისხმევის მნიშვნელოვანი ინვესტიციის შემდეგ, ღია ლიტერატურაში სტანდარტის კრიპტოანალიზში პროგრესი არ მიღწეულა". ამრიგად, არ ყოფილა მნიშვნელოვანი თავდასხმები, რომლებიც დაუშვებდა გაშიფვრას ან გასაღების აღდგენას რეალისტურ სცენარში, სადაც GOST გამოიყენება დაშიფვრისას მრავალი განსხვავებული შემთხვევითი გასაღებით. ამის საპირისპიროდ, არსებობს მრავალი ნაშრომი, რომელიც ცნობილია GOST– ის სუსტ კლავიშებზე თავდასხმებზე, თავდასხმებზე ასოცირებულ გასაღებებთან, თავდასხმებზე საიდუმლო S- ყუთების აღდგენაზე. Crypto 2008– ზე წარმოდგენილი იყო ამ შიფრის საფუძველზე ჰაშის ფუნქციის გატეხვა. ყველა თავდასხმისას თავდამსხმელს აქვს თავისუფლების მნიშვნელოვნად მაღალი დონე, ვიდრე მას ჩვეულებრივ მისცემდნენ ნებას. დაშიფვრის ტრადიციულ შემთხვევებში შემთხვევით შერჩეული გასაღებების გამოყენებით, ჯერჯერობით არ იქნა ნაპოვნი სერიოზული კრიპტოგრაფიული შეტევები GOST– ზე, რაც 2010 წელს გამოიხატა საბოლოო ფრაზით: „ბოლო 20 წლის განმავლობაში კრიპტოანალიტიკოსების მნიშვნელოვანი ძალისხმევის მიუხედავად, GOST ჯერ არ ყოფილა გატეხილი "(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).

ხაზოვანი და დიფერენციალური ანალიზი GOST

შნაიერის ცნობილ წიგნში ვკითხულობთ: "დიფერენციალური და ხაზოვანი კრიპტოანალიზის საწინააღმდეგოდ, GOST ალბათ უფრო გამძლეა ვიდრე DES." GOST– ის უსაფრთხოების ძირითადი შეფასება 2000 წელს გაბიდულინმა და სხვებმა მისცეს. მათი შედეგები ძალიან შთამბეჭდავია: უსაფრთხოების 2 ^ 256 დონით, ხუთი რაუნდი საკმარისია GOST– ის დასაცავად ხაზოვანი კრიპტოანალიზისგან. უფრო მეტიც, S- ყუთების იდენტურით შეცვლისას და ერთადერთი არაწრფივი შიფრის ოპერაციისას - დამატება mod 2 ^ 32 - შიფრი კვლავ გამძლეა წრფივი კრიპტოანალიზისადმი 32 – დან 6 რაუნდის შემდეგ. უსაფრთხოების 2 ^ 128 დონეზე, მკვლევარებმა (ვიტალი ვ. შორინი, ვადიმ ვ. იელეზნიაკოვი და ერნსტ მ. გაბიდულინი: რუსული GOST- ის წრფივი და დიფერენციალური კრიპტოანალიზი, პრეპრინტი წარდგენილი Elsevier Preprint, 2001 წლის 4 აპრილი) ივარაუდეს საკმარისი გამძლეობა 7 რაუნდში რა მათივე თქმით, GOST- ის დარღვევა ხუთ რაუნდზე მეტისმეტად "ძალიან რთულია". უფრო მეტიც, ორმა იაპონელმა მკვლევარმა აჩვენა, რომ კლასიკური პირდაპირი დიფერენციალური შეტევა ერთი დიფერენციალური მახასიათებლით აქვს უაღრესად დაბალი ალბათობა დიდი რაოდენობის რაუნდის გავლისას. შეზღუდული რაოდენობის რაუნდებისთვის საკმარისად "კარგი" გამეორებითი დიფერენციალური მახასიათებლის შესწავლის ფაქტზე (რომელსაც თავისთავად აქვს ალბათობა, რომ არაუმეტეს 2-11.4 გაიაროს რაუნდში), შესაფერისი გასაღებების ნაკრების მნიშვნელობა ნახევარზე ნაკლებია. რა სრული მრგვალი GOST– ისთვის, ასეთი შეტევა ერთი მახასიათებლით იმუშავებს მხოლოდ 2-62 – ის რიგის გასაღებების უმნიშვნელო ნაწილთან ერთად (და თუნდაც ამ მცირე ნაწილში მას ექნება ალბათობა, რომ გაიაროს არაუმეტეს 2-360 ).

უფრო დახვეწილი შეტევები მოიცავს მრავალ დიფერენციალს, რომლებიც მიჰყვება გარკვეულ შაბლონებს, როგორიცაა ცალკეული S- ყუთების გამოყენება, რომელთაც აქვთ ნულოვანი დიფერენციალები, ხოლო სხვა ბიტებს აქვთ ნულოვანი. ჩვენ ვსაუბრობთ დისკრიმინაციულ თავდასხმებზე GOST– ის ცუდი დიფუზიური თვისებების საფუძველზე. ამ თავდასხმებიდან საუკეთესო მუშაობს GOST– ის 17 რაუნდის წინააღმდეგ, დამოკიდებულია გასაღებზე და აქვს უკიდურესად სუსტი დისკრიმინატორი შემთხვევითი მონაცემებიდან თავად გამომავალში, ასე რომ ის როგორმე შეიძლება გამოყენებულ იქნას გასაღების შესახებ ინფორმაციის მისაღებად.

გადაიტანეთ და გადაიტანეთ თავდასხმები

ბიირუკოვისა და ვაგნერის თანახმად, GOST სტრუქტურა, რომელიც მოიცავს ბოლო რაუნდებში ქვეკეტების საპირისპირო წესრიგს, მას მდგრადს ხდის მოცურების თავდასხმებისადმი (ე.წ. "სლაიდების შეტევები"). თუმცა, შიფრში დიდი მსგავსების არსებობის გამო, ეს საშუალებას იძლევა ძირითადი ინვერსიული შეტევები ფიქსირებული წერტილების კომბინაციებზე და "ასახვის" თვისებებზე (ე.წ. "ამრეკლავი თავდასხმები") გარკვეული სუსტი გასაღებებისათვის. ამ თავდასხმის სირთულე არის 2 ^ 192 და 2 ^ 32 შესაბამისი უბრალო ტექსტი.

უახლესი შედეგები

ახალი თავდასხმები ასევე ასახავს და ფაქტობრივად დაარღვია GOST, რომელიც წარმოდგენილი იყო FSE 2011 კონფერენციაზე. ეს თავდასხმები ასევე დამოუკიდებლად აღმოაჩინეს ამ ნაშრომის ავტორმა. თავდასხმისთვის საჭიროა 2 ^ 132 ბაიტი მეხსიერება, რაც რეალურად უარესია, ვიდრე ნელი შეტევები მეხსიერების ნაკლები მოთხოვნებით.

მრავალი ახალი მსგავსება თავდასხმა მუშაობს ყველა GOST კლავიშზე და საშუალებას გაძლევთ დაარღვიოთ სრული მრგვალი GOST 256 ბიტიანი გასაღებით, არა მხოლოდ სუსტი კლავიშებისთვის, როგორც ეს ადრე იყო. ყველა ეს თავდასხმა მოითხოვს მნიშვნელოვნად ნაკლებ მეხსიერებას და მნიშვნელოვნად სწრაფად.

ეს ახალი თავდასხმები შეიძლება ჩაითვალოს ბლოკის შიფრების კრიპტოანალიზის ახალი ზოგადი პარადიგმის მაგალითებად, სახელწოდებით "ალგებრული სირთულის შემცირება", ამ თავდასხმების განზოგადებით შეტევის მრავალ განსაკუთრებულ შემთხვევებზე ცნობილი ფიქსირებული წერტილებით, სლაიდებით, ჩართულობით და ციკლით. მნიშვნელოვანია, რომ ყველა ამ თავდასხმის ოჯახს შორის არის ის, რაც იძლევა GOST– ის კრიპტოანალიზს ყოველგვარი ასახვის გარეშე და ყოველგვარი სიმეტრიული წერტილების გარეშე, რომელიც გამოჩნდება გამოთვლების დროს. ერთი მაგალითია მარტივი GOST ჰაკერების შეტევა ამ ნაწარმოებში ასახვის გარეშე.

ალგებრული კრიპტოანალიზი და დაბალი მონაცემთა სირთულის შეტევები შემცირებული რაუნდების შიფრებზე

ალგებრული შეტევები ბლოკისა და ნაკადის შიფრებზე შეიძლება წარმოდგენილი იყოს როგორც ბულის ალგებრული განტოლებების დიდი სისტემის ამოხსნის პრობლემა, რომელიც მიჰყვება კონკრეტული კრიპტოგრაფიული სქემის გეომეტრიას და სტრუქტურას. იდეა შენონს უბრუნდება. პრაქტიკაში, იგი წარმოდგენილი იყო DES– ისთვის (პირველად წარმოადგინა ამ ნაწარმოების ავტორმა), როგორც კოდირების ფორმალური მეთოდი და შეუძლია 6 რაუნდის გატეხვა მხოლოდ ერთ ცნობილ უბრალო ტექსტში. განტოლების მანიპულირება ემყარება XL ალგორითმებს, გრიბნერის ბაზებს, ElimLin მეთოდს, SAT ამომხსნელებს.

პრაქტიკაში, ალგებრული შეტევები განხორციელდა ბლოკების შიფრების ძალიან მცირე რაოდენობის წინააღმდეგ, მაგრამ უკვე გამოიწვია ნაკადის შიფრების გატეხვა და ასევე წარმატებები მიკროტექნიკის ულტრა მსუბუქი შიფრების გატეხვაში. მეხსიერების ზომისა და ხარჯების გამოთვლის სირთულეების გამო, ისინი გაერთიანებულია სხვა შეტევებთან.

როგორ გავტეხოთ GOST?

ალგებრული თავდასხმა სრულფასოვან GOST– ზე უფრო დეტალურად არის წარმოდგენილი ამ პუბლიკაციაში. წინა ნაშრომში, ავტორმა უკვე დაასახელა 20 ალგებრული შეტევა GOST– ზე და ელოდება მათ დიდ რაოდენობას უახლოეს მომავალში. ამ ნაშრომში შემოთავაზებული თავდასხმა არ არის საუკეთესო მათ შორის, მაგრამ ის ხსნის მარტივ (ყოველ შემთხვევაში კრიპტოგრაფის გაგებისათვის) გზას შემდგომი განვითარებისთვის, რათა შეიქმნას GOST- ის გატეხვის კონკრეტული მეთოდოლოგია.

პრაქტიკული შედეგი ჯერ კიდევ მოკრძალებულია: 2 ^ 64 ცნობილი უბრალო ტექსტი და 2 ^ 64 მეხსიერება უბრალო ტექსტის / შიფტექსტური წყვილების შესანახად შესაძლებელს ხდის GOST 2 ^ 8 -ის დარღვევას უფრო სწრაფად, ვიდრე უბრალო უხეში ძალა. კრიპტოანალიზის თვალსაზრისით, ეს სავსებით სამართლიანს ხდის იმას, რომ "GOST გატეხილია".

დასკვნები

GOST შექმნილია იმისთვის, რომ უზრუნველყოს უსაფრთხოების დონის სამხედრო დონე 200 წლის განმავლობაში. წამყვანი ექსპერტების უმეტესობა, ვინც შეისწავლა GOST დათანხმდა, რომ "მიუხედავად 20 წელზე მეტი ხნის კრიპტოანალიტიკური ძალისხმევისა, GOST ჯერ კიდევ არ არის გატეხილი". 2010 წელს GOST– მა დაიკავა ISO 18033, როგორც დაშიფვრის გლობალური სტანდარტი.

ალგებრული კრიპტოანალიზის შესახებ იდეების საფუძველი 60 წელზე მეტია თარიღდება. მაგრამ მხოლოდ ბოლო 10 წლის განმავლობაში შემუშავდა ეფექტური პროგრამული ინსტრუმენტები მრავალი NP სრული პრობლემის (ნაწილობრივი) გადაწყვეტისათვის. ნაკადის რამდენიმე კოდი გატეხილია. ამ მეთოდით გატეხილია მხოლოდ ერთი ბლოკის კოდი - სუსტი KeeLoq. ამ ნაწარმოებში ავტორი არღვევს მნიშვნელოვან, რეალურად გამოყენებულ GOST შიფრს. ის აღნიშნავს, რომ ეს არის პირველი შემთხვევა ისტორიაში, როდესაც სტანდარტიზებული სახელმწიფო შიფრი დაირღვა ალგებრული კრიპტოანალიზის შედეგად.

მარტივი შეტევა "MITM ასახვით" GOST– ზე უკვე წარმოდგენილი იყო FSE 2011 კონფერენციაზე. ამ სტატიაში განხილულ სამუშაოში, სხვა თავდასხმა წარმოდგენილია მხოლოდ იმის საილუსტრაციოდ, რომ ფაქტია რამდენი თავდასხმა უკვე გამოჩნდა GOST– ზე, რომელთაგან ბევრი უფრო სწრაფია და ალგებრული შეტევა მოითხოვს გაცილებით ნაკლებ მეხსიერებას და უხსნის თითქმის ამოუწურავ სივრცეს შესაძლებლობებს მოწინააღმდეგეს სხვადასხვაგვარად შეუტიოს შიფრს. ასევე ამ ნაშრომში ნაჩვენებია, რომ არ არის საჭირო ასახვის თვისების გამოყენება ჰაკერებისათვის.

ავტორი ირწმუნება, რომ აშკარაა, რომ GOST– ს აქვს სერიოზული ხარვეზები და ახლა არ იძლევა ISO– ს მიერ მოთხოვნილი გამძლეობის დონეს. მრავალი შეტევა GOST– ზე წარმოდგენილია ალგებრული სირთულის შემცირების პარადიგმის დადასტურების ფარგლებში.

დაბოლოს, მკვლევარი განსაკუთრებით აღნიშნავს ზოგიერთ ფაქტს, რომელიც ჯერ არ არის ხელმისაწვდომი მკითხველისთვის, მაგრამ ცნობილია მკვლევარისთვის, რაც მნიშვნელოვანია ISO სტანდარტიზაციის პროცესში. ეს თავდასხმა არ არის მხოლოდ "სერტიფიცირების" შეტევა GOST– ზე, რომელიც უფრო სწრაფია ვიდრე უხეში ძალის უხეში ძალის შეტევა. სინამდვილეში, GOST– ის სტანდარტიზაცია ახლა უკიდურესად საშიში და უპასუხისმგებლო იქნება. ეს იმიტომ ხდება, რომ ზოგიერთი თავდასხმა პრაქტიკულად შესაძლებელია. პრაქტიკაში, ზოგიერთი GOST გასაღების გაშიფვრაც შესაძლებელია, იქნება ეს სუსტი გასაღებები თუ გასაღებები GOST– ის კერძო რეალური პროგრამებიდან. წინა ნაშრომში ავტორი დეტალურად განიხილავს პრაქტიკული თავდასხმების შესაძლებლობის შემთხვევებს. აღსანიშნავია, რომ "ეს არის პირველი შემთხვევა ისტორიაში, როდესაც სერიოზული სტანდარტიზებული ბლოკ-შიფრი, რომელიც შექმნილია სამხედრო დონის საიდუმლოებების დასაცავად და შექმნილია მთავრობის, მსხვილი ბანკებისა და სხვა ორგანიზაციების სახელმწიფო საიდუმლოების დაცვის მიზნით, მათემატიკური თავდასხმის შედეგად".