美文网首页区块链研习社
比特币源码研读之密钥篇

比特币源码研读之密钥篇

作者: 方建强 | 来源:发表于2018-03-02 22:26 被阅读274次

这是我的第五篇研读记录,抽空写了点欢迎拍砖。

首先讲一下私钥、公钥、地址的关系

比特币源码研读之密钥篇

私钥通过椭圆曲线相乘推出公钥,公钥通过哈希运算得出公钥哈希,即生成比特币地址。但是地址不能推出公钥,公钥不能推出私钥,所以私钥如果不泄露,基本是安全的,而公钥可以公开。

私钥

1、重要性:一旦私钥丢失或被窃取,就失去了对钱包的控制权,资产也就无法找回,所以一定要保管好自己的私钥,比如使用离线钱包。

2、数值范围:比特币私钥是256位的二进制数字,由256个0或1组成的数字,转换到十进制,其数值范围为【0,1.158x10^77-1】,接近于宇宙中原子的数量(10^80),所以私钥相同几率几乎为零,不可重复,不可被爆力搜索破解。

3、生成私钥的随机数

一定要使用密码学安全的伪随机数生成器(CSPRNG)来生成随机数,其需要符合以下条件:

1)随机性:不存在统计学偏差,完全杂乱的数列

2)不可预测性:不能从过去的数列推测出下一个出现的数

3)不可重现性:除非将数列保存下来,否者不能重现相同的数列

符合以上条件才是一个安全有效及有用的随机数。

那么随机数是怎么生成的呢?接下来我们要看一下源码,它是如何实现的。

图1(Src/random.cpp)

在生成私钥之前需要获得一个强的随机字节数,代码实现于Src/random.cpp-getstrongrandbytes

首先定义一个SHA512,定义生成两个强随机内容:

1)、opensll

2)、os (操作系统本身)

通过两种方式同时实行私钥的获取,从而得到一个强的随机数,增强安全性。之后获得随机数种子(Randaddseedperfmon)下图显示了获得CPU的性能指数,为了就是要符合随机数的条件,增加安全性。

图2(Src/random.cpp)

4、私钥的生成MakeNewKey

通过以上步骤得到强有力的随机数,从而得到一个非常安全的私钥值,图3就是私钥的循环生成过程:首先获得一个强的随机字节数;然后通过椭圆曲线验证私钥,直到有效为止

数值范围(0,1.158x10^77-1)

图3

最后讲一下私钥的代码定义

“An encapuslated private key”封装的私钥(图4),定义了3个变量:

1)Fvalid:描述私钥是否有效,通过椭圆曲线方程来验证。

2)fCompressed:该私钥对应的公钥是否被压缩。

3)Keydata:私钥的数据(包含256位,32个字节)

图4

      区块链研习社源码研读班方建强

相关文章

  • 比特币源码研读

    forest21000版 比特币源码研读之一比特币源码研读之二比特币源码研读之三比特币源码研读之四比特币源码研读之...

  • 比特币源码研读之密钥篇

    这是我的第五篇研读记录,抽空写了点欢迎拍砖。 首先讲一下私钥、公钥、地址的关系 私钥通过椭圆曲线相乘推出公钥,公钥...

  • 比特币源码研读之十一

    比特币源码研读系列已经发表了十篇了,通过这十篇源码研读系列让我对比特币源码及比特币运行原理有了进一步的理解,也让我...

  • 比特币源码研读之一

    比特币源码研读之一——区块链研习社 《比特币源码研读班》 一看文件夹结构 和 github编译依赖,分析的依赖库 ...

  • 比特币源码研读之一

    作者:区块链研习比特币源码研读班 菜菜子 一、源码下载 本文比特币源码下载地址为:https://github.c...

  • 比特币源码研读----密钥和地址

    1、基本概念 比特币的所有权是通过数字密钥、比特币地址和数字签名来确定的。数字密钥实际上并不存储在网络中,而是由用...

  • 比特币源码研读之三

    自从发表了两篇比特币源码研读总结系列之后,很多朋友都表示对编程和研读源码产生了兴趣,有些朋友提出想加入我们区块链研...

  • 比特币源码研读一:椭圆曲线在比特币密码中的加密原理

    参加比特币源码研读班后首次写作,看到前辈black写的有关密钥,地址写的很好了,就选了他没有写的椭圆曲线,斗胆写这...

  • 比特币源码研读(23)-地址,密钥(1)

    比特币地址的生成过程 今天我们先看如何从操作系统获得随机数 获得随机数的文件是:random.h,random.c...

  • 比特币源码研读之公钥篇

    这是我的第六篇研读记录,每天挤一点时间边学边写,欢迎大家拍砖。 公钥 1、公钥的生成 公钥通过私钥与椭圆曲线相乘而...

网友评论

    本文标题:比特币源码研读之密钥篇

    本文链接:https://www.haomeiwen.com/subject/ewyzxftx.html