具體來說,什麼是通用可組合性保證?它在哪裡適用,在哪裡不適用?
我沒有接受過適當的電腦科學教育,所以請容忍我的誤解。
UC 應該“保證強大的安全特性”。從我的立場來看,如果你有一些安全協議,比如強大的分組密碼操作模式,你就無法將它與另一個看起來幾乎相同的協議區分開來。但是怎麼做?
假設我使用正常 AES-GCM 作為協議的一部分,並且我還使用了一個協議,該協議僅使用具有相同密鑰大小的 AES-GCM 變體,但使用單輪而不是 10+?或者也許是一個非常弱的分組密碼,專為破解而設計?
設想
假設 Alice 和 Bob 在不安全的通道 X 和 Y 上建立了通信。他們使用名為 PX 和 PY 的協議。Eve 可以在這兩個頻道上收聽。通道由兩部分組成:由 Alice 控制的磁帶和由 Bob 控制的磁帶,但可以被任何機器寫入。由於有兩個通道,因此涉及 4 個磁帶。
PX 與 PY 幾乎相同,只是它們使用不同的分組密碼。然而,從技術上講,我們可以說它們是不同的協議。Eve 無法區分一種協議和另一種協議,因為一切都是在傳輸過程中加密的,並且 Eve 只是在 Alice 和 Bob 交換了 Diffie-Hellman 參數並創建了會話密鑰之後才開始竊聽(沒有發生 MITM 攻擊,因為參數是由一些 TTP 簽名和認證的)。
通用可組合性聲明(如果我錯了,請糾正我)如果 Alice 和 Bob 和 Eve 是 Eve 的圖靈機,則能夠攔截寫入 Alice 或 Bob 的磁帶的新符號(但不能“有效地”寫入它們*,因為這樣做要求存在偽造是可能的),並且Eve 無法區分在任一通道上製作的符號是否由 PX 或 PY 的規則定義,並且 PX 和 PY 之一是可證明安全的,那麼PX 和 PY 都是安全的。
問題
然而,PY 使用了非常弱的分組密碼,儘管兩者的流量無法區分**。**Eve 可以輕鬆破解 PY 符號的密鑰。通過嘗試對兩個通道進行蠻力攻擊,其中一個在多項式時間內成功。**這不違反UC嗎?
*“有效地”意味著,雖然 Eve 可以在 Bob 的磁帶上寫一堆符號並假裝是 Alice,但 Bob 可以很容易地將假符號與來自 Alice 的符號區分開來。
**是否有可能使某些東西易碎但無法區分?我在這裡做了一個邏輯上的飛躍,這可能是不正確的。
不同的安全保障
在安全證明中,您可以獲得幾個關於協議安全性的保證。最有名的可能是以下幾個:
- 基於遊戲的安全性
- 順序可組合安全
- 一般可組合安全性(順序+並行組合)
基於遊戲的安全性
您可以獲得的較弱保證是基於遊戲的保證。在這裡,您指定了一場比賽,通常是在挑戰者和對手之間,而對手的目標是贏得比賽。如果沒有多項式有界的對手可以贏得這場比賽,你會說該協議是安全的。該模型的第一個問題是您只能指定您希望協議尊重的特定屬性,但很難考慮您希望協議尊重的所有可能屬性。
例如,假設您想在 Alice 和 Bob 之間傳輸一條消息,並確保 Bob 不知道 Alice 發送給 Bob 的消息。然後,您可以想像以下游戲:
- 挑戰者(扮演 Alice 的角色),選擇一條隨機消息 $ m $ 在所有長度的消息上均勻隨機 $ n $ ( $ n $ 是“安全參數”)。它加密消息並發送此密文 $ c $ 給對手。
- 對手(扮演惡意夏娃的角色),收到密文 $ c $ 並輸出一條消息 $ \tilde{m} $ 給挑戰者。
- 挑戰者說如果對手獲勝 $ m = \tilde{m} $
然後我們可以說,如果沒有對手能夠以不可忽略的機率贏得這場遊戲,那麼加密方案是安全的 $ n $ ,即如果存在可忽略的函式 $ f $ 這樣對於所有對手: $$ \Pr[ m = \tilde{m} ] \leq f(n) $$ 為簡單起見,我們將其寫為: $$ \Pr[ m = \tilde{m} ] \leq negl(n) $$
這個遊戲看起來很自然,但它很不完美。事實上,它表明沒有對手可以完全學習 $ m $ 給定 $ c $ 什麼時候 $ m $ 在所有長度的消息上隨機均勻採樣 $ n $ . 但對手完全有可能了解大量關於 $ m $ !例如,他有可能學習第一個 $ n/2 $ 消息的位:只考慮不接觸第一個的愚蠢的加密算法 $ n/2 $ 消息的位,並用一次性墊最後一次完美加密 $ n/2 $ 位。根據上面的遊戲,這個加密方案是安全的,但是沒有人會聲稱這個方案是完全安全的,因為它洩露了一半的資訊!
還有一個問題:在這個特定的博弈中,對手無法選擇用於採樣的分佈 $ m $ . 例如,如果您知道交換的消息始終是
YES
或NO
,並且該方案有一點問題,並且將所有YES
消息映射到 $ 0\dots 0 $ 字元串(而所有其他消息都完全加密),那麼這個加密方案幾乎是完全安全的……但在實踐中完全沒用。由於該屬性,這意味著當協議組合成更大的協議時,您通常對協議的安全性沒有任何保證,因為輸入通常來自可以由對手控制的其他協議。然後人們試圖想出提供更多保證的遊戲(參見 CPA、CCA、CCA2 證券)……這只是為了加密。然後對於所有其他原語(簽名、委託計算、身份驗證……),您需要重新定義您想要擁有的所有遊戲,並確保您沒有忘記任何可能對協議的安全性至關重要的屬性. 我想像遊戲的方式有點像你可以畫出的一些“線”來劃定協議的安全性:大致了解遊戲的安全性很好,但很難確定你沒有忘記任何屬性都可以真正減少所有可能的攻擊。
所以總結一下這個部分:
基於遊戲的安全性的優點:
- 在這種安全模型中,證明很簡單
基於遊戲的安全性的缺點:
- 很難很快看出我們對協議有什麼保證:遊戲可能非常具體,並且與特定的攻擊形式相關聯
- 當協議被組合成其他協議時,我們通常沒有保證
順序和並行可組合性
然後,為了避免這些問題,人們開始定義“基於仿真”的安全模型,以保證該協議在組合成其他協議時可以安全使用,或者與其他協議同時使用。通常,您可以編寫協議:
- 一個接一個:它被稱為“順序組合”
- 同時:稱為“平行構圖”
一些安全模型(如獨立模型)在協議一個接一個地組合(即在順序組合下)時提供保證,而其他安全模型在順序和並行組合下(即“通用組合性”)目標安全。這是通用可組合性 (UC) 模型的情況,也是構造密碼學 (CC) 模型(又名抽象密碼學模型)的情況。
所有這些模型在精神上都非常相似,並且都是“基於模擬的”(稍後您會明白為什麼)。我將在這裡主要關注 UC 和 CC,但獨立模型也非常相似。請注意,我不想詳細說明 UC 是如何根據圖靈機、通道定義的……因為我認為它並沒有真正增加任何重要的東西,而且我認為它主要是令人困惑的實現細節。因此,UC 和 CC 模型在那個抽象級別上非常相似(對我來說,CC 是 UC 的一種泛化,其中計算模型沒有明確指定並且可以以不同的方式實例化,例如使用圖靈機,但也與量子機器……)。所以在這裡,我們只是假設有一些政黨和一些神諭,
所以首先,我喜歡將它們視為基於遊戲的模型的“特例”,除了我們強制遊戲具有非常特定的形狀,這使我們能夠對安全性有更強的保證,因為添加了一個模擬器. 所以我們之前擁有的兩個實體仍然存在:
- 我們在基於遊戲的安全部分中定義的對手現在稱為“環境”(在 UC 中)或“區分者”(在 CC 中)。UC 模型還描述了他們稱之為對手的東西,但實際上可以通過將它們替換為所謂的“虛擬對手”來擺脫它們,這只是將所有內容轉發到環境中。
- 挑戰者將在後面介紹,基本上其他一切都將成為挑戰者的一部分
最重要的是,“遊戲”將以一種非常特殊的方式進行描述。我們確實將介紹理想功能(在 CC 中稱為“資源”),它應該是我們協議的完美、理想版本,即理論上的瑣碎/資訊安全版本(注意:正如評論中所指出的,理想功能是更準確地說,我們對安全性的“定義”,即我們想證明我們的協議至少與我們的理想功能一樣安全,從某種意義上說,如果您可以在實際協議中學習一些資訊,您就可以在理想協議。然而,大多數時候我們對理想功能感興趣,其屬性(即哪些資訊可以從攻擊者那裡學習或不能從攻擊者那裡學習)很容易檢查,那 這就是為什麼我這樣做並說理想功能是“理論上安全的資訊”的原因。我在本文末尾的評論中詳細說明了這一點)。然後,如果存在一個“偽裝”理想功能使其與真實協議無法區分的模擬器,那麼我們將說該協議相對於該理想功能是安全的。這樣,任何可以在真實協議(也稱為“現實世界”)中進行的攻擊也可以在理想協議(也稱為“理想世界”)中進行……這是不可能的,因為它的資訊在理論上是安全的!然後,如果存在一個“偽裝”理想功能使其與真實協議無法區分的模擬器,那麼我們將說該協議相對於該理想功能是安全的。這樣,任何可以在真實協議(也稱為“現實世界”)中進行的攻擊也可以在理想協議(也稱為“理想世界”)中進行……這是不可能的,因為它的資訊在理論上是安全的!然後,如果存在一個“偽裝”理想功能使其與真實協議無法區分的模擬器,那麼我們將說該協議相對於該理想功能是安全的。這樣,任何可以在真實協議(也稱為“現實世界”)中進行的攻擊也可以在理想協議(也稱為“理想世界”)中進行……這是不可能的,因為它的資訊在理論上是安全的!
現在,我們有了定義“挑戰者”的所有要素:挑戰者將擲硬幣,並且有機率 $ 1/2 $ 它將讓對手(即環境/鑑別者)與現實世界進行互動,並且有機率 $ 1/2 $ 它將與理想世界互動(由理想功能+模擬器組成)。最後,對手(即環境/鑑別者)需要告訴挑戰者它是在與現實世界還是理想世界互動。如果沒有計算限制的對手作為贏得這場比賽的顯著優勢,則該協議被認為是安全的,即如果贏得比賽的機率是 $ \leq 1/2 + negl(n) $ .
例如,如果你想談論一個完全安全的通道(不能被竊聽器修改,並且只洩露消息的大小),你可以定義一個理想的功能如下:
理想功能的左側“介面”屬於 Alice,右側介面屬於 Bob,底部介面屬於潛在惡意 Eve。如您所見,從圖片中可以清楚地看出,除了消息的大小之外,沒有 Eve 可以學到任何其他東西 $ m $ 只能訪問底部界面。
現在,我們想說我們的協議至少和這個 Ideal Ressource 一樣安全(以我們考慮計算安全的事實為模)。所以首先,讓我們定義我們的協議。在這裡,為了簡單起見,我們假設我們已經有一個經過身份驗證的通道,即我們有一個實現以下理想功能的協議: 除此之外,我們還假設我們有一個分發密鑰的協議:
然後,這個想法只是加密輸入 $ m $ (例如使用 One Time Pad 算法,或者如果您願意,可以嘗試查看它是否適用於 AES-GCM 算法)使用密鑰 $ k $ ,並將密碼放入經過身份驗證的通道中。Bob 將能夠解密它:
現在,為了證明安全性,我們需要找到一個將理想功能偽裝成該協議的模擬器(為簡單起見,這裡我們認為 Alice 和 Bob 是誠實的,但在 UC 中,您需要證明所有可能的損壞使用者的子集,並且您可以根據誰被破壞/惡意定義不同的理想功能)。如果我們假設 $ E_k(m) $ 具有相同的長度 $ m $ 並且看起來像一個統一的隨機字元串(這是一次性加密的情況),那麼模擬器是微不足道的:它只是生成一個大小的隨機字元串 $ |m| $ .
然後很容易一次性證明沒有環境/辨識器可以區分最後兩張圖片(即在現實世界和理想世界之間),因為對於任何 $ r $ 我們可以找 $ k $ 這樣 $ r = m \oplus k $ ,並且所有這些鍵都是等機率的。如果你考慮 AES 或其他加密方案,那麼你需要證明如果環境/區分器可以區分兩個世界,那麼你可以使用區分器來打破一個硬度假設。
現在,您可能想知道為什麼它是強大的安全保證。您可以看到的第一件事是,如果您對現實世界進行攻擊(例如,您可以提取 $ m $ 可以訪問 $ E_k(m) $ 在 Eve 界面上),那麼你可以在理想世界上做同樣的事情:所以你可以提取 $ m $ 可以訪問與完全無關的隨機字元串 $ m $ . 或者,如果您考慮“環境/鑑別器+模擬器”塊,您設法提取 $ m $ 只能訪問大小 $ m $ ……不可能吧?;-) 所以這意味著不存在在現實世界中可能但在理想世界中不可能的攻擊,即現實世界至少與理想世界一樣安全。因此,我們可以像這樣繼續我們的圖片:
然後,您會看到可組合性是“免費的”。實際上,如果您可以通過並行或順序執行另一個協議來攻擊該協議,那麼您可以將該協議集成到您的環境/鑑別器中,並使用它直接攻擊第一個協議。
並回答OP的問題
畢竟,我仍然沒有直接回答你的問題。因此,首先您的問題並不完全有意義,因為您通常將理想功能與現實世界的協議進行比較,而在您的問題中,您會比較兩個現實世界的協議。但是,確實,如果 Eve(或者更確切地說是環境/鑑別器)可以破壞您的弱加密方案(我們可以繼續上面的範例),那麼它很容易恢復 $ m $ 給定 $ E(m) $ 在現實世界中,並檢查它是否確實對應於 $ m $ 作為輸入給愛麗絲。現在,在理想的世界裡,如果它顛倒了資訊 $ r $ ,它會找到一條消息 $ m’ $ , 但這種情況不太可能 $ m’ $ 將匹配 $ m $ 他給了愛麗絲。所以環境/鑑別者可以很容易地區分理想世界和現實世界:它試圖反轉他在頻道上看到的資訊,並檢查它是否與 $ m $ 送給愛麗絲。如果沒有,那就說明它在和理想世界對話!因此,不可能證明弱加密方案的 UC 安全性 ;-)(這樣就回答了您的最後一個問題
Does this not violate UC?
::是的,它確實違反了 UC。:Is it even possible for something to be breakable yet indistinguishable
不)因此,通常認為 UC 證明比通常的基於遊戲的證明強得多。但是,它們的證明難度要大得多,並且存在相當多的不可能性結果。
另外,最後一條評論:您說“只用幾輪就採用弱 AES”,實際上,因為它不安全,所以它不能是 UC。但是你可能想知道“如果我們添加一輪會發生什麼?兩輪?和 10 輪?什麼時候開始回到 UC?”。所以通常人們考慮漸近安全,即他們採用安全參數 $ n $ (它可能與 AES 的輪數、密鑰的大小……),看看會發生什麼 $ n $ 走向無窮大。然後,他們說如果區分機率小於該協議是安全的 $ 1/2+f(n) $ , 對於某些函式 $ f $ 可以忽略不計,即比任何多項式都更快地收斂到 0。因此,如果我們固定密鑰的大小和執行次數,說 AES 是 UC 安全是沒有意義的,因為在恆定時間內你可以破壞它(也許它是一個巨大的常數,但仍然獨立於 $ n $ )。但是您可以談論 AES 的 AC 安全性,其中執行次數為 $ n $ 並且密鑰的大小是 $ n $ . 我們之所以喜歡漸近安全性,也是因為在那個體制下,如果一個任務
A
很容易做,如果一個任務B
也很容易,那麼你也可以很容易地完成這兩個任務A
,B
甚至重複它們多項式次數。如果你不在漸近狀態,那麼你就沒有這個很好的穩定性屬性:如果任務A
可以在不到 100 年的時間內在一台電腦上完成(一生),如果任務B
可以在不到 100 年的時間內完成一台電腦上幾年,那麼在一台電腦上A
可能B
不會在不到 100 年的時間內一起完成。我希望這將幫助您了解 UC/AC 背後的內容!
關於計算安全的理想功能的評論(劇透:並不比基於遊戲的安全性更好)
同樣,正如評論中所指出的,我們的理想功能更準確地說是我們對安全性的定義(即協議至少與理想功能一樣安全)。所以在實踐中,可以證明一個協議實現了完全破壞的理想功能(所以僅僅說“該協議是 UC 安全的”並不足以聲稱該協議的安全性,還必須檢查理想功能是否確實有意義) ,或者我們可以選擇將我們的理想功能定義為“看起來安全”,即僅在計算上是安全的(例如,可以想像理想功能會洩露一些加密)。但是,我的主張是,這種計算安全的理想功能並不是很有幫助:
- 首先,安全性很難量化計算安全的理想功能。例如,如果我們考慮洩漏消息加密的理想功能,那麼第一個問題將是“我可以從這個密文中學到什麼”。然後,您需要爭論為什麼這種洩漏很好,因此您需要定義一些難以獲勝的遊戲……因此,在這種情況下,使用可模擬安全性優於基於遊戲的安全性並沒有明顯的好處,因為相反定義遊戲以量化協議的安全性,您需要定義遊戲以量化理想功能的安全性(即問題只是從協議轉移到理想功能)。請注意,如果理想功能是理論上安全的資訊,
- 定義特定於給定協議的計算安全的理想功能非常容易(一種簡單的方法是簡單地採用與協議本身相對應的理想功能)。但是,如果您的理想功能過於具體(例如,因為它在內部硬編碼給定的加密功能……),使用可組合安全框架的好處就會減弱:當您將協議用作更大協議中的子協議時,由於現有文獻不太可能考慮您非常具體的功能,因此您需要從頭開始對任何此類大型協議進行完整的安全分析。這基本上就是您在基於遊戲的安全性中所做的事情。
- 我也不知道有一篇論文定義了這種計算安全的 Ideal Functionality。當然,我不知道所有論文,但我想這仍然表明人們並沒有真正考慮它們。
- 最後,我認為基於模擬的安全性的一個重要興趣是盡可能抽象協議並提高其模組化:這是非常優雅的,並且具有計算安全的理想功能與該抽象背道而馳。
我可以看到考慮計算安全的理想功能的唯一優勢是提供對協議要求的更簡單概述,但我什至不相信。
出於所有這些原因,我認為擁有計算安全的理想功能並不比擁有基於遊戲的安全性更好。
請注意,也存在這樣的情況,即不可能擁有理論上安全的理想功能,但有可能擁有計算安全的理想功能和基於遊戲的安全性。參見例如這篇論文(免責聲明,最後一篇論文是我的一篇論文(並且是量子論文),請參見第 3.4 節了解計算安全、不令人滿意的理想功能以及簡短的類似討論)。對於大多數不可能的結果,您應該能夠得出類似的結果,包括UC 安全承諾協議的不可能,我只是認為他們甚至不費心定義理想功能的計算版本(例如,可能是任何承諾協議的精確複製/粘貼)。