<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<base href="https://shibboleth.atlassian.net">
<title>Message Title</title>
</head>
<body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429">
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5"> <!-- header here -->
<tbody>
<tr>
<td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="https://secure.gravatar.com/avatar/2f98d29d4ac57bc97153bbbc19937838?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FBP-2.png" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td>
<td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="557058:97de0981-adc3-4044-95ed-131622fad81e" style="color:#3b73af;; color: #3b73af; text-decoration: none" id="email_557058:97de0981-adc3-4044-95ed-131622fad81e" href="https://shibboleth.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3A97de0981-adc3-4044-95ed-131622fad81e"> Brent Putman </a> <strong>commented</strong> on <a href="https://shibboleth.atlassian.net/browse/OSJ-355?atlOrigin=eyJpIjoiYzU2M2QyOGM1ZTcyNGQ0NmEwNWQ3ZGM2NzFjZDRlYmEiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-a4d81d73-5698-4e32-a692-8b5a23030d05" height="16" width="16" border="0" align="absmiddle" alt="Bug"> OSJ-355</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px">
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate">
<tbody>
<tr> <!-- there needs to be content in the cell for it to render in some clients -->
<td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff"> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://shibboleth.atlassian.net/browse/OSJ-355?atlOrigin=eyJpIjoiYzU2M2QyOGM1ZTcyNGQ0NmEwNWQ3ZGM2NzFjZDRlYmEiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">Re: ConcatKDF parameter requirements too restrictive in ECDH</a> </span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="text-paragraph-pattern-top" class="email-content-main mobile-expand comment-top-pattern" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; border-bottom: none; padding-bottom: 0" bgcolor="#ffffff">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tbody>
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <p style="margin: 10px 0 0; margin-top: 0">In no particular order:</p> <p style="margin: 10px 0 0">I was initially skeptical that a value of “00” was legal for these bitstring fields. It’s essentially indicating that 0 padding bits were added to a bitstring <b>that doesn’t exist (is empty)</b>, which to me is kind of dumb at best, and confusing and nonsensical at worst. But upon reading the spec again, specifically noting the numerous “00” examples (which, yes, are non-normative) which I had missed in the past since they are in other sections of the spec, I think it probably is legal. At least, in XML Encryption 1.1 sec 5.6.1, in the padding algorithm for the XML encoding, they don’t specifically preclude this syntax. So as long as a bitstring of length 0 is considered to have a length that is a multiple of 8 (trivially so), then I’d say “00” is probably legal, albeit stupid IMHO.</p> <p style="margin: 10px 0 0">So that means there’s 3 different syntactic ways in XML of indicating the same “no value” value:</p>
<ol>
<li>Sending no attribute at all (legal since the attribute is optional)</li>
<li>Sending as the empty string, e.g. AlgorithmID=”” (possibly legal or not, depending on how strictly one interprets things)</li>
<li>Sending as the “00”, e.g. AlgorithmID=”00”</li>
</ol> <p style="margin: 10px 0 0">All of those are functionally equivalent since after the XML is parsed/decoded, the value passed as input to the implementation of the KDF is essentially going to be no value (for concat purposes, an empty byte[]).</p> <p style="margin: 10px 0 0">So on the essence of this bug report, unless someone convinces me otherwise by having a different read of the XML spec, I’m inclined to relax this restriction and treat “00” as a legal value. I don’t think that has any security ramifications since the functional end result is the same as having sent no XML attribute at all.</p> <p style="margin: 10px 0 0">More generally:</p> <p style="margin: 10px 0 0">In NIST SP 800-56, those three algorithm inputs (<tt>AlgorithmID</tt>, <tt>PartyUInfo</tt>, <tt>PartyVInfo</tt>) are mandatory, meaning they actually have to have non-empty values. See section 5.8.1. For all 5 of the bitstring inputs, each is also actually to be treated as a concat of subfields, where each subfield is either fixed lengh or length+data. But all of that detail is TBD by deployers, etc.</p> <p style="margin: 10px 0 0">For AlgorithmID they don’t provide any further normative guidance on the content (subfields), but for PartyUInfo and PartyVInfo they do have a minimal requirement:</p>
<div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="codeContent panelContent" style="padding: 9px 12px">
<pre class="code-none" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">At a minimum, PartyUInfo shall include [ID sub U], the identifier of party U. </pre>
</div>
</div> <p style="margin: 10px 0 0">(Same for party V).</p> <p style="margin: 10px 0 0">NIST compliance isn’t required by XML Encryption. But in order to claim NIST compliance those three would have to be non-empty and the PartyUInfo and PartyVInfo have to have specific ID data. That means it’s not possible to default in anything that would achieve NIST compliance. Each RP would have to be configured with values for that IdP-SP pairing. The OpenSAML config machinery, including in the IdP, does allow that.</p> <p style="margin: 10px 0 0">In XML Encryption they say:</p> <p style="margin: 10px 0 0">“The <tt>AlgorithmID</tt>, <tt>PartyUInfo</tt>, <tt>PartyVInfo</tt>, <tt>SuppPubInfo</tt> and <tt>SuppPrivInfo</tt> attributes are as defined in [<a href="https://www.w3.org/TR/xmlenc-core1/#bib-SP800-56A" class="external-link" rel="nofollow noreferrer" style="color: #3b73af; text-decoration: none">SP800-56A</a>]. Their presence is optional but <tt>AlgorithmID</tt>, <tt>PartyVInfo</tt> and <tt>PartyUInfo</tt> <em>MUST</em> be present for applications that need to comply with [<a href="https://www.w3.org/TR/xmlenc-core1/#bib-SP800-56A" class="external-link" rel="nofollow noreferrer" style="color: #3b73af; text-decoration: none">SP800-56A</a>].”</p> <p style="margin: 10px 0 0">By my read, including the context of the NIST spec section 5.8.1, by “be present” in the second sentence they do not mean the mere presence of some value for the XML attributes - they mean those attributes must contain meaningful non-empty value inputs to the algorithm as required by the NIST. So the syntactic expression of of “no value” in XML does not satisfy that, since after XML value decoding/unpadding those are empty when input to the KDF impl. So sending a “no value” for those 3 inputs: </p>
<div class="preformatted panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="preformattedContent panelContent" style="padding: 9px 12px">
<pre style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal; white-space: pre; word-break: normal; word-wrap: break-word; word-break: break-all; white-space: pre-wrap"><xenc11:ConcatKDFParams AlgorithmID="00" PartyUInfo="00" PartyVInfo="00"></pre>
</div>
</div> <p style="margin: 10px 0 0">does NOT satisfy NIST compliance. Once would need to send actual non-empty values that satisfy the specifics of the NIST spec in order to achieve that.</p> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> <script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"description": "View Issue",
"potentialAction": {
"@type": "ViewAction",
"target": "https://shibboleth.atlassian.net/browse/OSJ-355?inbox=true&focusedCommentId=33036&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-33036",
"name": "View Comment"
},
"publisher": {
"@type": "Organization",
"name": "Atlassian",
"url": "https://www.atlassian.com"
}
}
</script>
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tbody>
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://shibboleth.atlassian.net/browse/OSJ-355#add-comment?atlOrigin=eyJpIjoiYzU2M2QyOGM1ZTcyNGQ0NmEwNWQ3ZGM2NzFjZDRlYmEiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-3655e3cb-8386-4a3d-a511-8ac1873309f3" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td>
<td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://shibboleth.atlassian.net/browse/OSJ-355#add-comment?atlOrigin=eyJpIjoiYzU2M2QyOGM1ZTcyNGQ0NmEwNWQ3ZGM2NzFjZDRlYmEiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr> <!-- there needs to be content in the cell for it to render in some clients -->
<tr>
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff"> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-mobile-separated-links" class="mobile-resize-text" width="100%" colspan="2" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> Get Jira notifications on your phone! Download the Jira Cloud app for <a href="https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail" style="color: #3b73af; text-decoration: none">Android</a> or <a href="https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailNotificationLink&mt=8" style="color: #3b73af; text-decoration: none">iOS</a>
<hr> </td>
</tr>
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian Jira <span id="footer-build-information">(v1001.0.0-SNAPSHOT#100201-<span title="66eda1fef6779fe48dbb523efbbb80a654325d1e" data-commit-id="66eda1fef6779fe48dbb523efbbb80a654325d1e}">sha1:66eda1f</span>)</span> </td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px; opacity: 0.150"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-838241d4-53b3-44c6-b7ed-3bf45e105261" alt="Atlassian logo" title="Atlassian logo" width="192" height="24" class="image_fix"> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table>
</body>
</html>