[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