|
21樓

樓主 |
發(fā)表于 2009-7-26 10:56:42
|
只看該作者
本帖最后由 hotpower 于 2009-7-26 10:59 編輯
拜托了,CRC8密鑰為65536個(gè),CRC4密鑰為256個(gè)
HotWC3弱密鑰的解決方案
根據(jù)CRC可逆性質(zhì),CRC權(quán)值必須滿足:
右移CRC時(shí),最高位為1,左移CRC時(shí),最低位為1.
這在CRC的(本原)多項(xiàng)式中肯定是滿足的,但要作為CRC密鑰的一部分可能不會(huì)滿足。
因?yàn)镃RC密鑰流是偽隨機(jī)在發(fā)生變化的,不能保證其可逆之條件。
列出CRC4權(quán)值及變換后的結(jié)果:
權(quán)值: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個(gè)數(shù)據(jù)從未使用過。
而與之對(duì)應(yīng)的最高位和最低位全為1的4個(gè)數(shù)據(jù):
0+9=9,2+9=B,4+9=D,6+9=F在運(yùn)算中替代了它們的作用。
其他數(shù)據(jù)在每個(gè)方向只用2次,而9,B,D,F卻用了4次。且同時(shí)出現(xiàn)在兩個(gè)矩陣中。
CRC權(quán)變換類似于DES的S盒入口前的擴(kuò)展變換,但是在CRC運(yùn)算前做壓縮置換。
壓縮置換是單向不可逆的,即權(quán)只使用了12個(gè)數(shù),無法方向推出原先的數(shù)。
從CRC4編解碼矩陣中可以看出:
CRC編碼矩陣(權(quán)和方向已確定)為對(duì)稱矩陣,即行(初值)列(明文)可以交換。
其主對(duì)角線上的元素為0,即矩陣行列相等時(shí)元素為0,
也就是CRC最常用的一個(gè)特性---初值=明文時(shí),密文=0.
再有一個(gè)很有趣的現(xiàn)象:
當(dāng)右移CRC4,權(quán)值=0或8,或左移CRC4,權(quán)值=0或1時(shí),CRC4編解碼矩陣相等。
即都是對(duì)稱矩陣。
在CRC編碼中,行=初值,列=明文,元素=密文,行列可以交換
在CRC解碼中,行=初值,列=密文,元素=明文,行列可以交換
此時(shí)初值、明文、密文的關(guān)系可以隨意轉(zhuǎn)換,即:
初值=[明文,密文]=[密文,明文]
明文=[初值,密文]=[密文,初值]
密文=[初值,明文]=[明文,初值]
故HotWC3有三個(gè)弱密鑰0x00,0x01,0x80,它們公用一個(gè)CRC編解碼矩陣。
初值、明文、密文的關(guān)系很清晰,但無法知道哪個(gè)矩陣是真的矩陣。
所以CRC編解碼矩陣是單向不可逆的,即:
一對(duì)CRC編解碼矩陣對(duì)應(yīng)唯一的陣內(nèi)元素初值、明文、密文,
反之,給定初值、明文、密文,無法對(duì)應(yīng)唯一的編解碼矩陣。 |
|