SSL 握手协议详解

RSA作为身份认证,ECDHE来交换加密密钥,AES/DES等作为加密。

如果RSA来加解密,那么身份认证后,直接用认证后的RSA公钥解密。不需要再额外交换加密密钥了。

相关报文:

报文类型

参数

hello_request

client_hello

版本、随机数、会话ID、密文族、压缩方法

server_hello

版本、随机数、会话ID、密文族、压缩方法

certificate

x.509V3证书链

server_key_exchange

参数、签名

certificate_request

类型、授权

server_done

certificate_verify

签名

client_key_exchange

参数、签名

finished

Hash值

A. 安全能力交换

建立的安全属性包括:协议版本、会话ID、密文族、压缩方法,同时生成并交换用于防止重放攻击的随机数。密文族参数包括密钥交换方法(Deffie-Hellman密钥交换算法、基于RSA的密钥交换和另一种实现在Fortezza chip上的密钥交换)、加密算法(AES,3DES、RC4、RC2、3DES等)、MAC算法(MD5或SHA-1)、加密类型(流或分组)等内容。

重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(FreshnessAttacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。说白了就是黑客C在通信线路上进行信号采集,比如A发往B的。然后,黑客C将监听到的信息,再次发往B,这时B以为是A发过来的,所以就会误认为是A在和其进行通信。如果这些通信过程中,涉及到了账户信息,隐私,交易,黑客就会得到得到这些内容。

防止重放攻击:随机数是为了防止重放攻击。要求通信双方必须事先协商一个初始序列号,并协商递增方法,一般随机数。通信双方通过消息中的序列号来判断消息的新鲜性。并且通过以下带时间戳的提问与应答的方式。

(1.)  客户机向服务器发送client_hello报文,带随机数。SSL 客户端通过 Client Hello 消息将它支持的 SSL 版本、加密算法、密钥交换算法、MAC算法等信息发送给 SSL服务器。

(2.)  服务器向客户机回应server_hello报文带随机数。SSL 服务器发送服务端支持的 SSL 版本和加密套件,并通过 Server Hello消息通知给 SSL 客户端。

client:我想和你说悄悄话,我会的密钥交换算法有(ECDH,RSA等),加密算法有(AES,3DES、RC4、RC2、3DES等),摘要算法/MAC有(SHA,MD5)等。

Server:好的啊。我会的是这些。

Client hello 的内容

Server hello

B. 身份认证过程

(3.)在hello报文之后,如果服务器需要被认证,服务器通过SendCertificate将发送其证书

(4.)客户端需要检查以下内容来完成对服务器的认证来得到服务器域名和公钥等:

时间是否在证书的合法期限内;

签发证书的机关是否客户端信任的;

签发证书的公钥是否符合签发者的数字签名;

证书中的服务器域名是否符合服务器自己真正的域名。

(5.)服务器要求客户端发送客户端自己的证书,Certificate Request。客户端发送自己的证书。ResponseCertificate.

(6.)收到后,服务器验证客户的证书来得到客户端的域名和公钥等,如果没有通过则结束。如第4步

Server:这是我的身份证书(里面有我的名字和公钥),你检查下啊(certificate )。暂时不需要重新请求客户证书,不过我也要确认是是否你(一般不确认)。

Client:这是我的签名,证书等,你检查下。

B.  (加密算法确定)和密钥交换

如果加密算法采用RSA,那么不需要交换密钥了。如果是其他的,如AES,3DES等必须交换密钥。这个时候密钥交换一般是ECDHE等。以ECDHE为例子。

这个阶段是否还需要交换加密算法,我不确定。或许在第一阶段就确定了加密算法。假设加密算法是AES.

(7.)客户端生成一个随机数来生成PMS(Pre-master secret), 譬如ECDHE的A=a*G。并且用(8.) 服务端的RSA公钥加密传给服务端,服务端也生成一个随机数b,于是主密钥b*a*G。

(9.)服务端生成一个b来生成PMS(Pre-master secret) 譬如ECDHE的B=b*G。并且用客户端的RSA公钥加密传给客户端.

(10.)客户端收到B后,用自己的随机数a*B = a*b*G 得到主密钥。

Client:我们的暗号规则确定

Server:定为江湖规则1吧

Client:用这个(生成的随机数)去找到暗号的密码本吧

Server:生成随机数,发给客户端去找到暗号密码本

各自认证通过。

C.       握手结束,开始数据通信

Client:我给你发暗号了

Server:我给你会暗号了。

转:SSL 握手协议详解的更多相关文章

  1. SSL 握手协议详解

    这里重点介绍一下服务端的验证和密钥交换.这个阶段的前面的(a)证书 和(b)服务器密钥交换是基于密钥交换方法的.而在SSL中密钥交换算法有6种:无效(没有密钥交换).RSA.匿名Diffie-Hell ...

  2. SSL/TLS协议详解(下)——TLS握手协议

    本文转载自SSL/TLS协议详解(下)--TLS握手协议 导语 在博客系列的第2部分中,对证书颁发机构进行了深入的讨论.在这篇文章中,将会探索整个SSL/TLS握手过程,在此之前,先简述下最后这块内容 ...

  3. SSL握手通信详解及linux下c/c++ SSL Socket代码举例

    SSL握手通信详解及linux下c/c++ SSL Socket代码举例 摘自:http://www.169it.com/article/3215130236.html   分享到:8     发布时 ...

  4. SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码)

    SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码) 摘自: https://blog.csdn.net/sjin_1314/article/det ...

  5. SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法

    本文转载自SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法 导语 作为一名安全爱好者,我一向很喜欢SSL(目前是TLS)的运作原理.理解这个复杂协议的基本原理花了我好几天的时间,但只要 ...

  6. SSL/TLS协议详解(中)——证书颁发机构

    本文转载自SSL/TLS协议详解(中)--证书颁发机构 导语 上一篇中,我们讨论了关于Diffie Hellman算法的SSL/TLS密钥交换.我们最终认为需要第三方来验证服务器的真实性,并提出了证书 ...

  7. SSL/TLS 协议详解

    SSL(Secure Sockets Layer,安全套接层),及其继任者 TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议.TLS ...

  8. SSL及GMVPN握手协议详解

    之前写过一篇文章搞懂密码学基础及SSL/TLS协议,主要介绍了加密学的基础,并从整体上对SSL协议做了介绍.由于篇幅原因,SSL握手的详细流程没有深入介绍.本文将拆解握手流程,在消息级别对握手进行详细 ...

  9. SSL/TLS 握手过程详解

    在现代社会,互联网已经渗透到人们日常生活的方方面面,娱乐.经济.社会关系等都离不开互联网的帮助.在这个背景下,互联网安全就显得十分重要,没有提供足够的安全保障,人们是不会如此依赖它的.幸运的是,在大牛 ...

随机推荐

  1. Charles破解安装及基本使用

    一.Charles简介 1.Charles是一款代理服务器,通过成为电脑或者浏览器的代理,而后截取请求和请求结果达到抓包目的. 2.Charles是用Java写的,能够在Windows,Mac,Lin ...

  2. 安全路径——最短路径树+dsu缩边

    题目描述 思路 首先想到$dijkstra$跑完之后$build$一棵最短路径树.要找到每个节点i到根的满足要求的最短路,考虑把一些非树边加进去. 对于非树边$(u,v)$,因为节点i上方的边被占领, ...

  3. Apache服务部署静态网站

    Web网络服务也叫WWW(World Wide Web),一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务. 目前提供WEB网络服务的程序有Apache.Nginx或IIS等等,Web网站服 ...

  4. css3软键盘不盖住输入框的方法

    css3软键盘不盖住输入框的方法 弹出软键盘的时候 最外面的容器高度就发生了变化 要减去软键盘高度了<pre>var bodyheight bodyheight = $('body').h ...

  5. 读《MySQL必知必会》我学到了什么?

    前言 最近在写项目的时候发现自己的SQL基本功有些薄弱,遂上知乎查询MYSQL关键字,期望得到某些高赞答案的指点,于是乎发现了 https://www.zhihu.com/question/34840 ...

  6. 《计算机网络 自顶向下方法》 第6章 链路层和局域网 Part2

    待补充完善 Web 页面的请求历程 应用层     报文.主机 运输层     报文段. 网络层     数据报.路由器.IP 地址 链路层     以太网帧.交换机.MAC 地址 步骤 1)到 4) ...

  7. 网站搭建 - Linux虚拟系统 - 时间设置 - root密码修改 - 建站

    先试一下,如果不成的话,就不发表了. 下载织梦: 额,这个先还是不要下了. Linux是Apache + MySQL + PHP的套路,先下载吧,不摆图了,直接摆命令,我的是虚拟机,可能没有那么顺利. ...

  8. java property 配置文件管理工具框架,避免写入 property 乱序

    property property 是 java 实现的 property 框架. 特点 优雅地进行属性文件的读取和更新 写入属性文件后属性不乱序 灵活定义编码信息 使用 OO 的方式操作 prope ...

  9. 《JAVA 程序员面试宝典(第四版)》之循环、条件、概率

        分享内容:关于集合的使用   书页号码:77页 题目:一个字符串中包含a~z中的多个字符,如有重复,如String data = "aavzcadfdsfsdhshgwasdfasd ...

  10. oracle:表重命名

    SQL> rename test1 to test; Table renamed. SQL> alter table test rename to test1; Table altered ...