数据加密技术
数据加密技术,根据加密密钥和解密密钥是否相同划分成两种。一种是对称密钥密码体制;一种是公钥密码体制。
对称密钥密码体制
对称密钥密码体制中,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