2642642^{64}同一消息的版本
我正在閱讀一本教科書,其中他們解釋了雜湊函式的屬性。特別是,他們給出了一個範例,說明找到與原始輸入的雜湊輸出相匹配的第二個輸入值是多麼不可能。這是範例:
我們現在展示 Oscar 如何將他發現衝突的能力(修改兩條消息)轉化為攻擊。他從兩條資訊開始,例如: $ x_1 = \text{ Transfer \$10 into Oscar’s account } \ x_2 = \text{ Transfer \$10,000 into Oscar’s account} $
他現在變了 $ x_1 $ 和 $ x_2 $ 在“不可見”的位置,例如,他用製表符替換空格,添加空格等。消息的含義是相同的(例如對於銀行),但雜湊值會發生變化。
奧斯卡嘗試直到條件 $ h(x_1)=h(x_2) $ . 請注意,如果攻擊者擁有例如, $ 64 $ 他可以改變或不能改變的位置,這會產生 $ 2^{64} $ 相同消息的版本 $ 2^{64} $ 不同的雜湊值。
有人可以解釋一下它們是什麼意思嗎 $ 2^{64} $ 相同消息的版本?這完全飛到了我的頭上。我知道雜湊函式(例如 SHA-256)會產生 64 位輸出,例如:
SHA256(Transfer $10 into Oscar’s account)=250e62ddffbdf20a0ea40d69287327e8aff58b6ad49c03dab3f714b596804dc1
我知道 Oscar 想要修改
Transfer $10,000 into Oscar’s account
,以便在插入 SHA-256 函式時輸出與上述相同的輸出。但它們是什麼意思,攻擊者可以“改變或不改變”這 64 個位置,以及這種“改變或不改變”如何產生 $ 2^{64} $ 相同消息的版本?
引用的文字似乎在談論發現 128 位雜湊函式與生日攻擊的衝突。在生日攻擊中,一個人在周圍創造 $ \sqrt{2^{128}} = 2^{64} $ 消息,以便他們期望以 1/2 的機率找到碰撞對。
在所描述的攻擊中,Oscar 想要創建兩個具有相同雜湊值的特定消息。
$ x_1 $ = 將10美元轉入 Oscar 的賬戶
$ x_2 $ = 將10,000美元轉入 Oscar 的賬戶
為了創造 $ 2^{64} $ 消息,可以使用不可見字元,例如
space
andtab
。如果將 64 個字元附加到 $ x_1 $ 或者 $ x_2 $ 這些是製表符或空格,那麼您可以獲得 64 個位置。這使得 $ 2^{64} $ 具有相同含義但可能具有不同雜湊值的消息。這種無形的修改適用於 $ x_1 $ 和 $ x_2 $ .
製成 $ 2^{64} $ 不同的字元串 $ x_1 $ 和 $ x_2 $ 並將它們組合成一組。在這組中,我們預計會發生碰撞。請記住,通過這種方式,我們可能會在 $ x_1 $ (或者 $ x_2 $ ).
現在,奧斯卡想辦法欺騙你。奧斯卡給你發資訊 $ x_1 $ 使用雜湊和簽名範例,您可以驗證它。後來奧斯卡聲稱他們派你來 $ x_2 $ . 他們向您展示了簽名與以前的簽名相同,這裡我們需要解決衝突。
有關在實際攻擊中使用雜湊衝突的其他範例,請參閱此問題;
碰撞攻擊與第二次原像攻擊
在碰撞攻擊中,我們正在查看兩條消息 $ m_1 $ 和 $ m_2 $ 和 $ m_1 \neq m_2 $ 這樣的 $ h(m_1) = h(m_2) $ . 在碰撞攻擊中,攻擊者可以自由選擇散列值,他們只尋找具有相同散列值的兩條消息。這種自由性降低了攻擊成本。碰撞的一般成本是 $ \mathcal{O}(\sqrt{2^{n/2}}) $ -的時間 $ n $ -bit 輸出雜湊函式。
在其他一些場景中,攻擊者需要第二次原像攻擊;給了一條消息 $ m $ 它是雜湊值 $ x=h(m) $ , 查找另一條消息 $ m’ \neq m $ 這樣 $ h(m)=h(m’) $ . 這是攻擊者創建偽造數字簽名(雜湊和簽名)的場景。給定簽名,他們試圖找到另一條消息 $ m’ $ 使得簽名與給定的相同。
二次原像攻擊的兩個通用成本是 $ \mathcal{O}(\sqrt{2^n}) $ -的時間 $ n $ 位散列函式。
正式定義見