首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这么理解TLS协议,以及TLS协议的握手过程

TLS(更早期的版本是SSL)出现之前,很多公司为了保证自家产品客户端与服务端信令交互数据安全,或通过基于TCP协议,自定义支持加解密的二进制应用协议(用于APP),或通过加密HTTP协议请求&响应的...TLS协议支持双向认证和单向认证,但一般都只使用单向认证。单向认证是只需要客户端验证服务端的真实性,避免用户访问钓鱼网站。双向认证则是服务端也要验证客户端的真实性(本文不讨论)。...为了解决这个问题,于是就有了CA机构。网站通过CA机构签发证书(证书包含密钥),私钥由网站放在服务器上使用,公钥则在TLS握手阶段由网站传给客户端。...那么,HTTPS是什么呢,HTTPS就是HTTP+TLS,但不是简单的相加。TLS即传输层安全协议,在TCP协议之上。...这说明,TLS与TCP协议无关,TLS的握手自然也跟TCP协议三次握手无关,不要混到一起理解。

1.4K30

TLS协议分析 (三) record协议

4. record 协议 record协议做应用数据的对称加密传输,占据一个TLS连接的绝大多数流量,因此,先看看record协议 图片来自网络: ?...TLS数据流一个方向的部分明文(比如协议里面的固定值),那么对2个方向的密文做一下xor,就能得到另一个方向对应部分的明文了。...协议版本,例如 TLS 1.2 version 是 { 3, 3 } length字段 : 即长度,tls协议规定length必须小于 214,一般我们不希望length过长,因为解密方需要收完整个...type字段 : ,用来标识当前record是4种协议中的哪一种, record压缩 : TLS协议定义了可选的压缩,但是,由于压缩导致了 2012 年被爆出[CRIME攻击,BREACH攻击] 链接...tls使用的是 MAC-then-Encrypt 的模式,导致了一些问题

1.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

TLS协议学习笔记

TLS协议是不依赖双向安全的,只要有单向安全就能保证TLS是安全的,后面会再介绍TLS协议的实现。 下面是维基百科上一个非对称加密的例子。鲍伯持有着私钥,并把公钥公开给了爱丽丝。...数字证书就是为了解决公钥被替换冒充问题而产生的,那么数字证书到底是什么呢?...三,TLS协议的过程 TLS协议做了如下几件关键事情: 客户端请求服务端证书。如果是双向验证,服务端也会向客户端请求证书。...Client客户端发起TLS通信请求,请求里有Client支持TLS协议版本,支持的加密方法(比如RSA加密),第一个随机数,并请求Server的证书 Step2....Server服务端给Client回复支持TLS协议和加密方法,Server端的证书,以及第二个随机数。如果Sever需要验证Client的身份,还会请求Client的证书。 Step3.

2.2K51

TLS握手协议详解

一 点睛 握手协议TLS握手协议的一部分,负载生成共享密钥以及交换证书。其中,生成共享密钥是为了进行密码通信,交换证书是为了通信双方相互进行认证。...因为不同的客户端(Web浏览器)所支持的方式不同,具体使用哪一种方式来通信,需要和服务器进行协商。 “当前时间”在基本的TLS中是不使用的,但上层协议中有可能会使用这一信息。...在这个消息之后,TLS记录协议就开始使用双方协商决定的密码通信方式了。 11 Finished(客户端->服务器) 客户端发送Finished消息 客户端:握手协议到此结束。...服务器:握手协议到此结束 这一消息会使用切换后的密码套件来发送。实际服务加密操作的是TLS记录协议。...14 切换至应用数据协议 在此之后,客户端和服务器会使用应用数据协议TLS记录协议进行密码通信。 从结果来看,握手协议完成了下列操作。 客户端获得服务器合法公钥,完成了服务器认证。

1K40

TLS协议分析 (四) handshake协议概览

为了在握手协议解决降级攻击的问题TLS协议规定:client发送ClientHello消息,server必须回复ServerHello消息,否则就是fatal error,当成连接失败处理。...注:为了帮助解决管道阻塞的问题,ChangeCipherSpec是一个独立的TLS protocol content type,并不是一个握手消息。...Message flow for an abbreviated handshake 5.2. handshake 协议外层结构 从消息格式来看,TLS Handshake Protocol 在 TLS...也就是说,TLS协议可以当成状态机来建模编码。 下面按照消息发送必须遵循的顺序,逐个解释每一条握手消息。...在实践中,session cache在服务器端要求key-value形式的存储,如果tls服务器不止一台的话,就有一个存储怎么共享的问题,要么存储同步到所有TLS服务器的内存里,要么专门搞服务来支持存储

1.1K30

DTLS协议介绍,Udp协议基于TLS

DTLS介绍 UDP协议是不面向连接的不可靠协议,且没有对传输的报文段进行加密,不能保证通信双方的身份认证、消息传输过程中的按序接收、不丢失和加密传送。...cookie验证身份的具体机制为: 协议规定客户机发送的第一个报文段client_hello中含有cookie的值这一项(有可能为空)。...此外,该报文段的内容还有客户机支持的加密方式(PSK或者ECC)和压缩方式,供服务器进行选择。 在通过cookie校验后,服务器发送server_hello报文段给客户机。...基于ECC加密方式的ECDH秘钥交换协议和ECDSA数字签名算法 若协议所选加密方式为ECC(椭圆曲线加密),则在server_key_exchange报文段的构造过程中会使用ECDH(椭圆曲线秘钥交换协议...ECDH和ECDSA分别是ECC和DH(diffie-hellman)秘钥交换协议、DSA(数字签名算法)的结合。

2.2K10

SSL TLS 协议运行机制详解

链接:www.ruanyifeng.com/blog/2014/02/ssl_tls.html 互联网的通信安全,建立在SSL/TLS协议之上。 本文简要介绍SSL/TLS协议的运行机制。...最新的变动是2011年TLS 1.2的修订版。 目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。...三、基本的运行过程 SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。 但是,这里有两个问题。...(1) 支持协议版本,比如TLS 1.0版。 (2) 一个客户端生成的随机数,稍后用于生成”对话密钥”。 (3) 支持的加密方法,比如RSA公钥加密。 (4) 支持的压缩方法。...(1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。 (2) 一个服务器生成的随机数,稍后用于生成”对话密钥”。

77040

TLS协议分析 (五) handshake协议 证书与密钥交换

这种用法没有前向安全性,因此在 TLS 1.3中被废弃了 ECDH_ECDSA / ECDH_RSA 能做 ECDH 用途的公钥;公钥必须使用 客户端支持的ec曲线和点格式。...要注意的是,存在一些证书使用了TLS目前不支持的 算法组合。例如,使用 RSASSA-PSS签名公钥的证书(即证书的SubjectPublicKeyInfo字段是id-RSASSA-PSS)。...ProtocolVersion client_version; opaque random[46]; } PreMasterSecret; ​ client_version 客户端支持的最新协议版本号...另一种解决问题的方法是,把版本号不符,当成 PKCS-1 格式错误来对待,并且完全随机填充 premaster secret。...实现者从 SSLv3 升级到 TLS 时,必须修改自己的实现,以接受并且生成带长度的格式。如果一个实现要同时兼容 SSLv3 和 TLS,那就应该根据协议版本确定自己的行为。

1.4K20

OpenSSL支持TLS1.3特性(1)

OpenSSL支持TLS1.3特性: TLS 1.3版本是对规范的重大修改。它到底应该叫TLS2.0还是现在的名字TLS 1.3,还存在一些争论。该版本有重大变化,一些工作方式也非常不同。...下面是你可能需要注意的一些问题,简明扼要,不过并不太全面。 (1)有一些新的密码套件仅在TLS 1.3下工作。一些旧的密码套件无法用于TLS 1.3连接。...(10)在TLS 1.3连接中不再允许使用DSA证书。 注意,在这一阶段,只支持TLS 1.3。因DTLS 1.3版本的规范刚刚开始制定,目前并不支持OpenSSL。...这是交互性问题产生的共同来源。18版草案的交互性已被BoringSSL、NSS和picotls测试过。...但是,ECDHE组中没有TLS 1.3密码套件,所以如果启用了TLS 1.3,那么这种密码套件配置在OpenSSL 1.1.1中将会出错。你可能要指定你想使用的TLS 1.3密码套件来避免出现问题

2.8K20

TLS协议分析 (一) 设计目标及历史

目录 : TLS协议分析 与 现代加密通信协议设计 一 . TLS协议的设计目标: 1. 密码学的方法论 2. TLS的设计目标 3. TLS的历史 二. TLS协议的原理 1....TLS CipherSuite 3. 协议分层 4. record 协议 4.1....TLS扩展: 11. TLS的配套:PKI体系 11.1. X.509 证书 11.2.现有PKI体系暴露出的问题 11. TLS协议历史上出现过的漏洞,密码学常见陷阱 11.1....TLS的漏洞 12.1. TLS的漏洞 12.2. 密码学常见陷阱 13. 下一代TLS: TLS 1.3 三. TLS协议的代码实现 四. TLS协议的部署与优化 五....目前(2015年)应该主要部署的版本,请确保你使用的是这个版本 2015之后: TLS 1.3,还在制订中,支持0-rtt,大幅增进安全性,砍掉了aead之外的加密方式 由于SSL的2个版本都已经退出历史舞台了

1K20

tls协议和ssl协议的区别_起因和由来的区别

SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。...TLS:(Transport Layer Security 安全传输层协议)用于在两个通信应用程序之间提供保密性和数据完整性。TLS记录协议用于封装各种高层协议。...该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake) 3、SSL与TLS的关系 是SSL 3.0的后续版本。...在TLS与SSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。 SSL是Netscape开发的专门用户保护Web通讯的,目前版本为3.0。...Layer Security 安全传输层协议),可以说TLS就是SSL的新版本3.1,并同时发布“RFC2246-TLS加密协议详解”。

83320

解决envoy TLS握手失败问题

在我们使用envoy替换原有云上alb的过程中,遇到了加密套件不兼容的问题,导致有大量大握手失败,对比envoy文档上的支持,我们发现envoy相对于云上ALB,少了以下六个cipher,除了ECDHE...椭圆加密算法外剩余四个都是比较常用的,虽然这四个目前都是弱,但是不能因为这个损失用户,还是要先兼容再考虑升级问题。...AES256-SHA256", boringssl envoy使用的boringssl,BoringSSL 是 OpenSSL 的一个分支,旨在满足 Google 的需求,而谷歌对安全要求也是比较高的,不支持这些弱...cipher也情有可原,通过搜索我们发现在这个pr[1] 里删除了支持,只要我们复原就可以了,这里我在找到envoy当前依赖的boring版本,fork后添加上述PR的cipher,提交到GitHub,

95310

.NET Core TLS 协议指定被我钻了空子~~~

【导读】此前,测试小伙伴通过工具扫描,平台TLS SSL协议支持TLS v1.1,这不安全,TLS SSL协议至少是v1.2以上才行,想到我们早已将其协议支持v1.3,那应该非我们平台问题。...近日,第三方合作伙伴再次提到该高危安全问题,我依然自信的解释,与我们平台无关,应与openssl自身配置支持v1.1有关,但此问题必须得到解决,抱着半信半疑的态度,难道是代码问题?...于是乎,开始探索之路,本文以ASP.NET Core 3.1.20作为示例 验证TLS SSL协议问题 由于平台相关配置启用太多,以排除带来的影响,我单独写了一个干净的web api,代码如下。...SSL协议默认启用的是支持v1.1和v1.2,明明设置的是仅支持v1.3,这不是和没设置一样吗?...看来猜测的不错,和配置顺序有关系,v1.1协议已不支持,同理,对于配置v1.3输出结果如下 至此,TLS SSL协议指定已经得到了解决,稍加思索,想想也正常,监听端口之前,必须建立连接,所以协议配置肯定在监听端口之前指定

48810

真正“搞”懂HTTPS协议17之TLS握手

这个握手过程与TCP类似,是HTTPS和TLS协议里最重要、最核心的部分,搞懂了TLS握手,你就掌握了HTTPS。 一、TLS协议的组成   在讲TLS握手之前,我们先来了解下TLS协议的组成。   ...TLS 包含几个子协议,你也可以理解为它是由几个不同职责的模块组成,比较常用的有记录协议、警报协议、握手协议、变更密码规范协议等。...比如,protocol_version 就是不支持旧版本,bad_certificate 就是证书有问题,收到警报后另一方可以选择继续,也可以立即终止连接。...其次,在TLS握手完成之前,也就是出现ChangeCipherSpec之前,所有的消息都是明文传输的。欸?明文传输,那不会泄露交换的数据么?这个问题我就不回答了,回忆一下我们前两章讲的东西。   ...二、双向认证   其实到这里TLS握手的核心就基本完事了。只不过大家发现一个问题没有,上图中,只有服务器传了Certificate,让客户端验证服务器的身份。而服务器并没有验证客户端的身份。

86030

netty系列之:让TLS支持http2

简介 我们知道虽然HTTP2协议并不强制使用HTTPS,但是对大多数浏览器来说,如果要使用HTTP2的话,则必须使用HTTPS,所以我们需要了解如何在netty的TLS支持http2。...TLS的扩展协议NPN和ALPN HTTP2协议是从spdy协议发展而来的,无论是spdy还是http2都为了能在HTTPS的环境下工作,发展出来了TLS协议的扩展。...他们规定了在TLS协议握手之后,客户端和服务器端进行应用数据通信的协议。...NO_ADVERTISE: 如果选择应用程序协议的节点没有找到匹配项,它将通过在握手中假装不支持 TLS 扩展。...selectedBehavior是通知被选择的协议之后的表现方式,也有3种方式: ACCEPT: 如果节点不支持对方节点选择的应用程序协议,则该节点默认不支持TLS扩展,然后继续握手。

56310

Nginx支持TLS1.3部署详解

早就听说有TLS1.3了,一直心痒痒,想折腾折腾试试。以前浏览器支持的不多,网上也没太多人试过,不太敢趟雷。...现在有一些大型网站网站已经弄上了TLS1.3,也有不少博主给自己的博客升级了TLS1.3了,留下了宝贵的经验。我也忍不住了,今天就来折腾一下看看。...由于安全性升级的考虑,我删除了TLS1和TLS1.1。除此以外,TLS1.3的新加密套件只能在TLS1.3中使用,旧的加密套件不能用于TLS1.3。似乎所有虚拟主机都要配置才能使用TLS1.3。...成功 重启Nginx,你会发现你的网站已经是TLS1.3连接了。 一点问题 我原本使用的是Nginx 1.14.0,现在升级到了1.15.4,配置文件可能会报以下警告。...OpenSSL 1.1.1 LTS已经正式发布了,TLS1.3也已经正式公布。现阶段,Nginx、Apache等主流web服务器还没有官方支持,还需要通过打补丁的方式进行支持

2.4K20
领券