PKCS #5: 基于口令的密码系统规范 版本2.0( 八 )


keyDerivationFuncAlgorithmIdentifier{{PBMAC1-KDFs}},
messageAuthSchemeAlgorithmIdentifier{{PBMAC1-MACs}}}
keyDerivationFunc域同PBES2-params(附录A.4)的相应域有同样的含义,除了OID
集合是PBMAC1-KDFs 。
PBMAC1-KDFsALGORITHM-IDENTIFIER::=
{{PBKDF2-paramsIDENTIFIEDBYid-PBKDF2},...}
messageAuthScheme域标识下层的消息认证方法 。它应是一算法ID,其OID在集合
PBMAC1-MACs中,它的定义留给应用程序 。例示的下层加密方法在附录B.3中给出 。
PBMAC1-MACsALGORITHM-IDENTIFIER::={...}
B.支撑技术
本节给出支持5、6和7节中的基于口令的策略的下层函数和方法的几个例子 。
尽管这些支撑技术适于应用实现,但都非强制的 。期待将来开发PKCS#5的profile以指定
特定和支撑技术 。
本节也给出支撑技术的对象标识符 。对象标识符digestAlgorithm和encryptionAlgorithm标识
本节引用的某些算法OID都从其中导出 。
digestAlgorithmOBJECTIDENTIFIER::={rsadsi2}
encryptionAlgorithmOBJECTIDENTIFIER::={rsadsi3}
B.1 伪随机函数
用于PBKDF2(5.2节)的一个例子伪随机函数是HMAC-SHA-1 。
B.1.1HMAC-SHA-1
HMAC-SHA-1是同基于SHA-1散列函数的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-hmacWithSHA1OBJECTIDENTIFIER::={digestAlgorithm7}
在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-Pad
DES-CBC-Pad是CBC模式下的单密钥DES,并使用RFC 1423的填充操作(见6.1.1节) 。
DES-CBC-Pad有一个八字节的加密密钥和一个八字节的初始向量 。密钥被看作是56位DES
密钥的64位编码,忽略奇偶校验位 。
对象标识符desCBC(在NIST/OSIImplementors"Workshop协定中定义)标识DES-CBC-Pad
加密方法 。
desCBCOBJECTIDENTIFIER::=
{iso(1)identified-organization(3)oiw(14)secsig(3)algorithms(2)7}