主页 > imtoken钱包激活 > 首页> imtoken注册> 比特币官方钱包加解密解读

首页> imtoken注册> 比特币官方钱包加解密解读

imtoken钱包激活 2023-06-26 07:12:54

原创博客:了解钱包安全

关于比特币钱包的安全,我们主要从钱包私钥的管理入手。 这里想破译一下源码中密码中钱包加密、解密和修改私钥的具体操作,后面再分析对这个安全的理解。

钱包加密

比特币钱包找回密码_火币网查询自己的比特币钱包地址_比特币钱包密码

比特币客户端的核心是私钥。 如果你有私钥,你就有权使用对应的比特币私钥。 因此,加密钱包的核心对象显而易见——私钥。 在剖析加密过程之前,我们先了解一下其中的一些名词,一不小心可能会混淆:

密码:从外部输入的字符串,用于加密和解密钱包。 Master key:一个32字节的随机数,直接用于加密钱包中的私钥,加密后立即删除。 Master key密文:根据外界输入的[Password]对[Master Key]进行AES-256-CBC加密后的结果,加密方式为对称加密。 主密钥密文生成参数:主要保存从[主密钥]得到的[主密钥密文]中一些操作涉及的参数。 将此参数与【密码】结合,通过逆向推理即可得到【万能密钥】。 私钥:椭圆曲线算法的私钥是钱包的核心。 拥有私钥就有权使用私钥对应的比特币,而私钥对应的公钥只与比特币关联,无权使用比特币。 私钥密文:【主密钥】是对【私钥】进行AES-256-CBC加解密的结果,即对称加密。

首先程序生成一个32字节的随机数作为【主密钥】,然后根据外部输入的【密码】结合生成的【主密钥密文】对【主密钥】进行AES-256-CBC加密生成参数]。 结果是【万能密钥密文】。 后面我们将使用【主密钥】对钱包中的【私钥】进行AES-256-CBC加密,得到【私钥密文】。 加密完成后,删除【私钥】,保留【私钥密文】; 同时删除主密钥,保留【主密钥密文】和【主密钥密文生成参数】。 这样就完成了钱包的加密。 那么我们总结一下加密过程的输入输出: input: [password]; 中间生成:【主密钥】、【主密钥密文生成参数】、【主密钥密文】、【私钥密文】; 最后保留:【主密钥密文生成参数】、【主密钥密文】、【私钥密文】; 内部输入:[私钥]。

比特币钱包找回密码_火币网查询自己的比特币钱包地址_比特币钱包密码

Bitcoin wallet

钱包解密

在了解顺畅的前提下,知道钱包解密才会一帆风顺; 既然加密钱包是对【私钥】进行加密,那么很多人可能自然而然地认为解密钱包就是将【私钥密文】还原为【私钥】。 这个想法是对的,但是里面的具体操作实际上并没有把所有的【私钥密文】解密成一个【私钥】。 具体操作请听我说:

比特币钱包找回密码_火币网查询自己的比特币钱包地址_比特币钱包密码

我们注意到所有的【私钥】都是由一个32字节的随机数【主密钥】加密的,所以要解密【私钥】,首先要恢复【主密钥】。 加密钱包后,我们只保留【主密钥密文】和【主密钥密文生成参数】,同时我们也知道这两个数据加上【密码】可以反推出【主密钥】。 至此,我想你应该对解密有了清晰的认识。

解密钱包,首先根据外部输入的【密码】结合保存的【万能钥匙密文】和【万能钥匙密文生成参数】还原【万能钥匙】,得到【万能钥匙】,然后将所有的【私钥密文]可以解密成私钥[私钥]。 但需要注意的是,如何修改比特币钱包的支付密码,钱包并没有将所有的【私钥密文】解密成一个【私钥】,而是钱包的解密终止。 所以大家要记住,解密钱包并不是解密所有的【私钥密文】,而是恢复【主密钥】的过程。 当然不用着急,有了【主密钥】和【私钥密文】,就很容易得到【私钥】。 这样,每次需要用到【私钥】时,

更改密码

比特币钱包密码_比特币钱包找回密码_火币网查询自己的比特币钱包地址

了解了以上两个流程后,修改钱包密码就非常简单了。 我们知道,在对钱包进行加解密的过程中,并不是直接使用我们输入的【密码】来加密钱包中的【私钥】,而是间接地将【密码】与【主密钥】关联起来,使用[master key]]对[private key]进行加解密。 因此,【Master Key】成为加解密的核心,而【Password】则是对【Master Key】进行加密,得到【Master Key Ciphertext】,故称为【密码】和【Master Key】。 加密钱包中不存储【主密钥】,而是存储【主密钥密文】和【主密钥密文生成参数】。

比特币修改【密码】的方法是:输入【新密码】和【旧密码】,用【旧密码】组合【主密钥密文】和【主密钥密文生成参数】解密【主密钥】,然后用[新密码]重新加密[Master Key]得到[New Master Key Ciphertext],然后删除[Master Key]终止。

总结在修改【密码】的过程中如何修改比特币钱包支付密码,发现整个过程中【主密钥】和【私钥密文】没有变,只是【主密钥密文】变了。 因此,修改【密码】实际上就是修改【主密钥密文】的过程。 之后只能通过【新密码】解密【主密钥】,再解密【私钥密文】,达到解密钱包的效果。

比特币钱包密码_火币网查询自己的比特币钱包地址_比特币钱包找回密码

安全理解

分析完加密钱包、解密钱包和修改钱包密码的过程后,再从整体上简单了解一下钱包加解密的安全性。 根据上面的分析我们知道,加密钱包实际上是用一个32字节的随机数【主密钥】对【私钥】进行了加密。 master key]间接加密[private key]。 同时我们知道钱包中私钥的核心也是一个32字节的随机数。 用32字节的随机数暴力破解私钥基本上是不可能的。 我们暂时了解到,一个32字节的随机数作为密码是绝对安全的。 加密钱包的整个过程其实就是将我们各种可能不安全的个性【密码】转换成一个32字节的随机数【主密钥】来加密【私钥】。 这时候可以理解为将【密码】和与私钥具有相同安全级别的【主密钥】关联起来,然后利用【主密钥】直接保证【私钥】的安全。

在解密钱包和修改钱包密码的过程中比特币钱包密码,我们需要尽可能保证【私钥】的安全,防止【私钥】出现在内存中。 所以比特币在解密钱包的时候,并不是把所有的【私钥】都解密出来放到内存中,而是把【主密钥】解密出来放到内存中,只有在需要用到【私钥】的时候. 解密【私钥密文】得到【私钥】,使用后立即清除【私钥】。 这样,我们将【私钥】出现在内存中的概率降到最低,而是将所有操作集中在【主密钥】的一点上。 我们的原则是确保【私钥】不被恶意窃取。 .

这些只是个人研究的结论。 如有异议比特币钱包密码,欢迎与豆腐商谈。