区块链密码学基础

密码学发展历程

密码学按算法思想可分为:古典密码学、现代密码学、公钥密码学。

1949年以前,安全性基于加密算法的保密性,统称为古典密码学;
1949年,香农的信息论诞生为标志,密码学步入现代密码学阶段,基于复杂计算的密码学,其是一种对称加密算法;
1976年,Whitfield Diffie和Martin Hellman提出公钥密码机制,可以在不直接传递密钥的情况下,完成密文的解密,1978年,RSA公钥密码机制出现,开启一个新的里程碑,公钥密码是非对称加密算法。

各加密算法特点

1.古典密码学:其算法归根结底主要有两种,即:置换和替换;其安全性依赖于算法的保密性,整体安全性不高。

2.对称加密:加密算法和解密算法都是同一种模式,只用一把密钥保证加密数据的安全;甲必须把密钥告诉乙,否则乙无法解密,那么保存和传递密钥,成为最头痛的问题。

3.非对称加密:有一对密钥,即:公开密钥和私有密钥,用公钥对数据进行加密后,只有对应的私钥能解密,反之亦然,通信双方无须交换密钥,就可以建立保密通信。

4.哈希算法:输入x可以是任意长度的字符串,输出结果,即H(x)的长度是固定的。其可以具有免碰撞;隐匿性;不存在比穷举更好的方法,以使哈希结果H(x)落在特定的范围。

区块链密码学之哈希算法

哈希算法的性质

  (1)单向性。即给定一个输入数,容易计算出它的哈希值,但是已知一个哈希值根据同样的算法不能得到原输入数。

  (2)弱抗碰撞性。即给定一个输入数,要找到另一个得到给定数的哈希值,在使用同一种方法时,在计算上不可行。

  (3)强抗碰撞性。即对于任意两个不同的输入数,根据同样的算法计算出相同的哈希值,在计算上不可行。

常见的哈希算法包括MD5和SHA系列算法。

MD4,MD5系列算法输出都是128位,MD5比MD4更安全,但目前这两种算法都已经被破解,不推荐使用。

SHA系列算法包括SHA-1,SHA-3,SHA-224,SHA-256,SHA-384,SHA-512算法,输出长度为160位。SHA-1已经被破解,一般推荐使用SHA-256及以上算法,其中比特币使用的SHA-256算法。

区块链密码学之加解密算法

密码学的核心技术,主要分为对称加密和非对称加密算法

算法类型

特点

优势

缺陷

代表算法

对称加密

加解密的密钥相同

计算效率高,加密强度高

需共享传输密钥,易泄露

DES,3DES

AES,IDEA,RC5、RC6

非对称加密

加解密的密钥不同

无需共享传输密钥

计算效率低,仍存在中间人攻击可能

RSA,ELGamal,椭圆曲线算法系列,SM2国密算法

非对称加密分为公钥和私钥,主要基于大数质因子分解、离散对数、椭圆曲线等经典数学难题进行保护。

混合加密机制:结合对称加密和非对称加密的优点,如HTTPS协议。

区块链密码学之消息认证码和数字签名

消息认证码(HMAC基于hash的消息认证码):基于对称加密,可用于对消息完整性进行保护。

过程为对某个消息利用提前共享的对称秘钥和哈希算法进行加密处理,得到HMAC值。该HMAC值持有方可以证明自己拥有共享的对称秘钥,并且也可以利用HMAC确保消息内容未被篡改。一般用于证明身份的场景。消息认证码的缺点是需要共享密钥,若密钥泄露则不能正确证明身份,而采用非对称加密算法更为可靠,即数字签名。

数字摘要:对数字内容进行哈希运算,获取唯一的摘要值来指代原始完整的数字内容。

数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。

数字签名是非对称密钥加密技术数字摘要技术的应用(哈希算法加非对称加密算法形成数字签名)。

(1) 被发送文件用SHA编码加密产生数字摘要。

(2) 发送方用自己的私对摘要再加密,这就形成了数字签名。

(3) 将原文和加密的摘要同时传给对方。

(4) 对方用发送方的公共密钥对数字签名解密,同时对收到的文件用SHA编码加密产生又一摘要。

(5) 将解密后的摘要和收到的文件在接收方重新加密产生的摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。否则不然。

常用的签名算法有

  • RSA,基于大整数分解问题

  • DSA,基于离散对数问题

  • ECDSA,属于DSA的一个变种,基于椭圆曲线上的离散对数问题

其中RSA是实现数字签名最简单的公钥加密方法,比特币使用的ECDSA椭圆曲线加密算法。

除此之外,针对一些特定的安全需求,产生了一些特殊数字签名技术,如盲签名、环签名、群签名、多重签名等。

 数字证书:对于非对称加密和数字签名来说,很重要的一点就是公钥的分发,需要有统一的标准,否则有可能是伪造的数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。

CA机构:负责办法权威数字证书的中心机构。常用的证书规范为X509系列证书。

PKI体系(公钥基础设施):在非对称加密中,公钥可以通过证书机制来进行保护,但证书的生成、分发、撤销等过程并没有在X509规范中定义,而是遵循PKI体系来完成。

PKI组件:

(1)CA(Certification Authority):负责帧数的颁发和作废,接受来自RA的请求,是最核心的部分;

(2)RA(Registration Authority):对用户身份进行验证,检验数据合法性,负责登记,审核过了就发给CA;

(3)证书数据库:存放证书,多采用X.500系列标准格式。

区块链系统其他的常见密码学知识还有默克尔树、同态加密与函数加密,零知识证明和量子密码学等密码协议算法。

参考:

《区块链原理设计与应用》,杨保华、陈昌著。

猜你喜欢

转载自blog.csdn.net/yangwei256/article/details/85919817