[kitten] Re: WG Last Call: draft-ietf-kitten-sasl-ht-02 (Ends 2026-07-10)
Thilo Molitor <thilo@eightysoft.de> Wed, 22 July 2026 11:52 UTC
Return-Path: <thilo@eightysoft.de>
X-Original-To: kitten@mail2.ietf.org
Delivered-To: kitten@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 5B8CE11C37568; Wed, 22 Jul 2026 04:52:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1784721130; bh=Up3ykZPUKevvtTrpu8O+P3a9ppNe5/B5t0Fyavrrz5o=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=KQV5O1xHfVReCOM4c3x/DE+5zEAhHNdgilQypYLfkSJgWEiU7iwuwsfS9PY8f94Zh TjsrtE5G53Uv5O8S3k/0AGEt6xagxY82QFBpQZ1r1Yq1fA/txlOzTzSa/fBsO+Etz3 sfUhDHt7GWs/wulmxocRk2xp+0CfHoTioIVgfFcQ=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.798
X-Spam-Level:
X-Spam-Status: No, score=-2.798 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (4096-bit key) header.d=eightysoft.de
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id myh-J1OmTtLk; Wed, 22 Jul 2026 04:52:08 -0700 (PDT)
Received: from mail.molitor-dietzel.de (mail.molitor-dietzel.de [5.9.139.211]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X448 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 3ECDC11C3706D; Wed, 22 Jul 2026 04:51:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eightysoft.de; s=eightysoft.de; t=1784721107; bh=wiMqBKGX4YyPhCJUuyb8eStSjpKWzM9EOMj7xvFL/Gw=; h=From:To:Subject:Date:Message-ID:In-Reply-To:MIME-Version: Content-Type:From:To:Subject:Date:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-Disposition:Message-ID: List-Unsubscribe:List-Unsubscribe-Post:Sender:In-Reply-To; b=c45Lltlg0rBhcJo1ASMvn1u7hATiKU5mJw8qmk3aqXWOrS0R7rIHNp0AqWid+sAwv RjRsjkQ8dUF39zFhM5S/8HrlcmmWvhEP9/SU5gUzukXlM7lKPRnCkH7MUn+eEDb823 Frx3nF59HlflEnaz1ec4d/td3r4NCNH1Tn7wcWfwoU/17EQJ8c2OlEMs+o9/LQowtI dcMhwkMl4uThuE3NM4v3FQBxFD7gei5zC8E4t7bWqjFZK5oaVHf/8948DyIBE5TY1A OUh6/dvrkJgeVSfkZP94oiCVv6E5kkABH8xw1SGZyE2Wei9lWEuc9jEJWiLVNmR9df Il+TkGnMQGwXNUDVv6Ws+xGf5ABqyHoRW3LqT5vZoHPwdiEk4lWpnhktEOE2Mnu1M1 tyx05ca2jWOasdkJNdIzl3Euw5miBH/nhPyQtSW4r3HjX0U+30BvGmQYBZG7YXiFmq cl5ANzfzgNWGQrcHWcJD7u/zcs7lugjg5WBJpGYiBf8eI5KBVEIID14MVgXWk8f9VS IDXzobtgFnFi0BjZF8qG6pIOWGgElFWrJ7i+O0OkKFQDMkc+5P0Ax4/C2rOc6hdpGU xFuhHlo9NU3GacOIoNcgrbC5jxNFGF0GMZPRlmneFAufWoI6E9rsZTb7E5NR1jJqaS WqRgT2eC1+PEFV81c+PNtttU=
Received: from laptop.localnet (everest.eightysoft.de [49.12.6.215]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x448 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail.molitor-dietzel.de (Postfix) with ESMTPSA id D1E211C0442; Wed, 22 Jul 2026 13:51:46 +0200 (CEST)
From: Thilo Molitor <thilo@eightysoft.de>
To: Alexey Melnikov <alexey.melnikov=40isode.com@dmarc.ietf.org>, draft-ietf-kitten-sasl-ht@ietf.org, kitten@ietf.org
Date: Wed, 22 Jul 2026 13:51:44 +0200
Message-ID: <4333728.q6slDKCJzE@laptop>
In-Reply-To: <7ac210d4-58c5-40be-b7e9-79996612c39d@geekplace.eu>
References: <178240804836.1584251.3078843204129464442@dt-datatracker-f9b87776f-xzl65> <5f3a7e97-76c3-454a-b7e4-42e131a661b8@isode.com> <7ac210d4-58c5-40be-b7e9-79996612c39d@geekplace.eu>
MIME-Version: 1.0
Autocrypt: addr=thilo@eightysoft.de; keydata= mQENBGlGknMBCACuTSGXCSpWkOLImrTJjFgO4ZnH/KAT66eyKXUIMQMel6vJnPKOmaepviRfEq7 17s4JELeXHxiPOw7CqqCse6QzNeXblmQslNKgP2ixm6pgCopiK2BsN/PohtSjMSoHZewuZZBEjs vai2fgwvIbYZA/u30y1b5iePLoMpXVL89G7RvhEsP+aCkPSQ4wfh/GOQ+XF2Rt71sKUW0QmA0Vq 9fV8Y4CEE89h16GZ8gP1bEOSxpEts1S1ysH5sXYoo6rk5sg7YHxhyaiinvvqfg5Jfwfsm1PzEfr 1rKn+aA+kMvEqnJtX4Jk/8OGucq+xXfYzdb4yFgN2t7wRXW/6xvqFGS1ABEBAAG0I1RoaWxvIE1 vbGl0b3IgPHRoaWxvQGVpZ2h0eXNvZnQuZGU+iQFOBBMBCgA4FiEEN0CchbhrMgfxs4ncSg9KP3 bcW1sFAmlGknMCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQSg9KP3bcW1s1cAf+PMwYk DFXAGxHuq6F1q2xbi9SGE5hLIjnIFPKjlMFO6pfvM27zaaGoC+0MGUyvLN0PYhQdvQhd9GzQEk3 scQOahse521G5f7znBffyiuDmf+7Dl5d1J0tkTO0+dcJeLGQK6AIY5PJx2yXVkLa2uJSrdsI3wT bTezmFKmdgsAtfu65N2JINxHyFanJsIKPFRRM2IHqZlgO8JO0xcr7ge11jBp/ZqrFF6eGC8weJ7 AsUsx+eH4dMmfzM5lsW9n8pQ4a0q32eaoTjQAfwQ9uJVVREE0t8jeilRnm0AU25UUCcEKWZRILQ 8zvLPLYON9QtBUZq0bZdSLDCmY/0UYfZ75L97kBDQRpRpJzAQgAlUYvGfpujUBjPN+CA5ey2LtE vlLLJ87O4vzdgqizI6MfVVzuwoRJlnd8DCGl2eFYIu4AKKiFmYvy6C0xm1LXpU7zA8wlFyOqTIo MO7G4Nd4bNuBPTeSFSgAfjDOb+Ov2YJYKrZ/a9zY3tSvqm8D0ipbpk7f0ESg8iAjli5S2ffMr2j 46HUADOl2v1tSxVUBZFyr/5M+sOOzvrWfjB9b7zoNNr/43u/119aSXLdyeh3IQ0wwfLY93dzA6n fx6t4u3OkkbAalosD7FQccfiXOIQFwQ2bSKtQBVftlUwXCirvPbFxcWAbBksZ1Ac137PdQEEa6H xjZ1Aof5bOBHv2K4EQARAQABiQE2BBgBCgAgFiEEN0CchbhrMgfxs4ncSg9KP3bcW1sFAmlGknM CGwwACgkQSg9KP3bcW1sbeggAhe07zvnEapmXWNHeCeGmqxdxo9AyK+/35fCzyyvGPXgsELmr/U PfpNgHuf1z9TpzcIfUwnaSdoD0ZskWMqaGwkXJJKwD72qwtIvS/9AAmkT96CNr+h6pUfQI1ksrz XjAsrEY9aUGHsMSiq7NaqdcgTYiMwKNYxE4nxw8Lw/p+d6BegPjPu5lxxVdmalnQ8dJ9ODAmLAt 9FhzxJhT6CtSG9xmNkAngThqVlwBFrsDYMIVAu/0VCKqmD01erJQ+N13GbZDMz0WV1MAT46o7jT wf0YcnFRiGVKY3VnqkHIbT8zC5SD1Q/7b17xvh8lfEwm/kvRo0AZT8kXzK2k+UXr+TA==
Content-Type: multipart/signed; boundary="nextPart4536896.QjeZ3AN3T1"; micalg="pgp-sha512"; protocol="application/pgp-signature"
Message-ID-Hash: SLR6BDSWGBXFNUGMXCTEC6AZSZZA7RA2
X-Message-ID-Hash: SLR6BDSWGBXFNUGMXCTEC6AZSZZA7RA2
X-MailFrom: thilo@eightysoft.de
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-kitten.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: kitten-chairs@ietf.org, kitten@ietf.org, Simon Josefsson <simon@josefsson.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [kitten] Re: WG Last Call: draft-ietf-kitten-sasl-ht-02 (Ends 2026-07-10)
List-Id: Common Authentication Technologies - Next Generation <kitten.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/kitten/2axSLY8fTt5dhvB58vZTDPjzaCA>
List-Archive: <https://mailarchive.ietf.org/arch/browse/kitten>
List-Help: <mailto:kitten-request@ietf.org?subject=help>
List-Owner: <mailto:kitten-owner@ietf.org>
List-Post: <mailto:kitten@ietf.org>
List-Subscribe: <mailto:kitten-join@ietf.org>
List-Unsubscribe: <mailto:kitten-leave@ietf.org>
Hi Alexey, hi Simon, thanks for your detailed review and apologies for my late answer! I discussed some of these with Florian and this is the outcome: 1.) We'll add support for authzid along the lines of Simon's third variant. HT-tokens are meant to be used for quick re-authentication after previous strong authentication (SCRAM with channel-binding etc.). This can be used as building block for session resumption, but it doesn't need to. That means it can also be used as a means for quick re-authentication of the authcid user while also setting an authzid, subsequently resulting in new session as that authzid user. This is especially useful if the previous strong authentication had something like 2FA in place and acting as the authzid user should not trigger the 2FA again. Of course the server has to check if the authcid is allowed to use the given authzid, just like Simon wrote. 2.) While strong channel-binding and security in general it a worthy goal, it doesn't make sense to mandate a strong channel-binding like tls-exporter with a MUST, if that means that some software and deployments not being able to support this will have to break the I-D/RFC (tls-termination/load-balancers in front of an imap/smtp/xmpp server etc. comes immediately to my mind, but there may well be others, too). Therefore we decided to make tls-server-endpoint a MUST while suggesting support for tls-exporter using SHOULD and some wording explaining that tls- exporter is way more secure than tls-server-endpoint and should be preferred whenever possible. This is similar to a discussion we had on this list (thread starting at [1]) and the xmpp standards list ~half a year ago (see [2] and [3] for my explanation back then or the whole thread around those messages for some more context). On that occasion multiple people spoke out against using tls- exporter as the mandatory-to-implement (and mandatory-to-deploy) minimal common channel-binding on this list, too. 3.) The key-value pairs of SCRAM are a very nice mechanism to extend the authentication mechanism with optional and mandatory properties needed for the authentication. Only that extensibility allowed us to write something like XEP-0474 [4] to harden the SASL flow in XMPP against downgrade attacks on the channel-binding and/or SASL mechanism (rather than relying on pinning and leaving the first authentication unprotected). The key-value pairs in HT follow a similar pattern and in my discussion with Florian we decided to model them more after the SCRAM ones: adding a predefined key prefix (e.g. "mandatory-") that forces the client/server to abort authentication if present but not understood. Of course these key-value pairs aren't meant to be used to transport arbitrary application data and should be tied to the authentication itself. We will add some wording to make that clearer. -tmolitor [1] https://mailarchive.ietf.org/arch/msg/kitten/zpesKSHsiuy1RvhPlbSUGajLbKQ/ [2] https://mail.jabber.org/hyperkitty/list/standards@xmpp.org/message/ 6RJMUORBJGS2ZNQNFMY44EWP5PJHPZCC/ [3] https://mail.jabber.org/hyperkitty/list/standards@xmpp.org/message/ OTFEHOYYFWVPVPU4HAVNVH2H3KNY3U6K/ [4] https://xmpp.org/extensions/xep-0474.html Am Freitag, 10. Juli 2026, 12:27:29 CEST schrieb Florian Schmaus: > Hi Alexey, > > Thanks for your feedback. Much appreciated. > > On 26/06/2026 18.03, Alexey Melnikov wrote: > > >> ISSUE: Key/value pairs > >> > >> > >> > >> What is the actual intended use of this mechanism? How is support for a > >> particular key type intended to be communicated? Could a peer refuse > >> authentication if it didn't understand a key/value pair? Is it possible > >> to express that a key/value pair is MANDATORY or OPTIONAL? The entire > >> method seems underspecified to me, compare what SCRAM says about its > >> similar fields. > > > > > > I am a bit concerned about this feature as well. SCRAM optional/ > > mandatory attributes were not supposed to be a mechanism for shuttling > > arbitrary extra application data in SASL exchange. > > > > Also, if KITTEN WG decides that having such a facility is a good thing, > > we should have it as a generic SASL2 requirement, as otherwise we are > > breaking SASL interface isolation guarantees between application > > protocols and SASL mechanism. I.e., with the exception of legacy SASL > > mechanisms, most features should be available in most of them, not just > > in 1 of them. > > > > I am not dead against this feature in HT2, but I think I need a bit of > > convincing. And as you say, tightening scope and applicability of this > > feature would be good. > > I think there are two distinct aspects here: the scope of the key/value > data, and how it applies to SASL2. > > Our motivation for this feature was strictly related to authentication > security, specifically SASL SCRAM downgrade protection (XEP-0474). > Because HT is a fast resumption mechanism, we needed a way for peers to > cryptographically verify the initially offered SASL mechanisms and > channel-binding types to ensure a MITM attacker didn't force a downgrade. > > Since downgrade protection is a SASL security concern, placing it inside > the HT mechanism's envelope felt appropriate. That said, I hear your > point that framing this as "arbitrary key/value pairs" leaves the door > open too wide. > > I completely understand the need to maintain SASL interface isolation, > but out of curiosity, and to help my understanding of the architecture, > could you elaborate a bit on the dangers of allowing arbitrary but > authenticated data to piggyback on the SASL exchange? My initial thought > was that since extension points, like the one we used for downgrade > protection, proved so valuable, leaving the field generic might be > beneficial for unforeseen future use cases. I would love to hear your > perspective on exactly where that boundary should be drawn between a > valid security extension and a layering violation. > > Regardless of that theoretical boundary, I completely agree with your > second point: if we want a generic data facility, it belongs in SASL2, > not hidden inside a single mechanism. > > Given that, how would you prefer to handle this in the current HT draft? > We could rename the "arbitrary key/value pairs" to something strictly > scoped, like "Authentication Security Extensions," and add normative > language explicitly forbidding application-layer data. Does that > sufficiently tighten the scope for you, or how would you prefer we proceed? > > - Florian
- [kitten] WG Last Call: draft-ietf-kitten-sasl-ht-… Alexey Melnikov via Datatracker
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Simon Josefsson
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Alexey Melnikov
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Florian Schmaus
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Alexey Melnikov
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Florian Schmaus
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Thilo Molitor
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Simon Josefsson
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Dave Cridland
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Alexey Melnikov
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Florian Schmaus
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Dave Cridland
- [kitten] Re: WG Last Call: draft-ietf-kitten-sasl… Dave Cridland