On Tuesday, March 12, 2019 at 11:32:38 AM UTC-7, Ryan Sleevi wrote:
> On Tue, Mar 12, 2019 at 2:22 PM Daymion Reynolds via dev-security-policy <
> dev-security-policy@lists.mozilla.org> wrote:
> 
> > The crux of the difference is in the DER format interpretation. The fact
> > prefix (0)s do count for entropy, provided none of the bits are fixed and
> > you have a minimum of 8 bytes in the serial. We discuss this in the Mozilla
> > post on 3/11/2019.
> >
> > For the DER format the first two (0)s of the value is the positive sign of
> > the integer. In our case if the un-signed integer value is 64bit and the
> > most significant bit is set, two additional (0)s will be prepended to
> > demonstrate a positive sign. In this case it will be 9bytes instead of
> > 8bytes. Always a minimum of 8bytes (64bits) of entropy. You do still have
> > to manage zero compression for integer values less than 72057594037927936,
> > which will result in 7bytes instead of 8bytes.
> >
> 
> Just making sure I've got the right message - this is
> https://groups.google.com/d/msg/mozilla.dev.security.policy/7WuWS_20758/9OKbI4xyCQAJ
> correct?
> 
> If viewing through groups' interface, you can click the arrow for "More
> Message Actions" to copy link.
> 
> To make sure I understand correctly, the statement is that GoDaddy
> generated 64 bits of entropy prior to DER encoding. This resulted in some
> serials that are exactly 8 octets (or even less, depending on leading zeros
> and minimal encoding) and some serials that are 9 or more octets.
> 
> The reduction from >1.8M certificates to 12K certificates is a statement
> that only those 12K certificates lacked a 64-bit entropy contribution? And
> possibly 273K certificates which GoDaddy does not consider issued, but
> otherwise made committments to issue (such as logging a pre-cert)?
> 
> To provide greater clarity about this incident, could you more fully
> describe your serial number generation algorithm (potentially including
> code or pseudo-code) that can help demonstrate how this system was
> compliant?

It is an accurate statement to say that GoDaddy generates 64 full bits of 
entropy prior to the DER encoding.  When these 64 bits are DER encoded, the 
result is either 8 or 9 octets written into the cert, depending on whether or 
not the most significant bit is a 0 (8 octets) or 1 (9 octets).  In the case of 
9 octets being written, the first octet is always “00” signifying the integer 
value is positive.  It is worth noting:  whether that extra “00” octet is 
present or not, there are always 64 randomly generated bits providing the 
needed entropy. 

RS - The reduction from >1.8M certificates to 12K certificates is a statement 
that only those 12K certificates lacked a 64-bit entropy contribution? 
DR – Yes, the 12k certs are only 7bytes or less and therefor do not meet the 
BRs. 

RS - possibly 273K certificates which GoDaddy does not consider issued, but 
otherwise made commitments to issue (such as logging a pre-cert)?
DR - Yes, in most cases we logged a pre-cert prior to final issuance and 
turnover to the requested. We want to start revoking these certificates as they 
should be disposed of if not fully issued. 


64bits_entropy = GetRandom64Bits() //This returns 64 random bits from a CSPRNG 
with at least one bit in the highest byte set to 1
CheckForDuplicate(64bits_entropy)//Verifies the serial is unique, otherwise 
repeat GetRandom64Bits()
Cert.SetSerialNumber(64bits_entropy) //The ANS.1 encoding will either write 
this number as 8 or 9 octets.  
_______________________________________________
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy

Reply via email to