Re: [secdir] Secdir early review of draft-ietf-taps-interface-13

Benjamin Kaduk <kaduk@mit.edu> Sat, 23 October 2021 20:54 UTC

Return-Path: <kaduk@mit.edu>
X-Original-To: secdir@ietfa.amsl.com
Delivered-To: secdir@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 439FD3A0DF8 for <secdir@ietfa.amsl.com>; Sat, 23 Oct 2021 13:54:24 -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 c-fv7RagDc1p for <secdir@ietfa.amsl.com>; Sat, 23 Oct 2021 13:54:19 -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 0B2253A0DF6 for <secdir@ietf.org>; Sat, 23 Oct 2021 13:54:18 -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 19NKs9tJ025984 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 23 Oct 2021 16:54:15 -0400
Date: Sat, 23 Oct 2021 13:54:09 -0700
From: Benjamin Kaduk <kaduk@mit.edu>
To: Sean Turner <sean@sn3rd.com>
Cc: secdir@ietf.org
Message-ID: <20211023205409.GY88762@kduck.mit.edu>
References: <163469775639.5436.17223656477070371812@ietfa.amsl.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <163469775639.5436.17223656477070371812@ietfa.amsl.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/secdir/rFjbOBC8fmj9cdHlvC-IR3_-mAs>
Subject: Re: [secdir] Secdir early review of draft-ietf-taps-interface-13
X-BeenThere: secdir@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Security Area Directorate <secdir.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/secdir>, <mailto:secdir-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/secdir/>
List-Post: <mailto:secdir@ietf.org>
List-Help: <mailto:secdir-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/secdir>, <mailto:secdir-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 23 Oct 2021 20:54:25 -0000

Hi Sean,

A big thanks for doing the review in the context of the pending changes
prompted by the ARTART review, and the cluster of related documents as a
whole!  It's great to see that you made a checklist of what's needed
(security-wise) for an API and saw that each was covered somewhere in the
cluster of documents, as well as providing the specific comments on this
draft.

Thanks again,

Ben

On Tue, Oct 19, 2021 at 07:42:36PM -0700, Sean Turner via Datatracker wrote:
> Reviewer: Sean Turner
> Review result: Has Issues
> 
> This is an early sector review. Based on the ARTART early reviews of this I-D
> and the -arch I-D, there is no doubt going to need to be another review after
> the authors get done restructuring both I-Ds.
> 
> BTW: Theresa thank you for the heads up about that restructuring. It forced me
> to read the -arch and -impl I-Ds, but that probably helped me not make silly
> requests of the authors/WG.
> 
> tl;dr: I picked "has issues" knowing there is a rewrite on the way and I would
> like to reserve final judgement until then.
> 
> I apologize upfront because I am going to ramble a bit before I get to the
> specifics:
> 
> The taps I-Ds are about “a protocol-independent Transport Services Application
> Programming Interface (API).” I took a pretty liberal approach when reviewing
> this I-D from a security perspective because these I-Ds are somewhat different
> than the “normal” protocol I-Ds. As noted in the -arch I-D: these I-Ds do not
> specify “specific protocols or algorithms” … gasp. But, that’s probably okay in
> this context.
> 
> I wondered what you would say about an API:
> - Apps need to use the API properly! check: see -arch I-D
> - Implementation/Library needs to be from trust source! check: see -interface
> I-D - Apps need to use the right keys at the right time! check: see -arch I-D -
> Avoid fallback/downgrade to insecure protocols! check: see -arch I-D and -impl
> I-D - Deal with 0-RTT! check: see -impl I-D - Address privacy aspects! check:
> see -interface I-D
> 
> I mean maybe you could add something about:
> 
> - randomness for keys - but that better already be in the security protocol
> specifications so I do not think it is absolutely needed here.
> 
> - following good programming techniques - but I am not sure where you would
> point nor whether it really makes sense to do so.
> 
> I think I found what I was looking for is somewhere in the stack of I-Ds. Am I
> worried somebody can implement this wrong. Sure. But, not any more than I would
> be for any other protocol.
> 
> Now on to the specifics:
> 
> NOTE: I tried not repeat anything from the ARTART review.
> 
> 0) s6: maybe this wording would be better?
> 
> For these two sentences are you trying to say that MUST else if?
> 
> OLD: At least one Local Endpoint MUST be specified if the Preconnection is
>    used to Listen() for incoming Connections, but the list of Local
>    Endpoints MAY be empty if the Preconnection is used to Initiate()
>    connections.
> 
> NEW: At least one Remote Endpoint MUST
>    be specified if the Preconnection is used to Initiate() Connections,
>    but the list of Remote Endpoints MAY be empty if the Preconnection is
>    used to Listen() for incoming Connections
> 
> 1) s6.3.1 I know this is an example, but can we replace:
> 
> SecurityParameters.Set(supported-group, "secp256k1")
> 
> with
> 
> SecurityParameters.Set(supported-group, "secp256r1")
> 
> r1 the current MTI for TLS. k1 is for bitcoin :)
> 
> Or, is this where I get a bitcoin because I caught the shiny object? :)
> 
> 2) s6.3.2: Is this like checking the certificate status?
> 
> 3) s8.1.1- I read this definition a bunch. Are there two special values? The
> Type line says “Full Coverage” is special, but then the description says “0” is
> special too. Maybe look at s91.3.6 for inspiration?
> 
> 4) s8.1.2: Any reason it’s not called connPriority? Seems arbitrary to drop the
> end of the word when connTimeout is even longer.
> 
> 5) s8.1.2-should “Type” line also include (non-negative) like s8.1.1 and
> s9.1.3.2 do?
> 
> 6) s8.1.3/.4: The Numeric values specifies seconds, minutes, hours, or
> millennia?
> 
> 7) s8.1.6: don’t you need to specify the Type? I guess Enumeration is what
> you’re after?
> 
> 8) s8.1.11.2/.3/.4: Are these sizes in bytes too like 8.1.11.1?
> 
> 9) s8.2.1: RFC 5482 allows granularity of minutes or seconds don’t you need to
> say which it is here?
> 
> 10) s8.2.2: Is there some reason it’s not called tcp.userTimeoutEnabled?
> 
> 11) s8.2.3: Is there some reason it’s not called tcp.userTimeoutChangable?
> 
> 12) s9.1.3.2: Why 100?
> 
> 13) s9.1.3.2: Why shorten to msrPrio when msgOrdered is almost as long and
> safelyReplayable is longer?
> 
> 14) A.1: Could the caution about freeing memory be generalized?
> 
> 15) What follows are the I-D nits references to check. Some of these might be
> on purpose:
> 
>   == Outdated reference: A later version (-11) exists of
>      draft-ietf-taps-arch-10
> 
>   ** Obsolete normative reference: RFC 4941 (Obsoleted by RFC 8981)
> 
>   == Outdated reference: A later version (-06) exists of
>      draft-ietf-httpbis-priority-03
> 
>   == Outdated reference: A later version (-10) exists of
>      draft-ietf-taps-impl-09
> 
>   -- Obsolete informational reference (is this intentional?): RFC 5245
>      (Obsoleted by RFC 8445, RFC 8839)
> 
>   -- Obsolete informational reference (is this intentional?): RFC 5766
>      (Obsoleted by RFC 8656)
> 
> 
> 
> _______________________________________________
> secdir mailing list
> secdir@ietf.org
> https://www.ietf.org/mailman/listinfo/secdir
> wiki: https://trac.ietf.org/trac/sec/wiki/SecDirReview