გასაღები (კრიპტოგრაფია)

კრიპტოგრაფიაში ტერმინი „გასაღები“ აღნიშნავს ინფორმაციას, რომელიც ცალსახად განსაზღვრავს კრიპტოგრაფიული ალგორითმის და შიფრის გამომავლ შედეგს. შიფრაციის დროს მთლიანად გასაღებზეა დამოკიდებული ინფორმაციის ღია ტექსტიდან შიფროტექსტში, ხოლო დეშიფრაციის დროს — პირიქით, შიფროტექტიდან ღია ტექსტად გარდაქმნის პროცესი. გასაღები შესაძლოა გამოყენებულ იქნას სხვა კრიპტოგრაფიულ ალგორითმებში, კერძოდ ციფრულ ხელმოწერებსა და შეტყობინების აუთენტიფიკაციის კოდებში. უსაფრთხოების სისტემების შემუშავებისას, მართებულია გათვალისწინებულ იქნას ის ალბათობა, რომ ადრე თუ გვიან კრიპტოგრაფიული ალგორითმის დეტალები ცნობილი გახდება ბოროტგანმზრახველისათვის. ეს პრინციპი ცნობილია როგორც „კერჰოფის პრინციპი“ — „მხოლოდ გასაღების დაცულობა განსაზღვრავს სისტემის უსაფრთხოებას“, რაც კლოდ შენონის მიერ ჩამოყალიბდა, როგორც მაქსიმა — „მტერი იცნობს სისტემას“. კრიპტოგრაფიის ისტორია ინახავს იმის დამადასტურებელ მაგალითებს, რომ რთულია საიდუმლოდ იქნას შენახული ფართოდ გამოყენებადი ალგორითმის დეტალები. გასაღების საიდუმლოდ შენახვა გაცილებით იოლია, რადგან ეს ინფორმაციის უფრო მცირე ნაწილია. ამიტომაც თანამედროვე ალგორითმების უსაფრთხოება მთლიანად ეფუძნება გასაღების საიდუმლოდ შენახვის პრინციპს. გასაღების საიდუმლოდ შენახვა კრიპტოგრაფიის ერთ-ერთი ყველაზე რთულად გადასაწყვეტი პრობლემაა. ბოროტგანმზრახველს, რომელსაც აქვს გასაღები (მოპოვებული მოპარვით, გამოძალვით, დაშინებით, სოციალური ინჟინერიით ან სხვა გზებით), შეუძლია ნებისმიერ დროს აღადგინოს ამ გასაღებით დაცული ნებისმიერი დაშიფრული ინფორმაცია. კრიპტოგრაფიული ალგორითმები, რომლებიც იყენებენ ერთ გასაღებს შიფრაციის და დეშიფრაციის პროცესში, ეწოდებათ სიმეტრიული ალგორითმები, ხოლო ალგორითმებს, რომლებიც შიფრაციისთვის იყენებენ ერთ, ხოლო დეშიფრაციისათვის მეორე გასაღებს, უწოდებენ ასიმეტრიულ ალგორითმებს. ამ ორი გასაღებიდან ერთი (შიფრაციის) შესაძლოა იყოს ფართოდ ცნობილი, ხოლო მეორე (დეშიფრაციის) იქნას შენახული საიდუმლოდ. ეს საშუალებას იძლევა ნებისმიერმა გააგზავნოს მეორე გასაღების მფლობელთან დაშიფრული ინფორმაცია. „ერთჯერადი ბლოკნოტისათვის“, იგივე იდეალური კრიპტოგრაფიული ალგორითმისათვის, გასაღების სიგრძე უნდა იყოს არანაკლებ შეტყობინების სიგრძისა. პრაქტიკულ სისტემებში კი შეტყობინების სიგრძე შესაძლოა მრავალჯერ აღემატებოდეს გასაღების სიგრძეს. ნებისმიერ შემთხვევაში გასაღების სიგრძე საკმარისად დიდ უნდა იყოს, რათა გამოირიცხოს ყველა შესაძლებელი ვარიანტის გადარჩევა, ე.წ. „უხეში ძალით გატეხვა“. ამჟამად სიმეტრიული ალგორითმებისათვის მეტნაკლებად უსაფრთხო გასაღების მინიმალურ სიგრძედ მიჩნეულია 80 ბიტი, ხოლო 128 ბიტი სიგრძის გასაღები ითვლება საკმაოდ ძლიერ გასაღებად. ასიმეტრიულ კრიპტოგრაფიაში გამოყენებულ გასაღებებს გააჩნიათ გარკვეული მათემატიკური სტრუქტურა, კერძოდ დამოკიდებულნი არიან ორ დიდ მარტივი რიცხვის ნამრავლზე. ეს ინფორმაცია უკვე წარმოდგენას იძლევა გასაღების სტრუქტურაზე, ამიტომ ასეთი სახის კრიპტოგრაფიაში გამოყენებულ გასაღებს გაცილებით მეტი სიგრძე მოეთხოვება. დღესდღეობით დაცულად ითვლება 3072 და მეტი ბიტი სიგრძის მქონე გასაღები. ყველა ამ ალგორითმის (გარდა „ერთჯერადი ბლოკნოტისა“) აბსოლუტური მდგრადობა თეორიულად ჯერ არ არის დამტკიცებული. ნებისმიერ დროს შესაძლოა აღმოჩენილ იქნას მათემატიკური მეთოდი, რომლითაც მოხდება ამ ალგორითმების გატეხვა. ასევე იზრდება კომპიუტერული ტექნიკის გამოთვლითი სიმძლავრეები, რაც გადარჩევის დროს ამცირებს. ამიტომაც პრაქტიკულ სისტემებში ცდილობენ გამოიყენონ მაქსიმალურად დიდი სიგრძის გასაღებები. გასაღების გამოცნობის თავიდან აცილების მიზნით, გასაღებები უნდა გენერირებულ იქნას შემთხვევითი რიცხვების გენერატორით და ჰქონდეს საკმარისი ენტროპია. საკმარისად დაცული გასაღებების გენერირება წარმოადგენს ცალკე კრიპტოგრაფიულ პრობლემას და სხვადასხვა სისტემებში შესაძლოა სხვადასხვანაირად იქნას გადაწყვეტილი. ზოგიერთ სისტემაში ხდება ენტროპიის „შეკრება“ სხვადასხვა აპარატული წყაროებიდან, რომელთა ქმედების დროის წინასწარ ზუსტად განსაზღვრა შეუძლებელია, მაგ, მყარი დისკის თავაკის მოძრაობა. მცირე მოცულობის შემთხვევითი (და საკმაოდ მაღალი ხარისხის ენტროპიის მქონე) ინფორმაციის მოსაგროვებლად ჩვეულებრივი კამათლებიც გამოდგება. როდესაც რაიმე პაროლი (ან ფრაზა) გამოიყენება როგორც გასაღები, კრიპტოგრაფიული სისტემების მიერ ჯერ ხდება მისი გატარება ე.წ. დერივაციულ ფუნქციაში, რომელიც გასაღებს უმატებს „მარილს“, შემდგომ კი კუმშავს (ან შლის) მას ალგორითმისთვის საჭირო (128, 192,256 ბიტი) სიგრძემდე. კრიპტოგრაფია სიმეტრიული კრიპტოგრაფია ასიმეტრიული კრიპტოგრაფია შემთხვევითი რიცხვების გენერატორი