刚进公司,在实习期需要了解很多关于加解密算法和证书相关的东西,我以写博客的方式把我近1个多月了解的东西整理出来传授给大家,大家觉得可以的话请不要吝啬你们的赞。
目录
通过LDAP进行证书CRL验证和OCSP方式验证有什么区别?
Pkcs7、Pkcs1、attach报文、detached报文、RAW等概念
什么是PKI
PKI(Public Key Infrustructure)又称为公钥基础设施,是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系。
PKI的基础技术包括数据保护 ,数字签名 ,数据完整性验证, 抗抵赖性 , 数组信封等。
完整的PKI机构必须有以下5大系统:
- 权威认证机构(CA)
- 注册中心(RA) 和证书存储库(LDAP)
- 证书管理机构/证书备份与恢复系统(KMC)
- 证书作废系统(CRL)
- 应用接口(RADS)
证书申请流程
- First: 用户到 RA 中心申请证书
- Next: USBkey生成签名密钥对,同时产生 CSR 文件并发送给RA
- Next: RA 将用户信息以及 CSR 文件发送给 CA
- Next: CA 向KMC请求加密密钥,并发送签名公钥
- Next: KMC 生成一个对称加密密钥和一对非对称加密密钥
- Next: 用对称加密密钥加密非对称加密密钥的私钥
- Next: 再用签名公钥加密对称加密密钥
- Next: KMC 将 非对称加密公钥 和 加密过的私钥 和 加密过的对称密钥 发送给CA
- Next: CA 根据用户签名公钥和用户信息生成签名证书
- Next: CA 根据加密公钥和用户信息生成加密证书
- Next: CA 发布证书 Next: RA下载加密证书和签名证书,已加密的私钥和已加密的对称密钥
- Next: 客户端下载加密证书和签名证书,已加密的私钥和已加密的对称密钥
- Finally:用户根据签名私钥得到对称密钥,再用对称密码得到加密私钥
加密与解密
公钥加密,私钥解密
签名认证
私钥加密叫做签名,公钥解密叫做认证(验签),具有抗抵赖性,不是该私钥的公钥解不了密,所以具有验证性
数字信封
对称加密和非对称加密都有着自己各自的优点。
对称加密加解密运算非常快,适合处理大批量数据,非对称密码算法公私钥分离,适合密钥分发和管理,但运算速度慢,不适合大批量处理数据。若能够将对称密码算法和非对称密码算法的优点结合起来,既能够处理大批量的的数据,又能高效的分发管理密钥,于是数字信封由此诞生。
数字信封的原理是采用对称密码算法对大批量数据进行加密,然后采用非对称密码算法对其中的对称密钥进行加密;解密过程时,首先用非对称密码算法解密获取对称密钥,然后使用对称密钥解密数据,获取数据明文。
数字签名
将数据明文通过Hash函数生成数字摘要,然后通过加密私钥进行加密,然后将数字摘要和数据明文一起发送给接收者,接收者只有通过发送者的公钥才能解密获取数字摘要,然后将原文通过相同的Hash函数生成摘要与获取到的摘要进行对比,如果一样就是正确的原文。
CRL证书作废列表的内容
证书包含的内容
- 版本号
- 序列号
- 签名
- 颁发者
- 有效期
- 主体
- 主体公钥信息
- 主体唯一标识符
- 颁发者唯一标识符
- 扩展
通过LDAP进行证书CRL验证和OCSP方式验证有什么区别?
一般对于证书状态的查询,是通过LDAP协议从证书存储的目录服务器,将CRL下载到自己的机器上,再根据CRL了解证书的目前状况。但CRL自身存在着一些缺点(如:延时性,文件过大和重复下载等),OCSP就是针对这些缺点所推出的,在线证书状况协议,此协议在1999年6月为IETF所接收
描述了无需证书撤销列表(CRL)就可以决定一张数字证书当前状态的协议
常见的对称加密和非对称加密算法
常见的对称加密算法: DES , 3DES ,RC , RC4,AES等
常见的非对称加密算法: RSA ,DSA ,ECC
四种算法模式及其各自的优缺点
- 电子密码本(Eletronic CoodBook, ECB)
- 密码分组链(Cipher Block Chaining , CBC)
- 输出反馈(Output FeedBack , OFB )
- 密文反馈( Cipher FeedBack , CFB)
电子密码本模式
优点: 简单 ,有利于并行运算,误差不会被传送
缺点: 不能隐藏明文的模式,可能对明文进行主动攻击
密码分组链模式
优点:不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL,IPSec的标准
缺点:不利于并行运算 , 误差传递,需要初始化向量IV
密文反馈
优点:
1.隐藏了明文模式;
2.分组密码转化为流模式;
3.可以及时加密传送小于分组的数据;
缺点:
1.不利于并行计算;
2.误差传送:一个明文单元损坏影响多个单元;
3.唯一的IV;
输出反馈
优点:
1.隐藏了明文模式;
2.分组密码转化为流模式;
3.可以及时加密传送小于分组的数据;
缺点:
1.不利于并行计算;
2.对明文的主动攻击是可能的;
3.误差传送:一个明文单元损坏影响多个单元;
base64编码原理与长度
作用: 把不可见字符转换为可见字符
都是可见字符,补位用 =
长度计算:beforeEncode为Encode之前的字符串
if(beforeEncode.length%3!=0){ Encode.length = (beforeEncode.length/3+1)*4}
else{ Encode.length = (beforeEncode.length/3)*4}
Pkcs7、Pkcs1、attach报文、detached报文、RAW等概念
ASN.1 抽象语法标记
ASN.1是描述在网络上传输信息格式的标准方法。它有两部分:一部分描述信息内数据,数据类型及序列格式;另一部分描述如何将各部分组成消息
标准的ASN.1编码规则有基本编码规则(BER,Basic Encoding Rules)、规范编码规则(CER, Canonical Encoding Rules)、唯一编码规则(DER,Distinguished Encoding Rules)、压缩编码规则(PER,Packed Encoding Rules)和XML编码规则(XER,XML Encoding Rules)。为了使ASN.1能够描述一些原先没有使用ASN.1定义,因此不适用上述任一编码规则的数据传输和表示的应用和协议,另外制订了ECN来扩展ASN.1的编码形式。ECN可以提供非常灵活的表明方法,但还没有得到普遍应用。
PKCS#1:RSA加密标准。PKCS#1定义了RSA公钥函数的基本格式标准,特别是数字签名。它定义了数字签名如何计算,包括待签名数据和签名本身的格式;它也定义了PSA公/私钥的语法。
PKCS#7:密码消息语法标准。PKCS#7为使用密码算法的数据规定了通用语法,比如数字签名和数字信封。PKCS#7提供了许多格式选项,包括未加密或签名的格式化消息、已封装(加密)消息、已签名消息和既经过签名又经过加密的消息。
签名类型一共有三种,如下
1,Attach签名:
它符合PKCS#7语法标准
其特点是将 数据原文,签名证书,签名算法,签名数据 封装成签名结果,因此验签名时只需要将签名结果提交到服务器进行验证。
2,Detached签名:
它符合PKCS#7语法标准
其特点是将 签名证书,签名算法,签名数据 封装为签名结果,因为不包含数据原文,因此验签名时需要将数据原文和签名结果提交到服务器进行验证。
3,RAW签名:
又称为裸签名
其特点是将签名数据封装成签名结果,因此验签名时需要将数据原文,签名证书,签名算法一起提交到服务器进行验证。
Der、 Cer、 Pfx、 Pem等相关概念
相关链接为:https://blog.51cto.com/wushank/1915795
PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采用的信息存放方式。Openssl 中的 PEM 文件一般包含如下信息:
-
内容类型:表明本文件存放的是什么信息内容,它的形式为“——-BEGIN XXXX ——”,与结尾的“——END XXXX——”对应。
-
头信息:表明数据是如果被处理后存放,openssl 中用的最多的是加密信息,比如加密算法以及初始化向量 iv。
-
信息体:为 BASE64 编码的数据。可以包括所有私钥(RSA 和 DSA)、公钥(RSA 和 DSA)和 (x509) 证书。它存储用 Base64 编码的 DER 格式数据,用 ascii 报头包围,因此适合系统之间的文本模式传输。
DER – 辨别编码规则 (DER) 可包含所有私钥、公钥和证书。它是大多数浏览器的缺省格式,并按 ASN1 DER 格式存储。它是无报头的 - PEM 是用文本报头包围的 DER。
CER - 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码.证书中没有私钥,DER 编码二进制格式的证书文件
PFX/P12 - predecessor of PKCS#12,包含公钥和私钥的二进制格式证书
各种算法密钥长度
加密算法 | 密钥长度(bit) | 算法种类 | 介绍 |
SM1 | 128 | 对称加密 | 算法不公开 |
SM2 | 公钥64*8=512位,私钥32*8 = 256位 | 非对称加密 | 基于ECC, 比2048位的RSA加密度还高 |
SM3 | ----------Hash----256---- | --------杂凑算法----- | 消息摘要,校验结果为256位 |
SM4 | 128 | 对称加密 | 密钥长度和分组长度均为128位 |
DES | 56 | 对称加密 | 奇偶验证位8位 |
3DES | 112,168 | 对称加密 | 是基于DES的对称算法,使用两个独立密钥对明文运行 DES 算法三次,从而得到 112 位有效密钥强度. 双倍加密(左边8字节加密 --> 右边8字节加密 --> 左边8字节加密) 三倍加密 (左边8字节加密 --> 中间8字节加密 --> 左边8字节加密) |
RC2 | 密码长度可变 (8-1024) | 对称加密 | 变长密钥对大量数据进行加密,比 DES 快.它的输入和输出都是64bit。密钥的长度是从1字节到128字节可变,但目前的实现是8字节(1998年) |
RC4 | 密码长度可变 (8-2048) | 对称加密 | 不同于 DES的是,RC4 不是对明文进行分组处理,而是字节流的方式依次加密明文中的每一个字节,解密的时候也是依次对密文中的每一个字节进行解密 |
RC5 | 密码长度可变 (0 - 2040) | 对称加密 | 密钥长度和迭代轮数均可变,密码长度由参数决定 |
BLOWFISH | 密码长度可变 (256-448) | 对称加密 | 运算速度很快, 军事级、可通过改变密钥长度调整安全性 |
TwoFish | 支持128、196、256位的密钥长度 | ||
AES | 128(最好)、192、256 | 对称加密 | ,是下一代的加密算法标准,速度快,安全级别高 |
RSA | 1024(常用)、2048 | 非对称加密 | 一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的, |
ECC | 160(最好) | 非对称加密 | 椭圆曲线密码编码学 |
DSA | 1024 | 非对称加密 | 只能用作数字签名,是一种标准的 DSS(数字签名标准),严格来说不算加密算法, |