Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TPM2 Provider - OpenSSL s_server Fails to Read Password from -pass Option #136

Open
gnsaddy opened this issue Jan 7, 2025 · 0 comments
Open

Comments

@gnsaddy
Copy link

gnsaddy commented Jan 7, 2025

When using the TPM2 provider with OpenSSL s_server to load a private key from a TPM handle, the s_server command fails to process the password provided through the -pass option. This results in a signing error and ultimately fails the SSL handshake.

Steps to Reproduce:

Store a private key in the TPM under handle 0x81000007.

Run the following OpenSSL s_server command:

openssl s_server -provider tpm2 -provider default -propquery '?provider=tpm2' -accept 12345 -cert ./leaf.cert.pem -key handle:0x81000007 -CAfile ./certs.crt -pass pass:123456

Observe that the password provided via -pass is not properly processed, resulting in TPM authorization failure.

Expected Behavior: The -pass option should pass the password correctly to the TPM2 provider, allowing successful authorization and SSL handshake.

Actual Behavior: The following errors occur during execution:

PROVIDER INIT
STORE/OBJECT OPEN handle:0x81000007
STORE/OBJECT SET_PARAMS [ properties ]
STORE/OBJECT SET_PARAMS [ expect ]
STORE/OBJECT LOAD
STORE/OBJECT LOAD pkey
STORE/OBJECT LOAD found RSA
RSA LOAD
RSA GET_PARAMS [ bits security-bits max-size ]
RSA HAS 1
STORE/OBJECT CLOSE
RAND NEW
RAND NEW
RAND GET_CTX_PARAMS [ max_request ]
RAND GENERATE
DER DECODER DECODE
RSA IMPORT [ n e ]
ACCEPT
SIGN DIGEST_INIT rsa MD=SHA256
WARNING:esys:src/tss2-esys/api/Esys_Sign.c:311:Esys_Sign_Finish() Received TPM Error
ERROR:esys:src/tss2-esys/api/Esys_Sign.c:105:Esys_Sign() Esys Finish ErrorCode (0x0000098e)
ERROR
801B1F0BD97C0000:error:4000000F:tpm2:tpm2_signature_digest_sign:cannot sign:src/tpm2-provider-signature.c:498:2446 tpm:session(1):the authorization HMAC check failed and DA counter incremented
801B1F0BD97C0000:error:0A080006:SSL routines:tls_construct_cert_verify:EVP lib:../ssl/statem/statem_lib.c:361:
shutting down SSL
CONNECTION CLOSED

Analysis:

The error 0x0000098e indicates an HMAC authorization failure, suggesting that the password was not passed correctly.
The TPM provider does not appear to handle the -pass option properly when loading the key by handle.

Environment:

OpenSSL Version: 3.0.2
TPM2-Openssl Commit: master
TPM Software Stack: [Provide version of tpm2-tss and tpm2-tools]
Operating System: Ubuntu 22.04

Additional Information: Relevant code section in tpm2-provider-signature.c: https://github.com/tpm2-software/tpm2-openssl/blame/04b2520873ce02fa6a8b64081633ecc879dee127/src/tpm2-provider-signature.c#L505

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant