一般的数字证书包含以下几个部分:持有者姓名(Common Name),发证机关(Issuer),有效日期(Validity),证书持有人的公钥(Subject’s Public Key Info),扩展信息 (Extension),用发证机关对该证书的数字签名(Certificate Signature)。
在本例中,我们将用户的登陆名、邮箱、公司、部门等信息存入数字证书中,每次用户试图登陆时(能够进入系统,说明用户肯定拥有证书),我们读取用户的数字证书上面的信息,并匹配用户试图登陆的信息。保证用户A无法使用用户B的账号进行登陆,从而保证即使用户B的密码泄露,他的账号安全仍然能够得到保障。
2.3 HTTPS通信协议
作为PKI公钥基础设施中的一个重要环节,通信平台起着承上启下的作用,一方面它使用数字证书来进行通信,利用证书中的公钥和私钥进行加密解密报文;另外一个方面,它为系统提供一个安全的通信方式。
早在互联网出现之时,HTTP就出现了,它是一个属于应用层的数据传输协议,因为它简单、快速的传输方式,被广泛采用与分布式信息系统。它产生于1990年,随着这几十年互联网的不断发展,HTTP也得到很大发展和不断地完善。但是因为最开始,人们没有过多的考虑互联网的安全问题,所以HTTP协议有很多安全问题,例如:传送信息被窃取、监听、篡改等。这使得互联网中的信息通信变得非常不安全。这个属于Internet早起的架构问题,为了构建一个安全的传输网络,SSL协议应运而生。而HTTPS就是结合HTTP协议和SSL协议的一种通信协议。
它结合了HTTP简单、快速等优势,又包含了SSL身份认证、通信加密等优点,成为以安全为目标的HTTP通道。最简单的方法来保证通信安全是用非对称加密,我们前面讲过数字证书的认证,如果双方都认证了对方的数字证书,那么每次传输信息的时候都用对方的公钥加密,这样就只有对方拥有私钥才能解密,从而保证了通信数据的安全性。
SSL通过“握手协议”和“传输协议”来解决上述问题,握手协议是基于非对称加密的,而传输协议是基于对称加密的。根据不同的应用,SSL对证书的要求也是不一样的,可以是单方认证(比如HTTP, FTP),也可以是双方认证(比如网上银行)。通常情况下,服务器端的证书是一定要具备的,客户端的证书不是必须的。
握手协议可以看成是客户端和服务器协商的一个过程,结果就是一个对称密钥,然后就进入了传输协议的部分。在通信双方协商出一个对称密钥以后,他们用这个密钥来加密传输的数据。同时为每个消息生成时间戳,用此密钥为消息和相应的时间戳生成消息认证码(MAC)。也就是说,每次发送的内容包括 Encrypt(message) + MAC(message + timestamp)。这么做有几个好处:
1. 防止消息的篡改
所谓消息篡改就是有第三者插在通信双方之间,篡改往来的消息。由于消息是加密的,第三者不能获得消息的内容,但是他可以闭着眼睛瞎改。如果没有MAC的话,接受者就无法判断此消息是否被篡改过。文献综述
2. 防止消息重放
消息的重放是只第三者记录下通信双方的每一次发送的消息,虽然他不能获得消息的内容。但是它可以通过重新发送客户端或者服务端的信息来把自己装成是客户端或者服务端。如果在MAC里面加上了时间戳,消息接收方验证时间戳就可以阻止消息的重放攻击。SSL的基本思想是用非对称加密来建立链接(握手阶段),用对称加密来传输数据(传输阶段)。这样既保证了密钥分发的安全,也保证了通信的效率。