我正在做一个将在公共云服务提供商(CSP)上运行的应用程序架构,我需要加密“静态数据”(*注意它不是AWS)。
我正在寻找关于数据库加密的最佳实践建议,该应用程序使用PHP前端和SQL Server数据库(它是商业产品,因此不要使用PHP / MSSQL应用程序架构,我没有说这;))
我们将使用Microsoft SQL Server 2012(标准版),我想知道解决此问题的最佳方法是什么(显然通过添加加密来解决性能问题):
1。)使用OOTB数据库加密来加密整个数据库(或表等),我从未使用过SQL Server加密,所以不过分熟悉它?
2.使用来自Web /应用程序层的强加密方法(算法)(如AES,RSA,SHA-25等)加密数据库中的每个行级记录(此处根据用户请求加密/解密“CRUD “)?
3。)使用1和1的组合。 2?
4.)我还缺少什么?
我们的要求是仅对个人身份信息(PII)进行加密,因此只需要对表列进行加密即可。
由于
干杯
答案 0 :(得分:1)
快速回答:
通过确保完整性(标志,hmac等)和机密性(加密)来保护PII。我不太详细地了解你的架构,所以我认为不对称并不是在这里购买任何东西(更多内容见下文)。使用像AES 128/256 GCM这样的东西,或者添加一个HMAC以及类似AES-CBC等的东西。确保生成一个随机的IV,所有常见的。
仅保护需要保护的内容(为什么会出现性能损失以保护无关紧要的数据)。
越多:
我假设您认为传输中的数据是安全的(消息级别保护,和/或tls / ssl等等,以便在那里得到它)并且您真正专注于静态数据。
密钥管理:
无论是对称密钥还是非对称密钥,您都需要妥善管理它。超级秘密密钥材料不应暴露在任何地方,而是真正需要的地方。真的花一些时间关注数据和关键材料,看看它是否有意义。考虑威胁建模。