tls-auth verzus tls-crypt: čo každá z volieb v OpenVPN chráni
tls-auth podpisuje riadiace pakety, tls-crypt ich aj skrýva. Ani jedna nenahrádza overenie certifikátov ani šifru dát a nezhoda vyzerá ako ticho.
Obe voľby používajú spoločný súbor s kľúčom a obe sťažujú falšovanie prevádzky handshake, preto sa s nimi zaobchádza ako s dvoma názvami tej istej funkcie. Nie sú. Jedna podpisuje riadiace pakety, druhá ich aj šifruje, a ani jedna nemá nič spoločné so šifrou, ktorá chráni váš obsah.
Tento rozdiel je dôležitý, keď sa profil nedokáže pripojiť, keď sa bezpečnostný audit pýta, čo kľúč chráni, a keď niekto predpokladá, že súbor navyše robí tunel šifrovaným nejakým bližšie neurčeným spôsobom.
Čo spoločný kľúč skutočne chráni
Kľúč, ktorý tieto voľby používajú, patrí riadiacemu kanálu: výmene, ktorá dojednáva parametre, preukazuje identity a odvodzuje kľúče dát. Je to vopred zdieľané tajomstvo, ktoré musia mať oba konce, kým môže handshake pokračovať. Keďže stojí pred overením identity, nesprávny kľúč zastaví rozhovor skôr, než by to urobilo nesprávne heslo. Toto poradie vysvetľuje, prečo je režim zlyhania taký tichý.
tls-auth používa toto tajomstvo na výpočet HMAC nad riadiacimi paketmi. Paket bez platného podpisu sa zahodí skôr, než sa dostane k drahšiemu spracovaniu TLS, a preto sa táto voľba často opisuje ako prvý filter, nie ako náhrada TLS.
tls-crypt ide ďalej a chránenú riadiacu prevádzku okrem overenia aj šifruje. Obsah certifikátov, dohodnuté názvy šifier a ďalšie podrobnosti handshake už nie sú v sieti viditeľné a pozorovateľ bez kľúča nevidí ani to, ktorá verzia TLS sa skúša. Pre nasadenie, ktoré sa obáva prezradenia svojej odtlačky VPN, je táto vlastnosť hlavným dôvodom, prečo ju zvoliť. Stále je to skupinové tajomstvo, nie poverenie pre jednotlivého používateľa.
Ani jeden mechanizmus nevydáva identity. Spoločný kľúč je skupinové tajomstvo a každý, kto ho má, môže splniť túto vrstvu kontroly.
V čom sa obe voľby líšia
Pozorovateľný rozdiel je v tom, čo pozorovateľ vidí. S tls-auth je handshake viditeľný, ale bez kľúča neoveriteľný. S tls-crypt je handshake nepriehľadný pre každého, kto kľúč nemá.
Líši sa aj konfigurácia. tls-auth sa používa s hodnotou smeru, takže jedna strana používa jednu polovicu kľúčového materiálu a druhá strana druhú polovicu. tls-crypt používa jeden kľúč v oboch smeroch, takže direktíva smeru k jeho usporiadaniu nepatrí.
V moderných verziách sa obe voľby navzájom vylučujú. Profil má niesť jednu z nich, nie obe, a server s klientom sa musia zhodnúť, ktorú, s rovnakým kľúčovým materiálom. Ponechanie starej direktívy vedľa novej je častý zvyšok po migrácii. Odstráňte tú neaktívnu, aby ďalší čitateľ vedel, ktorá vrstva skutočne platí.
Novšia varianta, tls-crypt-v2, viaže každého klienta na jeho vlastný zabalený kľúč, takže zrušenie jedného klienta nevyžaduje znovu vydať skupinový kľúč. Stojí za to o nej vedieť, ale je to iná voľba a nie je synonymom ani jednej z tých dvoch tu.
Prečo nezhoda vyzerá, akoby sa nič nedialo
Keď sa zdieľaný materiál nezhoduje, protistrana pakety zahodí bez toho, aby odosielateľovi povedala prečo. Niet žiadnej chyby overenia na čítanie, pretože paket nikdy nedorazil do vrstvy, ktorá by ju vytvorila.
Klient to skúša znova, server nič nehovorí a príznak vyzerá ako problém so sieťou. Ľudia potom reštartujú službu, znova opisujú heslo k účtu alebo odstránia ochrannú direktívu, aby ju «otestovali», čo nasadenie mení, namiesto toho, aby ho diagnostikovalo.
V logu servera čítajte prvú sťažnosť na úrovni paketu, nie posledný riadok opakovaného pokusu. Overte, že obe strany nesú rovnakú voľbu s rovnakým kľúčovým materiálom a že kľúčový súbor nebol znova vygenerovaný len na jednej strane.
Odstránenie direktívy nie je bezpečná oprava. Vypína vrstvu ochrany pre každého klienta a tunel, ktorý potom funguje, dokazuje len to, že tou nezhodou bola práve táto vrstva.
Čo je ešte potrebné nastaviť zvlášť
Tieto voľby neoverujú, kto je protistrana. Overenie certifikátov, dôveryhodný koreň a očakávaný názov servera zostávajú samostatnými požiadavkami a žiadna z nich sa nestáva nepovinnou pre prítomnosť spoločného kľúča.
Tiež nevyberajú šifru dát. To je samostatné vyjednávanie, ktoré riadia nastavenia dátového kanála na oboch stranách, a tunel chránený pomocou tls-crypt môže aj tak použiť šifru, ktorú ste nezamýšľali.
Napokon si starostlivosť vyžaduje samotný spoločný kľúč. Chovajte sa k nemu ako k tajomstvu, distribuujte ho schváleným kanálom a vymeňte ho, keď odíde ktokoľvek, kto ho mal. Keďže je zdieľaný, jeho prezradenie je prezradením každého koncového bodu, ktorý ho používa.