pkcs标准简介

阅读: 评论:0

公钥密码标准(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 #
标准 1
3 5678910111215其它标准 自由算法语法:
数字签名信息    x
x      数字信封加密信息    x
认证请求    x x
数字证书
X.509, RFC 1422 扩展证书    x x
证书撤销列表
X.509, RFC 1422  私钥加密信息
x x      密码令牌
x  x  个人交换信息
x  密钥交换信息        [ISO90a], [ISO90b]
特定算法语法:        RSA 公钥 x
RSA 私钥 x
算法:        消息摘要:MD2, 5        RFCs 1319, 1321
私钥加密:DES        RFC 1423, [NIST92a] 公钥加密:RSA x
签名:MD2,4,5w/RSA x
基于口令的加密  x      D-H 密钥交换  x
PKCS 与其它标准对比
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标准发布。1.5版合并了几处编辑上的改动,包括对参考文献的更新和修订历史的添加。
本标准描述了用于加密数据的一般语法,如数字签名和数字信封等。该语法允许循环,所以,一个信封可以嵌套在另一个中,一方也可以对打入数字信封的数据作数字签名。该标准也允许使用任意属性,如签名时间可发消息内容一同被认证,也可以提供与签名相关的附属签名。该语法还能提供一种证书和证书撤销列表传输方式。该标准也适用于Privacy-Enhanced Mail (PEM)中的签名数据和签名加密数据内容,构造了一个PEM 适用模式,不进行任何加密操作就可以转换为PEM消息。PEM消息也可以被转换为签名数据和签名加密数据内容类型。该标准能够支持基于证书的密钥管理的一系列架构,如RFC 1422中对PEM的一项建议。
PKCS#8私钥信息语法标准
1.0版是1991年2月和3月RSA Data Security,Inc.关于公开密钥加密标准会议上分发给与会者的版本。1.1版是1991年6月3日PKCS标准最初公开发行的一部分,也作为NIST/OSI实现工作组作为SEC-SIG-91-23标准发布。1.2版合并了几处编辑上的改动,包括对参考文献的更新和修订历史的添加。
本标准描述一种私钥信息的语法。私钥信息包含一个对应于某个公钥算法的私钥和一个属性集。还描述一种加密密钥的语法。基于口令的加密算法(例如在PKCS#5中描述的某一种算法)可以用来加密私钥信息。包含属性集的目的是通过属性信息为用户提供一个快捷的方式确立信任,如辨识名(DN)或顶级证书权威机构(CA)的公钥等信息。尽管这样的信任可通过数字签名确立,但使用只有用户知道的密钥加密过程同样高效并易于实现。详细的属性列表在PKCS#9中描述。
私钥信息定义为ASN.1类型 PrivatKeyInfo:
PrivateKeyInfo::=SEQUENCE {
version Version,
privateKeyAlgorithm    PrivateKeyAlgorithmIdentifier,
privateKey PrivateKey,
attributes [0] IMPLICIT Attributes OPTIONAL }
version是语法版本,是为能兼容该标准的未来版本。当前版本为0。
privateKeyAlgorithm私钥算法算法标识。
privateKey是一个字节串,内容为私钥的值。
attributes是一个属性集。这些属性是连同私钥信息一起被加密的扩展信息。
加密私钥信息定义为ASN.1类型EncryptedPrivateKeyInfo:
EncryptedPrivateKeyInfo ::= SEQUENCE {
encryptionAlgorithm    EncryptionAlgorithmIdentifier,
encryptedData EncryptedData }

本文发布于:2023-05-05 21:49:19,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/89334.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:标准   密钥   密码   口令   加密   语法
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图