ssl通信过程
来源:互联网 发布:淘宝宝贝系列属性出错 编辑:程序博客网 时间:2024/04/28 09:17
普通的TCP通信无法保证数据的安全,它随时可能被第三方截获而泄漏通信双方之间的隐私,这显然是我们不希望看到的,尤其在跟用户名、密码、个人信息息息相关的通信过程(如网上银行交易、机密文件传输等等)尤其看重数据交互的隐秘性,所以我们常常用SSL协议来建立安全保密的通信,SSL协议能够保证交互双方的数据按密文方式传输,第三方在没有私钥的情况下几乎无法破解,从而到达保密的目的。究竟SSL是如何交互数据来确保安全的,很多人却不得而知,为了解答大家的疑惑,这里详细介绍一下SSL的交互过程。
1、建立TCP连接
由于SSL协议依赖于TCP连接实施,所以在SSL交互之前需要先建立TCP连接。客户端connect服务端,服务端acccept客户端,经历三次握手以后TCP连接建立。
2、客户端发送SSL请求
客户端(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,采用对称加密算法来通信了。
- SSL通信过程
- SSL通信过程分析
- ssl通信过程
- SSL通信基本过程
- SSL通信过程抓包分析
- SSL通信过程抓包分析
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
- SSL过程
- ace ssl 通信
- 安全网络通信SSL
- SSL通信理解
- [python] SSL通信
- SSL的TCP通信
- java SSL加密通信
- java ssl通信
- ssl/tls加密通信
- 掌握时区管理,提高工作效率
- 软文策划:定位、关键字选择、SEO优化、渠道
- Unix的起源
- Android 获取虚拟按键的高度
- 为什么手机短信长度限制70个中文、160个英文???
- ssl通信过程
- Win7 64位 mysql 5.7下载安装问题
- linux 环境中使用virsh 命令对虚拟机进行重命名
- Vulkan 1.0规范正式发布——开放开源跨平台API爆发
- 公司-->ajax获取数据
- 常见图片格式jpg、jpeg、png、gif等有什么区别
- Android-Application被回收引发空指针异常分析(消灭全局变量)
- JDK的命令行工具
- 下MFC中对象、句柄、ID之间的区别.