【技术干货】SSL加密过程简介
  

高俊洪_广州办_技术支持 15664

{{ttag.title}}
【技术干货】SSL加密过程简介

      SSL加密包括两个部分,一个是建立加密隧道,一个是加密数据传输。其中,建立加密隧道使用非对称加密,而数据传输则是使用对称加密方式。

建立加密隧道过程,具体见下图

单向认证:


(1) SSL 客户端通过 Client Hello 消息将它支持的 SSL 版本、加密算法、密钥交换算法、MAC算法等信息发送给 SSL服务器。

(2) SSL 服务器确定本次通信采用的 SSL 版本和加密套件,并通过 Server Hello消息通知给 SSL 客户端。如果 SSL 服务器允许 SSL 客户端在以后的通信中重用本次会话,则 SSL 服务器会为本次会话分配会话 ID,并通过 Server Hello消息发送给 SSL客户端。

(3) SSL 服务器将携带自己公钥信息的数字证书通过Certificate 消息发送给 SSL客户端。

(4) SSL 服务器发送 Server Hello Done 消息,通知 SSL 客户端版本和加密套件协商结束,开始进行密钥交换。

(5) SSL 客户端验证 SSL 服务器的证书合法后,利用证书中的公钥加密 SSL 客户端随机生成的 premaster secret,并通过 Client Key Exchange消息发送给SSL服务器。

(6) SSL客户端发送 Change Cipher Spec消息,通知 SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和 MAC计算。

(7) SSL 客户端计算已交互的握手消息(除 ChangeCipher Spec 消息外所有已交互的消息)的 Hash值,利用协商好的密钥和加密套件处理 Hash值(计算并添加 MAC 值、加密等),并通过 Finished 消息发送给 SSL 服务器。SSL服务器利用同样的方法计算已交互的握手消息的 Hash 值,并与 Finished 消息的解密结果比较,如果二者相同,且 MAC值验证成功,则证明密钥和加密套件协商成功。

(8)  同样地,SSL服务器发送Change Cipher Spec消息,通知 SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和 MAC计算。

(9) SSL 服务器计算已交互的握手消息的 Hash 值,利用协商好的密钥和加密套件处理 Hash 值(计算并添加 MAC 值、加密等),并通过 Finished 消息发送给 SSL 客户端。SSL 客户端利用同样的方法计算已交互的握手消息的Hash 值,并与 Finished 消息的解密结果比较,如果二者相同,且 MAC值验证成功,则证明密钥和加密套件协商成功。 SSL客户端接收到SSL服务器发送的Finished消息后,如果解密成功,则可以判断SSL服务器是数字证书的拥有者,即SSL服务器身份验证成功,因为只有拥有私钥的SSL服务器才能从Client Key Exchange消息中解密得到premaster secret,从而间接地实现了SSL客户端对SSL服务器的身份验证。

双向认证:


SSL客户端的身份验证是可选的,由SSL服务器决定是否验证SSL客户端的身份。如图中蓝色部分标识的内容所示,如果SSL服务器验证SSL客户端身份,则SSL服务器和SSL客户端除了交互“只验证服务器的SSL握手过程”中的消息协商密钥和加密套件外,还需要进行以下操作:

(1) SSL服务器发送 Certificate Request消息,请求 SSL客户端将其证书发送给SSL服务器。

(2) SSL 客户端通过 Certificate 消息将携带自己公钥的证书发送给 SSL 服务器。SSL服务器验证该证书的合法性。

(3) SSL 客户端计算已交互的握手消息、主密钥的 Hash 值,利用自己的私钥对其进行加密,并通过 Certificate Verify消息发送给 SSL服务器。

(4) SSL 服务器计算已交互的握手消息、主密钥的 Hash 值,利用 SSL 客户端证书中的公钥解密 Certificate Verify消息,并将解密结果与计算出的 Hash值比较。如果二者相同,则 SSL客户端身份验证成功。

我们的SSL是双向认证(证书认证),不过我们允许SSL重协商。

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

布拉格 发表于 2015-12-22 11:21
  
赞一个,多发这种技术贴,有助于售前跟客户交流。
新手959263 发表于 2017-5-11 10:18
  
特别想知道怎么在 linux(centos) 下使用贵公司的 sslvpn 产品,我们很多开发人员使用的都是 linux 机器根本不能用,只能用虚拟机登陆特别费事。。。。。。。。。
基业傲腾_饶林瑞 发表于 2017-5-22 16:56
  
赞一个,收藏。
Tassel 发表于 2017-5-23 13:32
  
默默收藏
tj_zero 发表于 2017-5-25 08:41
  
周晓宁_北京办 发表于 2017-5-25 09:04
  
不错,很强
夏虫语冰 发表于 2017-5-25 10:46
  
默默收藏
伟健 发表于 2017-5-26 11:11
  
正在准备考VPN的初级认证,学习
发表新帖
热门标签
全部标签>
技术盲盒
每日一问
安全效果
干货满满
西北区每日一问
技术笔记
新版本体验
【 社区to talk】
功能体验
技术咨询
标准化排查
产品连连看
2023技术争霸赛专题
GIF动图学习
信服课堂视频
每周精选
自助服务平台操作指引
秒懂零信任
技术晨报
技术圆桌
通用技术
答题自测
安装部署配置
原创分享
玩转零信任
场景专题
升级&主动服务
社区新周刊
POC测试案例
畅聊IT
专家问答
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
故障笔记
排障那些事
高手请过招
高频问题集锦
全能先锋系列
云化安全能力

本版版主

3
0
3

发帖

粉丝

关注

27
77
84

发帖

粉丝

关注

本版达人

新手24268...

本周建议达人

阿凯

本周分享达人

新手39341...

本周提问达人