关于PKI的知识可以参考博客
PKI基本知识
PKI——Public Key Infrastructure公钥基础设施。属于安全基础设施,是一个用公钥技术来实施和提供安全服务的具有普适性的安全基础设施。基于公钥密码学之上,用来创建、管理、存储、分布和撤销证书的软件、硬件、人员、策略和过程的集合。
PKI基础技术:数据加解密、Hash摘要、数字签名
必要性: 信息的机密性 信息的完整性 信息的真实性 不可抵赖性 PKI的组成部分:证书签发机构(CA)、证书注册机构(RA)、证书库、密钥备份及恢复系统、证书撤销处理系统、应用系统接口
- 证书签发机构CA
CA(Certificate Authority)是PKI的核心 CA对任何一个主体的公钥进行公证 CA通过签发证书将主体与公钥进行捆绑 - 证书注册机构(RA)
RA(Registration Authority)是CA的组成部本 RA是CA面向用户的窗口,它负责接收用户的证书申请,审核用户的身份 RA也负责向用户发放证书 - 证书库
证书库是证书的集中存放地,用户可以从此处获取其他用户的证书 构造证书库可以采用X.500、LDAP、Web服务器、FTP服务器、数据库等。 - 密钥备份及恢复系统
如果用户的解密私钥丢失,则密文无法解密,造成数据丢失 密钥的备份与恢复应由可信机构来完成 密钥的备份与恢复只能针对解密私钥,签名私钥不能备份。 - 证书撤销处理系统
证书在有效期之内由于某些原因可能需要撤销:用户身份的改变、对密钥的怀疑(丢失或泄露)、用户工作的变动、认为CA证书已泄露等。 撤销证书一般是把证书列入证书撤销列表中(CRL)来实现 - PKI应用系统接口
PKI的价值在于使用户能够方便地使用加密、数字签名等安全服务 一个完整的PKI必须提供良好的应用接口,使得各种应用能够以安全、一致、可信的方式与PKI进行交互,确保所建立起来的网络环境的可信性。
PKI的功能:
- 签发证书
- 签发证书撤销列表
- 密钥备份与恢复功能
- 证书、密钥对的自动更新
- 加密、签名密钥的分割
- 密钥历史的管理
- 交叉认证
PKI的性能要求:
- 透明性和易用性
- 可扩展性
- 互操作性
- 支持多应用
- 支持多平台
PKI的运营考虑:
PKI的一般结构:
PKI的标准化
第一代PKI
第一代PKI标准主要包括美国RSA公司的公钥加密标准(Public Key Cryptography Standards,PKCS)系列、国际电信联盟的ITU-T X.509、IETF组织的公钥基础设施X.509(Public Key Infrastructure X.509,PKIX)标准系列、无线应用协议(Wireless Application Protocol ,WAP)无线公钥基础设施(Wireless Public Key Infrastructure,WPKI)标准等。第一代PKI标准主要是基于抽象语法符号(Abstract Syntax Notation One,ASN.1)编码的,实现比较困难,这也在一定程度上影响了标准的推广。
第二代PKI
第二代PKI标准是在2001年,由微软、VeriSign和webMethods三家公司发布了XML密钥管理规范(XML Key Management Specification,XKMS),被称为第二代PKI标准。XKMS由两部分组成:XML密钥信息服务规范(XML Key Information Service Specification,X-KISS)和XML密钥注册服务规范(XML Key Registration Service Specification,X-KRSS)
X-KISS和X-KRSS规范都按照XML Schema 结构化语言定义,使用简单对象访问协议(SOAP V1.1)进行通信,其服务与消息的语法定义遵循Web服务定义语言(WSDL V1.0)。目前XKMS已成为W3C的推荐标准,并已被微软、VeriSign等公司集成于他们的产品中(微软已在ASP.net中集成了XKMS,VeriSign已发布了基于Java的信任服务集成工具包TSIK)。
PKI标准采用了以前建立好的各种相关标准:X.509系列和PKCS系列。
X.209
ASN.1是描述在网络上传输信息格式的标准方法。它有两部分: 第一部分(ISO 8824/ITU X.208)描述信息内的数据、数据类型及序列格式,也就是数据的语法; 第二部分(ISO 8825/ITU X.209)描述如何将各部分数据组成消息,也就是数据的基本编码规则。
ASN.1原来是作为X.409的一部分而开发的,后来才独立地成为一个标准。这两个协议除了在PKI体系中被应用外,还被广泛应用于通信和计算机的其他领域。
X.500(1993)
X.500是一套已经被国际标准化组织(ISO)接受的目录服务系统标准,它定义了一个机构如何在全局范围内共享其名字和与之相关的对象。X.500是层次性的,其中的管理域(机构、分支、部门和工作组)可以提供这些域内的用户和资源信息。在PKI体系中,X.500被用来惟一标识一个实体,该实体可以是机构、组织、个人或一台服务器。X.500被认为是实现目录服务的最佳途径,但X.500的实现需要较大的投资,并且比其他方式速度慢;而其优势具有信息模型、多功能和开放性。
X.509(1993)
X.509是由国际电信联盟(ITU-T)制定的数字证书标准。在X.500确保用户名称惟一性的基础上,X.509为X.500用户名称提供了通信实体的鉴别机制,并规定了实体鉴别过程中广泛适用的证书语法和数据接口。
X.509的最初版本公布于1988年。X.509证书由用户公共密钥和用户标识符组成。此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等信息。这一标准的最新版本是X.509 v3,它定义了包含扩展信息的数字证书。该版数字证书提供了一个扩展信息字段,用来提供更多的灵活性及特殊应用环境下所需的信息传送。
PKCS系列标准
PKCS是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书撤销列表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。到1999年底,PKCS已经公布了以下标准:
证书编码格式
ASN.1
是一种用来定义数据结构的接口描述语言,它不是二进制,也不是文件格式。 上面这段代码定义了FooQuestion的数据结构,下面是FooQuestion这个数据接口的某个具体的数据: ASN.1是X.509和PKCS标准中常用的数据结构描述语言。
DER编码格式
ASN.1有一套关联的编码规则,这些编码规则用来规定如何用二进制来表示数据结构,DER编码是其中一种。 把上面的FooQuestion的例子用DER编码则是(16进制): 对这个十六进制编码的解释理解就是:
PEM编码格式
PEM是一个用来存储和发送密码学key、证书和其他数据的文件格式的事实标准。许多使用ASN.1的密码学标准(比如X.509和PKCS)都使用DER编码,而DER编码的内容是二进制的,不适用于邮件传输(早期Email不能发送附件),因此使用PEM把二进制内容转换成ASCII码。文件内容的格式像下面这样: PEM实际上就是把DER编码的文件的二进制内容用base64编码一下,然后加上-----BEGIN label-----这样的头和-----END label-----这样的尾,中间则是DER文件的Base64编码。
在-----BEGIN-----与-----END-----之间内容的顶部,有时使用一些头定义对信息进行封装,这些头信息格式如下(不一定都需要,可选的):
Proc-Type,4:ENCRYPTED
DEK-Info: cipher-name, ivec
其中,第一个头信息标注了该文件是否进行了加密,该头信息可能的值包括ENCRYPTED(信息已经加密和签名)、MIC-ONLY(信息经过数字签名但没有加密)、MIC-CLEAR(信息经过数字签名但是没有加密、也没有进行编码,可使用非PEM格式阅读)以及CLEAR(信息没有签名和加密并且没有进行编码,该项好象是openssl自身的扩展,但是并没有真正实现);第二个头信息标注了加密的算法以及使用的ivec参量,ivec其实在这儿提供的是一个随机产生的数据序列,与块加密算法中要使用到的初始化变量(IV)不一样。
X.509证书实例
X.509是一个Public Key Certificates的格式标准,TLS/SSL使用它,TLS/SSL是HTTPS的基础,所以HTTPS也使用它。而所谓Public Key Certificates又被称为Digital Certificate 或 Identity Certificate。
一个X.509 Certificate包含一个Public Key和一个身份信息,它要么是被CA签发的要么是自签发的。
PKCS(公钥加密标准)系列
PKCS #1
PKCS #1,RSA Cryptography Standard,定义了RSA Public Key和Private Key数学属性和格式,详见RFC8017。详细的介绍了RSA算法的计算过程,包括:key的产生,key的结构,对数字加密/解密/签名/验证签名的过程、对应算法。 1、key. 分别记录了private和public的详细结构,以及存储哪些内容。并且在附录里面推荐了ASN.1 Syntax中的存储结构。没有规定实际的物理文件存储结构,比如PEM等。 2、加密/解密 详细描述了加密/解密的算法。首先针对字符串,怎么转化成数字,之后,怎么根据数字进行加密。 这里可以看出,标准中没有对超长字符串处理的说明。而转化出的字符串的长度,全都是key的模长度k。
在字符串转化成数字过程中,需要增加填充字符,所以,分成了两种不同算法: RSAES-OAEP(现有标准) RSAES-PKCS1-v1_5(兼容过去标准)。
在实际加密过程中,就只有一种算法。无论在加密还是签名过程中,都会进行hash操作,hash操作没有自己定义,而是从附录中可以选择需要的hash方式。PKCS#1填充方式:在进行RSA运算时需要将源数据D转化为Encryption block(EB)。其中pkcs1padding V1.5的填充模式按照以下方式进行:
填充方式:
PKCS#8,#12
常见的证书标准格式(PEM编码)
常见证书后缀
Private Key操作命令
不同格式公钥转换
小结
PKI是一个用公钥技术来提供和实施安全服务的具有普适性的安全基础设施 PKI的主要任务是管理密钥和证书 PKI由CA、RA、证书库、密钥备份与恢复系统、证书撤销系统、应用接口组成 PKI标准化文档包括X.509、PKIX、PKCS等。
|