证书和加解密

版权声明:版权归wsc所有 https://blog.csdn.net/qq_37543808/article/details/88947519

刚进公司,在实习期需要了解很多关于加解密算法和证书相关的东西,我以写博客的方式把我近1个多月了解的东西整理出来传授给大家,大家觉得可以的话请不要吝啬你们的赞。

目录

什么是PKI 

证书申请流程

加密与解密

签名认证

数字信封

数字签名

证书包含的内容

通过LDAP进行证书CRL验证和OCSP方式验证有什么区别?

常见的对称加密和非对称加密算法

四种算法模式及其各自的优缺点

电子密码本模式

密码分组链模式

密文反馈

输出反馈

base64编码原理与长度

Pkcs7、Pkcs1、attach报文、detached报文、RAW等概念

Der、 Cer、 Pfx、 Pem等相关概念

各种算法密钥长度

SSL协议认证握手流程   原文:https://blog.csdn.net/chris_hee/article/details/83262745 

         单向认证:                                          

双向认证:


 

 

   什么是PKI 

PKI的基础技术包括数据保护 ,数字签名 ,数据完整性验证, 抗抵赖性 , 数组信封等。

完整的PKI机构必须有以下5大系统:    

  1. 权威认证机构(CA)
  2. 注册中心(RA) 和证书存储库(LDAP)
  3. 证书管理机构/证书备份与恢复系统(KMC)
  4. 证书作废系统(CRL)
  5. 应用接口(RADS)

     证书申请流程

  1. 用户到RA(证书注册中心)提交申请
  2. USEBKEY生成签名密钥对,同时产生CSR(证书签名请求文件)   ,传递给RA
  3. RA将用户信息和CSR提交个CA(证书权威认证机构)
  4. CA向KMC(证书管理机构)请求加密密钥,同时提交用户的签名公钥
  5. KMC生成加密密钥对,使用用户的签名公钥对生成的加密私钥进行加密
  6. KMC将经过签名公钥加密的加密私钥和加密公钥发送给CA
  7. CA将用户信息和签名和加密公钥签名,生成证书
  8. 发布证书
  9. RA从CA下载证书和经过签名公钥加密的私钥
  10. 下载和安装证书和经过签名公钥加密过的私钥

加密与解密

        公钥加密,私钥解密

签名认证

       私钥加密叫做签名,公钥解密叫做认证(验签),具有抗抵赖性,不是该私钥的公钥解不了密,所以具有验证性

数字信封

       对称加密和非对称加密都有着自己各自的优点。
       对称加密加解密运算非常快,适合处理大批量数据,非对称密码算法公私钥分离,适合密钥分发和管理,但运算速度慢,不适合大批量处理数据。若能够将对称密码算法和非对称密码算法的优点结合起来,既能够处理大批量的的数据,又能高效的分发管理密钥,于是数字信封由此诞生。
       数字信封的原理是采用对称密码算法对大批量数据进行加密,然后采用非对称密码算法对其中的对称密钥进行加密;解密过程时,首先用非对称密码算法解密获取对称密钥,然后使用对称密钥解密数据,获取数据明文。

数字签名

       将数据明文通过Hash函数生成数字摘要,然后通过加密私钥进行加密,然后将数字摘要和数据明文一起发送给接收者,接收者只有通过发送者的公钥才能解密获取数字摘要,然后将原文通过相同的Hash函数生成摘要与获取到的摘要进行对比,如果一样就是正确的原文。

证书包含的内容

  1. 版本号
  2. 序列号
  3. 签名
  4. 颁发者
  5. 有效期
  6. 主体
  7. 主体公钥信息
  8. 主体唯一标识符
  9. 颁发者唯一标识符
  10. 扩展

通过LDAP进行证书CRL验证和OCSP方式验证有什么区别?

一般对于证书状态的查询,是通过LDAP协议从证书存储的目录服务器,将CRL下载到自己的机器上,再根据CRL了解证书的目前状况。但CRL自身存在着一些缺点(如:延时性,文件过大和重复下载等),OCSP就是针对这些缺点所推出的,在线证书状况协议,此协议在1999年6月为IETF所接收

常见的对称加密和非对称加密算法

常见的对称加密算法: DES , 3DES ,RC , RC4,AES等
   常见的非对称加密算法: RSA ,DSA ,ECC

 

四种算法模式及其各自的优缺点

 

  1. 电子密码本(Eletronic CoodBook, ECB)
  2. 密码分组链(Cipher Block Chaining , CBC)
  3. 输出反馈(Output FeedBack , OFB )
  4. 密文反馈( 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等概念

    

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 文件一般包含如下信息:

  1. 内容类型:表明本文件存放的是什么信息内容,它的形式为“——-BEGIN XXXX ——”,与结尾的“——END XXXX——”对应。

  2. 头信息:表明数据是如果被处理后存放,openssl 中用的最多的是加密信息,比如加密算法以及初始化向量 iv。

  3. 信息体:为 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(数字签名标准),严格来说不算加密算法,

SSL协议认证握手流程   原文:https://blog.csdn.net/chris_hee/article/details/83262745 

单向认证:         

                                

①客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

②服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。

④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。

⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。

⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行 CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码 ”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。

⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于 SSL 协议的安全数据通讯的加解密通讯。同时在 SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。

⑧客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。

⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

双向认证:

       ① 浏览器发送一个连接请求给安全服务器。

  ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。

  ③ 客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。

  ④ 接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。

  ⑤ 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。

  ⑥ 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。

  ⑦ 服务器从客户发送过来的密码方案中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知浏览器。

  ⑧ 浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。

  ⑨ 服务器接收到浏览器送过来的消息,用自己的私钥解密,获得通话密钥。

  ⑩ 服务器、浏览器接下来的通讯都是用对称密码方案,对称密钥是加过密的。

备注:上面所述的是双向认证 SSL 协议的具体通讯过程,这种情况要求服务器和用户双方都有证书。单向认证 SSL 协议不需要客户拥有 CA 证书,具体的过程相对于上面的步骤,只需将服务器端验证客户证书的过程去掉,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户的是没有加过密的(这并不影响 SSL 过程的安全性)密码方案。这样,双方具体的通讯内容,就是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用 128 位加密通讯的原因。
 

猜你喜欢

转载自blog.csdn.net/qq_37543808/article/details/88947519