主页 > imtoken苹果版下载 > 比特币硬件钱包中的密码学 - 高级

比特币硬件钱包中的密码学 - 高级

imtoken苹果版下载 2023-04-08 07:25:10

使用硬件钱包的朋友,是不是经常听到公钥、私钥、种子、助记词、地址、哈希算法以及¥#%¥@…@#的各种词汇。

今天,币钱包小编就带大家一起来头脑风暴,深入了解硬件钱包的秘密。

本文主要内容如下:

关于种子和助记符

什么是哈希算法? 性质是什么?

什么是公钥加密? 什么是公钥和私钥?

硬件钱包如何使用种子生成各种币的钱包?

分层确定性钱包表示方法和示例

碰撞比特币私钥_比特币私钥生成器_比特币私钥推算公钥

关于种子和助记符

比特币私钥推算公钥_比特币私钥生成器_碰撞比特币私钥

什么是种子 | 根种子

种子是由随机数生成器生成的一串随机数。 这串随机数可以用来生成钱包中不同币种和账户的公私钥对,所以只备份种子就相当于备份了你所有的钱包。 由于网络空间的各种威胁,在不接触电脑、手机等设备的情况下备份私钥是最安全的,所以硬件钱包的备份方式就是写在纸上。

什么是助记词 | 助记种子

种子是一长串随机数,看起来像一串十六进制值,不利于人们记录,所以我们用一种算法将其转化为一串助记词,方便人们记录. 生成助记词的过程如图所示:

碰撞比特币私钥_比特币私钥推算公钥_比特币私钥生成器

不同长度种子对应的词数如下:

比特币私钥推算公钥_比特币私钥生成器_碰撞比特币私钥

碰撞比特币私钥_比特币私钥生成器_比特币私钥推算公钥

总结起来就是在seed中加入校验信息,每11位拆分一次,根据得到的数字查询词表索引得到词。 我们收录的英文单词都有验证信息,所以单纯的MS单词是无法获得种子的。 上述算法是可逆的,用记录的助记词很容易得到种子。 还记得你在硬件钱包初始化时被要求记在纸上的那些英文单词吗? 它们就像种子。

碰撞比特币私钥_比特币私钥生成器_比特币私钥推算公钥

关于散列和公私钥

比特币私钥推算公钥_比特币私钥生成器_碰撞比特币私钥

哈希算法 | 哈希算法

密码哈希函数是一类数学函数,它可以在有限的合理时间内将任意长度的消息压缩成固定长度的二进制字符串,其输出值称为哈希值,也称为散列值。

哈希函数的属性:

1. 抗碰撞

碰撞是哈希函数相关的一个重要概念,它体现了哈希函数的安全性。 所谓碰撞,就是两条不同的消息在同一个哈希函数的作用下,具有相同的哈希值。 哈希函数的安全性意味着在现有的计算资源(包括时间、空间、金钱等)下是不可能找到碰撞的。

用外行的话来说,很难找到具有相同哈希值的两条不同消息。 当消息发生变化时,输出的哈希值一般都会发生变化,哈希值可以看作是消息的指纹。 即使消息被轻微篡改,这个指纹也会发生很大变化。 因此哈希值可用于完整性检查。

2、原图不可逆

通俗地说,知道了输入值,很容易通过哈希函数计算出哈希值; 但是知道哈希值,就没法计算出原始输入值。

3.益智友好

拼图友好意味着没有方便的方法来生成满足特定要求的哈希值。

公钥加密

比特币私钥推算公钥_碰撞比特币私钥_比特币私钥生成器

公钥密码学需要两个密钥:公钥和私钥,简称公钥和私钥。 公钥和私钥是一对。 如果数据是用公钥加密的,则只能用对应的私钥解密; 如果数据是用私钥加密的,就只能用对应的公钥解密。 由于加密和解密使用不同的密钥,因此该算法也称为非对称密码算法。

区块链使用的公钥密码算法是椭圆曲线算法,每个用户都有一对密钥,一公一私。 使用椭圆曲线密码算法,用户可以用自己的私钥对交易进行签名,其他用户可以使用签名用户的公钥来验证签名。 在比特币系统中,用户的公钥也用来识别不同的用户,构造用户的比特币地址。

有一个很重要的特点,已知私钥可以通过密码算法得到公钥,但是知道公钥就不能推导出私钥。 在下面的描述中,point()用于表示从私钥中找到公钥的函数。 在数字货币中,只要你能用你的私钥签署交易,就意味着你有权使用你手中的币。 别人只知道你的公钥,无法得到你的私钥,也就没有办法使用你的币。 你可以简单地认为你的私钥 = 你所有的币。 硬件钱包都是为了保护你的私钥不被盗。

碰撞比特币私钥_比特币私钥生成器_比特币私钥推算公钥

种子和公私钥对计算

比特币私钥推算公钥_比特币私钥生成器_碰撞比特币私钥

从私钥创建公钥

椭圆曲线公钥创建函数,point(),输入为私钥,输出为公钥,即

点(私钥)==公钥

生成主扩展公钥和主扩展私钥

根种子是一个 128、256 或 512 位的随机数,一般由随机数生成器生成。 根种子是用户唯一需要备份的东西,用户的所有钱包都可以从这个种子创建。

可以对种子进行哈希处理以获得 512 位哈希值。 左右256位分别是主私钥m和主链码。 主私钥和链码共同组成主扩展私钥。 主公钥M由主私钥通过point()生成,主公钥和链码共同构成主扩展公钥。 主扩展公钥和主扩展私钥位于分层钱包的顶部。 如图所示:

比特币私钥推算公钥_碰撞比特币私钥_比特币私钥生成器

比特币私钥生成器_比特币私钥推算公钥_碰撞比特币私钥

公钥生成函数的性质

由于 point() 的工作原理,可以将(父)公钥与使用整数值 i 创建的公钥组合以获得(子)公钥。子公钥也可以通过 point() 生成. 输入是父私钥加上整数 i,然后取模 p。 公式描述为

point( (parent private key + i) % p ) == parent public key + point(i) == child public key

这样,只要确定了一个整数序列,就可以从父公私钥对中生成唯一确定的子公私钥对。 如果只需要子公钥,则可以在不触及父私钥的情况下生成所有子公钥。

通过本次子密钥推导操作迭代,子公钥可以生成自己的子公钥(孙子公钥),如下:

point( (child private key + i) % p ) == child public key + point(i) == grandson public key

普通分层确定性密钥派生

一般的密钥推导过程如图所示。

碰撞比特币私钥_比特币私钥生成器_比特币私钥推算公钥

通过指定不同的索引号,可以从同一个父键创建不同的子键。 使用子链代码对子密钥重复此过程可创建孙密钥,依此类推碰撞比特币私钥碰撞比特币私钥,生成结构化密钥。

增强的分层确定性密钥派生

如果黑客获得了正常的父链码和父公钥,就可以通过上述方法暴力枚举从中衍生出的所有链码和公钥。 如果黑客也获得了任何后代的私钥,通过逆向上述普通的分层确定性密钥算法,那么父代私钥和其后代的所有私钥也将被泄露。 由于私钥的泄露,可以推导出一串私钥。 图为黑客的推导过程,红框部分为黑客获取的信息。

比特币私钥生成器_碰撞比特币私钥_比特币私钥推算公钥

所以用户不应该将链码和私钥导出到不受信任的环境。 当然,可以通过加强分层确定性密钥推导算法来避免这种风险。 普通子私钥推导和增强子私钥推导的过程如图所示。

碰撞比特币私钥_比特币私钥生成器_比特币私钥推算公钥

比特币私钥推算公钥_碰撞比特币私钥_比特币私钥生成器

比特币私钥推算公钥_碰撞比特币私钥_比特币私钥生成器

在增强型子私钥推导中,父扩展公钥(父公钥+父链码)不能再生成子链码,子链码的生成需要父私钥的参与。 加强和扩大私钥就像一道防火墙,防止上述攻击的发生。

使用普通密钥推导还是增强密钥推导由索引决定,索引号0x00到0x7fffffff将生成普通密钥,索引号0x80000000到0xfffffff将生成增强密钥。

简化表示

为了表达方便,用撇号'表示增强键,不带撇号的用普通键。 第一个普通密钥(0x00)和第一个增强密钥(0x80000000)都表示为0。

M和m代表密钥类型,M代表主公钥,m代表主私钥。 斜杠 / 表示键的级别。 例如,m/0'/0/122'表示主私钥的第一强化子私钥的第一普通子私钥的第123强化子私钥。

下图是简化表示法的示意图。 虚线表示密钥的推导过程。 您可以清楚地看到增强键和普通键之间的区别。

比特币私钥生成器_碰撞比特币私钥_比特币私钥推算公钥

每一层的含义

m /purpose'/coin_type'/account'/change/address_index

目的是为了加强推导,就是一个固定的常数44'

coin_type为增强推导,代表币种,详见附件。

account是加强推导,代表账户

change是公导数,0代表外链,1代表内链。 外链用于地址,在钱包外可见,比如收钱。 内链钱包外部不可见,用于返回交易变更。

比特币私钥推算公钥_比特币私钥生成器_碰撞比特币私钥

address_index 是一个常见的推导,从 0 开始递增。

碰撞比特币私钥_比特币私钥生成器_比特币私钥推算公钥

一些栗子

比特币私钥推算公钥_比特币私钥生成器_碰撞比特币私钥

碰撞比特币私钥_比特币私钥推算公钥_比特币私钥生成器

这个例子来自解锁硬件钱包时的界面,现在你知道这些表示的意思了吧?

碰撞比特币私钥_比特币私钥生成器_比特币私钥推算公钥

硬币种类附录(常见)

比特币私钥推算公钥_比特币私钥生成器_碰撞比特币私钥

比特币私钥推算公钥_碰撞比特币私钥_比特币私钥生成器

比特币私钥生成器_比特币私钥推算公钥_碰撞比特币私钥

未完待续

看完是不是大部分小伙伴都晕了@_@ 请耐心等待,小编为技术新手写一篇《硬件钱包密码学-基础》的一面。 快来了......

- 结束-

碰撞比特币私钥_比特币私钥推算公钥_比特币私钥生成器

如何在中国购买硬件钱包:

「CoinWallet」— Trezor & Ledger 官方经销商

硬币钱包 | 致力于推进区块链安全技术的发展,帮助用户更好地保护个人数字资产。

比特币私钥推算公钥_碰撞比特币私钥_比特币私钥生成器