|
本帖最后由 hotpower 于 2009-7-26 10:59 編輯
拜托了,CRC8密鑰為65536個,CRC4密鑰為256個
HotWC3弱密鑰的解決方案
根據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編解碼矩陣對應唯一的陣內元素初值、明文、密文,
反之,給定初值、明文、密文,無法對應唯一的編解碼矩陣。 |
|