Subject: [core] Roman Danyliw's No Objection on draft-ietf-core-echo-request-tag-12: (with COMMENT)

From: Roman Danyliw via Datatracker <[email-masked]>
Date: Wed, 17 Feb 2021 12:54:31 -0800

Roman Danyliw has entered the following ballot position for
draft-ietf-core-echo-request-tag-12: No Objection

When responding, please keep the subject line intact and reply to all
email addresses included in the To and CC lines. (Feel free to cut this
introductory paragraph, however.)

Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
for more information about IESG DISCUSS and COMMENT positions.

The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-core-echo-request-tag/

----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

Thank you for writing this mitigation for draft-mattsson-core-coap-actuators.

** Section 5.  Per “As each pseudorandom number most only be used once …”, how
will that be possible when echo values as small are 1-byte are possible?

** Section 5.
However, this may not be an issue if the
   communication is integrity protected against third parties and the
   client is trusted not misusing this capability.

-- Why is the use of integrity presented as only a possibility here?  Didn’t
Section 2.3 require it when assuring the freshness requirement – “When used to
serve freshness requirements including client aliveness and state
synchronizing), the Echo option value MUST be integrity protected between the
intended endpoints ...”

-- Would it be clearer here to say that this is mitigation against an on-path
attacker, not against rogue/compromised clients?

** Appendix A helpfully tries to lay out recommendations.  A few comments:

-- all of the recommendations here have option values much larger than the
permitted minimum of 1-byte.  In addition to the recommendations, could the
circumstances of the lower bound also be discussed

-- it would be helpful to explicitly state which methods apply to the specific
use cases (client aliveness, request freshness, state synchronization, network 
address reachability).  For example, method 3 (persistent counter) notes that
it can be used for state synchronization but not client aliveness