Certificate Transparency Linus Nordberg, NORDUnet
[email protected] 0x3291265
Tech Day by Init 2015, Stockholm
Intro
I
Någon som hört talas om Certificate Transparency (CT)?
I
Certificate Transparency tillhandahåller detektion
I
Skydd som en slags sekundäreffekt
Problem med PKI
I
CA – Certification Authority
I
Intygar att publik nyckel hör till domännamn
I
Genom att binda publik nyckel till namn, i ett s.k. certifikat
I
Ingen hierarki – alla CA intygar godtycklig bindning
I
Din webbläsare litar på över 1000 CA-nycklar från 150-250 organisationer
I
Revokering är svårt
I
Ett allvarligt problem som kan uppstå när CA sjabblar kallas “man in the middle” (MITM)
I
Comodo, DigiNotar, ANSSI, Symantec
CT-loggar
I
Publicera alla certifikat på publika anslagstavlor – loggar
I
Webbläsare kräver inkludering i loggar En logg är
I
I I I
publik – alla kan lägga till, alla kan verifiera append-only – data ändras inte och försvinner inte verifierbar – utomstående kan effektivt verifiera korrekthet
I
Domänägare – de enda som egentligen vet vilka cert som ska vara utfärdade – monitorerar loggar
I
RESTful http-API RFC6962, JSON med Base64-kodade TLS-records
Datastrukturer
I
Loggen lagrar cert-kedjor i en databas
I
Konsistens ska kunna verifieras av vem som helst
I
Hash-kedja à la blockchain? Dyr att verifiera
I
Merkle-träd! Trädhuvudet fixerar samtliga poster
I
Bevis är billiga att tillverka, skicka och verifiera
Merkle-träd
I
Löven är hashar över log-entryn leaf0 = H(cert0 ), leaf1 = H(cert1 )
I
Noderna är hashar över sina två barn node00 = H(leaf0 + leaf1 ) node10 = H(node00 + node01 )
Merkle-träd
Preimage-attack
I
Användaren väljer input – varning för kollisioner!
I
“Second preimage attack” är att givet m hitta H(m) = H(m’)
I
Samma funktion för löv som för noder betyder problem
I
Vad händer om ett löv innheåller två konkatinerade syskon-hashar?
I
Föräldern blir identisk med en annan nod i trädet
I
Detta fel finns i amazons backup-tjänst “glacier”
API
I
Sänd in cert ==> Signed Certificate Timestamp (SCT)
I
SCT är ett löfte om inkludering i loggen, inom en viss tid
I
Hämta senaste signerade trädhuvud (STH) Hämta bevis
I
I I
I
konsistens mellan två träd inklusion, givet en entry-hash
Hämta poster baserat på index i loggen
Verifiering och bevis
I I
Bevis för “cert2 i head3”: leaf3, node0_0
Verifiering och bevis
I
Bevis för “cert2 i head3”: leaf3, node0_0
I
Bevis för “head3 del av head6”: node1_1
Roller i CT-systemet
Vad kan upptäckas
I
“The lying CA” – felaktigt utfärdande (“misissuance”) I I I I
I
slarv (Symantec 2015) lurad att signera ett falskt förhållande förlorad nyckel (Comodo 2011, DigiNotar 2011) luras medvetet, t.ex. p.g.a. påtryckningar (ANSSI 2013)
En lurig log kan visa olika vyer – vi behöver “gossip”
Status
I
Chrome kräver att EV-cert är loggade
I
Flera fall av felaktigt utfärdande har redan upptäckts Standardisering
I
I I I I
I
RFC6962 draft-ietf-trans-rfc6962-bis draft-ietf-trans-gossip draft-ietf-trans-threat-analysis
Log-implementationer I I
Google https://github.com/google/certificate-transparency NORDUnet https://www.ct.nordu.net/
Frågor