On 28/07/16 07:35, Manger, James wrote:
The redaction mechanism in draft-ietf-trans-rfc6962-bis-18 hides a DNS
label by replacing it with HASH( key-id + label) in a logged
pre-certificate. The key-id appears in the pre-certificate so anyone can
do a dictionary attack: see a precertificate in a log, then try possible
labels until the hash matches. If you wanted to redact, say, 8-digit
customer ids used as DNS labels it would only take seconds for anyone to
undo a redaction by calculating a 100 million hashes.

Is this the best we can do?

Is this the best we want to do (eg so a domain owner can do the
dictionary attack with all the labels the domain uses if they see an
unexpected pre-certificate)?

I think it's the best we want to do.

There was a discussion about redaction on the Chrome ct-policy list a few months ago. The Chrome team decided that they would not support the redaction mechanism specified in 6962-bis-14, but indicated that they'd be willing to reconsider this if/when the various concerns expressed in [2] have been addressed.

Since then, as you noted, we've changed the redaction mechanism to allow the domain owner to do a dictionary attack if they see an unexpected precertificate. This was in response to this concern...
  "As I indicated, we haven't really found a viable policy here that
   might allow for the 'un'redaction of certificates, short of
   observing them in the wild. This definitely leaves significant risks
   in the ecosystem, both for current and future domain holders, and
   makes it challenging to support redaction." [2]

If this is so, I think this limitation needs to be stated clearly in §4
“Private Domain Name Labels”, and §13 “Security Considerations”.
Perhaps: “Redaction can obfuscate a domain name label, but if it is
feasible to enumerate all possible labels (because they don’t have
sufficient entropy) then the redacted label can be recovered”.

Good idea. I think §14.1 (Privacy Considerations -> Ensuring Effective Redaction) would be the appropriate place to add this detail.

If this is not so, using HASH(salt + label) for redaction should work;
where the salt is conveyed in a certificate extension that is removed
when constructing the pre-certificate [as someone else suggested].

There seems little point in defining a redaction mechanism in 6962-bis that the Chrome team are unlikely to ever accept. ISTM that they'd never accept HASH(salt + label), because it doesn't address the 'un'redaction concern.

That said, if anyone has any alternative proposals for 'un'redaction, I'd love to hear them.


[1] https://groups.google.com/a/chromium.org/d/msg/ct-policy/fCt4Bm03GsI/jBbqE_QWBQAJ

[2] https://groups.google.com/a/chromium.org/d/msg/ct-policy/vsTzv8oNcws/imuC3iloBwAJ

--
Rob Stradling
Senior Research & Development Scientist
COMODO - Creating Trust Online

_______________________________________________
Trans mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/trans

Reply via email to