簡體   English   中英

操作系統如何存儲加密數據的密鑰

[英]How do OSes store keys for encrypted data

我不知道操作系統如何存儲用於加密網站密碼之類的密鑰。 在網上搜索之后,我僅找到兩個答案,但它們僅涉及服務提供商應如何存儲密碼(它們應存儲哈希和鹽),或應用程序應如何存儲密碼(它們應使用提供加密的系統API)。

但是我想知道的是系統本身如何保護加密密鑰。 我知道有些設備具有特殊的硬件來存儲一些重要的密鑰(例如Apple芯片中的Secure Enclave)。 但是我想知道如何在普通計算機上完成此操作。

我的意思是他們可能將其存儲在磁盤上的某個位置,但是它們如何安全地執行操作以使您不能只讀取它呢?

幾乎每個“安全憑證存儲”的處理方式都是通過使用隨機密鑰對磁盤上的憑證存儲文件進行加密,然后再使用密碼將其加密。 沒有密碼短語,您將無法訪問解密內容所需的密鑰。 您還可以將密鑰存儲在加密設備(例如NFC智能卡或USB加密狗)中,這些密鑰將受到其自身的質詢系統(密碼,指紋等)的保護。

密碼短語是通過OS元素直接從用戶獲得的,因此欺騙它(例如通過網站)將變得更加困難,並且也使得沒有應用程序需要直接訪問憑據存儲–一旦用戶解鎖存儲,該應用可以獲取最初存儲的憑據,並且只能獲取那些憑據。 有多種可用的機制,但是一種常見的機制是使用發出查詢的可執行文件的應用程序ID –進一步限制該可執行文件必須僅運行帶符號的二進制元素(無庫注入等),並且不受該限制。調試(操作系統對此完全了解)。

至於操作系統如何防止明文材料保留在內存中而造成泄漏? 哈。 這完全是另外一回事了,有多種方法–防止數據溢出到交換中,使用加密交換,僅解密立即需要的憑據,並在不需要時立即丟棄它們,包括內核管理在線在系統運行時存儲(在RAM中),並使用內核運行所有需要訪問例如非對稱密碼私鑰的加密操作。 內核可以將其進一步委托給硬件設備,而OS則提供了統一的API,無論私鑰存儲在哪里。 這樣的API存在於OS X和Windows中,當然也存在於Linux中。

由於TPM或類似加密卡讀卡器的USB設備可以安全地存儲私鑰,因此使用個人證書而非密碼進行身份驗證非常有用。 然后,具有私鑰的設備可以從遠程服務器(例如,支持證書的網站)對質詢進行簽名,然后遠程系統會根據您的公開證書(而不是敏感的證書)檢查質詢的簽名。 此處的旁注:我希望金融機構和日常網站都支持個人證書而不是密碼。 它更加安全,完全無憂,並且可以在所有平台(甚至是移動平台)上運行!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM