pkcs标准简介
- 格式:pdf
- 大小:247.39 KB
- 文档页数:9
pkcs12证书格式
PKCS#12 是一种证书格式,它定义了一种存储和传输个人身份
证书、公钥、私钥和其他相关证书的标准格式。
PKCS#12 通常使
用 .p12 或 .pfx 文件扩展名。
PKCS#12 证书格式具有以下特点和用途:
1. 存储个人身份证书,PKCS#12 格式可用于存储个人身份证书,包括用户的公钥证书、私钥和相关证书链。
这些证书通常用于身份
验证、加密和数字签名。
2. 密码保护,PKCS#12 格式支持使用密码对私钥进行加密,以
提供额外的安全性。
用户需要提供密码才能访问和使用存储在
PKCS#12 文件中的私钥。
3. 跨平台兼容性,PKCS#12 格式是一种跨平台的标准格式,广
泛支持各种操作系统和应用程序。
这使得 PKCS#12 证书可以在不同
的系统和设备上共享和使用。
4. 导出和导入证书,PKCS#12 格式提供了一种方便的方式来导
出和导入证书。
用户可以将证书从一个应用程序或设备导出为PKCS#12 文件,然后在另一个应用程序或设备中导入使用。
总结起来,PKCS#12 是一种常用的证书格式,用于存储和传输个人身份证书、公钥、私钥和其他相关证书。
它提供了密码保护、跨平台兼容性以及方便的导入和导出功能,使得证书的使用和管理更加便捷和安全。
PKCS12 是由RSA 安全公司开发的一种用于个人信息交换的语法标准。
它定义了一种将个人私钥、公钥及相应证书链信息打包编码的格式,可以用于安全地传输和存储个人身份信息。
PKCS12 标准的应用范围很广泛,例如在 SSL/TLS 协议中用于客户端认证、数字证书的导入导出、身份认证和密码管理等领域。
在本文中,我们将对 PKCS12 标准进行介绍,并探讨其在实际应用中的重要性和作用。
一、PKCS12 的定义和特点PKCS12 是一种密码安全标准(Public-Key Cryptography Standards)的一部分,其全称为“Personal Information Exchange Syntax Standard”,即个人信息交换语法标准。
它使用了公钥密码学和对称密码学的技术,旨在提供一种安全、便捷地存储和传输个人私钥、公钥及相关证书链信息的标准格式。
PKCS12 的特点主要包括以下几点:1. 安全性高:PKCS12 使用了密码学技术来加密个人私钥等敏感信息,确保在存储和传输过程中的安全性。
2. 通用性强:PKCS12 标准可以被广泛地应用于不同的场景,例如SSL/TLS 客户端认证、数字证书的导入导出等。
3. 灵活性好:PKCS12 格式灵活,可以存储包含私钥和证书链的内容,能够满足不同应用的需求。
二、PKCS12 的结构和格式PKCS12 标准定义了一种以二进制方式编码的格式,用于存储个人私钥、公钥及相关证书链信息。
其结构主要由以下几个部分组成:1. 个人私钥:使用密码学技术加密的个人私钥信息。
2. 公钥证书:与个人私钥相对应的公钥证书。
3. 证书链:与公钥证书关联的证书链信息。
4. 其他相关信息:可能包括密码、属性等其他相关信息。
PKCS12 格式的数据通常以 .p12 或 .pfx 为扩展名,它采用了一种包含多个安全袋(SafeBag)的结构,每个安全袋又可以包含多个安全项(SafeContents)。
PKCS#11及CSP接口标准RSA非对称密码算法的三个创始人的姓的第一个字母联合起来就是RSA了,他们三个创建的公司的名字也就叫做RSA。
在RSA有一个著名的公钥算法的实验室,这个实验室颁发的一系列行业标准就称作为PKCS标准,其中PKCS#11(简称P11)就是针对密码设备的接口指令标准。
目前最新的版本应该是2.3了。
P11模型中重要的概念之一是slot,也称为槽。
一个slot为一个密码设备对象。
某个打开的slot会话称之为session。
Session之间存在不同的验证权限。
而同一个slot的不同的session 之间存在操作的互相影响性,同时在某些状况下,权限会发生同步。
另外一个重要的概念是对象。
P11中支持几种重要的对象,如公钥、私钥、对称密钥,数据对象等。
PKCS#11创建和支持下列对象:PKCS#11的对象可根据其生命期长短的不同分成两大类:一类是持久存储的类对象,这类对象被保存在USB Key的安全存储区域当中,直到应用程序主动删除这些对象;另一类是会话对象,这类对象只存在于运行时建立的特定会话(Session对象)当中,一旦会话结束,这类对象也跟着被删除。
决定对象生命期的模板属性是CKA_TOKEN,这是个布尔值,所有的对象都有这一属性。
当该值为TRUE时,该对象将被保存到Key内的存储空间,否则,该对象保存在会话空间中,当会话结束后,该对象即销毁。
PKCS#11的对象除了生命期长短有分别之外,在访问权限上也有限制。
所有的对象都可根据访问权限的不同分成两大类:一类是公开对象,这类对象是任何用户都可以访问的;另一类是私有对象,这一类对象只有身份被验证的用户才有权访问。
决定对象的访问限制类型的模板属性是CKA_PRIVATE。
这是个布尔值,所有的对象都有这一属性。
应用程序可根据需要决定对象应为私有对象还是公开对象。
P11标准颁发了70余条指令。
其中部分指令简介如下表:3、CSP接口标准CSP接口标准为微软所颁发,在windows操作系统上通行。
PKCS简介PKCS 全称是Public-Key Cryptography Standards ,是由RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过15 个标准。
常用的有:PKCS#12 Personal Information Exchange Syntax StandardX.509是常见通用的证书格式。
所有的证书都符合为Public Key Infrastructure (PKI) 制定的ITU-T X509 国际标准。
PKCS#12 常用的后缀有: .P12 .PFXX.509 DER 编码(ASCII)的后缀是: .DER .CER .CRTX.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示。
.der是windows下的证书格式,以二进制形式存放。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式p10是证书请求一用openssl创建CA证书的RSA密钥(PEM格式):openssl genrsa -des3 -out ca.key 1024二用openssl创建CA证书(PEM格式,假如有效期为一年):openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config fopenssl是可以生成DER格式的CA证书的,最好用IE将PEM格式的CA证书转换成DER 格式的CA证书。
三x509到pfxpkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx 四PEM格式的ca.key转换为Microsoft可以识别的pvk格式。
与pki相关的标准
与pki(公钥基础设施)相关的标准有很多,以下是其中一些常见的标准:
1. X.509:这是一种数字证书标准,用于在公钥基础设施中发布和管理数字证书。
X.509标准定义了证书的主题、颁发者和有效期等属性,以及如何使用证书来验证身份和授权。
2. PKCS(公钥密码标准):PKCS是一组与公钥基础设施相关的标准,包括PKCS#1、PKCS#7、PKCS#8、PKCS#10、PKCS#11和PKCS#12等。
这些标准定义了与公钥密码学相关的算法、协议和格式,例如RSA、椭圆曲线和数字签名等。
3. LDAP(轻量级目录访问协议):LDAP是一种用于访问目录服务的协议,它定义了如何在公钥基础设施中使用目录服务来存储和管理数字证书和密钥。
4. SMIME(安全/多用途互联网邮件扩展):SMIME是一种用于在互联网上发送加密的电子邮件的协议,它定义了如何在公钥基础设施中使用加密和数字签名来保护电子邮件。
5. OCSP(在线证书状态协议):OCSP是一种用于检查数字证书是否被吊销的协议,它定义了如何在公钥基础设施中使用OCSP来检查数字证书的状态。
6. CRL(证书吊销列表):CRL是一种包含已吊销证书列表的公告,它定义了如何在公钥基础设施中发布和管理CRL,以便验证数字
证书的有效性。
这些标准通常一起使用,以确保公钥基础设施的安全、可靠和互操作性。
PKCS(Public-Key Cryptography Standards,公钥加密标准)是一套公司间的标准协议,用于在因特网上使用公开密钥基础设施(PKI)实现安全信息交换。
PKCS已经公布的标准有:
•PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封。
•PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。
•PKCS#6:描述了公钥证书的标准语法,主要描述X.509证书的扩展格式。
•PKCS#7:定义一种通用的消息语法,包括数字签名和加密等用于增强的加密机制,PKCS#7与PEM兼容,所以不需其他密码操作,就可以将加密的消息转换成PEM消息。
•PKCS#8:描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等。
pkcs7签名标准
PKCS#7(Public-Key Cryptography Standard #7)是一种加密消息的语法标准,由RSA安全体系在公钥加密系统中交换数字证书产生。
PKCS#7签名主要用于确保数据的完整性和来源真实性,并保护数据以防被篡改。
PKCS#7签名标准涉及以下几个方面:
1. 数据填充:在签名之前,发送方需要对数据进行填充,以确保数据的完整性。
填充后的数据称为填充数据块。
2. 签名生成:发送方使用自己的私钥对填充后的数据块进行RSA运算。
得到的结果即为PKCS#7格式的签名值。
3. 签名验证:接收方使用发送方的公钥对签名值进行验证。
验证通过,说明数据来源可靠且未被篡改。
4. 数据解密:接收方可以使用发送方的公钥对加密数据进行解密,得到原始数据。
PKCS#7签名标准在网络安全领域具有广泛的应用,例如用于数字证
书、安全传输协议等场景。
通过遵循这一标准,可以确保数据在传输过程中的完整性和真实性,防止篡改和伪造。
CA技术标准在CA的系统中,各种密码算法、密钥格式、加解密方式、消息传输方式和证书格式等都应符合国内或国际标准。
若没有标准的,采用国际上通用的企业标准或公认的事实标准。
现将CA系统所遵循的有关标准公布如下:·SET 1.0(Secure Electronic Transaction):定义SET系统内部各项支付数据、格式和流程标准,由SETCc负责修订。
·ASN.1(Abstract Syntax Notation):抽象句法符号标准,用来表示各种消息,符合ITU-T X.208标准。
·DER(Distinguished Encoding Rules):唯一编码规则,用来以明确的格式对支付消息和整数中的协议数据进行编码,符合ITU-T X.680标准。
·DES(Data Encryption Standard):数据加密标准。
·RSA:非对称加密方式,主要用于数字签名。
·CAST:分组密码,符合Internet RFC 2144。
·PKCS(Public-Key Cryptography Standards):由RSA公司制定的公开密钥标准。
·PKCS#1(RSA Encryption Standard):RSA加密标准格式。
·PKCS#3:( Diffie-Hellman Key Agreement Standard):描述在原来没有协议的双方应用Diffie-Hellman 密钥协议的方法。
·PKCS#5(Password-Based Encryption Standard):从口令推导出密钥和算法的参数。
·PKCS#6:(Extended-Certificate Syntax Standard):扩展证书的语法定义。
·PKCS#7(Cryptographic Message Syntax Standard):定义加密消息句法。
公钥密码标准(Public-Key Cryptography Standards)Hanyil整理编写 保留版权由于公钥密码被广泛接受已成为事实,如果要将其发展成为广泛应用的技术,就必须有支持互操作的标准。
即便是所有的用户都认同公钥密码技术,使各种不同的实现版本相兼容也是必然的。
互操作性要求严格按照一个获得认可的标准格式来传输数据,这里所描述的标准就为互操作性提供了基础。
这里描述的标准被称为公钥密码标准(Public-Key Cryptography Standards,PKCS)。
这个标准涵盖了RSA密码、Diffie-Hellman 密钥交换、基于口令的加密、扩展证书语法、密码报文语法、私钥信息语法、认证请求语法、选择性属性,密码令牌以及椭圆曲线密码等内容。
公钥密码标准PKCS是由RSA实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,是最早的公钥密码标准,也是公钥密码发展过程中最重要的标准之一。
自1991年作为一份会议结果,由早期的公钥密码使用者公布以来,PKCS文档已经被广泛引用和实现。
许多正式和非正式工业标准部分内容的制订都参照了PKCS,如ANSI X9, PKIX, SET, S/MIME, 和SSL等。
RSA实验室在标准制订过程中起了很重要的作用:发布了认真撰写的标准描述文档;保持了标准制订过程的决策权威;负责收集其它开发者所提出的修改和扩充意见;适时发布标准的修订版;提供了实现该标准的参考资料和指导。
PKCS目前共发布过15个标准,每个标准都经过数次修订,部分文档还在不断的修改和制订中。
15个标准如下:•PKCS #1: RSA Cryptography Standard RSA密码标准•PKCS #2:已合并入1。
•PKCS #3: Diffie-Hellman Key Agreement Standard DH密钥交换标准•PKCS #4:已并入1。
•PKCS #5: Password-Based Cryptography Standard基于口令的密码标准•PKCS #6: Extended-Certificate Syntax Standard证书扩展语法标准•PKCS #7: Cryptographic Message Syntax Standard密文信息语法标准•PKCS #8: Private-Key Information Syntax Standard私钥信息语法标准•PKCS #9: Selected Attribute Types•PKCS #10: Certification Request Syntax Standard认证请求语法标准•PKCS #11: Cryptographic Token Interface Standard密码令牌接口标准•PKCS #12: Personal Information Exchange Syntax Standard个人信息交换语法标准•PKCS #13: Elliptic Curve Cryptography Standard椭圆曲线密码标准•PKCS #14: Random Number Generation Standards (伪随机数生成标准)• PKCS #15: Cryptographic Token Information Format Standard 密码令牌信息格式 PKCS #标准 13 5678910111215其它标准 自由算法语法:数字签名信息 xx 数字信封加密信息 x认证请求 x x数字证书X.509, RFC 1422 扩展证书 x x证书撤销列表X.509, RFC 1422 私钥加密信息x x 密码令牌x x 个人交换信息x 密钥交换信息 [ISO90a], [ISO90b]特定算法语法: RSA 公钥 xRSA 私钥 x算法: 消息摘要:MD2, 5 RFCs 1319, 1321私钥加密:DES RFC 1423, [NIST92a] 公钥加密:RSA x签名:MD2,4,5w/RSA x基于口令的加密 x D-H 密钥交换 xPKCS 与其它标准对比PKCS#1 RSA 密码标准1.0 – 1.3版是为参加RSA 数据安全公司1991年2月和3月的公开密钥密码标准会议而发布的。
1.4版是1991年6月3日首次公开发布的PKCS 的一部分。
1.4版作为NIST/OSI 实现工作组的SEC-SIG-91-18标准文档发布。
1.5版合并了几个版本的变化,包括参考文献的更新和增加修订历史。
1.5版是作为IETF RFC 2313发布的。
2.0版编入了在文档结构方面的主要变化,而且引入了RSAES-OAEP 加密方案。
尽管由于这几年来的密码发展不再允许使用MD4,但这个版本继续支持1.5版中的加密和签名操作。
2.0版是作为IETF RFC 2437发布的。
2.1版引入了多素数RSA和RSASSA-PSS带附属的签名方案。
这个版本同时支持2.0版中的方案。
该文档介绍基于RSA公钥密码系统的实现方法,包括:密码原语、加密方案、带附属的签名方案、密钥和方案的ASN.1描述。
是为计算机和通信系统的一般应用和具有灵活性的系统的一般应用而编写的。
第一部分是介绍。
第二部分是对文档中使用到的符号的定义。
第三部分详细说明了RSA公钥和私钥的类型。
第四部分和第五部分详细说明了几个原语,或基本数学操作。
第四部分详细说明了数据转换原语,第五部分详细说明了密码系统原语(加密—解密、签名—验证)。
第六、七和八部分涉及加密和签名方案。
第六部分是概述。
包括PKCS #1 V1.5中介绍的方法,第七部分定义了基于OAEP 的加密方案,第八部分定义了基于PSS的带附属的签名方案。
.第九部分详细说明了在第八部分中定义的签名方案的编码方法。
PKCS#3D-H密钥交换标准1.0–1.2版是为参加1991年2月和3月在RSA数据安全公司的公钥密码标准会议而发布的标准。
1.3版是1991年6月3日发布的PKCS标准的一部分。
1.3版同时被NIST/OSI实现工作组作为SEC-SIG-91-19标准文档。
1.4版合并了一些修改,更新了参考文献,加入了版本更新历史。
该标准描述了实现Diffie-Hellman密钥交换的一种方式,双方不经过事先勾通,就能够产生一个只有他们才知道的密钥(尤其是窃听者无法得知该密钥)。
这个密钥可被双方用于以后的秘密通信。
该标准的主要应用是建立秘密通信的协议,如OSI模型的传输层和网络层通信协议的建议[ISO90a][ISO90b]。
PKCS#5基于口令的密码标准本文对基于口令的密码技术的实现提出了相关建议,涵盖了以下几个方面:密钥生成函数、加密方案、消息鉴别方案、用ASN.1 语法对技术进行标识。
这些有着一定伸缩性的建议是针对计算机和通信系统中的普通应用软件提出的,特别针对了敏感信息的保护,例如:对 PKCS#8 中私钥的保护。
并且希望基于这些建议的应用标准标准和实现框架可以包含附加的约束。
本文不涉及其它的基于口令的密码技术,例如:基于口令的密钥实体鉴别和密钥制定协议;并且也不涉及口令的选择。
本文代替了 PKCS#5 1.5 版,但包含了相应的兼容技术。
在很多公钥密码应用软件中, 用户的安全最终依赖于一个或多个秘密文本或口令。
虽然在一个常规的密码系统中并不直接把口令用作密钥,但在用口令进行密码操作时仍需对口令进行处理。
此外, 由于口令通常从一个相对较小的空间中选取, 在对其进行处理时要特别注意抵抗搜索攻击。
基于口令的密码术的一种通常的方法是将口令与salt相结合以生成密钥,例如:Morris and Thompson对口令表的保护。
用口令可生成一个巨大的密钥集,可以把salt看作是对这个密钥集的一个索引,不需要对salt进行保密。
虽然一个攻击者可能会构建一个包含所有可能口令的表(一种所谓的“字典攻击”),但构建一个包含所有可能密钥的表是十分困难的,因为对每一个口令都存在非常多的可能密钥。
因而,攻击者只能对每个salt来搜索所有的口令。
基于口令的密码术的另一种方法是建立一种代价相对较高的密钥生成技术,从而增加穷举搜索代价。
这种方法的一种途径就是,在密钥生成技术中引入一个迭代次数,用来表示对某个生成密钥的基础函数的迭代次数。
一个合适的迭代次数是1000,它对于合法者来说并不形成一种负担,但对攻击者却是一种严重的负担。
在PKCS #5 v1.5中,Salt和迭代次数构成了基于口令密码术的基础,并且也被用在本文中的多种密码操作中。
因而,本文定义的基于口令的密钥生成技术是一个关于口令、salt和迭代次数的函数,其中后两个量不需保密。
从一个基于口令的密钥生成函数能很容易的得到基于口令的加密和消息鉴别方案。
在PKCS #5 v1.5中,基于口令的加密方案是建立在一种基础的、常规的加密方案的基础上的,其中的密钥就是用口令来生成的。
类似的,基于口令的消息鉴别方案也是建立在一种基础的、常规的消息鉴别方案的基础上的。
这种分为两层的方案使得基于口令的技术可以利用基础的技术模块化实现。
除了这里提到的加密和消息鉴别方案,人们还希望从基于口令的密钥生成函数得到其它的应用。
例如,我们可以仅用一个密钥生成函数来生成一个密钥集,而不必逐个的生成密钥。
密钥集中的密钥可以就是密钥生成函数的输出串的各个子串。
这种方法可以用在一个面向会话的协议中,作为构建密钥系统的一部分。
另一种应用是口令检查,其中:密钥生成函数的输出和salt以及迭代次数都被保存起来,以用于对口令的验证。
在本文中,认为口令是一个任意长度的字节串,并不特别要求它被解释为一个文本串。
但为了提高的互用性,仍然希望应用软件能遵循通用的文本编码规则,例如:ASCII 和 UTF-8 错误!未找到引用源。
(ASCII 是 UTF-8的一个子集)。
PKCS#6证书扩展语法标准本标准描述了证书扩展语法。
一个扩展证书由X.509公钥证书和一系列被证书发行者签名的属性组成。
于是属性和内附的X.509公钥证书能够被单独的一个公钥密码操作验证,当需要时还能提取出普通的X.509公钥证书。
包含一系列属性的目的是使认证操作得到扩充,能够通过公钥操作验证给定实体其它信息,如电子邮件地址。
PKCS #9中给出比较详细的属性列表。
本标准最初应用在PKCS #7的密码报文中,其它的应用正在开发之中。
PKCS#7密文信息语法标准1.0–1.3版是1991的2月和3月在RSA数据安全公司的公钥密码标准化会议上发布的最早版本。
1.4版是1991年6月3日发布的PKCS初始版本的一部分。
1.4版同时被NIST/OSI的实现工作组作为SEC-SIG-91-22标准发布。