欢迎来到天天文库
浏览记录
ID:28115256
大小:372.50 KB
页数:11页
时间:2018-12-08
《硬件钱包如何用种子生成各种币的钱包的?.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、硬件钱包如何用种子生成各种币的钱包的? 什么是哈希算法?有什么性质? 什么是公钥密码?什么是公钥与私钥? 分层确定性钱包表示方法与示例 1、关于种子&助记词什么是种子
2、RootSeed 种子是一串由随机数生成器生成的随机数。这串随机数可以用来生成钱包中不同种币和不同账户的公私钥对,所以只需备份种子就相当于备份您的所有钱包了。由于网络空间存在各种各样的威胁,备份的私钥不接触电脑和手机等设备是最安全的,所以硬件钱包的备份方法是记在纸上。 什么是助记词
3、MnemonicSeed 种子是一串很长的随机数,看起来就
4、是一串十六进制值,不利于人进行记录,所以我们用算法将其转化为一串助记词,人们就可以方便进行记录。助记词的产生过程如图: 不同长度的种子对应的单词数量如下表: 总结一下,就是将种子加上校验信息,每11位进行切分,按照得到的数字查询单词表索引得到单词。我们记录的英文单词是有校验信息的,所以不是随意MS个单词就能得到一个种子哦。以上的算法是可逆的,用记录下的助记词可以轻松得出种子。还记得硬件钱包初始化过程中让您记在纸上的那些英文单词吗?它们就相当于种子哦。 2、关于哈希和公私钥哈希算法
5、HashAlgorithm
6、 密码哈希函数是一类数学函数,可以在有限合理的时间内,将任意长度的消息压缩为固定长度的二进制串,其输出值称为哈希值,也称为散列值。 哈希函数的性质: 1.抗碰撞性 碰撞是与哈希函数相关的重要概念,体现着哈希函数的安全性,所谓碰撞是指两个不同的消息在同一个哈希函数作用下,具有相同的哈希值。哈希函数的安全性是指在现有的计算资源(包括时间、空间、资金等)下,找到一个碰撞是不可行的。 通俗地说,就是很难找到两个具有相同哈希值的不同消息。消息改变,输出的哈希值一般就会改变,哈希值可以看作消息的指纹。即使消息被略微篡改,这
7、个指纹也会发生很大变化。所以哈希值可以用来做完整性校验。 2.原像不可逆 通俗地说,知道输入值,很容易通过哈希函数计算出哈希值;但知道哈希值,没有办法计算出原来的输入值。 3.难题友好性 难题友好性指的是没有便捷的方法去产生满足特殊要求的哈希值。 3、公钥密码算法 公钥密码算法需要两个密钥:公开密钥和私有密钥,简称公钥和私钥。公钥和私钥是一对,如果用公开密钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是不同的密钥,所以这种算法也叫
8、做非对称密码算法。 区块链中所使用的公钥密码算法是椭圆曲线算法,每个用户拥有一对密钥,一个公开,另一个私有。利用椭圆曲线密码算法,用户可以用自己的私钥对交易进行签名,同时别的用户可以利用签名用户的公钥对签名进行验证。在比特币系统中,用户的公钥也被用来识别不同的用户,构造用户的比特币地址。 有一个很重要的特性,已知私钥通过密码学算法可以求出公钥,但知道公钥没办法反推出私钥。在下面的叙述中用point()表示由私钥求公钥的函数。在数字货币中,只要您能够用您的私钥对交易进行签名,就代表您有权利花出您手中这些币,别人只知道
9、您的公钥,无法得到您的私钥,是没有办法使用您的币的。您可以简单认为您的私钥=您的所有币。硬件钱包就是要保护您的私钥,让它们远离被盗。 种子与公私钥对计算 由私钥创建公钥 椭圆曲线公钥创建函数,point(),输入为私钥,输出为公钥,即 point(私钥)==公钥 主拓展公钥与主拓展私钥的生成 根种子为128、256或512位随机数,一般由随机数生成器生成。该根种子是用户唯一需要备份的,由该种子可以创建出用户所有钱包。 该种子经过哈希可以得到512位的哈希值,左右256位分别为主私钥m和主链码,主私钥与链码
10、一起构成主拓展私钥。主公钥M由主私钥通过point()方式产生,主公钥与链码一起构成主拓展公钥。主拓展公钥和主拓展私钥位于分层钱包的最顶层。如图所示: 公钥生成函数的性质 由于point()的工作原理,可以把(父)公钥与一个通过整数值i创建的公钥相结合,得到(子)公钥。子公钥也可以通过point()方式产生,输入为父私钥加上整数i后取模p,用公式描述为 point((父私钥+i)%p)==父公钥+point(i)==子公钥 通过这种方式,只要确定一个整数序列,就可以从父公私钥对产生唯一确定的子公私钥对。如果仅需
11、要子公钥,可以在不接触父私钥的情况下生成所有子公钥。 通过这种子密钥推导操作迭代,子公钥可以用于生成他们自己的子公钥(孙公钥),如下: point((子私钥+i)%p)==子公钥+point(i)==孙公钥普通的分层确定性密钥推导 普通密钥推导的过程如图所示, 指定不同的索引号,可以从相同的父密钥中创建出不同的子密钥。
此文档下载收益归作者所有