Peter Bowen and I have been collaborating on a possible solution for 
certificate privacy. Thoughts?

++++++++++


Precertificate Transformation Extension



Many of the concerns around certificate privacy (the ability to privatize some 
certificate fields) are due to fears that multiple final certs could be 
generated for the same precertificate. This solution uses a random key in the 
final certificate which can be matched against the hashed redacted information 
in the precertificate to demonstrate that the precertificate was unique. The 
precert contains a hash of the original information; without the key in the 
full certificate, the hash is not transformable, and if the key works to 
transform the hash (as a one way function), the pre certificate can be proven 
to have been the correct one issued for the full cert. This solves the 
difficult problem of ensuring that a given precert is the one that was indeed 
issued for the full certificate.


In order to give domain registrants options for what domain name labels are 
disclosed in precertificates, we propose a new certificate extension: 
Precertifcate Transformation.  This extension is found in both the final 
certificate and in the precertificate.  The extension specifies a 
transformation algorithm, genneral parameters for the algorithm, and a count of 
disclosed component per subject alternative name.



There are two transformation algorithms initially defined.  The basic algorithm 
is as described in 6962 and 6962bis.  It has no parameters and the 
sanDisclosedComponents component is not used. This algorithm is the default.



The second is the partialhm256 algorithm.  This extends the basic algorithm by 
including transformation of the subjectAlternativeName extension.  The Parms is 
a 128-bit value that is used as K for a HMAC (cf RFC 2104) that uses H = 
SHA256.  For each entry in the subjectAlternativeName extension, an entry in 
the sanPartialComponents sequence must exist.  Matching is done by order.  Let 
the disclosed components count for the entry in question be N.  If N is -1, 
then the SAN entry is unmodified.  If it is greater than or equal to zero, then 
the following transformations occur:

(1) If the GeneralName type is not dNSName or iPAddress, the result is 
undefined and an error must be thrown

(2) If the GeneralName type is dNSName, then the entry is replaced with an 
otherName entry of type id-ct-partialGN-dNSName with a value created by copying 
the N labels closest to the root to the new name and prepending them with a 
value created by taking the remaining labels and calculating the HMAC-SHA256 
value and hex encoding it and prepending '#'.  Note that a '*.' prefix on a 
name is not considered a label; it must be copied to the output as is.



For example, if the input is "*.beta.group.secret.demo.test" with key 
0x4fa1cb4ce23db6e45caf727b0b1d85ed and the number of disclosed labels is 2, 
then the resulting name is 
"*.#4d240f70beb97f4c402984e94ac6e1c8351c89ff13e8a94dabfbc474ded4d3d4.demo.test"



(3) If the GeneralName type is iPAddress, then the entry is replaced with an 
otherName entry of type id-ct-partialGN-iPAddress.  The value is a IA5String in 
the format <partial> + "|" + <hashed>.   For the hashed part, the address first 
is converted to a text string.  The format is dotted decimal, with no leading 
zeroes, for IPv4 addresses and is as described in Section 4 of RFC 5952 for 
IPv6 addresses (section 5 is not used in this case).  The HMAC-SHA256 value is 
calculated of this string as in (2) and <hashed> is the hex encoding of the 
result.  Partial is formed by setting the bits other than N most significant 
bits to zero and the converting to string as described above.



For example, if the input is "198.51.100.47" with key 
0x4fa1cb4ce23db6e45caf727b0b1d85ed and the number of disclosed labels is 27, 
then the resulting name is 
"198.51.100.32|8e38c51f339de29c05e543a099ba76468367043d5bc167c801ae0330a648925d".



In the precertificate the transformation parameter is set to a zero length bit 
string.



If the subject contains a commonName type attribute and the value of the 
commonName attribute value matches a dNSName in the SAN and the precertificate 
contains a partialGN otherName in place of that entry, then the commonName 
attribute is replaced with a id-ct-partialGN-replacedCN type attribute with the 
value being the otherName value.



This algorithm provides the recipient of a full certificate the ability to 
deterministically create the precertificate.  It also ensures that the 
precertificate can only reasonably match one full certificate.



id-ct-precertificateTransformation ID ::= {1 3 187 97 1}

id-ct-partialGN ID ::= {1 3 187 97 10}

id-ct-partialGN-dNSName ID ::= {id-ct-redactedGN 2} # type IA5String

id-ct-partialGN-iPAddress ID ::= {id-ct-redactedGN 7} # type IA5String

id-ct-partialGN-replacedCN ID ::= {id-ct-redactedGN 127} # type IA5String

id-ct-taAlgorithm ::= {1 3 187 97 20}

id-ct-taAlgorithm-basic ::= {id-ct-taAlgorithm 1}

id-ct-taAlgorithm-partialhm256 ::= {id-ct-taAlgorithm 2}



precertificateTransformation EXTENSION ::= {

  SYNTAX PrecertificateTransformation

  IDENTIFIED BY id-ct-precertificateTransformation

}



PrecertificateTransformation ::= SEQUENCE {

  transformationAlgorithm TransformationAlgorithm DEFAULT 
id-ct-taAlgorthim-basic,

  transformationParms TransformationParms BIT STRING OPTIONAL,

  sanPartialCount SEQUENCE SIZE (1..MAX) OF NamePartialCount OPTIONAL

}



TransformationAlgorithm ::= OBJECT IDENTIFIER



TransformationParms ::= ANY



NamePartialCount ::= INTEGER (-1..127) DEFAULT -1






--
Tarah M. Wheeler

Principal Security Advocate and Sr Director of Engineering - Website Security -
Delivering Confidence for Customers and Consumers by Securing Websites and 
Applications
Symantec Corporation
www.symantec.com<http://www.symantec.com/>
________________________________
(206) 276-4920
[email protected]
________________________________
[cid:4524896B-C0DD-4A56-BA9D-E836A716603F]<http://www.symantec.com/>
________________________________

This message (including any attachments) is intended only for the use of the 
individual or entity to which it is addressed and may contain information that 
is non-public, proprietary, privileged, confidential, and exempt from 
disclosure under applicable law or may constitute as attorney work product. If 
you are not the intended recipient, you are hereby notified that any use, 
dissemination, distribution, or copying of this communication is strictly 
prohibited. If you have received this communication in error, notify us 
immediately by telephone and (i) destroy this message if a facsimile or (ii) 
delete this message immediately if this is an electronic communication.
_______________________________________________
Trans mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/trans

Reply via email to