[Hipsec] Barry Leiba's No Objection on draft-ietf-hip-native-nat-traversal-30: (with COMMENT)

2020-03-04 Thread Barry Leiba via Datatracker
Barry Leiba has entered the following ballot position for
draft-ietf-hip-native-nat-traversal-30: 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-hip-native-nat-traversal/



--
COMMENT:
--

Given this document’s dependency on concepts and terminology from 5770, I think
that document has to be a normative reference.  Can someone really understand
and implement this without any reference to 5770?

— Abstract —

   The main
   difference from the previously specified modes is the use of HIP
   messages instead of ICE for all NAT traversal procedures due to its
   kernel-space dependencies.

The antecedent to “its” is unclear: it could be “use of HIP messages”, or
“ICE”, or “NAT traversal”.  Please rephrase to clarify.

— Section 1 —

   Also, especially NATs usually require the
   host behind a NAT to create a forwarding state in the NAT before
   other hosts outside of the NAT can contact the

What does “especially” mean in this sentence?  It doesn’t make sense to me. 
Does it add anything?

   which will be referred as "Legacy ICE-HIP" in this document.

Nit: “referred to”

   HIP poses a unique challenge to using standard ICE, due not only to
   its kernel-space implementation, but also due to its close

Same comment about “its” as in the abstract: please replace “its” with what
you’re talking about, as it isn’t clear.



___
Hipsec mailing list
Hipsec@ietf.org
https://www.ietf.org/mailman/listinfo/hipsec


[Hipsec] Roman Danyliw's Discuss on draft-ietf-hip-dex-13: (with DISCUSS and COMMENT)

2020-03-04 Thread Roman Danyliw via Datatracker
Roman Danyliw has entered the following ballot position for
draft-ietf-hip-dex-13: Discuss

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-hip-dex/



--
DISCUSS:
--

(initial ballot now that this draft is deferred)

** Section 1.2.  Thanks for the scoping provided by this applicability
statement.  Given the reduced security that DEX will provide, IMO it needs a
bit more precision (and caution).

OLD
   HIP DEX MUST  only be used in communicating with such constrained
   devices (e.g., class 0 and 1 devices as defined in section 3 in
   [RFC7228]).

NEW

HIP DEX MUST only be when one of the peers if a class 0 or 1 constrained device
as defined in Section 3 of [RFC7228].  HIP DEX MUST NOT be used if both peers
are class 2 constrained devices or have greater capability.

** Section 3.2.1, Per “Since collision-resistance is not possible with the
tools at hand, any reasonable function (e.g.  FOLD) that takes the full value
of the HI into generating the HIT can be used, provided that collision
detection is part of the HIP-DEX deployment design.  This is achieved here
through either an ACL or some other lookup process that externally binds the
HIT and HI.”, when exactly should this ACL lookup occur?  Please provide
guidance in an explicit step in the appropriate packet processing section
(i.e., in Section 6.*) on when this should be.

** Section 5.2.1 – Is this list of DH Group IDs intended to be a subset of the
HIP Group ID sub-registry?  If so, Curve25519 and Curve448 don’t appear to be
in the
https://www.iana.org/assignments/hip-parameters/hip-parameters.xhtml#hip-parameters-5?
 Should they be registered?

** Section 6.3.  Per “Some payload protection mechanisms have their own Key
Derivation Function, and if so this mechanism SHOULD be used.”, if the payload
protection mechanisms have their own KDF, how would their security properties
be trusted if their KDF is NOT used?  Why is this SHOULD not a MUST?

** Section 6.3.  The input to CKDR-Extract seems underspecified:
-- Per the definition of IKM, when should these different inputs be used (at
least two appear to be specified)?  References to Kij are made in this section
and in other parts of the document, but they aren’t input for CKDR-Extract()?

-- Per “where ‘CKDF-Extract’ is an octet string “ in the definition of “info”
in CKDR-Extract(), what encoding should be used to convert that into an octet
string?  Is it ASCII, as in 067 075 068 070 045 069 120 116 114 097 099 116?

** Section 9.  Please add language to the effect that “production deployments
of this specification MUST NOT use the NULL-ENCRYPT HIP_CIPHER” (to mirror the
language already stated in Section 5.2.2 on the topic).

** Section 9.2.  This mandatory guidance to validate public keys is helpful. 
Please provide guidance in an explicit step in the appropriate packet
processing section (i.e., in Section 6.*) on when this should be done.

Two “discuss discuss”-es with the caveat that I didn’t follow the WG
discussions.

** The following seems to indicate we don’t have everything we need to publish
a standards track document: -- Section 6.  “It should be noted that many of the
packet processing rules are denoted here with "SHOULD" but may be updated to
"MUST" when further implementation experience provides better guidance.”

-- Section 9.  “o  The puzzle mechanism using CMAC explained in Section 4.1.1
may need further study regarding the level of difficulty in order to establish
best practices with current generation of  constrained devices.”

If there isn’t sufficient implementation experience, why isn’t this document
experimental?  What is the plan for getting better guidance?  Is there a risk
in not having this clarity?

** Section 9.1.  Thanks for this section.  However, I’m not convinced that
SECP160R1 is needed.  DEX is already selectively profiling RFC7401 (i.e., its
already choosing to exclude certain things) and there are “no production”
implementation of DEX.  What is the rationale for keeping it?


--
COMMENT:
--

** Section 3.0.  Per “Thus, it is not expected that these parameters are
carried in every packet, but other methods are used to map the data packets to
the corresponding His”, what are these other methods?

** Section 3.1.  Per “There are two advantages of using a hashed encoding  over
the actual variable-sized public key in 

Re: [Hipsec] Suresh Krishnan's Discuss on draft-ietf-hip-dex-13: (with DISCUSS)

2020-03-04 Thread Suresh Krishnan


Hi Bob/Jeff,

> On Mar 4, 2020, at 11:09 AM, Robert Moskowitz  wrote:
> 
> 
> 
> On 3/4/20 10:53 AM, Jeff Ahrenholz wrote:
>>> https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml#icmpv6-parameters-codes-5
>>> 
>>> And nothing there that looks right.
>>> 
>>> So what is done in HIP BEX implementations?  Both v1 and v2?
>> For our HIPv1 implementation:
>> IPv4 packets - we send ICMPv4-in-UDP with type 12 "parameter problem" code 0 
>> "pointer indicates the error" and point to the first bytes of UDP payload. 
>> (https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml#icmp-parameters-codes-12)
>> 
>> IPv6 packets - we send ICMPv6-in-UDP with type 4 "parameter problem" code 0 
>> "erroneous header field encountered" and point to the first bytes of UDP 
>> payload.
>> 
>> Normally this would be if the SPI is unknown (e.g. one side forcefully 
>> reboots while the other continues to send it ESP-in-UDP data.) The pointer 
>> includes the first 8 bytes of the UDP payload so that the SPI is included in 
>> the ICMP message.
>> 
>> For IPv6 you could consider the "erroneous header field" to be the invalid 
>> SPI number, which is the bytes we point to.
>> 
>> -Jeff
>> 
> 
> Suresh,
> 
> How would you recommend handling this?  It seems the text in all docs (5201, 
> 7401, and DEX) might be:
> 
> In most cases, the ICMP packet has the Parameter Problem type (12 for ICMPv4, 
> 4 with code=0 for ICMPv6),

I am happy with the Code being set to 0 for ICMPv6 and the Pointer being set as 
Jeff proposed above.

Regards
Suresh

___
Hipsec mailing list
Hipsec@ietf.org
https://www.ietf.org/mailman/listinfo/hipsec


Re: [Hipsec] Benjamin Kaduk's Discuss on draft-ietf-hip-dex-13: (with DISCUSS and COMMENT)

2020-03-04 Thread Robert Moskowitz

Ben,

thank you for the serious, in-depth, review.  It will take a bit to work 
through your comments.


vis-a-vis, LAKE.

It would be seriously challenging, and interesting, to review the 
long-standing work on HIP-DEX with the new work on LAKE.  If so, I would 
end up throwing in to remove all AES constructs for KECCAK alternatives 
with small sponges.  Maybe.  This would be a serious piece of work.  But 
I will think on it.


And I AM doing KECCAK in the hip-new-crypto draft.  But it is not an 
alternative to DEX.


On 3/4/20 12:44 PM, Benjamin Kaduk via Datatracker wrote:

Benjamin Kaduk has entered the following ballot position for
draft-ietf-hip-dex-13: Discuss

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-hip-dex/



--
DISCUSS:
--

This is a placeholder discuss, intended to illustrate several key
omissions from the current document and as an indication that it is not
yet ready for full IESG Evaluation.  In that vein, I will defer the
evaluation shortly, to attempt to short-circuit the current round of
evaluation while the draft improves.  In particular, this is not
intended to be a complete review of the document.

The FOLD scheme for compressing full host identities into ORCHIDs/HITs
is pretty problematic.  The current text acknowledges that collisions
are possible and attempts to justify the scheme by pointing out that no
collision-free scheme is possible absent a cryptographic hash, which is
an appeal to authority ("we can't use a cryptographic hash on
constrained systems") that does not attempt to answer the question of
whether it is actually reasonable to use a mechanism that allows
collisions for this purpose (vs. just not being able to do anything).
Additionally, there is not any discussion of second-preimage resistance,
which is the more important property here, in terms of an attacker being
able to construct a collision with an existing HIT of an honest node.

In a related vein, Section 3.2.1 claims that the above concerns can be
remediated by deployment of a collision detection scheme, "achieved here
through either an ACL or some other lookup process".  This process is
vital to the security of the system as a whole, and it would be
irresponsible to publish this document without a precise specification
of what properties are needed in order to perform this process, as well
as a worked example that can be used absent other considerations.

Given that the applicability statement ("in communicating with such
constrained devices") implies that there is intent to have full-featured
nodes that implement both HIP DEX and HIP BEX, I think we need
significantly more discussion of how such nodes avoid using DEX in
situations where it was not appropriate.  That is, how is it known that
the peer should be using DEX vs. BEX?  Yes, the HIT includes an
indication of whether the identity is for use with DEX vs. BEX, but that
does not seem like quite the relevant property.  Do we envision
scenarios where a node is positioned somewhat like a gateway, using DEX
on one interface and BEX to the broader internet?

Using AES-CTR with the long-term static-static master key requires
careful tracking of counter (sequence) number to nonvolatile storage.  I
did not see discussion of the security consequences of inadvertent
counter reuse.

I appreciate the design to limit use of the long-term static-static
master key to essentially just key-wrap operations, but this seems to
require the presence of a CSPRNG in order to obtain secure session keys.
Expecting a strong CSPRNG on a node so constrained that DEX is necessary
seems to be a questionable assumption, and I see no discussion of the
need for a good RNG.  (Relying on the full-featured peer to contribute
good entropy to the key derivation is not an option, since DEX is
allowed to be used between two nodes that are both constrained.)

The default KEYMAT algorithm uses the "CKDF" (CMAC-based KDF)
construction, analogous to HKDF (RFC 5869).  However, the paper
motivating 5869's design choices does not seem to justify the usage of
CMAC instead of HMAC, since the proof requires a PRF* but CMAC (with
AES) is only a PRP.  Absent some detailed justification or prior art it
does not seem prudent to use such a novel construction for
security-critical functionality.


--
COMMENT:
--

Some additional comments (also incomplete), 

Re: [Hipsec] Suresh Krishnan's Discuss on draft-ietf-hip-dex-13: (with DISCUSS)

2020-03-04 Thread Robert Moskowitz



On 3/4/20 10:53 AM, Jeff Ahrenholz wrote:

https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml#icmpv6-parameters-codes-5

And nothing there that looks right.

So what is done in HIP BEX implementations?  Both v1 and v2?

For our HIPv1 implementation:
IPv4 packets - we send ICMPv4-in-UDP with type 12 "parameter problem" code 0 
"pointer indicates the error" and point to the first bytes of UDP payload. 
(https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml#icmp-parameters-codes-12)

IPv6 packets - we send ICMPv6-in-UDP with type 4 "parameter problem" code 0 
"erroneous header field encountered" and point to the first bytes of UDP payload.

Normally this would be if the SPI is unknown (e.g. one side forcefully reboots 
while the other continues to send it ESP-in-UDP data.) The pointer includes the 
first 8 bytes of the UDP payload so that the SPI is included in the ICMP 
message.

For IPv6 you could consider the "erroneous header field" to be the invalid SPI 
number, which is the bytes we point to.

-Jeff



Suresh,

How would you recommend handling this?  It seems the text in all docs 
(5201, 7401, and DEX) might be:


In most cases, the ICMP packet has the Parameter Problem type (12 for 
ICMPv4, 4 with code=0 for ICMPv6),


Please advise.


___
Hipsec mailing list
Hipsec@ietf.org
https://www.ietf.org/mailman/listinfo/hipsec


Re: [Hipsec] Suresh Krishnan's Discuss on draft-ietf-hip-dex-13: (with DISCUSS)

2020-03-04 Thread Jeff Ahrenholz
>
> https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml#icmpv6-parameters-codes-5
>
> And nothing there that looks right. 
> 
> So what is done in HIP BEX implementations?  Both v1 and v2?

For our HIPv1 implementation:
IPv4 packets - we send ICMPv4-in-UDP with type 12 "parameter problem" code 0 
"pointer indicates the error" and point to the first bytes of UDP payload. 
(https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml#icmp-parameters-codes-12)

IPv6 packets - we send ICMPv6-in-UDP with type 4 "parameter problem" code 0 
"erroneous header field encountered" and point to the first bytes of UDP 
payload. 

Normally this would be if the SPI is unknown (e.g. one side forcefully reboots 
while the other continues to send it ESP-in-UDP data.) The pointer includes the 
first 8 bytes of the UDP payload so that the SPI is included in the ICMP 
message.

For IPv6 you could consider the "erroneous header field" to be the invalid SPI 
number, which is the bytes we point to.

-Jeff

___
Hipsec mailing list
Hipsec@ietf.org
https://www.ietf.org/mailman/listinfo/hipsec


Re: [Hipsec] Suresh Krishnan's Discuss on draft-ietf-hip-dex-13: (with DISCUSS)

2020-03-04 Thread Robert Moskowitz
This looks more like an RFC 7401 problem than a HIP-DEX problem; as DEX 
inherits this from 7401.  In fact it is an RFC 5201 problem!


It looks like Suresh is correct that a code is needed and in sec 3.4 of 
RFC 2463 a code is need..


I looked at:

https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml#icmpv6-parameters-codes-5

And nothing there that looks right.

So what is done in HIP BEX implementations?  Both v1 and v2?

And should this be fixed in DEX or an errata for 5201 and 7401?  And if 
we do an errata, do we still specify the code in DEX?


Nothing is ever "straightforward to resolve" ...

On 3/3/20 11:47 PM, Suresh Krishnan via Datatracker wrote:

Suresh Krishnan has entered the following ballot position for
draft-ietf-hip-dex-13: Discuss

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-hip-dex/



--
DISCUSS:
--

This should be pretty straightforward to resolve.

* Section 5.4.:

The ICMPv6 Parameter Problem messages to be sent need a Code field to be set in
addition to the Pointer. What Code should be used in this message? Please
specify this.







--
Standard Robert Moskowitz
Owner
HTT Consulting
C:248-219-2059
F:248-968-2824
E:r...@labs.htt-consult.com

There's no limit to what can be accomplished if it doesn't matter who 
gets the credit
___
Hipsec mailing list
Hipsec@ietf.org
https://www.ietf.org/mailman/listinfo/hipsec