百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

OpenSSL新架构蓝图

bigegpt 2024-08-10 12:07 20 浏览

概述

日前OpenSSL官网公布了未来OpenSSL的架构蓝图。作为战略性的架构目标,需要大量的版本迭代本文档概述了OpenSSL战略架构。它需要多个版本的迭代从目前最新的版本1.1开始直到3.0甚至是4.0最终实现。由于版本架构变动非常大,涉及大量的变化和迭代,力争在OpenSSL 3.0.0版本中实现对绝大多数应用程序的影响最小,并能高性能的编译迁移。3.0后对目前版本的功能将通过API来实现,现有引擎将不再支持。本文虫虫和大家一起来学习OpenSSL的现有架构、存在问题,新架构、特点,实现等。

现有架构

当前版本OpenSSL提供的功能主要通过四个主要组件提供:

1. libcrypto加密库。该库提供了大量加密算法的实现。另外提供libssl和libcrypto使用支持服务,以及CMS和OCSP等协议的实现。

2.引擎。 libcrypto的功能可以通过Engine API进行扩展。引擎是可动态加载的模块,它们向libcrypto注册并使用可用的钩子来提供加密算法实现。通常这些hook由libcrypto提供的算法的替代实现(例如,用于实现算法的硬件加速),还包括默认未在OpenSSL中实现的算法。引擎作为OpenSSL发行版的一部分提供,未实现的引擎则通过外部第三方提供。

3.libssl。该库依赖于libcrypto并实现TLS和DTLS协议。

4.应用程序。应用程序是一组命令行工具,这些工具使用底层的libssl和libcrypto库来提供一系列的加密和其他功能:

密钥和参数的生成和检查;

证书生成和检查;

SSL/TLS测试工具集;

ASN.1检查;

其他等。

现有架构的特点和问题

目前版本的OpenSSL具有以下特征和问题:

1.EVP层

EVP在API级别提供与具体加密功能实现和打包分开的的高级抽象接口。

EVP层还提供复合操作,例如签名和验证的打包。一些复合操作也EVP级操作提供(例如HMAC-SHA256)。

EVP还允许使用算法无关的方式使用加密算法(例如,EVP_DigestSign适用于RSA和ECDSA算法)。

2.不支持FIPS140。

FIPS140只能在OpenSSL-1.0.2中使用,它早于目前架构,不兼容API或ABI。

架构图

现有的体系结构是一个简单的4级分层,底部为引擎层和算法层。 TLS层依赖于加密层,应用程序依赖于TLS和加密层。

注意:图中组件的存在并不表示该组件是公共API或旨在供最终用户直接访问或使用。

打包图

以上的各层的功能和组件都被打包到了基础库(libcrypto和libssl)以及相关的引擎接口以及用于运行各种应用程序实现的"openssl"命令行可执行文件。打包图如下所示。

新架构

新架构的特点

新架构的的目的是优化现有架构,新架构由一下功能组成:

1、核心服务由应用程序和应用程序提供器使用的构建块组成。 (例如BIO,X509,SECMEM,ASN1等)。

2、提供器实现加密算法和支持服务。提供器由以下一个或多个功能的组合:

算法的加密子,例如如何加密/解密/签名/哈希等

算法的序列化,例如如何将私钥转换为PEM文件。序列化当前支持的格式或者不支持的格式的扩展。

存储加载后端。 OpenSSL目前有一个存储加载程序,可以从文件中读取密钥,参数和其他项。提供器可以从另一个位置(例如LDAP目录)加载加载器。

提供器可以是完全独立的,也可以使用由不同提供器或核心服务提供的服务。

例如,应用程序可以使用一个加密原子实现由硬件加速提供程序实现的算法,但是其他程序提供的序列化服务把密钥导出为PKCS#12格式。

程序默认内置一个提供器(包含由当前OpenSSL加密算法实现的核心),但其他提供器可以在在运行时动态加载。

旧提供器模块将为较旧的算法(例如,DES,MDC2,MD2,Blowfish,CAST)提供加密实现。 OMC会发布一个策略,说明从旧提供器转化到默认提供器的时间和迁移方法。

FIPS提供器内嵌的OpenSSL FIPS加密模块可以在运行时动态加载。

3、核心实现对默认应用程序提供器(和其他提供商)提供的服务器的访问。提供器负责为Core提供服务和方法。

Core将实现基于属性的查找功能,用于算法查找,例如通过"fips = true"或"keysize = 128,constant_time = true"这样条件来搜索算法。

4、协议的实现。例如。 TLS,DTLS。

新架构的特点:

1、EVP层功能缩减,仅仅对提供器提供的服务进行打包。大多数功能将直接调用,没有或者很少的预处理和后处理。

2、将提供新的EVP API用来查找Core中提供给特定EVP调用的算法的实现。

信息将以与实现无关的方式在核心库和提供者之间传递。

3、旧API将被删除(例如绕过EVP层的底层API)。

4、OpenSSL FIPS加密模块将由动态加载的提供器实现,并且自包含,只依赖于核心提供的系统运行时库和服务。

5、其他接口也可能会随着时间的推移而转换到核心库。

6、引擎功能由提供器取代。

架构图

OpenSSL新架构图如下图所示。

上图中显示的组件如下:

1、应用程层:命令行应用程序,例如ca,ciphers,cms,dgst等

2、协议:提供根据标准协议在端点之间进行通信的功能

TLS协议:所有支持的TLS/DTLS协议和支持基础设施的实现,例如:

SSLBIO:使用TLS进行通信的BIO

Statem:TLS状态机

RECORD:TLS记录层

其他协议:

CMS:加密消息语法标准的实现

OCSP:在线证书状态协议的实现

TS:时间戳协议的实现

支持服务:用于支持协议代码实现的组件

Packet:用于读取协议消息的内部组件

Wpacket:用于编写协议消息的内部组件

3、核心:这是将服务请求(例如加密)关联到该服务的提供器的基础组件。核心实现了提供器的注册几附属参数的设置。它还支持通过对给定服务属性进行服务的搜索功能。例如,加密服务的属性可能包括"aead","aes-gcm","fips","security-bits = 128"等。

4、默认提供器:实现核心启动时默认注册服务。

支持服务

低层实现:这是实际实现加密算法的一组组件。

5、FIPS提供器:实现一组经过FIPS验证并可供核心使用的服务。包括以下支持的服务:

POST:开机自检

KAT:已知的答案测试

完整性检查等等

6、旧提供器:提供通过EVP级API公开的旧算法的实现,为向后兼容提供服务。

7、第三方提供器:不属于OpenSSL发行版。第三方可以实施自己的提供者。

8、公共服务:这部分构成了应用程序和提供器可用的构建块。 (例如BIO,X509,SECMEM,ASN1等)。

9、旧版API。 低层API。这里的特指老API,而不是算法本身。例如,AES不是老算法,但它还在老API中(例如AES_encrypt)。

打包图

以上的架构图提供各种组件都会打包到一下文件,打包图如下:

可执行的应用程序供用户使用;

应用程序使用的库;

可动态加载的模块供核心使用。

图中涉及的包有:

Openssl可执行文件。命令行应用程序。

libssl。这包含与TLS和DTLS直接相关的所有内容。它的内容与现有架构中的libssl大致相同,某些支持服务将移至libcrypto。

Libcrypto。该库包含以下组件:

核心服务的实现,例如:X509,ASN1,EVP,OSSL_STORE等

核心

与TLS或DTLS无关的协议

协议支持服务(例如Packet和Wpacket)

默认提供程序,包含所有默认算法的实现

Libcrypto旧程序。提供兼容老程序的底层API。这些APIS算法的实现可能来自任何提供器。

FIPS模块。它包含FIPS提供器程序,该提供程序实现一组经过FIPS验证并在核心中注册的服务。

旧模块。这包含旧版提供器程序。

相关推荐

5分钟调色大片的方法(5分钟调色大片的方法有哪些)

哈喽大家好。在大家印象中一定觉得ps非常难学非常难。大家不要着急,小编的教学都是针对ps零基础的同学的,而且非常实用哦。只要大家跟着图文练习一两遍,保证大家立马学会~!好了,废话少说,下面开始我们今天...

闪白特效原来是这么用的(闪白特效怎么使用)

作者|高艳侠订阅|010-86092062闪白特效是影视作品中应用比较多的效果之一,那么具体该在哪些场景使用闪白特效?具体该如何操作?下面就以AdobePremiere(以下简称PR)为例,...

ppt常用小图标去哪里找?3个矢量素材网站推荐!

ppt是一个注重可视化表达的演示载体,除了高清图片,ppt中另一类常用的素材是各种小图标,也叫矢量图标,巧妙运用小图标能提升整体美观度和表现力,那么ppt常用小图标去哪里找呢?为方便各位快速找到合适的...

有什么好用的截图录屏工具?试试这9款

经常有朋友反馈苦于缺乏截屏和录屏的趁手工具,本期我们分享几个相当好用的截屏和录屏工具,希望能帮到大家。ScreenToGifScreenToGif是一款免费且开源的录屏工具。此款工具最大的特点是可以...

配色苦手福音!专业快速色环配色PS插件

今天橘子老师给的大家介绍的是一款快速配色的插件,非常强大配色苦手福音来啦!(获取方式见文末)【插件介绍】配色在后期设计中占有主导地位,好的配色能让作品更加抢眼Coolorus这款专业的配色插件,能够...

如何用PS抠主体?(ps怎么抠主体)

1.主体法抠图-抠花苞和花梗导入一张荷花苞的照片,点击上图中顶部“选择”菜单栏,下拉单击“主体”。可以看到,只有花苞被选中,但是花梗并没有被选中。接下来单击上图中左侧工具栏的“快速选择工具”,上图中顶...

2799元的4K电视,有保障吗?(买4k电视机哪个品牌好)

在上一期《电脑报》的3·15专题报道中,我们揭露了一款不靠谱的42英寸4K智能电视——TCLD42A561U。这款售价2699元的4K智能电视不仅4K画质方面存在严重问题,而且各种功能和应用体验也不理...

苹果电脑的Touch Bar推出一段时间了 这款工具可以帮你开发适用于它的APP

距离苹果推出带有TouchBar的MacBookPro已经有一段时间了,除了那些像Adobe、Google和Microsoft大公司在开发适用于TouchBar的应用之外,其实还有很多独立的开...

如魔法般吸取颜色的桌灯(如魔法般吸取颜色的桌灯叫什么)

色彩为生活带来的感官刺激,逐渐被视为理所当然。一盏桌灯运用它的神奇力量,将隐藏于物件中的颜色逐一释放,成为装点环境的空间魔法师。ColorUp是一款可以改变颜色的吸色台灯,沿用传统灯泡的造型,融入了拾...

一篇文章带你用jquery mobile设计颜色拾取器

【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...

ps拾色器快捷键是什么?(ps2019拾色器快捷键)

ps拾色器快捷键是什么?文章末尾有获取方式,按照以下步骤就能自动获得!学会制作PS特效需要一定程度的耐心和毅力。初学者可以从基本的工具和技术开始学习,逐渐提高他们的技能水平。同时,观看更多优秀的特效作...

免费开源的 Windows 截图录屏工具,支持 OCR 识别和滚动截图等

功能很强大、安装很小巧的免费截图、录屏工具,提供很多使用的工具来帮我么能解决问题,推荐给大家。关于ShareXShareX是一款免费的windows工具,起初是一个小巧的截图工具,经过多年的迭...

入门到精通系列PS教程:第13篇 · 拾色器、颜色问题说明及补充

入门到精通系列PS教程:第13篇·拾色器、颜色问题说明及补充作者|侯潇问题说明我的第12篇教程里,有个小问题没有说清楚。要说是错误,又不算是错误,只是没有说准确。写完那篇教程后,因为已经到了深...

PS冷知识:用吸管工具吸取屏幕上的任意颜色

今天,我们给大家介绍PS中的一个冷知识:用吸管工具可以吸取屏幕上的任意颜色。其实,操作起来是非常简单的。大多数情况下,我们认为,PS的吸管工具只能吸取PS软件作图区域范围内的颜色,最多加上画布四周的...

Windows 11 将提供内置颜色选择器工具

Windows11内置了颜色选择器,可以扫描并识别屏幕上的颜色并生成颜色代码。此外,微软还利用人工智能技术,让屏幕上的文本扫描和选择变得更加便捷。这两项功能均已在SnippingToolv1...