Applying HSM Security to Interoperability

It seems to me that I am missing something. I know HSM can give you 100% protection from your keys, encrypted data, etc. But what stops an attacker from stealing your confidential data right after you gain access to the HSM and get your secrets copied to users' memory? Or, for example, just use the same API to access the module? How does app authentication work? If it's based on something as simple as a password, why can't an attacker just steal the password from memory, log into the HSM, and get what they want? Also, if the kernel, if it is compromised, I assume it can listen on or change any communication between the process and the HSM, right?

+3


source to share


2 answers


You are right to worry about this - HSM is not a panacea, and compromised servers that have the ability to authenticate and use the HSM are a real risk, as demonstrated by Diginotar .

How does app authentication work?

Different HSMs offer different authentication options, for example. physical tokens (such as smart cards), physical PIN entry, logical tokens (in memory keys), user defined custom solutions, etc. etc.

But what stops an attacker from stealing your confidential data right after you gain access to the HSM and get your secrets copied to users' memory?

Ideally, when implementing an HSM solution, sensitive keys are never exposed outside the HSM - you get the HSM to use the key (for example, do signing / encryption) instead of forcing the HSM to give you the key.



log into HSM and get what he wants?

HSMs allow you to secure keys in such a way that there is no way to export them from the HSM (even if you have all the user / administrator credentials).

Also, if the kernel, if it is compromised, I assume it can listen on or change any communication between the process and the HSM, right?

Yes; there may be a cryptographically secure channel between the application and the HSM, but ultimately a machine with a vulnerable kernel must be considered an attacker-controlled machine - anything a machine can legitimately do can be exploited by an attacker.

+4


source


In general, an HSM is a physical device for creating, storing, and protecting your keys.

The biggest nightmare of modern cryptography is the key trade-off, and HSM is the right solution against it. HSMs are often used in large organizations and in the financial sectors. Another reason people choose to use HSM is due to audit or compliance requirements (such as PCI-DSS).



HSM offers multi-factor authentication for key uploads using tokens (such as smart cards) or passphrases. Even if you got access to the server connected to it, you still won't be able to access the keys if not all factors were purchased.

For the password stealing part, there are some E2EE password protection solutions where the vendor creates the password authentication logic into the secure HSM memory, so the decrypted credentials are only available inside the HSM and the application only knows the result of the authentication. Thus, the password is well protected at all times.

+1


source







All Articles