Repository navigation
PQ-future of CCF #7971
Pinned
Max (maxtropets)
started this conversation in
Design
Replies: 2 comments 1 reply
|
This is very detailed, thanks for writing this up Max (@maxtropets)! Whenever you have some time (not urgent at all) I had some questions based off of this and impacts to ACL. Also, some questions may be a bit naive or the answer may not be fully thought out yet and I am happy to brainstorm some solutions.
Thanks! |
1 reply
Re: Switching to multiple identitiesAfter moving forward with the implementation, several limitations came up. Let’s define them first:
My current thinking is to make the following changes:
This allows:
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Roadmap
In the current goals:
Not in the current goals:
The rest of this document covers only the current goals.
What defines PQ safety
Each item has its own umbrella issue to track progress.
How it is achieved
Migration
Attestation
Today, CCF uses AMD SEV-SNP
report_dataas a node-identity binding:The rest of quote verification is separate: CCF verifies the AMD endorsements, the security policy in
host_data, the measurement or UVM endorsements, and the TCB version.With multiple identities,
report_datashould carry both the identity digest and the binding metadata:LAYOUTidentity_type, kind, purpose, algorithm suite, hash algorithmRESERVEDDIGESTLAYOUTis:identity_typeExamples:
For node join, attestation must bind the node identity used to request trust:
SHA-256 leaves 16 digest-slot bytes unused, so they must be zero.
SHA-384 consumes the whole 48-byte digest slot.
SHA-512 is not used because it would consume all 64 bytes of
report_data.The layout keeps 16 bytes for binding metadata and reserved space.
The verifier checks the digest and the metadata, so it can tell which identity type and purpose were attested.
Links
The standards RFCs/drafts possibly targeted by this design are:
Azure Linux 4 confirmation
This was confirmed on Azure Linux 4 with OpenSSL 3.5, without SymCrypt yet.
Confirmed support:
ML-DSA-65X.509 certificates can be generated, DER-parsed, and verified withX509_verify.ML-DSA-65andSLH-DSA-SHA2-128ssignatures can be generated and verified.ML-KEM-512,ML-KEM-768, andML-KEM-1024encapsulation and decapsulation work.X25519MLKEM768hybrid group with anML-DSA-65server certificate,mldsa65CertificateVerify, and client certificate verification.EVP_PKEYkeymgmt and signature provider implementation, X.509 and TLS have no composite primitive to use.Composite certificates can be encoded, but stock OpenSSL 3.5 cannot use them as normal certificates.
OpenSSL has no Composite-ML-DSA key, signature, X.509, or TLS
SignatureSchemesupport.CCF therefore cannot ask OpenSSL to generate, verify, select, or present a Composite-ML-DSA certificate in TLS.
Composite COSE signatures are technically possible with stock OpenSSL 3.5, but not as one OpenSSL algorithm.
The JOSE/COSE draft reuses the LAMPS composite key and signature encoding, carried as AKP
pub/privbytes.CCF can implement the draft combiner and use OpenSSL only for the ML-DSA and classical component signatures.
This is draft-compliant if CCF pins the draft version, labels, prehash, key encodings, and COSE algorithm values.
The component keys must still be a single composite key.
The drafts require fresh component key generation and forbid reusing those keys in other contexts or as standalone keys.
For certificate-backed identities,
x5chain/x5cshould refer to a LAMPS composite X.509 certificate.Stock OpenSSL cannot create that certificate form, so this needs custom tooling or another provider/library.
It is not RFC-standard yet: RFC 9964 only standardizes pure ML-DSA for JOSE/COSE.
All reactions