简单的安全信息系统
简单介绍
在不考虑握手的情况下进行通信,保证安全性,不可更改,防抵赖
A发送消息给B过程详解
A写了消息想发给B,A首先写出这个消息hello,world
,然后将这个消息进行hash
得到摘要,最后加上自己的证书,加上经过签名后的摘要。其形状如下所示
1 | 2 | 3 |
---|---|---|
消息 | A的证书 | 签名后的消息摘要 |
然后A生成一个随机对称密钥,将这个密钥对以上消息进行加密,然后将该密钥使用B的公钥进行加密附加到消息的前面,其形状如下所示
1 | 2 | 3 | 4 |
---|---|---|---|
B公钥加密后的对称密钥 | 对称密钥加密后的消息 | 对称密钥加密后的A的证书 | 对称密钥加密后的签名后的消息摘要 |
B解析A发过来的消息过程详解
B收到消息后,先使用私钥对1部分进行解密,得到对称密钥,然后使用对称密钥对2,3,4进行解密,
1 | 2 | 3 | 4 |
---|---|---|---|
对称密钥 | 消息 | A的证书 | 签名后的消息摘要 |
解密后通过证书来验证A是A,怎么通过证书验证A是A呢,要从这个证书是如何生成的说起,证书其实就两个东西,一个东西是A的个人信息,以明文信息显示,包括签发机构(xxCA)
,申请者(xx)
,域名(www.xx.com)
,有效时间(2021/9/1-2021/10/2)
公钥(MIICjDCCAfUCFFieOsypxxI3+4T5jR7XFpZ9lrfUAMIGE...)
等等还有一个东西,是使用签发机构的私钥进行签名摘要信息。B先用签发机构的公钥对签名摘要信息进行解密,得到的Hash值与直接计算明文信息hash
的摘要进行对比,如果一样,证明了两件事,第一,这个证书是经过xxCA认证的,是可信的,因为是通过xxCA公钥解密的。第二,证书里面的明文信息没有被修改,因为两个hash
值是一样的。然后再对查看证书的有效期和对应的域名是否准确,都正确后通过验证,证明了这个消息的确是A发送过来的。之后使用证书里面的公钥对4部分进行解密得到消息的Hash值与消息本身Hash
得到的摘要进行对比,如果一样,证明了这个消息的确是A发过来的,并且消息本身没有在中途被修改。