2009-12-04 48 views
2

我們有一個(多操作系統)應用程序,它使用libcurl與https服務器進行通信並使用SSL客戶端認證。當客戶端認證受密碼保護時,應用程序必須要求用戶輸入密碼。應用程序向服務器發送數百個不同的https請求,因此每次創建新連接時我們都不會要求用戶輸入密碼。現在我們只需提示用戶在應用程序啓動時輸入一次密碼,然後通過「CURLOPT_KEYPASSWD」選項將密碼設置爲curllib。但是我擔心惡意用戶很容易侵入正在運行的進程並讀取客戶端認證密碼。無論如何,我可以緩存客戶端認證密碼,並防止從內存中輕鬆讀取密碼?如何使用libcurl在客戶端應用程序中緩存SSL客戶端證書密碼

回答

3

在現實生活中,你不應該擔心太多。如果您擔心這種攻擊,可以查看智能卡中基於硬件的密鑰和證書。

一些建議,以爭取交換和冷啓動攻擊:

  • 鎖定持有密碼的記憶,不要讓它被換出(m鎖+的mprotect和POSIX,Windows還具有類似功能)
  • 可能會加密保存密碼的內存,並且只能在使用密碼時對其解密。

在現實生活中,如果您的機器是擁有的,以至於有人可能侵入他/她不應該訪問的進程 - 您已經妥協了,並不想讓它變得模糊。

如果您認爲您控制了緩存 - 再想一想 - 在某些情況下,您永遠無法知道捲曲例如是否使用密碼複製並泄漏內存。

如果您認真對待SSL和安全性,請使用硬件令牌或智能卡。否則,希望一旦主機遭到入侵,您的軟件和通過該主機運行的任何訪問代碼都會受到威脅。

相關問題