大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
转自CSDN.
在PKI体系中涉及到四类标准,下面做个简单介绍。
1.asn.1基本编码规范
Asn.1是描述在网络上传输信息格式的标准方法。它有两个部分:第一部分(X.208)描述信息内的数据、数据类型及序列格式,也就是数据的语法;第二部分(X.209)描述如何将各部分数据组成消息,也就是数据的基本编码规则(DER编码)。Asn.1原来是作为X.409的一部分而开发的,后来独立发展为一个标准。这两个协议除了在PKI体系中被应用外,还被广泛应用于通信和计算机的其他领域。
关于对asn1编码的理解,可以参考我的另一篇博文:http://blog.csdn.net/sszgg2006/article/details/42395895
2.X.500目录服务
X.500是一套已经被国际标准化组织(ISO)接受的目录服务系统标准,它定义了一个机构如何在全局范围内共享其名字和与之相关的对象。X.500是层次性的,其中的管理域(机构、分支、部门和工作组)可以提供这些域内的用户和资源信息。在PKI体系中,X.500被用来唯一标识一个实体,该实体可以是机构、组织个人和一台服务器。X.500被认为是实现目录服务的最佳途径,但X.500的实现需要较大的投资,并且比其他方式速度慢。而其优势是具有信息模型、多功能和开放性。
3.PKIX
X.509是由国际电信联盟(ITU-T)制定的数字证书标准。在X.500确保用户名称唯一性的基础上,X.509为X.500用户名称提供了通信实体的鉴别机制,并规定了实体鉴别过程中广泛使用的证书语法和数据接口。X.509的最初版本公布于1988年。X.509证书由用户公共密钥和用户标示组成。此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称证书有效期等信息。这一标准的最初版本是X.509
PKIX系列标准(Public
(1)PKIX系列标准中的基础协议
PKIX基础协议是以RFC3280为核心,阐述了基于x.509的PKI框架结构,详细定义了x.509
PKIX通过对x.509
草案编号 |
协议内容 |
RFC3280 |
定义了X.509v3公钥证书和X.509v2 |
RFC2528 |
阐述了基于X.509的密钥交换算法KEA(Key |
RFC3039 |
描述用于防抵赖的高可信证书的格式和相关内容 |
RFC3279 |
描述了X.509v3公钥证书和X.509v2 |
(2)PKIX系列标准中的操作协议
PKIX的操作协议涉及CA/RA或端实体与证书库之间的交互。主要阐述了PKI系统中实体如何通过证书库来存放、读取证书和撤销证书。这些操作协议主要包括RFC2559、RFC2560、RFC2585、RFC2587等多个协议草案(见下表),定义了x.509
草案编号 |
协议内容 |
RFC2559 |
使用LDAP |
RFC2560 |
阐述在线证书状态确认协议(OCSP),从而可以通过在线证书状态服务器,而不使用CRL确定当前证书状态 |
RFC2585 |
阐述了通过FTP和HTTP从PKI系统中获取证书和CRL的操作协议 |
RFC2587 |
阐述了使用LDAP |
(3)PKIX中的管理协议
PKIX中的管理协议涉及管理实体(CA/RA)与端实体内部的交互,主要阐述PKI系统实体间如何进行信息的传递和管理。PKIX中管理协议包括RFC2510、
草案编号 |
协议内容 |
RFC2510 |
定义了X.509 |
RFC2511 |
定义了证书请求报文格式CRMF |
RFC2527 |
阐述了证书策略和CPS相关信息的政策大纲 |
RFC2797 |
描述了X.509 |
(4)PKIX中的扩展协议
PKIX中的扩展协议主要是进一步完善PKI安全框架的各种功能,如安全服务中防抵赖和权限管理,PKIX中的扩展协议包括RFC3029、RFC3161、RFC3281等多个协议草案,防抵赖可通过数字时间戳DTS(Digital
而权限管理是通过属性证书来实现。属性证书利用属性类别和属性值来定义每一个证书持有者的权限、角色等信息。
(5)PKIX的进一步发展与完善
为了适应pKI技术的发展,IETF也在不断地推出新的协议草案来完善基于X.509的PKI应用方案。如PKI的基础协议RFC2459已升级到RFC3280.而RFC2559协议是基于LDAPv2标准的,但在开放的网络环境下,LDAPv2不能提供足够强度的完整性和机密性的支持,因此在RFC3494中建议适应LDAPv3标准。因此随着PKI技术的进一步发展和应用的不断普及,RFC标准也将不断的增加和更新。
同时,PKI工作小组还指定多个Drafts草案来支持对PKIX系列标准的扩展、应用和研究的需要。如在“draft–ietf–pkix–sonof3039–00.txt”中,对基于RFC3280“高可信证书”进行了重新论述和进一步完善。其他Drafts草案内容见http://www.ietf.org.
4.PKCS
PKCS是由美国RSA安全公司及其合作伙伴指定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废列表发布、扩展证书内容及数字签名、数字信封的格式等方面的一系列相关协议。到1999年底,PKCS已经公布了以下标准:
PKCS#1:RSA
•规范了sm2算法的使用方法
– 密钥结构
– 密钥产生
– 签名运算
– 加密运算
– 密钥协商
• 规范了私钥的保护结构(用于加密密钥)
• 规范了用户ID的标称值。
PKCS#3:定义DH密钥交换协议;
PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。使用MD2或MD5从口令中派生密钥,并采用DES-CBC模式加密。主要用于加密从一个计算机传送到另一个计算机的私人密钥,不能用于加密消息。
PKCS#6:描述了公钥证书的标准语法,主要描述X509证书的扩展格式
PKCS#7:Cryptographic
• 规范了加密签名消息语法
– 签名消息
– 数字信封消息
– 带签名的数字信封消息
– 加密消息
– 密钥协商交换消息
• 规范了公钥和私钥的语法
PKCS#8:描述私有密钥信息格式,该信息包括公开密钥算法的私钥密钥及可选的属性集等;
PKCS#9:定义一些用于PKCS#6证书扩展、PKCS#7数字签名和PKCS#8私钥加密信息的属性类型;
PKCS#10:描述证书请求语法;
PKCS#11:称为Cyptoki,定义了一套独立于技术的程序设计接口,用于智能卡和PCMCIA卡之类的加密设备;
PKCS#12:描述个人信息交换语法标准。描述了将用户公钥、私钥证书和其他相关信息打包的语法;
PKCS#13:椭圆曲线密码体制标准
PKCS#14:伪随机数形成标准
PKCS#15:密码令牌信息格式标准
公开密钥密码学标准(Public-Key Cryptography Standard,PKCS)是RSA数据安全有限公司试图为公开密钥密码学提供的一个工业标准接口。在多个公司的共同努力下,他们研制了一系列标准,其中某些标准可以与其他标准兼容。PKCS所提供的是基于公开密钥加密的数据传输格式和支持这个传输的基本结构。
下面简单地描述了每一个PKCS(PKCS #1中包含了PKCS #2和PKCS #4)。
PKCS #1描述了RSA加密和解密的方法,主要用于组织PKCS #7中所描述的数字签名结构和数字信封。
对于RSA的公开密钥、私人密钥、三个签名算法——MD2和RSA,MD4和RSA以及MD5和RSA——以及签名证书,
PKCS #1也描述了与X.509和PEM中同样的语法。
PKCS #3描述了实现Diffe-Hellman密钥交换功能的方法。
PKCS #5描述了用一个从口令中派生的秘密密钥加密消息的功能。它使用MD2或MD5以口令中派生密钥,并采用DES的CBC模式加密。这个功能主要用于加密从一个计算机传送到另一个计算机的私人密钥,不能用于加密消息。
PKCS #6描述了公开密钥证书的标准语法。这一语法是X.509证书的扩展。X.509证书之外的一些附加属性已使证书处理不限于公开密钥。
PKCS #7是一个对数据加密或签名的通用语法(如数字信封和数字签名)。信封可以进行嵌套,也可以签名已经加密的数据。这些语法还提供了其他一些属性(如可与消息内容一起被鉴别的时间标记)。PKCS #7与PEM兼容,可以直接将加密的消息转换成PEM消息,反之亦然。PKCS #7支持多种基于证书的管理系统,PEM就是其中之一。
PKCS #8描述了私人密钥信息语法(包括私人密钥)、一组属性和加密私人密钥的语法。PKCS #8可以用于加密私人密钥信息。
PKCS #9定义了PKCS #6扩展证书、PKCS #7数字签名消息和PKCS #8加密私人密钥信息的选择属性类型。
PKCS #10描述了证书请求的标准语法。一个证书包括可区别的名字、公开密钥和(可选的)一组属性,所有这些均由请求证书的用户签名。
证书请求被发送到证书机关,证书机关将请求转换成X.509公开密钥证书或PKCS #6证书。
PKCS #11详细规定了一个称为Cryptoki的编程接口,它可用于各种可移植的密码设备,是密码标记的API标准。
Cryptoki给出了一个通用逻辑模型,可以在可移植的设备上完成加密操作。这个标准也定义了设备可以支持的几组算法。
PKCS #12描述了将用户公开密钥、受保护的私人密钥、证书和其他相关的加密信息存放在软件中的语法。
它的目标是为各种应用提供一个标准的单一密钥文件。
重点来理解下p1、p7和p12:
p12:对于一个p12包,里面含有证书及证书中公钥所对应的私钥,其中,私钥要用口令进行保护,将证书及其私钥公共打包到在一起,这个包很类似于一个硬件的证书载体—-Usbkey,我们知道,USBkey里面其实就是保存着证书,只不过USBkey里面的载体是cos系统,因此,我们可以理解为一个p12的包就是一个包含着证书的usbkey,一个软证书,当将证书放到USBkey里时就是硬证书了。
附:在openssl的实现中,有一个p12的结构体来表示其含义,可以结合着这个结构体来理解。
p7:我们首先试想一个场景,我们将一个数据进行签名,之后将这个签名的数据发送给对方,那么对方只需要公钥就能验签吗,答案是否定的,在用公钥进行验签运算的过程中仍然需要知道验签算法,比如:采用的哈希算法是md5/sha-1/sm3,签名算是是RSA还是DSA等,因此,为了让对方能够进行验签,仅仅将签名的结果发给对方是不利于对于进行验签的(仅将签名结果发给对方属于裸签),因此,签名方需要将签名值及签名的相关信息一起附在签名值上,一起发给进行验签的一方,这样对方利用签名值及验签过程中所需的相关信息就能进行验签了。这个将签名值及相关信息打包到一起的包就是p7。上面我仅仅就签名而言的,其实加密也是一样的道理,加密方如果仅仅将加密值发给对方的话,不利于对方进行解密;在openssl的实现中,有一个p7的结构体来表示其含义,可以结合着这个结构体来理解,至于一个p7包里面是签名值还是加密值,在这个包中有一个Type的成员来标示。加密消息语法:在网络的世界里面一方给另一方传递签名或加密数据时,需要规范的一种格式。在OpenSSL里面定义了一个pkcs7的结构体,一方往里面填充数据后经网络传给另一方,另一方按照pkcs7的规范解开即可。
p1:这个规范可以说是p7的基础,它规范了如何进行加密,如何进行签名,如同国密标准中的《SM2椭圆曲线公钥密码算法
除了以上协议外,还有一些构建在PKI体系上的应用协议,这些协议是PKI体系在应用和普及方面的代表作,包括SET协议和SSL协议。
目前PKI体系中已经包含了众多的标准和标准协议,由于PKI技术的不断进步和完善,以及其应用的不断普及,将来还会有更多的标准和协议加入
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/172006.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...