官术网_书友最值得收藏!

  • 密碼算法應用實踐
  • 文仲慧等
  • 1040字
  • 2020-04-03 12:46:59

1.11 ICE加密算法

ICE(Information Concealment Engine)是由澳大利亞的Matthew Kwan于1997年提出的一個標準的Feistel分組密碼。ICE加密算法的結構和DES加密算法完全相同。DES加密算法自1977年問世以來,已經被廣泛用于國際標準,許多專家對它進行了專門攻擊研究,它的許多弱點已經逐漸暴露出來,如可以被差分攻擊和線性攻擊等。ICE加密算法在層函數F的設計中采取了一些新的手段來克服DES加密算法的不足,并在運行速度和安全兩方面進行了折中考慮。

ICE加密算法的分組長度為64比特,密鑰長度為64比特,迭代層數為16。64比特的輸入被平分成32比特的左右兩部分,右半部分和60比特的層密鑰作為F函數的輸入,層函數F的輸出同左半部分進行模2加,然后交換左、右兩部分,重復該過程至第16層,最后一層左、右兩部分不交換。同DES加密算法相比,ICE加密算法只是缺少輸入和輸出的變換。

ICE加密算法的F函數結構同DES加密算法的層函數F的結構非常相似。

1.E擴展

將輸入的32比特從左到右依次記為p31p30、…、p1p0,按下列規律將32比特擴展成40比特,從左到右記為4個10比特的字,即E1E2E3E4

E1=p1p0p31p30p29p28p27p26p25p24

E2=p25p24p23p22p21p20p19p18p17p16

E3=p17p16p15p14p13p12p11p10p9p8

E4=p9p8p7p6p5p4p3p2p1p0

2.由密鑰控制的置換和加亂

層密鑰為60比特,記為3個20比特的字SK1、SK2、SK3;記tl=(E1<<10)|E2, tr=(E3<<10)|E4。SK3用于密鑰置換,當SK3的某些比特為1時,tltr的相應比特進行交換,可用下面的公式來表示。

t=SK3&(tltr)

tr=trt

tl=tlt

SK1tl進行模2加后作為前兩個S盒的輸入,SK2tr進行模2加后作為后兩個S盒的輸入。

3.S

ICE加密算法有4個S盒,每個S盒的輸入為10比特,輸出為8比特。同DES加密算法相比,雖然ICE加密算法的S盒在數量上是減少了,但是每個S盒都不是固定不變的,而是依據輸入數據的變化而變化的,而且變化量相當大。記S盒的10比特為X,則CX的中間8比特組成的十進制數;RX的最高比特和最低比特合成的十進制數;OR為每個S盒第R行的偏移量;PR為每個S盒第R行上的Galois域素數,則每個S盒可由公式(C^OR)7 mod PR生成。ICE加密算法S盒的ORPR值如表1.11.1所示,表中,OR的值是十六進制的;PR的值是十進制的。

表1.11.1 ICE加密算法S盒的ORPR

4.P置換

4個S盒的輸出經一個固定的P置換后合成一個新的32比特輸出,并作為層函數F的輸出。ICE加密算法的P置換表如表1.11.2所示。

表1.11.2 ICE加密算法的P置換表

將64比特的密鑰從左到右均分成4個16比特的分組,記為KB[0]、KB[1]、KB[2]、KB[3],根據表1.11.3所示的密鑰移位表從4個分組中選出某個分組,取出其低比特,依次合成16個60比特的層密鑰,用C語言表示的偽代碼如下:

for n=1 to 16 do
{
    SK=0;
        for j=1 to 3 do
            for t=1 to 5 do
                for i=0 to 3 do
                {
                    z=(i+KR[n])mod 4;
                    B=KB[z]&1;
                    SK=(SK<<1)|B;
                    KB[z]=(KB[z]>>1)|(~B<<19);
                }
    kn=SK;
}

表1.11.3 ICE加密算法的密鑰移位表

主站蜘蛛池模板: 焉耆| 庆云县| 手游| 遂平县| 凤冈县| 孝昌县| 政和县| 尚义县| 南木林县| 霍邱县| 札达县| 灵川县| 无极县| 乳山市| 穆棱市| 页游| 郸城县| 长白| 峡江县| 景洪市| 杭州市| 息烽县| 盘山县| 剑河县| 丹巴县| 左云县| 英山县| 闽清县| 荥阳市| 黄冈市| 济南市| 博兴县| 新化县| 县级市| 永善县| 若尔盖县| 青神县| 都江堰市| 新密市| 苍梧县| 正安县|