密码学概念二:数字证书、密钥基础知识

前言

https://www.zhihu.com/column/c_1380896366827388928

本文主要简述数字证书密钥相关的一些基础知识,例如什么是数字证书ASN.1 是什么?常见的 X.509 代表什么含义?什么是 PKI、PKCS 标准?

一、数字证书

对于非对称加密算法和数字签名来说,很重要的步骤就是公钥的分发。理论上任何人都可以获取到公开的公钥,然而这个公钥文件有可能是伪造的,传输过程中也有可能被篡改,所以一旦公钥自身出了问题,则整个建立在其上的的安全性将不复成立。

数字证书机制 正是可以解决公钥分发问题,确保所记录信息的合法性。比如证明某个公钥是某个实体(个人或组织)拥有,并且确保任何篡改都能被检测出来,从而实现对用户公钥的安全分发。

根据所保护公钥的用途,数字证书可以分为 加密数字证书(Encryption Certificate) 和 签名验证数字证书(Signature Certificate)。

  • 加密数字证书 用来保护加密用途的公钥
  • 签名验证数字证书 用来保护签名用途的公钥
  • 两种类型的公钥可以同时放在同一证书中

一般情况下,证书需要由 证书认证机构(Certification Authority,CA) 来进行签发和背书。

  • 权威的商业证书认证机构包括 DigiCert、GlobalSign、VeriSign 等
  • 用户也可以自行搭建本地 CA 系统,在私有网络中进行自有证书的签发和背书

二、ASN.1

常见的 数字证书 和 密钥 都采用了 ASN.1 格式的语法来描述结构,ASN.1(Abstract Syntax Notation One) 是一套标准,是描述数据的表示、编码、传输、解码的数据格式。它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。

ASN.1 本身只定义了表示信息的抽象句法,但是没有限定其编码的方法。各种 ASN.1 编码规则提供了由 ASN.1 描述其抽象句法的数据的值的传送语法(具体表达)。ASN.1 的标准编码规则有:

  • BER 基本编码规则(Basic Encoding Rules)
    • BER(BasicEncoding Rules)是 ASN.1 中最早定义的编码规则,其他编码规则是在 BER 的基础上添加新的规则构成
    • BER 的语法传输格式是 TLV 三元组 <Type, Length, Value>
  • DER 唯一编码规则(Distinguished Encoding Rules)
  • CER 规范编码规则(Canonical Encoding Rules)
  • PER 压缩编码规则(Packed Encoding Rules)
  • XER XML 编码规则(XML Encoding Rules)

三、X.509 证书规范

X.509 是密码学里公钥证书的格式标准。

一个数字证书内容可能包括证书域(证书的版本、序列号、签名算法类型、签发者信息、有效期、被签发主体、签发的公开密钥)、CA 对证书的签名算法和签名值等,他们一般就采用 X.509 规范编写。

证书格式: X.509 规范中一般推荐使用 PEM(Privacy Enhanced Mail)格式来存储证书相关的文件。

  • 证书文件的文件名后缀一般为 .crt 或 .cer
  • 对应私钥文件的文件名后缀一般为 .key
  • 证书请求文件的文件名后缀为 .csr
  • 有时候也统一用 .pem 作为文件名后缀

PEM 格式 采用文本方式进行存储,一般包括首尾标记和内容块,内容块采用 Base64 格式编码,示例如下:

-----BEGIN CERTIFICATE-----
BASE64 CONTENT
-----END CERTIFICATE-----

目前使用最广泛的标准为 ITU 和 ISO 联合制定的 X.509 的 v3 版本规范(RFC 5280),其中定义了如下证书信息域:

  • 版本号(Version Number):规范的版本号(目前为版本 3,值为 0x2)
  • 序列号(Serial Number):由 CA 维护的为它所颁发的每个证书分配的唯一的序列号,用来追踪和撤销证书
  • 签名算法(Signature Algorithm ID):签名所采用的算法
  • 颁发者(Issuer Name):颁发证书单位的信息,如 C=CN, ST=Shanghai, L=Shanghai, O=org.aurthur.cn, CN=ca.org.aurthur.aurthur
  • 有效期(Period of validity):证书的有效期限,如 Not Before 2020-08-08-00-00UTC,Not After 20230-08-08-00-00UTC
  • 被签发主体(Subject Name):证书拥有者的标识信息(Distinguished Name),如 C=CN, ST=Shanghai, L=Shanghai, CN=p1.org.aurthur.cn
  • 主体的公钥信息(Subject Public Key Info):所保护的公钥相关的信息
    • 公钥算法(Public Key Algorithm):公钥采用的算法
    • 主体公钥(Subject Public Key):公钥的内容
  • 颁发者唯一号(Issuer Unique Identifier,可选):代表颁发者的唯一信息,仅 2、3 版本支持(可选)
  • 主体唯一号(Subject Unique Identifier,可选):代表拥有证书实体的唯一信息,仅 2、3 版本支持(可选)扩展(Extensions,可选):可选的一些扩展,可能包括:
    • Subject Key Identifier:实体的密钥标识符,区分实体的多对密钥
    • Basic Constraints:一般指明该证书是否属于某个 CA
    • Authority Key Identifier:颁发这个证书的颁发者的公钥标识符
    • Authority Information Access:颁发相关的服务地址,如颁发者证书获取地址和吊销证书列表信息查询地址
    • CRL Distribution Points:证书注销列表的发布地址
    • Key Usage: 表明证书的用途或功能信息,如 Digital Signature、Key CertSignSubject Alternative Name:证书身份实体的别名
  • 证书签名算法(Certificate Signature Algorithm):证书签名所用的算法
  • 证书签名(Certificate Signature):证书的签名

X.509 标准图解:

在这里插入图片描述

四、PKI 体系

按照 X.509 规范,公钥可以通过证书机制来进行保护,但证书的生成、分发、撤销等步骤并未涉及。

PKI(Public Key Infrastructure)体系 解决了证书生命周期相关的认证和管理问题,定义了安全地管理、分发证书需要遵循的标准。

PKI 是建立在公私钥基础上实现安全可靠传递消息和身份确认的一个通用框架,并不代表某个特定的密码学技术和流程,实现了 PKI 规范的平台可以安全可靠地管理网络中用户的密钥和证书。

一个完备 PKI 体系应该包括如下组件:

  • 数字证书:包含了用于签名和加密数据的公钥的电子凭证,是 PKI 的核心元素
  • 认证中心(CA):数字证书的申请及签发机关,CA 必须具备权威性
  • 证书资料库:存储已签发的数字证书和公钥,以及相关证书目录,用户可由此获得所需的其他用户的证书及公钥
  • 证书吊销列表(CRL)/OCSP:在有效期内吊销的证书列表,OCSP(在线证书状态协议)是获得证书状态的国际协议
  • 密钥备份及恢复:为避免因用户丢失解密密钥而无法解密合法数据的情况,PKI 应提供备份与恢复密钥的机制
  • PKI 应用接口(API):为应用提供安全、一致、 可信的方式与 PKI 交互

五、PKCS 标准

PKCS 全称是 Public-Key Cryptography Standards(公钥加密标准),是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。

我们现在所常用的 RSA 密码算法就是 PKCS#1 标准实现的算法,一般使用 1.5 版本的。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45264425/article/details/130395390
今日推荐