<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium;">Nat,</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><br></div><br><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">For signatures we need RSA (2048 or 3072) with a SHA256 hash and (PKCS #1 v1.5 or PSS) padding.<div><br></div><div>The older signatures are deprecated by NIST as of 12/31/2010. That applies to keysizes &lt; 2048 and the SHA1 hash Algorithm.</div><div><br></div><div>PSS padding is preferred but not required.</div><div><br></div><div>There is a requirement that the RSA exponent be greater then 65,537. &nbsp; That however is part of the certificate being used so I think we can leave that to profiles to specify.</div><div><br></div><div><br></div><div>For symmetric &nbsp;encryption Triple DES - CBC is supported but AES-128 CBC is preferred.</div><div><br></div><div><br></div><div>My preference is to just make AES-128 CBC the mandatory to implement algorithm and default.</div><div><span class="Apple-style-span" style="font-family: sans-serif; "><a id="aes128-cbc" href="http://www.w3.org/2001/04/xmlenc#aes128-cbc" name="aes128-cbc" style="color: rgb(102, 0, 153); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: initial initial; ">http://www.w3.org/2001/04/xmlenc#aes128-cbc</a></span></div><div><br></div><div>There are pure PHP and other implementations</div><div><a href="http://www.phpaes.com/">http://www.phpaes.com/</a></div><div><br></div><div>So I think we can keep it simple:)</div><div><br></div><div>All signing is RSA SHA256 with PKCS #1 v1.5 padding (RSA-SHA256)</div><div><span class="Apple-style-span" style="font-family: Times; "><pre style="word-wrap: break-word; white-space: pre-wrap; "><a href="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256">http://www.w3.org/2001/04/xmldsig-more#rsa-sha256</a></pre></span><div><br></div></div><div><br></div><div>The default encryption is AES-128 CBC with RSA Key Transport</div><div><br></div><div><span class="Apple-style-span" style="font-family: sans-serif; "><a id="aes128-cbc" href="http://www.w3.org/2001/04/xmlenc#aes128-cbc" name="aes128-cbc" style="color: rgb(102, 0, 153); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: initial initial; ">http://www.w3.org/2001/04/xmlenc#aes128-cbc</a></span></div><div><font class="Apple-style-span" face="sans-serif"><a href="http://www.w3.org/2001/04/xmlenc#rsa-1_5" style="color: rgb(0, 0, 204); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: initial initial; ">http://www.w3.org/2001/04/xmlenc#rsa-1_5</a></font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">The reality is that most implementations will not use this, and the ones that will are going to require meeting NIST standards.</font></div><div><font class="Apple-style-span" face="sans-serif">So supporting the older algorithms just adds complexity.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">There may be jurisdictional requirements by jurisdiction eg France</font></div><div><font class="Apple-style-span" face="sans-serif"><a href="http://www.opengroup.org/security/meetings/apr98/french-regulation.pdf">http://www.opengroup.org/security/meetings/apr98/french-regulation.pdf</a></font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">I think we are probably OK for authentication but if they consider this for confidentiality then we need to support a weaker encryption for French RP.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">I am personally OK with not doing that, and letting the French Gov try and stop the RP from using the default.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">In 7.4 we could add a&nbsp;</font></div><div><font class="Apple-style-span" face="sans-serif">openid.enc_alg Value: (optional) The RP's preferred symmetric encryption algorithm. &nbsp;The value is a URL from&nbsp;<a href="http://www.w3.org/2001/04/xmlenc#rsa-1_5" style="color: rgb(0, 0, 204); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; ">http://www.w3.org/2001/04/xmlenc</a></font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">That way if a RP and OP wanted to use AES-256 for some top secret thing they could.</font></div><div><font class="Apple-style-span" face="sans-serif">Or we could just list the three AES URI in the spec directly.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">The other thing we should consider is leveraging the IETF CMS support already in openSSL.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">One command could take a openID response and sign/encrypt and base64encode the message.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">With the reverse on the other end.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">S/Mime is based on CMS&nbsp;</font></div><div><font class="Apple-style-span" face="sans-serif"><a href="http://www.openssl.org/docs/apps/cms.html">http://www.openssl.org/docs/apps/cms.html</a></font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif"><a href="http://www.faqs.org/rfcs/rfc3852.html">http://www.faqs.org/rfcs/rfc3852.html</a></font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">CMS is way more sophisticated than we need but it allready exists.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">The less people need to think about the crypto the happier they will be.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div><div><font class="Apple-style-span" face="sans-serif">John B.</font></div><div><font class="Apple-style-span" face="sans-serif"><br></font></div></div></div><br></body></html>