數據保護API

數據保護API （ 全稱 ： ， 縮寫DPAPI ） 是一個簡單的密碼學應用程序接口 ， 作爲一個組件內置在Windows 2000及之後版本的Microsoft Windows操作系統中 。 理論上 ， 數據保護API可以實現任何類型的數據對稱加密 ； 在實踐中 ， 其在Windows操作系統中的主要用途是執行非對稱私鑰的對稱加密 ， 使用用戶或系統的祕密信息作爲熵的重要來源 。 對於幾乎所有密碼系統來說 ， 最困難的挑戰之一是 “ 密鑰管理 ” — — 其中部分即是 ， 如何安全地存儲解密密鑰 。 如果密鑰以純文本存儲 ， 則可以訪問密鑰的任何用戶都可以訪問加密的數據 。 如果密鑰被加密 ， 則又需要另一個密鑰 ， 週而復始 。 DPAPI允許開發者使用從用戶的登錄私鑰導出的對稱密鑰來加密密鑰 ， 或者在系統加密的情況下使用系統的域驗證私鑰來加密密鑰 。 用於加密用戶RSA密鑰的DPAPI密鑰存儲在 % APPDATA % \ Microsoft \ Protect \ { SID } 目錄 ， 其中 { SID } 爲該用戶的安全標識符 。 DPAPI密鑰存儲在與保護用戶私鑰的主密鑰相同的文件中 。 它通常爲64字節的隨機數據 。 2010年 ， 和在Black Hat DC 2010提出了Reversing DPAPI and Stealing Windows Secrets Offline 。 除了他們的簡報 ， Bursztein和Picod發佈了能離線解密DPAPI加密數據的DPAPIck 。 2012年 ， Passcape Software在他們的博客中發佈了介紹DPAPI內部邏輯的更詳細文章及一個完全離線解密和分析DPAPI的工具 。 與上一個不同 ， 該工具利用了一些舊有Windows的缺陷 （ 例如 ， 你可以無需獲知所有者的登錄密碼就解密Windows 2000的DPAPI數據體 ） 並完全兼容Windows 8的DPAPI數據結構 。 在Windows 8中 ， 微軟改變了DPAPI邏輯的工作方式 ， 現在可以使用多個用戶的密鑰來導出加密密鑰以解密用戶的主密鑰 ， 然後用於解碼單個DPAPI數據體 （ blob ） 。