浅谈区块链中用到的几种加密技术

国网甘肃信通公司创新研发团队
王军
通常我们把密码学分为古典加密和现代加密。古典加密常见的是字母表移位,在加密传输中,其特点是强调方法不可泄露,一旦方法遭遇泄露,则原始加密信息可被获取与篡改;现代加密是伴随着计算机的发展出现的,其特点是强调秘钥的不可泄露,但加密方法可以公开。现代加密方法主要分为三类:对称加密、非对称加密和单向散列加密。

比特币的火爆,让区块链技术得到不断地关注、应用和推广。区块链的关键技术有:P2P网络协议、共识机制、密码学技术、账户和区块的链式存储技术等。其中,密码学与共识机制最为核心。今天我们来聊一聊密码学在区块链中的应用。

通常我们把密码学分为古典加密和现代加密。古典加密常见的是字母表移位,在加密传输中,其特点是强调方法不可泄露,一旦方法遭遇泄露,则原始加密信息可被获取与篡改;现代加密是伴随着计算机的发展出现的,其特点是强调秘钥的不可泄露,但加密方法可以公开。现代加密方法主要分为三类:对称加密、非对称加密和单向散列加密。

对称加密

对称加密指的是加密和解密使用同一秘钥(即秘钥A和B相同),即私钥。常见的对称加密算法有:DES,AES,3DES等。

非对称加密

非对称加密指的是加密和解密使用不同的秘钥(秘钥A和B是不一样),一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。常见的非对称加密算法有:RSA,ECC等。

单向散列加密

单向散列加密即不可逆加密算法,又称为哈希(Hash)算法,其密钥是由加密散列函数生成的。单向散列函数一般用于消息摘要的产生、密钥加密等。常见的单向加密算法有:MD5、SHA、CRC-32等。

区块链用到的加密算法

非对称加密算法

区块链中有一个很关键的点就是交易内容和交易双方身份的认证,也就是大家常说的交易双方如何安全的进行转账交易?这里就不得不提到非对称加密。非对称加密的私钥和公钥功能可以概括为16个字:公钥加密-私钥解密、私钥签名和公钥确认。其中公钥加密-私钥解密可以实现交易双方对交易内容的确认;私钥签名和公钥确认可以实现对交易双方身份的确认(也称为数字签名)。

哈希算法

哈希算法是区块链中应用最多的一种算法,它在交易信息和区块的标识、确认、防篡改等方面都有重要的应用。Hash算法有4大基本特性:1.输入可以是任意长度的字符串序列,但输出必须为固定长度字符串序列;2.在尽可能短的时间段内(毫秒级,ms)完成加密;3.对于不同的输入,输出序列也是不同的。(实际应用中要求碰撞几率极其微小,同时输入容纳的域也要非常大);4.不可逆,在哈希函数y=Hash(x)中,通过输入x,可以计算输出y,但是通过y几乎反推不到x(如果想要从y逆推x,唯一的方法就是暴力枚举,在现有的算力下算上几百年或者更多)。

在区块链中,哈希算法主要就是把交易数据生成交易摘要(标识),同时哈希算法也对区块数据生成区块摘要(标识)。当前区块里面包含上一个区块的哈希值,后面一个区块又包含当前区块的哈希值,区块通过哈希指针相连,形成一个哈希指针链表,如下图:

-PreHash:记录前一个区块的hash地址,也称为hash。

-Timestamp:对当前区块加盖时间节点,表明区块是在什么时间生成的。

-Hash:记录前当前区块的hash值,当前区块的标识符。

-Merkle根:记录当前区块内所有交易信息的数据摘要hash值。

-Nonce:随机数,碰撞找到满足特定条件的hash值。

Merkle tree,默克尔树,哈希算法的另一个重要应用。二叉树依靠哈希指针建立。树的顶端叫做默克尔根(Merkle Root),Merkle Root也是一个hash值,它是怎么计算出来的呢?区块链中对每一笔交易做一个hash计算,然后把每2个交易的hash合并再做hash计算,例如交易A的hash值是h(A),交易B的hash值是h(B),对这2个交易合并Hash后就是h(hA&hb),依次不断往上合并计算,最后就得到Merkle Root了。

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论