加密wallet.dat文件的算法是什么?
安全
钱包
比特币核心
分享
改进这个问题
跟随
11年10月24日17:41编辑
D.H.-比特币.se
523733金徽章2727银徽章4444铜徽章
11年10月24日10:40问
提比亚丘
42.3k2020金徽章130130银徽章337337铜徽章
添加评论
3个答案
10
有关详细说明,请参见应用程序的自述:https://github.com/bitcoin/bitcoin/blob/6b8a5ab622e5c9386c872036646bf94da983b190/doc/README
简而言之:
使用EVP将密码短语转换为密钥/iv对,具有动态的轮数
该密钥/iv对用于使用AES-256-CBC加密随机生成的主密钥
钱包密钥的秘密部分然后使用主密钥加密,同样使用AES-256-CBC
分享
改进这个答案
跟随
于2014年8月4日14:32编辑
死亡轴
847922金徽章3333银徽章6464铜徽章
回复时间:10月24日11:31
彼得·维尔
66.9k88金徽章144144银徽章218218铜徽章
三
嗯,自述文件似乎不时更新,钱包加密说明也不在了。这是你链接到的版本吗?github.com/bitcoin/bitcoin/blob/…–ThePiachu 1月19日20:15
@谢谢你的更新链接,它节省了我几分钟。我更新了答案以反映永久链接2014年8月4日14:33
添加评论
10
皮耶特的回答涵盖了技术细节,所以我不会重复任何一个。我要补充的是,用户应该记住,比特币核心钱包或任何加密功能强大的加密系统中,最薄弱的一点是密码短语。系统将密码短语转换为AES-256密钥,该密码派生密钥用于加密随机生成的主钱包密钥。主钱包密钥不能被暴力强制,除非PRNG被泄露或有缺陷,但是攻击者可以尝试暴力强制密码短语本身。
客户端通过使用salt(随机数)和多轮散列来增强对该攻击的抵抗力。salt防止了预计算攻击,因为相同的密码短语和不同的salt将产生不同的密钥。使用多轮哈希可以减缓暴力攻击,因为攻击者还需要对尝试的每个密码短语执行多轮哈希。
客户端使用动态密钥强化。这意味着轮数根据客户端的计算能力而变化(以使加密或解密时间保持在1秒以下)。硬件的计算能力越强,执行的回合就越多,暴力破解密码就越困难。当您更改密码短语时,客户端将根据当前硬件的计算能力调整动态轮数。通过定期更新密码,可以确保密码派生密钥符合摩尔定律。
通过使用盐键硬化和键拉伸只能走这么远。如果您的密码是“p@ssw0rd!” 或者其他一些已知的常用密码,对钱包进行暴力破解仍然是微不足道的。为了说明为什么让我们假设攻击者拥有每秒可尝试100M哈希的硬件,而您的钱包使用100000轮哈希。这意味着攻击者的硬件(100M哈希)每秒可以尝试1000个密码。因此,钱包确实减慢了攻击者的速度,但如果密码很弱,那么它就不能减慢足够的速度。有一些以前被泄露/盗用/黑客攻击的密码列表,公开的密码有上千万个。如果没有密钥拉伸,攻击者可以在不到一秒钟内尝试所有可能的已知密码。关键的伸展运动会把速度减慢到几个小时。另一方面,让我们假设你的密码是未知的,足够强大,与一个单一的哈希平均需要一天的暴力。10万发子弹,时间增加到几个世纪。
分享
改进这个答案
跟随
9月29日15:36编辑
索基尔五世ærge公司
77566银牌2323铜牌
回复时间:2011年10月24日13:20
死亡轴
847922金徽章3333银徽章6464铜徽章
6
我想补充一点,密码短语之所以被称为密码短语是有原因的。使用“这是一个非常长但非常简单的密码短语要记住”比“更安全”fl@a%%zG“,即使使用字典攻击。”托马斯·博尼尼10月24日16:13
5
@安德烈亚斯博尼尼:感谢你的评论,这个特殊的密码短语现在将成为字典的一部分;-)-2011年10月25日下午1:20
添加评论
0
那么,我们是说,通过十六进制编辑器查看wallet.dat中的主密钥和加密私钥,以及正确的密码短语,是解密私钥所需的全部吗?这与2012年左右的钱包文件有关。
分享
改进这个答案
跟随