2015-05-01 147 views
1

我想知道這是否可能。我已經實現了一個使用PSK的SSL連接,但我想以某種方式保護PSK,使其只能由當前用戶訪問。我認爲windows的關鍵存儲是最安全的。使用存儲在Windows密鑰存儲區中的密鑰作爲OpenSSL中的預共享密鑰

有沒有人有提示,我可以做到這一點? SSL部分已經使用OpenSSL完成,但我不確定關鍵存儲。我一直在試用Windows CNG API,但很難弄清楚如何使用存儲的隨機密鑰作爲PSK。

回答

1

我已經實現了一個使用PSK的SSL連接,但我想以某種方式保護PSK,使其只能被當前用戶訪問。我想通了Windows鍵商店將是最安全的...

你想要什麼叫「受保護存儲」。它取決於您使用的平臺的不同名稱。例如,其名爲Keychain on Apple平臺和KeyChain on Android平臺。

微軟已經對存儲進行了保護,並且一些實現取決於您正在使用的技術。在早期,微軟稱其爲保護存儲並且它由Protected Storage Service提供。

微軟棄用受保護的存儲與Windows Server 2003和Windows XP,並提供受保護存儲(的PStore)爲這些操作系統。請參閱MSDN上的Protected Storage (Pstore)。 Microsoft還建議使用數據保護API(DPAPI)來加密用戶登錄下的密碼。這在Windows 8周圍結束了。

Microsoft爲Windows 7及更高版本提供了Credential Manager。它允許您存儲用戶登錄密碼,以及PSK密鑰等位。

如果您需要更強大的關鍵層次結構,那麼可以使用Cryptography APICrypto API Next Generation如果您使用CryptoAPI或CNG,那麼我認爲您需要創建一個公鑰/私鑰對,然後使用公鑰對PSK進行加密。您需要時使用私鑰解密。您可以將加密的PSK從文件系統存儲到註冊表或在線存儲。另請參閱Softwariness的答案How to deal with plaintext keys using CNG?

+0

感謝您的反饋。隨着時間的推移發現,所使用的存儲的實施已經發生了變化,這確實是一個驚喜。 – GloriousLemon