Gruppeparametrane er offentlege av design, og nettopp denne offentleiken gjer dei lette å oversjå. I Diffie-Hellman over eit endeleg felt er modulus og generator delte, medan dei private eksponentane og dei resulterande øktenøklane ikkje er det. Den dyre fasen av eit åtak med talsikt er avhengig av gruppa og ikkje av éi utveksling, så éi svak gruppe brukt overalt blir eit felles ansvar. Å kalle parametrane offentlege er presist og utanfor poenget, fordi kostnaden som blir gjenbrukt, er kostnaden ved å åtake nettopp den gruppa.

Den offentlege halvdelen er ikkje den sårbare halvdelen, og der ligg fella

Det vanlege halvargumentet seier at parametrane er publiserte i ein standard, så ein åtakar kjenner dei allereie, og å skjule dei ville ikkje endre noko. Begge påstandane er sanne, og ingen av dei følgjer av den andre. Ei medfølgjande standardgruppe er offentleg, og ei privat gruppe du genererte førre veke er også synleg for alle som fullfører handtrykket. Hemmeleghald var aldri kontrollen; styrke og validering er det.

Det som endrar seg, er kor mange stader som deler same svakheit. Éin organisasjon som genererer si eiga 2048-bitsgruppe betalar si eiga åtakskostnad, medan eit protokollstandardval valt av millionar amortiserer éin kostnad over dei alle. Det er i den forstanden ei uvanleg gruppe ikkje automatisk er betre. Ei uvanleg gruppe som er for lita, er berre ein mindre felles hemmelegheit med færre augo på seg.

Validering betyr like mykje som storleik. Ein motpart som sender ein modulus med små faktorar, eller ein som ikkje har forma protokollen ventar, kan leke informasjon om den private eksponenten sjølv når bitlengda ser respektabel ut. Bibliotek som avviser feilaktige parametrar ved inngangen, gjer ein reell jobb, og difor er handskriven parameterparsing ein dårleg stad å spare krefter.

Kva førehandsurrekninga eigentleg gir ein åtakar

Talsiktet har ein fase som berre er avhengig av primtalet, og utdataa kan gjenbrukast mot kvar utveksling som brukar det primtalet. Det er heile mekanismen bak den historiske bekymringa: den dyre delen blir betalt éin gong, og marginalkostnaden for kvar vidare økt søkk. Friske eksponentar verner framleis kvar einskild utveksling mot ein passiv observatør, så lenge gruppa er stor nok til å gjere siktinga ugjennomføreleg. Dei to utsegnene er sameinlege, og dei fleste diskusjonane om emnet kjem av å velje den eine og droppe den andre.

Logjam-artikkelen frå 2015 demonstrerte ein nedgradering til 512-bits eksportgrad-Diffie-Hellman og anslo kva det ville koste å åtake større, breitt gjenbrukte grupper med betydelege ressursar. Demonstrasjonen var konkret, anslaga var anslag, og ingen av dei var bevis for at ei bestemd VPN-økt var dekryptert.

Siter artikkelen for mekanismen og for den demonstrerte nedgraderinga, ikkje som ei måling av utrullinga di. Gammal statistikk om kor mange tenarar som delte ei standardgruppe, skildrar internettet det året, ikkje eit nett du kan inspisere i dag. Det nyttige som blir overført, er spørsmålet: forhandlar einingane dine framleis ei gruppe som er lita eller svakt validert?

Standardisert er ikkje det same som svak

RFC 7919 definerer namngjevne grupper over endelege felt, slik at begge endar blir samde om ei gruppe ved hjelp av ein identifikator og brukar ein konsistent politikk. Å vere standardisert er ein fordel, fordi det fjernar uklarleiken i forhandlinga og lèt ein implementasjon avvise storleikar som ikkje er støtta. Ei namngjeven gruppe er svak berre når storleiken ligg under politikken du hevdar å følgje, ikkje fordi ho står i eit dokument. Den same logikken gjeld for elliptiske kurvegrupper, som har ein annan struktur og andre feilmodusar.

Hald konstruksjonane frå kvarandre når du resonnerer om dei. Ei konklusjon om Diffie-Hellman over eit endeleg felt seier ingenting om X25519, og ein konklusjon om ei 1024-bits MODP-gruppe seier ingenting om ei på 3072 bit. Styrkepolitikk er per mekanisme, per storleik og per protokollversjon, og difor er utsegna sterk kryptografi ikkje ei etterprøvbar utsegn.

Autentisering er den andre halvdelen, og ho erstattar ikkje. Ei sterk gruppe utan motpartsverifisering lèt ein åtakar stå i midten, og eit gyldig sertifikat kan ikkje redde ei 768-bits utveksling. Gå gjennom dei som to uavhengige liner, og stadfest deretter at begge faktisk blir forhandla.

Les den forhandla gruppa på ei ekte tilkopling

Les den forhandla gruppa frå eininga i staden for frå konfigurasjonsmalen. Malar skildrar intensjon, og den interessante verdien er den begge partar vart samde om under det siste handtrykket. På eit IPsec-endepunkt skriv statusutdataa vanlegvis ut det valde framlegget, inkludert MODP-gruppa.

Fang den lina før og etter ei politikkendring, og ta vare på begge i endringsloggen. Samanlikninga er beviset.

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

Viss statusen framleis viser den gamle gruppa etter endringa, har tilkoplinga ikkje forhandla på nytt, og konfigurasjonsendringa beviste ingenting. Start motparten på nytt eller slett tryggleiksassosiasjonen, og les deretter statusen igjen. Ein politikk som berre blir handheva på nye tilkoplingar, vil la langliva tunnelar stå på dei gamle parametrane så lenge dei er oppe.

Kontroller gruppa og identiteten til motparten kvar for seg

Skil det gruppa vernar, frå kven som er i den andre enden. Registrer nøkkelutvekslingsmetoden, gruppestorleiken og autentiseringsmetoden som tre felt, fordi dei feilar uavhengig av kvarandre. Ein tunnel som forhandla ei 3072-bitsgruppe men godtar eit kva som helst sertifikat, er ikkje same risiko som ein som festar ein motpart og brukar ei 2048-bitsgruppe.

Skriv ned akseptkriteria før gjennomgangen byrjar, slik at resultatet blir ei samanlikning og ikkje ei meining. Ein minstegruppestorleik per protokollversjon, ei tillatingsliste for namngjevne grupper og obligatorisk motpartsverifisering er nok til å gjere avgjerda mekanisk. Uklarleiken i den lista er det som gjer ein gjennomgang til ein diskusjon, og diskusjonar blir ikkje retta opp. Då er utdataa ei liste over endepunkt som bryt ein oppgitt 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 dei forhandla verdiane på nytt etter rettinga. Ei samsvarande konfigurasjonsfil er ikkje bevis for at ein tunnel har teke henne i bruk. Statusutdataa og eitt friskt handtrykk er beviset, og å samle dei tek mindre tid enn møtet om korvidt dei trengst.

Relaterte artiklar