加密钱包的一些东西,学习提高安全认识


日常生活中,钱包是用来放钱的,今天来说下加密钱包。

加密钱包是管理密钥、地址、跟踪余额和创建交易的软件。我们的比特币数据是存储在区块链上的,而不是在钱包里。

我们知道一个私钥生成公钥,公钥生成地址,这三者是一一对应的,就是一个私钥只有一个公钥和一个地址。但是我们在往交易所充币的时候,看到交易所为我们每个人生成一个独一无二的地址。这是怎么做的呢?

目前钱包分为两种,一种是非确定性(随机)的钱包,就是随机生成多个私钥,钱包管理这些私钥。如果需要成千上万的地址,通过随机的方式来生成私钥,这就需要存储那么多无规律的私钥,这样就很麻烦不好管理。另一种是确定性(种子)的钱包,就是通过种子可以生成无数的私钥,我们只需要记住种子就可以了。我们在使用钱包时记住的助记词可以生成种子,只要我们保管好助记词,我们的币就能找回来。

主要流程是这样的

第一,随机生成128到258位的随机数,我们这里叫做熵;

第二,熵经过一定处理方法,生成助记词;

第三,助记词经过密钥延伸函数PBKDF2,生成种子;

第四,种子经过HMAC-SHA512算法,生成母密钥;

第五,通过CKD函数,母密钥生成众多子密钥。

接下来一步步解析这里面的细节

part 1 ‖从熵到助记词‖

1、随机生成一个128到258位的数字,叫做熵

2、熵通过SHA256哈希得一个值,取前面的几位(熵长/32),记为y

3、熵和y组成一个新的序列,

4、将新序列以11位为一部分,已经预先定义2048个单词的字典做对应,单词的列表像这样的 https://github.com/trezor/python-mnemonic/blob/master/mnemonic/wordlist/english.txt

5、生成的有顺序的单词组就是助记词

part 2 ‖从助记词生成种子‖

助记词表示长度为128至256位的熵。 通过使用密钥延伸函数PBKDF2,熵被用于导出较长的(512位)种子。

PBKDF2的基本原理是通过一个伪随机函数(例如HMAC函数),把明文和一个盐值作为输入参数,然后重复进行运算,并最终产生密钥。如果重复的次数足够大,**的成本就会变得很高。而盐值的添加也会增加“彩虹表”攻击的难度。

比特币钱包中,PBKDF2函数的第一个参数是助记词,第二个参数盐,由字符串常数“助记词”与可选的用户提供的密码字符串连接组成。使用HMAC-SHA512算法,使用2048次哈希来延伸助记符和盐参数,产生一个512位的值作为其最终输出。 这个512位的值就是种子。

part 3 ‖从种子到母密钥‖

512位分成平均分成两部分,左边的256位为母私钥,右边的256位为链码。母私钥、链码和索引号,CKD(child key derivation)函数去从母密钥衍生出子密钥。

part 4 ‖从母密钥到子密钥‖

母密钥、链码、索引合并在一起并且用HMAC-SHA512函数散列之后可以产生512位的散列。所得的散列可被拆分为两部分。散列右半部分的256位产出可以给子链当链码。左半部分256位散列以及索引码被加载在母私钥上来衍生子私钥。在图中,我们看到这个说明——索引集被设为0去生产母密钥的第0个子密钥(第一个通过索 引)。

part 5 ‖扩展密钥‖

母密钥和链码结合叫做扩展密钥,拥有扩展私钥可以推导出子私钥,扩展公钥可以推导出子公钥。拥有扩展公钥就可以推导出子公钥,在服务器不需要母私钥也可以,这样就更安全更方便。但是还有一个问题,那就是扩展公钥包含有链码,如果子私钥被知道或者被泄漏的话,链码就可以被用来衍生所有的其他子私钥。简单地泄露的私钥以及一个母链码,可以暴露所有的子密钥。更糟糕的是,子私钥与母链码可以用来推断母私钥。

科普部分:

‖ 什么是助记词 ‖

简单的回答:你经常见到的 12 或者 24 个单词组成的一串单词组合。专业点的回答:是根据 BIP39 规范由一系列复杂的密码学推导算法最得到的 12 - 24 个单词的组合。

‖那为什么会有助记词呢‖

随机数种子:091ABCB4A6e1300e9345bA60c78a8BE7

助记词种子:fee timber sustain awkward vehicle option state lumber wrong normal tornado cinnamon

请问上面两个哪个更容易记住呢?当然是有规律的 12 个单词更容易记忆和保存啦。其实就是因为一串随机数种子对?类记忆来说太不友好所以才有了助记词的形式,便于记忆和保存,于是就有了助记词密盒子这款产品。

论是随机数种子还是助记词种子其本质都是一串随机数种子,这个种子的随机性决定了钱包是否能被暴力**出来。你有没有想过自己通过具成数个钱包,万一遇到一个钱包里面有 100 枚 BTC 是不是很开心?同学醒醒,死心吧,上次有这个想法的人买了一堆性能云服务器通过代码快速成钱包效率非常,但是现在估计买服务器的成本还没回来呢,事实证明这是一个几乎不可能的事情)

当然这 12 -24 个单词也不是随便生成的任意单词,所有的单词都取自于BIP39 规范里面特定的 2048 个单词字典,这些单词有一个特性,就是通过前四个字母就可以确定唯一的一个单词,所以从助记词密盒的设计上面我们可以看到一共 12 个单词空间,每个空间内可以摆放 4 个字母块,这也就消除了大部分用户的疑惑:为什么这里只能存放四个字母块一个单词空间内,存不下怎么办的问题。

那么当你使用助记词密盒存储你的助记词时如果你要倒钱包时候怎么办?别急,在 imKey 硬件钱包内当你输前四个字动可以帮你匹配到唯一的一个单词,千万不要觉得己备份的单词不全就觉得丢失了你的比特币。如果你想在其他地倒钱包并且没有智能提示的话你可以通过每个单词前四个字,然后己查字典的形式来匹配到12个单词,这样一样可以恢复你的助记词并使用任何钱包转账。

那么助记词密盒到底安不安全呢?我们先看看助记词密盒的关键指标:易用,防,耐温,耐腐蚀。如果一个硬件钱包能够在产品设计上和使用材质上够用心则相对于抄写在纸张和其他材质的上的存储介质要安全很多。

imKey 助记词密盒使用航空铝材,在防,耐温,耐腐蚀面足以应对普通家庭遇到的灾等突发意外事件。

‖比特币钱包有什么用‖

比特币是一种虚拟货币,没有实物形态,它储存在区块链上,也可以放在比特币钱包里。比特币钱包主要储存的是比特币地址和私钥。

与实物钱包可以放多张银行卡一样,比特币钱包可以储存多个比特币地址及其对应的私钥。比特币私钥就用来保护你的钱包,如果私钥丢失,你将永远失去这笔比特币。

加密钱包的一些东西,学习提高安全认识

比特币钱包的核心功能就是保护你的私钥,一旦你的比特币地址私钥丢失,是不可能像丢失银行卡密码一样,带上身份证到银行柜台重置密码就可以了,这意味着你永远也找不回来了,地址里比特币也将永久丢失。

比特币钱包有很多种,分为在线钱包和离线钱包,在线钱包又分为:全节点钱包、轻钱包和中心化钱包;离线钱包也分为:纸钱包、脑钱包和硬件钱包。

你可以根据自己的需求来选择适合自己的钱包,分钱包储存比特币可以减少丢失私钥后的损失。

—-

编译者/作者:添颜币盛汇

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

本文来自网络,不代表吾所求区块链新闻网立场,转载请注明出处:http://www.wusuoqiu.cn/quotation/16399.html
分享到