[Rats] draft-ietf-rats-pkix-key-attestation-07
Richard Kettlewell <rjk@terraraq.uk> Tue, 18 August 2026 17:32 UTC
Return-Path: <rjk@terraraq.uk>
X-Original-To: rats@mail2.ietf.org
Delivered-To: rats@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 9B14D12BD762A for <rats@mail2.ietf.org>; Tue, 18 Aug 2026 10:32:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1787074378; bh=X2yQeGHxKaMqFFjokf5gRdgYz8zyZ7Qvq8mxkfdjbVY=; h=Date:From:Subject:To; b=ZJjB1v2V8TKiW5YOXyaPXc6RN23NDbWxjFlC7SbCovzhh8bAkBcSNIyzIHr6cljXZ UoBWn9vd2YczT2z3wlnoe4nHMNGLkYVZ02j1MQ69r1EmXxdlv8BriJ2Wy6C7RPuhjm LASIGLWMUTqlw6ZvuQhS0EMf6t4Fy1u3zCsH4yCc=
X-Quarantine-ID: <CrY_1fal1ZSB>
X-Virus-Scanned: amavisd-new at ietf.org
X-Amavis-Alert: BAD HEADER SECTION, Improper folded header field made up entirely of whitespace (char 20 hex): X-Spam-Report: ...terraraq.uk for details. Content analy[...]
X-Spam-Flag: NO
X-Spam-Score: -2.101
X-Spam-Level:
X-Spam-Status: No, score=-2.101 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, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=terraraq.uk
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 CrY_1fal1ZSB for <rats@mail2.ietf.org>; Tue, 18 Aug 2026 10:32:57 -0700 (PDT)
Received: from mantic.terraraq.uk (mx.terraraq.uk [IPv6:2a00:1098:0:86:1000:3f:0:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id D8DE512BD7621 for <rats@ietf.org>; Tue, 18 Aug 2026 10:32:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=terraraq.uk ; s=20170701; h=Content-Transfer-Encoding:Content-Type:To:Subject:From: MIME-Version:Date:Message-ID:Sender:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=zTa3wCbQp2kXDQb5y15P5ggNBY7inSXR3xiHbS6Xf0Y=; b=Vpu/keT1Lthe3EuHRJQtCquZwa TFZv8ky4yOw8tiVK737tkIvrpS2SI60/93XnMrspSOFkRBXtG2yZ+/p95ySBJwik8Zx4kk4w/J/iy gVSXwAiDzkm1whODs3dPEOTUZqZDdP+U2lReWEiU6OtTlxACdyaLGWutDeB3vARjGVRzKio0JLTri gbPU+ixBHw81XOFA4oYE4klgBIrxhe5TpmWkGaDU8ePu9c5ESMvz+sZUZlTNE2GdUxtF//Bsfl/5G EKhN2Z5HexazuCp/BhOgT+s9j2b8YyEZiDJ1HLBf3JOurVoyuuSdNyyJvO57AH53DBf76xhwns8Mw qf4OQ+dQ==;
Received: from cmbg-20-b2-v4wan-170164-cust260.vm17.cable.virginm.net ([80.194.17.5] helo=[172.17.207.30]) by mantic.terraraq.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from <rjk@terraraq.uk>) id 1wwNg8-000000031J4-3OUA for rats@ietf.org; Tue, 18 Aug 2026 18:32:51 +0100
Message-ID: <f5332a4a-a9b1-42fc-a721-f299115895cf@terraraq.uk>
Date: Tue, 18 Aug 2026 18:32:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-GB
From: Richard Kettlewell <rjk@terraraq.uk>
To: rats@ietf.org
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Message-ID-Hash: SS7CDVCKVO2BT5TORNLL5NQZTIZYX6D3
X-Message-ID-Hash: SS7CDVCKVO2BT5TORNLL5NQZTIZYX6D3
X-MailFrom: rjk@terraraq.uk
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-rats.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Rats] draft-ietf-rats-pkix-key-attestation-07
List-Id: Remote ATtestation procedureS <rats.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/rats/IH7jEFZWet-vncMp3qVKQUNHKJo>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rats>
List-Help: <mailto:rats-request@ietf.org?subject=help>
List-Owner: <mailto:rats-owner@ietf.org>
List-Post: <mailto:rats@ietf.org>
List-Subscribe: <mailto:rats-join@ietf.org>
List-Unsubscribe: <mailto:rats-leave@ietf.org>
Hi folks, Mike asked me for feedback on draft-ietf-rats-pkix-key-attestation-07 and whether an nShield HSM implementation was practical. TLDR: yes, but I think there are a number of issues that need some work (largely independent of any particular HSM). https://www.ietf.org/archive/id/draft-ietf-rats-pkix-key-attestation-07.html#name-claim-type > [4.3] It is RECOMMENDED that a claim type be defined for a specific element type, to reduce confusion when it comes to interpretation of the value. In other words, a claim type SHOULD NOT be used by multiple element types Is there any reason this cannot be elevated from RECOMMEND to MUST (and SHOULD NOT to MUST NOT)? As a 'green field' spec, there are presumably no existing multi-element-type claims to be compatible with. https://www.ietf.org/archive/id/draft-ietf-rats-pkix-key-attestation-07.html#name-data-model > [5] It is expected that a X.509 certificate will be generally used The ASN.1 definition would appear to require an X.509 certificate (via the RFC5912 Certificate definition), so how would a certificate of a different format be used? Wouldn't it lead to a DER parse failure? https://www.ietf.org/archive/id/draft-ietf-rats-pkix-key-attestation-07.html#name-fipsboot-fipsver-fipslevel- > [5.1.4] Among other restrictions, [fipsboot] means that only FIPS-approved algorithms are available. FIPS modules (in their FIPS mode) may offer non-approved algorithms (under certain constraints). I think the definition of 'fipsboot' should be broadened to reflect this. https://www.ietf.org/archive/id/draft-ietf-rats-pkix-key-attestation-07.html#name-extractable-sensitive-never > [5.2.3] The claim "extractable" indicates that the key can be exported from the HSM. Corresponds directly to the attribute CKA_EXTRACTABLE found in PKCS#11. > > The claim "sensitive" indicates that the value of key cannot leave the HSM in plaintext. Corresponds directly to the attribute CKA_SENSITIVE found in PKCS#11. In PKCS#11 if a key has CKA_SENSITIVE=true and CKA_EXTRACTABLE=true then key plaintext can still leave the HSM, by wrapping it under a wrapping key with decrypt permission or a public key corresponding to a known private key (an observation made by Jolyon Clulow at least 20 years ago). Both attributes indicate (with opposing sense) an ability to recover plaintext key material; the only difference is in how involved the process is. I think the draft would be better served with a single claim indicating whether the key plaintext can be extracted, without concerning itself with the mechanism used to achieve that extraction and without tying it to PKCS#11's definitions. The idea of borrowing attribute definitions from a widely used existing source is a good one but the PKCS#11 definitions are not quite right. nShield can synthesize these claims as stated but in practice if we ever synthesized "extractable"=true we would also synthesize "sensitive"=false, since anything else would mislead the relying party about the security of the key. https://www.ietf.org/archive/id/draft-ietf-rats-pkix-key-attestation-07.html#name-extractable-sensitive-never > [5.2.3] The claim "never-extractable" indicates if the key was never extractable from the HSM throughout the life of the key. Corresponds directly to the attribute CKA_NEVER_EXTRACTABLE found in PKCS#11. > > The claim "local" indicates whether the key was generated locally or imported. Corresponds directly to the attribute CKA_LOCAL found in PKCS#11. When generating an attestation at key generation or import time, nShield can synthesize these claims (with the above caveats about their meaning). However it cannot necessarily distinguish between a key that was imported and a key that was generated in an HSM, at some point in the past. The attributes would be absent in these cases. (I don't think this is really a practical problem.) https://www.ietf.org/archive/id/draft-ietf-rats-pkix-key-attestation-07.html#name-purpose > [5.2.5] [purpose] reports the key purposes, also referred to as key capabilities, associated with the subject key. Since the subject key is a private key, 'encrypt', 'wrap' and 'verify' would seem to be redundant? The mapping of permissions to actual operations should be made explicit. It should be possible to unambiguously answer questions such as: * For a DH/ECDH key which purpose covers key agreement? * For a KEM key which purpose covers decapsulation? * Which purpose(s) cover(s) the combination of a decrypt/agree/decapsulate operation with a KDF operation? * For a 'fully cooked' key unwrapping mechanism like ECIES, should 'decrypt' (or whatever is chosen for key agreement) be advertised as well as 'unwrap'? * Do logically harmless operations like deriving a public key from a private key need to be reported as 'derive'? (Various locations) > certain protection properties such as Non-Exportable and Dual-Control > the constraints applied to the key (such as whether is it extractable). > "extractable" may always be false for all keys since the devices are not capable of key export > a claim that reports whether the key is extractable or not. > The claim "extractable" indicates that the key can be exported from the HSM. > if the key was never extractable from the HSM throughout the life of the key The draft seems to use 'export' and 'extract' interchangeably. I think it should pick a single term and define it explicitly in the s3 glossary. 'Extract' seems the more common term in -07, so perhaps the following would be suitable: Extract: Extracting a private key means recovering the plaintext of the key outside an Attester, by any means, and without appropriate authorisation from the owner of the key. ttfn/rjk
- [Rats] draft-ietf-rats-pkix-key-attestation-07 Richard Kettlewell