我试图了解当我使用受密码保护的私钥生成消息摘要时会发生什么。
我读到here受密码保护的私钥只是使用基于密码的对称 key 进行加密。
输入正确的密码后,如何在不暴露未 protected 私钥的情况下生成摘要?
最佳答案
在某些时候,代码中的加密原语将需要访问和使用 key 的实际值。根本没有办法解决这个问题。打个简单的比方,如果您不知道 a
,就无法计算 a + b
。
因此,有关安全软件设计的大问题归结为敏感信息将在不 protected 状态下持续多久。任何类型的密码缓存都是您的敌人,但即使密码和解密 key 都没有被显式缓存,它们在某些时候仍然存在于内存中。用液氮冷冻计算机可以在相当长的时间内保持内存内容完整,而强制交换到磁盘是另一个问题。
好的加密程序应该注意尽快覆盖内存内容,并最大限度地减少敏感信息以可读形式保留的时间。这需要仔分割析哪些信息是关键的(例如用户的密码输入),以及特定于平台的内存管理知识(例如您可以请求不可分页内存吗?)。
这完全取决于您的威胁模型 - 您需要防范哪种类型的攻击?如果 rootkit 监视您的所有内存,您可能会遇到麻烦,尽管该 rootkit 可能只是从键盘读取用户的密码输入。
这是一个复杂的问题,并且对安全硬件设计进行了广泛的研究。一般来说,攻击者对您的计算机的访问权限越多,她就越有可能读取敏感数据。好的设计只能力求最大限度地减少攻击面。
关于security - 私钥在内存中不是很容易受到攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046997/