<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
That’s a good start :)
<div class=""><br class="">
</div>
<div class="">I find it unfortunate that we need to define in BRs what a CSPRNG is, though.</div>
<div class=""><br class="">
<div class="">
<div class="">Cordialement,</div>
<div class="">Erwann Abalea</div>
</div>
<br class="">
<div>
<blockquote type="cite" class="">
<div class="">Le 19 avr. 2016 à 16:01, Tim Hollebeek <<a href="mailto:THollebeek@trustwave.com" class="">THollebeek@trustwave.com</a>> a écrit :</div>
<br class="Apple-interchange-newline">
<div class="">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)" class="">
<style class=""><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.im
        {mso-style-name:im;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div lang="EN-US" link="blue" vlink="purple" class="">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class="">This is actually a pet peeve of mine that I’d like to fix, though unfortunately it is hard to fix.  One of the first security projects I was ever involved
 in involved exploiting bad random number generators to predict who would win a poker hand based on just your own hole cards and the flop (<a href="https://www.cigital.com/papers/download/developer_gambling.php" class="">https://www.cigital.com/papers/download/developer_gambling.php</a>).<o:p class=""></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class=""> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class="">Various security standards have tried with varying degrees of success to describe entropy requirements with generally poor results.  A first stab is:<o:p class=""></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class=""> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class="">---<o:p class=""></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class="">A blah blah blah (serial number, challenge, etc) must be generated using at least N bits from a cryptographically strong pseudorandom number generator.<o:p class=""></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class=""> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class="">Definition (Cryptographically strong pseudorandom number generator): An algorithm that uses cryptographic functions to generate pseudorandom numbers
 that cannot be predicted by anyone who does not have knowledge of the internal data describing the current state of the generator.<o:p class=""></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class="">---<o:p class=""></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class=""> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class="">It’s not perfect, because you can use cryptographic functions and still build a bad PRNG (hello NSA!), but at least it rules out all the really bad
 ones like rand() that don’t use any cryptographic functions at all, and should allow all existing and future secure PRNGs.<o:p class=""></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class=""> </span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class="">-Tim<o:p class=""></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D" class=""> </span></p>
<p class="MsoNormal"><b class=""><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" class="">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" class="">
<a href="mailto:public-bounces@cabforum.org" class="">public-bounces@cabforum.org</a> [<a href="mailto:public-bounces@cabforum.org" class="">mailto:public-bounces@cabforum.org</a>]
<b class="">On Behalf Of </b>Ryan Sleevi<br class="">
<b class="">Sent:</b> Tuesday, April 19, 2016 9:42 AM<br class="">
<b class="">To:</b> Ben Wilson<br class="">
<b class="">Cc:</b> CABFPub<br class="">
<b class="">Subject:</b> Re: [cabfpub] Pre-Ballot 164 - Certificate Serial Number Entropy<o:p class=""></o:p></span></p>
<p class="MsoNormal"><o:p class=""> </o:p></p>
<div class="">
<p class="MsoNormal">Ben, is there any thought further on 'unpredictable bits'?<o:p class=""></o:p></p>
<div class="">
<p class="MsoNormal"><o:p class=""> </o:p></p>
</div>
<div class="">
<p class="MsoNormal">While I realize Richard disagreed, I do think it creates a possibility for a CA to argue that they're using unpredictable bits from, say, a Microsoft GUID generator, but such bits are not unpredictable. My hope would be to provide objective
 and unambiguous criteria, since, as we've seen from this discussion, 'unpredictable bits' and 'entropy' seem to cause some confusion.<o:p class=""></o:p></p>
</div>
</div>
<div class="">
<p class="MsoNormal"><o:p class=""> </o:p></p>
<div class="">
<p class="MsoNormal">On Tue, Apr 19, 2016 at 6:24 AM, Ben Wilson <<a href="mailto:ben.wilson@digicert.com" target="_blank" class="">ben.wilson@digicert.com</a>> wrote:<o:p class=""></o:p></p>
<p class="MsoNormal">Then I'll move forward with the  ballot if we have two endorsers.<br class="">
<br class="">
<span class="im">-----Original Message-----</span><br class="">
<span class="im">From: Peter Bowen [mailto:<a href="mailto:pzb@amzn.com" class="">pzb@amzn.com</a>]</span><br class="">
<span class="im">Sent: Monday, April 18, 2016 9:16 PM</span><br class="">
<span class="im">To: Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>></span><o:p class=""></o:p></p>
<div class="">
<div class="">
<p class="MsoNormal" style="margin-bottom:12.0pt">Cc: CABFPub <<a href="mailto:public@cabforum.org" class="">public@cabforum.org</a>><br class="">
Subject: Re: [cabfpub] Pre-Ballot 164 - Certificate Serial Number Entropy<br class="">
<br class="">
I looked at certificates across all CT logs that had notBefore dates in March 2016.  Only 549 unique certificates had more than 20 bits but less than 61 bits in the serial number.  They were spread among many CAs.  >From the looks of it, I’m guessing that some
 CAs using a random number between 0 and N (probably 2^64 or 2^128) and some percentage of the time the value chosen is less than 2^61.  I used 2^61 as that is 16 hex digits which is a good approximation of 64-bits.<br class="">
<br class="">
So, I would say that almost everyone is using at least 64-bit serial numbers already.<br class="">
<br class="">
> On Apr 18, 2016, at 3:45 PM, Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>> wrote:<br class="">
><br class="">
> On the cablint report for the 20 bits of entropy, <a href="http://scanmail.trustwave.com/?c=4062&d=_7WW1-Xsik0C2oQr-Abmw1rpiv0FhB9gtfVo4c10-Q&s=5&u=https%3a%2f%2fcrt%2esh%2f%3fcablint%3d38" target="_blank" class="">
https://crt.sh/?cablint=38</a>, there  are 20 certificates that were listed.  If this changes to 64 bits, how many more certificates will be on the list?<br class="">
><br class="">
> From: <a href="mailto:public-bounces@cabforum.org" class="">public-bounces@cabforum.org</a> [mailto:<a href="mailto:public-bounces@cabforum.org" class="">public-bounces@cabforum.org</a>] On Behalf Of Ben Wilson<br class="">
> Sent: Monday, April 18, 2016 10:25 AM<br class="">
> To: CABFPub <<a href="mailto:public@cabforum.org" class="">public@cabforum.org</a>><br class="">
> Subject: [cabfpub] FW: Pre-Ballot 164 - Certificate Serial Number Entropy<br class="">
><br class="">
> Forwarding<br class="">
><br class="">
> From: Kane York [mailto:<a href="mailto:kanepyork@gmail.com" class="">kanepyork@gmail.com</a>]<br class="">
> Sent: Monday, April 18, 2016 10:23 AM<br class="">
> To: Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>>; Erwann Abalea <<a href="mailto:Erwann.Abalea@docusign.com" class="">Erwann.Abalea@docusign.com</a>><br class="">
> Cc: <a href="mailto:questions@cabforum.org" class="">questions@cabforum.org</a><br class="">
> Subject: Re: [cabfpub] Pre-Ballot 164 - Certificate Serial Number Entropy<br class="">
><br class="">
><br class="">
> On Fri, Apr 15, 2016 at 7:52 AM Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>> wrote:<br class="">
> I didn’t think it was that simple.  For instance, see <a href="http://scanmail.trustwave.com/?c=4062&d=_7WW1-Xsik0C2oQr-Abmw1rpiv0FhB9gtfZt5Zwiog&s=5&u=https%3a%2f%2fen%2ewikipedia%2eorg%2fwiki%2fPassword%5fstrength" target="_blank" class="">
https://en.wikipedia.org/wiki/Password_strength</a><br class="">
><br class="">
> From: Erwann Abalea [mailto:<a href="mailto:Erwann.Abalea@docusign.com" class="">Erwann.Abalea@docusign.com</a>]<br class="">
> Sent: Friday, April 15, 2016 8:44 AM<br class="">
> To: Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>><br class="">
> Cc: CABFPub <<a href="mailto:public@cabforum.org" class="">public@cabforum.org</a>><br class="">
><br class="">
> Subject: Re: [cabfpub] Pre-Ballot 164 - Certificate Serial Number Entropy<br class="">
><br class="">
> Bonjour,<br class="">
><br class="">
> 20 bits of entropy is the same as 20 bits unpredictable bits.<br class="">
><br class="">
> Whence, 64 bits of entropy is a higher requirement than 20 bits of entropy.<br class="">
><br class="">
> Cordialement,<br class="">
> Erwann Abalea<br class="">
><br class="">
> No, it definitely is that simple.<br class="">
><br class="">
> I think the confusion here is the definition of "hex characters".<br class="">
><br class="">
> > Our CA issues certificates with 32 hexadecimal characters for the serial number.<br class="">
><br class="">
> This is not possible - you cannot have 32 ASCII characters in the serial number.<br class="">
> The most likely truth given that explanation is that you have 16 fully random bytes. Which would be 16 * 8 = 128 random bits, satisfying the entropy requirements.<br class="">
><br class="">
> 3 fully random bytes would satisfy the 20-bit requirement.<br class="">
> 6 fully random hexadecimal ASCII characters encoded in the serial number would satisfy the 20-bit requirement.<br class="">
><br class="">
> 8 fully random bytes is required to satisfy the 64-bit requirement.<br class="">
> 16 bytes with 4 bits of entropy each, which ASCII-encoded hexadecimal would be, would satisfy the entropy requirement and leave you 3.875 bytes left over for other information.<br class="">
><br class="">
><br class="">
> Le 15 avr. 2016 à 16:32, Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>> a écrit :<br class="">
><br class="">
> Forwarding<br class="">
><br class="">
> From: Man Ho (Certizen) [mailto:<a href="mailto:manho@certizen.com" class="">manho@certizen.com</a>]<br class="">
> Sent: Thursday, April 14, 2016 7:51 PM<br class="">
> To: Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>>; Ryan Sleevi <<a href="mailto:sleevi@google.com" class="">sleevi@google.com</a>><br class="">
> Cc: <a href="mailto:public@cabforum.org" class="">public@cabforum.org</a><br class="">
> Subject: Re: [cabfpub] Pre-Ballot 164 - Certificate Serial Number Entropy<br class="">
><br class="">
> Ben,<br class="">
><br class="">
> We had already changed our system to issue SSL certificates with 20 hexadecimal characters of at least 20-bit of entropy since 2014. I'm just wondering why the requirement is changed from "bits of entropy" to "unpredictable bits", which I don't understand
 the conversion (like "cm" to "inch" :). I don't know whether our software vendor understands it.<br class="">
><br class="">
> Man<br class="">
><br class="">
> On 4/15/2016 4:24 AM, Ben Wilson wrote:<br class="">
> You’re right, given a randomly generated 20-byte serial number, you have 159 unpredictable bits.<br class="">
><br class="">
> From: Ryan Sleevi [mailto:<a href="mailto:sleevi@google.com" class="">sleevi@google.com</a>]<br class="">
> Sent: Thursday, April 14, 2016 2:03 PM<br class="">
> To: Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>><br class="">
> Cc: Man Ho (Certizen) <<a href="mailto:manho@certizen.com" class="">manho@certizen.com</a>>;
<a href="mailto:public@cabforum.org" class="">public@cabforum.org</a><br class="">
> Subject: Re: [cabfpub] Pre-Ballot 164 - Certificate Serial Number Entropy<br class="">
><br class="">
> Ben:<br class="">
><br class="">
> Are you sure your math is correct? A serial number is 20 bytes, with the high bit needing to be 1 (for the encoding of positive INTEGERS within DER). This leaves 159 bits for entropy. So you certainly can't have more unpredictable bits than that :)<br class="">
><br class="">
> On Thu, Apr 14, 2016 at 12:59 PM, Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>> wrote:<br class="">
> Man,<br class="">
> Have you had a chance to do  further research on the capabilities of your system?   Our CA issues certificates with 32 hexadecimal characters for the serial number.  There are 4 bits of entropy for each hexadecimal character.  Therefore, our serial numbers
 have 128 bits of entropy and 16*32= 512 unpredictable bits.  An 8-hexadecimal character serial number would have 32 bits of entropy and 128 unpredictable bits.  A 20-bit entropy would be equal to 5 hexadecimal characters, or 80 unpredictable bits, so this
 seems like this is a downgrade to go to 64 unpredictable bits.  Am I right?<br class="">
> Ben<br class="">
><br class="">
> From: Man Ho (Certizen) [mailto:<a href="mailto:manho@certizen.com" class="">manho@certizen.com</a>]<br class="">
> Sent: Wednesday, March 23, 2016 12:27 AM<br class="">
> To: Ben Wilson <<a href="mailto:ben.wilson@digicert.com" class="">ben.wilson@digicert.com</a>>;
<a href="mailto:public@cabforum.org" class="">public@cabforum.org</a><br class="">
> Subject: Re: [cabfpub] Pre-Ballot 164 - Certificate Serial Number Entropy<br class="">
><br class="">
> Hi all,<br class="">
><br class="">
> Is the meaning of "at least 64 unpredictable bits" setting the same or a higher requirement than "at least 20 bits of entropy" ? I'm not quite sure whether our certificate generation software has this setting in itself.<br class="">
><br class="">
> Cheers<br class="">
> Man<br class="">
><br class="">
> On 3/1/2016 12:21 AM, Ben Wilson wrote:<br class="">
> REPLACE<br class="">
> "CAs SHOULD generate non-sequential Certificate serial numbers that exhibit at least 20 bits of entropy"<br class="">
> WITH<br class="">
> "Effective April 1, 2016, CAs SHALL use a Certificate serialNumber greater than zero (0) that contains at least 64 unpredictable bits."<br class="">
><br class="">
><br class="">
> _______________________________________________<br class="">
> Public mailing list<br class="">
> <a href="mailto:Public@cabforum.org" class="">Public@cabforum.org</a><br class="">
> <a href="http://scanmail.trustwave.com/?c=4062&d=_7WW1-Xsik0C2oQr-Abmw1rpiv0FhB9gtaA94Mx38A&s=5&u=https%3a%2f%2fcabforum%2eorg%2fmailman%2flistinfo%2fpublic" target="_blank" class="">
https://cabforum.org/mailman/listinfo/public</a><br class="">
><br class="">
><br class="">
><br class="">
> _______________________________________________<br class="">
> Public mailing list<br class="">
> <a href="mailto:Public@cabforum.org" class="">Public@cabforum.org</a><br class="">
> <a href="http://scanmail.trustwave.com/?c=4062&d=_7WW1-Xsik0C2oQr-Abmw1rpiv0FhB9gtaA94Mx38A&s=5&u=https%3a%2f%2fcabforum%2eorg%2fmailman%2flistinfo%2fpublic" target="_blank" class="">
https://cabforum.org/mailman/listinfo/public</a><br class="">
><br class="">
> _______________________________________________<br class="">
> Public mailing list<br class="">
> <a href="mailto:Public@cabforum.org" class="">Public@cabforum.org</a><br class="">
> <a href="http://scanmail.trustwave.com/?c=4062&d=_7WW1-Xsik0C2oQr-Abmw1rpiv0FhB9gtaA94Mx38A&s=5&u=https%3a%2f%2fcabforum%2eorg%2fmailman%2flistinfo%2fpublic" target="_blank" class="">
https://cabforum.org/mailman/listinfo/public</a><br class="">
> _______________________________________________<br class="">
> Public mailing list<br class="">
> <a href="mailto:Public@cabforum.org" class="">Public@cabforum.org</a><br class="">
> <a href="http://scanmail.trustwave.com/?c=4062&d=_7WW1-Xsik0C2oQr-Abmw1rpiv0FhB9gtaA94Mx38A&s=5&u=https%3a%2f%2fcabforum%2eorg%2fmailman%2flistinfo%2fpublic" target="_blank" class="">
https://cabforum.org/mailman/listinfo/public</a><o:p class=""></o:p></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br class="">
_______________________________________________<br class="">
Public mailing list<br class="">
<a href="mailto:Public@cabforum.org" class="">Public@cabforum.org</a><br class="">
<a href="http://scanmail.trustwave.com/?c=4062&d=_7WW1-Xsik0C2oQr-Abmw1rpiv0FhB9gtaA94Mx38A&s=5&u=https%3a%2f%2fcabforum%2eorg%2fmailman%2flistinfo%2fpublic" target="_blank" class="">https://cabforum.org/mailman/listinfo/public</a><o:p class=""></o:p></p>
</div>
<p class="MsoNormal"><o:p class=""> </o:p></p>
</div>
</div>
<br class="">
<hr class="">
<font face="Arial" color="Gray" size="1" class=""><br class="">
This transmission may contain information that is privileged, confidential, and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information
 contained herein (including any reliance thereon) is strictly prohibited. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format.<br class="">
</font></div>
_______________________________________________<br class="">
Public mailing list<br class="">
<a href="mailto:Public@cabforum.org" class="">Public@cabforum.org</a><br class="">
https://cabforum.org/mailman/listinfo/public<br class="">
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>