`
jgsj
  • 浏览: 1053713 次
文章分类
社区版块
存档分类
最新评论

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验证的过程。
分享到:
评论

相关推荐

    串口透析的项目_gray1em_ZigBee协议栈的串口透析_

    本项目“串口透析的项目_gray1em_ZigBee协议栈的串口透析_”旨在简化ZigBee协议栈的通信过程,使用户能够直接通过串口以8位数据模式进行通信,无需处理ZigBee协议栈复杂的帧结构和数据格式。 首先,我们来了解串口...

    学生组织建设的原理式透析PPT学习教案.pptx

    【学生组织建设的原理式透析】主要探讨的是在教育环境中如何有效构建和改革班级建设,以促进学生全面发展的主题。这份PPT学习教案详细分析了班级建设的重要性、改革的方向以及班主任在其中的角色。 首先,班级建设...

    浅谈 Spring 原理 透析,ioc aop

    浅谈 Spring 原理 透析,IOC 和 AOP Spring 框架是一个从实际项目开发经验中抽取的,可高度重用的应用框架。它是一个轻量级容器,带有包装器,使许多不同的服务和框架更易于使用。轻量级容器接受任何 JavaBean,而...

    海明码校验原理透析.

    海明码的校验原理基于数学上的二进制编码理论,尤其是伽罗华域的概念。 在海明码中,我们需要确定校验位的数量,这由信息数据位数决定。对于n位的信息数据,如果要能检测并纠正单个错误,需要设置k个校验位,满足...

    大规模网站架构技术原理透析

    在大规模网站架构技术原理透析中,我们关注的是构建能够处理海量用户访问、高并发流量以及复杂运营环境的大型网站所需的技术和策略。首先,我们要区分企业级业务系统与互联网应用的区别。前者通常拥有复杂的业务逻辑...

    网关与ARP原理透析

    ### 网关与ARP原理透析 #### ARP(Address Resolution Protocol)原理及与网关的关系解析 在探讨ARP协议及其与网关的关系之前,我们首先需要了解几个基础概念:ARP、网关以及它们在网络通信中的作用。 **ARP...

    海明码校验原理透析

    下面将深入解析海明码校验的原理。 首先,海明码的基本思想是通过增加校验位,形成一种能够自我检测错误的编码方式。假设我们有一段8位的数据D7到D0,为了检测这8位数据中是否存在错误,我们需要确定校验位的数量。...

    血液透析机原理及最新进展

    ### 血液透析机原理及最新进展 #### 一、引言 血液透析作为治疗肾功能衰竭的一种有效手段,在临床上有着极其重要的地位。随着科技的进步,血液透析机不仅在技术上取得了显著的发展,而且在提高治疗效果、保障患者...

    血液透析基本原理.ppt

    本讲座主要探讨了血液透析的基本原理及其临床应用。 首先,肾脏是人体的重要器官,负责过滤血液,清除代谢废物,调节电解质和酸碱平衡,并分泌生物活性物质,如活性维生素D3、促红细胞生成素和肾素。当肾脏功能丧失...

    大规模网站架构技术原理透析.pdf

    【大规模网站架构技术原理透析】 在互联网领域,大规模网站架构设计是一项至关重要的任务,它涉及到网站的稳定、性能、安全以及可扩展性等多个方面。本文将深入探讨大型网站架构的关键技术和原理,帮助读者理解其...

    费森尤斯血液透析机B原理PPT学习教案.pptx

    "费森尤斯血液透析机B原理PPT学习教案.pptx" 本资源是关于费森尤斯血液透析机B原理的PPT学习教案,共26页,介绍了费森尤斯公司的简介、血液透析机的结构和工作原理、清洗程序、化学消毒程序等内容。 费森尤斯公司...

    扩频通信原理透析详解

    详细介绍CDMA Spreading principle

    血液透析相关知识及原理.ppt

    本文将详细解释血液透析的原理和相关知识,并对透析过程以及其适应症和治疗效果做全面阐释。 首先,肾脏是维持人体内环境稳定的关键器官,它负责排除体内多余的废物和水分,同时平衡体内的电解质和酸碱度。肾功能...

    《透析基本原理》PPT课件.ppt

    《透析基本原理》PPT课件深入浅出地介绍了肾脏的正常生理功能、病理状况下的肾脏变化,以及肾功能衰竭的透析治疗原理。它不仅包括了肾脏在正常情况下的工作原理,也详细阐述了当肾脏功能受损时,人体可能出现的病理...

    平衡二叉树(AVL)原理透析和编码解密

    平衡二叉树(AVL树)是一种自平衡的二叉搜索树,它的主要特性是任何节点的两个子树的高度差不超过1,这确保了在最坏情况下,查找、插入和删除操作的时间复杂度都能保持在O(log n)。AVL树的概念由G....

    血液透析基本原理22.ppt

    3. **血液透析的基本原理**: - **弥散(Diffusion)**:溶质由高浓度区域向低浓度区域扩散,如小分子毒素从血液转移到透析液。 - **超滤(Ultrafiltration)**:通过压力差迫使水分从血液侧透过半透膜到透析液侧...

    血液透析管路预冲流程.pdf

    根据提供的文件信息,标题为《血液透析管路预冲流程.pdf》,描述也为《血液透析管路预冲流程.pdf》,标签为“教育”,而部分内容包含了血液透析相关的操作流程和技术参数。考虑到字数要求,我将基于这些信息提供详尽...

    血液肾透析温度控制论文

    #### 血液透析原理概述 在血液透析过程中,血液首先通过特殊的管道被泵送至透析机内,在此过程中血液与透析液(dialysate)通过半透膜进行交换。离子交换机制使得血液中的水、矿物质和其他化学成分趋于平衡状态。...

    透析ICMP协议.docx

    ICMP(Internet Control Message Protocol,互联网控制消息协议)是互联网协议族中的一个重要组成部分,它与IP协议一起工作在OSI模型的第三层...对于网络专业人士来说,熟练掌握ICMP协议的工作原理和应用是至关重要的。

Global site tag (gtag.js) - Google Analytics