RFC 7349

LDP Hello Cryptographic Authentication

๐Ÿ“… published August 2014, from ietf

LDP Hello Cryptographic Authentication (RFC 7349) ๐ŸŽ€

Okay bestie, here's the vibe check first: this is an Internet Standards Track doc โœจ from the IETF (Internet Engineering Task Force), written by L. Zheng and M. Chen of Huawei Technologies, with M. Bhatia from Ionos Networks ๐Ÿ’–. It's dated August 2014, its ISSN is 2070-1721, and the title block has no Obsoletes or Updates lines, so it doesn't replace or patch anything listed there ๐Ÿฆ‹.


Abstract

okay so this doc adds a brand new optional Cryptographic Authentication TLV that LDP can use to lock down its Hello messages ๐Ÿ”. The goal is to stop spoofing attacks and some well-known attacks that target the IP header ๐Ÿ›ก๏ธ. The mechanism uses Hashed Message Authentication Code (HMAC) with the Secure Hash Standard family of algorithms from the National Institute of Standards and Technology (NIST) โœจ.

Status of This Memo

this is an Internet Standards Track document ๐Ÿ“œ.

it's a product of the Internet Engineering Task Force (IETF) and it represents the consensus of the IETF community ๐Ÿซถ. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG) ๐Ÿ’…. more info on Internet Standards is in Section 2 of RFC 5741 ๐ŸŒธ.

info about the current status, any errata, and how to send feedback lives at http://www.rfc-editor.org/info/rfc7349 ๐Ÿ“.

ยฉ 2014 IETF Trust and the people listed as the document authors ๐Ÿ’œ. all rights reserved โœจ.

this doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the publication date ๐Ÿ“š. please read them carefully, because they spell out your rights and restrictions for this doc ๐Ÿ™ˆ.

any Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions ๐ŸŽ€. they come with no warranty, as described in the Simplified BSD License ๐ŸŒˆ.

Table of Contents

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
  1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   3
2.  Cryptographic Authentication TLV  . . . . . . . . . . . . . .   4
  2.1.  Optional Parameter for Hello Message  . . . . . . . . . .   4
  2.2.  LDP Security Association  . . . . . . . . . . . . . . . .   4
  2.3.  Cryptographic Authentication TLV Encoding . . . . . . . .   6
  2.4.  Sequence Number Wrap  . . . . . . . . . . . . . . . . . .   7
3.  Cryptographic Authentication Procedure  . . . . . . . . . . .   8
4.  Cross-Protocol Attack Mitigation  . . . . . . . . . . . . . .   8
5.  Cryptographic Aspects . . . . . . . . . . . . . . . . . . . .   8
  5.1.  Preparing the Cryptographic Key . . . . . . . . . . . . .   9
  5.2.  Computing the Hash  . . . . . . . . . . . . . . . . . . .   9
  5.3.  Result  . . . . . . . . . . . . . . . . . . . . . . . . .  10
6.  Processing Hello Message Using Cryptographic Authentication .  10
  6.1.  Transmission Using Cryptographic Authentication . . . . .  10
  6.2.  Receipt Using Cryptographic Authentication  . . . . . . .  10
7.  Operational Considerations  . . . . . . . . . . . . . . . . .  11
8.  Security Considerations . . . . . . . . . . . . . . . . . . .  12
9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  13
10. Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  13
11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  13
  11.1.  Normative References . . . . . . . . . . . . . . . . . .  13
  11.2.  Informative References . . . . . . . . . . . . . . . . .  14

1. Introduction โœจ

okay so the Label Distribution Protocol (LDP) [RFC5036] sets up LDP sessions that run between LDP peers ๐Ÿฆ‹. those peers can be directly connected at the link level, or they can be multiple hops away ๐ŸŒธ. an LDP Label Switching Router (LSR) can either be configured with the identity of its peers, or it can discover them using LDP Hello messages ๐Ÿ”. these messages get sent encapsulated in UDP, addressed to "all routers on this subnet" or to one specific IP address ๐Ÿ’Œ. Hellos also get sent periodically to keep the relationship between LDP peers alive, which is what keeps the LDP session active ๐Ÿ’–.

here's the tea: Hellos use UDP and not TCP, so they can't use the security mechanisms defined for TCP [RFC5926] ๐Ÿ™ˆ. [RFC5036] does give some configuration guidance to help guard against false discovery messages, but it doesn't offer an explicit security mechanism to protect the Hello messages ๐Ÿ˜ญ.

spoofing a Hello for an existing adjacency can make the valid adjacency time out, and that can end the session tied to it ๐Ÿ’€. this happens when the spoofed Hello sets a smaller Hold Time, so the receiver expects Hellos within that shorter interval, while the real neighbor keeps sending at the lower frequency they already agreed on ๐Ÿซ . spoofing can also kill the LDP session directly, which happens when the spoofed Hello advertises a different Transport Address than the one the neighbors previously agreed on ๐Ÿšซ. these spoofed Hellos have been seen and reported as a real problem in production networks [RFC6952] ๐Ÿ”ฅ.

for Link Hello, [RFC5036] says you can cut down the threat of spoofed Hellos by accepting Hellos only on interfaces where trusted LSRs are directly connected, and by ignoring Hellos not addressed to the "all routers on this subnet" multicast group ๐Ÿงš. the Generalized TTL Security Mechanism (GTSM) is a simple and reasonably robust defense for Link Hello [RFC6720] โœจ, but it doesn't protect against packet spoofing attacks or replay attacks [RFC5082] ๐Ÿ˜ค.

spoofing via Targeted Hellos is a potentially more serious threat ๐Ÿšจ. [RFC5036] says an LSR can reduce it by filtering Targeted Hellos and accepting only the ones from sources an access list permits ๐Ÿ“‹. but filtering with access lists eats up LSR resources, and it doesn't stop IP-address spoofing either ๐Ÿ’….

so this document brings in a new Cryptographic Authentication TLV, used in LDP Hello messages as an optional parameter ๐ŸŽ€. it upgrades the authentication mechanism for LDP by protecting the Hello message against spoofing attacks ๐Ÿ›ก๏ธ. it also adds a cryptographic sequence number carried in the Hello messages, which can be used to guard against replay attacks ๐Ÿ”.

with this Cryptographic Authentication TLV, one or more secret keys (each with a matching Security Association (SA) ID) get configured in each system ๐Ÿ”‘. for every LDP Hello message, the key is used to generate and verify an HMAC Hash that's stored inside that Hello ๐Ÿง. for the cryptographic hash function, this doc proposes SHA-1, SHA-256, SHA-384, and SHA-512, all defined in the US NIST Secure Hash Standard (SHS) [FIPS-180-4] ๐ŸŒˆ. the HMAC authentication mode from [RFC2104] is used too ๐Ÿ’œ.

and the big rule for support: implementations MUST include support for at least HMAC-SHA-256, SHOULD include support for HMAC-SHA-1, and MAY include support for HMAC-SHA-384 and HMAC-SHA-512 ๐Ÿ‘‘.

1.1. Requirements Language ๐Ÿ“

the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119] ๐Ÿซถ.

2. Cryptographic Authentication TLV ๐Ÿ”

2.1. Optional Parameter for Hello Message ๐Ÿฆ‹

so [RFC5036] defines the encoding for the Hello message ๐ŸŒธ. each Hello message holds zero or more Optional Parameters, and each one is encoded as a TLV ๐Ÿ“. [RFC5036] defines three Optional Parameters, and this document defines a brand new one: the Cryptographic Authentication parameter โœจ.

here's the lineup ๐Ÿ’–:

Optional Parameter                Type
--------------------------------  --------
IPv4 Transport Address            0x0401 (RFC 5036)
Configuration Sequence Number     0x0402 (RFC 5036)
IPv6 Transport Address            0x0403 (RFC 5036)
Cryptographic Authentication TLV  0x0405 (this document)

the encoding for the Cryptographic Authentication TLV is described in Section 2.3 ๐Ÿ’….


Part 1 of 3 โœจ the rest of the RFC is coming up next, bestie ๐Ÿซถ๐Ÿ’œ

2.2. LDP Security Association ๐Ÿ’–

okay so an LDP Security Association (SA) is basically a bundle of settings that any two legit LDP speakers share ๐Ÿซถ it's the whole vibe of who's allowed to talk to who, and what secrets they use to prove it โœจ

Here's what lives inside an LDP SA ๐Ÿ‘‘

  • Security Association Identifier (SA ID)

This is a 32-bit unsigned integer that uniquely identifies an LDP SA between two LDP peers ๐ŸŽ€ the network operator sets it up manually (or maybe some key management protocol the IETF cooks up later, ngl that would be iconic ๐Ÿ”ฅ).

The receiver figures out which SA is active by checking the SA ID field in the incoming Hello message ๐Ÿ‘€

The sender picks an SA to use based on the active configuration and drops the matching SA ID value into the LDP Hello message ๐Ÿ’… if there are multiple valid and active LDP SAs on one interface, the sender can use any of them to protect the packet, so no stress ๐Ÿฆ‹

SA IDs make changing keys while the protocol keeps running super convenient ๐ŸŒˆ each SA ID covers two separate things, the authentication algorithm and the authentication key, which we'll get into below ๐Ÿงš

Normally an implementation lets the network operator set up a bunch of keys in a key chain, and each key in that chain gets a fixed lifetime ๐Ÿ“ how those mechanisms actually work is outside the scope of this doc, so we're not going there today ๐Ÿ™ˆ

Also, each SA ID can point to a key with a different authentication algorithm ๐Ÿ˜ญ this is the secret sauce that lets new authentication mechanisms show up without wrecking existing LDP sessions ๐Ÿ’œ

  • Authentication Algorithm

This tells you which authentication algorithm goes with the LDP SA ๐Ÿ” the info never gets sent in clear text over the wire, so the implementer gets to pick whatever internal representation they want for it ๐Ÿง

Right now these algorithms are supported:

HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 โœจ

  • Authentication Key

This is the cryptographic authentication key tied to the LDP SA ๐Ÿ—๏ธ its length isn't fixed, it depends on which authentication algorithm the LDP SA uses ๐ŸŒธ

  • KeyStartAccept

The time this LDP router starts accepting packets that were created with this LDP Security Association โฐ

  • KeyStartGenerate

The time this LDP router starts using this LDP Security Association to generate LDP Hello messages ๐Ÿš€

  • KeyStopGenerate

The time this LDP router stops using this LDP Security Association to generate LDP Hello messages ๐Ÿ›‘

  • KeyStopAccept

The time this LDP router stops accepting packets generated with this LDP Security Association ๐Ÿฅ€

To get a smooth key transition, KeyStartAccept SHOULD be less than KeyStartGenerate, and KeyStopGenerate SHOULD be less than KeyStopAccept ๐Ÿซ  if KeyStartGenerate or KeyStartAccept gets left unspecified, the time defaults to 0 and the key gets used right away โšก if KeyStopGenerate or KeyStopAccept gets left unspecified, the time defaults to infinity and the key's lifetime is infinite โ™พ๏ธ when a new key replaces an old one, the KeyStartGenerate time for the new key MUST be less than or equal to the KeyStopGenerate time of the old key ๐ŸŽฏ and any unspecified values get encoded as zero ๐Ÿซง

Key storage SHOULD persist across a system restart, warm or cold, so nothing goes sideways operationally ๐Ÿ›Ÿ now, if the last key on an interface expires, it's literally unacceptable to fall back to an unauthenticated condition, and it's not advisable to disrupt routing either ๐Ÿ˜ฑ so the router SHOULD send a "last Authentication Key expiration" notification to the network manager and treat the key as having an infinite lifetime until the lifetime gets extended, the key gets deleted by network management, or a new key is configured ๐Ÿซถ๐ŸŒˆ

2.3. Cryptographic Authentication TLV Encoding ๐ŸŽ€

Here's the layout of the TLV, so get ready to stare at some bits ๐Ÿ‘€โœจ

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |0|0|        Auth (0x0405)      |             Length            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                  Security Association ID                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       Cryptographic Sequence Number (High-Order 32 Bits)      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       Cryptographic Sequence Number (Low-Order 32 Bits)       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                Authentication Data (Variable)                 |
    ~                                                               ~
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: 0x0405, Cryptographic Authentication ๐Ÿท๏ธ
  • Length: the length in octets of the value field, including the Security Association ID and Cryptographic Sequence Number fields ๐Ÿ“
  • Security Association ID: this 32-bit field maps to the authentication algorithm and the secret key used to create the message digest carried in the LDP payload ๐Ÿ—บ๏ธ

Even though the SA ID implies the algorithm, implementers should not use the HMAC output size as an implicit hint, because more algorithms might get defined later that have the same output size ๐Ÿ™…โ€โ™€๏ธ

  • Cryptographic Sequence Number: this is a 64-bit, strictly increasing sequence number that guards against replay attacks ๐Ÿ›ก๏ธ it MUST be incremented for every LDP Hello message the LDP router sends ๐Ÿ“ˆ and when a message comes in, its sequence number MUST be greater than the sequence number in the last LDP Hello message accepted from that sending LDP neighbor ๐Ÿซถ otherwise the LDP message counts as a replayed packet and gets dropped ๐Ÿ—‘๏ธ the Cryptographic Sequence Number is one single space per LDP router ๐ŸŒŒ

LDP routers that implement this spec MUST use existing mechanisms to keep the sequence number strictly increasing for the whole deployed life of the router, cold restarts included ๐Ÿฅน one way to do that could be using the high-order 32 bits as a boot count that goes up any time the router loses its sequence number state ๐Ÿ”ข other techniques, like the sequence number space partitioning mentioned above or preserving things in non-volatile storage, can work too, but they're beyond the scope of this spec ๐Ÿ“ฆ and sequence number wrap is covered in Section 2.4 ๐Ÿ”

  • Authentication Data: this field carries the digest computed by whichever Cryptographic Authentication algorithm is in use ๐Ÿ” its length changes based on that algorithm, and here's the breakdown ๐Ÿ‘‡
Auth type        Length
---------------  ----------
HMAC-SHA1        20 bytes
HMAC-SHA-256     32 bytes
HMAC-SHA-384     48 bytes
HMAC-SHA-512     64 bytes

2.4. Sequence Number Wrap ๐Ÿ”

okay so when the router increments the sequence number for each LDP message it sends, the sequence number should be treated as an unsigned 64-bit value ๐Ÿงฎ if the lower-order 32-bit value wraps around, the higher-order 32-bit value should be incremented and saved in non-volatile storage ๐Ÿ’พ

If the LDP router stays deployed long enough for the whole 64-bit sequence number to wrap, all keys MUST be reset, no matter which key distribution mechanism was used ๐Ÿ˜ฐ this is done to avoid any chance of replay attacks, so it's giving serious security energy ๐Ÿ›ก๏ธ once the keys have been changed, the higher-order sequence number can be reset to 0 and saved to non-volatile storage again ๐Ÿซง

3. Cryptographic Authentication Procedure ๐Ÿงพ

As we said earlier, the Security Association ID maps to the authentication algorithm and the secret key used to generate and verify the message digest ๐Ÿ—๏ธ this spec talks about computing LDP Cryptographic Authentication data when any of the NIST SHS family of algorithms gets used in the Hashed Message Authentication Code (HMAC) mode ๐ŸŒˆ

The currently valid algorithms (including mode) for LDP Cryptographic Authentication are:

HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 ๐Ÿ’œ

Of those, implementations of this spec MUST include support for at least HMAC-SHA-256, SHOULD include support for HMAC-SHA-1, and MAY also include support for HMAC-SHA-384 and HMAC-SHA-512 ๐ŸŽ€

Implementations of this standard MUST use HMAC-SHA-256 as the default authentication algorithm ๐Ÿ‘‘

4. Cross-Protocol Attack Mitigation ๐Ÿ›ก๏ธ

okay this part is so clever ๐Ÿง  to stop cross-protocol replay attacks for protocols sharing common keys, the 2-octet LDP Cryptographic Protocol ID gets appended to the authentication key before it's used (see Section 8) ๐Ÿซถ other protocols using the common key do the same thing with their own Cryptographic Protocol IDs, so every protocol ends up using a different key value ๐Ÿ’…

5. Cryptographic Aspects ๐Ÿ”

In the algorithm description below, here's the nomenclature we're using ๐Ÿ“

  • H is the specific hashing algorithm (e.g., SHA-256).
  • K is the Authentication Key from the LDP Security Association.
  • Ks is a Protocol-Specific Authentication Key, made by appending the Authentication Key (K) with the 2-octet LDP Cryptographic Protocol ID.
  • Ko is the cryptographic key used with the hash algorithm.
  • L is the length of the hash, measured in octets rather than bits.
  • AuthTag is a value that is the same length as the hash output. For IPv4, the first 4 octets contain the IPv4 source address, followed by the hexadecimal value 0x878FE1F3 repeated (L-4)/4 times. For IPv6, the first 16 octets contain the IPv6 source address, followed by the hexadecimal value 0x878FE1F3 repeated (L-16)/4 times. This implies that hash output is always a length of at least 16 octets. โœจ

5.1. Preparing the Cryptographic Key ๐Ÿ—๏ธ

The LDP Cryptographic Protocol ID gets appended to the Authentication Key (K), which gives you a Protocol-Specific Authentication Key (Ks) ๐Ÿงฉ in this application, Ko is always L octets long. Keys longer than the bit length of the hash function get hashed down to force them to this length, as we describe below ๐Ÿซง here's how Ks gets computed:

  • If the Protocol-Specific Authentication Key (Ks) is L octets long, then Ko is equal to Ks.
  • If the Protocol-Specific Authentication Key (Ks) is more than L octets long, then Ko is set to H(Ks).
  • If the Protocol-Specific Authentication Key (Ks) is less than L octets long, then Ko is set to the Protocol-Specific Authentication Key (Ks) with zeros appended to the end, such that Ko is L octets long.

For higher entropy, it is RECOMMENDED that Key Ks should be at least L octets long ๐ŸŒŸ

5.2. Computing the Hash ๐Ÿงฎ

First, the Authentication Data field in the Cryptographic Authentication TLV gets filled with the value AuthTag ๐Ÿท๏ธ then, to compute the HMAC over the Hello message, it does this:

AuthData = HMAC(Ko, Hello Message)

Hello Message refers to the LDP Hello message excluding the IP and the UDP headers ๐Ÿ“จ

5.3. Result โœจ

okay so the output of the hash is the thing that goes into the Authentication Data field of the Cryptographic Authentication TLV ๐Ÿ’– and the length of that field is always the same as the message digest size of whichever hash function H you're using ๐ŸŽ€. so like, the bigger the hash output, the bigger the LDP message gets on the wire ๐Ÿ“ฆ bestie, that's just the vibe ๐Ÿ’…

6. Processing Hello Message Using Cryptographic Authentication ๐Ÿฆ‹

6.1. Transmission Using Cryptographic Authentication ๐ŸŒธ

okay so before the LDP Hello gets sent out, you set the Length in the Cryptographic Authentication TLV header based on which authentication algorithm you're using โœจ it's 24 for HMAC-SHA-1, 36 for HMAC-SHA-256, 52 for HMAC-SHA-384, and 68 for HMAC-SHA-512 ๐Ÿ’œ

then the Security Association ID field gets set to the ID of the current authentication key ๐Ÿ”‘ and the HMAC Hash gets computed the way Section 5 explains ๐Ÿงš the result gets stored in the Authentication Data field before it goes out ๐ŸŽ€ and the authentication key MUST NOT be carried in the packet ๐Ÿ™ˆ never ever put the key in the packet, periodt ๐Ÿ’€

6.2. Receipt Using Cryptographic Authentication ๐Ÿ‘‘

the receiving LSR checks whether the Hello is acceptable using cryptographic authentication ๐Ÿซถ if the Cryptographic Authentication TLV is unknown to the receiver, the packet MUST be discarded according to Section 3.5.1.2.2 of [RFC5036] ๐Ÿ—‘๏ธ

the receiving router MUST decide whether to accept a Hello from a particular source IP address like this ๐Ÿ’… first, if the router already has a stored LDP Hello cryptographic sequence number for that source IP address, or it's configured to require LDP Hello authentication, then it MUST discard any unauthenticated Hello packets ๐Ÿ˜ญ and as we'll see later in this section, a cryptographic sequence number only gets stored for a source IP address once a valid authenticated Hello has been received ๐ŸŒˆ

the receiving LSR finds the LDP SA using the Security Association ID field in the message ๐Ÿ” if the SA isn't found, or if it isn't valid for reception (i.e., current time < KeyStartAccept or current time >= KeyStopAccept), the LDP Hello message MUST be discarded and an error event SHOULD be logged โญ

if the cryptographic sequence number in the LDP Hello message is less than or equal to the last sequence number received from the same neighbor, the LDP Hello message MUST be discarded and an error event SHOULD be logged ๐Ÿฅฒ no replays allowed, bestie ๐Ÿšซ

before the receiving LSR does any processing, it needs to save the values of the Authentication Data field ๐Ÿซ™ then it replaces the contents of the Authentication Data field with AuthTag and computes the Hash using the authentication key named by the received Security Association ID field, as explained in Section 3 ๐Ÿงฎ if the locally computed Hash equals the received value of the Authentication Data field, the packet is accepted for the other normal checks and processing described in [RFC5036] ๐Ÿฅณ otherwise, if the locally computed Hash doesn't match the received value, the received LDP Hello message MUST be discarded and an error event SHOULD be logged ๐Ÿ˜ค this logging needs to be carefully rate limited, because while an LDP router is under attack by a storm of spoofed Hellos, the resources needed for logging could be overwhelming ๐ŸŒช๏ธ so like, don't let your logs eat all your memory, iykyk ๐Ÿ’€

after the LDP Hello message has been successfully authenticated, implementations MUST store the 64-bit cryptographic sequence number for the LDP Hello message received from the source IP address ๐Ÿ“ those saved sequence numbers get used for replay checking on later packets from that source IP address ๐Ÿ”

7. Operational Considerations ๐ŸŽ€

careful thought needs to go into when and how you turn authentication on and off for LDP Hellos ๐Ÿฅบ on one hand, it is critical that an attacker cannot cause the authentication to be disabled ๐Ÿšจ on the other hand, it is equally important that an operator can change the hardware and/or software tied to a neighbor's IP address and successfully bring up an LDP adjacency with the desired level of authentication, which might be different or no authentication because of software restrictions ๐Ÿ’–

LDP Hello authentication info (like whether authentication is enabled and what the last cryptographic sequence number is) tied to an IP address is learned through a set of interfaces ๐Ÿงš if an interface is administratively disabled, the LDP Hello authentication info learned through that interface MAY be forgotten โœจ this lets an operator who isn't specifically messing with LDP Hello authentication configs bring up an LDP adjacency easily ๐Ÿซถ an implementation of this standard SHOULD provide a configuration mechanism to show and forget the LDP Hello authentication info associated with an IP address ๐Ÿ‘€ and configuration mechanisms are assumed to be accessed over an authenticated channel ๐Ÿ”

8. Security Considerations ๐Ÿšจ

okay bestie, this part is SERIOUS ๐Ÿ˜ญ Section 1 of this document describes the security issues that come up with unauthenticated LDP Hello messages ๐Ÿ’€ to address those issues, it is RECOMMENDED that all deployments use the Cryptographic Authentication TLV to authenticate Hello messages ๐Ÿ›ก๏ธ

the quality of the security the Cryptographic Authentication TLV provides depends completely on how strong the cryptographic algorithm is, how strong the key is, and whether the security mechanism is implemented correctly in the communicating LDP implementations ๐Ÿง  also, the level of security varies depending on the authentication type used ๐Ÿ“‰

it should be noted that the authentication method in this document is NOT used to authenticate the specific originator of a packet ๐Ÿ™…โ€โ™€๏ธ instead, it's used to confirm that the packet was issued by a router that has access to the authentication key ๐Ÿ”‘

deployments SHOULD use sufficiently long and random values for the authentication key, so that guessing and other cryptographic attacks on the key aren't feasible in their environments ๐ŸŽฒ to support this, management systems SHOULD support hexadecimal input of authentication keys ๐Ÿ”ข

the mechanism described here is not perfect ๐Ÿฅน however, it introduces a significant increase in the effort an adversary needs to successfully attack the LDP Hello protocol, without causing undue implementation, deployment, or operational complexity ๐Ÿฐ that's a big win, no cap ๐Ÿ‘‘

9. IANA Considerations ๐Ÿ“‹

the IANA has assigned a new TLV from the "Label Distribution Protocol (LDP) Parameters" registry, "TLV Type Name Space" ๐ŸŽ€

Value   Description                       Reference
------  --------------------------------  ---------------------------
0x0405  Cryptographic Authentication TLV  this document (Section 2.3)

the IANA has also assigned a value from the "Authentication Cryptographic Protocol ID" registry under the "Keying and Authentication for Routing Protocols (KARP) Parameters" category ๐ŸŒˆ

Value   Description                       Reference
-----   --------------------------------  -------------------------
  2     LDP Cryptographic Protocol ID     this document (Section 4)

10. Acknowledgements ๐Ÿซถ

we owe a huge thank you to Yaron Sheffer, who helped us enormously in rewriting the document to get rid of the redundant crypto mathematics we had added ๐Ÿ™Œ we also want to thank Liu Xuehu for his work on background and motivation for LDP Hello authentication ๐Ÿ’œ last but not least, thanks to Adrian Farrel, Eric Rosen, Sam Hartman, Stephen Farrell, Eric Gray, Kamran Raza, and Acee Lindem for their valuable comments ๐ŸŒธโœจ

11. References ๐Ÿ“š

11.1. Normative References ๐Ÿ’–

[FIPS-180-4]
           National Institute of Standards and Technology (NIST),
           "Secure Hash Standard (SHS)", FIPS 180-4, March 2012.

[RFC2104]  Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
           Hashing for Message Authentication", RFC 2104, February
           1997.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC5036]  Andersson, L., Minei, I., and B. Thomas, "LDP
           Specification", RFC 5036, October 2007.

11.2. Informative References ๐Ÿงš

[RFC5082]  Gill, V., Heasley, J., Meyer, D., Savola, P., and C.
           Pignataro, "The Generalized TTL Security Mechanism
           (GTSM)", RFC 5082, October 2007.

[RFC5926]  Lebovitz, G. and E. Rescorla, "Cryptographic Algorithms
           for the TCP Authentication Option (TCP-AO)", RFC 5926,
           June 2010.

[RFC6720]  Pignataro, C. and R. Asati, "The Generalized TTL Security
           Mechanism (GTSM) for the Label Distribution Protocol
           (LDP)", RFC 6720, August 2012.

[RFC6952]  Jethanandani, M., Patel, K., and L. Zheng, "Analysis of
           BGP, LDP, PCEP, and MSDP Issues According to the Keying
           and Authentication for Routing Protocols (KARP) Design
           Guide", RFC 6952, May 2013.

Authors' Addresses ๐ŸŽ€

Lianshu Zheng
Huawei Technologies
China

EMail: vero.zheng@huawei.com


Mach(Guoyi) Chen
Huawei Technologies
China

EMail: mach.chen@huawei.com


Manav Bhatia
Ionos Networks
India

EMail: manav@ionosnetworks.com

That's the whole RFC, bestie! ๐ŸŒˆ๐Ÿ’– You made it through all three parts ๐Ÿ˜ญโœจ

๐Ÿ“ฆ where this page comes from