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

  • სახელმძღვანელო

გამარჯობა %username%!
ბევრმა იცის, რომ DES ალგორითმი დიდი ხანია ითვლებოდა ნაგულისხმევ სტანდარტად სიმეტრიული დაშიფვრის სფეროში. პირველი წარმატებული თავდასხმა ამ დაუოკებელ ალგორითმზე გამოქვეყნდა 1993 წელს, სტანდარტად მიღებიდან 16 წლის შემდეგ. მეთოდი, რომელსაც ავტორმა უწოდა ხაზოვანი კრიპტოანალიზი, 2 47 უბრალო/შიფრული ტექსტის წყვილის თანდასწრებით, საშუალებას გაძლევთ გახსნათ DES შიფრის საიდუმლო გასაღები 2 43 ოპერაციაში.
ჭრილის ქვემოთ შევეცდები მოკლედ გამოვყო ამ თავდასხმის ძირითადი პუნქტები.

ხაზოვანი კრიპტოანალიზი

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

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

უპირველეს ყოვლისა, თავდამსხმელი იკვლევს შიფრს და აღმოაჩენს ე.წ სტატისტიკური ანალოგი, ე.ი. შემდეგი ფორმის განტოლება, რომელიც მოქმედებს ალბათობით P ≠ 1/2 თვითნებური საჯარო/პირადი ტექსტური წყვილისა და ფიქსირებული გასაღებისთვის:
P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
სადაც P n, C n, K n არის ტექსტის, შიფრული ტექსტისა და გასაღების n-ე ბიტი.
ასეთი განტოლების აღმოჩენის შემდეგ, თავდამსხმელს შეუძლია აღადგინოს 1 ბიტი ძირითადი ინფორმაცია შემდეგი ალგორითმის გამოყენებით

ალგორითმი 1
ვთქვათ T არის ტექსტების რაოდენობა, რომლებისთვისაც (1) განტოლების მარცხენა მხარე 0-ის ტოლია, მაშინ
თუ T>N/2, სადაც N არის ცნობილი ღია ტექსტების რაოდენობა.
დავუშვათ, რომ K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (როდესაც P>1/2) ან 1 (როდესაც P<1/2).
წინააღმდეგ შემთხვევაში
დავუშვათ, რომ K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (როდესაც P>1/2) ან 0 (როდესაც P<1/2).
აშკარაა, რომ ალგორითმის წარმატება პირდაპირ დამოკიდებულია |P-1/2|-ის მნიშვნელობაზე და ხელმისაწვდომი ღია/დახურული ტექსტური წყვილების რაოდენობაზე N. რაც უფრო მეტია ალბათობა P ტოლობის (1) 1/2-ისგან, მით ნაკლებია N წმინდა ტექსტების რაოდენობა შეტევისთვის.

თავდასხმის წარმატებისთვის ორი პრობლემაა გადასაწყვეტი:

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

DES-ის აღწერა

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

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

როგორც ნახატიდან ჩანს, ტექსტის დაშიფვრისას ხორციელდება შემდეგი ოპერაციები:

  1. საწყისი ბიტის პერმუტაცია. ამ ეტაპზე შეყვანის ბლოკის ბიტები ირევა გარკვეული თანმიმდევრობით.
  2. ამის შემდეგ, შერეული ბიტები იყოფა ორ ნაწილად, რომლებიც მიეწოდება Feistel ფუნქციის შეყვანას. სტანდარტული DES-ისთვის Feistel ქსელი მოიცავს 16 რაუნდს, მაგრამ არსებობს ალგორითმის სხვა ვარიანტები.
  3. ტრანსფორმაციის ბოლო რაუნდში მიღებული ორი ბლოკი გაერთიანებულია და მიღებულ ბლოკზე შესრულებულია სხვა პერმუტაცია.

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

მოდით შევხედოთ ამ ეტაპზე შესრულებულ ოპერაციებს:

  1. შეყვანის ბლოკი გადადის გაფართოების E ფუნქციის მეშვეობით, რომელიც გარდაქმნის 32-ბიტიან ბლოკს 48-ბიტიან ბლოკად.
  2. მიღებულ ბლოკს ემატება მრგვალი გასაღები K i.
  3. წინა ნაბიჯის შედეგი დაყოფილია 8 ბლოკად 6 ბიტიანი თითოეული.
  4. თითოეული მიღებული ბლოკი B i გადადის ჩანაცვლების ფუნქცია S-Box i , რომელიც ცვლის 6-ბიტიან მიმდევრობას 4-ბიტიანი ბლოკით.
  5. შედეგად მიღებული 32-ბიტიანი ბლოკი გადადის P პერმუტაციაში და ბრუნდება f ფუნქციის შედეგად.

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

S ბლოკის ანალიზი

თითოეული S-ბოქსი იღებს 6-ბიტიან თანმიმდევრობას, როგორც შეყვანას და ყოველი ასეთი თანმიმდევრობისთვის ბრუნდება ფიქსირებული 4-ბიტიანი მნიშვნელობა. იმათ. სულ არის 64 შეყვანის და გამომავალი ვარიანტი. ჩვენი ამოცანაა ვაჩვენოთ კავშირი S ბლოკების შეყვანის და გამომავალი მონაცემების შორის. მაგალითად, DES შიფრის მესამე S-ყუთისთვის, შეყვანის მიმდევრობის მე-3 ბიტი უდრის გამომავალი მიმდევრობის მე-3 ბიტს 64 შემთხვევიდან 38-ში, ამიტომ, ჩვენ ვიპოვეთ შემდეგი სტატისტიკური ანალოგი მესამე S-ისთვის - ყუთი:
S 3 (x) = x, რომელიც სრულდება ალბათობით P=38/64.
განტოლების ორივე მხარე წარმოადგენს 1 ბიტ ინფორმაციას. მაშასადამე, თუ მარცხენა და მარჯვენა მხარეები ერთმანეთისგან დამოუკიდებელი იქნებოდა, განტოლება უნდა დაკმაყოფილდეს 1/2 ალბათობით. ამრიგად, ჩვენ ახლახან ვაჩვენეთ კავშირი DES ალგორითმის მე-3 S-ბოქსის შეყვანასა და გამომავალს შორის.

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

S-ყუთისთვის S a , 1 ≤ α ≤ 63 და 1 ≤ β ≤ 15, მნიშვნელობა NS a (α, β) აღწერს რამდენჯერ არის 64 შესაძლო XOR შეყვანის ბიტიდან S a ზედმიყენებული α ბიტებზე. XOR გამომავალი ბიტები, რომლებიც ზედმიყენებულია α ბიტებზე β, ანუ:
სადაც სიმბოლო არის ლოგიკური და.
α და β მნიშვნელობები, რომლებისთვისაც NS a (α, β) ყველაზე მეტად განსხვავდება 32-ისგან, აღწერს S-box S a-ს ყველაზე ეფექტურ სტატისტიკურ ანალოგს.

ყველაზე ეფექტური ანალოგი ნაპოვნი იქნა DES შიფრის მე-5 S- ყუთში α = 16 და β = 15 NS 5 (16, 15) = 12. ეს ნიშნავს, რომ მოქმედებს შემდეგი განტოლება: Z=Y ⊕ Y ⊕ Y ⊕ Y, სადაც Z არის S-box-ის შეყვანის თანმიმდევრობა და Y არის გამომავალი თანმიმდევრობა.
ან იმის გათვალისწინებით, რომ DES ალგორითმში S-box-ში შესვლამდე მონაცემებს ემატება მოდული 2 მრგვალი გასაღებით, ე.ი. Z = X ⊕ K ვიღებთ
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, სადაც X და Y არის f ფუნქციის შემავალი და გამომავალი მონაცემები პერმუტაციების გათვალისწინების გარეშე.
მიღებული განტოლება შესრულებულია DES ალგორითმის ყველა რაუნდზე ერთი და იგივე ალბათობით P=12/64.
შემდეგი ცხრილი აჩვენებს ეფექტურთა სიას, ე.ი. ყველაზე დიდი გადახრის მქონე P=1/2-დან, სტატისტიკური ანალოგები DES ალგორითმის თითოეული s-ბლოკისთვის.

სტატისტიკური ანალოგების აგება DES-ის მრავალი რაუნდისთვის

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

მოდით გამოვიყენოთ მე-5 s-ბოქსის ეფექტური სტატისტიკური ანალოგი X(2) მნიშვნელობის გარკვეული ბიტების გამოსათვლელად.
ჩვენ ვიცით, რომ 12/64 ალბათობით ტოლობა მოქმედებს f-ფუნქციაში X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K,სადაც X არის მე-5 S-ბოქსის მეორე შეყვანის ბიტი, ის არსებითად არის 26-ე ბიტი მიმდევრობისა, რომელიც მიღებულია შეყვანის ბიტების გაფართოების შემდეგ. გაფართოების ფუნქციის ანალიზით შეგვიძლია დავადგინოთ, რომ 26-ე ბიტი ჩანაცვლებულია X(1) მიმდევრობის მე-17 ბიტით.
ანალოგიურად, Y,..., Y არსებითად არის მე-17, მე-18, მე-19 და მე-20 ბიტი მიმდევრობის, რომელიც მიღებულია პერმუტაციამდე P. პერმუტაციის P შემოწმებისას აღმოვაჩენთ, რომ Y,..., Y ბიტები რეალურად არის Y ბიტები. (1), Y (1), Y (1), Y (1).
განტოლებებში ჩართული საკვანძო ბიტი K არის პირველი რაუნდის ქვეკლავიშ K1-ის 26-ე ბიტი, შემდეგ კი სტატისტიკური ანალოგი იღებს შემდეგ ფორმას:
X(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y1 ⊕ Y(1) = K1.
აქედან გამომდინარე, X(1) ⊕ K1 = Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)(2) ალბათობით P=12/64.
იცის Y(1) თანმიმდევრობის 3, 8, 14, 25 ბიტი, შეგიძლიათ იპოვოთ X(2) თანმიმდევრობის 3, 8, 14, 25 ბიტი:
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)ან განტოლების (2) გათვალისწინებით
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 (3) 12/64 ალბათობით.

მოდი ვიპოვოთ მსგავსი გამონათქვამი ბოლო რაუნდის გამოყენებით. ამჯერად გვაქვს განტოლება
X(3) ⊕ K3 = Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3).
იმიტომ რომ
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3)
ჩვენ ამას ვიღებთ
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3(4) 12/64 ალბათობით.

(3) და (4) განტოლებების მარჯვენა გვერდების გატოლებით ვიღებთ
CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1ალბათობით (12/64) 2 +(1-12/64) 2.
იმის გათვალისწინებით, რომ X(1) = PR და X(3) = CR ვიღებთ სტატისტიკურ ანალოგს
СL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
რომელიც შესრულებულია ალბათობით (12/64) 2 + (1-12/64) 2 =0,7.
ზემოთ აღწერილი სტატისტიკური ანალოგი შეიძლება წარმოდგენილი იყოს გრაფიკულად შემდეგნაირად (სურათზე ბიტები დანომრილია მარჯვნიდან მარცხნივ და იწყება ნულიდან):

განტოლების მარცხენა მხარის ყველა ბიტი ცნობილია შემტევისთვის, ამიტომ მას შეუძლია გამოიყენოს ალგორითმი 1 და გაარკვიოს K1 ⊕ K3 მნიშვნელობა. მოდით ვაჩვენოთ, თუ როგორ შეგიძლიათ ამ სტატისტიკური ანალოგის გამოყენებით გახსნათ არა 1, არამედ 12 ბიტი დაშიფვრის გასაღები K.

ცნობილი Plaintext Attack DES-ზე

აქ არის გზა, რომ გააფართოვოთ შეტევა და მიიღოთ პირველი რაუნდის 6 ბიტი ერთდროულად.
განტოლების (5) შედგენისას გავითვალისწინეთ ის ფაქტი, რომ არ ვიცით F1(PR, K1) მნიშვნელობა. ამიტომ, ჩვენ გამოვიყენეთ მისი სტატისტიკური ანალოგი K1 ⊕ PR.
მოდით დავაბრუნოთ მნიშვნელობა F1(PR, K1) გამოთქმის ნაცვლად K1 ⊕ PR და მივიღოთ შემდეგი განტოლება:
СL ⊕ CR ⊕ PL ⊕ F1(PR, K1) = K3 (6) , რომელიც შესრულდება 12/64 ალბათობით. ალბათობა შეიცვალა მას შემდეგ, რაც ჩვენ დავტოვეთ მხოლოდ სტატისტიკური ანალოგი მესამე რაუნდიდან, ყველა სხვა მნიშვნელობა ფიქსირდება.

ზემოთ უკვე განვსაზღვრეთ, რომ F1(PR, K1) მნიშვნელობაზე გავლენას ახდენს მე-5 S-ბოქსის შეყვანის ბიტები, კერძოდ, საკვანძო ბიტები K1 და PR ბლოკის ბიტები. მოდით ვაჩვენოთ, თუ როგორ, მხოლოდ ღია/დახურული ტექსტების კომპლექტით, შეგიძლიათ აღადგინოთ K1 მნიშვნელობა. ამისათვის ჩვენ გამოვიყენებთ ალგორითმს 2.

ალგორითმი 2
მოდით N იყოს შეტევამდე ცნობილი ღია/დახურული ტექსტური წყვილების რაოდენობა. შემდეგ გასაღების გასახსნელად საჭიროა შემდეგი ნაბიჯების გადადგმა.
ამისთვის (i=0; i<64; i++) do
{
For(j=0; j {
if(СL j ⊕ CR j ⊕ PL j ⊕ F1(PR j , i)=0) მაშინ
T i =T i +1
}
}
როგორც K1 სავარაუდო თანმიმდევრობა, i-ის მნიშვნელობა მიიღება ისე, რომ გამოთქმა |T i -N/2| აქვს მაქსიმალური მნიშვნელობა.

ცნობილი ჩვეულებრივი ტექსტების საკმარისი რაოდენობის გათვალისწინებით, ალგორითმს ექნება დიდი ალბათობა, დააბრუნოს K1 პირველი რაუნდის ქვეკლავიშის ექვსი ბიტის სწორი მნიშვნელობა. ეს აიხსნება იმით, რომ თუ i ცვლადი არ არის K1-ის ტოლი, მაშინ F1 (PR j, K) ფუნქციის მნიშვნელობა იქნება შემთხვევითი და განტოლებების რაოდენობა i-ს ისეთი მნიშვნელობისთვის, რომლის მარცხენა მხარე არის ნულის ტოლი იქნება N/2. თუ ქვეგასაღები სწორად გამოიცნობთ, მარცხენა მხარე უდრის ფიქსირებულ ბიტს K3, ალბათობით 12/64. იმათ. იქნება მნიშვნელოვანი გადახრა N/2-დან.

6 ბიტიანი K1 ქვეკლავის მიღების შემდეგ, შეგიძლიათ ანალოგიურად გახსნათ 6 ბიტი ქვეკლავი K3. ყველაფერი რაც თქვენ უნდა გააკეთოთ არის შეცვალოთ C P-ით და K1 K3-ით (6) განტოლებაში:
PL ⊕ PR ⊕ CL ⊕ F3(CR, K3) = K1.
ალგორითმი 2 დააბრუნებს სწორ K3 მნიშვნელობას, რადგან DES ალგორითმის გაშიფვრის პროცესი დაშიფვრის პროცესის იდენტურია, უბრალოდ გასაღების თანმიმდევრობა შებრუნებულია. ასე რომ, გაშიფვრის პირველ რაუნდში გამოიყენება გასაღები K3, ხოლო ბოლო რაუნდში გამოიყენება გასაღები K1.

K1 და K3 ქვეკლავიშების 6 ბიტი მიღების შემდეგ, თავდამსხმელი აღადგენს შიფრის K საერთო გასაღების 12 ბიტს, რადგან მრგვალი კლავიშები არის K კლავიშის ჩვეულებრივი პერმუტაცია. წარმატებული შეტევისთვის საჭირო ღია ტექსტების რაოდენობა დამოკიდებულია სტატისტიკური ანალოგის ალბათობაზე. 12-ბიტიანი 3-მრგვალი DES გასაღების გასატეხად საკმარისია 100 საჯარო/პირადი ტექსტური წყვილი. 16-მრგვალი DES კლავიშის 12 ბიტის გასატეხად საჭიროა დაახლოებით 244 წყვილი ტექსტი. გასაღების დარჩენილი 44 ბიტი იხსნება ჩვეულებრივი უხეში ძალის გამოყენებით.

ყველაზე გავრცელებული და ყველაზე ცნობილი სიმეტრიული დაშიფვრის ალგორითმია DES (მონაცემთა დაშიფვრის სტანდარტი). ალგორითმი შეიქმნა 1977 წელს და მიღებული იქნა NIST-ის (National Institute of Standards and Technology, USA) მიერ, როგორც სტანდარტი 1980 წელს.

DES არის კლასიკური Feishtel ქსელი ორი ფილიალით. მონაცემები დაშიფრულია 64-ბიტიან ბლოკებში 56-ბიტიანი გასაღების გამოყენებით. ალგორითმი გარდაქმნის 64-ბიტიან შეყვანას 64-ბიტიან გამომავალში რამდენიმე რაუნდის განმავლობაში. გასაღების სიგრძეა 56 ბიტი. დაშიფვრის პროცესი შედგება ოთხი ეტაპისგან. პირველი ნაბიჯი არის 64-ბიტიანი წყაროს ტექსტის საწყისი პერმუტაცია (IP) (გათეთრება), რომლის დროსაც ბიტები ხელახლა წესრიგდება სტანდარტული ცხრილის მიხედვით. შემდეგი ეტაპი შედგება იგივე ფუნქციის 16 რაუნდისაგან, რომელიც იყენებს ცვლის და ჩანაცვლების ოპერაციებს. მესამე ეტაპზე, ბოლო (მე-16) გამეორების გამომავალი მარცხენა და მარჯვენა ნახევრები იცვლება. საბოლოოდ, მეოთხე ეტაპი ასრულებს მესამე ეტაპზე მიღებული შედეგის IP-1 პერმუტაციას. IP-1 პერმუტაცია არის საწყისი პერმუტაციის ინვერსია.

ნახ.4. DES ალგორითმი

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

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

მრგვალი დესის აღწერა

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

ნახ.5. DES ალგორითმის რაუნდის ილუსტრაცია

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

R i = L i -1 F(R i -1, K i)

ამრიგად, L i მარცხენა ნახევრის გამომავალი უდრის მარჯვენა ნახევრის R i-1 შეყვანას. R i-ის მარჯვენა ნახევრის გამომავალი შედეგია XOR ოპერაციის L i-1-ზე და ფუნქციის F-ზე, რომელიც დამოკიდებულია R i-1-ზე და K i-ზე.

მოდით განვიხილოთ ფუნქცია F უფრო დეტალურად. R i, რომელიც მიეწოდება F ფუნქციის შეყვანას, აქვს სიგრძე 32 ბიტი. პირველი, R i გაფართოვდება 48 ბიტამდე ცხრილის გამოყენებით, რომელიც განსაზღვრავს პერმუტაციას პლუს 16-ბიტიანი გაფართოება. გაფართოება ხდება შემდეგნაირად. 32 ბიტი იყოფა 4 ბიტიან ჯგუფებად და შემდეგ გაფართოვდა 6 ბიტამდე ორი მიმდებარე ჯგუფის ყველაზე გარე ბიტების მიმატებით. მაგალითად, თუ შეყვანის შეტყობინების ნაწილი

ეფღ იჯკლ მნოპ . . .

მაშინ გაფართოების შედეგი არის შეტყობინება

დეფღი ჰიჯკლმ ლმნოპქ. . .

შედეგად მიღებული 48-ბიტიანი მნიშვნელობა შემდეგ XORდება 48-ბიტიანი ქვეკლავით K i. შედეგად მიღებული 48-ბიტიანი მნიშვნელობა შემდეგ მიეწოდება ჩანაცვლების ფუნქციას, რაც იწვევს 32-ბიტიან მნიშვნელობას.

ჩანაცვლება შედგება რვა S- ყუთისაგან, რომელთაგან თითოეული იღებს 6 ბიტს შეყვანის სახით და აწარმოებს 4 ბიტს, როგორც გამომავალს. ეს გარდაქმნები განისაზღვრება სპეციალური ცხრილებით. S-box შეყვანის მნიშვნელობის პირველი და ბოლო ბიტი განსაზღვრავს მწკრივის ნომერს ცხრილში, შუა 4 ბიტი განსაზღვრავს სვეტის ნომერს. მწკრივისა და სვეტის კვეთა განსაზღვრავს 4-ბიტიან გამომავალს. მაგალითად, თუ შეყვანილია 011011, მაშინ მწკრივის ნომერია 01 (სტრიქონი 1) და სვეტის ნომერი არის 1101 (სვეტი 13). მნიშვნელობა 1 მწკრივში და მე-13 სვეტში არის 5, ე.ი. გამომავალი არის 0101.

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

K i ინდივიდუალური რაუნდის გასაღები შედგება 48 ბიტისაგან. კლავიშები K i მიიღება შემდეგი ალგორითმის გამოყენებით. 56-ბიტიანი კლავიშისთვის, რომელიც გამოიყენება ალგორითმში შესატანად, პერმუტაცია ჯერ შესრულებულია Permuted Choice 1 (PC-1) ცხრილის შესაბამისად. შედეგად მიღებული 56-ბიტიანი გასაღები დაყოფილია ორ 28-ბიტიან ნაწილად, რომლებიც აღინიშნება, შესაბამისად, როგორც C0 და D0. ყოველ რაუნდში, C i და D i დამოუკიდებლად ციკლურად გადაადგილდებიან მარცხნივ 1 ან 2 ბიტით, რაც დამოკიდებულია რაუნდის რიცხვზე. შედეგად მიღებული მნიშვნელობები არის შეყვანა შემდეგი რაუნდისთვის. ისინი ასევე შეყვანილია Permuted Choice 2-ში (PC-2), რომელიც აწარმოებს 48-ბიტიან გამომავალ მნიშვნელობას, რომელიც არის F(R i-1, K i) ფუნქციის შეყვანა.

გაშიფვრის პროცესი დაშიფვრის პროცესის მსგავსია. ალგორითმის შეყვანა არის შიფრული ტექსტი, მაგრამ კლავიშები K i გამოიყენება საპირისპირო თანმიმდევრობით. K 16 გამოიყენება პირველ რაუნდზე, K 1 გამოიყენება ბოლო რაუნდზე. დაე, i-ე დაშიფვრის რაუნდის გამოსავალი იყოს L i ||R i. მაშინ (16-i)-ის გაშიფვრის რაუნდის შესაბამისი შეყვანა იქნება R i ||L i.

გაშიფვრის პროცესის ბოლო რაუნდის შემდეგ, გამომავალი ორი ნახევარი იცვლება ისე, რომ საბოლოო პერმუტაციის IP-1 შეყვანა არის R 16 ||L 16. ამ ეტაპის გამომავალი არის ჩვეულებრივი ტექსტი.

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

DES ალგორითმის გამოსაყენებლად სხვადასხვა კრიპტოგრაფიული პრობლემების გადასაჭრელად, შემუშავებულია მუშაობის ოთხი რეჟიმი:

· ელექტრონული კოდების წიგნი ECB (Electronic Code Book);

· CBC შიფრული ბლოკების შეერთება (Cipher Block Chaining);

· CFB (Cipher Feed Back) შიფრული ტექსტის გამოხმაურება;

· გამოხმაურება OFB-ზე (Output Feed Back).

"ელექტრონული კოდების წიგნი" რეჟიმი

გრძელი ფაილი დაყოფილია 64-ბიტიან სეგმენტებად (ბლოკებად) 8 ბაიტით. თითოეული ეს ბლოკი დაშიფრულია დამოუკიდებლად ერთი და იგივე დაშიფვრის გასაღების გამოყენებით (ნახ. 3.6).

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

სურათი 3.6 – DES ალგორითმის სქემა ელექტრონული კოდების წიგნის რეჟიმში

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

რეჟიმი "Caining Cipher Blocks".

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

ამრიგად, ყველა i = 1…n (n არის ბლოკების რაოდენობა), დაშიფვრის შედეგი C i განისაზღვრება შემდეგნაირად: C i =

DES (М i  C i –1), სადაც С 0 = IV არის შიფრის საწყისი მნიშვნელობა, ტოლი საწყისი ვექტორის (ინიციალიზაციის ვექტორი).

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

სურათი 3.7 – DES ალგორითმის სქემა შიფრული ბლოკის ჯაჭვის რეჟიმში

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


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

ამ რეჟიმის უპირატესობა ის არის, რომ არ იძლევა შეცდომების დაგროვების საშუალებას გადაცემის დროს.

ბლოკი M i არის მხოლოდ C i –1 და C i ფუნქცია. ამრიგად, გადაცემის შეცდომა გამოიწვევს წყაროს ტექსტის მხოლოდ ორი ბლოკის დაკარგვას.

"Cypher feedback" რეჟიმი

ამ რეჟიმში ბლოკის ზომა შეიძლება განსხვავდებოდეს 64 ბიტიდან (ნახ. 3.8). დაშიფრული (გაშიფრული) ფაილი იკითხება k ბიტის სიგრძის თანმიმდევრულ ბლოკებში (k=1...64).

შეყვანის ბლოკი (64-ბიტიანი ცვლის რეგისტრი) ჯერ შეიცავს მარჯვნივ გასწორებულ ინიციალიზაციის ვექტორს.

დავუშვათ, რომ ბლოკებად დაყოფის შედეგად მივიღეთ k ბიტის სიგრძის n ბლოკი (დარჩენილს დართული აქვს ნულები ან სივრცეები). შემდეგ ნებისმიერი i=1…n შიფრული ტექსტის ბლოკისთვის

С i = M i  P i –1,

სადაც P i–1 აღნიშნავს წინა დაშიფრული ბლოკის k ყველაზე მნიშვნელოვან ბიტებს.

Shift რეგისტრი განახლდება მისი უმაღლესი k ბიტის ამოღებით და რეესტრში C i ჩაწერით. დაშიფრული მონაცემების აღდგენა ასევე შედარებით მარტივია: P i –1 და C i გამოითვლება ანალოგიურად და

М i = С i  Р i –1 .


სურათი 3.8 – DES ალგორითმის სქემა შიფრული ტექსტის უკუკავშირის რეჟიმში

გამომავალი უკუკავშირის რეჟიმი

ეს რეჟიმი ასევე იყენებს ცვლადი ბლოკის ზომას და ცვლის რეგისტრს, რომელიც ინიციალიზებულია ისევე, როგორც CFB რეჟიმში, კერძოდ, შეყვანის ბლოკი ჯერ შეიცავს ინიციალიზაციის ვექტორს IV, გასწორებული მარჯვნივ (ნახ. 3.9). ამ შემთხვევაში, თითოეული მონაცემთა დაშიფვრის სესიისთვის აუცილებელია რეესტრის ახალი საწყისი მდგომარეობის გამოყენება, რომელიც უნდა გაიგზავნოს არხზე მკაფიო ტექსტით.

M = M 1 M 2 ... M n.

ყველასთვის i = 1… n

C i = M i  P i,

სადაც Р i არის DES ოპერაციის უმაღლესი k ბიტი (С i –1).

განსხვავება შიფრული ტექსტის უკუკავშირის რეჟიმისგან არის shift რეგისტრის განახლების მეთოდი.

ეს კეთდება უმაღლესი k ბიტის გაუქმებით და მარჯვნივ P i-ს დამატებით.

სურათი 3.9 - DES ალგორითმის სქემა გამომავალი უკუკავშირის რეჟიმში

3.3. DES ალგორითმის გამოყენების სფეროები

თითოეულ განხილულ რეჟიმს (ECB, CBC, CFB, OFB) აქვს თავისი დადებითი და უარყოფითი მხარეები, რაც განსაზღვრავს მათი გამოყენების სფეროებს.

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

CBC და CFB რეჟიმები შესაფერისია მონაცემთა ავთენტიფიკაციისთვის. ეს რეჟიმები საშუალებას გაძლევთ გამოიყენოთ DES ალგორითმი:

· ინტერაქტიული დაშიფვრა ტერმინალსა და მასპინძელ კომპიუტერს შორის მონაცემთა გაცვლისას;

· კრიპტოგრაფიული გასაღების დაშიფვრა გასაღების ავტომატური განაწილების პრაქტიკაში;

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

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

მონაცემთა ავტომატური დამუშავების სისტემებში ადამიანს არ აქვს საშუალება გადახედოს მონაცემებს იმის დასადგენად, განხორციელდა თუ არა მასში რაიმე ცვლილება. თანამედროვე დამუშავების სისტემებში დიდი რაოდენობით მონაცემთა გადინების გამო, დათვალიერებას ძალიან დიდი დრო დასჭირდება. გარდა ამისა, მონაცემების სიჭარბე შეიძლება არ იყოს საკმარისი შეცდომების გამოსავლენად. იმ შემთხვევებშიც კი, როდესაც ადამიანის განხილვა შესაძლებელია, მონაცემები შეიძლება შეიცვალოს ისე, რომ ადამიანებისთვის ძალზე რთული აღმოჩნდეს ცვლილებები. მაგალითად, "do" შეიძლება შეიცვალოს "do not", "$1900" - "$9100". დამატებითი ინფორმაციის გარეშე, ადამიანმა, რომელიც მას ათვალიერებს, ადვილად შეუძლია შეცვალოს შეცვლილი მონაცემები ნამდვილ მონაცემებად. ასეთი საფრთხე შეიძლება არსებობდეს მაშინაც კი, როდესაც გამოიყენება მონაცემთა დაშიფვრა. ამიტომ სასურველია არსებობდეს მონაცემების განზრახ და უნებლიე ცვლილებების გამოვლენის ავტომატური საშუალება.

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

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

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

მუ ტექსტი.

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

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

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

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

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

  • სახელმძღვანელო

გამარჯობა %username%!
ბევრმა იცის, რომ DES ალგორითმი დიდი ხანია ითვლებოდა ნაგულისხმევ სტანდარტად სიმეტრიული დაშიფვრის სფეროში. პირველი წარმატებული თავდასხმა ამ დაუოკებელ ალგორითმზე გამოქვეყნდა 1993 წელს, სტანდარტად მიღებიდან 16 წლის შემდეგ. მეთოდი, რომელსაც ავტორმა უწოდა ხაზოვანი კრიპტოანალიზი, 2 47 უბრალო/შიფრული ტექსტის წყვილის თანდასწრებით, საშუალებას გაძლევთ გახსნათ DES შიფრის საიდუმლო გასაღები 2 43 ოპერაციაში.
ჭრილის ქვემოთ შევეცდები მოკლედ გამოვყო ამ თავდასხმის ძირითადი პუნქტები.

ხაზოვანი კრიპტოანალიზი

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

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

უპირველეს ყოვლისა, თავდამსხმელი იკვლევს შიფრს და აღმოაჩენს ე.წ სტატისტიკური ანალოგი, ე.ი. შემდეგი ფორმის განტოლება, რომელიც მოქმედებს ალბათობით P ≠ 1/2 თვითნებური საჯარო/პირადი ტექსტური წყვილისა და ფიქსირებული გასაღებისთვის:
P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
სადაც P n, C n, K n არის ტექსტის, შიფრული ტექსტისა და გასაღების n-ე ბიტი.
ასეთი განტოლების აღმოჩენის შემდეგ, თავდამსხმელს შეუძლია აღადგინოს 1 ბიტი ძირითადი ინფორმაცია შემდეგი ალგორითმის გამოყენებით

ალგორითმი 1
ვთქვათ T არის ტექსტების რაოდენობა, რომლებისთვისაც (1) განტოლების მარცხენა მხარე 0-ის ტოლია, მაშინ
თუ T>N/2, სადაც N არის ცნობილი ღია ტექსტების რაოდენობა.
დავუშვათ, რომ K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (როდესაც P>1/2) ან 1 (როდესაც P<1/2).
წინააღმდეგ შემთხვევაში
დავუშვათ, რომ K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (როდესაც P>1/2) ან 0 (როდესაც P<1/2).
აშკარაა, რომ ალგორითმის წარმატება პირდაპირ დამოკიდებულია |P-1/2|-ის მნიშვნელობაზე და ხელმისაწვდომი ღია/დახურული ტექსტური წყვილების რაოდენობაზე N. რაც უფრო მეტია ალბათობა P ტოლობის (1) 1/2-ისგან, მით ნაკლებია N წმინდა ტექსტების რაოდენობა შეტევისთვის.

თავდასხმის წარმატებისთვის ორი პრობლემაა გადასაწყვეტი:

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

DES-ის აღწერა

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

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

როგორც ნახატიდან ჩანს, ტექსტის დაშიფვრისას ხორციელდება შემდეგი ოპერაციები:

  1. საწყისი ბიტის პერმუტაცია. ამ ეტაპზე შეყვანის ბლოკის ბიტები ირევა გარკვეული თანმიმდევრობით.
  2. ამის შემდეგ, შერეული ბიტები იყოფა ორ ნაწილად, რომლებიც მიეწოდება Feistel ფუნქციის შეყვანას. სტანდარტული DES-ისთვის Feistel ქსელი მოიცავს 16 რაუნდს, მაგრამ არსებობს ალგორითმის სხვა ვარიანტები.
  3. ტრანსფორმაციის ბოლო რაუნდში მიღებული ორი ბლოკი გაერთიანებულია და მიღებულ ბლოკზე შესრულებულია სხვა პერმუტაცია.

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

მოდით შევხედოთ ამ ეტაპზე შესრულებულ ოპერაციებს:

  1. შეყვანის ბლოკი გადადის გაფართოების E ფუნქციის მეშვეობით, რომელიც გარდაქმნის 32-ბიტიან ბლოკს 48-ბიტიან ბლოკად.
  2. მიღებულ ბლოკს ემატება მრგვალი გასაღები K i.
  3. წინა ნაბიჯის შედეგი დაყოფილია 8 ბლოკად 6 ბიტიანი თითოეული.
  4. თითოეული მიღებული ბლოკი B i გადადის ჩანაცვლების ფუნქცია S-Box i , რომელიც ცვლის 6-ბიტიან მიმდევრობას 4-ბიტიანი ბლოკით.
  5. შედეგად მიღებული 32-ბიტიანი ბლოკი გადადის P პერმუტაციაში და ბრუნდება f ფუნქციის შედეგად.

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

S ბლოკის ანალიზი

თითოეული S-ბოქსი იღებს 6-ბიტიან თანმიმდევრობას, როგორც შეყვანას და ყოველი ასეთი თანმიმდევრობისთვის ბრუნდება ფიქსირებული 4-ბიტიანი მნიშვნელობა. იმათ. სულ არის 64 შეყვანის და გამომავალი ვარიანტი. ჩვენი ამოცანაა ვაჩვენოთ კავშირი S ბლოკების შეყვანის და გამომავალი მონაცემების შორის. მაგალითად, DES შიფრის მესამე S-ყუთისთვის, შეყვანის მიმდევრობის მე-3 ბიტი უდრის გამომავალი მიმდევრობის მე-3 ბიტს 64 შემთხვევიდან 38-ში, ამიტომ, ჩვენ ვიპოვეთ შემდეგი სტატისტიკური ანალოგი მესამე S-ისთვის - ყუთი:
S 3 (x) = x, რომელიც სრულდება ალბათობით P=38/64.
განტოლების ორივე მხარე წარმოადგენს 1 ბიტ ინფორმაციას. მაშასადამე, თუ მარცხენა და მარჯვენა მხარეები ერთმანეთისგან დამოუკიდებელი იქნებოდა, განტოლება უნდა დაკმაყოფილდეს 1/2 ალბათობით. ამრიგად, ჩვენ ახლახან ვაჩვენეთ კავშირი DES ალგორითმის მე-3 S-ბოქსის შეყვანასა და გამომავალს შორის.

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

S-ყუთისთვის S a , 1 ≤ α ≤ 63 და 1 ≤ β ≤ 15, მნიშვნელობა NS a (α, β) აღწერს რამდენჯერ არის 64 შესაძლო XOR შეყვანის ბიტიდან S a ზედმიყენებული α ბიტებზე. XOR გამომავალი ბიტები, რომლებიც ზედმიყენებულია α ბიტებზე β, ანუ:
სადაც სიმბოლო არის ლოგიკური და.
α და β მნიშვნელობები, რომლებისთვისაც NS a (α, β) ყველაზე მეტად განსხვავდება 32-ისგან, აღწერს S-box S a-ს ყველაზე ეფექტურ სტატისტიკურ ანალოგს.

ყველაზე ეფექტური ანალოგი ნაპოვნი იქნა DES შიფრის მე-5 S- ყუთში α = 16 და β = 15 NS 5 (16, 15) = 12. ეს ნიშნავს, რომ მოქმედებს შემდეგი განტოლება: Z=Y ⊕ Y ⊕ Y ⊕ Y, სადაც Z არის S-box-ის შეყვანის თანმიმდევრობა და Y არის გამომავალი თანმიმდევრობა.
ან იმის გათვალისწინებით, რომ DES ალგორითმში S-box-ში შესვლამდე მონაცემებს ემატება მოდული 2 მრგვალი გასაღებით, ე.ი. Z = X ⊕ K ვიღებთ
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, სადაც X და Y არის f ფუნქციის შემავალი და გამომავალი მონაცემები პერმუტაციების გათვალისწინების გარეშე.
მიღებული განტოლება შესრულებულია DES ალგორითმის ყველა რაუნდზე ერთი და იგივე ალბათობით P=12/64.
შემდეგი ცხრილი აჩვენებს ეფექტურთა სიას, ე.ი. ყველაზე დიდი გადახრის მქონე P=1/2-დან, სტატისტიკური ანალოგები DES ალგორითმის თითოეული s-ბლოკისთვის.

სტატისტიკური ანალოგების აგება DES-ის მრავალი რაუნდისთვის

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

მოდით გამოვიყენოთ მე-5 s-ბოქსის ეფექტური სტატისტიკური ანალოგი X(2) მნიშვნელობის გარკვეული ბიტების გამოსათვლელად.
ჩვენ ვიცით, რომ 12/64 ალბათობით ტოლობა მოქმედებს f-ფუნქციაში X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K,სადაც X არის მე-5 S-ბოქსის მეორე შეყვანის ბიტი, ის არსებითად არის 26-ე ბიტი მიმდევრობისა, რომელიც მიღებულია შეყვანის ბიტების გაფართოების შემდეგ. გაფართოების ფუნქციის ანალიზით შეგვიძლია დავადგინოთ, რომ 26-ე ბიტი ჩანაცვლებულია X(1) მიმდევრობის მე-17 ბიტით.
ანალოგიურად, Y,..., Y არსებითად არის მე-17, მე-18, მე-19 და მე-20 ბიტი მიმდევრობის, რომელიც მიღებულია პერმუტაციამდე P. პერმუტაციის P შემოწმებისას აღმოვაჩენთ, რომ Y,..., Y ბიტები რეალურად არის Y ბიტები. (1), Y (1), Y (1), Y (1).
განტოლებებში ჩართული საკვანძო ბიტი K არის პირველი რაუნდის ქვეკლავიშ K1-ის 26-ე ბიტი, შემდეგ კი სტატისტიკური ანალოგი იღებს შემდეგ ფორმას:
X(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y1 ⊕ Y(1) = K1.
აქედან გამომდინარე, X(1) ⊕ K1 = Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)(2) ალბათობით P=12/64.
იცის Y(1) თანმიმდევრობის 3, 8, 14, 25 ბიტი, შეგიძლიათ იპოვოთ X(2) თანმიმდევრობის 3, 8, 14, 25 ბიტი:
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)ან განტოლების (2) გათვალისწინებით
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 (3) 12/64 ალბათობით.

მოდი ვიპოვოთ მსგავსი გამონათქვამი ბოლო რაუნდის გამოყენებით. ამჯერად გვაქვს განტოლება
X(3) ⊕ K3 = Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3).
იმიტომ რომ
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3)
ჩვენ ამას ვიღებთ
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3(4) 12/64 ალბათობით.

(3) და (4) განტოლებების მარჯვენა გვერდების გატოლებით ვიღებთ
CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1ალბათობით (12/64) 2 +(1-12/64) 2.
იმის გათვალისწინებით, რომ X(1) = PR და X(3) = CR ვიღებთ სტატისტიკურ ანალოგს
СL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
რომელიც შესრულებულია ალბათობით (12/64) 2 + (1-12/64) 2 =0,7.
ზემოთ აღწერილი სტატისტიკური ანალოგი შეიძლება წარმოდგენილი იყოს გრაფიკულად შემდეგნაირად (სურათზე ბიტები დანომრილია მარჯვნიდან მარცხნივ და იწყება ნულიდან):

განტოლების მარცხენა მხარის ყველა ბიტი ცნობილია შემტევისთვის, ამიტომ მას შეუძლია გამოიყენოს ალგორითმი 1 და გაარკვიოს K1 ⊕ K3 მნიშვნელობა. მოდით ვაჩვენოთ, თუ როგორ შეგიძლიათ ამ სტატისტიკური ანალოგის გამოყენებით გახსნათ არა 1, არამედ 12 ბიტი დაშიფვრის გასაღები K.

ცნობილი Plaintext Attack DES-ზე

აქ არის გზა, რომ გააფართოვოთ შეტევა და მიიღოთ პირველი რაუნდის 6 ბიტი ერთდროულად.
განტოლების (5) შედგენისას გავითვალისწინეთ ის ფაქტი, რომ არ ვიცით F1(PR, K1) მნიშვნელობა. ამიტომ, ჩვენ გამოვიყენეთ მისი სტატისტიკური ანალოგი K1 ⊕ PR.
მოდით დავაბრუნოთ მნიშვნელობა F1(PR, K1) გამოთქმის ნაცვლად K1 ⊕ PR და მივიღოთ შემდეგი განტოლება:
СL ⊕ CR ⊕ PL ⊕ F1(PR, K1) = K3 (6) , რომელიც შესრულდება 12/64 ალბათობით. ალბათობა შეიცვალა მას შემდეგ, რაც ჩვენ დავტოვეთ მხოლოდ სტატისტიკური ანალოგი მესამე რაუნდიდან, ყველა სხვა მნიშვნელობა ფიქსირდება.

ზემოთ უკვე განვსაზღვრეთ, რომ F1(PR, K1) მნიშვნელობაზე გავლენას ახდენს მე-5 S-ბოქსის შეყვანის ბიტები, კერძოდ, საკვანძო ბიტები K1 და PR ბლოკის ბიტები. მოდით ვაჩვენოთ, თუ როგორ, მხოლოდ ღია/დახურული ტექსტების კომპლექტით, შეგიძლიათ აღადგინოთ K1 მნიშვნელობა. ამისათვის ჩვენ გამოვიყენებთ ალგორითმს 2.

ალგორითმი 2
მოდით N იყოს შეტევამდე ცნობილი ღია/დახურული ტექსტური წყვილების რაოდენობა. შემდეგ გასაღების გასახსნელად საჭიროა შემდეგი ნაბიჯების გადადგმა.
ამისთვის (i=0; i<64; i++) do
{
For(j=0; j {
if(СL j ⊕ CR j ⊕ PL j ⊕ F1(PR j , i)=0) მაშინ
T i =T i +1
}
}
როგორც K1 სავარაუდო თანმიმდევრობა, i-ის მნიშვნელობა მიიღება ისე, რომ გამოთქმა |T i -N/2| აქვს მაქსიმალური მნიშვნელობა.

ცნობილი ჩვეულებრივი ტექსტების საკმარისი რაოდენობის გათვალისწინებით, ალგორითმს ექნება დიდი ალბათობა, დააბრუნოს K1 პირველი რაუნდის ქვეკლავიშის ექვსი ბიტის სწორი მნიშვნელობა. ეს აიხსნება იმით, რომ თუ i ცვლადი არ არის K1-ის ტოლი, მაშინ F1 (PR j, K) ფუნქციის მნიშვნელობა იქნება შემთხვევითი და განტოლებების რაოდენობა i-ს ისეთი მნიშვნელობისთვის, რომლის მარცხენა მხარე არის ნულის ტოლი იქნება N/2. თუ ქვეგასაღები სწორად გამოიცნობთ, მარცხენა მხარე უდრის ფიქსირებულ ბიტს K3, ალბათობით 12/64. იმათ. იქნება მნიშვნელოვანი გადახრა N/2-დან.

6 ბიტიანი K1 ქვეკლავის მიღების შემდეგ, შეგიძლიათ ანალოგიურად გახსნათ 6 ბიტი ქვეკლავი K3. ყველაფერი რაც თქვენ უნდა გააკეთოთ არის შეცვალოთ C P-ით და K1 K3-ით (6) განტოლებაში:
PL ⊕ PR ⊕ CL ⊕ F3(CR, K3) = K1.
ალგორითმი 2 დააბრუნებს სწორ K3 მნიშვნელობას, რადგან DES ალგორითმის გაშიფვრის პროცესი დაშიფვრის პროცესის იდენტურია, უბრალოდ გასაღების თანმიმდევრობა შებრუნებულია. ასე რომ, გაშიფვრის პირველ რაუნდში გამოიყენება გასაღები K3, ხოლო ბოლო რაუნდში გამოიყენება გასაღები K1.

K1 და K3 ქვეკლავიშების 6 ბიტი მიღების შემდეგ, თავდამსხმელი აღადგენს შიფრის K საერთო გასაღების 12 ბიტს, რადგან მრგვალი კლავიშები არის K კლავიშის ჩვეულებრივი პერმუტაცია. წარმატებული შეტევისთვის საჭირო ღია ტექსტების რაოდენობა დამოკიდებულია სტატისტიკური ანალოგის ალბათობაზე. 12-ბიტიანი 3-მრგვალი DES გასაღების გასატეხად საკმარისია 100 საჯარო/პირადი ტექსტური წყვილი. 16-მრგვალი DES კლავიშის 12 ბიტის გასატეხად საჭიროა დაახლოებით 244 წყვილი ტექსტი. გასაღების დარჩენილი 44 ბიტი იხსნება ჩვეულებრივი უხეში ძალის გამოყენებით.

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

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

DES ალგორითმის ძირითადი უპირატესობები:

· გამოიყენება მხოლოდ ერთი გასაღები 56 ბიტიანი სიგრძით;

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

· ალგორითმის შედარებითი სიმარტივე უზრუნველყოფს ინფორმაციის დამუშავების მაღალ სიჩქარეს;

· ალგორითმის საკმარისად მაღალი სტაბილურობა.

DES შიფრავს მონაცემთა 64-ბიტიან ბლოკებს 56-ბიტიანი გასაღების გამოყენებით. გაშიფვრა DES-ში არის დაშიფვრის საპირისპირო ოპერაცია და ხორციელდება დაშიფვრის ოპერაციების საპირისპირო თანმიმდევრობით განმეორებით (მიუხედავად აშკარა აშკარაობისა, ეს ყოველთვის არ კეთდება. მოგვიანებით განვიხილავთ შიფრებს, რომლებშიც დაშიფვრა და გაშიფვრა ხორციელდება სხვადასხვა ალგორითმების გამოყენებით).

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

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

ბრინჯი. 2.

დაე, შემდეგი 8-ბაიტიანი ბლოკი T წაიკითხოს ფაილიდან, რომელიც გარდაიქმნება საწყისი პერმუტაციის IP მატრიცის გამოყენებით (ცხრილი 1) შემდეგნაირად: T ბლოკის 58 ბიტი ხდება ბიტი 1, ბიტი 50 ხდება ბიტი 2 და ა.შ. შედეგია: T(0) = IP(T).

შედეგად მიღებული ბიტების თანმიმდევრობა T(0) იყოფა ორ მიმდევრად 32 ბიტიანი თითოეული: L(0) - მარცხენა ან მაღალი რიგის ბიტები, R(0) - მარჯვენა ან დაბალი რიგის ბიტები.

ცხრილი 1: IP საწყისი პერმუტაციის მატრიცა

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

შემდეგ შესრულებულია დაშიფვრა, რომელიც შედგება 16 გამეორებისგან. i-ის გამეორების შედეგი აღწერილია შემდეგი ფორმულებით:

R(i) = L (i-1) xor f (R(i-1), K(i)),

სადაც xor არის EXCLUSIVE OR ოპერაცია.

ფუნქციას f ეწოდება დაშიფვრის ფუნქცია. მისი არგუმენტებია 32-ბიტიანი თანმიმდევრობა R(i-1), რომელიც მიღებულია (i-1)-ე გამეორებისას და 48-ბიტიანი გასაღები K(i), რომელიც არის 64-ბიტიანი კლავიშის K კონვერტაციის შედეგი. დეტალურად, დაშიფვრის ფუნქცია და K(i) გასაღებების მიღების ალგორითმი აღწერილია ქვემოთ.

მე-16 გამეორებისას მიიღება თანმიმდევრობები R(16) და L(16) (პერმუტაციის გარეშე), რომლებიც გაერთიანებულია 64-ბიტიან R(16) L(16) თანმიმდევრობაში.

შემდეგ ამ მიმდევრობის ბიტების პოზიციები გადალაგდება IP -1 მატრიცის შესაბამისად (ცხრილი 2).

ცხრილი 2: ინვერსიული პერმუტაციის მატრიცა IP -1

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

IP -1 და IP მატრიცები დაკავშირებულია შემდეგნაირად: IP -1 მატრიცის 1 ელემენტის მნიშვნელობა არის 40, ხოლო IP მატრიცის მე -40 ელემენტის მნიშვნელობა არის 1, მე -2 მნიშვნელობა. IP -1 მატრიცის ელემენტი არის 8, ხოლო მე -8 IP ​​მატრიცის ელემენტის მნიშვნელობა უდრის 2 და ა.შ.

მონაცემთა გაშიფვრის პროცესი დაშიფვრის პროცესის საპირისპიროა. ყველა ნაბიჯი უნდა შესრულდეს საპირისპირო თანმიმდევრობით. ეს ნიშნავს, რომ გაშიფრული მონაცემები ჯერ გადანაწილებულია IP-1 მატრიცის მიხედვით, შემდეგ კი იგივე მოქმედებები შესრულებულია R(16) L(16) ბიტების თანმიმდევრობით, როგორც დაშიფვრის პროცესში, მაგრამ საპირისპირო თანმიმდევრობით.

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

R (i-1) = L(i), i = 1, 2,…, 16;

L (i-1) = R(i) xor f (L(i), K(i)), i = 1, 2,…, 16.

მე-16 გამეორებისას მიიღება L(0) და R(0) თანმიმდევრობები, რომლებიც გაერთიანებულია 64-ბიტიან L(0) R(0) თანმიმდევრობაში.

შემდეგ ამ თანმიმდევრობის ბიტების პოზიციები გადანაწილებულია IP მატრიცის მიხედვით. ასეთი პერმუტაციის შედეგი არის ორიგინალური 64-ბიტიანი თანმიმდევრობა.

ახლა განვიხილოთ დაშიფვრის ფუნქცია f (R(i-1), K(i)). იგი სქემატურად არის ნაჩვენები ნახ. 3.


ბრინჯი. 3.

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

E - 32-ბიტიანი მიმდევრობის გაფართოება 48-ბიტიანზე,

S1, S2,…, S8 - 6-ბიტიანი ბლოკის გადაქცევა 4-ბიტიანში,

P - ბიტების პერმუტაცია 32-ბიტიანი თანმიმდევრობით.

გაფართოების ფუნქცია E განისაზღვრება ცხრილით. 3. ამ ცხრილის მიხედვით E (R(i-1)) პირველი 3 ბიტი არის 32, 1 და 2 ბიტი, ხოლო ბოლო არის 31, 32 და 1.

ცხრილი 3: გაფართოების ფუნქცია E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 01

E ფუნქციის შედეგი (R(i-1)) არის 48-ბიტიანი თანმიმდევრობა, რომელსაც ემატება მოდულო 2 (xor ოპერაცია) 48-ბიტიანი კლავიშით K(i). შედეგად მიღებული 48-ბიტიანი თანმიმდევრობა დაყოფილია რვა 6-ბიტიან ბლოკად B(1) B(2) B(3) B(4) B(5) B(6) B(7) B(8). ანუ:

E (R(i-1)) xor K(i) = B(1) B(2)… B(8).

ფუნქციები S1, S2,…, S8 განსაზღვრულია ცხრილში. 4.

ცხრილი 4

მაგიდასთან 4. საჭიროა დამატებითი განმარტება. მოდით, მატრიცის ფუნქციის Sj შეყვანა იყოს 6-ბიტიანი ბლოკი B(j) = b1b2b3b4b5b6, შემდეგ ორბიტიანი რიცხვი b1b6 მიუთითებს მატრიცის მწკრივის ნომერზე, ხოლო b2b3b4b5 სვეტის ნომერზე. Sj (B(j)) შედეგი იქნება 4-ბიტიანი ელემენტი, რომელიც მდებარეობს მითითებული მწკრივისა და სვეტის კვეთაზე.

მაგალითად, B(1)=011011. მაშინ S1 (B(1)) მდებარეობს 1 მწკრივის და 13 სვეტის კვეთაზე. 1 მწკრივის მე-13 სვეტში მნიშვნელობა არის 5. ეს ნიშნავს S1 (011011)=0101.

შერჩევის ოპერაციის გამოყენებით თითოეულ 6-ბიტიან ბლოკზე B(1), B(2),…, B(8), მივიღებთ 32-ბიტიან S1 (B(1)) S2 (B(2)) თანმიმდევრობას. S3 (B( 3))... S8 (B(8)).

დაბოლოს, დაშიფვრის ფუნქციის შედეგის მისაღებად, ამ თანმიმდევრობის ბიტები უნდა განლაგდეს. ამ მიზნით გამოიყენება პერმუტაციის ფუნქცია P (ცხრილი 5). შეყვანის თანმიმდევრობით, ბიტები გადანაწილებულია ისე, რომ ბიტი 16 ხდება ბიტი 1, ბიტი 7 ხდება ბიტი 2 და ა.შ.

ცხრილი 5: პერმუტაციის ფუნქცია P

ამრიგად,

f (R(i-1), K(i)) = P (S1 (B(1)),… S8 (B(8)))

მონაცემთა დაშიფვრის ალგორითმის აღწერილობის დასასრულებლად რჩება 48-ბიტიანი K(i), i=1...16 კლავიშების მიღების ალგორითმის წარმოდგენა. ყოველი გამეორებისას გამოიყენება ახალი გასაღების მნიშვნელობა K(i), რომელიც გამოითვლება საწყისი გასაღებიდან K. K არის 64-ბიტიანი ბლოკი რვა პარიტეტული ბიტით, რომელიც მდებარეობს 8,16,24,32,40,48 პოზიციებზე. 56. 64.

საკონტროლო ბიტების ამოსაღებად და დანარჩენის გადასაწყობად გამოიყენება საწყისი გასაღების მომზადების ფუნქცია G (ცხრილი 6).

ცხრილი 6

საწყისი გასაღების მომზადების მატრიცა G

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

G(K) ტრანსფორმაციის შედეგი იყოფა ორ 28-ბიტიან ბლოკად C(0) და D(0), ხოლო C(0) შედგება გასაღების 57, 49, ..., 44, 36 ბიტისაგან. K და D(0) შედგებიან 63, 55,…, 12, 4 კლავიშებისგან K. C(0) და D(0), C(i) და D(i) დადგენის შემდეგ i=1… 16, განისაზღვრება რეკურსიულად. ამისათვის გამოიყენეთ ციკლური ცვლა მარცხნივ ერთი ან ორი ბიტით, რაც დამოკიდებულია გამეორების რიცხვზე, როგორც ნაჩვენებია ცხრილში. 7.

ცხრილი 7. Shift ცხრილი გასაღების გაანგარიშებისთვის

გამეორების ნომერი

Shift (ბიტი)

მიღებული მნიშვნელობა კვლავ „შერეულია“ H მატრიცის შესაბამისად (ცხრილი 8).

ცხრილი 8: გასაღების დასრულების მატრიცა H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

გასაღები K(i) შედგება C(i) D(i) მიმდევრობის 14, 17,…, 29, 32 ბიტისაგან. ამრიგად:

K(i) = H (C(i) D(i))

გასაღების გამოთვლის ალგორითმის ბლოკ-სქემა ნაჩვენებია ნახ. 4.

ბრინჯი. 4.

ორიგინალური ტექსტის აღდგენა ხორციელდება ამ ალგორითმის გამოყენებით, მაგრამ ჯერ იყენებთ კლავიშს K(15), შემდეგ K(14) და ა.შ. ახლა თქვენ უნდა გესმოდეთ, რატომ გირჩევთ ავტორი დაჟინებით მოცემული მატრიცების გამოყენებას. თუ თაღლითად წახვალთ, შეიძლება აღმოჩნდეთ ძალიან საიდუმლო კოდით, მაგრამ თქვენ თვითონ ვერ შეძლებთ მის გატეხვას!



რაიმე შეკითხვა?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: