<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 5 Nov 2019, at 15:40, Marcos Sanz <<a href="mailto:sanz@denic.de" class="">sanz@denic.de</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hi Roland,<br class=""><br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">I've been thinking about this conglomerate of issues and it'd be <br class=""></blockquote></blockquote>actually <br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">easier if the TA self-signed statement were *not* part of the chain: <br class=""></blockquote></blockquote>the <br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">Consumer should be configured with the TA's name (the issuer URI) and <br class=""></blockquote></blockquote>TA <br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">public key, and it could stop walking up the chain once it finds an ES <br class=""></blockquote></blockquote><br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">whose iss and signature match these two configured values.<br class=""></blockquote><br class="">When how to get self-signed information became different from how to <br class="">get information about an entity from another entity then the TA's <br class=""></blockquote>self-signed<br class=""><blockquote type="cite" class="">statement was removed from the trust chain. This may not have been <br class=""></blockquote>spelled out <br class=""><blockquote type="cite" class="">clearly enough.<br class=""></blockquote><br class="">ok, I see. Simmilarly to what RFC 5280 does, though, I'd expect the <br class="">Consumer to be explicitly configured with both, the TA-identifier and its <br class="">public key, and not only the latter like the document currently does (at <br class="">least, that's what it looks to me).<br class=""></div></div></blockquote><div><br class=""></div>Ah, sorry I thought that went without saying. But one should be explicit about these things.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><blockquote type="cite" class=""><br class="">Well, it all starts with the TA. If you don’t trust the TA then you’re <br class=""></blockquote>smoked.<br class=""><blockquote type="cite" class="">The Federation spec hinges on the fact that you do trust the TA.<br class=""></blockquote><br class="">I see it exactly the other way round: you start with a self-signed leaf <br class="">statement and you walk your way up the trust chain via auth_hints *hoping <br class="">to find* a TA.</div></div></blockquote><div><br class=""></div>I wasn’t talking about the process of gathering the trust chain. </div><div>Indeed what you’re describing is exactly how it must be done.</div><div><br class=""></div><div>What I was alluding to was that if you don’t trust the trust anchor that you </div><div>find at the end of a chain, then of course you can’t trust the trust chain.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div class=""> But until you do so (if you do so!), everything on the <br class="">journey is not to be trusted and a potential attack vector. </div></div></blockquote><div><br class=""></div>Correct.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div class="">For instance: <br class="">I am scared about rogue intermediate FEs that publish ESs via their <br class="">federation API endpoint with fake issuers and keys that do not relate to <br class="">them whatsoever (it's true that the problem would remain compartmentalized <br class="">with the JWT typing we are introducing further down, but still).<br class=""></div></div></blockquote><div><br class=""></div>The only check you might want to do on the way from the leaf statement until you have</div><div>the whole chain is on the self-signed statements that you pick up along the way.</div><div>I’m not saying that this should make you trust them before you have the whole chain but</div><div>if you have a self-signed statement I think it would be a good idea to verify the signature </div><div>on that statement before moving on.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div class="">While inspecting the workflow anew under this light I found out that it'd <br class="">be important to add in 6.1.2 the requirement for the Consumer to verify <br class="">that iss and sub of the ES response MUST match the values of the <br class="">respective query parameter. In case the query had no sub query parameter, <br class="">the consumer MUST verify that iss = sub.<br class=""></div></div></blockquote><div><br class=""></div>Good point.</div><div><br class=""></div><br class=""><div class="">
<div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">- Roland</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><br class=""></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">Otium cum dignitate - latin proverb</div></div>
</div>
<br class=""></body></html>