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