CCA下對稱加密的不可區分性
我正在學習對稱加密及其安全屬性。安全概念之一是針對選定密文攻擊 (CCA) 的安全性,特別是 IND-CCA 概念。
在這個概念下,攻擊者可以訪問加密預言機和解密預言機。IND-CCA 遊戲/實驗對對手施加了一個重要限制,即他不能對通過加密明文(從加密預言機獲得)獲得的密文(對解密預言機)進行查詢;否則對手可以輕鬆獲勝
我理解有必要對對手進行限制以使概念形式化。但我不明白這個遊戲/實驗如何模擬現實生活場景。這個概念談論的是現實的哪個方面?
對於剛剛了解 CCA 安全性的人來說,CCA 安全性似乎總是很極端。前提似乎很荒謬,我們為什麼要給攻擊者這麼大的權力?為什麼我們要讓攻擊者解密幾乎所有它想要的東西,並了解整個解密結果?在現實世界中,我們什麼時候才能充當攻擊者的解密預言機?
我喜歡以兩種不同的方式激勵 CCA 安全:
(1) 如果我在一個信封裡寫下一條秘密資訊,而你永遠無法觸摸那個信封,你就無法分辨我的信封裡有什麼。如果我也同意打開世界上任何其他信封會怎樣——這會幫助你弄清楚這個特殊信封裡面是什麼嗎?當然不是。為什麼解密密文#1 中的內容會告訴您密文#2 中的內容?我不想購買具有該屬性的一盒信封,也不想使用具有該屬性的加密方案。
(2) 您可能對 CPA 安全性有類似的保留意見:在現實世界中,我們什麼時候讓攻擊者完全選擇我們加密的內容?這是一個有效的問題,但假設我們有一個不允許攻擊者影響明文選擇的安全定義。然後,每次我們在現實世界中加密時,我們都必須絕對確保明文對任何攻擊者的影響為零——這是我們可以確定這個假設的安全定義適用於我們的情況的唯一方法。
由於這不現實,我們的安全定義必須允許攻擊者至少對正在加密的明文產生一些影響。但它只是沒有做出有用的定義來允許攻擊者對明文的選擇產生一些奇怪的定義部分影響。現實世界中的影響程度在很大程度上取決於具體的應用程序,我們不希望針對一百萬種不同的應用場景使用一百萬種不同的安全定義。最簡單的事情就是 CPA 安全定義所做的事情:我們不妨旨在防止完全選擇加密明文的攻擊者!即使這種對明文的完全對抗性控制並沒有反映單一的在現實場景中,它可以很好地適用於攻擊者對明文選擇有一定影響的所有場景。
類似的情況也適用於解密。你能想像一個網路伺服器接受來自外界的密文,解密那些密文,然後根據解密的結果做一些事情(即如果解密的結果是這個,那麼做這個;否則做那個)?如果這聽起來很自然,那麼您的安全定義必須使攻擊者能夠學習一些東西關於解密的結果,在對抗性製作的密文上。(CPA 定義沒有捕捉到這種情況。)那麼攻擊者應該獲得多少資訊呢?在現實世界中,這個問題的答案在很大程度上取決於特定的應用程序。如果我們想要一個適用於許多現實場景的通用安全定義,那麼該安全定義應該簡單地為攻擊者提供盡可能多的權力。在這種情況下,它應該讓攻擊者隨意解密它想要的任何東西,並了解整個解密結果(除非以明顯使安全遊戲變得瑣碎的方式)。
CCA 安全性並不意味著反映一個單一的現實世界場景,我們將完整的解密預言暴露給攻擊者。相反,它對於攻擊者了解解密對抗生成的密文的結果的任何情況都足夠通用。