当我知道纯文本和加密文本时,我可以导出DPAPI加密中使用的密钥吗?

本文关键字:加密 DPAPI 密钥 文本 我知道 加密文本 我可以 | 更新日期: 2023-09-27 17:51:01

所以我有一个用DPAPI和一个未知密钥加密的文本,我有加密文本表示的明文。我能从这里得到使用的键吗?如何得到?

当我知道纯文本和加密文本时,我可以导出DPAPI加密中使用的密钥吗?

DPAPI是非常机密的,因此文档记录很差,即使WINE也缺乏对该API的适当支持,无法完全支持Internet Explorer等应用程序。

你必须知道关键。DPAPI为每个用户生成一个惟一的MASTERKEY,然后使用用户的当前密码检索该MASTERKEY。此密钥通常存储在%APPDATA%'Microsoft'Protect**SID**

主密钥由512个随机位组成。DPAPI从CREDHIST文件中检索当前的MASTERKEY。你可以在这里找到足够的信息:和这里

可以从明文和加密文本样本中获得密钥吗?只有当你在一个非常旧的、过时的、有已知漏洞的Windows版本上执行此加密时。

否则,不…这是不可能的。

假设您有一个明文示例和结果密文(加密文本),您可以尝试暴力攻击并尝试密钥的每种排列,直到您获得预期的密文。

用于加密数据的可能密钥的数量由所使用算法的密钥长度决定…因此,如果使用了一个足够弱的密钥来加密数据,那么暴力攻击是可行的。

但是,Microsoft会定期更新DPAPI使用的底层算法和密钥长度,所以除非数据是在Windows Server 2000上加密的,否则使用的密钥长度将使暴力破解不现实。

那么问题就变成了,是否有另一种方法可以使用明文和密文来执行比简单地尝试每个可能的密钥直到找到匹配更有效的攻击?这种方法可以称为"已知明文攻击"。

已知明文攻击是差分密码分析的一种形式…一组试图发现和利用密码中的非随机行为以帮助确定密钥的技术。

根据您的Windows版本,DPAPI使用Triple-DES或AES加密。这两种算法都被设计为能够抵抗差分密码分析。即使考虑到非常大量的明文/密文对,这种方法也只比蛮力攻击快一点点,因此仍然不实用。

额外的信息:

Windows Data Protection

DPAPI秘密