如何解决数据保护 API (DPAPI)

文章翻译 文章翻译
文章编号: 309408 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

数据保护 API (DPAPI) 帮助保护 Windows 2000 和更高版本的操作系统中的数据。DPAPI 用于帮助保护私钥、 存储的凭据 (在 Windows XP 及更高版本) 和其他操作系统或程序想要保密的机密信息。

DPAPI 不负责存储保护机密信息。它是只负责对调用它如 Windows 凭据管理器、 私钥的存储机制或调用 CryptProtectData() 函数和 CryptUnprotectData() 函数在 Windows 2000 Windows XP 中的任何第三方程序的程序的数据进行加密和解密或更高版本。

注意此功能在不同于在 Windows NT 4.0 中由受保护的 Windows 存储区 (P-存储) 提供的功能。P 存储负责保护和存储机密信息。 DPAPI 提供了没有存储功能。
本文介绍了 DPAPI 如何帮助保护基本级别上的数据。它还包括与相关疑难解答的访问受保护的 DPAPI 不同方案中的数据丢失的信息。

有关 DPAPI 的工作原理的详细信息请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/ms995355.aspx
本文包括以下主题:

更多信息

重要若要 DPAPI 数据丢失的疑难解答,您必须收集以下信息:
  • DPAPI 包括本地工作站版本特定的安全环境中如何工作?
  • 是否在工作站加入到域吗?
  • 是用户是域的成员吗?
  • 操作系统版本所在域是什么?
DPAPI 使用 Windows NT 4.0 域中时,使用 DPAPI 的许多问题发生。 请参阅本文后面的详细信息"已知问题"一节。

DPAPI 主要由操作系统的安全功能用于帮助保护用户的代表的数据。此外,任何第三方程序可以使用 DPAPI 来帮助安全地保护用户数据。

DPAPI 可以保护

DPAPI 有助于保护以下各项:
  • web 页的凭据 (例如对于密码)
  • 文件共享的凭据
  • 与加密文件系统 (EFS)、 S/MIME 和其他证书相关联的私钥
  • 使用 CryptProtectData() 函数受保护的程序数据

示例: 证书和私钥

本部分介绍的个人数据的 DPAPI 有助于保护机密信息之差。下面的列表描述了证书的导入操作过程中的数据的位置,并描述了与该证书对用户的个人存储区相关联的私钥:
  • 在证书编码为二进制大对象并存储为二进制值在下面的文件位置:
    %Userprofile%\Application Data\Microsoft\SystemCertificates\My\Certificates
  • 请注意该注册表项的位置是本地用户配置文件中。这种放置可确保只有登录用户在典型的情况下有权访问他们自己的证书。
  • 证书不受 DPAPI 任何默认 Windows 机制。访问控制列表 (ACL) 用来定义的用户可能会加载该用户的配置单元和谁可以读取存储在该配置单元中的证书。
  • 与证书相关联的私钥是加密的 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 域控制器使用对称密钥来加密和解密主密钥的第二个副本。

如果重设用户密码,并且原始主密钥呈现给用户无法访问自动在下面的过程中使用备份主密钥还原主密钥用户的访问权限:
  • 工作站将发送到 Windows 2000 或更高版本的域控制器通过受保护的 RPC 加密备份主密钥。
  • 域控制器使用私钥解密用户的主密钥。
  • 域控制器返回到该工作站未加密的主密钥。
  • 在工作站 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 将保留为主密钥的备份副本。
forcible 密码更改和可能的恢复的效果的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
290260重新设置密码后,EFS、 凭据,和从证书的私钥将不可用
密码重置磁盘

仅适用于 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 和更高版本,您可以强制进行本地备份主密钥,而会加入到 Windows NT4 域的 DPAPI。但是,Microsoft 不推荐此过程,因为它会影响应用更改的位置的计算机的安全性。

有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
331333 用户不能获得 EFS 加密文件的访问权限更改密码之后,或者使用漫游配置文件时

您无法访问 DPAPI 后独立计算机上重新安装 Windows 的机密信息

通过设计,您不能在一台独立的计算机上安装 Windows 后访问 DPAPI 机密信息。 已存在于 Windows 的原始副本上的用户的实例被破坏后无需升级中重新安装操作系统。创建具有相同名称的任何新用户在不同的安全数据库中有一个不同的安全主体。 新的用户没有解密 DPAPI 机密信息的原始用户的访问。通过使用该用户的主密钥,用户无法访问他们的机密信息。

原始的 Windows 副本可以帮助保护机密数据,只有知道该副本的 Windows 的主密钥的副本。如果您替换操作系统,不能访问此机密数据。通过使用备份主密钥,用户不能访问他们的机密信息。

您不能添加或访问 DPAPI 使用强制配置文件的机密信息

通过设计,Windows 2000 和 Windows XP 不允许您将写入强制配置文件的本地副本,因为数据被保存后在初始的会话。如此一来 DPAPI 无法存储新的主密钥,更新母版上更改密码的密钥或将受保护的数据添加到强制配置文件中。

您无法访问 DPAPI 联接或退出一个域后的机密信息

如果您有一台独立的计算机加入到域,并且您已经丢失了访问 DPAPI 数据可以还原访问通过与本地用户登录。加入域的计算机上的本地用户作为登录,单击本地计算机的名称,在下拉框中,在 登录 对话框中,然后输入您的本地用户名和密码。

如果您有一台计算机从域中退出,您必须重新加入域,然后登录以相同的域用户,以重新获得访问您的文件。

准则和最佳做法

  • Microsoft 建议您使用强密码。使用最困难的复杂密码可以可靠地记住。注意DPAPI 目前不支持密码筛选器。
  • 导出和重要证书和私钥备份到一个安全而且安全的位置。

属性

文章编号: 309408 - 最后修改: 2007年12月3日 - 修订: 4.6
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows XP Professional Edition
  • 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
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 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