当前位置:首页 > 物联网 > 区块链
[导读] 关于种子&助记词 什么是哈希算法?有什么性质? 什么是公钥密码?什么是公钥与私钥? 分层确定性钱包表示方法与示例 1、关于种子&助记词 什么是种子 | R

关于种子&助记词

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

什么是公钥密码?什么是公钥与私钥?

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

1、关于种子&助记词

什么是种子 | Root Seed

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

什么是助记词 | Mnemonic Seed

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

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

总结一下,就是将种子加上校验信息,每11位进行切分,按照得到的数字查询单词表索引得到单词。我们记录的英文单词是有校验信息的,所以不是随意MS个单词就能得到一个种子哦。以上的算法是可逆的,用记录下的助记词可以轻松得出种子。还记得硬件钱包初始化过程中让您记在纸上的那些英文单词吗?它们就相当于种子哦。

2、关于哈希和公私钥

哈希算法 | Hash Algorithm

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

哈希函数的性质:

1. 抗碰撞性

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

通俗地说,就是很难找到两个具有相同哈希值的不同消息。消息改变,输出的哈希值一般就会改变,哈希值可以看作消息的指纹。即使消息被略微篡改,这个指纹也会发生很大变化。所以哈希值可以用来做完整性校验。

2. 原像不可逆

通俗地说,知道输入值,很容易通过哈希函数计算出哈希值;但知道哈希值,没有办法计算出原来的输入值。

3. 难题友好性

难题友好性指的是没有便捷的方法去产生满足特殊要求的哈希值。

3、公钥密码算法

公钥密码算法需要两个密钥:公开密钥和私有密钥,简称公钥和私钥。公钥和私钥是一对,如果用公开密钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是不同的密钥,所以这种算法也叫做非对称密码算法。

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

有一个很重要的特性,已知私钥通过密码学算法可以求出公钥,但知道公钥没办法反推出私钥。在下面的叙述中用point()表示由私钥求公钥的函数。在数字货币中,只要您能够用您的私钥对交易进行签名,就代表您有权利花出您手中这些币,别人只知道您的公钥,无法得到您的私钥,是没有办法使用您的币的。您可以简单认为您的私钥=您的所有币。硬件钱包就是要保护您的私钥,让它们远离被盗。

种子与公私钥对计算

由私钥创建公钥

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

point(私钥) == 公钥

主拓展公钥与主拓展私钥的生成

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

该种子经过哈希可以得到512位的哈希值,左右256位分别为主私钥m和主链码,主私钥与链码一起构成主拓展私钥。主公钥M由主私钥通过point()方式产生,主公钥与链码一起构成主拓展公钥。主拓展公钥和主拓展私钥位于分层钱包的最顶层。如图所示:

公钥生成函数的性质

由于point()的工作原理,可以把(父)公钥与一个通过整数值i创建的公钥相结合,得到(子)公钥。子公钥也可以通过point()方式产生,输入为父私钥加上整数i后取模p,用公式描述为

point( (父私钥 + i) % p ) == 父公钥 + point(i) == 子公钥

通过这种方式,只要确定一个整数序列,就可以从父公私钥对产生唯一确定的子公私钥对。如果仅需要子公钥,可以在不接触父私钥的情况下生成所有子公钥。

通过这种子密钥推导操作迭代,子公钥可以用于生成他们自己的子公钥(孙公钥),如下:

point( (子私钥+ i) % p ) == 子公钥 + point(i) == 孙公钥

普通的分层确定性密钥推导

普通密钥推导的过程如图所示,

指定不同的索引号,可以从相同的父密钥中创建出不同的子密钥。使用子链码对子密钥重复这个过程可以创建出孙密钥,以此类推,分成结构的密钥就可以创建出来了。

加强的分层确定性密钥推导

如果黑客得到了正常的父链码和父公钥,他就可以通过以上方式暴力枚举出所有由它推导出的链码和公钥。如果黑客也获得任何一个子孙的私钥,通过逆向上述普通分层确定性密钥算法,那么父私钥以及它子孙的所有私钥也就都泄露了。由于一个私钥泄露可以导致推导出一串私钥。图片中展示出了黑客的推导过程,红色框部分为黑客获得信息。

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

在加强子私钥推导中,父拓展公钥(父公钥+父链码)已经不能产生子链码了,子链码的产生需要父私钥的参与。加强拓展私钥就像防火墙一样,防止了上面攻击的发生。

使用普通密钥推导还是使用加强密钥推导是由索引决定的,索引号从0x00到0x7fffffff将产生普通密钥,当索引号从0x80000000到0xffffffff将产生加强密钥。

简化表示方法

为了表述方便,使用撇号’来表示加强密钥,不加撇号为普通密钥,第一个普通密钥(0x00)和第一个加强密钥(0x80000000)都表示为0。

M和m表示密钥类型,M表示主公钥,m表示主私钥。斜杠/表示密钥的层次。例如m/0’/0/122’表示主私钥的第一个加强子私钥的第一个普通子私钥的第123个加强子私钥。

下图是简化表示方法的示意图,虚线代表密钥的推导过程,可以清晰看到加强密钥和普通密钥的区别。

每个层次代表的含义

m / purpose‘ / coin_type’ / account‘ / change / address_index

purpose为加强推导,为固定常数44’

coin_type为加强推导,代表币的种类,具体见附录。

account为加强推导,代表账户

change为普通推导,0代表外部链,1代表内部链。外部链用于地址,钱包外部可见,如用于收款。内部链钱包外部不可见,用于返回交易改变。

address_index为普通推导,从0开始递增。

一些栗子

现在你知道这些表示方法的含义了吧?

币的种类附录(常见)

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭