`

HTTPS相关原理浅析

 
阅读更多

1、HTTPS本身并非协议,而是标准的HTTP协议架在SSL/TLS协议之上的一种结构。(一种不太合适的说法可以认为是两种协议的叠加)。HTTP是工作在OSI7层模型的最上层,就是第7层:Application Layer。而SSL/TLS是工作在第4层:Transport Layer。两层之间还是隔了Presentation Layer(6层)和Session Layer(5层)两层的。

2、由于基于TCP/IP协议的通讯需要,HTTPS也还是必须暴露IP和Port出来,即这部分不在加密范畴之内。所以第三方还是可以通过截取网络包数据等手段,知道用户正在和哪个site通讯,当然,除了www.domain.com:port这部分数据之外,context后面的信息是加密的。

3、加密链接建立的核心基础是SSL/TLS的握手过程,这个过程要比TCP协议建立链接的3次握手过程复杂一些。参考了wikipedia中描述的过程http://en.wikipedia.org/wiki/Transport_Layer_Security,自己大概整理了一下这个握手过程,大概是下面这个样子的:


 

4、从上面的这个过程可以总结一下这个安全链接建立的过程:

 

  • client和server通讯为了保证安全性,所以通讯的消息得加密,即网络上密文传输。为了方便对方获得真实的消息,这个加密得使用对称加密算法。于是,这个加密的安全性就取决于密钥本身的强度以及所选用的对称加密算法了。
  • 可是到底用什么密钥和对称加密算法呢?client和server互不认识,怎么会有默契上来就知道这两个东东都用啥?于是这事儿得client和server谈判!
    •  client给server发送了个ClientHello,里面包括:client能支持的TLS的最高版本、一个随机数A、client所能支持的加密算法集合、client所能支持的压缩算法集合。
    • server收到个ClientHello之后,拿出自己所能支持的TLS的最高版本跟client发过来的最高版本比较一下,这两个版本取个Max,这里标记为:max_TLS_version。server自己再生成个随机数B,从client传过来的加密算法集合中挑一个具体的加密算法M(注意,这里的M其实也是一个集合,包括:非对称加密算法用于加密上图的pre-master secret,比如RSA算法、对称加密算法用于数据传输时双方使用的加密自己的内容解密对方内容的依据、MAC算法用于校验信息是否被篡改、伪随机算法用于生成最终通讯时对称加密算法所需要的密钥master secret),从压缩算法集合中挑一个具体的压缩算法N。然后发送一个ServerHello作为回应给client,这个ServerHello就包括上面提到的max_TLS_version/B/M/N。
    • 注意,这时client和server双方之间的信息基本比较对称了。因为双方已经协商好整个握手过程中所有可能需要涉及到的算法。
    • server发送自己经过第三方认证的证书给client,告诉他:哥是有证经营的,你可以拿我的证去随便调查。
    • client拿着server发过来的证书跑去权威的有关部门验证去了。。。(这两步涉及到的CA证书认证内容又很大,这里不展开描述,先将主要精力放在TLS握手上)
    • 假设上面的证书验证通过了,这就意味着client相信server发过来的证书了,也就意味着client同意用server发过来的public key开始通讯了。注意,非对称加密的过程在这里开始了。client生成了一个pre-master secret(通常也是一个随机数)P,使用server提供的public key加密P之后生成P', 将P'发给了server。
    • server收到 P'后,用自己的private key解密还原出了P。注意这个P和之前A的最大不同是加密传输过来的哦。而且理论上在server没有泄露自己private key的情况下, 只有server能够从 P'还原出P。So,此时,client和server双方已经具备了生成双方后面通讯时对称加密需要使用的master secret的条件:双方都有的一个确定的伪随机函数、3个彼此都知道的随机数A、B和P。
    • 于是,双方在自己一方,通过共同的伪随机数和共同的素材,生成出来了master secret。到这里,双方谈判的过程基本上可以结束了。因为谈判的初衷已经完全符合了。回想一下,整个过程不就是为了在公网上这个非安全的环境中让彼此都清楚使用啥对称加密算法以及使用什么密钥吗?等等,这个握手过程为了保证可用性,还拿出来先测试一下,是否真的行得通才行啊。于是还有下面的两步。
    • client用双方同意的MAC(message authentication code)算法,比如MD5,加密一段明文Q(这个明文是啥应该都没关系,因为都会发给server的)生成了MAC。然后用双方同意的对称加密算法(比如AES)加密了Q和MAC之后,生成了一段Finished Message发给了server。(这里,根据TLS record protocol,这个Finished Message其实是个具体的TLS record,他携带的Content type为20,这相当于告诉server:I am ready to begin the normal communication.)
    • server收到这条TLS record之后,就会尝试先解密密文(Decryption),再用约定的MAC算法验证内容是否被篡改(Verification)。这时,如果这两个任何一项工作失败了,就前功尽弃了。。。这里假设都成功了,于是server做了上一步client同样的事情:生成一份Content type为20的Finished Message,发给client。至此,整个握手过程正式结束。。。下面的通讯就是双方直接使用对称加密算法直接加解密message的过程啦,当然每次交互的过程中,还会包括上面描述的MAC验证的过程。

 

  • 大小: 1.7 MB
分享到:
评论
2 楼 feiyinzilgd 2014-07-21  
1 楼 宅男贰号 2014-05-06  

相关推荐

    iPhone的Push(推送通知)功能原理浅析

    ### iPhone的Push(推送通知)功能原理浅析 在当今移动互联网时代,推送通知已成为智能手机应用与用户互动的重要方式之一。对于iOS系统来说,苹果提供了一套完整的推送通知机制——APNs(Apple Push Notification ...

    MQTT协议原理浅析、协议主要特性

    MQTT是基于Publish/Subscribe(发布订阅)模式的物联网[通信协议](https://so.csdn.net/so/search?q=通信协议&spm=1001.2101.3001.7020) 特点: 1. 简单易实现 2. 支持Qos(服务质量) 3. 报文小 MQTT协议构建于TCP/IP...

    深入浅析C#中单点登录的原理和使用

    本文将深入探讨SSO的原理以及如何在C#环境中应用这一技术。 单点登录允许用户在一个系统登录后,无需再次输入凭证即可访问其他关联系统。其核心思想在于通过一个中央认证服务器来管理和验证用户的登录状态,使得...

    HTML5实现WebSocket协议原理浅析

    WebSocket连接默认使用HTTP的80和HTTPS的443端口。这个连接允许客户端和服务器在全双工模式下自由交换数据,无需像HTTP那样等待对方的回应。这意味着数据可以同时双向流动,极大地提高了实时性。 WebSocket数据帧有...

    HTTP协议/IIS 原理及ASP.NET运行机制浅析【图解】

    此外,还有HTTPS(HTTP over SSL/TLS)提供了加密和身份验证,确保通信的安全性。 总之,理解HTTP协议和ASP.NET运行机制是构建Web应用的关键。深入学习这些基础知识,能帮助开发者更好地应对不断变化的技术趋势,...

    浅析JDWP远程命令执行漏洞 [ Mi1k7ea ]1

    2022/3/2 下午8:30浅析JDWP远程命令执漏洞 [ Mi1k7ea ]https://www.mi1k7ea.com/2021/08/06/浅析JDW

    Kubernetes数字证书体系浅析.docx

    通过对HTTPS原理的理解,我们可以更好地把握K8S中证书的工作机制。掌握了证书体系的关键概念和技术细节之后,无论是对于K8S的学习者还是日常运维工作都将大有裨益。希望本文能够为正在探索这一领域的读者提供有价值...

    非对称加密传输文件相关技术理论浅析

    非对称加密传输文件是一种广泛应用于网络安全中的技术,它基于两个密钥——公钥和私钥——进行...通过阅读《网银U盾(USB_key_)的工作原理.doc》文档,我们可以更深入地了解这一技术在实际生活中的具体应用和工作流程。

    netty5 HTTP协议栈浅析与实践

    1. 引入 Netty 相关依赖。 2. 创建 ServerBootstrap 对象,设置 EventLoopGroup(处理 I/O 事件的线程组)和 ServerChannel(监听客户端连接的通道)。 3. 配置 ChannelPipeline,添加 HTTP 编解码器和其他处理器,...

    SQL注入漏洞攻击与防御方式浅析.pdf

    SQL注入攻击是一种常见的针对Web应用程序的攻击方式,其原理是利用程序开发中可能存在的安全漏洞,通过精心构造的URL参数或者表单提交参数,更改预先定义好的SQL语句的结构,从而实现非法的数据库操作。当开发者在...

    海量图片的分布式存储及负载均衡研究(浅析)

    本文将围绕“海量图片的分布式存储及负载均衡研究”这一主题,结合源码和工具,深入浅出地探讨相关知识点。 分布式存储是解决大数据问题的关键技术之一。它通过将数据分散存储在多个节点上,实现了高可用性、容错性...

    浅析php header 跳转

    在PHP编程中,`header()`函数是一个非常重要的功能,它允许开发者向HTTP协议发送各种头部信息,其中包括实现页面跳转。...通过理解其工作原理和常见应用场景,开发者可以更加灵活地控制Web应用程序的行为。

    浅析javascript操作 cookie对象

    它的工作原理是将少量的数据信息以文本文件的形式存放在用户的本地硬盘上,通常位于一个名为"Cookies"的文件夹内。这些数据由Web服务器在用户访问站点时创建,并在用户后续的交互中被用来维护会话状态。由于安全性和...

    深入浅析ImageMagick命令执行漏洞

    ImageMagick是一个强大的开源图形处理工具,它支持多种图片格式,如JPEG、GIF、PNG、PDF等,常被用于...对于开发人员来说,了解和理解这种漏洞的原理和利用方式,能帮助他们在设计和实现系统时更好地保护用户的安全。

    浅析webapp框架AngularUI的demo

    本文将深入探讨Web应用程序框架AngularUI的Demo及其修改方法,旨在帮助开发者更好地理解和应用这个强大的...通过实践,你可以熟悉其工作原理,从而更高效地利用AngularUI开发出功能强大、用户体验优良的Web应用程序。

    JS中的回调函数实例浅析

    JavaScript中的回调函数是一种重要的编程概念,它...理解其原理和使用方式对于提升JavaScript编程技能至关重要。通过不断实践和学习,开发者可以熟练掌握回调函数,并将其应用于实际项目中,创建出高效、可维护的代码。

    webrtc教程

    ### WebRTC教程知识点详解 #### 一、工具 ##### 1.1 Depot Tools - **目标**:Depot Tools 是一套用于 Chromium 和 WebRTC 项目的命令行工具集合,...- **STUN和TURN技术浅析**:对 STUN 和 TURN 技术进行简要分析。

    WebRTC零基础开发者教程

    - **7.5 STUN 和 TURN 技术浅析:** - 分析这两种技术的工作原理及其应用场景。 - **7.6 基于 ICE 的 VoIP 穿越 NAT 改进方案:** - 探讨如何优化 ICE 协议以提高 VoIP 服务的质量。 - **7.7 ubuntu 安装使用 ...

Global site tag (gtag.js) - Google Analytics