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.0 1995年 已于2011年弃用
SSL 3.0 1996年 已于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.0 1999年 于2021年弃用
TLS 1.1 2006年 于2021年弃用
TLS 1.2 2008年
TLS 1.3 2018年

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.1 1998年12月23日
  • OpenSSL项目的正式开启
0.9.1c(1998年12月23日)
0.9.2 1999年3月22日
  • 取代0.9.1c
0.9.2b(1999年4月6日)
0.9.3 1999年5月25日
  • 取代0.9.2b
0.9.3a(1999年5月27日)
0.9.4 1999年8月9日
  • 取代0.9.3a
0.9.4(1999年4月9日)
0.9.5 2000年2月28日
  • 取代0.9.4
0.9.5a(2000年4月1日)
0.9.6 2000年9月24日
  • 取代0.9.5a
0.9.6m(2004年3月17日)
0.9.7 2002年12月31日
  • 取代0.9.6m
0.9.7m(2007年2月23日)
0.9.8 2005年7月5日
  • 取代0.9.7m
0.9.8zh(2015年12月3日)
1.0.0 2010年3月29日
  • 取代0.9.8n
1.0.0t(2015年12月3日)
1.0.1 2012年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.2 2015年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.0 2016年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.1 2018年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.0 2021年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)

猜你喜欢

转载自blog.csdn.net/yunxiaobaobei/article/details/129954738