რატომ ვერ ასწორებს უფრო გრძელი Blowfish გასაღები 64-ბიტიან ბლოკს
Blowfish გასაღებებს შეუძლიათ 448 ბიტს მიაღწიონ, სანამ ბლოკი 64 ბიტად რჩება. შეამოწმეთ შეთანხმებული შიფრი და დაგეგმეთ მხარდაჭერილი ჩანაცვლება უფრო გრძელი გასაღების ნაცვლად.
VPN პროფილი გვთავაზობს Blowfish-ს 448-ბიტიანი გასაღებით, და ვიღაც გვთავაზობს ყველაზე გრძელი გასაღების გამოყენებას შიფრის შესანარჩუნებლად. გასაღების სიგრძე რეალურია, მაგრამ ეს არასწორი რიცხვია ოპტიმიზაციისთვის. Blowfish გარდაქმნის 64-ბიტიან ბლოკებს, რამდენადაც არ უნდა გრძელი იყოს გასაღები, და სწორედ ბლოკის სიგანე ზღუდავს, რამდენი ტრაფიკი შეუძლია ერთ გასაღებს უსაფრთხოდ დაიცვას. შეასრულეთ ქვემოთ მოცემული შემოწმებები თანმიმდევრობით და შეჩერდით პირველზე, რომელიც სამსახურს ეჭვის გარეშე ტოვებს, რადგან გვიანი ნაბიჯი ვერ გამოასწორებს ადრინდელს.
შეამოწმეთ, რაზე თანხმდებიან მხარეები სინამდვილეში
წაიკითხეთ მონაცემთა არხის შიფრი ორივე მხრიდან, და არა იმ პროფილიდან, რომლის განლაგებასაც აპირებდით. კლიენტის კონფიგურაციამ შეიძლება ჩამოთვალოს რამდენიმე შიფრი, და არჩეული ორ იმპლემენტაციასა და მათ ვერსიებს შორის მოლაპარაკების შედეგია. გაზარდეთ ჟურნალის დეტალურობა სატესტო კავშირზე და წაიკითხეთ მონაცემთა არხის ხაზი, რომელიც ასახელებს რეალურად ინიციალიზებულ შიფრსა და გასაღების ზომას.
თუ შეთანხმებული შიფრია AES-GCM ან ChaCha20-Poly1305, აქ შეჩერდით. ეს კონსტრუქციები იყენებენ 128-ბიტიან ბლოკს და ავთენტიფიცირებენ დატვირთვას, ამიტომ ქვემოთ მოცემული 64-ბიტიანი შეჯახების არგუმენტი მათ არ ეხება.
გამოყავით გასაღების სიგრძე ბლოკის სიგანისგან
Blowfish იღებს გასაღებებს 32-დან 448 ბიტამდე, და ალგორითმის ავტორის დოკუმენტაცია ორივე რიცხვს ცალ-ცალკე ჩამოთვლის. გასაღები საიდუმლოა, ბლოკი კი გარდაქმნის ერთეული. უფრო გრძელი საიდუმლო ართულებს გამოცნობას და არაფერს აკეთებს იმ ბლოკის სიგანეზე, რომელსაც შიფრი ამუშავებს.
CBC რეჟიმში შიფრი გამოიყენება ფიქსირებული სიგანის ბლოკებზე, წინა დაშიფრული ტექსტის ბლოკთან ჯაჭვურად დაკავშირებულ და ბოლოში შევსებულ ბლოკებზე. Blowfish-ისთვის ეს სიგანე 64 ბიტია, ანუ რვა ბაიტი. გასაღებების გრაფიკი შეიძლება იყოს რამდენიც გსურთ დიდი, ჯაჭვი მაინც ყოველ ჯერზე რვა ბაიტით წინ მიდის.
ამიტომ უფრო გრძელი გასაღები შერბილება არ არის. ის მიმართულია გასაღების წინააღმდეგ უხეში ძალის წინააღმდეგ, ხოლო ქვემოთ მოცემული შეჯახების რისკი ბლოკის სიგანისა და რეჟიმის თვისებაა.
გამოიყენეთ დაბადების დღის არითმეტიკა ბლოკის ზომაზე
64-ბიტიან ბლოკს აქვს დაბადების დღის მასშტაბი დაახლოებით 2^32 ბლოკი, რომლებიც ერთი გასაღებით დაშიფრულია მანამ, სანამ შეჯახებები სავარაუდო გახდება. თითოეული ბლოკი რვა ბაიტს ატარებს, ამიტომ იგივე მასშტაბი დაახლოებით 2^35 ბაიტია, ანუ 32 GiB მონაცემი ერთი გასაღების ქვეშ.
მოეკიდეთ ამას როგორც მასშტაბს და არა კვოტას. შეჯახებები ალბათურია, და გაჟონავს თუ არა რამე, დამოკიდებულია რეჟიმზე, ტრაფიკის ნიმუშზე და იმაზე, შეუძლია თუ არა თავდამსხმელს გარშემო ღია ტექსტის ამოცნობა ან მასზე გავლენა. 32 GiB-ის შემდეგ პირველი ბაიტი გაშიფვრის მოვლენა არ არის, და პირველი 32 GiB უსაფრთხოდ არ არის დამოწმებული.
Sweet32-ის მკვლევარებმა 2016 წელს აჩვენეს პრაქტიკული შეტევები 64-ბიტიან ბლოკურ შიფრებზე, მათ შორის OpenVPN სცენარი, ისეთ პირობებში, რომლებიც მოითხოვდა დაკვირვებასა და ტრაფიკის გენერაციას. მათი გამოქვეყნებული ნაგულისხმევები და პროგრამული ვერსიები ისტორიული კონტექსტია და არა თქვენი განლაგების აღწერა.
გადაწყვიტეთ, მნიშვნელოვანია თუ არა აქ CBC-ის ხელახალი გამოყენება
CBC-ში განმეორებული დაშიფრული ტექსტის ბლოკი ნიშნავს, რომ ორი ღია ტექსტის ბლოკი ცნობილი დამოკიდებულებით განსხვავდება, რადგან ჯაჭვის XOR თავის თავს აუქმებს. თავდამსხმელი, რომელსაც შეუძლია დააკვირდეს დაშიფრულ ტექსტს და იცის ან შეუძლია გავლენა მოახდინოს ერთ-ერთ ღია ტექსტზე, შეიძლება მეორეზე ინფორმაცია მიიღოს. Blowfish გასაღები ამისთვის არასდროს არის საჭირო.
ამიტომ შესაბამისი კითხვებია: რამდენ ხანს რჩება გასაღები სამსახურში, რამდენი ტრაფიკი გადის მის ქვეშ და შეუძლია თუ არა ვინმეს ამ ტრაფიკის დაკვირვება და მართვა. გასაღებების განახლება ამცირებს ბლოკების რაოდენობას ერთ გასაღებზე, მაგრამ დროის ინტერვალი ბაიტური ზღვარი არ არის: დატვირთულ გვირაბს შეუძლია იმავე საათში ბევრად მეტი მონაცემი გადაიტანოს, ვიდრე უქმს. თუ ძველ შიფრს ინახავთ, ზღვარი გამოიტანეთ კონსტრუქციიდან და რეალური მოცულობიდან და არა მრგვალი რიცხვიდან.
თუ ერთ გასაღებზე გაზომილი მოცულობა დაბადების დღის მასშტაბზე ბევრად დაბალი რჩება, ზემოქმედება ნაკლებია. ის მაინც ნული არ არის და მაინც იძლევა საფუძველს მიგრაციის დაგეგმვისთვის, ნაცვლად შეწუხების შეწყვეტისა.
შეცვალეთ შიფრი და არა გასაღები
გადაიტანეთ სამსახური მხარდაჭერილ AEAD შიფრზე და დაადასტურეთ, რომ ორივე მხარეს, მათ ვერსიებსა და მათ კრიპტოგრაფიულ უკანა ნაწილებს შეუძლიათ მასზე შეთანხმება. უფრო გრძელი Blowfish გასაღები არაფერს ცვლის მნიშვნელოვანს, და ერთ კლიენტზე ახალი დირექტივის გამოცნობა ის გზაა, რომლითაც მომუშავე გვირაბი გატეხილ გვირაბად იქცევა. გამოსცადეთ ცვლილება ერთ კლიენტსა და ერთ სერვერზე, სანამ დანარჩენ ფლოტს შეეხებით. შეინახეთ ძველი პროფილი ხელმისაწვდომი უკან დაბრუნებისთვის, სანამ ახალი შიფრი სრულ კავშირის ციკლს გაივლის.
ცვლილების დროს შეინარჩუნეთ სერტიფიკატების შემოწმება და ანგარიშების ავთენტიფიკაცია. ისინი პასუხობენ სხვადასხვა კითხვას: წარმატებული შესვლა ვერ გააფართოებს ბლოკს, და უკეთესი მონაცემთა შიფრი არ ამართლებს არასწორი სერვერის ნდობას.
დაასრულეთ შემოწმება ახალ კავშირზე შეთანხმებული შიფრის ხელახლა წაკითხვით და შემდეგ დაადასტურეთ, რომ ძველი შიფრი აღარ მიიღება. თუ მხარე კვლავ გვთავაზობს მას, მიგრაცია დასრულებული არ არის, რაც არ უნდა თქვას მეორე მხარის პროფილმა.