我的项目要求我使用对称数据加密 (AES) 加密敏感的用户数据。我会将 AES 密钥 (DEK) 存储在基于 HSM 的密钥管理服务(即 Azure Key Vault / AWS KMS)中,并将检索密钥以加密/解密我的 Nodejs 服务器上的数据。
我已经在互联网上搜索了最佳实践,但是,细节和解释似乎只涉及到密钥是否应该存储在数据库中、硬编码或外部(即 HSM、KMS、env var 等...... )。
我无法就以下内容找到足够的说明:
1) 我应该为每个用户创建不同的 AES 数据加密密钥吗?如果是这样,这背后的原因是什么?只是另一层复杂性?
2)如何最好地保护密钥免受攻击,例如当服务器被黑客攻击和跟踪/监控时?
3)更好的做法是在服务器启动时检索密钥,然后将密钥存储在服务器的内存中,或者每次服务器需要为用户加密数据时检索密钥?
先感谢您。