Gruppeparametrene er offentlige av design, og nettopp denne offentligheten gjør dem lette å overse. I Diffie-Hellman over et endelig felt er modulus og generator delt, mens de private eksponentene og de resulterende øktnøklene ikke er det. Den dyre fasen av et angrep med tallsikt avhenger av gruppen og ikke av én utveksling, så én svak gruppe brukt overalt blir et felles ansvar. Å kalle parametrene offentlige er presist og utenfor poenget, fordi kostnaden som gjenbrukes, er kostnaden ved å angripe nettopp den gruppen.

Den offentlige halvdelen er ikke den sårbare halvdelen, og der ligger fellen

Det vanlige halvargumentet sier at parametrene er publisert i en standard, så en angriper kjenner dem allerede, og å skjule dem ville ikke endre noe. Begge påstandene er sanne, og ingen av dem følger av den andre. En medfølgende standardgruppe er offentlig, og en privat gruppe du genererte forrige uke er også synlig for alle som fullfører håndtrykket. Hemmelighold var aldri kontrollen; styrke og validering er det.

Det som endres, er hvor mange steder som deler samme svakhet. Én organisasjon som genererer sin egen 2048-bitsgruppe betaler sin egen angrepskostnad, mens et protokollstandardvalg valgt av millioner amortiserer én kostnad over dem alle. Det er i den forstand en uvanlig gruppe ikke automatisk er bedre. En uvanlig gruppe som er for liten, er bare en mindre felles hemmelighet med færre øyne på seg.

Validering betyr like mye som størrelse. En motpart som sender en modulus med små faktorer, eller en som ikke har formen protokollen forventer, kan lekke informasjon om den private eksponenten selv når bitlengden ser respektabel ut. Biblioteker som avviser feilaktige parametre ved inngangen, gjør en reell jobb, og derfor er håndskrevet parameterparsing et dårlig sted å spare krefter.

Hva forhåndsberegningen egentlig gir en angriper

Tallsiktet har en fase som bare avhenger av primtallet, og utdataene kan gjenbrukes mot hver utveksling som bruker det primtallet. Det er hele mekanismen bak den historiske bekymringen: den dyre delen betales én gang, og marginalkostnaden for hver videre økt synker. Ferske eksponenter beskytter fortsatt hver enkelt utveksling mot en passiv observatør, så lenge gruppen er stor nok til å gjøre siktingen uigjennomførbar. De to utsagnene er forenlige, og de fleste diskusjonene om emnet kommer av å velge det ene og droppe det andre.

Logjam-artikkelen fra 2015 demonstrerte en nedgradering til 512-bits eksportgrad-Diffie-Hellman og anslå hva det ville koste å angripe større, bredt gjenbrukte grupper med betydelige ressurser. Demonstrasjonen var konkret, anslagene var anslag, og ingen av dem var bevis for at en bestemt VPN-økt var dekryptert.

Siter artikkelen for mekanismen og for den demonstrerte nedgraderingen, ikke som en måling av din utrulling. Gammel statistikk om hvor mange servere som delte en standardgruppe, beskriver datidens internett, ikke et nettverk du kan inspisere i dag. Det nyttige som overføres, er spørsmålet: forhandler enhetene dine fortsatt en gruppe som er liten eller svakt validert?

Standardisert er ikke det samme som svak

RFC 7919 definerer navngitte grupper over endelige felt, slik at begge ender blir enige om en gruppe ved hjelp av en identifikator og anvender en konsistent policy. Å være standardisert er en fordel, fordi det fjerner uklarheten i forhandlingen og lar en implementasjon avvise størrelser som ikke støttes. En navngitt gruppe er svak bare når størrelsen ligger under policyen du hevder å følge, ikke fordi den står i et dokument. Den samme logikken gjelder for elliptiske kurvegrupper, som har en annen struktur og andre feilmoduser.

Hold konstruksjonene fra hverandre når du resonnerer om dem. En konklusjon om Diffie-Hellman over et endelig felt sier ingenting om X25519, og en konklusjon om en 1024-bits MODP-gruppe sier ingenting om en på 3072 bit. Styrkepolicy er per mekanisme, per størrelse og per protokollversjon, og derfor er utsagnet sterk kryptografi ikke et etterprøvbart utsagn.

Autentisering er den andre halvdelen, og den erstatter ikke. En sterk gruppe uten motpartsverifisering lar en angriper stå i midten, og et gyldig sertifikat kan ikke redde en 768-bits utveksling. Gå gjennom dem som to uavhengige linjer, og bekreft deretter at begge faktisk forhandles.

Les den forhandlede gruppen på en ekte tilkobling

Les den forhandlede gruppen fra enheten i stedet for fra konfigurasjonsmalen. Maler beskriver intensjon, og den interessante verdien er den begge parter ble enige om under det siste håndtrykket. På et IPsec-endepunkt skriver statusutdataene vanligvis ut det valgte forslaget, inkludert MODP-gruppen.

Fang den linjen før og etter en policyendring, og ta vare på begge i endringsloggen. Sammenligningen er beviset.

ipsec statusall | grep -Ei "proposal|ESP|IKE"
openssl dhparam -in /etc/vpn/dh3072.pem -check -noout

Hvis statusen fortsatt viser den gamle gruppen etter endringen, har tilkoblingen ikke forhandlet på nytt, og konfigurasjonsendringen beviste ingenting. Start motparten på nytt eller slett sikkerhetsassosiasjonen, og les deretter statusen igjen. En policy som bare håndheves på nye tilkoblinger, vil la langlivede tunneler stå på de gamle parametrene så lenge de er oppe.

Kontroller gruppen og motpartens identitet hver for seg

Skill det gruppen beskytter, fra hvem som er i den andre enden. Registrer nøkkelutvekslingsmetoden, gruppestørrelsen og autentiseringsmetoden som tre felt, fordi de feiler uavhengig av hverandre. En tunnel som forhandlet en 3072-bitsgruppe men godtar et hvilket som helst sertifikat, er ikke samme risiko som en som fester en motpart og bruker en 2048-bitsgruppe.

Skriv ned akseptkriteriene før gjennomgangen begynner, slik at resultatet blir en sammenligning og ikke en mening. En minstegruppestørrelse per protokollversjon, en tillatelsesliste for navngitte grupper og obligatorisk motpartsverifisering er nok til å gjøre beslutningen mekanisk. Uklarheten i den listen er det som gjør en gjennomgang til en diskusjon, og diskusjoner blir ikke utbedret. Da er utdataene en liste over endepunkter som bryter en angitt regel.

ipsec statusall | grep -Ei "peer|auth|cert"
openssl s_client -connect vpn.acme.example:443 -brief -cipher 'DHE-RSA-AES256-GCM-SHA384'

Lukk sirkelen ved å lese de forhandlede verdiene på nytt etter utbedringen. En samsvarende konfigurasjonsfil er ikke bevis for at en tunnel har tatt den i bruk. Statusutdataene og ett ferskt håndtrykk er beviset, og å samle dem tar mindre tid enn møtet om hvorvidt de trengs.

Relaterte artikler