单点登录(五):SSL相关知识

来源:互联网 发布:131458查询淘宝账号 编辑:程序博客网 时间:2024/05/01 04:33
一.SSL简介
二.SSL握手协议

一.SSL简介
对于SSL:(Secure Sockets Layer 安全套接层)。是为网络通信提供安全及数据完整性的一种安全协议。普通的TCP信无法保证数据的安全,它随时可能被第三方截获而泄漏通信双方之间的隐私。尤其在跟用户名,密码,个人信息息。所以我们常常用SSL协议来建立安全保密的通信,SSL协议能够保证交互双方的数据按密文方式传输,第三方在没有私钥的情况下几乎无法破解,从而到达保密的目的。
SSL协议可分为两层:
SSL记录协议:它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。说白了就是加密用的。
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

二.SSL握手协议
SSL握手一般来说有2个目的,第一,客户端和服务器端对保护数据的算法达成一致。第二,需要确立一组由那些算法所使用的加密密钥。
过程:
1.由于SSL协议依赖于TCP连接实施,所以在SSL交互之前需要先建立TCP连接。客户端connect服务端,服务端acccept客户端,经历三次握手以后TCP连接建立。
Ps:
TCP的三次握手协议:

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

Sequence number(顺序号码) Acknowledge number(确认号码)

第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

完成三次握手,主机A与主机B开始传送数据。

2.客户端(Client)向服务端(Server)发送自身使用的SSL版本(SSL一共有三个版本),加密算法的相关配置、随机数据以及其在在SSL协议中需要用到的信息。
3.服务端处理SSL请求
服务器(Server)反馈给客户端(Client)自己的SSL版本、加密算法的相关配置、随机数据以及用自己的私有密钥加密的SERVER-HELLO信息。服务端(Server)紧接着将自己的证书(包含公共密钥)传递过去。同时有个可选项目,即服务端(Server)可以要求客服端(Client)发送自己的证书。
4.客户端验证服务端身份
客服端(Client)用服务端(Server)传递过来证书验证服务端(Server)的身份,如果身份未验证通过则结束本次通信。证书验证通过后利用服务端(Server)的公共密钥尝试解开被其用私有密钥加密过的SERVER-HELLO信息,如果解开失败,说明该SERVER-HELLO必然是假的,故结束本次通信。
5.客户端发送公共密钥加密过的随机数据
客户端端(Client)生成随机数据(sharedsecret),并且把这个随机数据用服务端(Server)发送过来的的公共密钥加密,此次加密过程产生本次握手中的premastersecret(这个步骤是有可能有服务端的参与的,具体情况由他们使用的加密算法决定),然后将它(premastersecret)送回给服务端(Server)。如果服务端(Server)要求需要验证客户端(Client),那么客服端(Client)也需要自己把自己的证书(包含公共密钥)传递过去,同时送一些自己签过名(私有密钥加密)的数据过去。
6.服务端用私有密钥解密加密后的随机数据并协商暗号
Server验证完client的身份之后,然后用自己的私有密钥解密得到premastersecret然后双方利用这个premastersecret来共同协商,得到mastersecret(可理解为premastersecret为双方协商的暗号,然后使用这个暗号再协商一个mastersecret用来产生真正的会话密钥用来传输数据)以此来保证数据的决对安全。
7.服务端跟客户端利用暗号生成加密算法跟密钥key
双方用mastersecret一起产生真正的sessionkey,这将是一个对称加密的key。这个key还可以用来验证数据完整性。双方再交换结束信息。握手结束。
接下来双方就可以用协商好的算法和密钥key,采用对称加密算法来通信了。


比如说:
张三:我是张三,你是李四吗?我想和你秘密对话,我只听得懂英文,法文,日文和中文,顺便给你一个我的幸运数字。
李四:我们用中文好了,这是我的证件和一份公开的声明,当然还有我的幸运数字。
张三:检查后发现,证书没有问题,看来我联系的人确实是李四。张三想到了一串很奇怪,别人很难猜到的一句话,然后用李四声明里面的方法,进行了转换,然后把这句话给了李四
李四:听到了张三这句话,用自己的内部方法拿到了原始的那句话,通过这句话和双方的2个幸运数字,转化成了一个最终的接头暗语。并将这个暗号发给张三
张三:也根据那句话和双方的幸运数字,计算了同样的最终的接头暗语,同时和李四发过来的进行比对,确认是否相同。
张三:确认完毕,张三开始用暗号加上要说的话,和李四开始了秘密通话
李四:使用同样的方法,开始通话
0 0
原创粉丝点击