首页 公告列表 1. 钱包背后的密码学原理

1. 钱包背后的密码学原理

阅读数
0
阅读数
2019-12-04 16:17:00
文章来源:

数字钱包的生成可以简单的分解为三个步骤:

  1. 创建随机私钥(64位16进制字符/256比特/32字节);
  2. 从私钥推导出公钥(128位16进制字符/512比特/64字节);
  3. 从公钥中导出地址(40位16进制字符/160比特/20字节)。

简单的步骤背后已经囊括了密码学中大多数的技术:随机数生成器、非对称加密、单向散列函数等。

(1)随机数

随机数是专门的随机试验的结果。在钱包中随机数用于生成私钥,因其相关安全性的重要性,所以必须保证随机数具备以下三种特性:

  • 随机性:不存在统计学偏差,完全杂乱的数列;
  • 不可预测性:不能从过去数列推测下一个出现的数;
  • 不可重现性:除非将数列保存下来,否则不能重现相同的数列。

也就是真随机数。当然,实际上只要给定边界条件,真随机数并不存在。但目前大多数的看法是密钥存在一定的循环周期,只要该周期足够长,也会有足够好的安全性和保密性。

(2)非对称加密

非对称加密算法于1976年提出,用于在不安全的媒体上解决信息公开传送和密钥管理的问题。它将一般的密钥分为加密密钥和解密密钥,也就是我们常说的公钥和私钥。公钥私钥一一对应,由公钥加密的密文,必须使用与公钥配对的私钥才可以解密。如下图所示,甲乙之间使用非对称加密的方式完成了重要信息的安全传输。

1. 钱包背后的密码学原理

  1. 乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。
  2. 得到该公钥的甲方使用该密钥对机密信息进行加密后再发送给乙方。
  3. 乙方再用自己保存的另一把专用密钥(私钥)对加密后的信息进行解密。乙方只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。

在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法破解密文,因为只有乙的私钥才能解密密文;同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。

(3)单向散列函数

单向散列函数又称为单向Hash函数、杂凑函数。它有一个输入和一个输出,输入称为消息,输出称为散列值(也称为消息摘要)。单向散列函数可以把任意长度的输入串变化成固定长的输出串,也就是可以根据消息的内容计算出散列值,而散列值就可以用来检查消息的完整性。由于它的单向性,其输出不依赖于输入。已知一个散列值,要找到预映射的值,使它的散列值等于已知的散列值在计算上是不可行的。单向散列函数的安全性使它主要用于完整性效验和提高数字签字的有效性。