Re: [sfc] Benjamin Kaduk's Discuss on draft-ietf-sfc-nsh-integrity-06: (with DISCUSS and COMMENT)
Benjamin Kaduk <kaduk@mit.edu> Wed, 21 July 2021 22:47 UTC
Return-Path: <kaduk@mit.edu>
X-Original-To: sfc@ietfa.amsl.com
Delivered-To: sfc@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
by ietfa.amsl.com (Postfix) with ESMTP id DC17B3A2D58;
Wed, 21 Jul 2021 15:47:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.498
X-Spam-Level:
X-Spam-Status: No, score=-1.498 tagged_above=-999 required=5
tests=[BAYES_00=-1.9, KHOP_HELO_FCRDNS=0.399, SPF_HELO_NONE=0.001,
SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44])
by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id pYZNxgVpKDZC; Wed, 21 Jul 2021 15:46:59 -0700 (PDT)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ietfa.amsl.com (Postfix) with ESMTPS id 9D6CE3A2D54;
Wed, 21 Jul 2021 15:46:58 -0700 (PDT)
Received: from kduck.mit.edu ([24.16.140.251]) (authenticated bits=56)
(User authenticated as kaduk@ATHENA.MIT.EDU)
by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id 16LMkoAw030058
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
Wed, 21 Jul 2021 18:46:54 -0400
Date: Wed, 21 Jul 2021 15:46:49 -0700
From: Benjamin Kaduk <kaduk@mit.edu>
To: tirumal reddy <kondtir@gmail.com>
Cc: The IESG <iesg@ietf.org>, draft-ietf-sfc-nsh-integrity@ietf.org,
sfc-chairs@ietf.org, sfc@ietf.org, gregimirsky@gmail.com
Message-ID: <20210721224649.GR88594@kduck.mit.edu>
References: <162629795136.25767.17850752260179612361@ietfa.amsl.com>
<CAFpG3gdT7=xVHig3r4XL5u4L31MVcsHd0uzpkuHYLbT047CaPQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAFpG3gdT7=xVHig3r4XL5u4L31MVcsHd0uzpkuHYLbT047CaPQ@mail.gmail.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/sfc/XB66PDBFmjGzrO2W8qdO78VWmjw>
Subject: Re: [sfc] Benjamin Kaduk's Discuss on
draft-ietf-sfc-nsh-integrity-06: (with DISCUSS and COMMENT)
X-BeenThere: sfc@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Network Service Chaining <sfc.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sfc>,
<mailto:sfc-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sfc/>
List-Post: <mailto:sfc@ietf.org>
List-Help: <mailto:sfc-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sfc>,
<mailto:sfc-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 21 Jul 2021 22:47:04 -0000
Hi Tiru, Also inline... On Mon, Jul 19, 2021 at 01:20:11PM +0530, tirumal reddy wrote: > Hi Ben, > > Please see inline > > On Thu, 15 Jul 2021 at 02:55, Benjamin Kaduk via Datatracker < > noreply@ietf.org> wrote: > > > Benjamin Kaduk has entered the following ballot position for > > draft-ietf-sfc-nsh-integrity-06: 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 DISCUSS and COMMENT positions. > > > > > > The document, along with other ballot positions, can be found here: > > https://datatracker.ietf.org/doc/draft-ietf-sfc-nsh-integrity/ > > > > > > > > ---------------------------------------------------------------------- > > DISCUSS: > > ---------------------------------------------------------------------- > > > > (0) (I came to this realization rather late in my review process, so > > there may be places where the COMMENT and this discuss point are in > > disagreement; this DISCUS takes precedence.) > > I fear that the construction that separately distributes ENC_KEY and > > MAC_KEY in an attempt to achieve privilege separation is fatally flawed. > > In particular, the CBC encryption mode is a malleable encryption mode, > > in that flipping a bit of ciphertext will filp the corresponding bit of > > the next block of recovered plaintext (at the cost of completely > > garbling the recovered block containing the bit that was modified). > > Subsequent blocks are unaffected. Typically we combine CBC mode with a > > MAC such as HMAC in order to prevent such modifications from being > > exposed as attack vectors, and while we do use HMAC here for that > > purpose, we also introduce a separate class of actors that have access > > to the HMAC key but not the encryption key. Accordingly, those actors > > can produce a new, valid, integrity tag after making a modification to > > the ciphertext, allowing them to engage in attacks that make use of > > ciphertext malleability. Ciphertext malleability is particularly useful > > as an attack vector when the structure of the plaintext being encrypted > > is known, and there are portions of the plaintext that the application > > will either ignore if they are garbled or are expected to be near random > > in the normal case (and thus for which garbled output does not cause > > rejection by the application). In a SFC environment it seems highly > > likely that the structure of the plaintext will be known or guessable, > > and we don't have any real mechanisms to control what types of metadata > > go into encrypted context headers, so it seems that we must act as if we > > are exposed to this risk. > > > > While §4.3 does have a note that use of GCM with HMAC is undesirable due > > to the additional authentication tag, it may be unavoidable in order to > > provide the properties that we need. > > > > Thanks for explaining the attack. We will modify the text in Section 4.3 as > follows to address the comment: > > Classifiers, NSH-aware SFs, and SFC proxies MUST implement the > AES_128_GCM [GCM][RFC5116] algorithm and SHOULD implement the > AES_192_GCM and AES_256_GCM algorithms. > > Classifiers, NSH-aware SFs, and SFC proxies MUST implement the HMAC- > SHA-256-128 algorithm and SHOULD implement the HMAC-SHA-384-192 and > HMAC-SHA-512-256 algorithms. > > SFFs MAY implement the aforementioned cipher suites and HMAC > algorithms. > > Note: > The use of AES_128_CBC_HMAC_SHA_256 algorithm would have avoided the need > for a second 128-bit authentication tag but due to the nature of how CBC > mode operates, the mode allows for malleability of plaintexts. This > malleability allows for attackers to make changes in the ciphertext and, if > parts of the plaintext are known, create arbitrary blocks of > plaintext. This specification mandates the use of AES-GCM to prevent this > type of attack. This seems okay on first read, thanks. I will probably end up reading it again once the revised I-D is posted, in the full context of the draft. > > > > > (1) Section 5.1 describes the MAC as: > > > > Message Authentication Code: Covers the entire NSH data, excluding > > the Base header. The Additional Authenticated Data (defined in > > [RFC7518]) MUST be the Service Path header, the unencrypted > > Context headers, and the inner packet on which the NSH is imposed. > > > > This description seems to exclude from the MAC most of the MAC context > > header itself (if we go by the corresponding figure), which is very bad > > for security. We definitely need to include under the MAC the MAC > > context header bits from metadata class through and including at least > > timestamp, and I think IV length as well. (The IV itself would be > > incorporated via the ciphertext, since the IV is an input to encryption, > > but since the IV length field indicates whether or not encryption was > > performed, we'd need to protect that information.) > > > > No, the MAC context header is also used for generating the digest. Ok. > > > > > Similarly, Section 5.2 has the description: > > > > Message Authentication Code: Coves the entire NSH data. The > > Additional Authenticated Data (defined in [RFC7518]) MUST be the > > entire NSH data (i.e., including the Base Header) excluding the > > Context Headers to be encrypted. > > > > which on the face of it includes the field that holds the MAC itself > > (and is not yet populated), i.e., is self-referential. > > > > The below update will address this comment: > > The NSH imposer sets the MAC field to zero and then computes the message > integrity for the target NSH data (depending on the integrity protection > scope discussed in Section 5) using MAC_KEY and HMAC algorithm. It inserts > the computed digest in the MAC field in the "MAC and Encrypted Metadata" > Context Header. > Thanks! (I think Roman may have goten this before me, so sorry for the duplication.) > > > > > I think we need to be much more precise about the construction of the > > AAD in both cases. It's possible that the HMAC construction for the > > no-encrypted-context-headers case can inherit a definition from the AAD > > description, but if not we'll need to have some more precision there as > > well. > > > > (2) In order for the MAC-only construction in §7.2 to be compatible with > > the AEAD integrity tag construction, we would need to include the 64-bit > > AL after A. While HMAC is intrinsically immune to length-extension > > attacks, I think that having the explicit AL is useful to avoid any risk > > of malleability, since the same MAC_KEY is used for constructing both > > types of MACs. > > > > I don't think this comment is applicable after AES_128_CBC_HMAC_SHA_256 is > removed. I think so, yes. > > > > > (3) Section 5.1 describes the Timestamp field as an "unsigned 64-bit > > integer value", which is inconsistent with the actual format given in > > Section 6. > > > > Thanks, we will fix it in the next revision. > > > > > > (4) Section 7.5 directs the verifier to check if "the value of the newly > > generated digest is identical to the one enclosed in the NSH". It is > > critical for the security of the system that this comparison be done in > > a constant-time manner that does not provide a side channel into whether > > the generated digest and the value in the NSH share a common substring. > > > > Agreed, will update text as follows: > > After storing the value of the MAC field in the "MAC and Encrypted > Metadata" Context Header, the SFC data plane element fills the MAC > field with zeros. Then, the SFC data plane element generates the message > integrity > for the target NSH data (depending on the integrity protection scope > discussed in Section 5) using MAC_KEY and HMAC algorithm. If the value of > the newly generated digest is identical to the stored one, the SFC data > plane element is certain that the NSH data has not been tampered and > validation is therefore successful. Otherwise, the NSH packet MUST be > discarded. The comparison of the computed HMAC value to the store value MUST > be done in a constant-time manner to thwart timing attacks. Thanks! > > > > > (5) Do the MAC context headers always have to be the last metadata > > entries in the packet (to simplify the cryptographic calculations)? > > > > Yes. > Okay. I suspected that, but it is probably worth a MUST-level requirement in the document to make it clear to everyone. Thanks again, Ben > > > Certainly the diagrams only show "unencrypted context headers" appearing > > prior to the MAC context header, so if we expect unencrypted context > > headers to appear after the MAC context header as well, we should be > > clear about that both in the figures and in the specification for how to > > prepare the AAD. > > > > > > ---------------------------------------------------------------------- > > COMMENT: > > ---------------------------------------------------------------------- > > > > Section 3 > > > > o Both encrypted and unencrypted Context Headers MAY be included in > > the same NSH. That is, some Context Headers may be protected > > while others do not need to be protected. > > > > In the security area we're pretty strongly moved towards a stance of > > "encrypt everything that doesn't have a strong need to be plaintext > > (since we don't want to assume that we can predict all threats and > > attacks in advance), and QUIC has even taken that to new levels. It's > > quite surprising to see "don't need to be protected" as a justification > > for lack of encryption, rather than "need to be unprotected". Given > > that we're going to be solving key distribution for integrity protection > > anyway, it remains unclear to me why we wouldn't just encrypt > > everything. > > > > Section 4.1.1 > > > > Is the column heading for the middle column of Table 1 referring to the > > Base Header and "Service Path Header"? I'm not sure how to interpret > > just "Service Header" other than the entire NSH, which doesn't seem > > right... > > > > The Service Path Header (Section 2 of [RFC8300]) is not encrypted > > because SFFs use Service Index (SI) in conjunction with Service Path > > Identifier (SPI) for determining the next SF in the path. > > > > It's good to see this spelled out like this; I'd love to have this kind > > of explanation for every un-encrypted protocol element. > > > > Section 4.1.2 > > > > The solution provides integrity protection for the NSH data. Two > > levels of assurance (LoAs) are supported. > > > > I see (reading onward) that the two LoAs just differ in what is covered > > by the integrity tag, but each involve only a single MAC. There's a > > reasonable argument that when there are overlapping needs for what data > > needs protecting and who needs access to it, that multiple MACs (or > > encryption, if needed) are most appropriate, which can be tailored to > > the respective needs. This is something that Phillip Hallam-Baker has > > ascribed as the "short-blanket theory" of cryptography, in that it's > > like a blanket that's too short to cover everything you want, so you > > need to have more than one and put them in partially overlapping layers. > > Perhaps this "short-blanket theory" is more applicable to Discuss point > > (0) than what is covered by the MAC, though... > > > > The first level of assurance where all NSH data except the Base > > Header are integrity protected (Figure 2). In this case, the NSH > > imposer may be a Classifier, an NSH-aware SF, or an SFC Proxy. SFFs > > are not thus provided with authentication material. [...] > > > > There seems to be a gap in the chain of reasoning as to why SFFs are not > > provided with authentication material. It seems that the intent is > > something along the lines of considering which entities need access to > > the key material in order to successfully add an NSH or update context > > headers, but that alone is not itself cause to say that other entities > > can never be provided with the keys (subject to the security > > considerations of group-shared PSKs, of course). Furthermore, if a > > particular SFF is trusted, it may have grounds to verify the integrity > > tag even if it is administratively prohibited from writing such a tag. > > > > In both levels of assurance, the unencrypted Context Headers and the > > packet on which the NSH is imposed are subject to integrity > > protection. > > > > Surely any encrypted Context Headers are also given integrity > > protection, as excluding them from the MAC computation would be quite > > complex. I see that the encrypted context headers are not part of the > > AAD input, but in the AEAD model the ciphertext is still given integrity > > protection! > > > > Section 4.2 > > > > The authenticated encryption algorithm defined in [RFC7518] is used > > to provide NSH data integrity and to encrypt the Context Headers that > > carry privacy-sensitive metadata. > > > > RFC 7518 (JSON Web Algorithms) is a very surprising reference for > > generic AEAD encryption. Continuing on, it becomes clear that we in > > fact do not want a generic AEAD operation here, but instead have need > > for separation of encryption and integrity protection due to the various > > separations of roles that are possible. Because this is a divergence > > from current best practices (use of native AEAD cipher modes like GCM, > > SIV, etc.), I might suggest a rather different introductory material: > > > > % The AEAD interface specified in RFC 5116 is a very powerful tool for > > % providing strong confidentiality and integrity protection for protocol > > % messages, and has become quite widely adopted as a result. For > > % protecting NSH data we adhere to the spirit of the AEAD interface but > > % use a slightly modified version in order to remain consistent with the > > % privilege separation needed (e.g., in the second level of assurance, > > % SFFs need to be able to update the message integrity tag but do not > > % need access to the decrypted plaintext). Accordingly, a compound AEAD > > % mechanism combining CBC encryption and HMAC integrity tag is used, so > > % that distribution of the encryption key can be limited. Rather than > > % define a new scheme from scratch, the AES_CBC_HMAC_SHA2 scheme from > > % [RFC7518] is used. In order to simplify key distribution, a single > > % secret key material seed K is used, which can be kept private > > % centrally or distributed to all parties that will have access to > > % decrypted plaintext, and the secondary keys MAC_KEY and ENC_KEY are > > % derived from K as discussed in Section 5.2.2.1 of [RFC7518]. Entities > > % that need to update the integrity tag but are not authorized to see > > % the decrypted plaintext will only receive MAC_KEY and not K or > > % ENC_KEY. > > > > o If the Context Headers are not encrypted, the Hashed Message > > Authentication Mode (HMAC) algorithm discussed in [RFC4868] is > > used to protect the integrity of the NSH data. > > > > It's not clear to me that this is adding much value; HMAC is used > > whether or not there are encrypted headers, and the RFC 4868 reference > > is rather odd (see also my Discuss point (2)). > > > > The advantage of using the authenticated encryption algorithm is that > > NSH-aware SFs and SFC proxies only need to re-compute the message > > integrity of the NSH data after decrementing the Service Index (SI) > > and do not have to re-compute the ciphertext. The other advantage is > > that SFFs do not have access to the ENC_KEY and cannot act on the > > encrypted Context Headers and, only in case of the second level of > > assurance, SFFs do have access to the MAC_KEY. Similarly, an NSH- > > aware SF or SFC Proxy not allowed to decrypt the Context Headers will > > not have access to the ENC_KEY. > > > > [If my above suggestion is used, this text has probably become mostly > > redundant and could be trimmed down or removed.] > > > > The authenticated encryption process takes as input four-octet > > strings: a secret key (K), a plaintext (P), Additional Authenticated > > Data (A) (which contains the data to be authenticated, but not > > encrypted), and an Initialization Vector (IV). The ciphertext value > > (E) and the Authentication Tag value (T) are provided as outputs. > > > > In order to decrypt and verify, the cipher takes as input K, IV, A, > > T, and E. The output is either the plaintext or an error indicating > > that the decryption failed as described in Section 5.2.2.2 of > > [RFC7518]. > > > > This seems true for the abstract AEAD interface, but since we're peeling > > off the HMAC integrity tag for standalone use, we may need to say > > something about what inputs/outputs are needed for just using the > > integrity tag without doing decryption. In particular, we cannot use K > > as an input for standalone HMAC verification! > > > > Also, this is just the generic AEAD interface, so RFC 5116 is probably a > > more apropos reference than RFC 7518. > > > > Section 4.3 > > > > Note: The use of Advanced Encryption Standard (AES) in Galois/ > > Counter Mode (GCM) + HMAC may have CPU and packet size > > implications (need for a second 128-bit authentication tag). > > > > [This might also be redundant if my earlier proposal is accepted.] > > > > Section 4.4 > > > > The document does not assume nor preclude the following: > > > > o The same keying material is used for all the service functions > > used within an SFC-enabled domain. > > > > o Distinct keying material is used per SFP by all involved SFC data > > path elements. > > > > o Per-tenant keys are used. > > > > I suggest a forward reference to the security considerations with a > > brief note that the risk involved in using a group-shared symmetric key > > increases with the size of the group to which it is shared. > > > > In order to accommodate deployments relying upon keying material per > > SFC/SFP and also the need to update keys after encrypting NSH data > > for a certain amount of time, this document uses key identifiers to > > unambiguously identify the appropriate keying material. Doing so > > allows to address the problem of synchronization of keying material. > > > > I'd suggest making a statement about the scope in which key identifiers > > need to be unique. > > > > Section 4.5 > > > > An NSH-aware SF or SFC Proxy that needs to decrypt some Context > > Headers uses ENC_Key and the decryption algorithm for the key > > identifier being carried in the NSH. > > > > I think we need to say that decryption MUST NOT proceed unless the > > integrity tag has been successfully validated. To decrypt without > > checking the integrity tag violates the AEAD interface. Alternately, we > > could only ever describe decryption as the AEAD operation that uses K as > > input (not just ENC_KEY) -- §7.6 seems to attempt to take this latter > > approach, but the document as a whole is not consistent about it. > > > > Section 5, 5.x > > > > I strongly suggest changing "Key Length" to "keyid length", since there > > is already convention on "key length" (e.g., for AES-128 vs AES-192 vs > > AES-256). > > > > Section 5.1 > > > > Key Identifier: Carries a variable-length Key Identifier object used > > to identify and deliver keys to SFC data plane elements. This > > identifier is helpful to accommodate deployments relying upon > > keying material per SFC/SFP. The key identifier helps in > > resolving the problem of synchronization of keying material. > > > > I suggest clarifying that a single key identifier is used to lookup both > > the associated ENC_KEY and the associated MAC_KEY (or, alternately, that > > it is logically bound to K and remind the reader that ENC_KEY and > > MAC_KEY are extracted from K and might be separately distributed). > > > > Key Length: Variable. Carries the length of the key identifier. > > [...] > > IV Length: Carries the length of the IV (Section 5.2 of [RFC7518]). > > If encryption is not used, IV length is set to zero (that is, no > > "Initialization Vector" is included). > > > > Please also specify that the Key/IV lengths are measured in bytes (the > > reference for IV length, at least, talks about IVs in bits). > > > > I strongly suggest using a value other than zero as the sentinel value > > for "no encryption" -- there already exist modes like AES-SIV (RFC 5297) > > that do not require an IV input, which would be a natural use for > > zero-length IV. > > > > Additionally, one might imagine using a non-zero-length IV as input to > > an HMAC calculation as a per-message nonce. On cursory examination, > > since we are already using timestamp-based replay detection, the > > additional nonce is unlikely to add much value, but I'm not willing to > > completely rule it out on the basis of the minimal analysis I performed. > > > > Section 7.1 > > > > Only one instance of "MAC and Encrypted Metadata" Context Header > > (Section 5) is allowed. If multiple instances of "MAC and Encrypted > > Metadata" Context Header are included in an NSH packet, the SFC data > > > > I think Roman may have mentioned this already, but please clarify if > > this is one instance per NSH or per packet (e.g., in hierarchical SFC we > > might have more than one NSH in a packet). > > > > Please also clarify it if is permitted to have both MAC#1 and MAC#2 > > present in the same packet. (IIUC there are not obvious situations > > where such a setup would be useful, but it's still good to be clear > > about expectations.) > > > > Section 7.2 > > > > If the Context Headers are not encrypted, the HMAC algorithm > > discussed in [RFC4868] is used to integrity protect the target NSH > > data. [...] > > > > It's not really clear to me why RFC 4868 is the right reference here, as > > opposed to (e.g.) RFC 2104. In particular, see my Discuss point (2). > > > > The Message Authentication Code (T) computation process can be > > illustrated as follows: > > > > T = HMAC-SHA-256-128(MAC_KEY, A) > > > > I agree with the other reviewer that wondered about just using "MAC" (or > > maybe "HMAC") rather than "HMAC-SHA-256-128" here (I do see the "can be > > illustrated as" qualifier). > > > > It's also a little weird to reuse T and A from the AEAD construction (or > > RFC 4868) here without additional discussion on how they apply and how > > the value of A is constructed. > > > > An entity in the SFP that intends to update the NSH MUST follow the > > above behavior to maintain message integrity of the NSH for > > subsequent validations. > > > > I'm not sure that "intends to" is needed; the requirement applies to > > actions, not intent. > > > > Section 7.3 > > > > In an SFC-enabled domain where pervasive monitoring [RFC7258] is > > possible, all Context Headers carrying privacy-sensitive metadata > > MUST be encrypted; [...] > > > > I agree with the other reviewer that noted that this seems to > > effectively be an unqualified "MUST", since there is always some > > possibility of monitoring. > > > > MAC_KEY = initial MAC_KEY_LEN octets of K, > > ENC_KEY = final ENC_KEY_LEN octets of K, > > E = CBC-PKCS7-ENC(ENC_KEY, P), > > M = MAC(MAC_KEY, A || IV || E || AL), > > T = initial T_LEN octets of M. > > MAC and Encrypted Metadata = E || T > > > > I recognize that this is just copy+paste from RFC 7518 (with the > > addition of the last line), but it seems a glaring omission that the > > CBC-PKCS7-ENC() invocation does not include the IV as an input! > > (In §5.2.2.1 of RFC 7518 we do see that "The plaintext is CBC encrypted > > using PKCS #7 padding using ENC_KEY as the key and the IV", so it's just > > the figure/formula that omits the IV.) > > > > We also don't define or mention T_LEN in this document other than in > > this formula and the analogous one for MAC-without-encryption, which > > might be worth remedying. > > > > Section 7.4 > > > > I suggest adding another word (like "Prevention") to the section title. > > > > The received NSH is accepted by an NSH-aware node if the Timestamp > > (TS) in the NSH is recent enough to the reception time of the NSH > > (TSrt). The following formula is used for this check: > > > > -Delta < (TSrt - TS) < +Delta > > > > (There's no real reason why the accepted timestamp skew parameter Delta > > needs to be symmetric in the positive and negative directions.) > > > > Replay attacks within the Delta window may be detected by an NSH- > > aware node by recording a unique value derived, for example, from the > > NSH data and Original packet (e.g., using SHA2). [...] > > > > Note that the unique value MUST NOT use as input any bits that are not > > covered by the MAC. Indeed, just using the MAC itself as the unique > > value would be a fairly straightforward scheme, I think. > > > > Section 7.5 > > > > When an SFC data plane element receives an NSH packet, it MUST first > > ensure that a "MAC and Encrypted Metadata" Context Header is > > included. [...] > > > > This sort of requirement (as written) would seem to support the position > > of some other reviewers that this document would need to formally update > > RFC 8300. > > > > Section 9 > > > > We might discuss that this mechanism is only for metadata type 2 and not > > type 1 (as well as that with the relatively small fixed length of type 1 > > metadata, it's quite challenging to provide useful cryptographic > > protection), so that type-1 metadata still has no generic protection > > mechanism. A given metadata element could define its own protection > > scheme, of course. > > > > The attacks discussed in [I-D.nguyen-sfc-security-architecture] are > > handled owing to the solution specified in this document, except for > > attacks dropping packets. [...] > > > > >From a very quick read, draft-nguyen-sfc-security-architecture proposes > > a probe-based scheme that monitors all middleboxes (or at least those in > > the expected path) to detect a middlebox-bypass attack and verify that > > the probe traversed the expected SFP. I am not sure that this document > > on its own suffices to prevent the middlebox-bypass attack for all > > traffic (i.e., the probe-based scheme might still be needed). If some > > network entities know what the expected service index will be for a > > given SPI at a given node, then middlebox-bypass attacks could be > > natively detected, but my understanding was that such advance knowledge > > of expected service index was not going to be available. > > > > The solution specified in this document does not provide data origin > > authentication. > > > > I would have expected more in-depth discussion of the security > > considerations for a group-shared PSK scheme, including how the risk of > > key loss/compromise goes up when the key is distributed to more > > locations. > > > > Section 9.1 > > > > No device other than the NSH-aware SFs in the SFC-enabled domain > > should be able to update the integrity protected NSH data. > > > > What about classifiers and SFC proxies? > > > > Section 9.2 > > > > I expected to see some remarks here analogous to the second paragraph of > > §9.1 (even if just by reference to that section). > > > > Section 9.3 > > > > Section 5.6 of [RFC8633] describes best current practices to be > > considered in deployments where SFC data plane elements use NTP for > > time synchronization purposes. > > > > The referenced section covers NTP symmetric mode only. Is client/server > > mode not a BCP for trusted networks and broadcast/symmetric the only > > options? > > > > NITS > > > > Section 1 > > > > network infrastructures against them, network slicing, etc. Because > > of the proliferation of such advanced SFs together with complex > > service deployment constraints that demand more agile service > > delivery procedures, operators need to rationalize their service > > delivery logics and master their complexity while optimising service > > activation time cycles. The overall problem space is described in > > [RFC7498]. > > > > The "their" in "master their complexity" is a bit ambiguous between > > "operators" and "service delivery logics" (noting that the previous use > > of "their" did refer to "operators"). (The sentence as a whole reads a > > bit like marketing language, but that's not intended to be an actionable > > comment.) > > > > This specification fills that gap. Concretely, this document adds > > integrity protection and optional encryption of sensitive metadata > > directly to the NSH (Section 4); integrity protects the packet > > payload and provides replay protection (Section 7.4). [...] > > > > The clause after the semicolon needs to be able to stand alone as a > > complete sentence in order to be grammatical, but it currently has no > > subject. Maybe prefixing "it also" would be enough to fix it. > > > > Section 4.1.2 > > > > The integrity protection scope is explicitly signaled to NSH-aware > > SFs and SFC proxies in the NSH by means of a dedicated MD Type > > (Section 5). > > > > Signaled to SFFs as well, since in the second LoA they can use it. > > > > Section 4.6 > > > > As discussed in [RFC8459], an SFC-enabled domain (called, upper-level > > domain) may be decomposed into many sub-domains (called, lower-level > > domains). In order to avoid maintaining state to restore back upper- > > lower NSH information at the boundaries of lower-level domains, two > > > > I think s/upper-lower/upper-layer/ (across the line break)? > > > > Section 5.1 > > > > MAC#1 Context Header is a variable-length Context Header that carries > > the Message Authentication Code (MAC) for the Service Path Header, > > Context Headers, and the inner packet on which NSH is imposed, > > calculated using MAC_KEY and optionally Context Headers encrypted > > using ENC_KEY. [...] > > > > Comma after "calculated using MAC_KEY", please. ("optionally Context > > Headers [...]" are not used along with MAC_KEY in the calculation) > > > > Section 5.2 > > > > Message Authentication Code: Coves the entire NSH data. The > > > > s/Coves/Covers/ > > > > Section 6 > > > > The epoch is 1970-01-01T00:00Z in UTC time. [...] > > > > (IIUC, the "in UTC time" is redundant with the trailing 'Z'.) > > > > Section 7.1 > > > > element. The details of sending notification alarms (i.e., the > > parameters affecting the transmission of the notification alarms > > depend on the information in the context header such as frequency, > > thresholds, and content in the alarm) SHOULD be configurable. > > > > The grammar in the parenthetical seems off to me. Possibly > > s/depend/depending/ would be a fix, but I'm not sure. > > > > NSH-aware SFs and SFC proxies MUST re-apply the integrity protection > > if any modification is made to the Context Headers (strip a Context > > Header, update the content of an existing Context Header, insert a > > new Context Header). > > > > I think maybe an "e.g.," in the parenthetical is in order, since this > > doesn't seem to include things like "decrement the TTL". > > > > Section 9 > > > > The interaction between the SFC data plane elements and a key > > management system MUST NOT be transmitted in clear since this would > > completely destroy the security benefits of the integrity protection > > solution defined in this document. The secret key (K) must have an > > expiration time assigned as the latest point in time before which the > > > > This first sentence seems like it could probably be a paragraph of its > > own; the subsequent discussion of expiration time seems to be mostly > > unrelated. > > > > We might also add another sentence to reiterate that "the security and > > integrity of the key-distribution mechanism is vital to the security of > > the system as a whole". > > > > o Attacker replacing the packet on which the NSH is imposed with a > > bogus packet. > > > > I'd probably say "modified or bogus". > > > > In an SFC-enabled domain where the above attacks are possible, (1) > > > > This is perhaps ambiguous about whether an "any" or "all" criterion > > should be used. Perhaps that's desired :) > > > > > > > >
- [sfc] Benjamin Kaduk's Discuss on draft-ietf-sfc-… Benjamin Kaduk via Datatracker
- Re: [sfc] Benjamin Kaduk's Discuss on draft-ietf-… mohamed.boucadair
- Re: [sfc] Benjamin Kaduk's Discuss on draft-ietf-… mohamed.boucadair
- Re: [sfc] Benjamin Kaduk's Discuss on draft-ietf-… tirumal reddy
- Re: [sfc] Benjamin Kaduk's Discuss on draft-ietf-… Benjamin Kaduk
- Re: [sfc] Benjamin Kaduk's Discuss on draft-ietf-… Benjamin Kaduk
- Re: [sfc] Benjamin Kaduk's Discuss on draft-ietf-… tirumal reddy
- Re: [sfc] Benjamin Kaduk's Discuss on draft-ietf-… tirumal reddy