HTTPS ssl原理

这篇具有很好参考价值的文章主要介绍了HTTPS ssl原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、学习思路

HTTPS ssl原理,https,ssl,网络协议

二、HTTPS 协议层次

HTTPS ssl原理,https,ssl,网络协议

SSL和TLS为数据安全通信提供支持。

三、HTTPS设计思路

HTTPS ssl原理,https,ssl,网络协议

HTTPS ssl原理,https,ssl,网络协议

1、服务器生成公钥对A,把公钥和其他信息info发送给CA机构,申请证书;

2、CA机构,有一套自己的公钥对S,CA机构将info生成数字摘要,并使用S私钥对摘要进行加密,CA机构在操作系统系统有有一套证书,保存的是S公钥;

3、CA机构将info和加密后的数字摘要生成证书发送给服务器;

4、服务器进行https通信时,先发送证书;

5.6.7、客户端收到证书后,首先验证证书合法性,获取OS内部受信任的CA证书,使用OS公钥对证书摘要进行解密出hash值,再使用相同的hash算法对证书内容进行hash计算,比较两个hash值是否一致,一致则认为证书合法;

8、客户端验证证书合法后,client生成对称秘钥对,并使用公钥A将秘钥对加密,发送给服务器,之后的交互数据,则使用对称秘钥加密。(实际过程并未如此)

由此可见,整个HTTPS过程涉及到两对公钥对,一是用户加密数据通信的对称秘钥,放在数字证书中;二是CA机构的公钥对,放在OS内,用于验证证书是否合法

四、TLS握手

整个交互过程可以分为三个阶段:tcp握手,tls握手(明文或者密文),tls数据交互(密文)

tls握手用于验证双方及协商通信的加密秘钥。

一般的,tls握手过程是明文交互的,也可以使用RSA对称加密,双方协商一致就可以。

HTTPS ssl原理,https,ssl,网络协议

有三种情况的握手:

a、只验证服务器的SSL握手过程

b、验证服务器和客户端的SSL握手过程

c、恢复原有会话的SSL握手过程

下图展示了“a、只验证服务器的SSL握手过程”HTTPS ssl原理,https,ssl,网络协议

注意,第4阶段,server key exchange是可选的,作为证书的补充

下列场景才会有server key exchange

协商采用了RSA加密,但服务器端的证书没有提供RSA公钥

协商采用了DH加密,但服务器端的证书没有提供DH参数

协商采用了fortezza_kea加密,但是服务端的证书没有提供参数

4.1、TLS会话缓存机制

为了加快建立握手的速度,减少协议带来的性能降低和资源消耗,TLS协议有两类会话缓存机制:

会话标识session ID和会话记录session ticket.

client -> server:  clienthello(session id)

server -> client:  serverhello, change cipher spec, encrypted handshake message

client -> server:  change cipherspec, encrypted handshake message

客户端再次和服务器建立连接,则在client中session

ID中携带记录的信息,发送给服务器。

服务器根据session ID检索缓存记录,如果没有检索到,则按正常的握手进行;

如果检索到,则返回change_cipher_spec与encrypted_handshake_message;

如果客户端能够验证通过服务器加密数据,则客户端同样发送change_cipher_spec与encrypted_handshake_message信息;

服务器验证数据通过,则握手建立成功,开始进行正常的加密数据通信;

4.2、客户端重连

客服端和服务器之间建立了有效TLS连接并通信;

客户端需要更新秘钥,主动发出client_hello信息;

服务器识别重建连接请求后,发送server_hello信息;

客户端和服务器开始新的重建连接过程;

4.3、服务器重连

客服端和服务器之间建立了有效TLS连接并通信;

客户端访问受保护的信息;

服务端返回hello_request信息;

客户端收到hello_request信息之后发送client_hello信息,开始重新建立连接;

五、证书

5.1、证书结构

HTTPS ssl原理,https,ssl,网络协议

版本:标识证书的版本(1,2和3)

序列号:标识证书的唯一标识符

签名算法:本证书所用签名算法

颁发者:证书颁发者的可识别名

使用者:证书拥有者的可识别名

公钥:证书发布的公钥

CRL:证书吊销列表,包含CA已经吊销的证书序列号及其吊销日期

证书策略:

使用者秘钥标识符

颁发机构秘钥标识符:用于证书链的验证

证书吊销列表(CRL)与证书状态在线查询协议(OCSP)

一般CA都只是每隔一定时间(几天或者几个月)才发布新的吊销列表,所以CRL不能及时反映证书状态。

而OCSP就能满足实时在线查询证书状态的要求。OCSP服务器会返回证书的三个状态:正常、吊销和未知。

在颁发机构信息访问提供了OCSP服务器地址 http://ocsp.wsign.com

浏览器在访问https网站是,先检查此证书是否已经被吊销,如果证书已经被吊销,则会显示警告信息: “此组织的证书已被吊销。安全证书问题可能显示试图欺骗您或截获您向服务器发送的数据。建议关闭此网页,并且不要继续浏览该网站。 ”

5.2、信任链

CA组织结构是一个树结构,一个root CA下面有多个mid CA,而mid CA又可以包含多个mid CA。

root CA和mid CA都可以颁发证书给用户,颁发的分别是root证书和中间证书,最终用户用来认证公钥的证书被称为end-user证书。

如果end-user证书是mid CA颁发的,那么握手阶段,需要把中间证书也一并发给客户端。

证书链验证过程:

HTTPS ssl原理,https,ssl,网络协议

六、秘钥协商过程

在TLS握手阶段确定了双方使用的密码学套件。

(秘钥协商、证书验证、数据加密是三个独立的过程)

举例:

TLS_DHE_RSA_WITH_AES_256_CBC_SHA

DHE_RSA:表示握手过程中使用的非对称加密算法(秘钥交换用的是DHE, 证书用的RSA),如果WITH只有一个,那么表示交换信息和证书用的是同一个算法

        (可选的主要的密钥交换算法包括:RSA, DH, ECDH, ECDHE。可选的主要的证书算法包括:RSA, DSA, ECDSA。两者可以独立选择,并不冲突)

AES_256_CBC_SHA:表示加密信道的对称加密算法和hash算法

 

七、秘钥交换算法

双方在握手过程中,通过秘钥交换算法,确定后续通信的秘钥

常用的秘钥交换算法:RSA、DH类秘钥交换算法

7.1、RSA秘钥交换过程:

A->B

B:把公钥放在证书中

A:使用随机数算法,生成一个秘钥key,用公钥加密,发送给B。

RSA面临的问题:一旦私钥外泄(私钥参与了协商过程),那么key就能解密之前监听的所有的密文(向前不安全),安全性取决于私钥是否保存完好。

7.2、更安全的DH类秘钥交换算法

DH类秘钥算法有:DH, DHE, ECDH, ECDHE

DH(静态DH算法,秘钥交换始终选择相同的私钥,因此,每次的共享私钥都相同)

DHE(临时DH算法,每个连接生成一个临时的DH秘钥,因此同一秘钥永远不会被使用两次。向前保密)

7.3、DHE秘钥交换算法(基于离散对数难题)简单说明:

    A->B

    A:生成一个随机数X(作为自己的私钥),a= g^x mod p (g的x次方对p取模),p 是个大素数,g是生成数,将a发送给B        

    B:生成一个随机数Y(作为自己的私钥),b= g^y mod p,将b发送给A。

   A: 计算 key1 = b^x mod p

    B:计算 key2 = a^y mod p

    根据数学逻辑,key1=key2,所以秘钥交换成功

DHE安全性体现在:传输的只是a、b、p、g,中间没有传输私钥x和y,在已知这四个数很难得出x和y(依赖于离散),保证了安全。

DH秘钥计算举例:

假设 g =10, p = 7,x = 3, a = 6,y = 11 , b = 5

key1 = ((g^x)mod p)^y mod p = ((10^3)mod 7)^11 mod 7 =6

key2 = ((g^y)mod p)^x mod p = ((10^11)mod 7)^3 mod 7 =6

7.4、基于ECDHE的秘钥交换算法(基于椭圆离散对数难题)

ECDHE的运算是把DHE中模幂运算替换成了点乘运算,速度更快,可逆更难

A->B

A:生成一个随机数Ra,计算Pa(x,y) = Ra * Q(x, y),Q(x, y)为全世界公认的某个椭圆曲线算法的基点。将Pa(x, y)发送至服务器。

B:生成随机值Rb,计算Pb(x,y)= Rb * Q(x, y)。将Pb(x, y)发送至客户端。

A:计算Sa(x,y) = Ra * Pb(x, y)

B:计算Sb(x,y) = Rb * Pa(x, y)

算法保证了Sa =Sb = S,提取其中的S的x向量作为密钥(预主密钥)

还想了解原理  可以参考     数字签名与HTTPS详解 - 如.若 - 博客园 (cnblogs.com)



 文章来源地址https://www.toymoban.com/news/detail-786371.html

到了这里,关于HTTPS ssl原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络安全】https与证书原理 | SSL Pinning及其绕过

    参考: https://segmentfault.com/a/1190000009002353?sort=newest https://zhuanlan.zhihu.com/p/353571366 https://juejin.cn/post/6863295544828444686 HTTPS=HTTP+TLS,其它的协议也类似,如FTPS=FTP+TLS 1) ClientHello Client 首先发送本地的 TLS 版本、支持的加密算法套件,并且生成一个随机数 R1 。 2)Server Hello Server 端确

    2024年02月05日
    浏览(35)
  • 【Linux网络编程】HTTPS协议原理

    HTTPS也是⼀个应⽤层协议,是在HTTP协议的基础上引⼊了⼀个加密层,HTTP协议内容都是按照⽂本的⽅式明⽂传输的,这就导致在传输过程中出现⼀些被篡改的情况。 加密就是把 明文 (要传输的信息)经过一系列的变换,变成 密文 进行传输。 解密就是把 密文 在通过一系列的

    2024年02月07日
    浏览(32)
  • HTTP 和 HTTPS 协议原理【网络基础】

    友情链接: HTTP协议【网络基础/应用层】 简单:HTTP 是一种文本协议,易于理解和实现。HTTP 的请求和响应都由起始行、首部字段和可选的消息主体组成,每个部分都有明确的语法规则。HTTP 的方法、状态码和首部字段都有标准化的定义,方便开发者遵循。 灵活:HTTP 是一种无

    2024年02月09日
    浏览(44)
  • 「网络编程」应用层协议_ HTTPS协议学习及原理理解

    「前言」文章内容大致是应用层协议的HTTPS协议讲解,续上篇HTTP协议。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) HTTPS(HyperText Transfer Protocol Secure) 是一种通过加密和身份验证保护网络通信安全的协议。它是基于HTTP协议的安全版本,也是工作在应用

    2024年02月16日
    浏览(34)
  • 【Linux 网络】 HTTPS协议原理 && 对称加密 && 非对称加密 && 数字证书

    HTTPS 协议和 HTTP 都是应用层协议,不过HTTP 协议内容在传输时都是以文本方式进行明文传输的,这就可能导致在传输过程中,数据被泄漏和篡改等问题。所以HTTPS 协议是在HTTP 基础上引入了一个加密层。 HTTPS (全称:Hypertext Transfer Protocol Secure ),是以安全为目标的 HTTP 通道,

    2024年02月14日
    浏览(31)
  • HTTPS ssl原理

    SSL和TLS为数据安全通信提供支持。 1、服务器生成公钥对A,把公钥和其他信息info发送给CA机构,申请证书; 2、CA机构,有一套自己的公钥对S,CA机构将info生成数字摘要,并使用S私钥对摘要进行加密,CA机构在操作系统系统有有一套证书,保存的是S公钥; 3、CA机构将info和加

    2024年02月02日
    浏览(27)
  • HTTPS建立连接原理、SSL工作原理

    HTTPS与HTTP相比有什么区别? HTTPS保证安全的原理是什么? HTTPS是如何建立连接的? 巨人的肩膀 3.1 HTTP 常见面试题 | 小林coding HTTP是超文本传输协议,传输的内容是明文(HTTP1.1及之前版本)。HTTPS在TCP与HTTP层之间引入SSL/TLS安全协议,传输的报文都是加密传输的 HTTP建立连接简单,

    2024年02月02日
    浏览(75)
  • HTTP协议 和 HTTPS协议的区别(4点) && HTTPS如何使用SSL/TLS协议加密过程 && CA证书干啥的

      1. HTTP协议的端口号是80, HTTPS协议的端口号是443 2. HTTP协议使用的URL是以 http:// 开头,HTTPS协议使用的URL是以https://开头 3. HTTP协议和HTTPS协议最主要的区别是: HTTP协议所生成的HTTP请求报文被TCP协议 以明文形式透明传输,同时 客户端与服务器之间无法核验对方的身份(不晓

    2024年02月14日
    浏览(35)
  • HTTP、HTTPS、SSL协议以及相关报文讲解

    目录 HTTP/HTTPS介绍 HTTP/HTTPS基本信息 HTTP如何实现有状态 HTTP请求与应答报文 HTTP请求报文 HTTP响应报文 SSL协议 SSL单向认证 SSL双向认证 HTTP连接建立与传输步骤 HTTP访问全过程相关报文(以访问www.download.cucdccom为例子) DNS报文解析 TCP三次握手连接 进行HTTP交互(明文) HTTPS连接

    2024年02月04日
    浏览(45)
  • HTTPS加密协议详解:TLS/SSL握手过程

    基于RSA握手和密钥交换的客户端验证服务器为示例详解TLS/SSL握手过程。 (1).client_hello 客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数,扩展字段等信息,相关信息如下: 支持的最高TSL协议版本version,从低到高依次 SS

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包