Sooooo, you can ignore my message from last night. These comments need to be dealt with. I have already replied to Elwyn about the "major" issue, but need to plow through the minor issues and nits. Given travel to the meeting, I doubt I'll have a new draft on Monday as planned, but some of these definitely need WG discussion.
--Paul Hoffman >Date: Fri, 19 Mar 2010 14:37:19 +0000 >From: Elwyn Davies <elw...@dial.pipex.com> >To: General Area Review Team <gen-...@ietf.org> >CC: Mary Barnes <mary.ietf.bar...@gmail.com>, > draft-ietf-ipsecme-ikev2bis....@tools.ietf.org, > IETF Discussion <i...@ietf.org> >X-SA-Exim-Connect-IP: 2001:8b0:0:30::51bb:1e34 >X-SA-Exim-Rcpt-To: draft-ietf-ipsecme-ikev2bis....@tools.ietf.org >X-SA-Exim-Mail-From: elw...@dial.pipex.com >X-Spam-Checker-Version: SpamAssassin 3.3.0 (2010-01-18) on > merlot.tools.ietf.org >X-Spam-Level: >X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=no > version=3.3.0 >Subject: Gen-art review of draft-ietf-ipsecme-ikev2bis-08.txt >X-SA-Exim-Version: 4.2.1 (built Sat, 01 Aug 2009 12:09:26 +0000) >X-SA-Exim-Scanned: Yes (on merlot.tools.ietf.org) > >I have been selected as the General Area Review Team (Gen-ART) >reviewer for this draft (for background on Gen-ART, please see >http://www.alvestrand.no/ietf/gen/art/gen-art-FAQ.html). > >Please resolve these comments along with any other Last Call comments >you may receive. > >Document: draft-ietf-ipsecme-ikev2bis-08.txt >Reviewer: Elwyn Davies >Review Date: 18 March 2010 >IETF LC End Date: 18 March 2010 >IESG Telechat date: (if known) - > >Summary: >Not ready. The document contains a lot of minor niggles and nits plus a major >item that I am not sure the IETF should support: this is the removal of all >mention of mandatory to implement security suites from the document. I >appreciate the difficulty of keeping up to the minute, but it seems to me that >this is outweighed by the difficulty of guaranteeing interoperability. If the >security landscape is so unstable, we have a bigger problem perhaps. Whether >this change is acceptable to the IAB, the IESG and the wider IETF is not >something I can resolve. > >One niggle that I felt represented a rather lackadaisical approach, was the >retaining of the publication date of RFC 4306 as a frozen point in time for >the purpose of documenting the state of the world as regards lists of >configurable lists. I would have preferred the losts to be up to date at the >publication of *this* RFC. > >There are also a number of relatively minor points where items and processes >are explicitly not fully specified. Thus could lead to annoying corners where >implementations are totally interoperable (e.g., what is the complete set of >'terminators' forbidden in IP_FQDNs? What is an acceptable 'sort of' email >address/NAI on EAP?) > >Finally there are a number of points where it is recommended that network >traffic needs to be limited but no concrete guidelines are given. I think >that some sort of suggestions for the parameters to be applied (e.g., time >constants, number of repeats, backoff algorithm) would be desirable. > >Major issues: > >s3.3.4: The draft states that the list of mandatory to implement suites has >been removed due to evolution going too fast. Is this acceptable? > >Minor issues: >s1: At para 6 in s1 the draft states: >> The first request/response of an IKE session (IKE_SA_INIT) negotiates >> security parameters for the IKE SA, sends nonces, and sends Diffie- >> Hellman values. >As a (not really) naive reader, I asked myself 'Why does this text suddenly >mention that we need to send nonces and Diffie-Hellman values?' Looking back >at the text so far I realized that the text has not introduced the techniques >that it is going to use to establish the authenticated IKE channel etc. It is >assumed that readers know that as soon as D-H is mentioned we are talking >public key cryptography. A paragraph explaining the underlying ideas would be >useful. > >s1.2, last para: >> Note that IKE_AUTH messages do not contain KEi/KEr or Ni/Nr payloads. >> Thus, the SA payloads in the IKE_AUTH exchange cannot contain >> Transform Type 4 (Diffie-Hellman Group) with any value other than >> NONE. Implementations SHOULD omit the whole transform substructure >> instead of sending value NONE. >Does 'cannot contain' conflict with the 'SHOULD'? I am unclear what an >implementer would do if s/he chose to do otherwise than omit the transform >structure in the light of the previous statement. > >s2.1, last sentence: >> The retransmission policy for one-way messages is somewhat different >> from that for regular messages. Because no acknowledgement is ever >> sent, there is no reason to gratuitously retransmit one-way messages. >> Given that all these messages are errors, it makes sense to send them >> only once per "offending" packet, and only retransmit if further >> offending packets are received. Still, it also makes sense to limit >> retransmissions of such error messages. >Does this need to be more precise? Some explicit policy for restricting >retransmissions? Possibly in s2.21.4. > >s2.2: Maybe should mention that retransmissions MUST use the same Message ID. > >s2.3: Should there be some discussion of the interaction of rekeying of the >IKE_SA and windows? Presumably a rekey message should not be actioned until >all previous messages have been responded to. Likewise receiving a Message ID >with a sequence number bigger than that in the rekey message should be very >suspect! Should the INVALID_MESSAGE_ID notification be sent in this case (and >before or after the rekey?) There might be some knock on into s2.8 where >rekeying is discussed. And maybe into s2.25? > >s2.4, para 2: >> The INITIAL_CONTACT notification, if sent, MUST >> be in the first IKE_AUTH request or response, not as a separate >> exchange afterwards; receiving parties MAY ignore it in other >> messages. >What should receiving parties do if they *do* receive it and *don't* ignore it? >Since it 'MUST be sent in the first IKE_AUTH' receiving at any other time is a >protocol error and should cause some response (like dropping the IKE_SA >perhaps). > >s2.4, para 4: >> Note >> that this places requirements on the failure modes of an IKE >> endpoint. An implementation MUST NOT continue sending on any SA if >> some failure prevents it from receiving on all of the associated SAs. >> If Child SAs can fail independently from one another without the >> associated IKE SA being able to send a delete message, then they MUST >> be negotiated by separate IKE SAs. >I am fairly certain that is impossible for any implementation to guarantee the >MUST NOT here. How does it absolutely know that it isn't able to receive >anything? Absence of activity might mean failure or idleness. I *think* this >is not just talking about IKE SAs but includes the Child SAs. This appears to >imply that the Child SAs all have to be usable bidirectionally and have >keepalives on them? And that IKE should know about the keepalives. > >What is the second condition saying? Does this impose some constraints on the >use of Child SA deletion.. like that the IKE SA must support Child SA >deletion? or is it just saying that if the IKE SA has failed you can't leave >some Child SAs active (as implied by the next para)? The more I think about >this the more confused I become! > >s2.6, next to last para: >> The initiator should limit the number of cookie exchanges it >> tries before giving up. >Does anything need to be said abut exponential back-off? > >ss1.7/2.8: >The changes documented in s1.7 state: >> In 2.8, changed "Note that, when rekeying, the new Child SA MAY have >> different traffic selectors and algorithms than the old one" to "Note >> that, when rekeying, the new Child SA SHOULD NOT have different >> traffic selectors and algorithms than the old one". >This refers to para 3 of s2.8. Is the SHOULD NOT just there to cope with >existing implementations? This is a binary choice - either they are the same >or they aren't. If MAY is no good, I can't see that allowing the opposite >choice at all makes any sense. I would argue that this ought to be MUST NOT. > >s2.8.1, para 2: The use of 'lexicographical' in the comparison algorithm adds >confusion IMO. It implies that there is some language related total ordering >on the values stored in each octet that might or might not be the natural >integer ordering. Presumably the intent is that corresponding octets should be >treated as 8 bit unsigned integers (in network bit order?) and compared as >such. > >s2.15, definition of signed octets (both cases): What 'Length' is intended? >And how should it be represented as a string for concatenation? Are the >definitions of Nonce[IR]Payload intended to show how Nonce[IR]Data are derived >? They are not otherwise used. Similarly xxxIDPayload? How many octets of >what value make up 'RESERVED' (or is it just the literal text? > >s2.21.2, last sentence: How would the peer expect to demonstrate >understanding of extended error notifications? Protocol version number? NOTIFY >payload? > >s2.21.4: More requests to limit message rates without specific means. > >s2.23, para 7 and 8 (first bullet point): I understood from earlier that the >first requirement (port 4500 and responding to source address/port) applied to >*all* implementations and not just those specifically supporting NAT traversal. > >s2.23: Should there be a discussion of NAT64? > >s3.1, Major Version: This definition is not entirely consistent with the >major version support discussion earlier in the document. It should probably >talk about implementations that support this version of the specification or >any subsequent version that uses s higher version number. Reference back to >s2.5 would be useful. This applies to the Minor Version also. > >s3.3.5, Key Length attribute: >> o The Key Length attribute MUST NOT be used with transforms that use >> a fixed length key. This includes, e.g., ENCR_DES, ENCR_IDEA, and >> all the Type 2 (Pseudo-random function) and Type 3 (Integrity >> Algorithm) transforms specified in this document. It is >> recommended that future Type 2 or 3 transforms do not use this >> attribute. >I think the recommended is a RECOMMENDED here. > >s3.5, Identification Field table: The class of 'terminators' is not fully >defined. > >s3.5, IP_FQDN: The specification refers to IDNA - does IDNAbis have any >impact here? > >s3.5, last para: >> Responder implementations should not attempt to >> verify that the contents actually conform to the exact syntax given >> in [MAILFORMAT], but instead should accept any reasonable-looking >> NAI. >How do I verify conformance to this statement please? > >s3.6, next to last para: 'also MUST be capable of being configured to send and >accept the two Hash and URL formats (with HTTP URLs).' > ^^^^^^^^^^^^^^^^^^^^^^^^ >Only one format appears to be defined in this section. Is there another >somewhere else? > >s3.12: >> Writers of Internet-Drafts who wish to extend this protocol MUST >> define a Vendor ID payload to announce the ability to implement the >> extension in the Internet-Draft. It is expected that Internet-Drafts >> that gain acceptance and are standardized will be given "magic >> numbers" out of the Future Use range by IANA, and the requirement to >> use a Vendor ID will go away. >> >I don't understand this paragraph. I suspect I need to eat some magic >mushrooms in order to be able to see the magic numbers. Can I recommend >swapping over the payload identification numbers with the Delete payload so >that Vendor ID is #42? But seriously, this doesn't seem to be the way we >should go about standardizing an extension. > >s8.2 [AEAD]: I think the reference in s3.14 makes this normative. >s8.2 [MAILFORMAT]: I think the statements in s3.5 make this normative. > > > >============================================ > >Nits/editorial comments: >General: The version of the draft in the repository is unpaginated. > >General: The notation used for concatenation ('|'), raising to the power >('^'), etc could be usefully defined early on in one place. > >s1, para 4: >> The pair is called an "exchange". We call the first >> messages establishing an IKE SA IKE_SA_INIT and IKE_AUTH exchanges >> and subsequent IKE exchanges CREATE_CHILD_SA or INFORMATIONAL > > exchanges. >The start of the second sentence is confusing on a quick read: A better form >might be: > We call the first exchanges of messages that establish an IKE SA > IKE_SA_INIT and IKE_AUTH and subsequent IKE... > >s1.2 (conventions): The use of [] to denote optional items in exchanges can >be confusing with references. But we will probably have to live with it. > >s1.2 >> The keys used for the >> encryption and integrity protection are derived from SKEYSEED and are >I assume *how* the derivation is done is described later (I think sa2.13/2.14 >is the right answer). A forward reference would help - both to show that you >shouldn't worry about how just now and to point to where it is defined. > >s1.3, para 3: the first sentence is redundant - it was said in para 1. > > >s1.3: The section would be clearer if the last para was moved to be >immediately after para 4 (the last para describes how and why the MAY in para >4 occurs). It would also help to change the order of the sentences in the >last para, making the last sentence first. > >s1.3.1: The term Message ID has not been discussed on defined before its >appearance here. > >s1.5, para 5: the last sentence >> The Initiator >> flag is set, the Response bit is set to 0, and the version flags are >> set in the normal fashion. >can be omitted from the general introduction here - the various items referred >to in the sentence have not been introduced at this point in the document. > >s1.5, last para: The previous comment applies to the last sentence here also. > >s2, para 1: There should be references for the port number definitions 500 is >in RFC 2408 and 4500 is in RFC 3947. Arguably port 500 should be reassigned >to IKE by the IKE standards since ISAKMP is no longer a well-known protocol. > >s2.9, last para: I believe the 'SHOULD narrow' ought to be 'should narrow'. >This is is not something the protocol controls. > >s2.13, para 2: HMAC needs a reference. > >s2.13, para 3: I think the statement 'The preferred key size is used as the >length..' ought to be strengthened to 'The preferred key size MUST be used as >the length..'. > >s2.14, para 1: A reference back to Section 2.13 for the key length discussion >would be useful. > >s2.15, para 1: IDr' is defined twice - once on its own and once in concert >with IDi'. > >s2.17, para 7: the term ROHC_INTEG is not defined - it almost certainly needs >a reference. > >s2.17, last bullet: s/protocol specification/the protocol specification/, > s/For ESP and/For ESP and/ > >s2.20, para 2: Is the term 'trolling' sufficiently well-known not to need >definition? > >s2.22: The IPCOMP algorithm table ought to be updated to the date of >publication of this draft as an RFC - note to RFC Editor. > >s2.23, para 2: The term 'real Internet' is not well defined. The pejorative >language in para 1 and here is unhelpful. > >s2.23, para 6: How is IPsec expected to 'discover' a NAT? (it appears that I >am told a few paras later, but it isn't obvious that that is the case here!) > >s2.23, bullet point 7: 'these payloads'? Which payloads are they? > >s2.23.1, para 5: This is the first 'real' use of PAD (as opposed to in the >list of changes) - it would be useful to expand it and put in a forward >reference. > >s2.23.1: There are several missing definite articles in this section. > >s2.23.1, para 11: s/known NATs outer addresses/known NAT's outer addresses/ > >s3.1, Exchange Type: This should be updated to refer to the current document. >AFAICS the table of exchange types is still valid as of today. There are >several subsequent instances of the same issue. > >s3.1, Response Flag: s2.21.2 has a (sort of) exception to the 'no response to >a response rule'. > >s3.1, Message ID and Length: Should be specified as unsigned integers. > >s3.2: The table of payload type identifiers could usefully have a forward >reference to the section number where it is defined. > >s3.2, Payload length: Should be specified as unsigned integers. there are many >other cases - it could be conveniently resolved by a global statement added to >the byte ordering statement. > >s3.2, last para: 'Many payloads contain fields marked as "RESERVED".' So what? >(well they should be treated just like you said two paras before, presumably!). > >s3.3, para 1: :-) 'Assembly of Security Association Payloads requires great >peace of mind.' Hence any implementation must be capable of passing the >Turing Test?????? > >s3.3, 'Proposal #': The usage of # as shorthand for number is US specific >jargon and should be defined. This issue also occurs in '# of transforms' in >s3.3.1. > >s3.3 onwards, last para: Repeating the payload type number here makes for a >double maintenance problem and isn't useful within the payload. > >s3.3.1, SPI Size: 'the SPI is obtained from the outer header': What does >'outer' mean here? > >s3.5, para after ID Field types table: 'Implementations SHOULD be capable of >generating and accepting all of these types.' Does 'all' here mean the four >types in the previous sentence or 'all' the types in the full table? > >s3.5, para after ID Field types table: 'IPv6-only implementations MAY be >configurable to send only ID_IPV6_ADDR instead of ID_IPV6_ADDR for IP >addresses.' s/ID_IPV6_ADDR instead of ID_IPV6_ADDR/ID_IPV6_ADDR instead of >ID_IPV4_ADDR/ > >s3.6: Probably needs a reference for ASN.1 specification. > >s3.9, last para: s/The size the/The size of the/ > >s3.16, para 1: 'The full set of acceptable values for the payload is defined >elsewhere,' Where is not specified, but maybe RFC 3748. It should be >explicitly stated that Type and Type_data are taken from RFC 3748 (and maybe >other documents). > >s4, para 2: 'There are a series of optional features that can easily be >ignored by a particular implementation if it does not support that feature.' I >found this hard to parse. I *think* it is saying that the following list of >features are ones that are prime candidates for omission from minimal >implementations. How about: 'The following features are a selection of those >that can be omitted from a minimal implementation while leaving it capable of >interoperating satisfactorily with others:' > >s7, last para: Most of the references here could be usefully attached to some >of the tables in s3 where the relevant specifications are called out. This >would be both useful and resolve the xml2rfc nit. > >Appendix B, para 2: >> The strength supplied by group one may not be sufficient for the >> mandatory-to-implement encryption algorithm and is here for historic >> reasons. >There are no longer any mandatory to implement encryption algorithms (at >present), so this statement needs to be revised. _______________________________________________ IPsec mailing list IPsec@ietf.org https://www.ietf.org/mailman/listinfo/ipsec