基於抗二次原像散列函式的 HMAC 是否總是不可偽造的?
如果散列函式是抗衝突的,那麼其關聯的 HMAC 始終是不可偽造的。但是假設一個散列函式只是抗二次原像,不一定是抗碰撞的。那麼我的問題是,它關聯的 HMAC 總是不可偽造的?
即使是抗碰撞性也不足以使 HMAC 不可偽造,因此第二原像抗性也不是。
讓 $ H : {0,1}^* \to {0,1}^n $ 是一個抗衝突的雜湊函式。我們定義雜湊函式 $ H’ : {0,1}^* \to {0,1}^{n+1} $ 作為 $$ H’(m\Vert b) = H(m)\Vert b, $$ 在哪裡 $ |b|=1 $ .
因為對於任何 $ m_0\Vert b_0 $ 和 $ m_1\Vert b_1 $ , 它認為 $ H’(m_0\Vert b_0) = H’(m_1\Vert b_1) $ 當且僅當 $ b_0=b_1 $ 和 $ H(m_0)=H(m_1) $ ,很容易看出任何碰撞 $ H’ $ 意味著碰撞 $ H $ . 因此 $ H’ $ 必須保持抗碰撞。
但是,HMAC 實例化為 $ H’ $ 很容易偽造。
$$ \begin{align} \mathsf{HMAC}(K,m\Vert b) =& H’\Bigl((K\oplus \mathsf{opad})\Vert H’\bigl((K\oplus \mathsf{ipad})\Vert m\Vert b\bigr)\Bigr)\ =&H’\Bigl((K\oplus \mathsf{opad})\Vert H\bigl((K\oplus \mathsf{ipad})\Vert m\bigr)\Vert b\Bigr)\ =&H\Bigl((K\oplus \mathsf{opad})\Vert H\bigl((K\oplus \mathsf{ipad})\Vert m\bigr)\Bigr)\Vert b\ \end{align} $$
即,對手可以拿走標籤 $ t $ 對於一些任意消息 $ m $ , 並且現在 $ (m\oplus 0\dots01,t\oplus 0\dots01) $ 作為具有機率的有效偽造品 $ 1 $ .