Ar mokama VPN gali autorizuoti sesijas be tavo paskyros?
Nesusiejami žetonai gali atskirti tinkamumo patikrą nuo pačios sesijos. Svarbu tai, kaip suprojektuotas išdavimas ir išpirkimas, o ne etiketė prisijungimo ekrane.
Mokėti už tunelį nebūtinai reiškia kiekvieno prisijungimo metu rodyti mokėjimo tapatybę. Projektas gali vieną kartą patikrinti tinkamumą, perduoti klientui kriptografinius žetonus ir leisti vartams vėliau priimti žetoną nematant už jo esančios paskyros. Ar tai iš tiesų ką nors slepia, priklauso nuo išdavimo ir išpirkimo sprendimų, todėl traktuok tai kaip keturių dalių specifikacijos pratimą, o ne funkciją, kurią įjungi.
Atskirk pirkimo žingsnį nuo sesijos žingsnio
RFC 9576 Privacy Pass architektūra suteikia žodyną: klientas, patvirtintojas, išdavėjas ir šaltinis. Klientas įrodo išdavėjui tam tikrą savybę ir gauna žetonus; vėliau vieną pateikia šaltiniui, kuris nusprendžia, ar jį aptarnauti. Pritaikius VPN, patvirtinama savybė galėtų būti vienas prieigos vienetas.
Atsiskaitymai vis dar mato tai, ko reikia jų pačių procesui, ir niekas neteigia priešingai. Siauresnis tikslas – kad vėlesnio išpirkimo nebūtų galima susieti su pirkimu, kuris sukūrė žetoną. Tai konkreti, patikrinama savybė, ir būtent ją verta užrašyti.
Atsitiktinai atrodanti nešiklio eilutė to nesuteikia. Jei išdavėjas saugo vertę šalia kliento įrašo ir vartai gali paprašyti to atitikmens, abi sąveikos susiejamos duomenų baze, o ne kriptografija. Konstrukcija turi padaryti išdavėją nepajėgų atsakyti į tą klausimą, o diegimas turi neleisti išdavėjui ir vartams sujungti savo požiūrių.
Nuspręsk, ką autorizuoja vienas žetonas
«Vienas žetonas nuperka prieigą» operaciniu požiūriu beveik nieko neatsako. Ar vienetas yra vienas ryšys, laiko kvota, ar apimtis? Ar klientas, praradęs atsakymą, gali tęsti tą patį suteikimą? Kas nutinka, kai įrenginys iš naujo prisijungia keičiantis tinklui? Šie atsakymai nulemia, ar projektas tinkamas naudoti, ir kiekvienas jų turi pasekmių privatumui.
| Reuse rule | What it buys | What it leaks |
|---|---|---|
| Single use per connection | Strongest unlinkability between sessions | Frequent reissuance, more purchase-to-use timing pairs |
| Bounded time window | Fewer tokens, reconnects work | Activity inside the window is linkable |
| Long-lived grant | Operationally simple | Behaves like an account reference with extra steps |
Pasirink vieną sąmoningai ir šalia parašyk elgesį gedimo atveju. Klientas, kuris po laiko limito bando iš naujo su nauja teise, sunaudoja dar vieną vienetą, o tai kartu ir atsiskaitymų netikėtumas, ir privatumo signalas.
Aprašyk pakartotinio naudojimo ir atšaukimo politiką
Atšaukimas yra vieta, kur anoniminės konstrukcijos dažniausiai sulaužo savo pažadą. Prenumeratos atšaukimas ir jau išduotų žetonų anuliavimas yra skirtingos operacijos, o vartai, kurie tyliai atlieka paskyros paiešką sprendimui priimti, tuo metu jau nebėra anoniminiai.
Pasirink galiojimo laiką, išdavimo limitą ir atšaukimo istoriją, kurie derėtų tarpusavyje. Tada peržiūrėk pačių vartų įrašus, ieškodamas laukų, kurie sugrąžina pašalintą sąsają.
sudo grep -rIl --include='*.log' -e 'Bearer ' -e 'account_id' /var/log/vpn/
Ta paieška išvardija žurnalo failus su žetono ar paskyros laukais, ir tai pirmoji vieta, kur kruopštus projektas praktiškai nuteka. Sesijos įrašas, saugantis žetono vertę šalia paskyros identifikatoriaus, sugriauna visą konstrukciją, ir paprastai jis atsiranda per derinimo pakeitimą, kurio niekas nebeperskaitė.
Taip pat apibrėžk, ką vartai saugo pasibaigus sesijai. Trukmė, baitai ir galinis taškas naudingi operacijoms, ir kiekvienas jų yra dėlionės dalis, kurios stebėtojas norėtų. Laikyk saugojimo laikotarpį trumpą ir laukų sąrašą trumpą, tada peržiūrėk abu, kai derinimo pakeitimas prideda stulpelį. Niekas nepastebi naujo žurnalo lauko, kol jis ten nebuvo metus.
Suformuluok teiginį, o paskui likusius stebėjimus
Parašyk privatumo teiginį vienu sakiniu su jo prielaidomis: kuri šalis turi negalėti susieti kurių kontekstų, ir kas nutinka, jei išdavėjas ir vartai palygina savo užrašus. Projektas, atlaikantis tą sakinį, yra peržiūrimas; aprašytas tik kaip „nulinės žinios“ – ne.
Tada išvardyk, kas vis tiek lieka matoma. Šaltinio adresai, prisijungimo laikai, paketų dydžiai ir paprastas faktas, kad pirkimas įvyko kiek anksčiau, nei pasirodė vienintelis naujas ryšys, yra už kriptografijos ribų. Vienas klientas, kuris nusiperka vieną vienetą ir prisijungia kartą, susiejamas vien pagal laiką, ir joks žetonų projektas to nepakeis.
Sąžiningas rezultatas – siauresnė sąsaja tarp paskyros ir naudojimo, o ne nematoma sesija. Vis tiek verta ją kurti, jei dokumentacija taip sako ir operaciniai įrašai atitinka teiginį.