ESP CBC模式加密算法( 二 )


法性能的健壮性来决定 。
============== ================== ================= ==========
AlgorithmKeySizes(bits)PopularSizesDefault
============== ================== ================= ==========
CAST-128[1]40to12840,64,80,128128
-------------- ------------------ ----------------- ----------
RC540to204040,128,160128
-------------- ------------------ ----------------- ----------
IDEA128128128
-------------- ------------------ ----------------- ----------
Blowfish40to448128128
-------------- ------------------ ----------------- ----------
3DES[2]192192192
-------------- ------------------ ----------------- ----------
注:[1]对于CAST-128 , 因为CAST-128的密钥计划假设一个输入密钥是128位的 , 所以
密钥少于128位时 , 必须在最右边填充0或是多于128位时 , 取重要的128位 。假如你有一
个80位长的密钥“3B5D831CFE” , 就应该进行填充处理使其成为一个128位的密钥
“3B5D831CFE000000” 。
[2]第一个3DES密钥来自第一个64位 , 第二个密钥来自下一个64位 , 第三个密钥来
自最后64位 。在开始接受一套新的密钥的时候 , 实现必须考虑奇偶校验位 。三个密钥中的每
一个是实际长度是56位 , 包括额外的8位用做奇偶校验 。
读者应该注重到所有上面提到的加密算法的最小密钥长度是40位长 , 编者强烈的建
议实现时不要使用短于40位的密钥 。
2.3不健壮的密钥
应该对不健壮的密钥进行检查 。假如这样的密钥被发现 , 这个密钥应该被拒绝 , 并发出新
的SA请求 。一些算法有一定不能被使用的不健壮的密钥或是本质上是不健壮的密钥 。
新的不健壮密钥可能被发现 , 所以对于这些算法 , 本文档不可能包括所有可能的不健壮密
钥 。请查看其他的密码源资料 , 比如[MOV]和[Schneier] , 来获知更多的不健壮密钥 。
CAST-128:
没有已知的不健壮密钥 。
RC5:
当使用16rounds时 , 没有已知的不健壮密钥 。
IDEA:
IDEA已经被发现存在不健壮密钥 , 请查看[MOV]和[Schneier]来获得更多的相关信息 。
Blowfish:
对于Blowfish算法也发现了不健壮密钥 。不健壮密钥就是那些对于特定的S-box产生完
全一致的输入的密钥 。
不幸的是 , 在S-box值产生之前 , , 没有办法对不健壮密钥进行测试 。无论如何 , 随机产
生这样一个密钥的机会是很小的 。
3DES:
DES有64个已知的不健壮密钥 , 包括所谓的semi-weak密钥和possibly-weak密钥
[Schneier95,pp280-282] 。
而随机的产生一个这样的密钥的可能性是可以忽略的 。
对于DES-EDE3 , 没有已知的需要拒绝的不健壮或补充的密钥 。由于使用了多个密钥 , 任
何的不健壮性都被排除了 。
无论如何 , 假如前两个或是后两个独立的64位密钥是相同的(k1==k2或k2==k3) ,
那么3DES就和DES完全一样了 。实现者必须拒绝使用有这种属性的密钥 。
2.4块的大小和填充
所有在本文档中描述的算法都使用8个8位组(64位)的块 。
在排列载荷类型和填充长度8位组(在[Kent98]中有定义)时要使用填充 。填充部分必须
完全的排列数据
使它满足8个8位组(64位)的加密边界要求 。
2.5Rounds
这个变量决定了一个块被加密多少次 。然而这个变量也可以协商决定 , 当不使用协商解决
的时候 , 缺省的值必须总是存在 。
==================== ============ ======================
AlgorithmNegotiableDefaultRounds
==================== ============ ======================
CAST-128Nokey

推荐阅读