什么是加密/解密密钥管理最佳Praticies

时间:2016-12-06 11:03:03

标签: encryption cryptography

我正在开发一个基于Web的应用程序,将被许多第三方组织使用 在世界各地的许多国家。

基于浏览器的客户端会将敏感数据提供给共享后端数据库。

所有国家/地区的所有组织都会将数据读/写到同一个数据库中。

我希望对浏览器中输入的数据进行加密,以确保其在传输过程中的安全性 到后端数据库。例如客户端加密。

我还希望在我的数据库中静止时加密数据。

此应用程序将使用Java,Javascript(REACT.js)和Scala开发。

后端数据库将是MongoDB。

我找不到一个好的密钥管理示例/描述,例如如何正确生成密钥, 在其生命周期内分发,存储,替换,删除和恢复。

我有以下选择/决定: -

加密的味道,例如TripleDES,RSA,Blowfish,Twofish,AES等。 键(S)对称/不对称及其长度 我该如何安全地将密钥分发给我的客户。 如何在我的后端服务器上保持我的密钥安全。

如果密钥应具有生成,分发,存储,替换,删除的生命周期。 当我现在使用Key1或Key2时,如何解密用Key0加密的数据?

如何为多个客户端存储多个密钥以使我能够加密/解密 每个客户数据。

1 个答案:

答案 0 :(得分:1)

  1. 将HTTPS与证书固定一起使用以保护传输中的数据。

  2. 使用AES进行加密。不要在新工作中使用TripleDES,RSA,Blowfish或Twofish。

  3. 使用HSM

  4. 使用未分发的长生命密钥加密数据,使用可以根据需要更改的短生命密钥加密该密钥。

  5. 考虑到项目的范围,请获取加密领域专家来设计安全性并审核代码。