Best practices for managing composite keys on HSMs/smartcards #35
Replies: 4 comments 4 replies
-
Some personal thoughts which is not claimed to be any official view of the PKIC. Initially I'd foresee option 2 when it comes to crypto calls, i.e. there will be one call for algoA and one for algoB. My estimate from this comes from looking at crypto APIs. Without standard APIs it will only be possible to make composite calls with vendor specific methods, which while possible I don't think it will be widely deployed. |
Beta Was this translation helpful? Give feedback.
-
Hello, Thank you for your feedback. I attended yesterday's meeting, and here are the key points I noted:
Please feel free to add or correct anything. After yesterday’s meeting, I had the following thought: |
Beta Was this translation helpful? Give feedback.
-
Not trying to "muddy" the water further, but I'm curious about some further refinements. However, before I ask that question, I'd like to make sure that my understanding of the current nomenclature surrounding digital signature is correct. If I understand correctly, the current nomenclature surrounding the digital signature construct is as follows: 1- HYBRID Signatures are techniques that employ 2 or more digital signatures algorithms to achieve a digital signature and verification service. The digital signature algorithms used in the HYBRID Signature technique may be classic or PQC. HYBRID Signature techniques further divide into two sub variants as follows: 2- COMPOSITE Signatures are a form of HYBRID Signatures where 2 or more digital signatures are applied in "parallel" and must both be verified in "parallel" in order to achieve digital signature and verification processes; 3- CATALYST or CHAMELEON Signatures are a form of HYBRID Signatures where 2 or more digital signatures are applied "sequentially" in order to achieve a digital signature. The verification process however is performed in steps where signature layers are verified in sequence. The verifier in this case does not have to fully unravel all the signature layers if it is not capable of performing the algorithm employed in the inner signature layers, and may therefore achieve its verification process by verifying only a subset of the layered signatures. I'm not describing the existing "PURE Signature", but perhaps it should be added to ensure a complete definition list. Is the above nomenclature correct? |
Beta Was this translation helpful? Give feedback.
-
Hi, Also, you say: "NIST has moved up the transition to PQC to 2028". NIST IR 8547 ipd still says "Deprecated after 2030, Disallowed after 2035". Changing from 2035 to 2028 is big news! Where was that announced? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello everyone,
I am opening this discussion to talk about best practices regarding composite keys on hardware security modules / smartcards.
From my understanding of the LAMPS drafts on this topic (for example, https://datatracker.ietf.org/doc/draft-ietf-lamps-pq-composite-sigs/), composite keys must be used as a single key. None of the individual parts must be used independently.
This raises the question of when exactly the composite key should be split to call the algorithms.
Let's assume we have a composite key: private_key_composite := (private_key_algo_A, private_key_algo_B).
For example, to perform a signature, we will need to call the signature algorithm A using private_key_algo_A and the signature algorithm B using private_key_algo_B.
From my perspective, there are two possible approaches:
At the crypto library / HSM level. One crypto call is made using the composite key and the crypto library will split the key.
At the application level, where crypto calls are made separately with private_key_algo_A and private_key_algo_B
Splitting at the crypto library / HSM level
In this case, the application calls a composite algorithm directly using private_key_composite, and it's the cryptographic library's job to manage the process.
From my point of view, this is the most secure solution, as cryptographic management is left to dedicated crypto implementations.
However, this requires crypto libraries and HSMs to support composite algorithms. When looking at the pkcs11 v3.2 draft, it does not seem composite mechanisms will be included.
Splitting at the application level
This approach enables the use of composite algorithms even if crypto libraries or HSMs do not support them. From an application standpoint, this means making two separate cryptographic calls: one using private_key_algo_A and another using private_key_algo_B.
The disadvantage is the increased risk of key misuse. The application layer might be managed by individuals with less expertise in cryptography, leading to potential security issues.
I would like to hear your thoughts on this topic and if you have already made implementation choices.
What recommendations would you make? Which approach would you choose?
Beta Was this translation helpful? Give feedback.
All reactions