为什么 DPAPI 在 blob/密钥解密中使用 SHA1?

Why does DPAPI uses SHA1 in blob/key decryption?

提问人:Dominik Oškera 提问时间:4/13/2023 更新时间:4/13/2023 访问量:97

问:

据我所知,SHA1 不被视为安全的加密哈希函数。尽管如此,它似乎仍在 DPAPI 中使用。这可以从模拟 DPAPI 功能的 pypykatz 实现中看出。

https://github.com/skelsec/pypykatz

例如,SHA1 用于 blob 解密中的密钥派生:https://github.com/skelsec/pypykatz/blob/master/pypykatz/dpapi/structures/blob.py

def decrypt(self, key, entropy = None):
        def fixparity(deskey):
            temp = b''
            for i in range(len(deskey)):
                t = (bin(deskey[i])[2:]).rjust(8,'0')
                if t[:7].count('1') %2 == 0:
                    temp+= int(t[:7]+'1',2).to_bytes(1, 'big')
                else:
                    temp+= int(t[:7]+'0',2).to_bytes(1, 'big')
            return temp
        
        key_hash = sha1(key).digest()
        session_key_ctx = hmac.new(key_hash, self.salt, ALGORITHMS_DATA[self.hash_algorithm][1])
        if entropy is not None:
            session_key_ctx.update(entropy)
        
        session_key = session_key_ctx.digest()

a) 我想知道他们没有使用更安全的哈希函数(如 SHA2 或 SHA3)是否有原因? b) 另外,它是否会产生我应该关注的漏洞?

我试图找到 Windows DPAPI 文档,但似乎没有公开的此类文档。

Windows 安全 加密 dpapi 加密哈希函数

评论

1赞 Topaco 4/13/2023
根据您的代码片段,更精确地应用了 HMAC/SHA1,请参阅:为什么 HMAC-SHA1 仍然被认为是安全的?

答: 暂无答案