TLS简单理解


TLS的历史

From GTP3.5
TLS(传输层安全)是一种加密协议,旨在确保 Internet 通信的安全性和隐私保护。下面是 TLS 的历史概述:
SSL(安全套接层):TLS 的前身是 Netscape 公司在 1994 年推出的 SSL 协议。
SSL 1.0、2.0 和 3.0 逐渐发展,但 3.0 存在一些安全漏洞。 TLS 1.0:为了解决 SSL 3.0 的安全漏洞,1999 年发布了 TLS 1.0。TLS 1.0 安全性更高,
主要基于 SSL 3.0。这是第一个被冠以 “TLS” 名称的版本,但其实质上仍然是 SSL。
TLS 1.1:在 TLS 1.0 发布后的几年,一些安全漏洞被发现。为了修复这些漏洞,于2006年发布了 TLS 1.1。
TLS 1.1 取消了对一些旧有密码套件的支持,增加了对新的安全特性的支持。
TLS 1.2:2008 年发布了 TLS 1.2,这是一个重要的更新。TLS 1.2 引入了对新的密码套件的支持,提供更高的安全性和效率。
它还解决了一些与 TLS/SSL 相关的安全问题。
TLS 1.3:TLS 1.3 是 TLS 的最新版本,于2018 年发布。TLS 1.3 进一步提高了安全性和性能,并简化了握手协议。
它废除了一些不安全和不常用的特性,提供更快的连接速度和更好的安全性。 总的来说,TLS 的历史是从 SSL 逐渐演化而来的。每个版本都添加了新的特性和安全性改进,以适应互联网发展中的需求,并修复已知的安全漏洞。 TLS 1.3 是目前使用最广泛的版本,也是最安全和高效的版本。

加密套件

什么是加密套件?
  加密套件是用于在SSL / TLS握手期间协商安全设置的算法的组合。
在ClientHello和ServerHello消息交换之后,客户端发送优先级列表的密码支持套件。
然后,服务器使用从列表中选择的密码套件进行响应。 TLS算法组合:
在TLS中,5类算法组合在一起,称为一个CipherSuite: 认证算法
加密算法
消息认证码算法 简称MAC
密钥交换算法
密钥衍生算法 比较常见的算法组合是
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 和
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
都是ECDHE 做密钥交换,使用RSA做认证,SHA256做PRF算法。
一个使用AES128-CBC做加密算法,用HMAC做MAC。
一个使用AES128-GCM做加密算法,MAC由于GCM作为一种AEAD模式并不需要。

这里是一个加密套件的例子:

TLS _ECDHE_ RSA _ WITH_AES_128_GCM _ SHA256
  TLS是协议。从ECDHE开始,在握手期间,密钥将通过临时ECDHE进行交换。RSA是认证算法。
AES_128_GCM是批量加密算法。SHA-256是散列算法。
  大多数浏览器和服务器都有各自支持的密码套件列表,两者将在握手过程中进行优先顺序比较,以确定使用的安全设置。
  最后作为TLS 1.3最终版本,这一切都会改变。虽然以前SSL / TLS通过TLS 1.2版本是使用上诉描述的加密套件模板,
但1.3版本的加密套件将会有所改变,因为它们仅用于协商加密和HMAC算法。
  因为1.3加密套件的结构与之前的版本不同,所以它们与旧的TLS版本不能进行互换。
  密码是算法,用于加密和解密。它们可以是对称的或不对称的,这取决于它们支持的加密类型。
  加密套件是用于在SSL / TLS握手期间协商安全设置的密码的命名组合。在握手期间,
客户端和服务器交换密码套件的优先级列表,并决定两者最佳支持的套件。
  在TLS 1.3中,加密套件的结构将改变。 来源: https://blog.csdn.net/gx11251143/article/details/104360375

cipher-suite介绍


一些说明

TLS 1.2其实存在的问题也很多, 比如不支持前向加密.
所以微软其实对TLS1.2非常不热心.
2009年发布的win7和 Win2008r2 就不支持 TLS1.2 但是TLS1.3的发布比较优秀. 基本上解决了大部分的安全问题.
各大开源软件 基本上再2018年都大部分支持了 TLS1.3
但是微软应该不使用 开源的代码, 自己进行代码开发.
所以实际上他这边使用的是自己开发的代码.
也导致Winserver2019发布时依旧不支持 TLS1.3
直到2021年发布的 Win Server 2022才正式支持 TLS1.3

关于TLS与TCP和HTTPS

TLS是传输层协议,HTTPS是表示层的协议.
HTTPS是建立在TLS协议之上的.
TLS其实是在TCP协议之上的安全协议. TLS1.3时增加了很多特性, 比如0rtt等, 性能以及安全性都有了很大的提升.
HTTPS 其实需要借助于证书 才可以实现加密访问.
证书其实是证明网站身份的证明.
证书内有网站的信息.公钥信息,以及上级CA给的办法的签名信息. 客户端拿到证书后, 会有浏览器内嵌的CA证书的公钥进行验签, 验证证书的真伪
验证证书之后再拿到网站的公钥, 进行非对称加密发送客户端的一些密文等信息 需要注意 https 除了握手阶段, 数据流量其实都是对称加密的.

关于软件对TLS1.3的支持

JDK
JDK11 正式支持 TLS1.3
JDK8 需要在261的版本才兼容支持TLS1.3 Windows
Windows2022 才支持TLS1.3.
Win2012 开始支持TLS1.2 nginx 在2018年的版本基本上就支持了TLS1.3

关于工具

IISCrypto.exe

下载地址:
https://www.nartac.com/Downloads/IISCrypto/IISCrypto.exe 需要注意 这个软件名字很傻逼. 但是软件贼牛B 他其实是影响整个系统的设置, 不单独是修改 IIS的设置.. 他的修改会影响 远程桌面, 数据库建立安全链接. 以及软件的其他设置等等. 这个工具可以极大的提升操作系统的安全性. 但是建议在能够访问主机(BMC等方式)时进行使用 某些操作系统该了之后会导致 远程桌面失效.

Windows2008r2的TLS增强设置

1. 更新补丁:
Windows6.1-KB3020369-x64
这个补丁是前置补丁, 不更新没法更新第二个可以安装TLS1.2兼容支持的补丁. 2.Windows6.1-KB3042058-x64
这个补丁是给Windows2008r2 增加TLS1.2支持的补丁, 必须先更新前置补丁1 3. windows6.1-kb3172605-x64
这个补丁应该是增加几个强度高一些的加密套件. 4. windows6.1-kb3140245,windows6.1-kb3080079
注意必须更新完这几个补丁再进行 TLS1.2Only的设置. 不然mstsc远程桌面就会失败. 注意 WindowsXPsp3据说可以使用:
windowsxp-kb4019276-x86-embedded-chs
这个补丁来开启TLS1.2的支持.

一个想法

其实TLS的设置分为服务端和客户端的设置. 

服务端的设置 基本上是用来进行client/browser 和server的通信
而 client 的设置, 是用于应用服务器建立与第三方服务之间的请求. 根据安全性的差异, 其实服务器的服务端请求应该是 内网的. 我理解重要性要低于 他作为client的情景. client 一般都是要进行 对外部系统的服务与调用请求.
可能会涉及一些重要的加解密事项, 比如银企直联, 发票/OCR识别等等. 他的重要性其实更高, 并且难度相应的也更大.

TLS简单理解的更多相关文章

  1. git的简单理解及基础操作命令

    前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制管理>这本书(偏理论,内容完善,很不错),针对所学 ...

  2. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  3. [转]简单理解Socket

    简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html  题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...

  4. Js 职责链模式 简单理解

    js 职责链模式 的简单理解.大叔的代码太高深了,不好理解. function Handler(s) { this.successor = s || null; this.handle = funct ...

  5. Deep learning:四十六(DropConnect简单理解)

    和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单 ...

  6. Deep learning:四十二(Denoise Autoencoder简单理解)

    前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Be ...

  7. 简单理解dropout

    dropout是CNN(卷积神经网络)中的一个trick,能防止过拟合. 关于dropout的详细内容,还是看论文原文好了: Hinton, G. E., et al. (2012). "I ...

  8. 我们为之奋斗过的C#-----C#的一个简单理解

    我们首先来简单叙述一下什么是.NET,以及C#的一个简单理解和他们俩的一个区别. 1 .NET概述 .NET是Microsoft.NET的简称,是基于Windows平台的一种技术.它包含了能在.NET ...

  9. 简单理解ECMAScript2015中的箭头函数新特性

    箭头函数(Arrow functions),是ECMAScript2015中新加的特性,它的产生,主要有以下两个原因:一是使得函数表达式(匿名函数)有更简洁的语法,二是它拥有词法作用域的this值,也 ...

  10. 简单理解JavaScript闭包

    很多关于JS的书籍例如<JavaScript权威指南>或者<高程>都把闭包解释的晦涩难懂,萌新们是怎么也看不懂啊!不过别怕,今天我就用很简单的方式给大家讲解下到底什么是闭包.这 ...

随机推荐

  1. EvilBox : ONE - WriteUp

    EvilBox : ONE 信息收集 扫描网段内存活主机,得到目标 nmap 进一步收集有效信息,只开放了22和80 访问80的页面没有什么有效信息 接着扫一下目录, 没有敏感的文件 在robots中 ...

  2. 前端 Git 使用约定

    前端 Git 使用约定 背景 开发前端项目,有以下困惑: 使用哪个分支开发,哪个分支发布 修复线上bug的流程是什么,如何避免修复完了下次却又出现了 cms分支有十多个,是否都有用 如何快速找到之前某 ...

  3. C语言之检验三边能否构成三角形

    要求: 编写程序检验由三边能否构成三角形,检验方法是任意两边和均要大于第三边. 输出格式:若结果可以构成,输出YES,否则输出ERROR DATA 其实很简单,运用与逻辑运算符&&判断 ...

  4. JavaScript apply、call、bind 函数详解

    apply和call apply和call非常类似,都是用于改变函数中this的指向,只是传入的参数不同,等于间接调用一个函数,也等于将这个函数绑定到一个指定的对象上: let name = 'win ...

  5. POJ 2609 DP 双队列DP

    POJ 2609 DP 双队列DP 题意 给出队列容量与一组数,并且我们有两个这样容量的空队列,要求我们按照次序把数装进两个队列中,输出最多能装多少以及每个数装进哪个队列. 思路 由于按照次序来装,不 ...

  6. 面试官问我:线程锁导致的kafka客户端超时,如何解决?

    本文分享自华为云社区<线程锁导致的kafka客户端超时问题>,作者: 张俭 . 问题背景 有一个环境的kafka client发送数据有部分超时,拓扑图也非常简单 定位历程 我们先对客户端 ...

  7. 实战案例丨使用云连接CC和数据复制服务DRS实现跨区域RDS迁移和数据同步

    摘要:实践案例展示如何使用云连接CC和数据复制服务DRS实现跨区域RDS迁移和数据同步. [业务场景及诉求] 希望将不同区域"华北-北京四"的rds与"亚太-新加坡&qu ...

  8. 想了解Xtrabackup备份原理和常见问题分析,看这篇就够了

    摘要:本文来自华为云MySQL研发团队,主要分享了MySQL备份工具Xtrabackup的备份过程.华为云数据库团队对其做的优化改进,以及在使用中可能遇到的问题与解决方法. 本文分享自华为云社区< ...

  9. 一起玩转玩转LiteOS组件:Opus

    摘要:Opus编码器是一个开源的有损声音编码格式,适用于网络实时声音传输,标准格式为RFC 6716,相对于其他编码格式来说,保真性更好. 本文分享自华为云社区<LiteOS组件尝鲜-玩转Opu ...

  10. 万字长文|Hadoop入门笔记(附资料)

    大数据迅速发展,但是Hadoop的基础地位一直没有改变.理解并掌握Hadoop相关知识对于之后的相关组件学习有着地基的作用.本文整理了Hadoop基础理论知识与常用组件介绍,虽然有一些组件已经不太常用 ...