HTTPS原理简述

角色:   A,B,Server,Client,中间窃听者,数字证书签发机构(CA)

工具:对称加密算法,非对称加密算法,数字签名,数字证书

第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。

第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。

第三步,爱丽丝确认数字证书(对证书信息进行md5或者hash后的编号==用证书机构的公钥对加密的证书编号解密后的证书编号)有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥(鲍勃的公钥),加密这个随机数,发给鲍勃。

第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。

第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

https要使客户端与服务器端的通信过程得到安全保证,必须使用对称加密算法并且每个客户端的算法都不一样,需要一个协商过程,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。

通信安全问题

当A在向B进行通信时,如果是以明文的方式进行通信,中间窃听者会获得双方的传输的数据。

HTTPS要解决如下问题:A发给B的消息包,即使被中间人拦截到了,也无法得知消息的内容。即A与B通信的内容,有且只有A和B有能力看到通信的真正内容。

解决方案-对称加密算法

对消息进行对称加密,只要这个密钥不公开给第三者,同时密钥足够安全,就可以解决通信的安全问题。

如果服务器端对所有的客户端通信都使用同样的对称加密算法,无异于没有加密。故Web服务器与每个客户端必须使用不同的对称加密算法。

确定对称加密算法

对称加密算法的协商-通过非对称加密

非对称加密特点是私钥加密后的密文,只要是公钥,都可以解密,但是公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。

解决了协商加密算法的问题:使用非对称加密算法进行对称加密算法协商过程。服务器端向A、B的方向还是不安全的,但是至少A、B向服务器端方向是安全的。

每个通信使用不同对称加密算法-使用随机数

要达到Web服务器针对每个客户端使用不同的对称加密算法,同时,也不能让第三者知道这个对称加密算法是什么,该怎么解决?使用随机数,就是使用随机数来生成对称加密算法。这样就可以做到服务器和客户端每次交互都是新的加密算法、只有在交互的那一该才确定加密算法。

客户端如何获取公钥-服务器发送公钥给客户端

如果使用非对称加密算法,客户端A,B需要一开始就持有公钥,否则无法进行加密。

需要解决A,B客户端安全的获得公钥问题。可以有以下方案:

方案1. 服务器端将公钥发送给每一个客户端

方案2. 服务器端将公钥放到一个远程服务器,客户端可以请求得到

选择方案1,因为方案2又多了一次请求,还要另外处理公钥的存放问题。

防止服务器发送给客户端公钥被调包-数字证书

让每个客户端的每个浏览器默认保存所有网站的公钥是不现实的。解决方案是使用第三方机构的公钥。

公钥被调包的问题出现,是因为我们的客户端无法分辨返回公钥的人到底是中间人,还是真的服务器。这其实就是密码学中提的身份验证问题。

使用数字证书来解决,不能直接将服务器的公钥传递给客户端,而是第三方机构使用它的私钥对我们的公钥进行加密后,再传给客户端。客户端再使用第三方机构的公钥进行解密。

第三方机构向多家公司颁发证书并且这些证书的解密的第三方机构公钥都是一样的,这会导致客户端能解密同一家第三机构颁发的所有证书。最终导致其它持有同一家第三方机构证书的中间人可以进行中间证书传递时的调包。

防止服务端向客户端发送证书时证书被调包-数字签名&证书放在客户端

数字签名可以解决同一机构办法的不同证书被篡改的问题。证书应该放到客户端,客户端拿到证书后应该可以分辨证书是否被篡改了。

客户端如何才能具有这个辨别能力?,如下图:

这个"第三方机构"如果是个远端服务,整个交互都会慢了。所以,这个第三方机构的验证功能只能放在客户端的本地。

客户端本地如何验证证书:证书本身就已经告诉客户端怎么验证证书的真伪。

  • 证书上写着如何根据证书的内容生成证书编号。
  • 客户端拿到证书后根据证书上的方法自己生成一个证书编号,如果生成的证书编号与证书上的证书编号相同,那么说明这个证书是真实的。
  • 为避免证书编号本身又被调包,所以使用第三方的私钥进行加密。

证书的制作如图所示:

证书中的“编号生成方法MD5”就是告诉客户端:你使用MD5对证书的内容求值就可以得到一个证书编号。

当客户端拿到证书后,开始对证书中的内容进行验证,如果客户端计算出来的证书编号与证书中的证书编号相同,则验证通过:

但是第三方机构的公钥怎么跑到了客户端的机器中呢?

现实中,浏览器和操作系统都会维护一个权威的第三方机构列表(包括它们的公钥)。--此处相当重要,必须相信权威,否则进入鸡生蛋蛋生鸡。

因为客户端接收到的证书中会写有颁发机构,客户端就根据这个颁发机构的值在本地找相应的公钥。

ps:证书就是HTTPS中数字证书,证书编号就是数字签名,而第三方机构就是指数字证书签发机构(CA)。

原文地址:https://www.cnblogs.com/wade-luffy/p/8685769.html

时间: 2024-10-30 01:11:15

HTTPS原理简述的相关文章

网络知识杂谈 - https - 原理简述

概述 简单描述 https 尽量介绍它的原理 实际的机制, 可能会更加复杂一些... 背景 这玩意, 困扰我好多年了 今天开始, 想做个了断 之前工作也接触过, 但从我的角度来说, 认识很浅 会配置 给个证书, 放好位置, 调一下选项 会抓包 开个 charles, 配置几下, 手机挂代理, 安装证书 具体干啥 只知道是个 加密的体系 因为抓包知道, 这不是明文 机制的理解和思考 看过 图解http, 没理解就放过去了... 最后, 将这个东西的时候, 如果你忍无可忍想说一句, 禁止套娃...

TCP/IP协议工作原理简述

TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 协议是什么?协议是一组为完成特定需求或功能而定义的标准通讯格式.协议是服务于具体需求或功能的,它不能独立存在. 制定TCP/IP协议的目的是为了解决主机互联以及互联的主机上的应用通讯的问题.TCP/IP协议共有四层:应用层.传输层.网络层.链路层.应用层实际就是我们的应用程序,对于非具体应用而言这一层的协议是未定义的,需要我们自己根据我们具体的业务模型来制定.传输

FileCloud 的原理简述&自己搭建文件云

FileCloud 的原理简述&自己搭建文件云 copyright(c) by zcy 关于如何使用IIS创建asp服务,请读者自行研究 代码的存储: 根目录 filecloudEV.html 提前验证 filecloudEV.aspx 判断密码是否正确 filecloudMAIN.aspx 主界面 UpLoad.asp 上传界面 SaveFile.asp 保存文件 InputFilename.aspx 让用户输入文件名 AddPath.aspx 将当前文件加入文件清单 clsField.asp

HTTPS 原理剖析与项目场景

最近手头有两个项目,XX导航和XX产业平台,都需要使用HTTPS协议,因此,这次对HTTPS协议做一次整理与分享. 为什么使用HTTPS HTTP 协议,本身是明文传输的,没有经过任何安全处理.那么这个时候就很容易在传输过程中被中间者窃听.篡改.冒充等风险.这里提到的中间者主要指一些网络节点,是用户数据在浏览器和服务器中间传输必须要经过的节点,比如 WIFI 热点,路由器,防火墙,反向代理,缓存服务器等. HTTP 协议,中间者可以窃听隐私,使用户的敏感数据暴露无遗:篡改网页,例如往页面插的广告

HTTPS原理

(美团2016研发工程师模拟笔试题 )8.浏览器和服务器在基于https进行请求链接到数据传输过程中,用到了如下哪些技术:(ABCD) A.非对称加密技术 B.对称加密技术 C.散列(哈希)算法 D.数字证书 解析:HTTPS原理(原文链接:http://www.guokr.com/post/114121/) 谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>,文中介绍了在使用HTTPS进行网络加密传输的一些情况,从回复来看,争议还是有的.随着网络越来越普及,应用越来越广泛,

HTTPS 原理解析

一 前言 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全.为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS.SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对

[转]HTTPS那些事(一)HTTPS原理

[转]HTTPS那些事(一)HTTPS原理 http://www.guokr.com/post/114121/ 楔子谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>, 文中介绍了在使用HTTPS进行网络加密传输的一些情况,从回复来看,争议还是有的.随着网络越来越普及,应用越来越广泛,一些网络安全问题也会越来越引 起网民的关注,在这里和大家一起聊聊TLS/SSL也就是我们常说的HTTPS,从原理到实际应用看清它到底是怎么一回事,以及在使用HTTPS要注意哪 些问题以及相关的安

java多线程模式ThreadLocal原理简述及其使用详解

原创整理不易,转载请注明出处:java多线程模式ThreadLocal原理简述及其使用详解 代码下载地址:http://www.zuidaima.com/share/1781557457128448.htm ThreadLocal是为了使每个线程保存一份属于自己的数据. 先看一个使用ThreadLocal的实例. package com.zuidaima.aop.framework; import com.zuidaima.core.NamedThreadLocal; public abstra

Volley实现原理简述

Volley实现原理简述 一.介绍 Volley是Goole退出的Android异步网络请求框架和图片加载框架. 主要特点: 1)扩展性强.Volley大多是基于接口的设计. 2)符合Http规范. 3)Android2.3及以上版本默认基于HttpUrlConnection,2.3以下基于HttpClient. 4)提供简便的图片加载工具. 二.使用 1.调用:通过newRequestQueue()函数新建并启动一个请求队列,向RequestQueuezhon 不断add Request. 代