TLS-nøkkelutveksling mot klientcertifikat: kva loggar inn?
Skil nøkkelavtale frå klientautentisering og applikasjonsidentitet, og les handtrykksmeldingane som viser kva ein tilkopling faktisk brukte.
Å bera ein offentleg nøkkelutvekslingsverdi i eit handtrykk er ikkje same hendinga som ein klient som loggar inn. Det eine etablerer kryptografisk tilstand for tilkoplinga; det andre seier kven klienten er, og det skjer berre når tenaren ber om det og utvekslinga støttar det. Å handsame det fyrste som det andre fører til gale slutningar om kva ein VPN skjuler og ikkje skjuler. Les meldingane, og avgjer deretter kva av fire eigenskapar du faktisk observerte.
To objekt som ser like ut i eit opptak
Ein TLS 1.3-klient kan bidra med nøkkelutvekslingsmateriale i fyrste flyginga si utan å leggje fram noko sertifikat. Det bidraget er offentleg av design, fordi tenaren treng det for å utleie den delte hemmelegheita. Eit klientcertifikat er ei anna melding og blir berre sendt etter at tenaren har bedt om eitt. Det ber ein identitet som tenaren deretter stadfestar, og gjensidig autentisering er ei avgjerd tenaren tek, ikkje ein eigenskap ciphersuiten inneber. Applikasjonsidentitet er noko heilt tredje: eit innloggingsskjema, eit bearer-token, ein cookie. Ingen av dei blir synte i handtrykket, og alle overlever ei endring av nettverksvegen.
| Object in play | What it establishes |
|---|---|
| Key-exchange share | Cryptographic state for this connection |
| Server certificate | Which server the client reached |
| Client certificate | Client authentication, when requested |
| Application session | Account identity inside the application |
Dei fire radene er uavhengige. Ei tilkopling kan ha rad éin og to, hoppe over rad tre og likevel bera rad fire i ein cookie-header.
Avgjer kva eit fanga handtrykk kan prova
Berre frå handtrykket lærer ein observatør den forhandla versjonen, ciphersuiten, sertifikatet til tenaren og dei offentlege nøkkelutvekslingsverdiane. Det er nok til å ta eit fingeravtrykk av ein klientimplementasjon og til å sjå kva tenar som vart kontakta. Det det ikkje gir, er den private tilstanden som trengst for å dekryptera tilkoplinga; hemmeleghaldet kviler på den efemere utvekslinga og ikkje på den offentlege delen. Det gir heller ikkje ein kontoinentitet, som aldri var i handtrykket til å byrje med.
Så den ærlege slutninga er smal: det vart ikkje lagt fram noko klientcertifikat i denne utvekslinga. Det er ikkje slik at klienten ikkje sende noko som kan koplast, og slett ikkje at økta ikkje bar nokon identifikator.
Les meldingane i staden for chiffre-namnet
Spør tenaren kva han ber om, i staden for å utleie det frå ciphersuiten. Eit TLS 1.3-handtrykk med ein sertifikatførespurnad er synleg i transkriptet, og fråværet er like synleg.
openssl s_client -connect app.example.net:443 -tls1_3 -msg < /dev/null 2>&1 | grep -i -E 'key_share|CertificateRequest'
Gjenta deretter med eit konfigurert klientcertifikat, og samanlikn. Den andre køyringa skal visa at sertifikatet blir sendt og godteke; den fyrste skal ikkje visa noko, og det er den konkrete skilnaden argumentet handlar om.
openssl s_client -connect app.example.net:443 -tls1_3 -cert client.pem -key client.key -quiet
Treng du berre den vanlege nettlesarsaka, er dei detaljerte utdataa frå klienten nok til å sjå protokollversjonen, stadfestingsresultatet og om det vart tilbode eit klientcertifikat. Ein tenar som aldri sender ein sertifikatførespurnad, kan ikkje ha motteke ein.
Der gjenopptaking endrar svaret
Gjenopptaking i TLS 1.3 brukar billettar knytte til hemmeleg tilstand, slik at ei seinare tilkopling kan fullførast utan full sertifikatutveksling. Det reduserer kva ein observatør ser og endrar kva transkriptet provar. Det skaper ikkje ein identitet der det ikkje var nokon. Ei gjenoppteken økt høyrer framleis til same applikasjonsøkta, og kvar cookie eller token i den økta blir verande identifikatoren som tel.
Difor går ei personvernvurdering som stoppar ved "ingen klientcertifikat" glipp av den interessante delen. Spørsmålet er kva part som held ein stabil identifikator, ikkje kva melding som mangla i eitt handtrykk.
Noter fire eigenskapar, ikkje éin dom
Skriv nøkkelavtale, tenarstadfesting, klientautentisering og applikasjonsidentitet som fire skilde linjer, med belegget for kvar. Den oversikta overlever endringar i protokollversjon, og ho gjer eit personvernargument etterprøvbart av andre. Legg deretter til kva nettverksvegen bidreg med. Ein VPN endrar kjeldeadressa ein teneste ser; han fjernar ikkje ei innlogging, ein cookie eller eit einingfingeravtrykk som applikasjonen alt har.
Noter den forhandla versjonen av tilkoplinga og resultatet av sertifikatførespurnaden saman, fordi nettopp det paret treng ein vurderar for å gjenskape slutninga di utan eige opptak.