首页
社区
课程
招聘
[原创]HotWC3与DES加密算法之比较
发表于: 2009-7-21 18:58 6020

[原创]HotWC3与DES加密算法之比较

2009-7-21 18:58
6020
HotWC3与DES加密算法之比较

DES是上世纪70年代由IBM发明后被作为美国数据加密标准。HotWC3是中国的一位不懂数学的老菜农
的开心之作,以下简称为WC3加密算法。

1.加密体系归属
DES属于分组加密法,WC3属于流加密法。
DES分组为64位,即每次加密需要8个字节。
WC3内核采用CRC8算法,故分组为8位,即每次加密只需要1个字节。
DES为固定分组,WC3可根据内核的变化得到不同的分组数据位数。
例WC3采用CRC64时,分组也随之变为64位. 故WC3的分组位数由CRCn(n=4,8,12,16,32,64,128,...)决定。

2.密钥长度
DES的密钥长度为56位(64-8),WC3的密钥长度与CRCn算法有关。
内核为CRC8的WC3密钥长度为112位。以下所有对比将全部采用CRC8的WC3或WC38。

3.子密钥的产生
DES主密钥为56位,产生16轮每轮48位的子密钥。用以和半组32位明文每轮的混淆。
WC3主密钥为112位,产生结构对称的8对密钥流,其中1对各为32位密钥流,其他都为8位密钥流。
由于流密码的原因,WC3的“轮”即为每次的加密和解密过程。每轮8对密钥流以不同方式和方向环移不同的位数。
每轮参与直接作用的密钥即为本轮的子密钥。WC3每轮的子密钥为72位。

4.算法的f函数
f函数是DES加密法中最重要的部分,其重点就是S盒。其次是扩展及压缩置换。
CRC8正运算函数和CRC8逆运算函数是WC3密码不可缺少的部分,它同时具备了S盒和扩展作用。

DES右半部分明文数据为32位,每轮子密钥的长度为48位,且每个S盒位6入4出,8个S盒共需48位输入,故必须将明文
扩展到48位才能与子密钥混淆,进入S盒进行非线性置换。
DES的32位明文经过扩展置换后为48位,原明文的一半即16位与密钥中的16位作用,原明文的另一半16位要同32位
密钥作用。

DES的S盒实际类同CRC4,它与CRC4同属于0~15全排列表即16!=20922789888000个表。
用矩阵的行列表示为15!行16列,即DES和CRC4的S盒“祖宗”是个1307674368000行16列的矩阵。
每个S盒为4行16列,8个S盒也不过32行16列。
CRC4每个CRC权对应1个S盒,共16个S盒,每个S盒为16*16的矩阵,共256行16列,是DES的S盒的8倍。
WC3的S盒就是CRC8,每个CRC权对应1个S盒,共256个S盒,每个S盒为256*256的矩阵,共65536行256列。

DES的扩展置换实际是明文1个字节扩展半字节即扩展0.5倍,WC3采用明文与初值组合扩展256倍的方法。
DES的压缩置换实际所有S盒4*8=32位出口的32位置换即交换,所谓压缩是指S盒的48位入32位出的结果。
同理WC3在CRC8出入的关系是(8位明文+8位初值+8位权)24入8出(8位密文),实际也是所谓的压缩。
DES的S盒和CRC的S盒的根本区别在于前者是所谓的“非线性”即不好用函数表述及实现,后者可用函数表述和实现。

5.算法的实现过程
DES和WC3都是对称密码体系,即加密和解密共用同一密钥。
DES的加密和解密算法相同,不同的是子密钥每轮次序的不同。
WC3的加密和解密算法不同,子密钥流每轮次序相同。
WC3的加密过程为CRC8的正运算函数即CRC8编码矩阵的查表过程。(对称矩阵)
WC3的解密过程为CRC8的逆运算函数即CRC8解码矩阵的查表过程。(非对称矩阵)

6.安全性
DES设计寿命为10年,但至今还在沿用,说明它设计的合理,虽然S盒之谜留有遗憾。
每个密码设计者都想使自己设计的密码不可破解,当然这都是设计者本人的最大愿望。每个成熟的密码
体系都要承受密码分析学中的各种攻击方法。

WC3的防护设计主要在两个被攻击的部位:密钥流和加密算法。
与DES一样,WC3也有弱密钥和半弱密钥之分。站在流加密法的角度,可认为是密钥流伪周期固定且远远小于
明文流或密文流的长度。弱密钥和半弱密钥会大大降低密码的安全强度。
WC3用适当的初始密钥置换以降低此现象的发生概率,即用三角变换和星期及天干地支变换。故各自密钥流
的命名也随之而生。W(星期)C(CRC)3(三角)也由此而来。

密钥流的设计考虑了软硬件的实现和使用者对结构理解的简洁,只采用了一般简单的环移。为达到密钥流
的伪随机周期最大,采用了各个子密钥流不同的环移互控方式。

在三角密钥流即CRC初值密钥流和CRC权值密钥流设计上,采用交叉反序环移,虽然它和整体一个字(两字节)
环移对密钥的流动一样,但反序会造成逆向分析的难度。
多对密钥流同时保护WC3的重点CRC权以阻止对CRC8内核算法的攻击。即阻止攻击CRC编码表。

日期和用户密钥流各为32位,由天地和星期流控制不同的移位次数,同时它们又反控其他密钥流的移动。
天地和星期流除控制其他密钥流的移动外还监视明文流和密文流的变化。阻止利用差分攻击以及基于明文
和密文的攻击。

扩展密钥流主要隔离明文流和密文流和CRC8内核的直接联系,阻止选择明文的攻击。

总之WC3的安全性在于密钥流的伪随机周期的长度和对CRC权值和方向的混淆。

7.对比总结
DES已应用30多个年头,它是分组密码设计的典范,尤其是其神秘的S盒倾倒了无数个分组密码设计者。
WC3虽然属于流密码,本应该把重点放到密钥流的伪随机周期设计上面。DES的S盒之谜使WC3设计者本人
倍感兴趣,它的左右分组结构非常清晰,故WC3的设计中DES的烙印很深。

从WC3的框架结构可以看出:
选择CRC做WC3的内核算法后大大区别的以往的流密码设计,CRC的初值和权满足了WC3的左右对称结构。
使本应该一路的密钥流分成2个密钥支流,这无形中加倍了密钥的长度,增强了密码体系的安全强度。
同时也了结了拥有S盒的梦想,虽然它是个“线性”的S盒,但它的矩(巨)阵和“多入口参数”可以弥补不是
“非线性”的遗憾,同时CRC的“线性S盒”也虚拟地造就了CRC拥有海量的CRC编解码矩阵表格。

总之HotWC3是个密钥位数及核算法可以随意升降级别的流加密体系,它设计特点独到,不随大流。
HotWC3的设计原则:“各行其道、密钥混淆、算法扩散”。它的安全性需要时间的考验和专家的论证。

8.展望
菜农不图谋什么,只要“曾经拥有”。是的,我做了,做到了。用心了,心用了。
密码就是要被破解的,有人去破解,而且破解了,对于密码的设计者不是遗憾而是“光荣和荣耀”~~~
因为他的“密码”曾有无数人的关注和为之付出的努力,总比没人重视要强百倍~~~

菜农此生在MCU方面不知“扒光”了多少程序设计者的“衣裳”,每次都向他“默默地致敬”~~~
菜农也等着有人向俺“默默地致敬”~~~

菜农HotPower@126.com  2009.7.21 于西安雁塔菜地

点击直接运行: 112位HotWC3/CRC通用网上演算器V3.03


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
根据CRC可逆性质,CRC权值必须满足:
右移CRC时,最高位为1,左移CRC时,最低位为1.
这在CRC的(本原)多项式中肯定是满足的,但要作为CRC密钥的一部分可能不会满足。
因为CRC密钥流是伪随机在发生变化的,不能保证其可逆之条件。

列出CRC4权值及变换后的结果:
权值:0 1 2 3 4 5 6 7 8 9 A B C D E F(未变换前)
右移:8 9 A B C D E F 8 9 A B C D E F
左移:1 1 3 3 5 5 7 7 9 9 B B D D F F

可以看出:
0, 2, 4, 6从未用过,即最高位和最低位全为0的4个数据从未使用过。
而与之对应的最高位和最低位全为1的4个数据:
0+9=9,2+9=B,4+9=D,6+9=F在运算中替代了它们的作用。
其他数据在每个方向只用2次,而9,B,D,F却用了4次。且同时出现在两个矩阵中。

CRC权变换类似于DES的S盒入口前的扩展变换,但是在CRC运算前做压缩置换。
压缩置换是单向不可逆的,即权只使用了12个数,无法方向推出原先的数。

从CRC4编解码矩阵中可以看出:
CRC编码矩阵(权和方向已确定)为对称矩阵,即行(初值)列(明文)可以交换。
其主对角线上的元素为0,即矩阵行列相等时元素为0,
也就是CRC最常用的一个特性---初值=明文时,密文=0.

再有一个很有趣的现象:
当右移CRC4,权值=0或8,或左移CRC4,权值=0或1时,CRC4编解码矩阵相等。
即都是对称矩阵。

在CRC编码中,行=初值,列=明文,元素=密文,行列可以交换。即密文=[初值,明文]=[明文,初值]

在CRC解码中,行=初值,列=密文,元素=明文,行列可以交换。即明文=[初值,密文]=[密文,初值]

此时初值、明文、密文的关系可以随意转换,即:

初值=[明文,密文]=[密文,明文]
明文=[初值,密文]=[密文,初值]
密文=[初值,明文]=[明文,初值]

故HotWC3有三个弱密钥0x00,0x01,0x80,它们公用一个CRC编解码矩阵。
初值、明文、密文的关系很清晰,但无法知道哪个矩阵是真的矩阵。
所以CRC编解码矩阵是单向不可逆的,即:
一对CRC编解码矩阵对应唯一的阵内元素初值、明文、密文,
反之,给定初值、明文、密文,无法对应唯一的编解码矩阵。
2009-7-25 17:03
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶起来,两年后来此论证HotWC3单向散列函数之安全
2011-12-22 20:15
0
游客
登录 | 注册 方可回帖
返回
//