SSL\TLS握手

概述

最近在看一篇论文,Elliptic Curve Cryptography in Practicef里面联系到TLS协议的各方面东西,所以去了解了一下SSL\TLS协议握手时候的大概流程,现在把它记录下来。

证书

首先简单说一下什么是证书,为了证实服务器的身份,并确保他不是攻击者,证书是由第三方可信机构颁发的,我们称之为:CA,CA用其私钥对证书签名,这样用户可以对服务器发送过来的证书进行验证。证书中包含服务器的公钥,可信第三方的签名等东西

握手的大概过程

客户端发送许多规范为了知道服务器使用的规范:

  • 服务器正在运行的哪个版本的SSL/TLS
  • 服务器使用的是什么密码套件
  • 服务器使用什么压缩方法
    通过OpenSSL操作的话一般使用如下命令例:
openssl s_client -connect the.host.name:443

当然里面还可以添加很多东西,有空再整理吧!
这样的话服务器收到客户端发送的s_client后从中选择一个支持的密码套件并选择一个压缩方法,之后向客户端发送它的证书,客户端验证证书并确定此服务器确实是他声称身份而非中间人,之后交换秘钥。从现在开始,所有通信将会被加密,并将加密且经过身份验证的消息发送到服务器,服务器验证身份正确并且消息可以正确解密,然后它返回一条消息客户端也将对其进行验证至此握手已经完成。

与论文中内容的联系

作者在TLS部分,测试服务器所使用的密码套件以及椭圆曲线的时候,若服务器接收则将其密码套件及曲线从列表中移除(因为作者只做与椭圆曲线有关的实验,所以里面只包含与椭圆曲线有关的密码套件及曲线),然后作者采用Event-driven程序,再次发送消息,直到不能连接,即列表为空或者列表中的密码套件及曲线已经不能支持服务器,这时将不能得到有效反馈,至此作者通过这种方法测试出了服务器所使用的所有密码套件以及曲线。

小知识

ECDH:秘钥交换协议

ECDH与ECDHE的区别

  • ECDHE是E = Ephemeral版本,您在
    每次握手时都会获得不同的DH密钥 。
  • ECDH具有固定的DH密钥;握手的一侧不会从
    一个实例更改为 另一个实例。
  • ECDHE为您提供保密性;ECDH没有。
  • ECDHE比ECDH效率低;它需要更多的加密操作。
  • 它们在握手验证方式上也有所不同。(ECDH是
    隐式的,而ECDHE是显式的。)

握手过程图

handshake

参考资料

https://www.jianshu.com/p/7158568e4867

https://www.jianshu.com/p/c67baf5fce6d

http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html

发布了23 篇原创文章 · 获赞 1 · 访问量 1530

猜你喜欢

转载自blog.csdn.net/qq_35324057/article/details/104563903