2014-06-06 58 views
6

我正在尋找分配256位私鑰存儲的「最佳實踐」。我至少在想,鍵盤不應該被分頁到磁盤,並且可能還有其他一些攻擊媒介擔心(la Hearbleed)。該解決方案必須可移植到Linux和BSD。什麼是合理安全,合理便攜的方式爲私鑰分配內存?

有些事情我已經看過:

  • TRESOR(未BSD-便攜式)
  • Akamai的 「安全堆」
  • 大衛·肖的secmalloc
  • 使用m鎖到
  • 只是禁止分頁使用malloc,不用擔心。粗略的閱讀表明這可能是LibreSSL所做的。

有什麼建議嗎?

+0

順便說一句,您使用的密碼是256位密鑰提供的任何安全性? –

+0

@ R ..現代對稱密碼(如AES)?像4096位這樣的大尺寸適用於RSA等非對稱算法。 –

+0

OP表示「私鑰」,所以我假設了公鑰密碼,但也許意圖只是「需要保密的密鑰」。 –

回答

5

除非您有特殊要求,否則只需使用malloc即可。它的優點是valgrind和類似的可以捕獲使用錯誤,這是您可能擔心的漏洞類型的主要方式之一。正如OpenSSL的失敗告訴我們的那樣,嘗試做一些奇特的事情並且搗亂它是一個主要風險。

如果您有更多苛刻的要求,它確實取決於您的使用情況。我會假設你的密鑰是暫時的,否則避免將它們存儲在磁盤上並不合理。這裏是我推薦的特定風險緩解措施:

  • 交換到磁盤:如果你的系統需要對物理攻擊的安全性,你不應該有掉的。單獨試圖用mlock來保護特定數據是一個笑話。只需關閉swap並安裝足夠的內存,這是一個非問題。應該將mlock視爲實時調度功能,而不是安全功能。

  • 心臟出血漏洞樣的問題,適度防禦:通過mmap,兩側防護頁面分配你的記憶:第一mmap 2頁比你更需要,所有PROT_NONE,然後用mprotect使所有,但第一頁和最後一頁PROT_READ|PROT_WRITE。完成後請立即用munmap免費。

  • Heartbleed-like issues,strong defense:Fork a child process to do all the cryptography。

相關問題