Just finished (finally) scanning the rpki-rtr document (-25 version) and
have a few notes about it. Over all, though, nicely done ID. Thanks!
A) It's too early for nit edits, but this one just jumped at me and I
couldn't ignore it.
5.1, 3rd paragraph(/sentence): is only -> is *the* only
B) 5.9: the 2nd and 4th paragraphs seem to contradict each other. I
suspect that the intent is that you can send a generic error after a
particular PDU, but the way it's phrased is a bit odd and it jumped
out at me too. How about:
If the error is generic (e.g. "Internal Error") and not associated
with the PDU it is responding to, the Erroneous PDU field ...
Note that with this exception rule you could still end up in some
state where the generic error isn't fatal and you need to respond
with a specific and a generic error, but you can't send 2 error
reports. Thus, hopefully generic errors will always be fatal?
C) 5.10 seems to indicate rcynic (a very fine tool) is ubiquitous
because it's quoting it like everyone knows what it is (and
always will). I'd leave the example tool name out.
D) 7. Transport.... Multiple issues
D.1) "Unfortunately there is no protocol to do so on all currently used
platforms".
I actually doubt the validity of that statement. I suspect SSH is
likely available on them all. Or at least "nearly all" (and I
doubt anything will ever reach "all"). I'd bet TLS is nearly
ubiquitous as well, though probably less than SSH.
D.2) The ordering of the 5th-8th(ish) paragraphs seems weird. I'd group
them together by subject such that the sections that talked about
unprotected TCP should be next to each other and the ones that
talked about the protected ones be together. Thus, I think just
moving the 2 unprotected paragraphs ("Caches and routers MUST..."
and "If unprotected TCP...") to positions 5 and 6 would solve most
of the oddities.
D.3) I'm not sure that the whole concept of "MUST implement unprotected"
is going to fly through a security review. I know I'd flag it.
Generally I'm not sure it's wise to mandate insecurity, though I do
agree it may be a nice feature to have (did I really just say that???)
D.4) There is some confusion regarding whether routers "use" vs "can be
configured to use". EG: "Caches and routers SHOULD use TCP-AO..."
IMHO, this indicates they have a choice. "SHOULD be able to use"
might be a better wording choice implying its subject to
configuration by the operator. If you want a more complete list of
places where I think this might be a problem, I can supply one of
course.
D.5) "If available to the operator...". How would the router know
what's available to the operator? Or does this mean that if the
device already implements protocol X, it must offer it as a
configuration choice for rpki-rtr transport? If so, that's not
entirely clear.
D.6) I'd order the sub-sections to be in the same order as the list
above it. IE, TCP-AO is first in the list, so the TCP-AO
sub-section should probably come first.
E) 7.1 SSH transport "Client routers SHOULD verify the public key of the
cache". Similar to D.4, I'd change this to "Client routers MUST
be able to verify the public key of the cache".
F) 7.2 TLS transports: the CN field is really being deprecated and I'd
suggest using the subject alt name instead (SAN).
G) section 8, paragraph 2 implies that the cache needs a list of names
for the peer and I'm not sure this is true. In fact much of that
paragraph talks about the router/client side only, so I'd split the
paragraph in two: one for cache requirements and one for the router
requirements.
H) section 8: I'd change "Key" to either "TheirKey" or "ItsKey"
I) section 8: "it would be prudent for the client"... This seems like a
good place for the word SHOULD to sneak in there somewhere.
J) section 8: "if data from multiple caches are held, implementations
MUST NOT distinguish between data sources when performing
validation".
This one confuses me. It's unclear, after reading the entire
document, why you have a preference ordered list if the data from
them all must be treated equally. Is the goal to have a preference
order list because you want to really only have, ideally, a single
cache and the others are fallbacks? Or is it because you want to
have N/M established at any point? Either way, if they're all equal
then what happens when popular #1 is overloaded and slower and issues
an announcement after #2 has issued a withdrawl, or vice versa.
Either way you end up in a race-condition based state. This should
probably be discussed and at least mentioned, even if you choose
not to solve it by a preference setting somewhere. Though I'd
certainly want to leave room in the configuration engine to allow for
a preference setting even if implementing it is optional.
K) I didn't dive heavily into the security considerations because of
some of the above that I suspect may affect it. I'd be happy to if
it's ready to be dived into though.
Again, nicely done document. Clear and straight forward (though at
times I had to predict what was coming ahead to make sense of the
current paragraph, I think that's generally hard to avoid).
--
Wes Hardaker
_______________________________________________
sidr mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/sidr