我想知道这是否可行。我已经实现了使用PSK的SSL连接,但我想以某种方式保护PSK,使其只能由当前用户访问。我认为Windows密钥库是最安全的。
有没有人有我能做到的提示? SSL部分已经使用OpenSSL完成,但我不确定密钥存储。我一直试用Windows CNG api,但很难搞清楚如何使用存储的随机密钥作为PSK。
答案 0 :(得分:1)
我已经实现了使用PSK的SSL连接,但我想以某种方式保护PSK,以便当前用户只能访问它。我认为windows key store是最安全的......
您想要的是" Protected Storage" 。根据您使用的平台,它会有不同的名称。例如,它称为Keychain on Apple平台和KeyChain on Android平台。
Microsoft已根据您正在使用的技术保护存储和一些实施。在早期,Microsoft将其称为受保护存储,它由Protected Storage Service提供。
Microsoft已弃用Windows Server 2003和Windows XP的受保护存储,并为这些操作系统提供受保护存储(Pstore)。请参阅MSDN上的Protected Storage (Pstore)。 Microsoft还建议使用 Data Protection API(DPAPI)来加密用户登录下的机密。在Windows 8的某个时候结束了。
Microsoft为Windows 7及更高版本提供Credential Manager。它允许您存储用户登录的密码和PSK密钥等位。
如果您需要使用密钥层次结构更强大的内容,则可以使用Cryptography API或Crypto API Next Generation。 如果你使用CryptoAPI或CNG,那么我认为你需要创建一个公钥/私钥对,然后在公钥下加密PSK。您需要时使用私钥解密它。您可以将加密的PSK存储在任何您喜欢的位置,从文件系统到注册表或在线。另请参阅How to deal with plaintext keys using CNG?
处的Softwariness的答案