没有合适的资源?快使用搜索试试~ 我知道了~
首页PKCS#5 基于口令的密码标准.doc
资源详情
资源评论
资源推荐

PKCS #5 v2.0 --- Password-Based Cryptography Standard 基于口令的密码标准
组织: PKI 论坛( http://www.pki.com.cn )
PKCS/PKIX 中文翻译计划
论坛电子邮件: pki@pki.com.cn
译者:Link_X (刘 磊) ( lynx_lynx@sohu.com )
版权:本中文翻译文档版权归 PKI 论坛的注册用户所共有。可以用于非商业用途自由转载,但必须保留
本
文档的翻译及版权信息。如用于商业目的,所得利润需用于 PKI 论坛的发展。
更改记录
日期
修改章节 类型 修改描述
修改人
2003/11/20 C 创建文档 Link_X (刘 磊)
* 修改类型分为 C- 产生一 - 附加的 M- 修正 D- 划除
PKCS#5 v2.0:基于口令的密码标准
PKCS#5 v2.0: 以密码为基础的密码使用法标准
RSA 实验室
1999 年 3 月 25 日
PKCS/PKIX 中文翻译计划

PKCS #5 v2.0 --- Password-Based Cryptography Standard 基于口令的密码标准
目录
目录......................................................................................................................................................................................2
1.绪论...................................................................................................................................................................................3
2.符号说明...........................................................................................................................................................................3
3.概述...................................................................................................................................................................................4
4.SALT 和迭代次数............................................................................................................................................................5
SALT.................................................................................................................................................................................5
迭代次数.........................................................................................................................................................................6
5.密钥生成函数...................................................................................................................................................................6
PBKDF1...........................................................................................................................................................................6
PBKDF2...........................................................................................................................................................................7
6.加密方案...........................................................................................................................................................................9
PBES1..............................................................................................................................................................................9
加密操作
.....................................................................................................................................................................9
解密操作
...................................................................................................................................................................10
PBES2............................................................................................................................................................................10
加密操作
...................................................................................................................................................................11
解密操作
...................................................................................................................................................................11
7.消息鉴别方案.................................................................................................................................................................12
PBMAC1.......................................................................................................................................................................12
MAC
的生成
.............................................................................................................................................................12
MAC
的认证
.............................................................................................................................................................12
A. ASN.1 语法...................................................................................................................................................................14
B. 支持技术........................................................................................................................................................................16
C. ASN.1 模块....................................................................................................................................................................19
D. 知识产权.......................................................................................................................................................................23
E. 版本历史........................................................................................................................................................................23
VERSIONS 1.0–1.3..........................................................................................................................................................23
VERSION 1.4...................................................................................................................................................................23
VERSION 1.5...................................................................................................................................................................23
VERSION 2.0...................................................................................................................................................................23
PKCS/PKIX 中文翻译计划

PKCS #5 v2.0 --- Password-Based Cryptography Standard 基于口令的密码标准
F. 参考文献........................................................................................................................................................................24
G. 关于 PKCS....................................................................................................................................................................25
1.绪论
本文对基于口令的密码技术的实现提出了相关建议,涵盖了以下几个方面:
密钥生成函数
加密方案
消息鉴别方案
用 ASN.1 语法对技术进行标识
这些有着一定伸缩性的建议是针对计算机和通信系统中的普通应用软件提出的,特别针对了敏感信
息的保护,例如:对 PKCS#8 中私钥的保护。并且希望基于这些建议的应用标准标准和实现框架可以包
含附加的约束。
本文不涉及其它的基于口令的密码技术,例如:基于口令的密钥实体鉴别和密钥制定协议 [5][26] ;
并且也不涉及口令的选择。
本文代替了 PKCS#5 1.5 版,但包含了相应的兼容技术。
2.符号说明
C 密文,字节串
c 迭代次数, 正整数
DK 生成密钥, 字节串
dkLen 生成密钥的字节个数, 正整数
EM 经过编码的消息, 字节串
Hash 基础 Hash 函数
hLen 伪随机函数输出的字节数,正整数
l 生成密钥的分组数, 正整数
IV 初始化向量, 字节串
K 加密密钥, 字节串
KDF 密钥生成函数
M 消息, 字节串
P 口令, 字节串
PRF 基础伪随机函数
PS 填充串, 字节串
psLen 填充串的字节数, 正整数
PKCS/PKIX 中文翻译计划

PKCS #5 v2.0 --- Password-Based Cryptography Standard 基于口令的密码标准
S salt, 字节串
T 消息鉴别码, 字节串
T
1
, …, T
l
, U
1
, …, U
c
中间植, 字节串
01, 02, …, 08 值为 1, 2, …, 8 的字节
\xor 两个字节串按位异或
|| || 求串中字节个数的算子
|| 连接算子
<i..j> 子串提取算子: 提取出第 i 到 j 个字节, 0 i j
3.概述
在很多公钥密码应用软件中, 用户的安全最终依赖于一个或多个秘密文本或口令。虽然在一个常规的
密码系统中并不直接把口令用作密钥,但在用口令进行密码操作时仍需对口令进行处理。此外 , 由于口令
通常从一个相对较小的空间中选取, 在对其进行处理时要特别注意抵抗搜索攻击。
基于口令的密码术的一种通常的方法是将口令与 salt 相结合以生成密钥,例如:Morris and Thompson
[8]对口令表的保护。用口令可生成一个巨大的密钥集,可以把 salt 看作是对这个密钥集的一个索引, 不
需要对 salt 进行保密。虽然一个攻击者可能会构建一个包含所有可能口令的表(一种所谓的“字典攻击”) ,
但构建一个包含所有可能密钥的表是十分困难的,因为对每一个口令都存在非常多的可能密钥。因而,
攻击者只能对每个 salt 来搜索所有的口令。
基于口令的密码术的另一种方法是建立一种代价相对较高的密钥生成技术,从而增加穷举搜索代价。
这种方法的一种途径就是,在密钥生成技术中引入一个迭代次数,用来表示对某个生成密钥的基础函数
的迭代次数。一个合适的迭代次数是 1000,它对于合法者来说并不形成一种负担,但对攻击者却是一种
严重的负担。
在 PKCS #5 v1.5 中,Salt 和迭代次数构成了基于口令密码术的基础, 并且也被用在本文中的多种密
码操作中。因而,本文定义的基于口令的密钥生成技术是一个关于口令、salt 和迭代次数的函数,其中后
两个量不需保密。
从一个基于口令的密钥生成函数能很容易的得到基于口令的加密和消息鉴别方案。在 PKCS #5 v1.5
中, 基于口令的加密方案是建立在一种基础的、常规的加密方案的基础上的,其中的密钥就是用口令来
生成的。 类似的,基于口令的消息鉴别方案也是建立在一种基础的、常规的消息鉴别方案的基础上的。
这种分为两层的方案使得基于口令的技术可以利用基础的技术模块化实现。
除了这里提到的加密和消息鉴别方案,人们还希望从基于口令的密钥生成函数得到其它的应用。例
如,我们可以仅用一个密钥生成函数来生成一个密钥集,而不必逐个的生成密钥。密钥集中的密钥可以
就是密钥生成函数的输出串的各个子串。这种方法可以用在一个面向会话的协议中,作为构建密钥系统
的一部分。另一种应用是口令检查,其中:密钥生成函数的输出和 salt 以及迭代次数都被保存起来,以用
于对口令的验证。
在本文中,认为口令是一个任意长度的字节串,并不特别要求它被解释为一个文本串。但为了提高
的互用性,仍然希望应用软件能遵循通用的文本编码规则,例如: ASCII 和 UTF-8 [27] (ASCII 是 UTF-8
的一个子集)。
PKCS/PKIX 中文翻译计划

PKCS #5 v2.0 --- Password-Based Cryptography Standard 基于口令的密码标准
本文并不涉及口令的选择问题,文献[17]对口令的选择给出了很好的建议。
4.Salt 和迭代次数
由于 salt 和迭代次数是文中技术的关键,有必要对其进行深入的讨论。
Salt
在基于口令的密码术中,一个 salt 常常用来和给定的口令共同生成一个庞大的密钥集,并根据 salt 从
中随机的选取一个密钥。可以用一个密钥生成函数 KDF 从密钥集中选取一个密钥:
DK = KDF (P, S)
其中 DK 是生成的密钥,P 是口令, S 是 salt。 这将带来两个好处:
1. 攻击者很难根据一个口令字典来算出所有可能的密钥。例如,设 salt 的长度为 64,则每个口令有
2
64
个可能的密钥。经过一次基于口令的操作后,即使 salt 已知,攻击者也只能对口令进行搜索。
2. 同一个密钥基本不可能被选到两次。如果 salt 的长度为 64 bits,根据“生日悖论”,只有当选择了
2
32
个密钥后“碰撞”的概率才会变得显著。这避免了在某些加密和消息鉴别应用中对重复使用同一
个密钥所产生的影响的担忧。
在基于口令的加密过程中,加密方只要在用口令生成密钥时选择一个很长的、随机性强的 salt 就能实
现上述两点。类似的方法也适用于对消息的鉴别。
然而,解密方却不能确认加密方所提供的 salt 真的是随机生成的。这种情况是完全可能发生的,比如,
为了利用对同一密钥重复使用所产生的影响,salt 可能是从另一个基于口令的操作中拷贝得到的。例如,
假设两个合法方交换一条经过 80-bit 长的密钥加密的消息,其中的密钥由他们共用的口令和同一个 salt 所
生成。一个攻击者就可能将这个 salt 作为一个用于生成 40-bit 长密钥的 salt 提供给一个合法方。如果这个
合法方公开了用 40-bit 长密钥解密的结果,攻击者就能计算出这个 40-bit 长密钥。若这个 40-bit 长密钥正
好是那个 80-bit 长的密钥的前半部分,攻击者就能容易的算出密钥的后半部分。
为了抵抗这种攻击,应该对重复使用同一密钥所产生的影响进行仔细的分析,或者将一些能明确区
分不同操作的数据加入到 salt 中。例如,可以用一个非随机的字节来说明一个生成密钥的用途:加密、消
息鉴别或其它,然后把这个字节包含到一个 salt 中。
在此基础上,对 salt 的选择提出了以下建议:
1. 在基于口令的加密和消息鉴别技术中,给定一个口令,如果不必考虑对同一生成密钥(或密钥前
缀)的重复使用所产生的影响,则 salt 可以随机生成,接收方也不必对其进行详细的格式检查 。
Salt 的长度至少应为 8 字节(64 bits) 。
2. 如果需要考虑重复使用产生的影响, salt 就应该包含一些能明确区分不同操作和不同密钥长度的
数据。这样的数据至少应该有 8 个字节的长度,而且接受方应该对其进行检查或重生成。 例如,
salt 可以包含一个附加的非随机字节来说明生成密钥的用途。 或者,用一个结构来描述生成密钥
PKCS/PKIX 中文翻译计划
剩余24页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1