美文网首页
比特币中的密码学详解

比特币中的密码学详解

作者: 牧码人爱跑马 | 来源:发表于2018-08-08 23:21 被阅读0次
    image.png

    上图描述了密码学的全部分类,以及其对应解决的信息安全分类。

    比特币中涉及的密码学知识有:

    • SHA-256(哈希函数)
    • RIPEMD-160(哈希函数)
    • Base58 Encode
    • Base58Check Encode
    • Elliptic Curve

    1. 私钥、公钥、钱包地址

    私钥是一个256bits的二进制随机数。
    私钥通过椭圆曲线乘法这个单向加密函数产生一个公钥;公钥再通过SHA256和RIPEMD160进行double hash产生比特币钱包地址。
    私钥、公钥、钱包地址之间的关系如下图所示:


    私钥、公钥、钱包地址

    公钥产生钱包地址:
    分为两步。


    1.公钥哈希
    2.公钥哈希编码为钱包地址

    关于SHA256可以参考:
    https://blog.csdn.net/u011583927/article/details/81432863
    SHA256简单概括,包括三个部分:

    1. 常量的初始化

    SHA256算法中用到了8个哈希初值以及64个哈希常量
    这些初值是对自然数中前8个质数(2,3,5,7,11,13,17,19)的平方根的小数部分取前32bit而来

    1. 信息预处理

    SHA256算法中的预处理就是在想要Hash的消息后面补充需要的信息,使整个消息满足指定的结构。

    信息的预处理分为两个步骤:附加填充比特和附加长度

    1. 使用到的逻辑运算

    SHA256散列函数中涉及的操作全部是逻辑的位运算

    2. 非对称加密

    在比特币系统中,我们使用公开密钥加密(非对称加密)创建一个密钥对来控制比特币的获取。这个密钥对包含了一个私钥和一个(由私钥导出的唯一)公钥。公钥被用来接收款项,私钥被用来签署一笔交易来花费比特币。

    2.1 椭圆曲线算法

    https://blog.csdn.net/u011583927/article/details/81432863

    2.2 RSA算法

    https://blog.csdn.net/u011583927/article/details/81432863

    2.3 数字签名

    比特币系统中,一笔交易归属以及真伪的验证使用了数字签名技术。

    数字签名指的是对一段信息制作签名表示对其的认可,这个认可只对该信息有效,并且第三方无法根据该签名构造你对其他信息的签名。数字签名方案包括:
    生成公钥私钥对,私钥用于签名,必须安全保存;公钥可以公开,用于他人验证签名有效性

    把信息和私钥作为输入,输出即为签名

    使用公钥,信息和签名作为输入,进行验证

    在实践中,我们往往通过对哈希值进行签名,这样可以实现对任意长度信息的签名。

    详细过程可以阅读What is a Digital Signature?

    以及非对称加密概述中的数字签名部分

    2.4 数字证书

    数字证书是非对称加密的又一个重要应用,据我所知在比特币系统中并没有直接应用。但也确实是个重要的概念,作为链圈币圈的人,如果感兴趣不妨了解下什么是数字证书?

    推荐看这篇文章数字证书原理,讲的很清晰

    3. Base58编码

    Base58编码在比特币的密钥和地址的编码中被广泛使用,用来增强密钥或地址的可读性以及防止传输或转录过程中发生错误。


    image.png

    3.1 Base58 Encode

    Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。

    Base58是在base64编码的基础上得到的,去掉了容易混淆的字母(不使用数字”0”,字母大写”O”,字母大写”I”,和字母小写”l”),以及影响双击选择字符串的字母(”+”和”/”符号)。

    我们首先要需要了解什么是Base64编码

    wiki : base64

    Base64笔记(阮一峰的网络日志)

    然后再来学习base58编码

    wiki : base58

    learn me a bitcoin : Base58

    3.2 Base58Check Encode

    而 Base58Check 编码其实就是在Base58编码的基础上,添加了校验的过程。流程并不复杂,如下图所示:

    image.png

    其实上图已经将 Base58Check 编码的过程描述清楚了,更多的细节请参考:

    bitcoinwiki : Base58Check encoding

    相关文章

      网友评论

          本文标题:比特币中的密码学详解

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