2011-01-21 60 views
14

假設有人可以訪問我所有的硬盤,我猜弱點將是我的Windows密碼。不知道/能夠檢索,數據應該是非常安全的,不是嗎?ProtectedData.Protect(DPAPI)的安全性如何?

我問維基百科的EFS entry其中指出

在Windows 2000中,本地管理員是默認的數據恢復代理,能夠通過任何本地用戶解密使用EFS加密的所有文件的具體原因。

和EFS恰好使用DPAPI。那麼這同樣適用於我自己的使用此保護的數據:

ProtectedData.Protect(plain, null, DataProtectionScope.CurrentUser); 

如果確實如此,我該如何防止它?

[編輯] N.B.我正在嘗試存儲winforms應用程序的憑據,以便用戶在每次登錄時都不必輸入密碼。換句話說,如果某人能夠以該用戶的身份登錄(即知道用戶密碼),那麼他們也可以讀取加密的數據。

哪一個 - 不是來自Windows背景 - 現在讓我想知道 - 本地管理員無法登錄本地用戶嗎?在這種情況下,我不應該關心管理員能夠檢索反正密碼...

[EDIT2]隨着谷歌透露,它看起來像一個管理員不能只需登錄任何用戶無需復位/首先更改密碼。所以我的問題似乎仍然相關...

+0

鑑於您有物理訪問權限,Windows密碼非常容易中斷。 (這可能在最近的版本中有所變化,儘管不是我所知的,但我很樂意證明是錯誤的。) – 2011-01-21 06:35:12

+0

@Matthew:任何支持該鏈接的鏈接? – 2011-01-21 06:36:54

回答

4

請參閱this article on DPAPI Security。基本上,它和你的Windows密碼一樣安全 - 如果你的密碼被管理員重置,解密密鑰將會丟失。你需要在看的主要攻擊媒介:

  • 密碼泄露:「肩窺」,即時貼等
  • 捕獲計算機的帳戶數據庫,並使用密碼破解的
  • 的「偷渡式下載」網上攻擊,可移動介質自動播放等
  • 捕獲密碼重設盤,如果你做了一個按鍵記錄器或其他「錯誤」
  • 之一
  • 物理安裝
15

EFS使用DPAPI,而不是其他方式。管理員無法像這樣讀取您的密鑰。

在忘記DPAPI之前,我會考慮替代方案。如果您自己對文件進行加密,您必須選擇一個強大的算法並實施它。

  1. 您將需要一個密鑰。它會在哪裏?
  2. 您將密鑰存儲在驅動器某處的某個文件中。
  3. 這關鍵是敏感的,很明顯,你會希望它
  4. 轉到1

DPAPI加密功能1〜3井。 4和5是沒有意義的。如果一個Windows密碼不足以保護數據,問問自己爲什麼這個數據足以讓CRUD擺在第一位。

爲了獲得更好的安全性,如果可能的話,可以考慮不保存數據,而是保存數據(鹽漬)。不過,它只會讓你的數據寫入。例如,如果您想驗證客戶許可證編號:

  • 保存
  • 運行的鹽醃哈希值在要驗證醃製許可證編號相同的散列,
  • 比較兩個。它們匹配,許可證有效。

如果您必須讀回加密數據並且本地加密的密鑰不夠用,請考慮使用存儲在智能卡上的私鑰加密您的應用程序密鑰(上面的第2步)。

無論哪種方式,請記住事情發生。你總是需要一個備份密鑰。

1

DPAPI既可以使用,也可以不使用可選的熵。只有兩種方式DPAPI斑點沒有可選的熵會受到影響:

  1. 域管理員可以直接檢索DPAPI主密鑰的任何人的歷史上任何時候。沒有其他要求。這些可以用來解密所有的斑點。本地管理員不能這樣做。

  2. 用戶的Windows憑據被泄露。

如果使用可選的熵則數據不能被任何人誰不知道這個值被解密。熵可能來自啓動應用程序所需的密碼等。如果沒有該值,數據將永遠丟失。

EFS的工作方式不同。 用戶的密鑰受DPAPI保護,但其文件本身的解密密鑰也使用管理員的公鑰直接加密。因此,域管理員可以訪問這些文件。