უხეში ძალის მეთოდი

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

არსებობს ფიზიკის კანონებზე დაფუძნებული მტკიცება, რომ 128 ბიტიანი გასაღები შეიძლება ჩაითვალოს უხეში ძალის მეთოდის მიმართ მედეგად.ფონ ნოიმან-ლანდაუერის ლიმიტი ადგენს ენერგიის უმცირეს კვანტს, რომელიც საჭიროა გამოთვლითი მანქანის მეხსიერებაში 1 ბიტის შესაცვლელად \(2) , სადაც არის მანქანის ტემპერატურა კელვინებში, - ბოლცმანის მუდმივა. არც ერთო გამოთვლით მანქანას არ შეუძლია მოიხმაროს ნაკლები ენერგია. შესაბამისად 128 ბიტიანი გასაღების გადარჩევას თეორიულად დასჭირდება 2128-1 ბიტის შეცვლის ოპერაცია (და ეს შემოწმების ოპერაციების ჩაუთვლელად). შესაბამისად, ოთახის ტემპერატურაზე ჩატარებულ გადარჩევას დასჭირდება დაახლოებით 1018 ჯოული ენერგია, რაც 1 წლის განმავლობაში დახარჯული 30 გიგავატი სიმძლავრის ენერგიის ტოლფასია.გამოთვლები შემოწმების ოპერაციების ჩათვლით - ეს ენერგიის კიდევ უფრო მეტ დანახარჯებს ნიშნავს.

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

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

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

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

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

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