【发布时间】:2010-11-18 19:11:33
【问题描述】:
背景: 我在数据库中使用 AES(即对称加密)加密了一些数据。在(假定的)安全且隔离的 Linux 机器上运行的服务器端应用程序使用此数据。它从数据库中读取加密数据,并写回加密数据,只处理内存中未加密的数据。 因此,为了做到这一点,应用程序需要将密钥存储在内存中。
问题是,有什么好的最佳实践吗?保护内存中的密钥。
一些想法:
- 将其保存在不可交换的内存中(对于 linux:将
SHM_LOCK设置为shmctl(2)?) - 将密钥拆分到多个内存位置。
- 加密密钥。用什么以及如何保证...key key..的安全?
- 每次需要时从文件中加载密钥(速度慢,如果作恶者可以读取我们的内存,他可能也可以读取我们的文件)
key 可能泄露的一些场景:evildoer 获取了 mem dump/core dump;错误的代码边界检查导致信息泄露;
第一个看起来不错,而且很简单,但是剩下的呢?其他想法?任何标准规范/最佳实践?
感谢您的任何意见!
【问题讨论】:
标签: memory cryptography key aes