想学习TLS协议最好的方法应该是去看RFC,但如果对安全传输协议没有一些基本认识的人很难一上来就读懂RFC里面的种种细节和设计原则,所以这里为了能够进一步去弄懂TLS协议,把一些基本的知识放在这里,算是扫下盲。

1. TLS与SSL的区别:SSL是TLS的前身,TLS做出了一些使其更安全的改进。事实上,在客户端向服务器发起连接请求时,会附上的所支持的协议版本;这里的协议版本标识了是SSL或TLS(3.1为TLS)

2. TLS在真正传输过程中使用对称加密,因为对称加密效率更高。而对称加密所使用的key是在握手过程中使用特定的算法协商出来的。老版本的SSL使用RSA协商算法,需要使用服务器的公钥来加密传输客户端随机生成的对称key。这种方法有一些安全隐患(一个隐患就是攻击者可以先存储下来双方的加密包。如果攻击者后来获取了服务器的私钥,进而就能获取对称key,从而破解密文)。最新的Diffie-Hellman算法可以在协商过程中不传递任何关于对称key的信息,因而更加安全。

3. 客户端使用证书对服务器进行身份验证。证书一般由其他机构发放,证书会包含证书的公钥,并会在结尾处对证书内容做哈希并用发放机构自己的私钥对哈希值做加密(电子签名)。客户端可以用证书中发放机构的公钥对证书结尾的电子签名做解密,并验证解密出的哈希值与证书正文的哈希值是否一致,以验证证书是否确实为所宣称的发放机构发放。这个验证发放者的过程可以不断递归直到验证到的一个可信的发放者,或者电子签名验证失败。现在一般证书的格式都采用X509这个标准。

上面所述的过程只能验证证书本身的可信性,而不能验证提供这个证书的服务器实际上持有相关证书。关于如何验证服务器确实是证书的持有者,可能有两种方法:

1). 让服务器用证书中公钥对应的私钥加密一段文字,客户端用证书的公钥解密这段密文并验证服务器的私钥是否对应证书的公钥(如何防范人在回路?)

2). 验证证书中的CN与服务器的CN(基本上可以理解为域名)。因为客户端在发起向的某个服务器的连接过程中,客户端是知道自己想要连接到的服务器的域名的。而服务器传回的证书中包含证书被颁发者的信息,这里面就包含了被颁发者的域名。由于证书是由颁发者的私钥进行签名加密的,证书的内容被颁发者无法随意篡改,所以可以通过比对证书中的域名信息来验证对方是否是某个域名的服务器。

大体就是这几个关键点,以后有时间再补充细节。

参考资料:

https://developer.mozilla.org/en-US/docs/Archive/Security/Introduction_to_Public-Key_Cryptography#How_CA_Certificates_Are_Used_to_Establish_Trust

https://developer.mozilla.org/en-US/docs/Archive/Security/Introduction_to_SSL

http://chimera.labs.oreilly.com/books/1230000000545/ch04.html#TLS_FORWARD_SECRECY

http://blog.fourthbit.com/2014/12/23/traffic-analysis-of-an-ssl-slash-tls-session (非常详细解析协议每种message的格式,重点推荐!!)

关于openssl编程:

http://h71000.www7.hp.com/doc/83final/ba554_90007/ch04s03.html

http://www.linuxjournal.com/node/5487/print

http://www.ibm.com/developerworks/library/l-openssl/

https://www.cs.utah.edu/~swalton/Documents/Articles/Programming-OpenSSL.pdf

关于session resumption:

http://vincent.bernat.im/en/blog/2011-ssl-session-reuse-rfc5077.html

TLS协议扫盲(握手,非对称加密,证书,电子签名等)的更多相关文章

  1. [转载] TLS协议分析 与 现代加密通信协议设计

    https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/?from=time ...

  2. HTTPS协议、TLS协议、证书认证过程解析

    一.HTTPS 协议 HTTPS协议其实就是HTTP over TSL,TSL(Transport Layer Security) 传输层安全协议是https协议的核心. TSL可以理解为SSL (S ...

  3. 探究公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、CA认证、https它们究竟是什么,它们分别解决了通信过程的哪些问题。

    一.准备 1. 角色:小白.美美.小黑. 2. 剧情:小白和美美在谈恋爱:小黑对美美求而不得.心生怨念,所以从中作梗. 3. 需求:小白要与美美需通过网络进行通信,联络感情,所以必须保证通信的安全性. ...

  4. HTTPS协议,TLS协议

    一.HTTPS 协议 HTTPS协议其实就是HTTP over TSL,TSL(Transport Layer Security) 传输层安全协议是https协议的核心. TSL可以理解为SSL (S ...

  5. SSL/TLS协议概览

    SSL/TLS协议是什么 计算机网络的OSI七层模型和TCP/IP四层模型想必大家都知道.其中SSL/TLS是一种介与于传输层(比如TCP/IP)和应用层(比如HTTP)的协议.它通过"握手 ...

  6. TLS协议分析

    TLS协议分析 本文目标: 学习鉴赏TLS协议的设计,透彻理解原理和重点细节 跟进一下密码学应用领域的历史和进展 整理现代加密通信协议设计的一般思路 本文有门槛,读者需要对现代密码学有清晰而系统的理解 ...

  7. 假如让你来设计SSL/TLS协议,你要怎么设计呢?

    摘要:本文将从设计者的视角介绍如何一步步设计出一个简易版的 SSL/TLS 的过程,在文章的最后,再简单介绍 TLS 1.2 版本的工作机制,以此帮助大家对 SSL/TLS 协议的基本原理有一个更深入 ...

  8. 【转】Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)

    本文转自:http://www.wjdiankong.cn/wireshark%E5%92%8Cfiddler%E5%88%86%E6%9E%90android%E4%B8%AD%E7%9A%84tl ...

  9. android黑科技系列——Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)

    一.前言 在之前一篇文章已经介绍了一款网络访问软件的破解教程,当时采用的突破口是应用程序本身的一个漏洞,就是没有关闭日志信息,我们通过抓取日志获取到关键信息来找到突破口进行破解的.那篇文章也说到了,如 ...

随机推荐

  1. 前端框架MVVM是什么(整理)

    前端框架MVVM是什么(整理) 一.总结 一句话总结:vm层(视图模型层)通过接口从后台m层(model层)请求数据,vm层继而和v(view层)实现数据的双向绑定. 1.我大前端应该不应该做复杂的数 ...

  2. 简单的spring mvc实例

    简单的springmvc实例 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...

  3. hdu2149巴什博弈输出

    一眼就能看出来的巴什博弈,只是要输出第一步取的值,如果m>n+1,输出m%(n+1),否则输出m到n,因为这是第一步 #include<map> #include<set> ...

  4. HDU 2276 矩阵快速幂

    Kiki & Little Kiki 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

  5. HDU 2577 分情况多维DP

    How to Type Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. PHP:第五章——字符串编码函数

    <?php header("Content-Type:text/html;charset=utf-8"); //1.base64_encode和base64_decode.6 ...

  7. 在Google Maps中导出KML文件

    教你一招:在Google Maps中导出KML文件 2011-07-11 15:24:49 4819 人阅读 作者:上方文Q 编辑:上方文Q [复制链接] [爆料] Google Earth的一大乐趣 ...

  8. [批处理]简易命令行RAR

    这个BAT是为了病毒满满的信管实验室而专门定制的,在这机房上了两年,跟病毒也玩了两年了,也都脸熟的不行不行的了,来来回回就那几个病毒不是autorun.inf就是Desktop__.ini要么就是ga ...

  9. 分析公司shareaholic报告:Chrome浏览器使用量居首

    社交分析公司Shareaholic周四发布研究报告称,今年9月份,Chrome浏览器的使用量已经跃居行业榜首. 根据Shareaholic的数据,Chrome今年9月的使用量超过了火狐.IE和Oper ...

  10. 201621123006 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网 ...