SSL TLS openssl 详解

关系简介

首先我们来看下他们之间的关系。

SSL(Secure Socket Layer)安全套接层是Netscape公司率先采用的网络安全协议。

TLS(Transport Layer Security)传输层安全性协议也是一种网络安全协议,他是基于SSL开发的。可以看作是SSL的升级版。由IETF将SSL标准化后命名为TLS。

openssl是一个是一个开放源代码的软件库包,其主要库是以C语言所写成,他实现了SSL和TLS协议。并提供了其他有关加密证书等工具。

可以简单理解为如图所示:

SSL(Secure Socket Layer)

起源

SSL(Secure Sockets Layer)是网景公司(Netscape)设计的主要用于Web的安全传输协议,这种协议在Web上获得了广泛的应用。在1994年推出首版网页浏览器-网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。

基础算法由作为网景公司的首席科学家塔希尔·盖莫尔(Taher Elgamal)编写,所以他被人称为“SSL之父”。

版本历史

SSL一共有三个版本,目前都已弃用。

协议发布时间状态
SSL 1.0未公布未公布
SSL 2.01995年已于2011年弃用
SSL 3.01996年已于2015年弃用
  • 1.0版本从未公开过,因为存在严重的安全漏洞。
  • 2.0版本在1995年2月发布。2011年,RFC 6176标准弃用了SSL 2.0。
  • 3.0版本在1996年发布,是由网景工程师保罗·科切、Phil Karlton和Alan Freier完全重新设计的。2015年,RFC 7568标准弃用了SSL 3.0。

TLS(Transport Layer Security)

起源

IETF将SSL标准化,即 RFC 2246 ,并将其称为TLS(Transport Layer Security)。于1999年发布第一版,名为TLS 1.0。从技术上讲,TLS 1.0与SSL 3.0的差异非常微小。

版本历史

TLS 1.01999年于2021年弃用
TLS 1.12006年于2021年弃用
TLS 1.22008年
TLS 1.32018年

TLS 1.0

​​​IETF将SSL标准化,即 RFC 2246 ,并将其称为TLS(Transport Layer Security)。

TLS 1.1

TLS 1.1在RFC 4346中定义,于2006年4月发表,它是TLS 1.0的更新。在此版本中的差异包括:

  • 添加对CBC攻击的保护:
    • 隐式IV被替换成一个显式的IV。(IV 密码学中称为初始向量)
    • 更改分组密码模式中的填充错误。
  • 支持IANA登记的参数。

微软、Google、苹果、Mozilla四家浏览器业者将在2020年终止支持TLS 1.0及1.1版。2021年3月,RFC 8996标准弃用了TLS 1.0和TLS 1.1。

TLS 1.2

TLS 1.2在RFC 5246 中定义,于2008年8月发表。它基于更早的TLS 1.1规范。主要区别包括:

  • 增加SHA-2密码散列函数。
  • 增加AEAD加密算法,如GCM模式。
  • 添加TLS扩展定义和AES密码组合。所有TLS版本在2011年3月发布的RFC 6176中删除了对SSL的兼容,这样TLS会话将永远无法协商使用的SSL 2.0以避免安全问题。

TLS 1.3

TLS 1.3在RFC 8446中定义,于2018年8月发表。它与TLS 1.2的主要区别包括:

  • 将密钥交换算法(如ECDHE)和认证算法(如RSA)从密码包中分离出来。
  • 移除MD5、SHA1密码散列函数的支持。
  • 请求数字签名。
  • 集成HKDF和半短暂DH提议。
  • 替换使用PSK和票据的恢复。
  • 支持1-RTT握手并初步支持0-RTT。
  • 通过在密钥协商期间使用临时密钥来保证完善的前向安全性。
  • 放弃许多不安全或过时特性的支持,包括数据压缩、重新协商、非AEAD加密算法、静态RSA和静态DH密钥交换、自定义DHE分组、点格式协商、更改密码本规范的协议、UNIX时间的Hello消息,以及长度字段AD输入到AEAD密码本。
  • 较TLS 1.2速度更快,性能更好。
  • 移除RC4加密算法的支持。
  • 集成会话散列的使用。
  • 弃用记录层版本号和冻结数以改进向后兼容性。
  • 将一些安全相关的算法细节从附录移动到标准,并将ClientKeyShare降级到附录。
  • 支持Ed25519和Ed448数字签名算法。
  • 支持X25519密钥交换。
  • 支持带Poly1305消息验证码的ChaCha20加密算法。
  • 支持加密服务器名称指示(Encrypted Server Name Indication, ESNI)。

openssl

起源

OpenSSL计划在1998年开始,其目标是发明一套自由的加密工具,在互联网上使用。OpenSSL以Eric Young以及Tim Hudson两人开发的SSLeay为基础,随着两人前往RSA公司任职,SSLeay在1998年12月停止开发。因此在1998年12月,社群另外分支出OpenSSL,继续开发下去。

概述

OpenSSL工具包包括:

  • libssl 是 TLSv1.3 (RFC 8446) 之前所有 TLS 协议版本的实现。

  • libCrypto是一个全强度的通用加密库。它构成 在TLS实现的基础上,也可以独立使用。

  • openssl OpenSSL命令行工具,用于加密任务的瑞士军刀, 测试和分析。它可用于

    • 创建关键参数
    • 创建 X.509 证书、CSR 和 CRL
    • 消息摘要的计算
    • 加密和解密
    • SSL/TLS 客户端和服务器测试
    • 处理 S/MIME 签名或加密邮件
    • 以及更多...

版本历史

版本初始版本日期备注最近更新版本
0.9.11998年12月23日
  • OpenSSL项目的正式开启
0.9.1c(1998年12月23日)
0.9.21999年3月22日
  • 取代0.9.1c
0.9.2b(1999年4月6日)
0.9.31999年5月25日
  • 取代0.9.2b
0.9.3a(1999年5月27日)
0.9.41999年8月9日
  • 取代0.9.3a
0.9.4(1999年4月9日)
0.9.52000年2月28日
  • 取代0.9.4
0.9.5a(2000年4月1日)
0.9.62000年9月24日
  • 取代0.9.5a
0.9.6m(2004年3月17日)
0.9.72002年12月31日
  • 取代0.9.6m
0.9.7m(2007年2月23日)
0.9.82005年7月5日
  • 取代0.9.7m
0.9.8zh(2015年12月3日)
1.0.02010年3月29日
  • 取代0.9.8n
1.0.0t(2015年12月3日)
1.0.12012年3月14日
  • 取代1.0.0
  • 维护至2016年12月31日
  • 支持RFC 6520 TLS/DTLS心跳
  • 支持SCTP
  • RFC 5705TLS key material exporter
  • RFC 5764 DTLS-SRTP协商
  • Next Protocol Negotiation
  • PSS signatures in certificates, requests and 证书吊销列表
  • Support for password based recipient info for CMS
  • 支持TLS v1.2以及TLS v1.1
  • Preliminary FIPS capability for unvalidated 2.0 FIPS module
  • 支持 安全远程密码协议(SRP)
1.0.1u(2016年9月22日)
1.0.22015年1月22日
  • 取代1.0.1
  • 维护至2019年12月31日(长期维护)
  • Suite B支持TLS 1.2和DTLS 1.2
  • 支持 DTLS 1.2
  • TLS自动选择椭圆曲线(EC)
  • 用于设置TLS支持的签名算法和曲线的API
  • SSL_CONF配置API
  • 支持 TLS Brainpool
  • 支持 应用层协议协商
  • CMS支持 RSA-PSS、 RSA-OAEP、ECDH及X9.42 DH
1.0.2u(2019年12月20日)
1.1.02016年8月25日
  • 取代1.0.2h
  • 预计维护到2019年9月
  • 支持 BLAKE ( RFC 7693)
  • 支持 ChaCha20-Poly1305( RFC 7539)
  • 支持 X25519( RFC 7748)
  • 支持 DANE和 证书透明度
  • 支持扩 CCM密码包
  • 支持扩展主密钥
  • 移除SSLv2
  • 移除对Kerberos密码包的支持
  • 将RC4和3DES从libssl从DEFAULT密码包中移除
  • 将DSS、SEED、IDEA、CAMELLIA以及AES-CCM从DEFAULT密码包中移除
  • 将40和56位密码从libssl中移除
1.1.0l(2019年9月10日)
1.1.12018年9月11日
  • 将持续维护至少五年(预计到2023年9月)
  • 支持 TLS1.3
  • 支持 SHA-3
  • 支持 X448以及 Ed448( RFC 7748)
  • 支持 SipHash
  • 支持 ARIA (cipher)
  • 支持多素数 RSA( RFC 8017)
  • 支持 SM2、 SM3以及 SM4
  • 移除 Heartbleed
  • 移除对QNX支持的支持
1.1.1p(2022年6月21日)
3.0.02021年9月7日
  • 重新许可至 Apache License 2.0
  • 重新支持 FIPS 140
3.0.4 (2022年6月21日)

注1:

        openssl1.1分支的最新版为1.1.1t,于2023年2月7日发布,为长期支持版本。

        openssl3.0分支的最新版本为3.1.0,于2023年3月14日发布,为稳定版本。

注2:

        OpenSSL 项目是在 2018 年宣布更改版本号,从 v1.x 版本直接跳到 v3.x 版本,略过 2.x 版本,原因是 OpenSSL FIPS 模块此前已经使用过 2.x 版本号。作为首个大版本号更新,OpenSSL 3.0.0 没有完全向后兼容旧版本,但绝大部分使用 OpenSSL 1.1.1 的应用仍然能正常工作,只需重新编译下。

The Holy Hand Grenade of Antioch - OpenSSL Blog

openssl/openssl: TLS/SSL and crypto library (github.com)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破浪征程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值