openssl 相关信息

BASE64 编解码原理:

将数据编码成 BASE64 编码时,以 3 字节数据为一组,转换为 24bit 的二进制数,将 24bit

的二进制数分成四组,每组 6bit。对于每一组,得到一个数字:0-63。然后根据这个数字查
表即得到结果。表如下:
 Value Encoding Value Encoding Value Encoding Value Encoding 
 0 A 17 R 34 i 51 z 
 1 B 18 S 35 j 52 0 
 2 C 19 T 36 k 53 1 
 3 D 20 U 37 l 54 2 
 4 E 21 V 38 m 55 3 
 5 F 22 W 39 n 56 4 
 6 G 23 X 40 o 57 5 
 7 H 24 Y 41 p 58 6 
 8 I 25 Z 42 q 59 7 
 9 J 26 a 43 r 60 8 
 10 K 27 b 44 s 61 9 
 11 L 28 c 45 t 62 + 
 12 M 29 d 46 u 63 / 
 13 N 30 e 47 v 
 14 O 31 f 48 w (pad) = 
 15 P 32 g 49 x 

 16 Q 33 h 50 y 


比如有数据:0x30 0x82 0x02 
编码过程如下:
 1)得到 16 进制数据: 30 82 02 
 2)得到二进制数据: 00110000 10000010 00000010 
 3)每 6bit 分组: 001100 001000 001000 000010 
 4)得到数字: 12 8 8 2 
 5)根据查表得到结果 : M I I C 
 BASE64 填充:在不够的情况下在右边加 0。 
有三种情况:
 1) 输入数据比特数是 24 的整数倍(输入字节为 3 字节整数倍),则无填充;
 2) 输入数据最后编码的是 1 个字节(输入数据字节数除 3 余 1),即 8 比特,则需要填充 2 个"==",因为要补齐 6 比特,需要加 2 个 00;
 3)输入数据最后编码是 2 个字节(输入数据字节数除 3 余 2),则需要填充 1 个"=",因
为补齐 6 比特,需要加一个 00。
举例如下:
对 0x30 编码:
 1) 0x30 的二进制为:00110000 
 2) 分组为:001100 00 
 3) 填充 2 个 00:001100 000000 
 4) 得到数字:12 0 
 5) 查表得到的编码为 MA,另外加上两个== 
所以最终编码为:MA== 
 base64 解码是其编码过程的逆过程。解码时,将 base64 编码根据表展开,根据有几个

等号去掉结尾的几个 00,然后每 8 比特恢复即可。


Openssl 使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采
用的信息存放方式。Openssl 中的 PEM 文件一般包含如下信息:
1) 内容类型
表明本文件存放的是什么信息内容,它的形式为“-------BEGIN XXXX ------”,
与结尾的“------END XXXX------”对应。
2) 头信息 
表明数据是如果被处理后存放,openssl 中用的最多的是加密信息,比如加密
算法以及初始化向量 iv。
3) 信息体
为 BASE64 编码的数据。
举例如下:
-----BEGIN RSA PRIVATE KEY----- 
Proc-Type: 4,ENCRYPTED 
DEK-Info: DES-EDE3-CBC,9CFD51EC6654FCC3 
g2UP/2EvYyhHKAKafwABPrQybsxnepPXQxpP9qkaihV3k0uYJ2Q9qD/nSV2AG9Slqp0HBom
nYS35NSB1bmMb+oGD5vareO7Bt+XZgFv0FINCclTBsFOmZwqs/m95Af+BBkCvNCct+ngM+
UWB2N8jXYnbDMvZGyI3ma+Sfcf3vX7gyPOEXgr5D5NgwwNyu/LtQZvM4k2f7xn7VcAFGm
mtvAXvqVrhEvk55XR0plkc+nOqYXbwLjYMO5LSLFNAtETm9aw0nYMD0Zx+s+8tJdtPq+Ifu
3g9UZkvh2KpEg7he8Z8vaV7lpHiTjmpgkKpx9wKUCHnJq8U3cNcYdRvCWNf4T2jYLSS4kxd
K2p50KjH8xcfWXVkU2CK9NQGlh18TmPueZOkSEHf76KTE9DWKAo7mNmcByTziyofe5qK
htqkYYVBbaCFC0+pKTak4EuLgznt6j87ktuXDXFc+50DnWi1FtQN3LuQH5htl7autzaxCvenfG
QByIh7gxCygBVCJdWca3xE1H0SbRV6LbtjeB/NdCvwgJsRLBXXkjU2TKy/ljsG29xHP2xzlvOt
ATxq1zMMwMKt7kJMFpgSTIbxgUeqzgGbR7VMBmWSF4bBNnGDkOQ0WLJhVq9OMbzpB
zmGJqHn3XjZ2SPXF4xhC7ZhAMxDsFs35P4lPLDH/ycLTcLtUmVZJzvPvzh2r56iTiU28f/rMnH
n1xQ92Cf+62VgECI6CwTotMeM0EfGdCQCiWjeqrzH9qy8+VN3Q2xIlUZj7ibO59YO1A5zVxp
KcQRamwyIy/IYTPr2c2wLfsTZPBt6mD4= 
-----END RSA PRIVATE KEY----- 
本例是作者生成的一个 RSA 密钥,以 PEM 格式加密存放,采用了 openssl 默认的对称
加密算法。其中,“-----BEGIN RSA PRIVATE KEY-----”表明了本文件是一个 RSA 私钥;
DES-EDE3-CB 为对称加密算法,9CFD51EC6654FCC3 为对称算法初始化向量 iv。


X509 数字证书
数字证书是将用户(或其他实体)身份与公钥绑定的信息载体。一个合法的数字证书
不仅要符合 X509 格式规范,还必须有 CA 的签名。用户不仅有自己的数字证书,还必
须有对应的私钥。
X509v3 数字证书主要包含的内容有[1]:证书版本、证书序列号、签名算法、颁发
者信息、有效时间、持有者信息、公钥信息、颁发者 ID、持有者 ID 和扩展项。


证书验证项
数字证书验证中,主要考察的项有:
i. 有效期,看证书是否已经失效;
ii. 签名,用颁发者的公钥来验证签名;
iii. 证书用途;
iv. 名字比较,证书中的颁发者信息应与颁发者证书的持有者信息一致;
v. 扩展项约束;


CRL 介绍
证书撤销列表(Certificate Revocation List,简称 CRL),是一种包含撤销的证书列表的签
名数据结构。CRL 是证书撤销状态的公布形式,CRL 就像信用卡的黑名单,用于公布某些
数字证书不再有效。
CRL 是一种离线的证书状态信息。它以一定的周期进行更新。CRL 可以分为完全 CRL
和增量 CRL。在完全 CRL 中包含了所有的被撤销证书信息,增量 CRL 由一系列的 CRL 来
表明被撤销的证书信息,它每次发布的 CRL 是对前面发布 CRL 的增量扩充。
基本的 CRL 信息有:被撤销证书序列号、撤销时间、撤销原因、签名者以及 CRL 签名
等信息。
基于 CRL 的验证是一种不严格的证书认证。CRL 能证明在 CRL 中被撤销的证书是无
效的。但是,它不能给出不在 CRL 中的证书的状态。如果执行严格的认证,需要采用在线
方式进行认证,即 OCSP 认证。

在线证书状态协议(OCSP,Online Certificate Status Protocol,rfc2560)用于实时表明
证书状态。OCSP 客户端通过查询 OCSP 服务来确定一个证书的状态。OCSP 可以通过 HTTP
协议来实现

加密消息语法(pkcs7),是各种消息存放的格式标准。这些消息包括:数据、签名数据、
数字信封、签名数字信封、摘要数据和加密数据。

pkcs12 (个人数字证书标准)用于存放用户证书、crl、用户私钥以及证书链。pkcs12 中的
私钥是加密存放的。

SSL 协议最先由 netscape 公司提出,包括 sslv2 和 sslv3 两个版本。当前形成标准的
为了 tls 协议(rfc2246 规范)和 DTLS(rfc4347,用于支持 UDP 协议)。sslv3 和 tls 协议大
致一样,只是有一些细微的差别。实际应用中,用的最多的为 sslv3。
SSL 协议能够保证通信双方的信道安全。它能提供数据加密、身份认证以及消息完
整性保护,另外 SSL 协议还支持数据压缩。
SSL 协议通过客户端和服务端握手来协商各种算法和密钥。


asn1parse 命令是一种用来诊断 ASN.1 结构的工具,也能用于从 ASN1.1 数据中提取数
据。
用法:
openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset 
number] [-length number] [-i] [-oid filename] [-strparse offset] [-genstr string ] [-genconf file] 
选项:
-inform PEM|DER 
输入数据的格式为 DER 还是 PEM,默认为 PEM 格式。
-in filename 
输入文件名,默认为标准输入。
-out filename 
输出文件名,默认为标准输出,给定一个 PEM 文件,采用此选项可用生成一
个 DER 编码的文件。
-noout 
 无输出打印。
-offset number 
数据分析字节偏移量,分析数据时,不一定从头开始分析,可用指定偏移量,
默认从头开始分析。
-length number 
分析数据的长度,默认的长度为整个数据的长度;
-i 
标记实体,加上此选项后,输出会有缩进,将一个 ASN1 实体下的其他对象缩
进显示。此选项非默认选项,加上此选项后,显示更易看懂。
 -dump 
 显示十六进制数据。非默认选项。
 -dlimit number 
与-dump 不同,-dump 显示所有的数据,而此选项只能显示由 number 指定数目的
十六进制数据。
 -oid file 
 指定外部的 oid 文件。
-strparse offset 
此选项也用于从一个偏移量开始来分析数据,不过,与-offset 不一样。-offset
Click to buy NOW!
PDF-XChange Viewer
www.docu-track.co m
Click to buy NOW!
PDF-XChange Viewer
www.docu-track.co m
269
分析偏移量之后的所有数据,而-strparse 只用于分析一段数据,并且这种数据必须
是 SET 或者 SEQUENCE,它只分析本 SET 或者 SEQUENCE 范围的数据。

对称加密算法的四种模式: CBC, ECB, CFB, OFB

OpenSSL提供了pkcs8指令来执行 PKCS#8标准相关的工作。它可以把私钥转化为PKCS#8的格式,也可以把 PKCS#8格式的私钥转换成其他存储标准的格式。OpenSSL的pkcs8指令对加密和非加密格式的私钥都能进行处理

加密的 PKCS#8密钥标识如下:
—BEGINENCRYPTEDPRIVATEKEY—
—ENDENCRYPTEDPRIVATEKEY—
非加密的 PKCS#8密钥标识如下:
—BEGINPRIVATEKEY—
—ENDPRIVATEKEY—

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值