tls-crypt-v2 profilini bilete yapışdırmaq, faylın nə ehtiva etdiyini sayana qədər zərərsiz görünür. Müştərinin nəzarət kanalı açarı həmin açarın şifrələnmiş surəti ilə yanaşı durur və üçüncü obyekt — bükmə açarı — qəbul edən serverdən heç vaxt çıxmır. Bu üçü saxlanma, paylaşma və ləğvetmə ilə bağlı fərqli suallara cavab verir. Onları ayırmaq siyasət mübahisələrinin çoxunu başlamadan həll edir.

Profil əslində nə ehtiva edir

tls-crypt-v2-nin müştəri yarısı bir açar və onun bükülmüş surətidir. Müştəri adi açarı nəzarət kanalının qorunması üçün istifadə edir və bükülmüş surəti qurulum zamanı serverə verir, beləliklə server hər müştəri üçün açıq mətn surəti saxlamadan həmin açarı bərpa edir. Bükmə açarı bu bərpanı mümkün edir və yalnız qəbul edən tərəfə aiddir. Aşağıdakı hər şey bu üç obyektin harada yaşamasından irəli gəlir.

ObjectWhere it livesWhat can open itWhat a leak costs
Server wrapping keyaccepting servers onlythe unwrap step inside the serverevery wrapped copy issued to that group becomes readable
Wrapped client keyinside the client profilethe server wrapping keyit names a client and exposes its metadata, but not the key inside
Client control keyinside the client profile, usable as-isthe client that owns itsomeone can open handshakes as that client until the server refuses the key

Cədvəli ada görə deyil, saxlanmaya görə oxuyun və nəticələr özü çıxır. Bükmə açarını itirmək bahalı hadisədir, çünki profildə onu bərpa edəcək heç nə yoxdur və dürüst bərpa qrupu yenidən buraxmaqdır. Sızmış profil daha ucuzdur, lakin qat-qat geniş yayılmışdır, çünki profilləri bilete yapışdıran insanlar bükülmüş surətin faylı paylaşmaq üçün təhlükəsiz etdiyinə inanır. İki uğursuzluq fərqli cavab tələb edir, buna görə obyektlər ayrı saxlanılır.

Niyə bükülmüş surət bütün hekayə deyil

Profil istifadə edilə bilən müştəri materialını onun bükülmüş qarşılığı ilə birlikdə daşıyır, yəni server üçün surətin qorunması faylın qorunması barədə heç nə demir. Blob ötürmək üçün təhlükəsiz, dərc etmək üçün təhlükəsiz deyil. İçindəki metadatanı blobu alan hər kəs, o cümlədən sonradan yapışdırıldığı bileti oxuyan hər kəs görə bilər.

Profilə konfiqurasiya nümunəsi kimi deyil, etimad sənədi kimi yanaşın. Sızmış fayl sahibinə server həmin kimliyi qəbul etməyi dayandırana qədər işlək müştəri kimliyi verir və bükmə bu pəncərə ilə bağlı heç nə etmir. Hər müştəri üçün bir profil buraxın ki, geri çəkilmə tək fayl qərarı olaraq qalsın və bükmə açarını o imkan verdiyi server konfiqurasiyasından ayrı yedəkləyin. Heç bir vərdiş kompromisə uğramış profili bərpa etmir, lakin hər ikisi növbətinin nə qədər tez məhdudlaşdırılacağını müəyyən edir.

Doğrulama qarmağı əl sıxmağın harasında durur

Doğrulama qarmağı TLS yığını açılmazdan əvvəl işləyir və vəzifəsi bükülmüş blobda daşınan metadatanı yoxlamaqdır. O, həmin metadatanı və kiçik, sənədləşdirilmiş mühiti alır və autentifikasiya qarmağından daha az vasitəyə malikdir. Onun istifadəçi adlarını, sessiya vəziyyətini və ya plagin dəyişənlərini gördüyünü güman etmək bu qarmağın pis yazılmasının adi yoludur. Fərqli qarmaqdan gözləntilər götürmək əvəzinə qarmağın öz təlimat bölməsini oxuyun.

Çıxış statusu qərardır: sıfırdan fərqli nəticə müştərini rədd edir, sıfır nəticə isə əl sıxmanın davam etməsinə imkan verir. Buna görə siyasət metadata olmadıqda, oxunmadıqda və ya gözlənilmədikdə nə baş verdiyini deməlidir. Əvvəlcə rədd yolunu yazın, sonra hansı dəyərlərin məqbul olduğunu qərarlaşdırın.

tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.sh

Bu iki sətir serverdəki siyasət səthidir: biri bükmə açarını, digəri hər müştərini mühakimə edən proqramı adlandırır. Maraqlı hər şey skriptdə yaşayır, o da versiya nəzarətinə və hər hansı digər giriş qaydası kimi eyni baxışa layiqdir.

Hesab, sertifikat və nəzarət açarı ayrı-ayrı ləğv olunur

Nəzarət kanalının erkən qəbulu autentifikasiya deyil, çünki TLS kimlik yoxlamasından və hər hansı hesab avtorizasiyasından əvvəl baş verir. Hesabın söndürülməsi, sertifikatın ləğvi və müştəri nəzarət açarının rədd edilməsi üç fərqli mexanizmi olan üç hərəkətdir. Yalnız birini yerinə yetirən yerləşdirmənin siyasəti deyil, boşluğu var. Üçünü qəsdən uzlaşdırın və hansı addımın hansı səlahiyyəti işə saldığını qeyd edin.

Vaxt ikinci fərqdir. Dəyişdirilmiş qəbul siyahısı yeni əl sıxmalara aiddir, artıq qurulmuş sessiyalar isə onları nə isə dayandırana qədər davam edir. Yeni siyahıdakı qeydləri köhnə sessiyaların bitdiyinə dəlil saymaq, silinmiş müştərinin saatlarla qoşulmuş qalmasının yoludur.

Uzlaşdırılmamış səlahiyyətlər praktikada asanlıqla tapılan iki dəlik buraxır. Hesab söndürülə bilər, halbuki onun nəzarət açarı hələ də əl sıxma açır; sertifikat ləğv edilə bilər, halbuki metadata siyasəti həmin müştərini hələ də qəbul edir. Hər ikisi eyni səhvin müxtəlif yerlərdə təkrarıdır, çünki operator bir siyahıya bütün səlahiyyət kimi baxıb. Silinmə vaxtı üç siyahını yan-yana qoyun və səhv görünən olur.

Profilin buraxılması və geri çəkilməsi

Buraxma asan yarıdır: müştəri açarını qəbul edən tərəfdə yaradın, profili dəqiq bir sahibə verin, bükmə materialını məhdud saxlayın və hər qəbul edən serverdə eyni doğrulama proqramını işlədin. Ucuz qəbul bütün qrupun xassəsidir, ən yeni hostun deyil. Daha köhnə və ya daha boş skriptlə işləyən ikinci server səssizcə yerləşdirmənin ən zəif yolu olur.

Geri çəkilmə üç addımı qəsdən seçilmiş ardıcıllıqla tələb edir. Yeni əl sıxmalar uğursuz olsun deyə müştərini doğrulama qarmağında rədd edin, PKI istifadə olunursa sertifikatını ləğv edin və sonrakı avtorizasiyanın avtorizasiya edəcəyi heç nə qalmasın deyə hesabı söndürün. Sonra köhnə qəbulun icazə verdiyi sessiyaları sonlandırın, çünki onlar üçün heç birini görməyəcək. Ardıcıllığı pozmağa imkan verdiyiniz bir müştəridə məşq edin.

Profildəki metadata həmin siyasət üçün girişdir, giriş nəzarətinin artıq mövcud olduğuna dəlil deyil. OpenVPN 2.6 dizayn sənədi obyektləri və onların çəkdiyi sərhədi təsvir edir, icrası isə operatorun üzərində qalır.

Əlaqəli məqalələr