其他分享
首页 > 其他分享> > 区块链中的密码学知识

区块链中的密码学知识

作者:互联网

原文为知乎,现转移到个人博客。 知乎原文 转发微信公众号文章 微信公众号原文

Table of Contents

  1. BitCoin是什么
  2. 密码学是什么
  3. BitCoin中的密码学知识
    1.  [哈希(Hash)](#org87067ef)
    2.  [公钥密码体制](#orgb205e36)
  4. 总结
  5. Reference

BitCoin是什么

BitCoin,又称比特币,是2009年中本聪提出了一种点对点的数字现金系统,是一种分布式、点对点的货币,允许在线的交易不用经过中心化机构(如银行,支付宝)的情况下,在网络合作支持下,直接由一个用户发往另一个用户,并且可以提供防篡改,可验证的能力。 Bitcoin是最早实现“加密货币”这一概念的系统,该设想最早由戴伟(Dai Wei1,音译)于1998年在cypherpunks函件用户组首次提出的:货币可以是任何东西或记录,只要它在一个国家或社会经济体系内被接受为商品服务的支付方式,或是债务偿还的方式。 比特币的设计核心思想是以密码学难题(cryptography puzzle)答案作为货币,其发行权独立于任何中央机构之外。

比特币使用了公开密钥系统2. 每一个钱币都包括了其拥有者的公开秘钥。当钱币从用户A支付给用户B时, A将B的公开秘钥添加到钱币中, 然后这个钱币又被A用私人密码匙来签名。B现在即拥有了这个钱币并且可以将来使用,而A就不可能再次使用这个钱币,因为以前的交易记录以被全体网络计算机记录。在每笔交易前,钱币的有效性都必须经过检验确认。

密码学是什么

密码学是一种使用先进的数学原理以特定的形式存储和传输数据的方法,以便只有它的目标用户能够读取和处理数据。密码学已经被人们用来在不被发现的情况下转发信息。随着互联网及信息技术的飞速发展,密码学被赋予了新的含义。密码哈希,电子签名等被广泛使用在防篡改,身份认证等场合。当前有三种广泛使用的加密形式:对称加密、非对称加密和哈希。

BitCoin中的密码学知识

在中本聪的Bitcoin: A Peer-to-Peer Electronic Cash System一文中我们可以看见如下一段话,从这段话中我们可以看出密码学在BitCoin中的应用:

We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership.——Bitcoin: A Peer-to-Peer Electronic Cash System[1]

下面就主要从哈希和 公钥密码体制两个方面介绍BitCoin中的密码学知识。

哈希(Hash)

哈希(有时称“摘要”,密码散列,Hashing)是文本或数据文件的经过压缩的一种"指纹"。 Hash函数是把任意长度的输入通过散列函数或者说是hash函数转化为固定长度的输出的一种算法。这个输入区间可以无穷大,但输出区间是固定的。比如输入可以是任意的,输出是一个3位数。 这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

BitCoin中的hash函数主要有SHA-256,RIPEME-160,hash的一个主要应用是Merkle树,其中算法前缀“SHA”和"RIPEMD"表示基础算法,数字后缀"256"和"160"表示输出的固定长度。

在比特币协议中,SHA256和RIPEMD160一起用于保护数字签名中使用的公钥。SHA256方法也用于比特币挖掘中的工作函数证明,并作为数字签名算法的一部分。

  1. SHA-256

    SHA就是安全哈希算法(Secure Hash Algorithm)的简写。SHA-256为文本生成几乎唯一的256位(32字节)签名。 另外,比特币挖矿(mining)的cryptograph puzzle也是通过计算满足一定条件的hash来完成的,例如计算的满足256bit位hash前缀满足60个0(由区块链中区块内部的nonce决定)的hash。

  2. RIPEME-160

    RIPEMD(RIPE Message Digest)是1992年(原始RIPEMD)和1996年(其他变体)开发的一系列密码哈希函数。 该系列有五个功能:RIPEMD,RIPEMD-128,RIPEMD-160,RIPEMD-256和RIPEMD-320,其中RIPEMD-160是最常见的,也是比特币中使用的Hash算法之一。

    之所以使用RIPEMD,是因为它产生了最短的哈希,用于生成比特币地址,这允许比特币地址更短。同时,其唯一性仍得到了充分保证。

  3. Merkle Tree

    Merkle树是一种哈希树,其中叶节点是根据数据块计算的加密哈希,而非叶节点是其直接子节点的哈希。根散列也称为数据的“摘要”。

    o 要验证一个记录,它需要一个数据“证明”,其中包含根路径上的节点。递归地重新计算新的根散列,并使用先前保存的摘要检查相等性。

    如下图:例如L4被修改,那么hash1-1,hash1,top hash 都会被重新计算,最终显示为Top hash的变化,只需要对比Top hash 就能够知道节点中的数据有没有被篡改。

    img

    Merkle 树将根存储在比特币区块中,验证者只用验证根的hash是否变化,就可以判断Merkle 树中的子节点是否被篡改,而不用验证全部的节点,极大的减少了验证的复杂度。

    img

公钥密码体制

公钥密码体制使用*不同的加密密钥与解密密钥*,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

公钥密码体制使用的密钥分为公钥和私钥,两种密钥成对使用。使用公钥加密和私钥解密;使用私钥加密和公钥解密。

现有最著名的公钥密码体制是*RSA* 体制,它基于数论中大数分解问题,由美国三位科学家 Rivest, Shamir 和 Adleman 于 1976 年提出并在 1978 年正式发表的。

公钥密码体制根据使用秘钥的不同,可以分为两类:发送者使用发送者的私钥处理数据,接受者使用发送者的公钥逆向处理,为签名;发送者使用接受者的公钥处理数据,接受者使用接受者的私钥处理数据,为加密。下面分别讨论这两种方式:

  1. 非对称加密

    非对称密码学利用两个密钥(公共密钥和私有密钥)来加密和解密特定数据。例如:我发消息给你,用你的公钥进行加密,而你用自己的私钥进行解密,你的公钥可以公开,但是你的私钥只有自己知道.这样每个人都可以给你发信息,但只有你自己能通过私钥解密查看。

    下图为正常的加密、解密流程:

    img

    两种常用的非对称加密算法:Rivest-Shamir-Adleman算法又称为RSA,椭圆曲线密码(ECC)。

  2. 数字签名

    比特币本身是不加密的,那么比特币不加密怎么安全呢?

    如果我要交易,把我的比特币给你,那么我在交易上,用我的私钥进行签名,大家都可以用我的公钥进行验证,这样大家都能知道确实是我进行的交易,证明币是你的,这就涉及到了数字签名。

    如下图所示:发送者用自己的private key 处理message 和 经过hash的message digest,然后通过信道发送个接受者,接受者通过发送者的public key逆向处理消息,得到message 和 message disgest,通过验证hash(message)是否与messagedigest相等,可以验证是否是发送者发来的消息。

    img

总结

随着互联网和公钥密码体制的发展,人们越来越关注安全和隐私,密码学在日常生活中处处可见,掌握必要的密码学知识至关重要。

bitcoin通过一系列密码算法的组合,实现了一个分布式、点对点、可信、可验证、不可篡改的加密数字货币,比特币种的密码学知识主要有哈希,公钥密码体制,数字签名。

Reference

[1] Wright, C. S. (2019). Bitcoin: A Peer-to-Peer Electronic Cash System. SSRN Electronic Journal, 1–9. https://doi.org/10.2139/ssrn.3440802

Footnotes

1 https://en.bitcoin.it/wiki/Wei_Dai

2 http://zh.wikipedia.org/wiki/公开密钥加密

欢迎关注我的微信公众号,扫描下方二维码,就可以找到我,我会持续为你分享 IT 技术和珠宝知识。

欢迎关注我的微信公众号,扫描下方二维码,就可以找到我,我会持续为你分享 IT 技术和珠宝知识

也可以关注我的个人博客

点我试试的个人博客

本文由博客一文多发平台 OpenWrite 发布!

标签:公钥,加密,比特,链中,哈希,hash,区块,密码学
来源: https://blog.csdn.net/wanglihongwm/article/details/117455932