使用像Azure Key Vault这样的HSM或Key Vault服务

问题描述 投票:0回答:2

首先,我了解可以保护数据安全。

我有一个应用程序,我只想加密可用于个人识别数据库中某人的所有信息。

因此,我读到将密钥与数据存储在同一服务器上非常糟糕。好的,所以分开服务器,没问题。然后,我读到将密钥放在应用服务器上的代码中(远离数据)是很糟糕的。人们说,存储加密密钥的正确方法是使用HSM或诸如Azure Key Vault之类的密钥保险库。好的,我已经同意了,但是如果我的code可以访问HSM或Azure Key Vault(为了解密或访问所有数据,则必须具有该权限)。

如果我的代码从应用服务器上被盗(这就是为什么将密钥存储在代码本身中将是不安全的)为什么攻击者不能仅使用与我的代码用来解密HSM或Key数据相同的方法跳马?

假设仅将密钥存储在代码本身中是不安全的。具有能够解密代码中数据的方法或函数有什么不同?从本质上讲,这将告诉攻击者如何从金库中获取密钥,不是吗?

使用HSM或Keyvault可以防止额外的矢量或层吗?

我不介意支付并实施额外的层。我真的很好奇,因为我看不到任何区别。

database security encryption cryptography hsm
2个回答
0
投票

我认为您的问题主要是关于保护软件密钥与硬件密钥管理解决方案的秘密。以下链接提供了有关它们之间差异的有用信息:

Usage of software/hardware-backed Android Keystore and possible security/usability drawbacks

https://www.itprotoday.com/iaaspaas/software-vs-hsm-protected-keys-azure-key-vault


0
投票

如果我正确理解了您的问题,那是因为该应用程序永远看不到实际的加密密钥。 HSM仅公开原始的加密操作,但不公开密钥本身。

因此,攻击者需要登录到您的“应用服务器”才能执行操作,(希望如此)相对容易撤消/拒绝。如果您具有代码本身可用的密钥,则它们可以继续使用任何现有加密数据上的密钥,直到在旋转新密钥后对其进行了重新加密为止。这也有相关的保证困难,例如您怎么知道攻击者在轮换期间没有操纵某些数据]

© www.soinside.com 2019 - 2024. All rights reserved.