[radext] ALPN alert use with RADIUS Version 1.1

Heikki Vatiainen <hvn@radiatorsoftware.com> Wed, 19 July 2023 16:36 UTC

Return-Path: <hvn@radiatorsoftware.com>
X-Original-To: radext@ietfa.amsl.com
Delivered-To: radext@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3BCF5C14CE47 for <radext@ietfa.amsl.com>; Wed, 19 Jul 2023 09:36:42 -0700 (PDT)
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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=radiatorsoftware-com.20221208.gappssmtp.com
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 m88FzlINAvo7 for <radext@ietfa.amsl.com>; Wed, 19 Jul 2023 09:36:41 -0700 (PDT)
Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 37528C14CE45 for <radext@ietf.org>; Wed, 19 Jul 2023 09:36:40 -0700 (PDT)
Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-51e57874bfdso10039223a12.0 for <radext@ietf.org>; Wed, 19 Jul 2023 09:36:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=radiatorsoftware-com.20221208.gappssmtp.com; s=20221208; t=1689784599; x=1690389399; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=fSQNwdteWjbBtstb6n2plYoR0ok4oC65DG4/INA45Zs=; b=fQ7//xjSjjnY7mX/dDh97DoWWhLX0KQv8cQe+oULHEqrlYQvS9uXMCr8qNpKKJ0Qk6 qKIJ2KGy80NjnOl+W24jv3lN2CDkpnSzYbR4uXg9UABMgTwlquEnuYfGVF+rRCjtkLZL 2GP5sMi1N+jgTkL7lMTBn4jz/ekRvbEDGIrAByHy08akv8TTpZPgVnXyP91fYbC+yeCb xld/YTbaydE7vZfbqNGg8GqBHL1shrgcDUz3IdSLLwL8x3e/zQ8+8ulZL9zJnOGWma2O 1WdF30Clwvo3jdZqfjPDeXliA11plvzgPoIuwCttAYj+EPf2tMWhFJreQ2tU2qpC9Yw3 Q8TQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689784599; x=1690389399; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=fSQNwdteWjbBtstb6n2plYoR0ok4oC65DG4/INA45Zs=; b=GBDK3QAHmMgfmsCGNxPN2/pmLaf2h5W4xCPK6TWzj/osAoKRphBGnL7Tx5U0I2syzl ODyxY9nZE+Hz2r1CDH8nwUHt39rXiEJcV3gsDQ5RoG8wzMLWv8Vro+Z/sLCkVa7/F4EY Uw7E95iIbAT6Uv9LXviK1JZgkj88WO5ex5/t0wxDQGSKV84B3o+9kYDCud5nkhEhZlxX clJ7gUHYB892ykkr2y1OsdZt+Yfblcb+f6fGDwPdZHtUoaI0eFlRy0w06ch+UytxwXpO ej/JayiyDjYr+qQDAiL7rqgsl0uyQEc2mFamdKa5qdOG2S02pynVgjy/lvsAUVaVb2AA 6IvA==
X-Gm-Message-State: ABy/qLa3cQ4HZXLbEaacYMtIW2UrWfF0Y1XMkBeJvcfOrpBYlA47Xl0u kQvhyFUYHvlspkNCPbo3Sh+KspLHr+9ir7ibw4bSu6EWxBSL9FvWzI0=
X-Google-Smtp-Source: APBJJlG5ZJ/6FAHitxykOq9RZ9VM0DSRTMfe71OOsJmXVMdICl0IlM9swBYwhb9ateHvq8zGu59IuSlK6zooVmfGPjc=
X-Received: by 2002:a05:6402:1511:b0:51e:3427:63fb with SMTP id f17-20020a056402151100b0051e342763fbmr2955150edw.4.1689784599007; Wed, 19 Jul 2023 09:36:39 -0700 (PDT)
MIME-Version: 1.0
From: Heikki Vatiainen <hvn@radiatorsoftware.com>
Date: Wed, 19 Jul 2023 19:36:23 +0300
Message-ID: <CAA7Lko9kxYNOZDuZHfBZQ-01fPf25EYSLuNR=2aUL1Z19ehuRw@mail.gmail.com>
To: radext@ietf.org
Content-Type: multipart/alternative; boundary="000000000000c5676f0600d9a2c6"
Archived-At: <https://mailarchive.ietf.org/arch/msg/radext/cHJEetTjx_GHRLWaQCI5HuBQWsw>
Subject: [radext] ALPN alert use with RADIUS Version 1.1
X-BeenThere: radext@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: RADIUS EXTensions working group discussion list <radext.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/radext>, <mailto:radext-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/radext/>
List-Post: <mailto:radext@ietf.org>
List-Help: <mailto:radext-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/radext>, <mailto:radext-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 19 Jul 2023 16:36:42 -0000

I've looked at RADIUS Version 1.1 implementation and there are a some
implementation related topics I'd like to hear opinions on. I'll start with
ALPN alert use with this message.

The draft currently states this about TLS alert 120 use:
https://www.ietf.org/archive/id/draft-ietf-radext-radiusv11-01.html#section-3.3-9

If a client or server determines that there are no compatible application
protocol names, then as per [RFC7301] Section 3.2, it MUST send a TLS alert
of "no_application_protocol" (120), which signals to the other end that
there is no compatible application protocol.


The table in section 3.3.1 then helpfully describes all combinations of
client and server ALPN configuration policy and capability.

First, regarding client behaviour: I don't think RFC 7301 describes the
possibility for a client to send alert 120.
https://datatracker.ietf.org/doc/html/rfc7301#section-3.2

While this would be useful for debugging and troubleshooting, it seems that
for example OpenSSL, that I've used, doesn't readily support it. I've also
talked to someone who knows about Rust native TLS, and it seems impossible
there too. What client can do is to do a normal shutdown and send a
'close_notify' alert. It seems that even OpenSSL does not provide an API
function to send a specific alert. Other TLS implementations may also not
be capable sending alert 120 for TLS client connections.

Second, OpenSSL provides a callback for examining ClientHello and then
triggering an alert if the handshake shouldn't proceed. This can be used to
handle the upper right corner case in the table where the Client supports
'No ALPN' and Server policy is 'require'. This again seems to go against
ALPN RFC 7301 because the RFC only discusses alert 120 in the case where
the server supports no value that the client offers with ALPN. The upper
right corner is the case where the client sends no ALPN extension.

With Rust native TLS there's apparently no similar ClientHello callback and
the server needs to later examine if ALPN was negotiated and then close the
connection. In other words, with Rust TLS, the handshake finishes first
before ALPN status is available.

With both OpenSSL and Rust TLS, the libraries can be made to send alert 120
when there's no overlap with ALPN protocols the client and server support.
In other words, only the case where the both client and server use ALPN,
alert 120 can be sent without any extra work.

To summarise: the requirement to use TLS alert 120 by both client and
server in every case where the table in section 3.3.1 of the current draft
requires 'Close' seems to be hard to implement. It also seems to be not
what the ALPN RFC states about alert 120 usage. It would be beneficial for
troubleshooting if the alert could be used for all 'Close' cases, but
should we think about an alternative for those cases where the TLS
implementation can't be made to send alert 120 as the application needs?

-- 
Heikki Vatiainen
hvn@radiatorsoftware.com