首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >临时存储敏感数据

临时存储敏感数据
EN

Stack Overflow用户
提问于 2012-07-14 09:41:53
回答 1查看 1.3K关注 0票数 4

场景如下:应该临时存储加密密钥,以便应用程序的多个实例能够访问它(顺序)。使用后,钥匙当然应该从系统中移除。然而,这带来了一个问题。我承认,只要存储了密钥,系统就容易受到攻击,但我希望系统在存储密钥之前和之后都是安全的。

简单地将密钥写入文件并在之后覆盖它,并不是在所有情况下都起作用:一些文件系统会将更改写入磁盘的不同部分,而不是将更改写入相同的位置。在这种情况下,以后仍然可以检索密钥。我不能依赖拥有全磁盘加密的用户。

然后,最符合逻辑的选项似乎使用了另一个将键保存在内存中的进程,但是操作系统可能会在某些点将内存写入磁盘,从而导致与上面描述的问题相同的问题。

加密密钥是可能的,但这并不是更安全。暂时存储密钥的全部目的是用户无需为程序的每一次运行输入密钥。这意味着用于加密密钥的密钥也必须存储在某个地方,或者必须基于已知数据。如果密钥是存储的,那么当然我们现在遇到了安全存储这个密钥的问题。如果它是基于已知的数据,这意味着密钥可以在必要时再次生成,因此加密几乎没有用处。

我知道有些操作系统提供API来保护数据,但这通常依赖于根据用户帐户信息生成加密密钥。即使这是特定于会话的,在会话结束之前,数据也不会是安全的(这可以在键被擦除之后很长时间)。

这个问题有什么解决办法(不依赖特殊的硬件,不需要全磁盘加密等等)?如果没有,我能做的最好的事情是什么?

编辑以澄清:密钥在内存中存储时不需要安全;此时,用户应该保证不存在物理访问,并且系统没有病毒。在使用密钥之后,应该将其从系统中擦除,以便以后任何具有物理访问权限的人或任何程序都可以检查所有内存和磁盘,并且再也找不到密钥的一个(可用的)跟踪。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-15 10:07:28

您可以使用ramdisk(而不是tmpfs)。请参阅http://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt

“另一个类似的东西是RAM磁盘(/dev/ram*),它模拟物理RAM中一个固定大小的硬盘,在这里您必须在上面创建一个普通的文件系统。内存磁盘不能交换,也不可能调整它们的大小。”

因此,基本上,您需要在/dev/ram*上创建一个文件系统,然后将其挂载到某个地方。但是,这个挂载点可以被所有进程访问,而不仅仅是特定的进程。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11482677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档