几乎每个“安全凭证存储”的方式都是使用随机密钥加密磁盘上的凭证存储文件,该密钥进一步使用密码进行加密。如果没有密码,您将无法访问解密内容所需的密钥。您还可以将密钥存储在加密设备(例如 NFC 智能卡或 USB 加密狗)中,这些设备将受到他们自己的挑战系统(密码、指纹等)的保护。
密码短语是由操作系统元素直接从用户那里获得的,因此欺骗它(例如通过网站)将更加困难,并且还因此没有应用程序需要直接访问凭证存储 - 一旦用户解锁存储,应用程序可以获取它最初存储的凭据,并且只有那些。有各种可用的机制,但一个常见的机制是使用发出查询的可执行文件的应用程序 ID - 进一步的限制是可执行文件必须仅运行已签名的二进制元素(无库注入等),并且不受调试(操作系统对此有充分的认识)。
至于操作系统如何防止明文材料在内存中的泄漏?哈。那完全是另一回事了,有很多方法——防止数据溢出到交换,使用加密交换,只解密立即需要的凭据,并在不需要时立即丢弃它们,让内核参与管理在线在系统运行时存储(在 RAM 中),并使用内核运行所有需要访问例如非对称密码私钥的加密操作。内核可以进一步将其降级为硬件设备,而无论私钥存储在哪里,操作系统都提供统一的 API。此类 API 存在于 OS X 和 Windows 上,当然也存在于 Linux 上。
由于 TPM 或加密读卡器等 USB 设备可以安全地存储私钥,因此使用个人证书而不是密码进行身份验证非常有用。然后,具有私钥的设备可以对来自远程服务器(例如证书支持网站)的质询进行签名,远程系统会根据您的公共证书(因此不是敏感证书)检查质询的签名。在这里咆哮:我希望金融机构和日常网站支持个人证书而不是密码。它更加安全且完全无忧,并且适用于所有平台——甚至是移动平台!