İnsanlar VPN-i «açıq açar şifrələməsindən istifadə edir» kimi təsvir edir və sonra hər paketin serverin sertifikatı ilə bağlandığını təsəvvür edirlər. Bu təsəvvür konfiqurasiya faylını və ya paket tutumunu oxuyarkən əhəmiyyət kəsb edən şəkildə yanlışdır. VPN-in açıq açar yarısı qarşı tərəfin kim olduğunu sübut etmək və gizli material barədə razılaşmaqla bağlıdır; simmetrik yarı isə sessiyanın ömrü boyu trafiki paket-paket həqiqətən qoruyan hissədir.

İki yarının ömürləri, uğursuzluq rejimləri və təhlükəsiz şəkildə yayımlaya biləcəyiniz şeylər fərqlidir. Onları ayırdıqdan sonra «RSA 2048 AES-128-dən zəifdir» kimi suallar çaşqınlıq yaratmaqdan çıxır, çünki onlar heç vaxt müqayisə oluna bilən deyildi.

Bir yerə yığılan üç əməliyyat

Açıq açar kriptoqrafiyası ən azı üç fərqli əməliyyatı əhatə edən bir çətirdir. İmza, açıq olmayan açarın sahibinin müyən bir mesajı təsdiqlədiyini sübut edir. Açar razılaşması iki qarşı tərəfə açıq şəkildə mübadilə etdikləri dəyərlərdən ortaq sirr çıxarmağa imkan verir. Açıq açar şifrələməsi məlumatı kiminsə açıq açarı altında gizlədir ki, onu yalnız gizli açar aça bilsin.

VPN handshake-ləri əsasən ilk ikisindən istifadə edir. Sertifikat şifrələmə açarı deyil; o, bir adı açıq açara bağlayan imzalı bəyanatdır və digər tərəfə indicə aldığı açara etibar edib-etməməyə qərar verməyə imkan verir. Məsələn, TLS 1.3 açar qurulması (EC)DHE açar razılaşması və sertifikat imzaları üzərində qurulur, sessiyanın serverin açıq açarı ilə şifrələnməsi üzərində deyil.

Handshake əslində nə istehsal edir

Müasir handshake-də hər tərəf qısaömürlü açar cütü yaradır, açıq yarıları mübadilə edir və heç vaxt naqil üzərindən keçməyən ortaq sirr hesablayır. Sonra bu sirr açar törəmə funksiyasından keçirilir ki, hər istiqamət üçün ayrı açarlar, üstəlik qeyd qatının ehtiyac duyduğu nonce və IV materialı yaransın. WireGuard bunu Noise əsaslı quruluşu ilə edir; TLS 1.3 bunu handshake transkripti üzərində HKDF ilə edir.

Uzunmüddətli etimadnamə — sertifikat və gizli açar, ya da statik WireGuard açarı — həmin mübadiləni doğrulayır. O, transkriptə imza atır və ya qarışır ki, yad adam qarşı tərəfin yerinə handshake-i tamamlaya bilməsin. Bundan sonra etimadnamə hər paket üzrə iş görmür. Əgər görsəydi, hər paket gizli açar əməliyyatı tələb edərdi və məşğul tunel yığındakı ən yavaş əməliyyatla məhdudlaşardı.

Bundan iki yan təsir irəli gəlir. Birincisi, sessiya açarları hər dəfə təzədir, buna görə uzunmüddətli açarı sonradan oğurlayan hücumçu əvvəl qeydə alınmış sessiyaları deşifrə edə bilməz, bir şərtlə ki, razılaşma qısaömürlü olsun. İkincisi, sızmış sessiya açarı bir sessiyanı kompromisə edir, kimliyi deyil.

Niyə böyük həcmli məlumat simmetrik açarlardan istifadə edir

Simmetrik şifrlər həcmlə yaxşı bacarır: AES-GCM və ya ChaCha20-Poly1305 hər paketi artıq yaddaşda olan açar ilə emal edir, başlığı doğrulayır və sayğacı artırır. Qəbul edən tərəf nonce və autentifikasiya teqini yoxlayır və uğursuz olan və ya təkrarlanan hər şeyi atır. Bu, adi aparatda xətt sürəti ilə işləmək üçün kifayət qədər ucuzdur və eyni quruluş bir keçiddə məxfilik və bütövlük verir.

Quruluş həm də əksər tətbiq səhvlərinin yaşadığı yerdir. GCM-də təkrarlanan nonce məxfilik və həqiqiliyi eyni anda pozur, buna görə protokollar hər istiqamət üçün açarlar törədir və açıq sayğac və ya epoch saxlayır. Əgər paket tutumunu oxuyursunuzsa və şifrəli mətnin uzunluğu açıq mətnə sabit əlavə ilə uyğun gəlirsə, bu, simmetrik qatın işidir, hər paket üçün baş verən açıq açar əməliyyatı deyil.

Ömürlər, açar yeniləmələri və irəliyə doğru məxfilik

Sessiya açarları vaxtı bitmək üçündür. TLS 1.3 trafik açarlarını dəyişmək üçün KeyUpdate mesajına icazə verir; WireGuard konfiqurasiya edilmiş vaxt və ya mesaj sayından sonra sessiyanı yeniləyir və köhnəsini yolda olan paketlər üçün qısa müddət saxlayır. OpenVPN məlumat kanalı açarlarını cədvəl üzrə yenidən danışıqlardan keçirir və reneg-sec intervalı idarə edir.

Bu rotasiyanın heç biri sertifikatın yenilənməsi ilə eyni deyil. Sertifikat bir il etibarlı ola bilər, halbuki sessiya açarları hər neçə dəqiqədə dəyişir, və sertifikat işləyən tunelin açarlarına toxunmadan dəyişdirilə bilər. Bitmə tarixini planlaşdırarkən hansı obyekti rotasiya etdiyinizi soruşun; cavab müştərilərin yenidən qoşulacağını, yoxsa sadəcə açarları yeniləyəcəyini həll edir.

Konfiqurasiyaları və diaqnostikanı obyektləri qarışdırmadan oxumaq

Təcrübədə siz tam protokol və onun dəstəklədiyi primitivləri seçirsiniz, özünüzünkünü yığmırsınız. OpenVPN-in --tls-crypt açarı idarə kanalını qoruyur; məlumat kanalı razılaşdırılmış simmetrik şifrlərdən istifadə edir. WireGuard-ın PrivateKey və PublicKey qeydləri kimlik materialıdır, halbuki onun nəqliyyat açarları daxildə törədilir. Bu sahələri eyni növ sirr kimi oxumaq, açıq açarı gizli açarın yerinə yapışdırmaq kimi səhvlərə gətirir.

Açıq materialı gizlidən ayrı saxlayın. Sertifikat, WireGuard açıq açarı və barmaq izi biletə əlavə etmək üçün təhlükəsizdir. Gizli açar, əvvəlcədən paylaşılmış açar və ixrac edilmiş sessiya açarı isə deyil. Gücləri müqayisə edərkən eyni tip daxilində müqayisə edin: elliptik əyri identifikatoru, RSA modul ölçüsü və AES açar ölçüsü fərqli fərziyyələr altında fərqli şeyləri ölçür. TLS 1.3 spesifikasiyası iki qatın necə bir-birinə uyduğu üçün faydalı mənbədir, hətta tuneliniz TLS olmadıqda belə.

Əlaqəli məqalələr