主页 > imtoken钱包苹果版价值 > 如何将人民币存去比特币钱包 4.2 热库和冷库

如何将人民币存去比特币钱包 4.2 热库和冷库

imtoken钱包苹果版价值 2023-03-26 07:52:13

正如我们所看到的,将比特币保存在您的 PC 中就像将钱放在您的钱包中,这被称为“热存储”。 这很方便但很不安全。 另一方面,“冷库”是离线的,将比特币锁定在别处。 冷库不联网,是密封的。 所以相对安全有保障,但显然不方便。 这就像带着一些零钱出门,却把毕生积蓄锁在保险箱里。

要做到冷热分离,还得使用不同的私钥,否则热库被攻破,冷库也有风险。 你还需要在双方之间转账,这样双方都需要知道对方的地址或公钥。

因为冷库离线,热库和冷库无法通过网络连接,但实际上冷库不用上线也能收到比特币——热库知道冷库的地址,所以可以转账钱随时到冷库。 当你觉得你钱包里的钱太多时,你可以将你的部分币转移到冷库中,但你不需要通过将冷库上线来暴露自己。 当然,只要冷库在线,就可以收到区块链的转账信息,然后就可以随意处理这些比特币了。

但是管理冷库有一个小问题:一方面,出于隐私等方面的考虑,我们希望使用不同的地址(具有不同的密钥)来接收付款。 所以当我们将比特币从热存储转移到冷存储时,我们需要使用一个新的冷存储地址。 但是既然冷库不在线,热库肯定能找到这样的地址。

一个直接的方案就是让冷库一次性生成一批地址,然后把地址列表发给热库如何将人民币存去比特币钱包,热库可以轮流使用这些地址。 存储终端在线。

分层确定性钱包

更有效的解决方案是使用分层确定性钱包。 这种方式可以让冷库创建无限数量的地址,然后通过一次短暂的一次性交换,热库知道所有的地址。 但这需要使用密码学技巧。

比特币钱包提币要多久_如何将人民币存去比特币钱包_如何将人民币存去比特币钱包

回想一下,当我们在第 1 章中讨论密钥生成和电子签名时,我们使用“generateKeys”来生成公钥(又名地址)和私钥。 在分层确定性钱包中,生成密钥的方式是不同的。 我们不是生成一个地址,而是生成一个叫做“地址生成消息”的东西; 我们不仅生成私钥,还生成“私钥生成消息”。 有了地址生成信息,我们就可以生成一个地址序列。 我们使用地址生成信息和一个整数 i 作为地址生成函数的输入参数来生成序列中的第 i 个地址。 同样,我们使用私钥生成消息来生成一系列私钥。

密码学的魔力在于:对于每个 i,第 i 个地址与第 i 个私钥匹配——换句话说,第 i 个私钥控制着第 i 个地址的比特币,就好像这是用采用经典方法制作。 这样,我们就有了一长串公钥和私钥对。

密码学的另一个技术优势是安全性——地址生成信息不会泄露任何关于私钥本身的信息。 这意味着你可以安全地将地址生成信息给任何人,他可以用它来生成第 i 个密钥。

目前并非所有电子签名算法都可用于生成分层确定性密钥。 比特币使用的电子签名算法 ECDSA 支持分层密钥,让我们可以使用这个技巧。 即冷存储端生成任意数量的key,热存储端生成对应的地址,如图4.2所示。

image.png

图 4.2 分层确定性钱包示意图

注:冷存储端生成并保存私钥生成信息和地址生成信息,然后将地址生成信息一次性传给热存储端。 当热存储端要向冷存储端转账时,依次生成新的地址。 冷库端上线后,也会依次生成地址,然后检查对应地址收到的钱,直到没有某个地址的支付位置。 如果冷库端需要向热库端转账,会按顺序生成一个私钥序列。

如何将人民币存去比特币钱包_比特币钱包提币要多久_如何将人民币存去比特币钱包

ECDSA的工作机制是这样的:通常一个ECDSA私钥是一个随机数x,它对应的公钥是gx。 要生成分层确定性密钥,我们还需要两个随机数 k 和 y。

私钥生成信息:k,x,y

第i个私钥:x=y+H(k‖i)

地址生成信息:k,gy

第i个公钥:gxi=gH(k‖i)·gy

第 i 个地址:H(gxi)

分层确定性钱包具有我们需要的所有属性:双方可以生成公钥/私钥序列,并且这些公钥/私钥相互配对(因为私钥x对应的公钥是gx)。 而且这个方法还有一个我们还没有提到的特点:当你对外提供这些公钥的时候,这些公钥之间是没有联系的,也就是说别人无法确定这些公钥来自同一个钱包. 稻草人方案(冷存储产生大量地址)也有这个性质如何将人民币存去比特币钱包,但是我们需要小心保护这些地址,因为这些地址实际上并不是独立产生的。 此属性对于保护隐私和实现匿名至关重要,我们将在第 6 章中讨论它。

如何将人民币存去比特币钱包_如何将人民币存去比特币钱包_比特币钱包提币要多久

分层确定性钱包有两个不同级别的安全性,热存储端的安全性较低。 如果热存储被攻破,那么上面提到的非相关性将不复存在,但在这种情况下,私钥(以及比特币)仍然是安全的。 一般来说,分层确定性钱包支持任意多级别的安全性——这就是“分层”的来源——不过,我们还没有讨论细节。 这种安排很有用,例如,当公司内部有多个级别的授权并且需要此功能时。

现在,让我们讨论冷存储如何保存信息(私钥或私钥生成信息)。 第一种方法是将信息保存在设备上(如笔记本电脑、手机或平板电脑或 USB 记忆棒)并确保该设备安全,最好断开网络连接并锁起来,这样如果有人想窃取信息,他首先需要访问这些设备的存储。

大脑钱包

第二种方法我们称之为大脑钱包(brain wallet)。 这样,您就可以通过密码提取比特币。 大脑钱包不需要使用硬件、纸张或其他长期存储介质。 脑钱包在人身安全性较差的情况下(如跨国出差、旅游)非常有用。

大脑钱包的主要原理是使用可预测的算法将密码变成一对公钥/私钥。 例如,您可以选择一种哈希算法将密码转换为私钥。 给定一个私钥,同样的方法可以得到私钥。 进一步结合上面提到的分层确定性钱包技术,可以根据密码生成一套完整的地址和私钥,从而实现钱包的完整功能。

但是,如果黑客猜到了你的密码,他仍然可以窃取你大脑钱包中的所有私钥。 在计算机安全领域,我们通常假设黑客知道您生成密钥的步骤。 黑客不知道的是您的密码。 所以黑客可以尝试使用不同的密码,生成地址,检查区块链中这些地址上是否有未使用的比特币。 一旦找到比特币,黑客就可以迅速将这些比特币转移给自己。 黑客可能永远不知道(甚至不关心)这些比特币属于谁,而且这种攻击不需要侵入任何设备,密码猜测也不针对任何人,因此不会留下任何痕迹。

此方法不同于尝试破解电子邮件密码。 邮件服务器通常对尝试密码的次数(称为在线猜测)有一定的次数或频率限制,但有了大脑钱包,黑客可以下载一堆未使用的密码。 比特币的地址,然后用电脑程序慢慢试错,黑客不需要知道脑钱包的地址,这叫离线猜测或者密码破解。 相应的,设置密码的难度也大大增加,而且要好记难猜。 一种安全的方法是使用自动程序生成一个 80 位数字,然后将其转换为密码。

比特币钱包提币要多久_如何将人民币存去比特币钱包_如何将人民币存去比特币钱包

生成一个好记的密码

有一个简单的生成密码的方法:从最常用的10,000个英文单词中,随机选择6个单词,这样生成的字节长度大约为80位[6×log2(10,000)大约等于80]。 许多人发现这种方法比随机选择字母更容易记住,因为这种方法生成的密码通常是这样的:

磨损到合金调焦好还原

地球荷兰假累点场合

在实际操作中,我们可以放慢程序生成密钥的速度(给程序加一个延迟),这样黑客通过反复试验破解私钥的时间就会变长,也就是所谓的键扩展(键拉伸)。 例如,为了让密钥的生成速度变慢,我们可以让程序计算容易计算的散列函数SHA-256,220次,这样就增加了黑客220倍的工作量。 当然,如果太慢,用户在使用比特币时也会计算得很慢,也很麻烦。

如果完全忘记大脑钱包的密码,钱包中的比特币将永远无法提现。

纸钱包

如何将人民币存去比特币钱包_比特币钱包提币要多久_如何将人民币存去比特币钱包

第三种选择是纸钱包(见图 4.3):钥匙印在一张纸上,然后锁在保险箱里。 显然,这种方法的安全性取决于我们使用的纸张的安全性。 纸钱包通常以两种方式对公钥和私钥进行编码:QR 码和 base58 码。 就像脑钱包一样,纸钱包可以通过只存储少量关键信息来重新创建。

image.png

图 4.3 带有公钥的比特币纸钱包

注意:二维码和base58码都用于加密。

防损硬件

第四种方法是使用防篡改硬件(tamper-resistant device),用它来存储密钥或者用它来生成密钥,简而言之,这种设备本身不会泄露密钥或输出密钥,而只有当我们显示密钥的时候按下设备上的按钮或输入设备密码后的保管库状态。 防损硬件的好处在于,如果设备丢失或被盗,我们会立即知道。 此外,为了窃取密钥,必须先窃取设备。 这与将密钥保存在您的计算机上不同。

综上所述,用户可以使用上述一种或多种方法来保存密钥。 对于热存储,尤其是大量比特币,人们愿意投入大量成本或先进的安全机制来保护它们。 我们将在下一章讨论这些更高级的机制。