v1.5的密钥导出过程相兼容 。
建议PBKDF1只用于同已有应用的兼容,因为它产生的密钥对某些应用来说不够大 。
PBKDF1(P,S,c,dkLen)
可选项: Hash 基本散列函数
输入:P 口令,字节串
S 盐,一八字节串
c 迭代次数,正整数
dkLen导出密钥的意定字节长度,正整数,MD2或MD5最多16,SHA-1
最多20
输出: DK 导出密钥,dkLen字节
步骤:
1. 假如对于MD2和MD5,dkLen>16,或对于SHA-1,dkLen>20,(即dkLen大于散列函
数的输出长度),输出“derivedkeytoolong”并停止 。
2. 对口令P和附加盐S的串联应用基本散列函数,重复c次,然后抽取第一个dkLen
字节以产生一导出密钥DK:
T_1=Hash(PS),
T_2=Hash(T_1),
...
T_c=Hash(T_{c-1}),
DK=Tc<0..dkLen-1>
3. 输出导出密钥DK 。
5.2PBKDF2
PBKDF2应用一个伪随机函数(例子见附录B.1)以导出密钥 。导出密钥的长度本质上是没
有限制的 。(但是,导出密钥的最大有效搜索空间受限于基本伪随机函数的结构 。进一步的
讨论参见附录B.1 。)对新的应用推荐使用PBKDF2 。
PBKDF2(P,S,c,dkLen)
可选项: RPF 基本伪随机函数(hLen表示伪随机函数输出的字节长度)
输入: P 口令,一字节串
S 盐,字节串
c 迭代次数,正整数
dkLen 导出密钥的意定字节长度,正整数,最大约(2^32-1)*hLen
输出: DK 导出密钥,长度dkLen字节
步骤:
1. 假如dkLen>(2^32-1)*hLen,输出“derivedkeytoolong”并停止 。
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_1xorU_2xor...xorU_c
其中
U_1=PRF(P,SINT(i)),
U_2=PRF(P,U_1),
...
U_c=PRF(P,U_{c-1}).
这里,INT(i)是整数i的四字节编码,高字节在先 。
3. 串联各块,抽取前dkLen字节以产生导出密钥DK:
DK=T_1T_2...T_l<0..r-1>
4. 输出导出密钥DK 。
注重:函数F的构造遵循“belt-and-suspenders”方法 。U_i次循环被递归计算以消
除敌手的并行度;它们被异或到一起以减少有关递归退化到一个小的值集的担忧 。
6.加密程序
在对称设置中,加密程序包括加密操作的解密操作,其中加密操作在一个密钥作用下从
一个消息产生密文,而解密操作在同一个密钥作用下从密文恢复消息 。在基于口令的加密策
略中,密钥就是口令 。
基于口令的加密方法的一个典型应用是私钥保护方法,其中消息包括私钥信息,如
PKCS#8中的那样 。这里定义的加密策略在那种情况下是合适的加密算法 。
本节详述的两个策略是PBES1和PBES2 。PBES2推荐给新的应用,PBES1只为了同已有
应用的兼容 。
6.1PBES1
PBES1结合了PBKDF1函数和一个基础的块加密,可以是CBC模式下的DES或RC2? 。PBES1
同PKCS#5v1.5中加密策略相兼容 。
6.1.1加密操作
在口令P作用下加密消息M以产生密文C,包括以下步骤:
1. 产生一八字节盐S和一迭代次数c,如第4节所述 。
2. 应用PBKDF1密钥导出函数(5.1节)到口令、附加盐S和迭代次数,以产生长度为16字
节的导出密钥DK:
DK=PBKDF1(P,S,c,16).
- 基于MPLS的流量工程要求
- Linux下基于DNS的多机均衡负载的实现
- 光以太网基于LAN的WAN
- 支付宝吱口令怎么关闭 停用当前吱口令的方法介绍
- 微信中发语音口令红包具体操作方法
- 基于H.323标准的IP电话附加业务
- 基于VoIP技术的新一代话音业务
- 基于分组网的多媒体视听业务的发展
- 报花名绕口令 绕口令的相关知识
- 支付宝口令红包怎么领取
