PKCS-#5:基于密码的密码系统说明书版本-2.0.B.docx_第1页
PKCS-#5:基于密码的密码系统说明书版本-2.0.B.docx_第2页
PKCS-#5:基于密码的密码系统说明书版本-2.0.B.docx_第3页
PKCS-#5:基于密码的密码系统说明书版本-2.0.B.docx_第4页
PKCS-#5:基于密码的密码系统说明书版本-2.0.B.docx_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

rfc2898:PKCS #5:基于密码的密码系统说明书版本 2.0.B 收藏 组织:中国互动出版网(/)RFC文档中文翻译计划(/compters/emook/aboutemook.htm)E-mail:译者:陶志荣(dick_hw )译文发布时间:2002-1-9版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息。Network Working GroupRequest for Comments: 2898Category: InformationalB. KaliskiRSA LaboratoriesSeptember 2000本备忘录的状态本文档为Internet社区提供信息。 它并未定义任何Internet标准。本备忘录的发布不受任何限制。版权声明Copyright (C) The Internet Society (2000). All Rights Reserved.摘要本备忘录代表源自RSA实验室的公钥密码系统标准(PKCS)系列的PKCS #5 v2.0的再版,变更控制仍保留在PKCS过程。该文档的主体,除了安全性考虑一节,都是直接从那个规范中获得的。本文档提供基于口令的密码系统的实现建议,覆盖密钥导出函数,加密方案,消息鉴别方案,及与该技术等同的ASN.1语法。建议的意图是供计算机和通信系统的一般程序使用,因此包括了相当数量的灵活性。它们特别为敏感信息的保护设计,例如PKCS #825中的私钥。期望有基于这些规范的应用标准和实现轮廓可能包括附加的约束。其它基于口令的密码技术,例如基于口令的密钥实体认证和密钥建立协议4526不在本文档范围。口令的选取原则也不在本文档范围。1.介绍本文档为基于口令的密钥系统的实现提供建议,包括了下列的方面: 密钥导出函数 加密方案 消息鉴别方案 与该技术等同的ASN.1语法 建议的意图是供计算机和通信系统的一般程序使用,照此包括了相当数量的灵活性。它们特别为敏感信息的保护设计,例如PKCS #825中的私钥。期望有基于这些规范的应用标准和实现轮廓可能包括附加的约束。其它基于口令的密码技术,例如基于口令的密钥实体认证和密钥建立协议4526不在本文档范围。口令的选取原则也不在本文档范围。本文档取代PKCS #5 v1.524,但包含的技术是与之兼容的。2.记法 C 密文,一个字节串 c 迭代次数,一个正整数 DK 导出密钥,一个字节串 DkLen 导出密钥的字节长度,一个正整数 EM 编码,一个字节串 Hash 基础的哈希函数 HLen 伪随机函数输出的字节长度,一个正整数 l 导出密钥的块长度,一个正整数 IV 初始向量,一个字节串 K 加密密钥,一个字节串 KDF 密钥导出函数 M 消息,一个字节串 P 口令,一个字节串 PRF 基础的伪随机函数 PS 填充串 psLen 填充串的字节长度,一个正整数 S 盐,一个字节串 T 消息鉴别码,一个字节串 T_1,T_1,U_1,U_c 中间数,一个字节串 01,02,08 值为1,2,8的字节 xor 两个字节串的按位异或 | | 字节长度操作符 | 级联操作符 子串抽取操作符:抽取字节i到j,0 = i 16,或对于SHA-1,dkLen20,(即dkLen大于散列函数的输出长度),输出“derived key too long”并停止。2. 对口令P和附加盐S的串联应用基本散列函数,重复c次,然后抽取第一个dkLen字节以产生一导出密钥DK:T_1 = Hash (P | S) ,T_2 = Hash (T_1) ,.T_c = Hash (T_c-1) ,DK = Tc3. 输出导出密钥DK。5.2 PBKDF2PBKDF2应用一个伪随机函数(例子见附录B.1)以导出密钥。导出密钥的长度本质上是没有限制的。(但是,导出密钥的最大有效搜索空间受限于基本伪随机函数的结构。进一步的讨论参见附录B.1。)对新的应用推荐使用PBKDF2。PBKDF2(P,S,c,dkLen)可选项: RPF 基本伪随机函数(hLen表示伪随机函数输出的字节长度)输入:P 口令,一字节串S 盐,字节串c 迭代次数,正整数dkLen 导出密钥的意定字节长度,正整数,最大约(232-1)*hLen输出: DK 导出密钥,长度dkLen字节步骤:1 如果dkLen(232-1)*hLen,输出“derived key too long”并停止。2 假设l是导出密钥的hLen个字节块的个数,r表示最后一个块的字节数。l = CEIL (dkLen / hLen) ,r = dkLen - (l - 1) * hLen .这里,CEIL(x)是“ceiling”函数,即,大于或等于x的最小整数。4. 对于导出密钥的每一块,运用函数F于口令P、盐S、迭代次数c和块索引以计算块:T_1 = F (P, S, c, 1) ,T_2 = F (P, S, c, 2) ,.T_l = F (P, S, c, l) ,这里函数F定义为基本伪随机函数PRF应用于口令P和盐S的串联和块索引i的前c次循环的异或和。F (P, S, c, i) = U_1 xor U_2 xor . xor U_c其中U_1 = PRF (P, S | INT (i) ,U_2 = PRF (P, U_1) ,.U_c = PRF (P, U_c-1) .这里,INT(i)是整数i的四字节编码,高字节在先。3 串联各块,抽取前dkLen字节以产生导出密钥DK:DK = T_1 | T_2 | . | T_l4 输出导出密钥DK。注意:函数F的构造遵循“belt-and-suspenders”方法。U_i次循环被递归计算以消除敌手的并行度;它们被异或到一起以减少有关递归退化到一个小的值集的担忧。6.加密程序在对称设置中,加密程序包括加密操作的解密操作,其中加密操作在一个密钥作用下从一个消息产生密文,而解密操作在同一个密钥作用下从密文恢复消息。在基于口令的加密 策略中,密钥就是口令。基于口令的加密方法的一个典型应用是私钥保护方法,其中消息包括私钥信息,如PKCS#8中的那样。这里定义的加密策略在那种情况下是合适的加密算法。本节详述的两个策略是PBES1和PBES2。PBES2推荐给新的应用,PBES1只为了同已有应用的兼容。6.1 PBES1PBES1结合了PBKDF1函数和一个基础的块加密,可以是CBC模式下的DES或RC2?。PBES1同PKCS#5 v1.5中加密策略相兼容。6.1.1 加密操作在口令P作用下加密消息M以产生密文C,包括以下步骤:1导出函数(5.1节)到口令、附加盐S和迭代次数,以产生长度为16字节的导出密钥DK:DK = PBKDF1 (P, S, c, 16) .3 分割导出密钥DK成由DK的前8字节组成的加密密钥K,和一包含下8 个字节的初始化向量IV:K = DK ,IV = DK .4 连接M和一填充串PS,以形成一编码消息EM:EM = M | PS ,其中填充串PS由8-(|M| mod 8) 个字节组成,每个的值是8-(|M| mod 8).填充串PS满足以下的表达式:PS = 01, if |M| mod 8 = 7 ;PS = 02 02, if |M| mod 8 = 6 ;.PS = 08 08 08 08 08 08 08 08, if |M| mod 8 = 0.编码消息的字节长度将是8的倍数,从编码消息中可以无歧义地恢复出消息M。(填充规则来自于RFC 1423。5.在加密密钥K和初始向量IV下,用基本块密码算法以CBC模式加密编码消息EM,以产生密文C。对于DES,密钥K应被看作一56位DES密钥并且奇位忽略的64位编码。对于 RC2,“有效密钥位“应为64位。6.输出密文C。盐S和迭代次数c应以一AlgorithmIdentifier值传递给执行解密的一方。(见附录A.3)6.1.2 解密操作PBES1的解密操作包括以下步骤,在口令P的作用下解密密文C以恢复消息M:1. 获取八字节盐S和迭代次数c。2. 应用PBKDF1密钥导出函数(5.1节)于口令P、附加盐S和迭代次数以产生长度为16字节的导出密钥:DK = PBKDF1 (P, S, c, 16)3. 分割导出密钥DK,由DK的前8 字节组成一加密密钥K, 和由下8字节组成的初始向量IV:K = DK ,IV = DK .4. 在加密密钥K和初始向量IV作用下,用基本块密码算法(DES或RC2)以CBC模式解密密文,以恢复编码消息EM。如果密文的字节长度不是8的倍数,输出“解密错”并停止。5. 把编码消息EM分割成一消息M和一填充串PS:EM = M | PS ,其中填充串PS由psLen个字节组成,每个的值是psLen,其中psLen介于1和8之间。如果不可能以这种方式分割编码消息EM,输出“解密错”并停止。6. 输出恢复的消息M。6.2 PBES2PBES2结合一个基于口令的密钥导出函数,在PKCS#5的本版本中应为PBKDF2(5.2节)和一基本的加密策略(例子见附录B.2)。基本加密策略的密钥长度和任何其它参数依赖于策略。新的应用推荐使用PBES2。6.2.1加密操作PBES2的加密操作包括以下步骤,应用一选择的密钥导出函数KDF和一选择的基本加密策略,以在口令P的作用下加密消息M以产生密文C:1. 如第4节所述,选择一盐S和一迭代次数c。 2. 为基本加密方法的导出密钥选择字节长度dkLen。 3. 应用选择的密钥导出函数于口令P、盐S和迭代次数c,以产生长度dkLen字节的导出密钥。 4. 在导出密钥K的作用下用基本加密方法加密消息M以产生密文C(依赖于基本策略,这一步可能包括诸如初始向量和填充等参数的选择)。 5. 输出密文C。 6. 盐S和迭代次数、密钥长度dkLen、密钥导出函数的标识符和基本的加密策略可以一AlgorithmIdentifier值传给执行解密的一方(见附录A.4)。 6.2.2 解密操作PBES2的解密操作包括以下步骤,在口令的作用解密密文C以恢复消息M:1. 获取该操作所用的盐S。 2. 为密钥导出函数获取迭代次数。 3. 获取基本加密方法的导出密钥的字节长度dkLen。 4. 应用选择的密钥导出函数于口令P、盐S和迭代次数以产生长度为dkLen字节的导出密钥DK:DK = KDF (P, S, c, dkLen)。 5. 用基本加密方法在导出密钥DK的作用下解密密文C以恢复消息M。如果解密函数输出“解密错”,那么输出“解密错”并停止。 6. 输出恢复的消息M。 7.消息验证方式消息验证策略包括一个MAC(消息验证码)产生操作和一个MAC验证函数操作,其中MAC产生操作在一个密钥作用下从一个消息产生一个消息验证码,MAC验证操作在同一个密钥下验证MAC。在基于口令和消息验证策略中,密钥就是口令。该节详述的一个策略是:PBMAC1。7.1 PBMAC1PBMAC1结合了一个基于口令的密钥导出函数,对于PKCS#5的本版本中应为PBKDF2(5.2节),和基本的消息验证策略(例子见附录B.3)。基本消息验证策略的密钥长度和任何其它参数都依赖于策略。7.1.1 MAC生成PBMAC1的MAC生成操作应用一选择的密钥导出函数KDF和一选择的基本消息验证策略,在口令P下处理消息M以产生一消息验证码T,包括以下步骤:1. 如第4节所述,选择一盐S和一迭代次数c。 2. 为基本消息验证函数的导出密钥选择字节长度dkLen。 3. 应用选择的密钥导出函数于口令P、盐S和迭代次数c,以产生一长度为dkLen字节的导出密钥DK:DK = KDF (P, S, c, dkLen)。 4. 在导出密钥DK作用下,用基本消息验证策略处理消息M,以产生一消息验证码T。 5. 输出消息验证码T。 盐S、迭代次数c、密钥长度L、密钥导出函数的标识符,和基本消息验证策略可以一AlgorithmIdentifier值传递给执行验证的另一方。7.1.2 MAC验证PBMAC1的MAC验证操作在口令P的作用下处理消息M以验证一消息验证码T,包括以下步骤:1. 获取盐S和迭代次数c。 2. 为基本消息验证方式的导出密钥获取密钥的字节长度dkLen. 3. 应用选择的密钥导出函数于口令P、盐S和迭代次数c,以产生长度为dkLen字节的导出密钥DK:DK = KDF (P, S, c, dkLen) . 4. 在导出密钥DK下用基本消息验证方式处理消息M以产生一消息验证码T。 5. 如果消息验证码证实,输出“correct”,否则输出“incorrect”。 8.安全考虑基于口令密码术在它能提供的安全上通常受限,特别在本文档定义的那些方法,离线口令搜索是可能的情况。在盐和迭代次数的使用能增加攻击的复杂度的同时,很好地选择口令是基本的,应把相应的指导原则考虑进去。如果口令存储的话,口令被很好地保护也是重要的。通常,从不同用户的一个口令导出的密钥也应不同,以减少意料之外的干扰的可能性。对于使用同一算法的基于口令的加密方法,随机盐已足够确保产生不同的密钥。在某些其它情况正如第4节所述的,结构化的盐是必须的。当选择盐值时第4节中的建议就加以考虑。9.作者地址Burt KaliskiRSA Laboratories20 Crosby DriveBedford, MA 01730 USAEMail:附录A ASN.1语法该节定义密钥导出函数的ASN.1语法,加密方法、消息认证方法和支撑技术。这些定义的意定应用包括PKCS#8和密钥管理、加密数据和集成保护数据的其它语法。对象标识符pkcs-5标识OID树的弧,本节中PKCS#5特有的OID从中导出:rsadsi OBJECT IDENTIFIER := iso(1) member-body(2) us(840) 113549pkcs OBJECT IDENTIFIER := rsadsi 1pkcs-5 OBJECT IDENTIFIER := pkcs 5A.1 PBKDF1PBKDF1没有给出对象标识符,PBES1的对象标识符对已有应用已足够,对新的应用推荐使用PBKDF2。A.2 PBKDF2对象标识符id-PBKDF2标识PBKDF2密钥导出函数(5.2节)。id-PBKDF2 OBJECT IDENTIFIER := pkcs-5 12在AlgorithmIdentifier中,同该OID相关联的参数域应有类型PBKDF2-params:PBKDF2-params := SEQUENCE salt CHOICE specified OCTET STRING,otherSource AlgorithmIdentifier PBKDF2-SaltSources,iterationCount INTEGER (1.MAX),keyLength INTEGER (1.MAX) OPTIONAL,prf AlgorithmIdentifier PBKDF2-PRFs DEFAULT algid-hmacWithSHA1 类型PKDF2-params域有以下含义:- salt指定盐值,或盐值的来源。它应是一字节串,或是其OID在集合PBKDF2-SaltSources的一算法ID,被PKCS#5保留给将来的版本。Salt-Source方法被设计用于指示如何产生盐值,作为算法ID中的参数和应用数据,或两者皆有。例如,它可能指示盐值产生于从指定有关导出密钥的详细信息的结构的编码,如第4节所建议的。有些信息可能被带到别处,比如在加密算法ID。但是,这些功能被延迟到PKCS#5的将来版本。在该节中,一应用可能通过在指定的选择中选择盐值的特殊解释,达到节4.1提到的好处。PBKDF2-SaltSources ALGORITHM-IDENTIFIER := . iterationCount指定迭代次数。允许的最大迭代次数依赖于实现。期待实现轮廓(profile)进一步约束范围。 keyLength,可选项,是导出密钥的字节长度。允许的最大密钥长度依赖于实现;期待实现轮廓(profile)进一步约束范围。提供该域只为了方便使用。如果顾虑一盐值用不同密钥长度的操作的相互干扰 ? prf标识下层的伪随机函数。它应是一算法ID,其OID在集合PBKDF2-PRFs,在PKCS#5的该版本应包括id-hmacWithSHA1(见附录B.1.1)和其它任何由应用定义的OID。 PBKDF2-PRFs ALGORITHM-IDENTIFIER := NULL IDENTIFIED BY id-hmacWithSHA1, . 缺省的伪随机函数是HMAC-SHA-1:algid-hmacWithSHA1 AlgorithmIdentifier PBKDF2-PRFs :=algorithm id-hmacWithSHA1, parameters NULL : NULLA.3 PBES1依据密钥导出函数有下层散列函数和下层的块密码算法,使用不同的对象标识符标识PBES1加密方法(6.1节),总结在下表:散列函数 块密码算法 OIDMD2 DES pkcs-5.1MD2 RC2 pkcs-5.4MD5 DES pkcs-5.3MD5 RC2 pkcs-5.6SHA-1 DES pkcs-5.10SHA-1 RC2 pkcs-5.11pbeWithMD2AndDES-CBC OBJECT IDENTIFIER := pkcs-5 1pbeWithMD2AndRC2-CBC OBJECT IDENTIFIER := pkcs-5 4pbeWithMD5AndDES-CBC OBJECT IDENTIFIER := pkcs-5 3pbeWithMD5AndRC2-CBC OBJECT IDENTIFIER := pkcs-5 6pbeWithSHA1AndDES-CBC OBJECT IDENTIFIER := pkcs-5 10pbeWithSHA1AndRC2-CBC OBJECT IDENTIFIER := pkcs-5 11对每一个OID,在AlgorithmIdentifier中同该OID相关联的参数域应具有类型PBEParameter:PBEParameter := SEQUENCE salt OCTET STRING (SIZE(8),iterationCount INTEGER 类型PBEParameter的域有以下含义: salt指定盐值,一八字节串。 iterationCount指定迭代次数。 A.4 PBES2对象标识符id-PBES2标识PBES2加密方法(6.2节)。id-PBES2 OBJECT IDENTIFIER := pkcs-5 13对每一个OID,在AlgorithmIdentifier中同该OID相关联的参数域应具有类型PBES2-params:PBES2-params := SEQUENCE keyDerivationFunc AlgorithmIdentifier PBES2-KDFs,encryptionScheme AlgorithmIdentifier PBES2-Encs 类型 PBES2-params的域有以下含义:- keyDerivationFunc标识下层的密钥导出函数。它应是一算法ID,其OID在集合PBES2-KDFs中,对本版本的PKCS5应包括id-PBKDF2(附录A.2)。PBES2-KDFs ALGORITHM-IDENTIFIER := PBKDF2-params IDENTIFIED BY id-PBKDF2, . - encryptionScheme标识下层的加密方法。它应是一算法ID,其OID在集合PBES2-Encs,它的定义留给应用程序。例示的下层加密方法在附录B.2中给出。PBES2-Encs ALGORITHM-IDENTIFIER := . A.5 PBMAC1对象标识符id-PBMAC1标识PBMAC1消息认证方法(节7.1)。id-PBMAC1 OBJECT IDENTIFIER := pkcs-5 14在AlgorithmIdentifier中同该OID相关联的参数域应具有类型PBMAC1-params:PBMAC1-params := SEQUENCE keyDerivationFunc AlgorithmIdentifier PBMAC1-KDFs,messageAuthScheme AlgorithmIdentifier PBMAC1-MACs keyDerivationFunc域同PBES2-params(附录A.4)的相应域有同样的含义,除了OID集合是PBMAC1-KDFs。PBMAC1-KDFs ALGORITHM-IDENTIFIER := PBKDF2-params IDENTIFIED BY id-PBKDF2, . messageAuthScheme域标识下层的消息认证方法。它应是一算法ID,其OID在集合PBMAC1-MACs中,它的定义留给应用程序。例示的下层加密方法在附录B.3中给出。PBMAC1-MACs ALGORITHM-IDENTIFIER := . B支撑技术本节给出支持5、6和7节中的基于口令的策略的下层函数和方法的几个例子。尽管这些支撑技术适于应用实现,但都非强制的。期待将来开发PKCS5的profile以指定特定和支撑技术。本节也给出支撑技术的对象标识符。对象标识符digestAlgorithm和encryptionAlgorithm标识本节引用的某些算法OID都从其中导出。digestAlgorithm OBJECT IDENTIFIER := rsadsi 2encryptionAlgorithm OBJECT IDENTIFIER := rsadsi 3B.1伪随机函数用于PBKDF2(5.2节)的一个例子伪随机函数是HMAC-SHA-1。B.1.1 HMAC-SHA-1HMAC-SHA-1是同基于SHA1散列函数的HMAC消息认证码相对应的伪随机函数。伪随机函数同计算消息认证码的函数相同,只是输出是全长度的。(伪随机函数PRF的第一个变量作为HMAC的“密钥”,第二个作为HMAC的“文本。在PBKDF2的情况下,“密钥”就是口令,“文本”就是盐。) HMAC-SHA-1有一个可变的密钥长度和20-字节(160位)输出值。尽管HMAC-SHA-1的密钥的长度本质上是没有限制的,但伪随机函数输出的有效搜索空间可能受限于函数的结构。特别是,当密钥长于512位时,HMAC-SHA-1将首先杂凑到160位。这样,即使从一个密钥产生一个包括几个伪随机函数输出的长导出密钥,导出密钥的有效搜索空间将最多160位。尽管对其它密钥大小的特殊限制依赖于HMAC构造的细节,可以保守地假设,对其它的密钥大小,有效搜索空间仍限制到160位。(在基于口令的密码系统,160位的限制通常不应造成实际的限制,因为对口令的搜索空间不可能大于160位。)对象标识符id-hmacWithSHA1标识HMAC-SHA-1伪随机函数:id-hmacWithSHA1 OBJECT IDENTIFIER := digestAlgorithm 7在AlgorithmIdentifier同该OID相关联的参数域应有类型NULL。该对象标识符使用在对象集合PBKDF2-PRFs(见附录A.2)。注意,尽管HMAC-SHA-1作为消息认证码设计的,但在较强的假定下,它的安全验证(?)很容易被修改以满足对一伪随机函数的需要。一散列函数也可能在某些假定下满足伪随机函数的需要。例如,直接应用一散列函数到“密钥”和“文本”的串联可能是合适的,只要“文本”有合适的结构以预防某些攻击。但HMAC-SHA-1更可取,因为它把“密钥”和“文本”看作单独的变量,不需要“文本”有任何结构。B.2 加密方法PBES2(6.2节)的伪随机函数的例子有DES-CBC-Pad, DES-EDE2-CBC-Pad, RC2-CBC-Pad,和RC5-CBC-Pad。在本节给出的对象标识符预期在对象集合PBES2-Encs中应用(附录A.4)。B.2.1 DES-CBC-PadDES-CBC-Pad是CBC模式下的单密钥DES,并使用RFC1423的填充操作(见6.1.1节)。DES-CBC-Pad有一个八字节的加密密钥和一个八字节的初始向量。密钥被看作是56位DES密钥的64位编码,忽略奇偶校验位。对象标识符desCBC(在NIST/OSI ImplementorsWorkshop协定中定义)标识DES-CBC-Pad加密方法。desCBC OBJECT IDENTIFIER :=iso(1) identified-organization(3) oiw(14) secsig(3)algorithms(2) 7在AlgorithmIdentifier中同该OID相关联的参数域应有类型OCTET STRING (SIZE(8),指定CBC模式的初始向量。B.2.2 DES-EDE3-CBC-PadDES-EDE3-CBC-Pad是CBC模式下的三密钥的三重DES,用RFC1423的填充操作。DES-EDE3-CBC-Pad有一个24字节的加密密钥和一个八字节初始向量。密钥被看作是三个八字节密钥的串联,每一个是一56位DES密钥的64位编码,忽略奇偶校验位。对象标识符des-EDE3-CBC标识DES-EDE3-CBC-Pad加密方法:des-EDE3-CBC OBJECT IDENTIFIER := encryptionAlgorithm 7在AlgorithmIdentifier中同该OID相关联的参数域应有类型OCTET STRING (SIZE(8),指定CBC模式的初始向量。注意:没有填充的DES-EDE3-CBC的OID在ANSI X9.521给出;这里给出的OID由于指明了填充而更可取。B.2.3 RC2-CBC-PadRC2-CBC-Pad是CBC模式下的RC2(tm)加密方法21,使用RFC1423填充操作。RC2-CBC-Pad有一个从1到128字节的可变的密钥长度;一个从1到1024位的单独的“有效密钥位”参数,它不依赖于密钥长度限制有效搜索空间;和一个八字节的初始向量。对象标识符rc2CBC标识RC2-CBC-Pad加密方法:rc2CBC OBJECT IDENTIFIER := encryptionAlgorithm 2在AlgorithmIdentifier中同该OID相关联的参数域应具有类型RC2-CBC-Parameter:RC2-CBC-Parameter := SEQUENCE rc2ParameterVersion INTEGER OPTIONAL,iv OCTET STRING (SIZE(8) 类型RC2-CBCParameter的域有以下含义:- rc2ParameterVersion是RC2的“有效密钥位”的一个RSA Security Inc.所有的编码。定义了以下编码:Effective Key Bits Encoding40 16064 120128 58b = 256 b如果rc2ParameterVersion域被忽略,缺省的“有效密钥位”是32。(这是为了同某些很老的实现向后兼容。)- iv 是八字节的初始向量B.2.4 RC5-CBC-PadRC5-CBC-Pad是CBC模式下的RC5(tm)加密算法20,并使用RFC1423填充操作的推广。该方法完整的定义在2. RC5-CBC-Pad有一个从0到256字节的可变的密钥长度,支持64位和128位的块大小。对于前者,它有一个8字节的初始向量;对于后者,有一个16字节的初始向量。RC5-CBC-Pad在加密操作中也有一个从8 到127的可变数目的“轮次”。注意,填充操作的推广是这样的。对64位块大小的RC5,填充串在RFC1423中定义。对128位块大小的RC5,填充串由16-(|M| mod 16)个字节组成,每个字节的值是16-(|M| mod 16)。对象标识符rc5-CBC-PAD 2标识RC5-CBC-Pad加密方法:rc5-CBC-PAD OBJECT IDENTIFIER := encryptionAlgorithm 9在AlgorithmIdentifier中同该OID相关联的参数域应有类型RC5-CBC-Parameters:RC5-CBC-Parameters := SEQUENCE version INTEGER v1-0(16) (v1-0),rounds INTEGER (8.127),blockSizeInBits INTEGER (64 | 128),iv OCTET STRING OPTIONAL 类型RC5-CBC-Parameters的域有以下含义: version是算法的版本,应为v1-0。 rounds是加密操作的轮次数,应在8与127之间。 blockSizeInBits是块大小的位数,应为64或128。 iv是初始向量,对64位RC5是一个8字节串,对128位RC5是一个16字节串。缺省是一包含内容为0长度适当的字节串。B.3 消息认证方法PBMAC1(7.1节)的消息认证方法的一个例子是HMAC-SHA-1。B.3.1 HMAC-SHA-1HMAC-SHA-1是基于SHA1散列函数18的HMAC消息消息认证方法7。HMAC-SHA-1有可变的密钥长度和一20字节(160位)消息认证码。对象标识符id-hmacWithSHA1(见附录B.1.1)标识HMAC-SHA-1消息认证方法。(伪随机函数和消息认证方法的对象标识符是相同的,可通过上下文区分。)该标识符预期在对象集合PBMAC1-Macs中应用(附录A.5)。C. ASN.1模块为了参考的目的,在以前各节中的ASN.1语法在这里作为ASN.1模块给出。- PKCS #5 v2.0 ASN.1 Module- Revised March 25, 1999- This module has been checked for conformance with the ASN.1 standard by the OSS ASN.1 ToolsPKCS5v2-0 iso(1) member-body(2) us(840) rsadsi(113549)pkcs(1) pkcs-5(5) modules(16) pkcs5v2-0(1)DEFINITIONS := BEGIN- Basic object identifiersrsadsi OBJECT IDENTIFIER := iso(1) member-body(2) us(840) 113549pkcs OBJECT IDENTIFIER := rsadsi 1pkcs-5 OBJECT IDENTIFIER := pkcs 5- Basic types and classesAlgorithmIdentifier ALGORITHM-IDENTIFIER:InfoObjectSet :=SEQUENCE algorithm ALGORITHM-IDENTIFIER.&id(InfoObjectSet),parameters ALGORITHM-IDENTIFIER.&Type(InfoObjectSetalgorithm) OPTIONALALGORITHM-IDENTIFIER := TYPE-IDENTIFIER- PBKDF2PBKDF2Algorithms ALGORITHM-IDENTIFIER := PBKDF2-params IDENTIFIED BY id-PBKDF2, .id-PBKDF2 OBJECT IDENTIFIER := pkcs-5 12algid-hmacWithSHA1 AlgorithmIdentifier PBKDF2-PRFs :=algorithm id-hmacWithSHA1, parameters NULL : NULLPBKDF2-params := SEQUENCE salt CHOICE specified OCTET STRING,otherSource AlgorithmIdentifier PBKDF2-SaltSources,iterationCount INTEGER (1.MAX),keyLength INTEGER (1.MAX) OPTIONAL,prf AlgorithmIdentifier PBKDF2-PRFs DEFAULTalgid-hmacWithSHA1PBKDF2-SaltSources ALGORITHM-IDENTIFIER := . PBKDF2-PRFs ALGORITHM-IDENTIFIER := NULL IDENTIFIED BY id-hmacWithSHA1, . - PBES1PBES1Algorithms ALGORITHM-IDENTIFIER := PBEParameter IDENTIFIED BY pbeWithMD2AndDES-CBC |PBEParam

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论