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. TypeScript核心基础

    前言 为了方便我们直接使用脚手架让他帮我们直接编译就完事了 创建一个 Vue 应用 前提条件 熟悉命令行 已安装 16.0 或更高版本的 Node.js npm init vue@latest 这一指 ...

  2. vulnhub - lazySysAdmin - writeup

    信息收集 可以看到目标开放了常见的22, 80, 139, 445, 3306这个6667的服务少见. root@kali tmp/lazySysAdmin » arp-scan -I eth1 -l ...

  3. DataX快速入门

    DataX3.0快速入门 一.DataX3.0概览 DataX是阿里云DataWorks数据集成的开源版本,在阿里巴巴集团内部被广泛使用的离线数据同步工具/平台.解决了数据库之中的数据同步.迁移问题, ...

  4. 在Mac上打开Emoji键盘 ⌨️

    因为想要输入Emoji字符,以前总上到网上搜,如 emojipedia.org ,然后复制.最近,输入Emoji有点多,就想查查有没有什么简便方法. 果然有,我用的是macOS,只要按下键盘上的 co ...

  5. 掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆

    本文分享自华为云社区<掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆>,作者:GaussDB 数据库 . 近日,在华为开发者大会2023(Cloud)的"G ...

  6. 扎根CNCF社区贡献五年是怎样的体验?听听华为云原生开源团队的负责人怎么说

    摘要:本月我们要重点介绍王泽锋(Kevin Wang),他是 CNCF 社区的长期贡献者,华为云原生开源团队的负责人,KubeEdge 和 Volcano 项目的联合创始人.Kevin 回答了几个关于 ...

  7. 教你VUE中的filters过滤器2种用法

    摘要:Vue.js 允许我们自定义过滤器,可被用于一些常见的文本格式化. 本文分享自华为云社区<VUE中的filters过滤器用法>,作者:小小张自由--张有博. 前言 Vue.js 允许 ...

  8. 手把手带你做LiteOS的树莓派移植

    摘要:树莓派是英国的慈善组织"Raspberry Pi 基金会"开发的一款基于arm的微型电脑主板.本文介绍基于LiteOS的树莓派移植过程. 本文分享自华为云社区<2021 ...

  9. 为提高 SDLC 安全,GitHub 发布新功能|GitHub Universe 2022

    GitHub Universe 2022于上周举办.在此次大会上,Github 公布了开源软件状态的最新报告,报告中的统计数据显示,90% 的公司都在使用开源,现在 GitHub 上有9400万用户, ...

  10. 转换 nvarchar 值 '81000000825' 时溢出了整数列

    转换 nvarchar 值 '81000000825' 时溢出了整数列