I’m trying to understand the use cases for using a secure element and how that maps to the Certificates and Keys section of the docs.
In the Security section the docs state:
Currently, Mender supports hardware security engines for SSL handshake, mTLS, and authentication request signing
Under Certificates and Keys docs, if I’m understand it correctly there are three components that reside on the server, one on the client, and a separate artifact signing key if used for verification of updates.
The server side:
API Gateway - server.crt/private.key pair self signed or provided by a CA
User Admin - private.key which contains a public key component; used by the server to sign and verify JWTs
Device Auth - private.key which contains a public key component; used by the server to sign and verify JTWs
The client side:
Mender Client - ECC or RSA keypair (default) used to authenticate client with with server during the initial authorization handshake; good use case for HSM storage of private.key
Unless a user is on an enterprise plan and wants mTLS, then there is only that ONE private key that would be stored in the HSM - the Mender Client authentication key (mender-agent.pem)?
SSL Handshake and mTLS are really one in the same, correct?
Or, is there some other private key on the client side that gets automatically generated by Linux/openSSL for the SSL Handshake, even if mTLS is not used?
I have personally used a secure element (ATECC608) to perform authentication of the device. Basically private key from the SE is used to sign payloads of the mender client. Public key is provided as well and will be displayed on the UI. Context was different (MCU) but use case is the same.
thank you for your interest in Mender.
currently, the hardware security is only supported in the Mender Client (both version 3 and 4). I am interested in the use-case for introducing such a change in the Mender Server. Do you have anything particular in mind? How would you solve the distributed nature of the k8s deployments?
best regards,
peter
P.S. @joelguittet thanks for reading and recommending the post about the NXP case
I am still pretty new to this and was exploring about how I can secure the keys on the server side as well. I haven’t really delved deep into understanding the challenges that might arise from pursuing this but since I saw this thread which kind of summarized the doubt that I had at the top of my head, I thought I’ll seek some guidance first.