Random-Oracle-Model

為什麼 Random Oracle 在實踐中無法實現?

  • April 25, 2017

我不確定我在哪裡讀到的,但我一直認為隨機預言不能在實踐中使用。

然後,我偶然發現了這篇論文,上面寫著:“Random Oracles are Practical: Paradigm for Designing Efficient Protocols”這完全混淆了我的理解

  • 為什麼它們在實踐中不存在?
  • 為什麼我們最終還是要在實踐中使用它們?

我們不使用隨機預言機。它們不實用。我們真正做的是在隨機預言模型之後對我們的理論工作進行建模。

有許多使用散列函式的方案。對於其中一些,我們有安全證明,但僅限於一些特殊情況。例如,填充方案最優非對稱加密填充(OAEP)被證明在選擇明文攻擊下是語義安全的——但僅在隨機預言模型中。OAEP 在使用非對稱密碼加密之前使用散列函式隨機化消息,但如果這些散列函式不安全怎麼辦?它們安全嗎?我們不知道,但可能不會。許多都被破壞了,比如 MD5 或 SHA-1。

如果我們不確定我們的底層算法是否安全,我們如何證明一個方案是安全的?我們不能。這就是我們使用隨機預言機模型的原因。

在隨機 Oracle 模型中,我們只是像往常一樣做所有事情,但是有一種“神奇”算法代表了一種經過驗證的安全、完美的雜湊算法。在實踐中,這並不是真正可行的,因為要使該算法工作,我們需要一個真正的隨機數生成器和一個(幾乎)無限的輸入和輸出值列表。這已經很難做到,但更成問題的是每個使用這個算法的程序/人都必須有權訪問這個數字生成器和列表。那應該怎麼做?很可能有一個接受消息並為它們輸出雜湊的中心位置。但是你將如何確保你的程序和這個中心位置之間的連接呢?將隨機預言機作為算法中的雜湊函式是不切實際的。它’ 就像一次性墊 - 看起來很漂亮,可證明是安全的,除了非常特殊的情況外完全沒用。我們希望對我們的銀行詳細資訊進行快速簡便的加密,而不是確保莫斯科-華盛頓熱線的安全。

我們真正做的只是假裝使用它們。如果我們需要一個安全的散列函式,我們會創建我們的協議並說“這裡我們使用隨機預言機”。現在我們可以嘗試證明我們的協議,有時甚至可以成功。在大多數情況下,這只是因為我們使用了隨機預言機。實際上,我們仍然實現了 SHA-256 或 SHA-3 之類的東西,只是忽略了可能的問題——只要沒有人知道如何破壞我們的雜湊函式,並且它像隨機預言機一樣工作,我們應該保存。擁有證明也有助於排除我們協議本身的錯誤。要麼我們有一個安全方案,要麼雜湊算法有問題。如果沒有證明,也可能會出現一個沒有人想到的小但致命的錯誤。

另請參閱 Matthew Green 的文章系列“什麼是隨機 Oracle 模型以及為什麼要關心? ”。

引用自:https://crypto.stackexchange.com/questions/46886