綠色軟件,81下載應有盡有
OpenSSLv1.2.1下載

OpenSSL v1.2.1

  • 類別:編程開發
  • 大小:138.95 MB
  • 時間:2022-03-17
  • 評分:
  • 平臺:WinAll
  • 下載:530次

OpenSSL軟件介紹

OpenSSL是一款用于传输层安全(TLS)和安接字层(SSL)协议的商业级且功能齐全的工具包;它也是一个通用加密库,OpenSSL是根据Apache样式的许可证授权的,这基本上意味着您可以在一些简单的许可证条件下自由地将其用于商业和非商业目的;用户可以使用OpenSSL工具将TLS和SSL加密协议实现到您的项目中,这基本上是一个开放源代码库,可与多个作系统兼容,以保护您在线传输的数据;Internet数据传输安全,SSL和TSL协议通常用于保护在线通信的安全,用户使用身份验证密钥和数据加密来做到这一点,从而使重要消息保持机密;该软件为用户提供了一种生成安全密钥和加密数据的可方法,这样,敏感可以安全地在线传输,C语言用于开发主库,甚至还有一个命令行工具,可以让您访问可用的每个密码和算法!

OpenSSL下载

OpenSSL下载

相关推荐 软件介绍 下载地址
易语言免安装绿色破解版 81下载编程开发频道小编给大家带来了易语言软件作一番介绍,易语言是一款编程开发用途的电脑软件,小编亲测,并了解了易语言免安装绿色破解版下载这款软件的过人之处!值得一用!要是伙伴们需要易语言这款编程开发软件的话,欢迎跟随小编一起往下了解了解易语言这款软件!易语&helli 点击查看
Access2010 Access2010免费下载主要用于编程开发一款功能全面的数据库的电脑软件,81下载小编给大家带来了Access2010下载以及软件相关信息,需要这款Access20105.85软件的朋友们,欢迎跟小编一起了解一下这个软件有什么不同吧!快来下载吧。相关软件下载地址webSm绿色破解免安装v... 点击查看
AirtestIDE AiesIDE免费下载是编程开发的一款全面的横屏开源化脚本服务电脑软件,81下载小编推荐AiesIDE软件下载和使用介绍分享给大家,总体来说AiesIDEv1.2.2软件通常比较操作简单容易上手,是很多用户必备选择,欢迎大家下载!相关软件下载地址Access2019数据库中文破解免费... 点击查看

OpenSSL软件功能

支持的多种加密算法该工具支持多种加密算法。

该控制台可用于通过AES,DES,SHA-1或MD5生成个人证书和密钥。

该库还支持使用公共密钥的密码学算法,包括DSA和RSA。

下载包中不包含文档。但是,有许多可用的在线资源介绍了如何实现算法。

由于它是一个开源社区,因此您也可以为其贡献材料。

控制台是此软件包中使用工具的地方。

在这种情况下,仅熟悉图形界面的经验不足的用户可能会遇到麻烦。

另外,用户必须对加密标准和加密算法了解很多,才能成功使用该库。

总体而言,OpenSSL是一个功能强大的实用程序

用于管理和创建各种项目的公用密钥,专用密钥和证书。

OpenSSL软件特色

OpenSSL分为四个主要组件:

libcrypto这是用于提供多种加密原语实现的核心库。

此外,它还提供了一组供libssl和libcrypto使用的支持服务

以及诸如S和OCSP之类的协议的实现。

发动机,libcrypto的功能可以通过引擎API进行扩展。

通常,引擎是在libcrypto中注册的可动态加载的模块,并使用可用的钩提供密码算法实现

通常,这些是libcrypto已提供的算法的替代实现(例如,以实现算法的硬件加速)

但是它们还可以包括未在默认OpenSSL中实现的算法

例如,GOST引擎实现GOST算法系列。

有些引擎是作为OpenSSL发行版的一部分提供的,而有些则是由外部第三方(同样是GOST)提供的。

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

应用程序。这些应用程序是一组命令行工具

这些工具使用基的libssl和libcrypto组件来提供一组密码和其他功能,例如:

键和参数的生成和检,证书生成和

SSL / TLS测试工具,ASN.1检验,等等

OpenSSL软件优势

执行副,EVP(信封)API级别为加密功能提供了高级象接口

而与具体的实现绑定无关。

不建议通过除EVP层以外的接口直接使用具体的密码算法实现。

EVP层还提供复合作,例如签名和验证。

还提供了某些复合作作为EVP级作(例如HMAC-SHA256)。

EVP还允许以与算法无关的方式使用密码算法

例如,EVP_DigestSign可同时用于RSA和ECDSA算法。

不支持FIPS140。FIPS140它仅在OpenSSL-1.0.2中可用

而OpenSSL-1.0.2早于现有架构,并且与API或A不兼容。

OpenSSL安装步骤

1、用户可以点击本网站提供的下载路径下载得到对应的程序安装包

2、只需要使用解压功能将压缩包打开,双击主程序即可进行安装,弹出程序安装界面

3、同意上述协议条款,继续安装应用程序,点击同意按钮即可

4、可以根据自己的需要点击浏览按钮将应用程序的安装路径进行更改

5、弹出以下界面,用户可以直接使用鼠标点击下一步按钮

6、桌面快捷键的创建可以根据用户的需要进行创建,也可以不创建

7、现在准备安装主程序,点击安装按钮开始安装

8、弹出应用程序安装进度条加载界面,只需要等待加载完成即可

9、根据提示点击安装,弹出程序安装完成界面,点击完成按钮即可

OpenSSL使用教程

概念组件视图

现有的体系结构是一个简单的4层分层,底部是加密层。TLS层取决于加密层,而应用程序取决于TLS和加密层。

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

包装图

上述组件被打包到库(libcrypto和libssl)和关联的引擎接口中,以及用于运行各种应用程序的“ openssl”命令行可执行文件。如下图所示。

未来建筑

未来架构具有以下特征:

核心服务构成了应用程序和提供者可用的构建块。(例如O,X509,SEEM,ASN1等)。

提供者实施密码算法和支持服务。提供者具有以下一个或多个的实现:

算法的密码原语,例如如何加密/解密/签名/哈希等。

算法的序列化,例如,如何将私钥转换为PEM文件。序列化可以是当前不支持的格式,也可以是当前不支持的格式。

存放装载机后端。OpenSSL当前具有一个商店加载器,该加载器从文件中读取密钥,参数和其他项目。提供者可以有一个加载器,以从另一个位置(例如LDAP目录)加载。

提供者可以完全,也可以使用其他提供者或核心服务提供的服务。例如,应用程序可以将密码原语用于由硬件加速的提供程序实现的算法,但可以使用其他提供程序的序列化服务,以便将密钥导出为PKCS#12格式。

默认提供程序(包含当前OpenSSL加密算法实现的核心)将是“内置”的,但其他提供程序将能够在运行时动态加载。

传统提供程序模块将为较旧的算法(例如DES,MDC2,MD2,Blowfish,CAST)提供加密实现。OMC将发布有关如何以及何时将算法从默认提供程序过渡到传统提供程序的策略。

体现OpenSSL FIPS加密模块的FIPS提供程序将能够在运行时动态加载。

通过Core,可以访问提供商(和其他提供商)向应用程序提供的服务。提供程序将方法提供给Core。核心是一种机制,通过该机制可以对诸如算法之类的事物进行具体定位。

Core将实现基于属的查找功能以查找算法,例如,它可能允许您查找“ fips = true”或“ keysize = 128,constant_time = true”的算法。具体细节将在以后的设计文档中确定。

协议实施。例如TLS,DTLS。

未来架构具有以下特点:

EVP层成为提供程序中实现的服务的精简包装。大部分呼叫直接进行,几乎没有/没有预处理。

将提供新的EVP API,以在Core中找到用于任何给定EVP调用的算法的实现。

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

旧版API(例如不通过EVP层的低级加密API)将被弃用。请注意,存在非传统算法的传统API(例如,AES是非传统算法,而AES_encrypt是传统API)。

OpenSSL FIPS加密模块将实现为动态加载的提供程序。它是的(即只能依赖于Core提供的系统运行时库和服务)。

随着时间的推移,其他接口也可能会转换为使用Core(例如,可以考虑使用OSSL_STORE)。

引擎的使用将演变为提供商。“再见引擎,Hello-Pviders”。

概念组件视图

下面的(粉色必杀技)图显示了OpenSSL准体系结构中概念组件的概述。

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

此处显示的组件如下:

应用程序:命令行应用程序,例如ca,cipher,cms,dgst等

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

TLS协议:所有受支持的TLS / DTLS协议和支持的基结构的实现,例如:

SSL O:使用TLS进行通讯的O

Statem:TLS状态机

记录:TLS记录层

其他协议

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

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

TS:时间协议的实现

支持服务:专为支持协议代码实施而设计的组件

数据包:用于读取协议消息的内部组件

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

核心:这是一个基本组件,用于将对服务(例如加密)的请求连接到该服务的提供者。它实现了提供者注册其服务以及这些服务的属的能力。它还提供了在给定服务必须满足的一组属的情况下定位服务的能力。例如,加密服务的属可能包括“ aead”,“ aes-gcm”,“ fips”,“ secuty-bits = 128”等。

默认提供程序:实现一组在Core中注册的默认服务。

配套服务

低级实现:这是实际实现密码原语的一组组件。

FIPS提供商:实施一组经过FIPS验证并可供核心使用的服务。其中包括以下支持服务:

POST:开机自检

KAT:已知答案测试

完整

低级实现:这是实际上实现加密原语(以满足FIPS要求的条件)的一组组件。

旧版提供程序:提供将通过EVP级API公开的较旧算法的实现。

第三方提供程序:不属于OpenSSL发行版。第三方可以实施自己的提供商。

通用服务:这些构成了应用程序和提供程序可以使用的构建块。(例如O,X509,SEEM,ASN1等)。

旧版API。“低级” API。这里的“旧版”是指API,而不是算法本身。例如,AES不是传统算法,但是具有传统API(例如AES_encrypt)。

包装图

上面概念组件视图中描述的各种组件在物理上被打包为:

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

供应用程序使用的库

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

此处显示的物理包为:

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

Libssl。它包含与TLS和DTLS直接相关的所有内容。它的内容将与原样体系结构中的libssl大致相同。请注意,一些支持服务将移至libcrypto。

Libcrypto。该库包含以下组件:

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

核心

与TLS或DTLS不相关的协议

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

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

Libcrypto的遗产。提供旧式“低级” API。这些APIS的算法实现可以来自任何提供商。

FIPS模块。它包含FIPS提供程序,该提供程序实现一组经过FIPS验证并已向Core注册的服务。

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

OpenSSL使用说明

算法,有时也称为密码算法,是一种执行一组作(例如加密或解密)的方法。我们对该术语的使用是象的,通常用其名称表示一种算法,例如“ aes-128-cbc”。

算法实现或有时只是实现,是算法的具体实现。这主要以一组功能的形式在代码中表示。

CS是密码算法验证系统。用于测试加密实现是否符合FIPS标准的工具。

VP是加密模块验证程序。验证密码实现符合FIPS标准的过程。

EVP是由libcrypto实现的API系列,使应用程序能够执行加密作。EVP API的实现使用Core和Pvider组件。

的核心是在一个libcrypto组件,它使应用程序能够访问由提供者提供的算法的实现。

CSP是关键安全参数。这包括在未经授权的情况下披露或修改可能会损害模块安全的任何(例如,私钥,密码,引脚号等)。

显式提取是一种用于查找算法实现的方法,其中应用程序进行显式调用以查找实现并提供搜索条件。

FIPS是联邦处理标准。这是定义的一组标准。特别地,FIPS标准140-2适用于密码软件。

甲FIPS模块是已被证实由VP其符合FIPS标准加密算法的实现。在OpenSSL中,FIPS模块被实现为提供程序,并以可动态加载的模块形式提供。

隐式提取是一种用于查找算法实现的方法,其中应用程序未明确调用定位实现,因此使用默认搜索条件。

该完整是在加载模块FIPS时自动运行测试。模块校验和自身,并验证它没有被无意更改。

KAS是关键协议计划。两个通信方可以协商它们之间的共享密钥的方法。

KAT是已知答案测试。一组测试,用于执行FIPS模块的运行状况。

libcrypto是由OpenSSL实现的共享库,可为应用程序提供对各种密码学相关功能的访问。

libssl是由OpenSSL实现的共享库,它使应用程序能够以客户端或的形式创建SSL / TLS连接。

一个库上下文是一个不透明的结构中保存库“全局”的数据。

作是要对数据执行的一类功能,例如计算摘要,加密,解密等。一种算法可以提供一个或多个作。例如,RSA提供非对称加密,非对称解密,签名,验证等

参数是与实现无关的一组键值对,用于在Core和提供者之间传递对象数据。例如,它们可以用于传输私钥数据。

POST是指在安装时,加电时(即,每次为应用程序加载FIPS模块时)或按需运行的FIPS模块加电自检(又名加电自检)。这些测试包括完整和KAT。如果KAT在安装时成功运行,则无需在加电时再次运行,但是始终会执行完整。

提供者使用属来描述其算法实现的功能。它们还用于应用程序查询中以查找特定的实现。

提供者是提供一个或多个算法实现的单元。

提供者模块是动态可加载模块形式的提供者。

建筑

该体系结构应具有以下特征:

通用服务构成了应用程序和提供者可以使用的构建块。(例如O,X509,SEEM,ASN.1等)。

提供者实施密码算法和支持服务。一个算法可以包含多个作(例如RSA可以具有“加密”,“解密”,“签名”,“验证”等)。类似地,可以通过多种算法(例如RSA和ECDSA)来实现作(例如“符号”)。提供者具有用于算法的密码原语的实现。此版本将包括以下提供程序:

默认值,其中包含当前的非传统OpenSSL加密算法;这将是内置的(即libcrypto的一部分)

旧版,以及较旧算法(例如DES,MDC2,MD2,Blowfish,CAST)的实现

引擎,包括为旧版本的OpenSSL设计的引擎与新的基于提供程序的方法之间的兼容层。

FIPS,它实现了OpenSSL FIPS加密模块3.0;可以在运行时动态加载。

通过核心,可以访问提供程序提供给应用程序(和其他提供程序)的作。核心是一种机制,通过该机制可以定位作的具体实现。

协议实施。例如TLS,DTLS。

本文档对“ EVP API”有很多引用。这指的是“应用程序级”作,例如公钥签名,生成摘要等。这些功能包括EVP_DigestSign,EVP_Digest,EVP_MAC_init等。该EVP API也封装用于执行这些服务的密码对象,如EVP_PKEY,EVP_CIPHER,EVP_MD,EVP_MAC等等。提供者为后一组实现后端功能。这些对象的实例可以隐式或显式绑定到提供程序,具体取决于应用程序的需求。在下面的提供者设计中将对此进行详细讨论。

该体系结构具有以下特征:

EVP层是在提供程序中实现的作的精简包装。大部分呼叫直接进行,几乎没有/没有预处理。

将提供新的EVP API,以影响Core如何选择(或找到)用于任何给定EVP调用的作的实现。

将以与实现无关的方式在libcrypto和提供者之间传递。

旧版API(例如不通过EVP层的低级加密API)将被弃用。请注意,非传统算法有一些传统API(例如,AES不是传统算法,而是AES_encrypt传统API)。

OpenSSL FIPS加密模块将实现为动态加载的提供程序。它是的(即只能依赖于Core提供的系统运行时库和服务)。

概念组件视图

下图显示了OpenSSL架构中概念组件的概述。注意,图中组件的存在并不表示该组件是公共API或供最终用户直接访问或使用。

此处显示的新组件(在以前的体系结构中不存在)如下:

核心:这是将作请求(例如加密)连接到该作提供者的基本组件。它提供了定位算法实现的能力,该算法的实现在给定实现必须具备的一组属的情况下提供了指定的作。例如,加密算法的属可以至少包括“ fip”。

默认提供程序:实现一组默认算法。

FIPS Pvider:实现一组经过FIPS验证并可以通过Core使用的算法。其中包括以下支持服务:

POST:开机自检

KAT:已知答案测试

完整

低级实现:这是实际上实现加密原语(以满足FIPS要求的条件)的一组组件。

引擎提供程序:一种垫片,当通过Core调用时,该垫片允许现有引擎工作。

旧版提供程序:提供将通过EVP级API公开的较旧算法的实现。

第三方提供商:最终,第三方可以提供自己的提供商。与其他任何提供程序一样,第三方提供程序也实现了一组算法,应用程序和其他提供程序可以通过Core访问这些算法。

包装图

上面概念组件视图中描述的各种组件在物理上被打包为:

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

供应用程序使用的库

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

OpenSSL 3.0将提供多种不同的打包选项(例如,单个库libcrypto包含FIPS提供程序以外的所有内容,以及所有提供程序作为单独的可动态加载的模块)。

哪些动态可加载模块已注册,使用或可用,将能够在运行时进行配置。

下图以物理包的形式描述了体系结构。

此版本中新增的物理软件包为:

FIPS模块。它包含FIPS提供程序,该提供程序实现一组经过FIPS验证并可以通过Core使用的算法。FIPS提供程序是OpenSSL FIPS加密模块3.0。

我们不会试图阻止用户犯错误,但是我们会记住典型的用户用法和“安全”。默认情况下,将构建并安装FIPS提供程序。

我们将能够执行安全,以检测用户是否从发布发行版中以FIPS影响的方式修改了源,并阻止构建FIPS提供程序(基于最大努力),除非提供了覆盖选项。

我们需要确保有一种机制,使最终用户能够确定他们对FIPS模块的使用是否在正式验证下的允许使用范围内。

在验证时,FIPS模块的版本将与基本OpenSSL版本号对齐。并非所有OpenSSL版本都需要对FIPS模块进行更新。因此,当发布新的FIPS模块版本时,其版本号可能会比上一个版本高。

旧版模块。这包含传统算法的实现。

引擎将使用提供程序填充程序构建,以便在将ENGINE指针传递给某些函数的情况下使其正常运行,并在充当默认实现时充当提供程序。需要重新编译针对3.0.0之前的OpenSSL版本的引擎,才能与OpenSSL 3.0.0一起使用。ENGINE API中的详细进一步向下。

核心和提供商设计

下图显示了与Core和提供程序设计相关的交互。有四个主要组件:用户应用程序,EVP组件,核心和加密提供程序。(可能有多个提供程序,但此处不相关)。

核心具有以下特征:

它支持提供商发现,加载,初始化和卸载

它启用基于属的算法查询

它实现了算法查询和实现细节的缓存

它在包含数据(例如全局属,搜索缓存和调度表)的库上下文中运行。

提供者具有以下特征:

它们提供对特定算法实现的访问

它们将算法实现与一组定义良好的属相关联

它们支持以与实现无关的方式传递参数

它们可以在任何时间点加载

他们有一个著名的模块入口点

接下来的小节描述了应用程序用来加载提供程序,获取算法实现并使用它的流程。另外,本节详细描述了算法,属和参数的命名方式。如何处理算法查询;如何注册和初始化算法;以及如何加载提供程序。

为了使应用程序能够使用算法,它必须首先通过算法查询“获取”其实现。我们的设计目标是既要支持显式(预先)获取算法,又要支持使用中的算法获取。默认情况下,我们希望在使用时进行抓取(例如使用EVP_sha256()),以便通常在“ init”函数期间抓取算法并将其绑定到上下文对象(通常称为ctx)。显式提取选项将通过新的API调用(例如EVP_MD_fetch())实现。

上图显示了显式提取方法。步骤如下:

每个提供程序都需要加载。这将隐式发生(默认提供程序或通过配置指定),也可能由应用程序显式请求。加载包括动态共享对象的加载(根据需要)和初始化。

Core会将模块物理加载到内存中(如果默认提供程序已在内存中,则不需要)。

Core调用提供者的入口点,以使提供者进行初始化。

在入口点函数中,提供程序使用从Core传入的值初始化一些提供程序变量。如果初始化成功,则提供程序算法实现查询回调将返回到Core。

用户应用程序通过调用获取例程来请求算法。

通过EVP搜索将全局属结合特定的呼叫者和算法的身份找到相应的算法实现,创建和图书馆手柄(如返回EVP_MD,EVP_CIPHER)到应用程序。

在内部缓存中对实现分发表进行第一次搜索。

如果第一次搜索失败,则通过询问提供商是否具有所查询属的所述算法的实现来进行第二次搜索。完成此搜索后,除非提供程序选择不使用缓存,否则将对结果数据进行缓存,以供首次搜索(2.1.1)使用。例如,PKCS#11提供程序可能会选择退出缓存,因为随着时间的流逝,其算法可能会变得可用和不可用。

,用户的应用程序使用通过EVP的API的算法(例如,EVP_DigestInit(),EVP_DigestUpdate(),EVP_DigestFinal(),等等)。

函数指针将被调用,并最终在提供程序中提供给实现以执行所请求的加密算法。

对于现有EVP_{algothm}()功能(例如EVP_sha256(),等),大部分内容保持不变。特别是,提取调用不会在EVP_{algothm}()调用返回时执行,而是在上下文对象(例如EVP_MD_CTX)绑定到相应的EVP初始化函数内时隐式发生。具体而言,步骤2.1恰好发生在步骤3.1之前。这称为“隐式提取”。隐式提取始终在默认库上下文中运行(请参见下面的库上下文)。

方法分派表是成对的列表-其中的function-ids是OpenSSL公开定义和已知的-与一组可用于标识每个特定实现的属放在一起。Core可以进行属查询并找到对应的调度表,以用于适用的作。这种方法允许提供者灵活地将引用传递给OpenSSL代码可用于动态创建其方法结构的函数。

可以在任何时间点加载提供程序。可在任何时间点要求卸载。由应用程序决定是否在卸载提供程序时当前未使用或引用该提供程序。如果尝试使用不再可用的实现,则将返回错误。

应用程序当前可以做出关于从中获得收益EVP_{algothm}()而不是新获取方法的假设是:

const指针

不需要由应用程序释放

可以安全地用于算法是相同的(即比较具体的指针相比EVP_CIPHER,EVP_MD等)

对于应用程序直接使用显式提取(而不是使用现有EVP_{algothm}()功能)的语义将有所不同:

非常量指针

需要由应用程序释放

指针不能安全地相互比较(在下一段中有更多介绍)

将有新的API来测试可用于显式提取的对象和静态变量对象的对象的相等。这些API将使仅算法标识或特定算法实现的比较成为可能。

图书馆背景

库上下文是一个不透明的结构,其中包含库“全局”数据。OpenSSL将提供这样一种结构,仅限于Core必须保留的全局数据。未来的扩展可能会包括其他现有的全球数据。应用程序将能够创建和销毁一个或多个库上下文,在这些上下文中与Core进行的所有后续交互都将在其中进行。如果应用程序未创建并提供其自己的库上下文,则将使用内部默认库上下文。

OPENSSL_CTX *OPENSSL_CTX_new();

void OPENSSL_CTX_free(OPENSSL_CTX *ctx);

可以将库上下文传递给显式提取函数。如果NULL传递给他们,则将使用内部默认上下文。

可以分配多个库上下文,这意味着任何提供程序模块都可以初始化一次以上。这样一来,应用程序既可以直接与libcrypto链接,也可以加载其感兴趣的提供程序,也可以地与使用自己的提供程序模块的其他库链接。

OpenSSLv1.2.1下載地址

        猜你喜歡