DPAPI如何保护系统账户的MasterKey?

Jus*_*tin 5 windows security dpapi

在阅读Microsoft 关于 DPAPI 的文档时,我发现了以下文本:

DPAPI专注于为用户提供数据保护。由于 DPAPI 需要密码来提供保护,因此 DPAPI 的逻辑步骤是使用用户的登录密码,在某种程度上,它确实这样做了。DPAPI 实际上使用用户的登录凭据。在用户使用密码登录的典型系统中,登录凭据只是用户密码的哈希值。

这让我开始思考 - 那些不需要密码的帐户又如何呢?

我指的是Windows和IIS安装的默认帐户,例如NETWORK SERVICE、LOCAL SERVICE、LOCAL SYSTEM、ASPNET。

如果我在这些帐户之一下运行的 Web 应用程序中使用 DPAPI,则 DPAPI MasterKey 将使用什么凭据?

Jok*_*eri 1

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

问:

如果用户没有登录密码,DPAPI 是否可以工作?

A:

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

另外,纠正答案的评论:

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

所以在某种程度上它将使用例如。系统帐户凭据来派生加密密钥,但密钥本身将不受保护并且很容易获得。

在某种程度上,MS 文档也提到了这一点: DPAPI 实际上使用用户的登录凭据。在用户使用密码登录的典型系统中,登录凭据只是用户密码的哈希值。然而,在用户使用智能卡登录的系统中,凭证会有所不同。为了简单起见,我们将使用术语“用户密码”、“登录密码”或仅“密码”来指代此凭据。

但它并没有解释“凭证”一词......