windows DPAPI如何保护系统帐户的MasterKey?

oewdyzsn  于 7个月前  发布在  Windows
关注(0)|答案(1)|浏览(82)

在阅读Microsoft's documentation about DPAPI时,我发现了以下文本:
DPAPI专注于为用户提供数据保护。由于DPAPI需要密码来提供保护,因此DPAPI的逻辑步骤是使用用户的登录密码,在某种程度上,它确实使用了用户的登录密码。DPAPI实际上使用用户的登录凭据。在用户使用密码登录的典型系统中,登录凭据只是用户密码的散列。
这让我思考--那些不要求密码的账户怎么办?
我指的是Windows和IIS安装的默认帐户,例如NETWORK SERVICE、NETWORK SERVICE、NETWORK SYSTEM、ASPNET。
如果我在其中一个帐户下运行的Web应用程序中使用DPAPI,DPAPI MasterKey将使用什么凭据?

ioekq8ef

ioekq8ef1#

security.stackexchange.com中有一个非官方的(但合理的)答案:
问:

  • 如果用户没有登录密码,DPAPI是否有效?*

答:

  • 是的,但它不太安全。DPAPI使用主密钥加密数据,该主密钥独立于用户密码。当用户有密码时,主密钥使用用户密码加密。如果没有密码,具有本地访问权限的攻击者(通过另一个用户帐户)可能会提取主密钥。但是,一旦攻击者获得了系统的本地访问权限,游戏就结束了。DPAPI实际上只是一个损害限制系统。*

另外,一个评论来纠正答案:

  • 小小的更正:主密钥是使用帐户的RSA密钥加密的,而RSA密钥又使用用户的密码进行保护。

因此,在某种程度上,它将使用例如加密帐户凭证来导出加密密钥,但密钥本身将不受保护,并且很容易获得。
在某种程度上,MS文档也提到了这一点:DPAPI实际上使用用户的登录凭据。在用户使用密码登录的典型系统中,登录凭据只是用户密码的散列。然而,在用户使用智能卡登录的系统中,凭据将有所不同。为了简单起见,我们将使用用户密码,登录密码,或仅使用密码来引用此凭据。
但它并没有解释“证书”一词。

相关问题