【问题标题】:zero knowledge architecture零知识架构
【发布时间】:2022-12-22 20:31:56
【问题描述】:
我想用零知识架构加密一些用户数据。我参考了 bitwarden 的实现并且不理解某些部分。
首先,我想使用 argon2 而不是 pbkdf2 来派生密钥,因为 argon2 似乎更安全,因为它可以抵抗并行暴力破解。
二、HKDF将master key(256bit)拉伸到512bit的目的是什么,为什么不能直接用master key加密生成的对称密钥?
第三,我是否可以直接使用主密钥来加密用户数据,而不是生成新的对称密钥并使用它来加密用户数据?
第四,为什么主密码哈希仅通过 1 次迭代创建,而不是 100,000 次?
【问题讨论】:
标签:
cryptography
pbkdf2
argon2-ffi
hkdf
【解决方案1】:
根据我的理解,以下是我的回答:
- 我不明白为什么这会导致问题。
- 也不确定他们为什么要这样做。也许一个原因可能是进一步增加熵?也许他们想避免使用与数据库中散列的密钥相同的密钥进行加密,以避免泄露信息?我也不确定。我也在做一个零知识项目 (https://github.com/krptn/krypton),我们不这样做。的确,我们使用的是完全不同的模型,因此它可能不适用。
- 他们可能认为,因为主密码(用作盐)是私有的,所以攻击者将不得不暴力破解,这无论如何都会花费足够的时间。为了让攻击者暴力破解哈希,他们需要测试每一种可能的盐。对于又长又复杂的密码,这可能就足够安全了。但是,在服务器上,盐存储在哈希旁边,因此攻击者如果拥有哈希就可以访问盐。在那种情况下,她/他不需要暴力破解盐,因此需要更高的迭代次数。此外,它可能是一个比服务器上的存储更小的攻击向量,因为 1 次迭代哈希仅在传输中使用很短的时间。
我不完全确定他们的原因,但我相信这些可能是一些可能性。