学习笔记:公钥私钥 签名验签 加密解密 CA 证书

重点:

1、区分加密解密和签名验签(在非对称加密情景下)

  • 加密解密:#A给B发消息# A用B的公钥进行运算(加密),B收到后用B自己的私钥进行逆向运算(解密
  • 签名验签:#A给B发消息# A用A自己的私钥进行运算(签名),B收到后用A的公钥进行逆向运算(验签

2、证书签发的原理

  • CA 对用户签发证书:对某个用户公钥,使用 CA 的私钥对其进行签名。这样任何人都可以用 CA 的公钥对该证书进行合法性验证。验证成功则认可该证书中所提供的用户公钥内容, 实现用户公钥的安全分发 。

附:有一篇文章采用图文讲解公私钥、加解密、签名和数字证书很清楚,值得一看~https://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

 
1、什么是公钥与私钥?
  • 公钥与私钥是通过 椭圆曲线算法得到的一个密钥对,它们代表的是用户信息的一个数字证书
  • 公钥是公开的,私钥是非公开的
  • 公钥通常用于 加密会话密钥验证数字签名,而 私钥则是用来 解密和数字签名的,两个密钥是互解的关系,即用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。
    • 例如,当你发送文件时,用私钥签名,别人用你给的公钥验证签名,就可以保证该信息是你发送的
 
2、Hash算法与数字摘要
  • Hash算法
    • Hash 算法并不是一种加密算法,不能用于对信息的保护
    • 定义:能将任意长度的二进制明文串映射为较短的(通常是固定长度的)二进制串( Hash 值),并且不同的明文很难映射为相同的 Hash 值。
    • 目前常见的 Hash 算法包括 MD5 和 SHA 系列算法 
      • MD5 已被证明不具备“强抗碰撞性”
      • SHA (Secure Hash Algorithm )并非一个算法,而是一个 Hash 函数族 
      • 目前, MD5 和 SHAl 已经被破解,一般推荐至少使用 SHA2-256 或更安全的算法,SHA256 Hash:无论输入多少次完全相同的信息,Hash值都是一样的
  • 数字摘要
    • Hash 值在应用中又常被称为指纹( fingerprint )或摘要( digest )
    • 数字摘要是对数字内容进行 Hash 运算,获取唯一的摘要值来指代原始完整的数字内容
 
3、加解密算法
  • 加解密的基本过程
    • 加密过程中,通过加密算法和加密密钥,对明文进行加密,获得密文 。
    • 解密过程中,通过解密算法和解密密钥,对密文进行解密,获得明文 。
  • 加解密实现:A给B发消息:A用 B的公钥进行运算(加密),B收到后用 B自己的私钥进行逆向运算(解密)
  • 对称加密算法
    • 加密和解密过程的密钥是相同的
    • 分组对称加密代表算法包括 DES 、 3DES 、 AES 、 IDEA 等
    • 对称加密算法 适用于大量数据的加解密过程; 不能用于签名场景;并且往往需要提前分发好密钥 
  • 非对称加密算法
    • 加密密钥和解密密钥是不同的,分别称为公钥( public key )和私钥( private key ) 。 私钥一般需要通过 随机数算法生成,公钥可以根据私钥生成 。
    • 代表算法包括:RSA 、ElGamal 、 椭圆曲线(Elliptic Curve Crytosystems, ECC ), SM2等系列算法 
    • 非对称加密算法一般 适用于签名场景或密钥协商,但 不适于大量数据的加解密
 
4、消息认证码与数字签名
  • 消息认证码
    • 消息认证码全称是“基于 Hash 的消息认证码”( Hash-based Message Authentication Code, HMAC )。
    • 基本过程为:对某个消息利用提前共享的对称密钥和 Hash 算法进行加密处理,得到HMAC 值
    • 基于 对称加密,对消息完整性( integrity )进行保护 
    • 典型的 HMAC ( K, H, Message )算法包括三个因素, K 为提前共享的对称密钥,H 为提前商定的 Hash 算法(一般为公认的经典算法如 SHA-256 ), Message 为要处理的消息内容。如果不知道 K 或 H 的任何一个,则无法根据 Message 得到正确的 HMAC 值。
  • 数字签名
    • 基于 非对称加密,与在纸质合同上签名确认合同内容和证明身份类似,可用来证实某数字内容的完整性,还可以确认来源(或不可抵赖, Non-Repudiation )
    • 签名验签的实现:A给B发消息:A用 A自己的私钥进行运算(签名),B收到后用 A的公钥进行逆向运算(验签)
    • 一个典型的场景是, Alice 通过信道发给 Bob 一个文件(一份信息), Bob 如何获知所收到的文件即为 Alice 发出的原始版本?
      • Alice 可以先对文件内容 进行摘要,然后 用自己的私钥对摘要进行 加密(签名),之后同时将 文件和签名都发给 Bob 。 Bob 收到文件和签名后, 用 Alice 的公钥来 解密签名得到数字摘要,与收到文件进行摘要后的结果进行比对 。 如果一致,说明该文件确实是 Alice 发过来的(别人无法拥有 Alice 的私钥),并且文件内容没有被修改过(摘要结果一致) 。
    • 知名的数字签名算法包括 DSA (Digital Signature Algorithm)和安全强度更高的 ECDSA(Elliptic Curve Digital Signature Algorithm )等 
 
5、数字证书
  • 数字证书解决了非对称加密算法和数字签名中 公钥的分发的安全问题,可以证明 所记录信息的合法性
  • 根据所保护公钥的用途,可以分为 加密数字证书 ( Encryption Certificate )签名验证数字证书 ( Signature Certificate )。前者往往用于保护用于加密信息的公钥; 后者则保护用于进行解密签名进行身份验证的公钥 。
  • 一般情况下, 证书需要由 证书认证机构( Certification Authority, CA )来进行签发和背书 
    • 权威的证书认证机构包括 DigiCert、 GlobalSign 、 VeriSign 等。
    • 用户也可以自行搭建本地 CA 系统,在私有网络中进行使用 。
  • X.509证书规范
    • 目前使用最广泛的标准为 ITU 和 ISO 联合制定的 X.509 的 v3 版本规范(RFC 5280 )
    • 一般来说, 一个 数字证书内容可能包括基本数据(版本 、序列号 )、所签名对象信息(签名算法类型、签发者信息、有效期 、被签发人 、签发的公开密钥)、CA 的数字签名,等等 
    • X . 509 规范中一般推荐使用 PEM (Privacy Enhanced Mail )格式来存储证书相关的文件 。 证书文件的文件名后缀一般为 .crt 或 .cer ,对应私钥文件的文件名后缀一般为 .key ,证书请求文件的文件名后缀为 .csr。 有时候也统一用 .pem 作为文件名后缀 。
    • 可以通过 OpenSSL 工具来查看其内容
 
6、PKI 体系
  • 在非对称加密中,公钥可以通过证书机制来进行保护,但证书的生成、分发 、撤销等过程并没有在 X.509 规范中进行定义 
  • 安全地管理和分发证书可以遵循 PKI (Public Key Infrastructure )体系来完成 。PKI 体系 核心解决的是证书生命周期相关的认证和管理问题
  • 注意 :PKI 是建立在 公私钥基础 实现安全可靠传递消息和身份确认的一个通用框架,并不代表某个特定的密码学技术和流程
  • 一般情况下, PKI 至少包括如下核心组件
    • CA (Certification Authority):负责证书的颁发和作废,接收来自RA的请求,是最核心的部分;
    • RA (Registration Authority):对用户身份进行验证,校验数据合法性,负责登记,审核过了就发给 CA;
    • 证书数据库:存放证书,多采用 X.500 系列标准格式 。 可以配合 LDAP 目录服务管理用户信息 
    • 常见的操作流程为,用户通过 RA 登记申请证书,提供身份和认证信息等; CA 审核后完成证书的制造,颁发给用户 。 用户如果需要撤销证书则需要再次向 CA 发出申请。
  • 证书的签发
    • 解决了 怎样的问题
      • 有两个人A和B,他们都有自己的公钥和私钥,怎么证明B收到的公钥就是A的公钥呢?
    • CA 对用户签发证书实际上是对 某个用户公钥,使用 CA 的私钥对其进行 签名。这样任何人都可以用 CA 的公钥对该证书 进行合法性验证。验证成功则认可该证书中所提供的用户公钥内容, 实现用户公钥的安全分发 。
    • 用户证书的签发可以有两种方式
      • 一般可以由 CA 直接来生成证书(内含公钥)和对应的私钥发给用户
      • 也可以由用户自己生成公钥和私钥,然后由 CA 来对公钥内容进行签名 
        • 后者情况下,用户一般会首先自行生成一个私钥和证书申请文件( Certificate Signing Request ,即 csr 文件),该文件中包括了用户对应的公钥和 一些基本信息,如通用名( common name ,即 en )、组织信息、 地理位置等 。 CA 只需要对证书请求文件进行签名,生成证书文件,颁发给用户即可 。 整个过程中,用户可以保持私钥信息的私密性,不会被其他方获知(包括 CA 方) 
        • 生成证书申请文件的过程并不复杂,用户可以很容易地使用开源软件 openssl 来生成csr 文件和对应的私钥文件 
  • 证书的撤销
    • 证书超出有效期后会作废,用户也可以主动向 CA 申请撤销某证书文件
    • 由于 CA 无法强制收回已经颁发出去的数字证书,因此为了实现证书的作废,往往还需要 维护一个 撤销证书列表( Certificate Revocation List, CRL ),用于记录已经撤销的证书序号 
    • 通常情况下, 当第三方对某个证书进行验证时,需要 首先检查该证书是否在撤销列表中 。 如果存在,则该证书无法通过验证 。 如果不在,则继续进行后续的证书验证过程 。
 
7、同态加密
  • 同态加密 ( homomorphic encryption)是一种特殊的加密方法,允许对密文进行处理得到仍然是加密的结果 。 即对密文直接进行处理,跟对明文进行处理后再对处理结果加密,得到的结果相同
 
8、零知识证明
  • 零知识证明( zero knowledge proof)是这样的一个过程,证明者在不向验证者提供任何额外信息的前提下,使验证者相信某个论断是正确的 。

你可能感兴趣的:(学习笔记:公钥私钥 签名验签 加密解密 CA 证书)