簡(jiǎn)述JH算法

在安全散列標(biāo)準(zhǔn)SHA-3的選拔中涌現(xiàn)了很多優(yōu)秀的哈希算法,包括Blake、Grostl、Keccak等。下面我們要了解的就是入選SHA-3最后一輪競(jìng)爭(zhēng)的JH算法。

JH算法簡(jiǎn)介

Hash函數(shù)的設(shè)計(jì)通常采用迭代結(jié)構(gòu),其迭代函數(shù)的設(shè)計(jì)又借鑒了很多分組密碼的思想。JH算法采用了新的壓縮函數(shù)結(jié)構(gòu),其核心壓縮函數(shù)就是一個(gè)分組密碼,該分組密碼的設(shè)計(jì)與美國(guó)高級(jí)加密標(biāo)準(zhǔn)AES類似,通過(guò)固定密鑰對(duì)消息加密,并將部分消息反饋以達(dá)到消息壓縮的目的。

JH算法

JH算法過(guò)程

JH算法主要由數(shù)據(jù)填充、數(shù)據(jù)分塊、設(shè)置哈希初值、計(jì)算哈希終值、獲取信息摘要等5個(gè)步驟構(gòu)成:

  1. 將長(zhǎng)度為L(zhǎng)的消息M進(jìn)行數(shù)據(jù)填充,得到的數(shù)據(jù)長(zhǎng)度為512bit的倍數(shù)。
  2. 把消息M分割為N個(gè)512bit的數(shù)據(jù)M(i)作為壓縮函數(shù)F8的輸入。
  3. 進(jìn)行哈希初值H(0)的設(shè)置,它是由初始化值H(-1)及消息M(0)通過(guò)壓縮函數(shù)F8計(jì)算得出的。
  4. 通過(guò)壓縮函數(shù)F8計(jì)算得出哈希終值H(N),其中,壓縮函數(shù)F8的另一個(gè)輸入為哈希值H(i),它是指第i個(gè)512bit的消息M(i)通過(guò)壓縮函數(shù)F8計(jì)算出的哈希值。
  5. 通過(guò)截取哈希終值H(N)的高n位獲取消息摘要。

JH算法

JH算法的優(yōu)缺點(diǎn)

由于JH算法采用了“寬軌跡策略”來(lái)設(shè)計(jì)分組密碼,所以它的安全性比較優(yōu)秀,能夠抵抗已知的攻擊。另外,JH算法采用了明顯的擴(kuò)散層,使得比特追蹤法很難適用于這類Hash函數(shù)的安全性分析。并且JH算法支持224bit、256bit、384bit和512bit四種長(zhǎng)度的散列。

但JH算法在硬件實(shí)現(xiàn)中存在不足,在一些資源占用少、功耗要求低的應(yīng)用中很難做到低功耗運(yùn)行,算法的吞吐率較低。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪稿。