数据加密技术和数字签名技术小结

数据加密技术

数据加密技术,根据加密密钥和解密密钥是否相同划分成两种。一种是对称密钥密码体制;一种是公钥密码体制。

对称密钥密码体制

对称密钥密码体制中,A端的加密密钥和B端的解密密钥是相同的。此类常用加密算法有DES,IDEA,AES等。数据加密模型如下:

公钥密码体制

公钥密码体制,也称非对称密钥密码体制。公钥密码体制中,加密密钥和解密密钥是不相同的。RSA和DSA加密算法属于非对称的加密算法。公钥密码体制的图如下:

在接收者B端通过密钥对产生器生成一对密钥,即加密密钥PK和解密密钥SK。发送者A用的PK就是在接收者B那里产生的。

密钥对生成器生成的密钥对中,加密密钥PK,是向公众公开的,所以简称为公钥。而解密秘钥SK是需要保密的,所以简称为私钥。

目前最著名的公钥密码体制的加密算法是由美国三位科学家Rivest,Shamir和Adleman于1976-1978年提出的RSA加密算法,这个算法是基于数论中的大数分解问题的。

数字签名技术

数字签名简介

数字签名技术,也称数字鉴别技术。假设A和B之间进行通讯,数字签名就是让接收者B在收到数据的时候,可以断定数据是来自发送者A的。数字签名的实现图如下:

这里是D运算和E运算,如上面插图中不一样,因为意义不同。数字签名是非对称加密的相关的过程,这个只有鉴别作用,没有加密作用。只是用来鉴别数据是来自某个主体。网络上任何人都可以用公钥去解密这个数字签名。

如下是用数据的摘要信息来进行数据签名的机制图:

常用的数据签名认证算法

(1)DSA

DSA全称Digital Signature Algorithm,DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只能用于数字签名,所以它比RSA要快很多,其安全性与RSA相比差不多。

(2)ECDSA

具有加密作用的数字签名的图解

数据加密和数字签名的区别联系

以RSA算法来实现数据加密和数字签名来说明。

(1)RSA的加密解密机制原理

RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。详细如下:

所以,从算法描述中我们也可以看出,公钥用于对数据进行加密,私钥用于对数据进行解密。当然了,这个也可以很直观的理解,公钥就是公开的密钥,其公开了大家才能用它来加密数据。私钥是私有的密钥,谁有这个密钥才能够解密密文。否则大家都能看到私钥,就都能解密,那不就乱套了。

(2)RSA的签名认证机制原理

签名体制同样包含3个算法:KeyGen(密钥生成算法),Sign(签名算法),Verify(验证算法)。其中秘钥生成算法和RSA加密解密中的秘钥生成算法是一样的。

对于签名和认证的M,可以是原始的信息的报文摘要。在HTTPS中,CA对也是对证书的某些信息的报文摘要进行签名的。所以,在签名算法中,私钥用于对数据进行签名,公钥用于对签名进行验证。这也可以直观地进行理解,对一个文件签名,当然要用私钥,因为我们希望只有自己才能完成签字。验证过程当然希望所有人都能够执行,大家看到签名都能通过验证证明确实是我自己签的。

(3)RSA加密解密机制和签名认证机制的区别和联系

假设RSA加密解密系统中,将加密函数称为E,将解码函数称为D。在加密过程中,我们使用公钥PK和E函数,将报文加密,然后在对端使用私钥SK和D函数将密文解密,得到原始的报文。

而在签名认证的过程中,我们使用私钥SK和D函数进行报文的签名,然后在对端使用公钥PK和E函数进行认证。注意的是,这里的D和E和上面的D和E函数是一样的。

因为,在RSA加密系统中,以任意顺序应用D和E函数时,两者都会相互抵消。因此E(D(stuff))=stuff,就像D(E(stuff))=stuff一样。只是习惯上,E和D在加密过程中,称为加密函数和解码函数;而在签名认证过程中,称为签名函数和认证函数,其实是一样的。

学习资料来源于:
https://www.zhihu.com/question/25912483
https://juejin.im/post/5a67f3836fb9a01c9b661bd3