Subject: Re: Shepherd writeup for draft-ietf-bfd-optimizing-authentication

From: Mahesh Jethanandani <[email-masked]>
Date: Wed, 1 Jul 2020 21:13:37 -0700

Hi Reshad,

Happy Canada day!

Thanks first of all for the shepherd writeup. Please see my comments/questions inline.

@Ashesh, please comment on the change to the table.

> On Jun 14, 2020, at 11:50 AM, Reshad Rahman (rrahman) <[email-masked]> wrote:
> 
> Authors, WG,
>  
> The writeup is available at https://datatracker.ietf.org/doc/draft-ietf-bfd-optimizing-authentication/ <https://datatracker.ietf.org/doc/draft-ietf-bfd-optimizing-authentication/>
>  
> For convenience I’ve copied the comments on the document below.
>  
> Regards,
> Reshad.
>  
> General:
> Updates RFC5880 missing from title page

Hmm. How does one add the “Updates” tag?

> Replace BFD frames by BFD packets or BFD control packets. Don’t use frames since RFC5880 uses packets.

Done.

> Use of term Null-authentication TLV. RFC5880 uses authentication section, doesn’t mention auth TLV.

Ok. Have changed all references of “NULL Auth TLV” to “NULL Auth Type”.

>  
> Abstract:
> Mention that this document updates RFC5880.

Done.

>  
> Requirements Language
> Please put this is a separate (sub)section later, e.g. after introduction.

Done.

>  
> Introduction
> First paragraph: s/is computationally intensive process/is a computationally intensive process/

Done.

> Split first sentence into 2, e.g.
>    Authenticating every BFD [RFC5880] packet with a Simple Password, or
>    with a MD5 Message-Digest Algorithm [RFC1321], or Secure Hash
>    Algorithm (SHA-1) algorithms is a computationally intensive process.
>    This makes it difficult, if not impossible, to authenticate every packet,
>    particularly at faster rates.

Done.

>  
> 2nd paragraph: “… only BFD frames that signal a state change in BFD be authenticated.” State change is not 100% correct since P/F/D bit changes aren’t state changes (as mentioned in more detail below in section 2 comments). What about this instead: “State change, a demand mode change (to D bit) or a poll sequence change (P or F bit change) in a BFD packet are categorized as a significant BFD change. This document proposes that all BFD control packets which signal a significant BFD change MUST be authenticated if the session’s bfd.AuthType is non-zero. Other BFD control packets MAY be transmitted and received without the A bit set.” If you do use “significant BFD change”, add it to terminology section.

Done.

> s/non-state change frame/BFD control packets without state or D/F/P bit change/, e.g.
> “To detect a Man In the Middle (MITM) attack, it is also proposed that BFD control packets without a significant change be authenticated occasionally.  The interval of these control packets…”

Done.

>  
> Section 2
> POLL and DEMAND are NOT strictly states. POLL refers to “Poll sequence” as specified in section 6.5 of RFC5880. DEMAND refers to “Demand mode” as specified in section 6.6 of RFC5880. In the table, the POLL entry refers to polling sequence enabled and in any BFD state. Likewise, the DEMAND entry refers to Demand mode. This means that a session in UP state, in demand mode and polling sequence enabled will match 3 entries in that table. It’s a bit confusing. Here’s what I suggest instead:
> Take POLL out of the table. Add a paragraph mentioning that if P or F bit changes value, the packet MUST be authenticated
> Take DEMAND out of the table. Add a paragraph mentioning that if D bit changes value, the packet MUST be authenticated

Have made the change as follows. I am hoping Ashesh can comment on it.

The significant changes for which authentication is being suggested
   include:

          Read   : On state change from <column> to <row>
          Auth   : Authenticate frame
          NULL   : No Authentication. Use NULL AUTH Type.
          n/a    : Invalid state transition.
          Select : Most packets NULL AUTH. Selective (periodic)
                   packets authenticated.
         +--------+-----------+---------+---------+
         |            | DOWN   | INIT   | UP     |
         +--------+--------+--------+--------+
         | DOWN   |  NULL  |  Auth  |  Auth  |
         +--------+--------+--------+--------+
         | INIT   |  Auth  |  NULL  |  n/a   |
         +--------+--------+--------+--------+
         | UP     |  Auth  |  Auth  | Select |
         +--------+--------+--------+--------+

                       Optimized Authentication Map

   If P or F bit changes value, the packet MUST be authenticated.  If
   the D bit changes value, the packet MUST be authenticated.

>  
> Another comment on the table. The text says it should be read as state change from column to row. Column INIT to row UP is n/a whereas column UP to row INIT is Auth. INIT to UP is a valid transition, UP to INIT is not (has to go through DOWN first). So I think those entries should be reversed in the table.

Done.

>  
> Last paragraph: CC frames is not defined in BFD, use “control packets” instead?

Done.

>  
> Section 3
> Sequence number mentions “as defined in [RFC5880]”. Suggest mentioning bfd.XmitAuthSeq

Done.

>  
> Security Considerations.
> I believe this needs to be beefed up:
> Use of sequence number for non-authenticated frames. Secure sequence numbers even better.
> Mention (again) that non-authenticated BFD packets which have a significant change (state, D/F/P) are dropped. So if someone injects a non-authenticated packet with Down state to take down the session, that won’t work.

The Security Considerations section now reads as follows:

  The approach described in this document enhances the ability to
   authentication a BFD session by taking away the onerous requirement
   that every frame be authenticated.  By authenticating packets that
   affect the state of the session, the security of the BFD session is
   maintained.  In this mode, packets that are a significant change but
   are not authenticated, are dropped by the system.  Therefore, a
   malicious user that tries to inject a non-authenticated packet, e.g.
   with a Down state to take a session down will fail.  That combined
   with the proposal of using sequence number defined in Secure BFD
   Sequence Numbers [I-D.ietf-bfd-secure-sequence-numbers] further
   enhances the security of BFD sessions.

>  
> Section 6.2
> RFC5880 should be a normative reference.

Done.

Mahesh Jethanandani
[email-masked]

---

From: "Acee Lindem (acee)" <[email-masked]>
Date: Thu, 2 Jul 2020 09:45:04 +0000

Hi Mahesh,

From: Rtg-bfd <[email-masked]> on behalf of Mahesh Jethanandani <[email-masked]>
Date: Thursday, July 2, 2020 at 12:14 AM
To: "Reshad Rahman (rrahman)" <[email-masked]>
Cc: "rtg-bfd@ietf. org" <[email-masked]>, "[email-masked]" <[email-masked]>
Subject: Re: Shepherd writeup for draft-ietf-bfd-optimizing-authentication

Hi Reshad,

Happy Canada day!

On Jun 14, 2020, at 11:50 AM, Reshad Rahman (rrahman) <[email-masked]<mailto:[email-masked]>> wrote:

Authors, WG,

The writeup is available at https://datatracker.ietf.org/doc/draft-ietf-bfd-optimizing-authentication/

Regards,
Reshad.

General:

·         Updates RFC5880 missing from title page

In xml2rfc, here is an example:

<rfc category="std" ipr="trust200902" docName="draft-ietf-ospf-ospfv3-lsa-extend-20.txt" updates="5340, 5838">

Thanks,
Acee

·

·         Replace BFD frames by BFD packets or BFD control packets. Don’t use frames since RFC5880 uses packets.

Done.

·

·         Use of term Null-authentication TLV. RFC5880 uses authentication section, doesn’t mention auth TLV.

·

Abstract:

Done.

Requirements Language

Done.

Introduction

Done.

Done.

Done.

Done.

Section 2

1.     Take POLL out of the table. Add a paragraph mentioning that if P or F bit changes value, the packet MUST be authenticated

2.     Take DEMAND out of the table. Add a paragraph mentioning that if D bit changes value, the packet MUST be authenticated

2.

Done.

Done.

Section 3

Done.

Security Considerations.

1.     Use of sequence number for non-authenticated frames. Secure sequence numbers even better.

2.     Mention (again) that non-authenticated BFD packets which have a significant change (state, D/F/P) are dropped. So if someone injects a non-authenticated packet with Down state to take down the session, that won’t work.

2.

Section 6.2

Done.

Mahesh Jethanandani
[email-masked]<mailto:[email-masked]>

---

From: "Reshad Rahman (rrahman)" <[email-masked]>
Date: Thu, 2 Jul 2020 19:02:23 +0000

Hi Mahesh,

Thanks for the update.  I’ll re-review the updated document when it’s available.

Inline <RR>

From: Mahesh Jethanandani <[email-masked]>
Date: Thursday, July 2, 2020 at 12:13 AM
To: "Reshad Rahman (rrahman)" <[email-masked]>
Cc: "[email-masked]" <[email-masked]>, "[email-masked]" <[email-masked]>
Subject: Re: Shepherd writeup for draft-ietf-bfd-optimizing-authentication

Hi Reshad,

Happy Canada day!

Authors, WG,

Regards,
Reshad.

General:

  *   Updates RFC5880 missing from title page

  *
  *   Replace BFD frames by BFD packets or BFD control packets. Don’t use frames since RFC5880 uses packets.

Done.

  *
  *   Use of term Null-authentication TLV. RFC5880 uses authentication section, doesn’t mention auth TLV.

  *

Abstract:

Done.

Requirements Language

Done.

Introduction

Done.

Done.

Done.

Done.

Section 2

   If P or F bit changes value, the packet MUST be authenticated.  If
   the D bit changes value, the packet MUST be authenticated.
<RR> I’m good with this. I’m ok with doing this differently too, as long as the crux of my concern is still addressed.

  1.

Done.

Done.

Section 3

Done.

Security Considerations.

<RR> s/authentication a BFD/authenticate a BFD/
<RR> s/every frame/every BFD control packet/

Regards,
Reshad.

  1.

Section 6.2

Done.

Mahesh Jethanandani

---

From: Ashesh Mishra <[email-masked]>
Date: Sat, 4 Jul 2020 12:17:46 -0700

Hi Mahesh, On the Section-2 state transitions - the confusion seems to be
around the context of the "state". The section uses it to detect changes at
the receiver - if the frame that is received is different from the one that
was received previously, then should it (or should it not) be
authenticated. In that sense, the receipt of P, F and D represent changes
to the ongoing BFD session and should be authenticated. I agree with Reshad
that poll and demand are not state changes in the BFD state-machine - but
they change the state of the receiver logic (poll, for instance, can change
the interval which can cause instability). Hope that clarifies the
verbiage. Perhaps we can use a different term for it but I can't think of
one :)

--
Ash

On Thu, Jul 2, 2020 at 12:02 PM Reshad Rahman (rrahman) <[email-masked]>
wrote:

> *From: *Mahesh Jethanandani <[email-masked]>
> *Date: *Thursday, July 2, 2020 at 12:13 AM
> *To: *"Reshad Rahman (rrahman)" <[email-masked]>
> *Cc: *"[email-masked]" <[email-masked]>, "
> [email-masked]" <
> [email-masked]>
> *Subject: *Re: Shepherd writeup for
> draft-ietf-bfd-optimizing-authentication
>
>
>
> Hi Reshad,
>
>
>
> Happy Canada day!
>
>
>
> The writeup is available at
> https://datatracker.ietf.org/doc/draft-ietf-bfd-optimizing-authentication/
>
>
>
>    - Updates RFC5880 missing from title page
>
>
>
>    -
>    - Replace BFD frames by BFD packets or BFD control packets. Don’t use
>    frames since RFC5880 uses packets.
>
>
>
> Done.
>
>
>
>
>    -
>    - Use of term Null-authentication TLV. RFC5880 uses authentication
>    section, doesn’t mention auth TLV.
>
>
>
>    -
> 2nd paragraph: “… only BFD frames that signal a state change in BFD be
> authenticated.” State change is not 100% correct since P/F/D bit changes
> aren’t state changes (as mentioned in more detail below in section 2
> comments). What about this instead: “State change, a demand mode change (to
> D bit) or a poll sequence change (P or F bit change) in a BFD packet are
> categorized as a significant BFD change. This document proposes that all
> BFD control packets which signal a significant BFD change MUST be
> authenticated if the session’s bfd.AuthType is non-zero. Other BFD control
> packets MAY be transmitted and received without the A bit set.” If you do
> use “significant BFD change”, add it to terminology section.
>
>
>
> Done.
>
>
>
> “To detect a Man In the Middle (MITM) attack, it is also proposed that BFD
> control packets without a significant change be authenticated occasionally.
>   The interval of these control packets…”
>
>
>
> Done.
>
>
>
>
>
> Section 2
>
> POLL and DEMAND are NOT strictly states. POLL refers to “Poll sequence” as
> specified in section 6.5 of RFC5880. DEMAND refers to “Demand mode” as
> specified in section 6.6 of RFC5880. In the table, the POLL entry refers to
> polling sequence enabled and in any BFD state. Likewise, the DEMAND entry
> refers to Demand mode. This means that a session in UP state, in demand
> mode and polling sequence enabled will match 3 entries in that table. It’s
> a bit confusing. Here’s what I suggest instead:
>
>    1. Take POLL out of the table. Add a paragraph mentioning that if P or
>    F bit changes value, the packet MUST be authenticated
>    2. Take DEMAND out of the table. Add a paragraph mentioning that if D
>    bit changes value, the packet MUST be authenticated
>
>
>
> <RR> I’m good with this. I’m ok with doing this differently too, as long
> as the crux of my concern is still addressed.
>
>
>
>
>    1.
>
>
>
> Another comment on the table. The text says it should be read as state
> change from column to row. Column INIT to row UP is n/a whereas column UP
> to row INIT is Auth. INIT to UP is a valid transition, UP to INIT is not
> (has to go through DOWN first). So I think those entries should be reversed
> in the table.
>
>
>
> Done.
>
>
>
>
>
>    2. Mention (again) that non-authenticated BFD packets which have a
>    significant change (state, D/F/P) are dropped. So if someone injects a
>    non-authenticated packet with Down state to take down the session, that
>    won’t work.
>
>
>