Certificate Transparency with Privacy
Saba Eskandarian, Eran Messeri, Joe Bonneau, Dan Boneh Stanford Google NYU Stanford
Certificate Transparency with Privacy Saba Eskandarian, Eran - - PowerPoint PPT Presentation
Certificate Transparency with Privacy Saba Eskandarian, Eran Messeri, Joe Bonneau, Dan Boneh Stanford Google NYU Stanford Certificate Authorities Public Key Certificate Authorities Public Key Certificate CA Certificate apo-CA-lypse
Saba Eskandarian, Eran Messeri, Joe Bonneau, Dan Boneh Stanford Google NYU Stanford
Certificate Authorities
Public Key
Certificate Authorities
Public Key Certificate Certificate CA
apo-CA-lypse
apo-CA-lypse
Outline
Certificate Transparency (CT)
Idea: public, verifiable log of all certificates
Public Key Certificate Certificate CA
Certificate Transparency (CT)
Idea: public, verifiable log of all certificates
Public Key Certificate Certificate CA Log ...
Certificate Transparency (CT)
Idea: public, verifiable log of all certificates
Public Key Certificate Certificate CA Log ...
Certificate Transparency (CT)
Idea: public, verifiable log of all certificates
Public Key Certificate, SCT Certificate, SCT CA Log ... Certificate SCT
Certificate Transparency (CT)
Idea: public, verifiable log of all certificates
Public Key Certificate, SCT Certificate, SCT CA Log ... Certificate SCT
Certificate Transparency (CT)
Idea: public, verifiable log of all certificates
Public Key Certificate, SCT Certificate, SCT CA Log ... Certificate SCT
CT logging required by chrome for all sites starting October 2017!
Transparency and Privacy?
Outline
CA
Redaction: keeping secrets on a public log
Request Certificate secret.facebook.com Precertificate secret.facebook.com SCT secret.facebook.com Certificate, SCT secret.facebook.com Log ...
Problem: secret.facebook.com is publicly visible on the log!
CA
Redaction: keeping secrets on a public log
Log ... Request Certificate secret.facebook.com Precertificate secret.facebook.com SCT secret.facebook.com Certificate, SCT secret.facebook.com Redacted Redacted
Problem: secret.facebook.com is publicly visible on the log!
Usage: c ← Commit(m, r) Verify(c, m, r) Security Properties: Hiding: given commitment Commit(m, r), can’t find m Binding: given commitment Commit(m, r), can’t decommit to m’ ≠ m
Tools: Commitments
r val Commit(m, r)
Usage: c ← Commit(m, r) Verify(c, m, r) Security Properties: Hiding: given commitment Commit(m, r), can’t find m Binding: given commitment Commit(m, r), can’t decommit to m’ ≠ m
Tools: Commitments
r
Usage: c ← Commit(m, r) Verify(c, m, r) Security Properties: Hiding: given commitment Commit(m, r), can’t find m Binding: given commitment Commit(m, r), can’t decommit to m’ ≠ m
Tools: Commitments
r val r Verify( , val, r)
Subdomain Redaction via Commitments
Request Certificate
secret.facebook.com secret.facebook.com
Log ... CA
Subdomain Redaction via Commitments
Request Certificate
secret.facebook.com secret.facebook.com
Log ... Precertificate
secret.facebook.com
CA
Subdomain Redaction via Commitments
Request Certificate
secret.facebook.com secret.facebook.com
Log ... Precertificate
secret.facebook.com
SCT
secret.facebook.com .facebook .com
CA
Subdomain Redaction via Commitments
Request Certificate
secret.facebook.com secret.facebook.com
Log ... Precertificate
secret.facebook.com
SCT
secret.facebook.com
Certificate
secret.facebook.com
SCT: secret.facebook.com SCT Opening:
.facebook .com
CA
Subdomain Redaction via Commitments
Page Request: secret.facebook.com
Subdomain Redaction via Commitments
Page Request: secret.facebook.com Certificate
secret.facebook.com
SCT: secret.facebook.com SCT Opening:
Subdomain Redaction via Commitments
Page Request: secret.facebook.com Verify( , secret, ) Certificate
secret.facebook.com
SCT: secret.facebook.com SCT Opening:
Security
How can a monitor still check the log? Knowledge of number of entries per domain owner reveals extra certificates Why can’t a malicious site or CA reuse an existing redacted SCT? Binding property of commitment
Outline
Privacy-Compromising Proof of Exclusion
1 2 3 4 5 6 7 8 9 10 Log Excluded SCT secret.facebook.com
Privacy-Compromising Proof of Exclusion
1 2 3 4 5 6 7 8 9 10 Log Excluded SCT secret.facebook.com
Goals
misbehaving
Goals
misbehaving Then:
to all browsers)
Goals
misbehaving Then:
to all browsers) Assumption: timestamps in order
What Does Auditor Prove?
1 2 3 4 5 6 7 8 9 10 Log Excluded SCT
What Does Auditor Prove?
1 t=4 2 t=18 3 t=21 4 t=27 5 t=30 6 t=38 7 t=41 8 t=42 9 t=50 10 t=59 Log t=25 Excluded SCT
Assumption: timestamps in order
What Does Auditor Prove?
1 t=4 2 t=18 3 t=21 4 t=27 5 t=30 6 t=38 7 t=41 8 t=42 9 t=50 10 t=59 Log t=25 Excluded SCT
Assumption: timestamps in order
What Does Auditor Prove?
1 t=4 2 t=18 3 t=21 4 t=27 5 t=30 6 t=38 7 t=41 8 t=42 9 t=50 10 t=59 Log t=25 3 t=21 4 t=27
What Does Auditor Prove?
1 t=4 2 t=18 3 t=21 4 t=27 5 t=30 6 t=38 7 t=41 8 t=42 9 t=50 10 t=59 Log What about privacy?! t=25 3 t=21 4 t=27
Tools: Additively Homomorphic Commitments
val2 val1
Tools: Additively Homomorphic Commitments
val2 val1
Tools: Additively Homomorphic Commitments
val2 val1 val1+val2
Tools: Zero-Knowledge Proofs
A
Tools: Zero-Knowledge Proofs
A B
Tools: Zero-Knowledge Proofs
A B A A
Tools: Zero-Knowledge Proofs
A B A A val
val sk
Tools: Zero-Knowledge Proofs
A B A A val
val sk
Tools: Zero-Knowledge Proofs
A B A A val
val sk
Proof of Exclusion
1 t=4 2 t=18 3 t=21 4 t=27 5 t=30 6 t=38 7 t=41 8 t=42 9 t=50 10 t=59 Log What about privacy?! t=25 3 t=21 4 t=27
Proof of Exclusion
1 t=4 2 t=18 3 t=21 4 t=27 5 t=30 6 t=38 7 t=41 8 t=42 9 t=50 10 t=59 Log What about privacy?! X Y Z Index(X) Time(X) Index(Z) Time(Z) Time(Y)
Proof of Exclusion
Y X Z
Index(X) Index(Z) Time(Z) Time(X)
Proof of Exclusion
Time(Y)
Y X Z
Index(X) Index(Z) Time(Z) Time(X)
Proof of Exclusion
Time(Y)
Y X Z
Index(X) Index(Z) Time(Z) Time(X)
Proof of Exclusion
Time(Y)
Y X Z
Index(X) Index(Z) Time(Z) Time(X)
Proof of Exclusion
Time(Y)
Y X Z Are these numbers really from the log?
5 4 3 12 11
Proof of Exclusion
Y X Z hehehe...
Proof of Exclusion
Needed for proof X
Index(X) Time(X)
skH
Proof of Exclusion
New signatures from log Needed for proof X
Index(X) Time(X) H(x)+Index(X) H(x) H(x)+Time(X)
skI skT
Proof of Exclusion
New signatures from log Needed for proof X
Index(X) Time(X) H(X)
skH
H(x)+Index(X) H(x) H(x)+Time(X)
skI skT
Proof of Exclusion
New signatures from log Needed for proof X
Index(X) Time(X) H(X)
+ +
skH
H(x)+Index(X) H(x) H(x)+Time(X)
skI skT
Proof of Exclusion
New signatures from log Needed for proof X
Index(X) Time(X) H(X) H(x)+Index(X) H(x)+Time(X)
+ +
skH
H(x)+Index(X) H(x) H(x)+Time(X)
skI skT
Proof of Exclusion
New signatures from log Needed for proof X
Index(X) Time(X) H(X) H(x)+Index(X) H(x)+Time(X)
+ +
skH
H(x)+Index(X) H(x) H(x)+Time(X)
skI skT
Performance Numbers
Online Costs Proof Size: 333 kB Time to generate: 5.0 seconds Time to verify: 2.3 seconds Offline Costs (storage) Growth of log entry: 480 bytes Growth of SCT: 160 bytes Revocation notice size: 32 bytes
Summary
○ Compatibility between CT and need for private domain names ○ Reporting CT log misbehavior without revealing private information See paper for details and security proofs: https://arxiv.org/pdf/1703.02209.pdf