Azure Managed HSM Attestation Extraction, Non-Extractability and PoP

Vjaceslavs 0 Reputation points
2026-09-20T16:09:54.27+00:00

Does the Azure Managed HSM API (or Key Vault Premium API) expose a programmatic REST endpoint to export the underlying Marvell LS2 hardware attestation blob and its corresponding certificate chain alongside the generated public key?

Can the Azure attestation payload cryptographically prove to a third-party QTSP that the generated key is bound strictly to the FIPS 140-3 Level 3 hardware boundary and that the CKA_EXTRACTABLE equivalent property is permanently set to false?

Does the Azure platform natively support generating a standard PKCS#10 Certificate Signing Request (CSR) signed directly by the hardware-protected private key to facilitate Proof of Possession (PoP) during the automated onboarding flow?

Azure Dedicated HSM
Azure Dedicated HSM

An Azure service that provides hardware security module management.

0 comments No comments

1 answer

Sort by: Most helpful
  1. Allan Solomon Mejia 9,085 Reputation points
    2026-09-20T17:31:19.86+00:00

    Hello @Vjaceslavs

    For Azure Key Vault Managed HSM, Microsoft now provides key attestation, which provides cryptographic evidence that a key was generated and remains protected within the Managed HSM's FIPS 140-3 Level 3 hardware boundary.

    For your first question, you can retrieve the attestation for a Managed HSM key with:

    az keyvault key get-attestation \
      --hsm-name <hsm-name> \
      --name <key-name> \
      --version <key-version> \
      --file attestation.json
    

    The resulting JSON contains the key properties, attestation blob, and certificates required to validate the attestation. The supplied validation tooling extracts the blob and certificates, builds the certificate chain back to the Marvell HSM vendor root, verifies the Microsoft-signed certificate, and parses the attested key attributes. For asymmetric keys, it provides both public- and private-key attestation information.

    So this is substantially stronger than simply retrieving a public JWK and trusting an Azure API response: the attestation is designed to be independently cryptographically validated.

    Regarding non-extractability, Managed HSM key attestation provides proof that keys are generated and processed within the FIPS 140-3 Level 3 boundary. Regular Managed HSM keys are nonexportable; the HSM doesn't release private key material in an unmasked state. Secure Key Release is a separate exception for keys deliberately created with an appropriate key-release policy.

    However, be careful about translating that directly into the PKCS#11 statement CKA_EXTRACTABLE=false for a QTSP. Whether the current attestation binary contains the exact attribute/evidence your QTSP requires and whether the QTSP accepts Microsoft's Marvell/Microsoft certificate chain as proof of that requirement should be validated against the QTSP's specific PoP policy. The validator parses key attributes, but it doesn't by itself establish that every third-party QTSP will interpret the evidence as an attested PKCS#11 CKA_EXTRACTABLE=false assertion.

    For the PKCS#10 CSR part, separate CSR generation from key attestation. A CSR does not require the private key to leave the HSM: your application can construct the PKCS#10 CertificationRequestInfo, hash it, ask the Managed HSM key to perform the signing operation, and then assemble the resulting signature into the CSR.

    In other words, the important property is that the signature operation occurs with the HSM-protected private key, not that the private key is exported to whatever component constructs the CSR. Managed HSM is explicitly designed to perform cryptographic operations while keeping normal private key material nonexportable.

    I haven't found current Microsoft documentation describing a native Managed HSM operation that simply returns a complete standards-compliant PKCS#10 CSR for an arbitrary Managed HSM key. Therefore, implement CSR construction client-side and use the Managed HSM signing operation, unless your QTSP specifically requires the entire CSR construction process to occur inside the certified boundary.

    One final distinction: this answer applies specifically to Azure Key Vault Managed HSM. Don't assume Key Vault Premium exposes the same attestation evidence/API without verifying it separately.

    References:

    Validate Azure Managed HSM keys with key attestation

    Azure CLI - az keyvault key get-attestation

    Azure Managed HSM overview


    Help make this community better for everyone: If this answer helped or resolved your issue, please accept it or upvote it. If not, share more details in a comment so we can continue the discussion and find the right solution. Thank you.

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.