信息安全-密码学(二)

2024-08-27 885

第一篇文章,我们介绍了对称加密、非对称加密、散列函数、混合加密、消息认证码的相关知识,第二篇文章我们将对签名验签、数字证书等相关知识进行介绍。

一、签名验签

非对称加密除了可以运用在对数据进行加密解密外,另外可以运用在签名和验签中,达到防止信息在传输中被篡改,对发送方身份进行验证和防止发送方抵赖的目的,数字签名和验签的详细过程如下:

1、签名:发送方

(1)发送方通过哈希算法将明文转换成固定长度的哈希值;

(2)发送方使用自己的私钥对该哈希值进行加密,哈希值被私钥加密后就被称为数字签名;

(3)发送方将数字签名和明文一并发送给接收方。

2、验签:接收方(发送方的公钥已事先发送给接收方)

(1)接收方收到来自发送方传输过来的数字签名和明文信息;

(2)接收方使用发送方的公钥对数字签名进行解密,得到其中的哈希值(H1);

(3)接收方对明文采用和发送方相同的哈希算法得到新的哈希值(H2);

(4)接收方对比两个哈希值(H1和H2),如果两个哈希值相同,则表明传输的信息未被篡改,如果两个哈希值不相同,则表明传输信息已被篡改。

上述过程的示意图如图1所示,从前文可知,哈希算法可用于检测传输信息是否被篡改。此外,因为非对称加密中的私钥是和个人或组织所绑定的,并且用私钥进行加密的信息只能使用对应的公钥进行解密。在验签阶段,如果使用发送方的公钥能够成功解开数字签名,则可说明该数字签名一定是来自私钥的持有者,也即该数字签名的发送方,这样就达到了对发送方进行身份验证以及防止发送方抵赖发生过信息的目的。

图1签名验签示意图

二、加密解密+签名验签

加密解密和签名验签都只对信息传输过程中的保密性、完整性、真实性和不可抵赖性中的一部分属性进行保护,在实际的通信过程中,只有将两者相结合,才能使通信更加安全。

在完整的通信过程中,发送方和接收方各自都需要生成一对非对称密钥,并且公钥都已经发送给对方,此外还需要一个对称加密的密钥,具体通信过程如下:

1、发送方

(1)发送方对明文通过哈希算法得到消息摘要;

(2)发送方采用非对称加密算法,使用自己的私钥对消息摘要进行加密得到数字签名;

(3)发送方采用对称加密算法,使用对称加密密钥对明文和数字签名进行加密,得到加密信息;

(4)发送方采用非对称加密算法,使用接收方的公钥将对称加密的密钥进行加密,得到对称密钥的密文,即数字信封。

(5)发送方将加密信息和数字信封一并发送给接收方。

2、接收方

(1)接收方收到来自发送方传输过来的加密信息和数字信封;

(2)接收方采用非对称加密算法,使用自己的私钥对数字信封进行解密得到对称密钥;

(3)接收方使用对称加密算法,使用对称密钥对加密信息进行解密,得到明文和数字签名;

(4)接收方使用发送方的公钥解密数字签名得到消息摘要;

(5)接收方使用和发送方相同的哈希算法得到新的消息摘要;

(6)接收方对比两个消息摘要是否相同。

三、数字证书

上述的通信过程默认通信双方的公钥已被安全的发送给对方,但在实际情况中,公钥在传输的过程中会面临中间人攻击,存在公钥被窃取和被调包的问题。

调包公钥:接收方在将自己的公钥发送给发送方时,公钥被中间人窃取并替换成中间人自己的公钥。接收方的公钥被窃取和伪造后,中间人便可进一步窃取和伪造发送方的信息。

如果发送方和接收方不能线下见面,如何在网络上安全的交换密钥呢?之前的文章考虑的是传输的信息被篡改,现在考虑公钥被篡改。倘若接收方能够判别出所接收到的公钥具体是谁的,对身份进行确认,就可以有效防止中间人攻击,于是人们想到了可以将公钥和公钥所有人的信息绑定在一起,如图2所示。

图2 公钥和所有人信息绑定

但是该方式无法阻止中间人将自己的公钥和接收方的个人信息绑定在一起,仍然存在中间人攻击的问题,如图3所示。

图3 绑定中间人的公钥和发送方的信息

公钥和所有人的个人信息本身也是信息,要想阻止中间人将其公钥和接收方的个人信息绑定在一起,就需要发送方对收到的信息(公钥和对应所有人信息)的来源进行身份验证,确认身份是否可靠。

为解决上述问题,出现了发送方和接收方都信任的第三方,称为可信第三方,接收方将自己的公钥和个人信息一并递交给可信第三方,由第三方对接收方的身份进行确认,之后将接收方的公钥和接收方的个人信息绑定在一起,并用可信第三方自己的私钥对绑定后的信息进行数字签名。

将公钥和公钥所有人的信息绑定,并由可信第三方进行数字签名,就产生了数字证书,当发送方接收到数字证书时,就可以通过可信第三方的公钥来验证信息的真实性和完整性。数字证书的生成和具体使用过程为:

可信第三方行为:

(1)可信第三方对接收方身份进行确认,并将接收方的公钥和证书有效期等信息组成原始的证书内容,并将原始证书内容通过哈希算法得到哈希值(H1);

(2)可信第三方用自己的私钥对哈希值(H1)进行签名,得到数字签名(S1);

(3)可信第三方将该数字签名附在原始证书的内容后面,就成为了数字证书。

发送方行为:

(1)发送方收到接收方的数字证书(原始证书内容+S1);

(2)发送方用可信第三方的公钥解密数字签名(S1)得到哈希值(H1);

(3)发送方将原始证书内容通过相同的哈希算法得到新的哈希值(H2);

(4)发送方对比两个哈希值是否相同来验证数字证书中的公钥是否被篡改。

 

图4 发送方验证数字证书示意图

图4为发送方验证数字证书的示意图,数字证书具体包含的信息由X.509标准决定,主要信息有:

·X.509版本号

·公钥算法

·公钥

·公钥所有人信息

·证书颁发机构信息(可信第三方)

·证书有效期

·证书数字签名所用算法(可信第三方数字签名算法)

·其他信息

·颁发人数字签名