首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将未加密的密钥和登录保留在程序内存之外?

是否可以将未加密的密钥和登录保留在程序内存之外?
EN

Security用户
提问于 2013-05-29 15:38:43
回答 2查看 809关注 0票数 2

无论使用什么技术来存储加密密钥和登录,似乎所有的路都会返回到程序内存(据我所知),因为密钥和登录的未加密版本将存储在那里以执行加密和登录,攻击者可以从RAM中实际读取。

这是真的吗?如果是这样的话,是否有任何方法可以防止密钥和登录被存储在未加密的内存中?

EN

回答 2

Security用户

回答已采纳

发布于 2013-05-29 15:49:32

正如DeerHunter所指出的,除了硬连线指令集以外,其他任何东西都不应该访问的信息片段可以存储在硬件安全模块中。

HSM持有密钥,并且可以执行使用键的任务,例如生成签名,而不需要在HSM之外知道密钥。HSM不是一个你把加密密钥放在里面的盒子,当它被使用时被加载出去--密钥留在盒子里,HSM被设计成永远不会输出密钥。

但是,如果您的威胁模型包含有物理访问RAM的攻击者,那么您就没有希望了。这就像问是否有可能让小偷进入你的房子,同时允许他们进入所有的房间。

如果您的目标是永远不让整个RAM中的加密密钥存在于RAM中,那么您可以设想一种加密方案,它不会同时使用整个密钥,也许一次将密钥中的一个字节输入一个迭代算法。这个迭代的结果将是一个分组密码函数。

像往常一样,熊提供了一个很好的回答,涵盖了这个主题,我没有必要重复他的努力。

票数 7
EN

Security用户

发布于 2013-05-30 20:03:49

如果某个您不想知道您的密码的人可以直接访问以纯文本形式知道密码的计算机的内存,则您在信息安全方面完全失败。

在某个时候,在某个地方,您的登录信息必须以纯文本形式存在。它不必存在很长时间,也不应该以这种形式持久化到长期的非易失性内存中,但是设计一个可以使用的静态凭据条目系统是不可行的,这种系统对“白盒”窥探是无懈可击的(假定攻击者可以无限地访问机器的状态信息,并且可以一步一步地分析执行)。用户必须能够在文本框中键入密码,该文本框将该密码清楚地存储在内存中(即使它在屏幕上显示的是一系列符号),然后您的程序必须能够在编码该密码以传输到身份验证系统之前直接检索它。

类似地,某个地方必须知道用于加密或解密的密钥。然而,这并不一定是你真正的电脑。建议使用HSM;这些数据处理模块旨在生成和存储密钥,其方式不需要与其连接的计算机的CPU或内存直接参与;是理想的黑匣子。它们的设计也是为了抵制任何试图进入这个盒子的努力,从任何来源,包括它连接到的计算机。计算机只是一个代理,是HSM命令和输入数据的来源。但是,该计算机仍然必须被信任,在任何时候攻击者都可以看到和/或控制在计算机和HSM之间发送的内容,他实际上并不需要HSM中的数据来破坏您的通信,甚至是您的密钥;他有一个解密神谕,供他利用。

如果您担心键盘记录器或其他系统可以读取静态密码,那么就不要使用它,而是投资于RSA密钥标签或类似的设备。这些设备使用一个带有起始种子的算法生成一个数字序列,每个序列有效一分钟左右。相同的算法,给定相同的种子值,在服务器端生成相同的数字。输入您在标签上看到的数字(如果当前正在刷新,则等待下一个数字)作为您的密码。如果你在一个设备上输入这段代码并不重要,这个设备显然是把你的按键发送给几英尺外的一个有笔记本电脑的家伙。这段代码只能工作一分钟,而且从理论上讲,他有一个极小的机会来正确猜出下一段代码,即使他知道生成器产生的每一段代码。

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

https://security.stackexchange.com/questions/36635

复制
相关文章

相似问题

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