「币姐解读区块链06」私钥,公钥,地址是如何生成的?

上期回顾:密钥,私钥,公钥傻傻分不清楚?

 

导语

上一节,我们讲了私钥,公钥,密钥,签名地址这些基本概念及其之间的关系。

那么很多人会有一个疑问。在我使用钱包的时候,从来没有见过类似私钥和公钥的的东西,只见过地址。他们是怎么来的呢?

这一节就跟大家讲讲私钥,公钥,地址是如何生成的。

本文以比特币的技术为案例,请注意:比特币区块链

 

私钥是怎么来的?

原始的私钥格式是256位的二进制(2的256次方),大概长下面这样:

1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0

 

私钥本质上是数字,相当于从1 到2^256(2的256次方)之间选一个数字。

硬币正面为1,反面为0,抛硬币256次,记录下来全过程就相当于生成了一个私钥。但是大家的时间是宝贵的,肯定不能通过抛硬币来生成私钥。

 

私钥都是由钱包来生成的,而不是人设定的

由于私钥的原始格式非常长,直接由用户设定是非常麻烦的。所以这个工作由钱包来完成了。为了保证私钥的安全性,钱包会“非常随机”的来生成私钥。

所以大家在创建钱包的时候,是不需要设定私钥的,而是设定“转账密码”或者“开启APP的PIN码”之类的密码,他们并不是私钥!

 

币姐提示

目前很多钱包都是HD钱包(什么是HD钱包)只需要备份助记词即可,简化了创建新私钥和备份私钥的方式。

注币姐,下一节会详细讲解HD钱包。

 

公钥是怎么来的?

上一节( 币姐解读区块链05:密钥,私钥,公钥傻傻分不清楚? )我们已经讲了:

公钥:由私钥生成的。公钥的作用是跟签名配合用来证明“我就是私钥的主人。

 

公钥是需要公开出去的,所以公钥需要具备几个特性

  1. 公钥必须由私钥生成,这样才能证明“我就是私钥的主人”
  2. 公钥不能倒推得出私钥,不然相当于把私钥告诉别人

 

私钥通过椭圆曲线加密生成了公钥。

之所以用椭圆曲线,是因为他满足了上面提到的2个特性:

  1. 私钥可以通过椭圆曲线加密非常容易的创建公钥,他俩具有一一对应的关系。
  2. 通过公钥来求出私钥是非常困难的。

椭圆曲线加密是一个很复杂的概念,币姐就不详细讲解了,感兴趣的可以看看——什么是椭圆曲线加密

 

币姐说明

椭圆曲线加密有多安全呢?

RSA加密算法是生活中常用的加密手段,大家登陆网银,支付宝的时候就会用到。这种加密算法已经用了很多年,历史证明RSA是非常安全的(至少到目前为止)。

如果把两者进行比较的话:

假如破解RSA算法需要的能量只够烧开一瓢水,

那么破解椭圆曲线密码需要的能量够把整个地球上的水都烧开。

 

地址是怎么来的?

地址相当于银行卡,用来发送和接收数字资产。比特币地址是一个由数字和字母组成的字符串,可以随意公开出去的。大概长这样:

1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy

比特币地址可由公钥经过单向的加密哈希算法得到。

跟椭圆曲线算法类似,哈希算法也具有2个特性:

  1. 公钥可以很容易生成地址,且一一对应。
  2. 但是通过地址来求出公钥是非常困难的。

 

币姐说明

哈希算法并不是某一种具体的算法,而是一类算法的统称。就好像川菜和粤菜都是中餐一样。对于比特币来说,他采用了2种哈希算法 SHA256 和 RIPEMD160。

川菜(SHA256)和粤菜(RIPEMD160)都是中餐(哈希算法)

想了解哈希算法的更多说明,请查看——什么是哈希算法

 

FAQ环节

什么是椭圆曲线加密

什么是哈希算法

在知道某个比特币地址的情况下,是否有可能通过破解私钥来攻破该账户

 

总结

这节内容主要是讲解了私钥,公钥,地址是怎么来的:

  1. 私钥是非常重要的,但是由于其原始格式非常复杂,所以需要钱包来帮我们来生成,人工生成成本实在太高。
  2. 公钥是由私钥生成的,使用了椭圆曲线加密,非常安全。别人是无法通过公钥倒推出私钥的。
  3. 地址则是由公钥生成的,使用了哈希运算。通过地址倒推公钥也是不可行的。

 

下期预告:数字钱包的进化史,从非确定性钱包到HD钱包

目前最流行的就是HD钱包(分层确定性钱包)了。那么HD钱包到底好在哪里?他的运行原理是什么?下一期我们详细讲解。

 

文章目录: