[tsvwg] Status of fourth option

Michael Tuexen <michael.tuexen@lurchi.franken.de> Tue, 17 December 2024 12:06 UTC

Return-Path: <michael.tuexen@lurchi.franken.de>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A2CE8C14F698 for <tsvwg@ietfa.amsl.com>; Tue, 17 Dec 2024 04:06:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.895
X-Spam-Level:
X-Spam-Status: No, score=-1.895 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_PERMERROR=0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xzsacMPYB4bM for <tsvwg@ietfa.amsl.com>; Tue, 17 Dec 2024 04:06:40 -0800 (PST)
Received: from drew.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6ADB1C14F61A for <tsvwg@ietf.org>; Tue, 17 Dec 2024 04:06:38 -0800 (PST)
Received: from smtpclient.apple (unknown [IPv6:2003:a:e03:d412:509:390b:2293:8272]) (Authenticated sender: lurchi) by mail-n.franken.de (Postfix) with ESMTPSA id 8ADE8721E2806; Tue, 17 Dec 2024 13:06:34 +0100 (CET)
From: Michael Tuexen <michael.tuexen@lurchi.franken.de>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.300.87.4.3\))
Message-Id: <C7B331AA-8F91-4578-ABDB-3DE434DB5A7D@lurchi.franken.de>
Date: Tue, 17 Dec 2024 13:06:33 +0100
To: tsvwg <tsvwg@ietf.org>
X-Mailer: Apple Mail (2.3826.300.87.4.3)
Message-ID-Hash: JQT67LDOOEJE76WKHKSWV4AAC24IJCU5
X-Message-ID-Hash: JQT67LDOOEJE76WKHKSWV4AAC24IJCU5
X-MailFrom: michael.tuexen@lurchi.franken.de
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tsvwg.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: John Mattsson <john.mattsson@ericsson.com>, Magnus Westerlund <magnus.westerlund@ericsson.com>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [tsvwg] Status of fourth option
List-Id: Transport Area Working Group <tsvwg.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/zjocmldMRFEUEQNL1YRuBZUPUSo>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tsvwg>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Owner: <mailto:tsvwg-owner@ietf.org>
List-Post: <mailto:tsvwg@ietf.org>
List-Subscribe: <mailto:tsvwg-join@ietf.org>
List-Unsubscribe: <mailto:tsvwg-leave@ietf.org>

Dear all,

John, Claudio, Magnus, and myself worked on the fourth option to secure 
SCTP-based communication. Since it was agreed on securing the traffic at
the SCTP packet level and use (D)TLS for the key management, we used the
solution described in
https://www.ietf.org/archive/id/draft-westerlund-tsvwg-sctp-dtls-chunk-03.html
as a starting point.

Such a solution needs to protect the contents of a DTLS chunk.
Let us call this function block the chunk protector. There are also
DTLS messages (like key  updates), which are protected.
Let us call this function block the record protector.

In Figure 1 of the ID, it is shown that the chunk protector gets the
required parameters from the key management of a DTLS implementation
running on top of the SCTP implementation via an API.

Figure 1 does not show the record protection function. Any DTLS messages
would be protected by the record protection function first, the passed to
the SCTP stack as a user message and the resulting DATA chunks (and other
chunks) would be protected by the chunk protector.

John, Claudio, and Magnus assume the record protector and the chunk protector
are the same function (or at least share a per protection operation state).
We all agree that this is implementable with a userland SCTP stack and a DTLS
stack, which provides DTLS messages. It is also possible in a kernel SCTP 
implementation that has a full DTLS stack in the kernel, e.g. WolfSSL has such
an DTLS implementation for Linux.

When implementing this with a kernel implementation, the chunk protector
needs for performance reasons to be part of the SCTP stack running in
the kernel. If the DTLS stack is implemented in userland, the record
protection would be part of the userland. Sharing the per protection
state is hard. Michael proposed therefore, once a DTLS connection
has been established to derive some key material (using the (D)TLS exporter)
and use that for the chunk protection. Also use separate sequence numbers.
This would require kernel and userland stacks to build the chunk protection 
as part of the SCTP stack and would allow to use an unmodified DTLS stack for 
the key management. It would also allow to use a TLS stack for key management.

This change John, Claudio, and Magnus had several issues with.
First it implies defining new security functions that will require
security analysis including formal analysis since it is not just using
DTLS as it is anymore. It will also result that any all-in user space or
all-in kernel implementations has to implement this SCTP security
specific record processing and can’t any longer just use an off-the-shelf
DTLS stack. Resulting in implementation efforts, maintenance and possibly
certification of implementation, thus it would, at least for Ericsson,
delay product delivery to customers.

Since we all agree that a solution should be developed in a timely matter,
and because 3GPP has asked for a solution for a very long time now,
we are reaching out to TSVWG for wider discussion and further input
and possibly a prompt decision on the way forwards.

This status report is agreed by all of us: John, Claudio, Magnus, and myself.

Best regards
Michael