如何疑難排解資料保護 API (DPAPI)

文章翻譯 文章翻譯
文章編號: 309408 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

資料保護 API (DPAPI) 可以協助保護 Windows 2000 和更新版本的作業系統中的資料。DPAPI 用來協助保護私密金鑰、 預存的認證 (在 Windows XP 及更新版本),以及其他作業系統或程式想保留機密的機密資訊。

DPAPI 並不負責儲存它能保護機密的資訊。它會只負責加密和解密資料的呼叫它例如 Windows 認證管理員、 私密金鑰的儲存機制或呼叫 CryptProtectData() 函式和 CryptUnprotectData() 函式,在 Windows 2000 Windows XP 中的任何協力廠商程式的程式或更新版本。

附註這項功能是不同的 Windows 受保護的存放區 (P 存放區) 由 Windows NT 4.0 中所提供的功能。P 存放區負責保護和儲存機密資訊。 DPAPI 提供沒有儲存體功能。
本文將告訴您,如何 DPAPI 協助保護資料在基本層級。它也包括有關疑難排解 DPAPI 受保護的資料在不同的案例中的存取權的遺失的資訊。

如需有關 DPAPI 的運作方式的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/ms995355.aspx
本文包含下列主題:

其他相關資訊

重要若要 DPAPI 資料遺失的疑難排解,您必須收集下列資訊:
  • DPAPI 如何操作包括本機工作站版本特定的安全性環境中?
  • 是將工作站加入網域嗎?
  • 是使用者是網域的成員嗎?
  • 什麼是裝載該網域的作業系統版本?
在 Windows NT 4.0 網域中使用 DPAPI 時,會發生與 DPAPI 的許多問題。 請參閱本文稍後如需詳細資訊已知問題 > 一節。

DPAPI 主要是由所使用作業系統的安全性功能來協助保護使用者的名義上的資料。此外,任何協力廠商程式可以使用 DPAPI 來協助您安全地保護使用者資料。

DPAPI 可保護

DPAPI 可協助保護下列項目:
  • 網頁認證 (,例如密碼)
  • 檔案共用的認證
  • 與加密檔案系統 (EFS)、 S/MIME 和其他憑證相關聯的私密金鑰
  • 使用 CryptProtectData() 函式受到保護的程式資料

範例: 憑證和私密金鑰

這一節將說明個人資料和 DPAPI 可協助保護的機密資訊之間差異。下列清單說明資料的位置,將憑證匯入作業期間,並描述該將憑證加入使用者的個人存放區相關聯的私密金鑰:
  • 該憑證編碼為二進位大型物件,且儲存為二進位值在下列的檔案位置:
    %Userprofile%\Application Data\Microsoft\SystemCertificates\My\Certificates
  • 請注意登錄機碼的位置是在本機使用者設定檔中。此位置可確保只有登入使用者在一般情況下,要對具有存取權他們自己的憑證。
  • 憑證不是受 DPAPI 由任何預設 Windows 機制。存取控制清單 (ACL) 用來定義誰可能載入使用者的 Hive 及誰可能讀取儲存在 Hive 的憑證。
  • 與憑證相關聯的私密金鑰是 DPAPI 加密,而且為下列資料夾中的使用者設定檔中的個別檔案儲存 (以加密的形式) 金鑰容器中:
    • 為 RSA 金鑰:
      %userprofile%\Application Data\Microsoft\Crypto\RSA\ User SID
    • 對於 DSA 機碼:
      %userprofile%\Application Data\Microsoft\Crypto\DSA\ User SID

DPAPI 的運作方式

附註詞彙和本節中所描述的概念已經被簡化為了清楚起見,本文的內容中。已省略某種層級的詳細資料。例如本文將告訴您從使用者的密碼衍生的值,但它並不描述用來衍生值之演算法的詳細資料。 DPAPI 的運作方式的詳細說明,檢視 Windows 資料保護本白皮書。 若要欲這份白皮書請造訪下列 Microsoft 網站]:
http://msdn2.microsoft.com/en-us/library/ms995355.aspx
DPAPI 是供程式和各種不同的作業系統元件用來幫助保護使用者的資料的函式。DPAPI 作業不顯示給使用者。DPAPI 可協助保護執行該程式之使用者的安全性內容中的資料。

DPAPI 可協助保護機密資訊使用衍生自虛擬亂數的 512 位元數字,名為主要金鑰的值資料。Windows Server 2003 網域控制站都使用一個 2048年位元] RSA 鍵但只在網域功能等級 2 或 Windows Server 2003 模式中執行網域時。 每個使用者帳戶有一個或多個隨機產生主要金鑰。主要金鑰的數目取決於使用者的設定檔世紀。主要金鑰會定期更新。預設情況下,這個值會是每隔 90 天。

因為主要金鑰包含要解密所有使用者的機密資訊所需的資料,必須保護主要金鑰。它們會使用值,衍生自使用者的密碼保護。密碼是只有一個使用者知道的唯一值。 因為主要金鑰實際上被使用自使用者的密碼衍生的值加密,這個值是以使用者的密碼說明呈現在本文中交替使用。

DPAPI 環境的考量

這一節將說明環境影響 DPAPI 保護行為的組態設定。

DPAPI 及強制設定檔

強制設定檔是唯讀的設定檔。沒有對強制設定檔的本機複本所做的更新會儲存。 比方說金鑰產生已封鎖強制設定檔中。 DPAPI 將主要金鑰儲存在本機設定檔的複本和定期建立新的主要金鑰,並更新新的主要金鑰上受保護的機密資訊加密。

因為這些兩個條件都不相容的取決於 DPAPI 來協助保護機密資訊的程式沒有正確地工作與強制設定檔。程式,可協助保護機密資訊使用 DPAPI 不與強制設定檔正確地處理包含 EFS (私用金鑰) 與私人機碼 (私用金鑰) 和預存憑證在 Windows XP 與更新版本 (認證) 的憑證。 不支援使用這些資料型別或程式的設定。

DPAPI 和漫遊設定檔

DPAPI 運作方式如所預期的使用者及聯結到一個 Active Directory 目錄服務網域的電腦漫遊設定檔。DPAPI 資料儲存在設定檔中並且使用完全類似其他任何設定或儲存在漫遊設定檔中的檔案。[DPAPI 可協助保護的機密資訊會上載到中央設定檔位置,登出程序期間,以及當使用者登入時,從中央設定檔位置下載。

DPAPI 才能正常運作時,它使用漫遊設定檔,為網域使用者必須只登入網域中的單一電腦。 如果使用者想要登入不同的電腦位於網域使用者必須登出前使用者登入到第二部電腦第一部電腦中。 如果使用者登入多台電腦在同一時間,很可能 DPAPI 將無法正確地解密現有的加密的資料。

在一部電腦上的 DPAPI 可以解密主要金鑰 (和資料),另一台電腦上。 這項功能是由使用者的一致密碼,儲存並通過驗證的網域控制站所提供。典型的程序的意外的中斷發生 DPAPI 可以使用本文中的 [密碼重設] 一節所述的程序。

沒有目前的限制與 Windows XP 或 Windows Server 2003 電腦與 Windows 2000 電腦間漫遊設定檔。 如果機碼會產生或在 Windows XP 或 Windows Server 2003 電腦上匯入,然後儲存漫遊設定檔中,DPAPI 無法解密在 Windows 2000 架構的電腦上這些機碼,如果您使用漫遊使用者設定檔的身分登入。不過,Windows XP 以或 Windows Server 2003 為主的電腦可以解密在 Windows 2000 架構的電腦產生的金鑰。

DPAPI 及密碼變更

增強的安全性環境中的使用者應該定期變更其密碼。 如此一來 DPAPI 必須要能夠維護密碼變更後相同等級的存取權使用者的受保護的資料。 下列的方法用來變更 Windows 環境中的使用者密碼:
密碼變更
在這個方法有密碼變更期間是存取的連續性的使用者的主要金鑰。[DPAPI 是由 Winlogon 元件所叫用,在 Active Directory 網域中的密碼變更操作:
  • DPAPI 密碼變更作業期間從 Winlogon 接收通知。
  • DPAPI 解密已加密的使用者的舊密碼的所有主要金鑰。
  • DPAPI re-encrypts 所有主要金鑰以使用者的新密碼。
重設密碼 (設定)
這個方法中系統管理員強制重設使用者密碼。重設密碼會更複雜比密碼變更。因為系統管理員與使用者未登入,而且也沒有存取使用者的舊密碼,無法使用該舊密碼解密舊的主要金鑰,並以新的密碼重新加密。

在所有的密碼重設的情況下,如果使用者的密碼變更回至最後一個密碼之前已經重設、 存取還原至主要金鑰及如此來存取還原至所有機密的資訊將會有助於保護。主要金鑰會永遠不會刪除,即使無法解密,就會發生這個問題。不過,這可能是一個不可靠的解決方案,因為您不能預期使用者擁有永遠記得舊密碼。例如使用者的密碼可能已被重設因為使用者忘了這個密碼。

DPAPI 可以解決密碼重設問題方式,取決於在驗證使用者的安全性環境。

密碼重設: 在 Windows 2000 或更新版本的網域的網域使用者

在 Active Directory 網域環境中使用 DPAPI 時, 兩個主要金鑰的複本建立和更新每當主要機碼上執行作業。第一個複本會保護使用者密碼,如本文稍早所述。第二個複本被加密以網域中網域控制站相關聯的公開金鑰。這個公開金鑰相關聯的私密金鑰是已知的所有 Windows 2000 和更新版本的網域控制站。 Windows 2000 網域控制站使用對稱金鑰來加密和解密主要金鑰第二份複本。

如果重設使用者密碼,而原始的主要金鑰呈現給使用者無法存取使用者的存取到主要金鑰是自動還原使用下列程序中的備份的主要金鑰:
  • 工作站會透過受保護的 RPC 加密備份的主要金鑰傳送給 Windows 2000 或更新版本的網域控制站。
  • 網域控制站使用私密金鑰來解密使用者的主要金鑰。
  • 網域控制站傳回未加密的主要金鑰到工作站。
  • 工作站 re-encrypts 使用使用者的新密碼的主要金鑰。
密碼重設: Windows NT 4.0 網域

Microsoft 不建議使用 DPAPI 啟用功能 (,例如 [EFS] 或 [私密金鑰儲存體) 的 Windows NT 4.0 網域中的使用者。請參閱這篇文章,如需詳細資訊的 < 已知問題 > 一節。

將密碼重設之後 Windows 2000 用戶端電腦還原使用者的存取權 DPAPI 保護機密資訊會自動使用備份的主要金鑰中相同的方式,它會如果使用者是在工作群組中。請參閱 「 密碼重設: Windows 2000 工作站中工作有群組 」 一節,在本文中有關此程序以及的詳細資訊的安全性風險的相關資訊。

在 Windows NT 4.0 網域中的 Windows XP 不會保留主要金鑰的備份副本。 如需詳細資訊請參閱本文中的已知問題一節

密碼重設: 在一個工作群組中的 Windows 2000 工作站

如果您在獨立電腦上使用 DPAPI,兩個主要金鑰的複本建立和更新每當主要機碼上執行作業。第一個複本會保護使用者密碼,如本文稍早所述。第二個複本被加密的機密的值只有知道本機電腦帳戶。

已強制重設使用者的密碼和使用者使用新密碼登入之後,Windows 2000 會自動解密該電腦加密主要金鑰的副本,並 re-encrypts 以衍生自新使用者密碼的值。 從使用者的點的檢視是完全不受干擾使用者的存取受到 DPAPI 的機密資訊。

重要這種行為可能會影響安全性。 Microsoft 不建議您在像這樣的預設組態中,使用 DPAPI。Microsoft 建議您下列方法之一為 Windows 2000 包含可能實際洩漏的機密資料的獨立電腦進行使用:
  • 升級至 Windows XP
  • 在 Windows 2000 為基礎的膝上型電腦上使用 SYSKEY 模式 2 或 3

  • 取得更多資訊有關 SYSKEY 按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
    143475Windows NT 系統金鑰允許 SAM 的增強式的加密
密碼重設: 在一個工作群組中的 Windows XP 工作站

預設情況下,視窗 XP 並不會建立主要金鑰的備份複本。 它會操作協助預防主要金鑰快取的離線攻擊。在 Windows XP 中,您可以建立密碼重設磁片,以便使用者可能會復原密碼,如果他們忘了。 如果您使用的 Windows XP Service Pack 1 (SP1),或者稍後,您可以設定登錄因此該 Windows 將保留主要金鑰的備份複本。
如其他有關效果的強制密碼變更及可能的修復的按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
290260EFS、 認證,從憑證的私密金鑰是無法使用密碼重設之後
密碼重設磁片

密碼重設磁碟將只適用在 Windows XP 或聯結到工作群組的更新版本型電腦上。密碼復原磁碟許可使用者若要重新存取其帳戶和 DPAPI 受到保護設定檔中的所有機密資訊。

如需有關密碼的詳細資訊重設磁片,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
321305如何登入 Windows XP 如果您忘記您的密碼或您的密碼過期

已知的問題

您無法存取 DPAPI Windows NT 4.0 網域中的機密資訊

重要Microsoft 不建議您在 Windows NT 4.0 網域環境中使用 DPAPI。

在 Windows NT 4.0 網域中 Windows XP 並不會建立使用者的主要金鑰的備份複本。 這是預設行為。 如果您變更,或重設密碼使用者可能會被拒絕存取其設定檔中所包含的機密資訊。當使用者回到上次已知良好的密碼變更密碼時,就只會還原存取。

DPAPI Windows NT 4.0 網域中的問題的最常見的原因包括密碼重設或漫遊設定檔。 如果使用者最近已變更其密碼,則會發生漫遊設定檔的問題。根據各種因素可能會干擾一般漫遊使用者設定檔操作,使用者已登入設定檔可能尚未更新以新的密碼 (主要金鑰加密)。

如果要解決這個問題,安裝在使用者網域中的 [Windows 2000 或 Windows Server 2003 的網域控制站]。DPAPI 自動尋找這個網域控制站來執行備份與還原作業使用網域控制站的 DPAPI 公開/私密金鑰組。

如果您正在使用 Windows SP1 並稍後,您可以強制 DPAPI 時加入 Windows NT4 網域進行的主要金鑰的本機備份。不過,Microsoft 不會建議此程序,因為它會影響套用變更電腦的安全性。

如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
331333 使用者無法存取 EFS 加密檔案在密碼變更後,或使用漫遊設定檔時

您無法存取 DPAPI 之後重新安裝 Windows 獨立的電腦上的機密資訊

由設計,無法存取 DPAPI 機密資訊,在獨立電腦上安裝 Windows 之後。 不需要升級重新安裝作業系統之後,將終結已存在於原始的 Windows 版本上使用者的執行個體。以相同的名稱建立任何新使用者在不同的安全性資料庫中有不同的安全性主體。 新的使用者沒有解密 DPAPI 機密資訊的原始使用者的存取。使用者無法利用使用者的主要金鑰存取他們機密的資訊。

原始的 Windows 版本可以協助保護其主要金鑰只有知道該份 Windows 的機密資料的複本。如果您取代作業系統,無法存取此機密資料。使用者無法存取他們機密的資訊,利用備份的主要金鑰。

您無法新增或存取 DPAPI 機密資訊與強制設定檔

根據設計,Windows 2000 和 Windows XP 不允許您寫入本機複本的強制設定檔,因為初始工作階段後儲存資料。如此一來 DPAPI 無法儲存新的主索引鍵、 更新上變更密碼的主要金鑰或強制設定檔中加入受保護的資料。

您無法存取 DPAPI 後加入或 Disjoining 網域機密資訊

如果您有獨立的電腦加入網域,而且您遺失存取到 DPAPI 資料您可以還原存取本機使用者的身分登入。若要加入網域的電腦上的本機使用者的身分登入,按一下在 [登入] 對話方塊的 [下拉式清單] 方塊中的本機電腦的名稱,然後輸入 [您的本機使用者名稱及密碼]。

如果您已經解除加入網域的電腦,您必須重新加入網域,然後再以相同的網域使用者,若要重新存取您的檔案登。

指導方針和最佳作法

  • Microsoft 建議您使用增強式密碼。使用最困難的複雜密碼,您能可靠地記住。附註密碼篩選器目前不支援由 DPAPI。
  • 匯出及備份重要的憑證和私密金鑰到安全且安全的位置。

屬性

文章編號: 309408 - 上次校閱: 2007年12月3日 - 版次: 4.6
這篇文章中的資訊適用於:
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows XP Professional
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows NT 4.0
  • Microsoft Windows Small Business Server 2003 Premium Edition
  • Microsoft Windows Small Business Server 2003 Standard Edition
關鍵字:?
kbmt kbinfo KB309408 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:309408
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com