安全加解密引擎基础

关键词:TRNG、HASH、SKE、PKE、OpenSSL、mbedtls、Certificate等等。

一个常见的安全加解密引擎可能包括,以下4部分:

TRNG – 真随机数发生器,基于物理器件产生随机数。

HASH – 获取一段数据的摘要信息。

SKE – 对称加密引擎,加密和解密使用相同的秘钥。

PKE – 非对称加密引擎,加密和解密使用不同的一对公钥和私钥。

下面分别对这些内容做了一些随笔,目的是:

  1. 对各种Engine机制目的是为了使OpenSSL能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密。OpenSSL的Engine机制成功地达到了这个目的,这使得OpenSSL已经不仅仅使一个加密库,而是提供了一个通用地加密接口,能够与绝大部分加密库或者加密设备协调工作。当然,要使特定加密库或加密设备更OpenSSL协调工作,需要写少量的接口代码,但是这样的工作量并不大,虽然还是需要一点密码学的知识。Engine机制的功能跟Windows提供的CSP功能目标是基本相同的。

ENGINE是OPENSSL预留的用以加载第三方加密库引擎,主要包括了动态库加载的代码和加密函数指针管理的一系列接口。如果要使用Engine(假设你已经加载上该Engine了),那么首先要加载该Engine(比如ENGINE_load_XXXX),然后选择要使用的算法或者使用支持的所有加密算法(有相关函数)。这样你的应用程序在调用加解密算法时,它就会指向你加载的动态库里的加解密算法,而不是原先的OPENSSL的库里的加解密算法。

更多参考:

mbedtls也许是最小巧的ssl代码库。高效、便于移植和集成。尤其适合嵌入式应用。

3.1 证书

证书主要的文件类型和协议有: PEM、DER、PFX、JKS、KDB、CER、KEY、CSR、CRT、CRL 、OCSP、SCEP等。

PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采用的信息存放方式。Openssl 中的 PEM 文件一般包含如下信息:

DER – 辨别编码规则 (DER) 可包含所有私钥、公钥和证书。它是大多数浏览器的缺省格式,并按 ASN1 DER 格式存储。它是无报头的 - PEM 是用文本报头包围的 DER。
PFX 或 P12 – 公钥加密标准 #12 (PKCS#12) 可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件。通常可以将Apache/OpenSSL使用的”KEY文件 + CRT文件”格式合并转换为标准的PFX文件,你可以将PFX文件格式导入到微软IIS 5/6、微软ISA、微软Exchange Server等软件。转换时需要输入PFX文件的加密密码。
JKS – 通常可以将Apache/OpenSSL使用的”KEY文件 + CRT文件”格式”转换为标准的Java Key Store(JKS)文件。JKS文件格式被广泛的应用在基于JAVA的WEB服务器、应用服务器、中间件。你可以将JKS文件导入到TOMCAT、 WEBLOGIC 等软件。
KDB – 通常可以将Apache/OpenSSL使用的”KEY文件 + CRT文件”格式转换为标准的IBM KDB文件。KDB文件格式被广泛的应用在IBM的WEB服务器、应用服务器、中间件。你可以将KDB文件导入到IBM HTTP Server、IBM Websphere 等软件。
CSR - 证书请求文件(Certificate Signing Request)。生成 X509 数字证书前,一般先由用户提交证书申请文件,然后由 CA 来签发证书。大致过程如下(X509 证书申请的格式标准为 pkcs#10 和 rfc2314):

OCSP – 在线证书状态协议(OCSP,Online Certificate Status Protocol,rfc2560)用于实时表明证书状态。OCSP 客户端通过查询 OCSP 服务来确定一个证书的状态,可以提供给使用者一个或多个数字证书的有效性资料,它建立一个可实时响应的机制,让用户可以实时确认每一张证书的有效性,解决由CRL引发的安全问题。。OCSP 可以通过 HTTP协议来实现。rfc2560 定义了 OCSP 客户端和服务端的消息格式。
CER - 一般指使用DER格式的证书。
CRT - 证书文件。可以是PEM格式。
KEY - 一般指PEM格式的私钥文件。
CRL - 证书吊销列表 (Certification Revocation List) 是一种包含撤销的证书列表的签名数据结构。CRL 是证书撤销状态的公布形式,CRL 就像信用卡的黑名单,用于公布某些数字证书不再有效。CRL 是一种离线的证书状态信息。它以一定的周期进行更新。CRL 可以分为完全 CRL和增量 CRL。在完全 CRL 中包含了所有的被撤销证书信息,增量 CRL 由一系列的 CRL 来表明被撤销的证书信息,它每次发布的 CRL 是对前面发布 CRL 的增量扩充。基本的 CRL 信息有:被撤销证书序列号、撤销时间、撤销原因、签名者以及 CRL 签名等信息。基于 CRL 的验证是一种不严格的证书认证。CRL 能证明在 CRL 中被撤销的证书是无效的。但是,它不能给出不在 CRL 中的证书的状态。如果执行严格的认证,需要采用在线方式进行认证,即 OCSP 认证。一般是由CA签名的一组电子文档,包括了被废除证书的唯一标识(证书序列号),CRL用来列出已经过期或废除的数字证书。它每隔一段时间就会更新,因此必须定期下载该清单,才会取得最新信息。
SCEP - 简单证书注册协议。基于文件的证书登记方式需要从您的本地计算机将文本文件复制和粘贴到证书发布中心,和从证书发布中心复制和粘贴到您的本地计算机。 SCEP可以自动处理这个过程但是CRLs仍然需要手工的在本地计算机和CA发布中心之间进行复制和粘贴。
PKCS7 – 加密消息语法(pkcs7),是各种消息存放的格式标准。这些消息包括:数据、签名数据、数字信封、签名数字信封、摘要数据和加密数据。
PKCS12 – pkcs12 (个人数字证书标准)用于存放用户证书、crl、用户私钥以及证书链。pkcs12 中的私钥是加密存放的。

Original: https://www.cnblogs.com/jiftle/p/16517897.html
Author: jiftle
Title: 安全加解密引擎基础

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/552207/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • ThreadLocalRandom类原理分析

    public int nextInt(int bound) { if (bound > 31); else { for (int u = r; u – (r = u % bo…

    技术杂谈 2023年7月11日
    079
  • 用ColorMatrix將Bitmap轉成灰度图

    在Android中,若想將整張圖片轉成灰階效果其實有更簡便的方式,只要透過ColorMatrix類別的setSaturation函式將飽和度設為0即可。(您也可以試試從0~1之間的…

    技术杂谈 2023年5月31日
    092
  • 零食里的营养成分表百分比什么意思

    原文: http://www.nhc.gov.cn/ewebeditor/uploadfile/2013/02/20130204161215710.pdf 来看看花生的: Orig…

    技术杂谈 2023年5月31日
    0112
  • nodejs搭建一个webscoket服务器【转】

    //引入ws模块 var WebSocket = require( ‘ws’ ); //&a…

    技术杂谈 2023年5月31日
    0121
  • 接口和抽象类是否有构造方法

    先上结论: 接口没有,抽象类可以有。 甚至于有其他的区别: 接口不能有方法体,抽象类可以有 (仅限java8以前) 接口不能有静态方法,抽象类可以有 (仅限java8以前) 接口中…

    技术杂谈 2023年7月25日
    063
  • PyQt5 控件层级关系

    ################################ PyQt5中文网 – PyQt5全套视频教程 # https://www.PyQt5.cn/ # 主讲: 村长 #…

    技术杂谈 2023年5月31日
    0101
  • MySQLmax()min()函数取值错误

    今天日志出现异常,一步一步debug发现SQL语句返回值出错,进一步发现是max()函数返回出错。点击跳转解决办法,赶时间的朋友可以去获得答案。当然我还是希望大伙看看原由。 sel…

    技术杂谈 2023年7月24日
    081
  • 20212217刘恒谦Python技能树及CSDN MarkDown编辑器测评

    ; ; 课程:《Python程序设计》 班级:2122 姓名:刘恒谦 学号:20212217 实验教师:王志强 实验日期:2022年4月17日 必修/选修:公选课 对Python技…

    技术杂谈 2023年7月24日
    087
  • Jni OnLoad()和OnUnload()

    除了前面说的自定义JNI函数之外,JNI还提供了两个特殊函数,它们是JNI_OnLoad()和JNI_OnUnload(),分别在加载库和卸载库的时候调用。 1、JNI_OnLoa…

    技术杂谈 2023年5月30日
    095
  • 一文看懂JVM内存区域分布与作用

    那么我们在开始介绍Java内存区域之前,我们先放一张内存区域的图,方便我们后面介绍的时候可以对照着看。 须知,本文是根据JDK8来介绍的。 程序计数器 首先它是线程私有的,它也称为…

    技术杂谈 2023年7月11日
    0111
  • Game Engine Architecture 4

    【 Game Engine Architecture 4】 1、a model of multiple semi-independent flows of control simp…

    技术杂谈 2023年5月31日
    092
  • C++Protobuf

    Protobuf protobuf (protocol buffer) 是谷歌内部的混合语言数据标准。通过将结构化的数据进行序列化(串行化),用于通讯协议、数据存储等领域的语言无关…

    技术杂谈 2023年7月24日
    0141
  • 疾病检验的概率的问题

    这题的考点是贝叶斯公式,先验概率,后验概率 严谨的数学计算: 设事件B是检验阳性,事件A是患病,A’, B’分别是AB的对立事件 由全概率公式: P(B)=…

    技术杂谈 2023年5月31日
    083
  • Mac 睡眠唤醒 不睡眠 问题

    问题 之前一直有夜晚睡觉前电脑💻关机的习惯,主要是想着电脑也跟人一样♨️要休息😂。然后最近想着自己 Mac 干脆每天睡眠💤算了,省得每天开关机麻烦,所以就最近这段时间每次夜晚睡觉前…

    技术杂谈 2023年7月11日
    0110
  • day2

    螺旋矩阵|| 根本没有想到是用二分法的精髓来做!!!但是他是有序数组,其实可以考虑到循环不变量。要注意到奇数的情况今天时间没有留够,但是理解透彻了二分法的两种写法,以及它的注意事项…

    技术杂谈 2023年7月10日
    075
  • Swift开发iOS应用过程中的问题和解决记录

    虚拟机里安装OSX+XCode开发环境 用真机的请直接跳过这个部分。 主要是在VitrualBox里安装mac系统和xcode,参考这篇教程,VirtualBox的版本是4.3.1…

    技术杂谈 2023年5月31日
    0130
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球