選擇的純文字和選擇的密文定義說明
我試圖理解 CPA 和 CCA 攻擊的概念,但我無法從定義中得到一件事。
如果攻擊者可以執行 CPA 攻擊,例如*向攻擊者發送 100 美元,*這意味著他將獲得此消息的有效加密。現在根據 CCA 攻擊的定義,對手應該發送另一個不等於剛剛獲得的密文。
是什麼阻止了攻擊者將收到的密文發送給認為這是合法消息的接收者?或者換句話說,為什麼在定義中攻擊者只允許發送其他消息。
這些模型背後的想法是對對手的能力進行建模。為了獲得可靠的安全性,對功能的最壞情況進行建模。讓我們從選擇的明文攻擊 (CPA) 開始:
在這個遊戲中,攻擊者可以訪問加密預言機。這模擬了攻擊者知道(部分)消息的情況。例如,英國人在二戰期間就知道,德國人的資訊總是以“希特勒萬歲”結尾,這就是他們破解加密的原因。現在,正如我所說,我們總是想模擬最壞的情況,所以讓我們假設對手知道整個明文。對於一個好的加密方案,這不應該給他任何優勢。此外,可能有一些消息比其他消息對攻擊者更有利。在這種情況下,一個好的加密方案也應該是安全的。所以,這就是為什麼我們允許攻擊者選擇加密的消息。因此,我們可以確保即使對於最有利的資訊,對手也無法破壞該計劃。
在某些情況下,上述內容可能已經足夠了。但是,有時對手可能會學習某些密文的明文。例如,解密的值可能由攻擊者可以以某種方式訪問的應用程序輸出,或者它們會影響可以觀察到的應用程序的行為。因此,我們可能還想涵蓋這種情況。這導致了針對選擇密文攻擊 (CCA) 的更強安全概念。為了對上述內容進行建模,我們讓攻擊者可以訪問解密預言機。允許對手解密任意密文的動機與上述相同,即建模最壞情況。
這些概念定義了我們稱之為學習階段的東西。它模擬了對手可能能夠了解的有關使用的加密方案和使用的密鑰的內容。然而,對手的目標是攻擊一個他還不知道明文的密文。當然,這是關於一個密文,他無法從上述“側通道”之一中學習明文。這通常以兩種方式之一建模。無論是在語義安全方面,即對手在給定密文的情況下對明文一無所知,或者在密文的不可區分性(IND)方面。幸運的是,這兩個概念是等價的,我將不再談論語義安全,因為解釋細節更複雜。
在 IND 的情況下,攻擊者可以選擇兩種不同的消息。隨機選擇兩條消息之一,攻擊者將收到它的加密。現在對手的目標是告訴他收到了哪個消息的加密。正如我之前所說,我們想要模擬對手無法從旁道了解明文的情況。因此,不允許他向其解密預言機請求解密該明文。
“是什麼阻止了攻擊者將收到的密文發送
給認為這是合法消息的接收者?”
沒有什麼。 $ : $ (在這種情況下,收件人是正確的。)
為什麼“在定義中”是攻擊者“只允許發送另一個”消息?
如果他在看到密文之前就知道這將是向攻擊者發送 100 美元和“在 CCA 攻擊的定義中……不等於剛剛獲得一個”的加密,那麼攻擊者只會讓自己的事情變得不可能挑戰明文是相等的,
即使攻擊者可以發送該
密文,攻擊者仍然不可能,因此允許攻擊者發送該密文不會影響這種情況。
(在 CCA 攻擊中,攻擊者可以將密文
從加密預言機發送到解密預言機。)
另一方面,當挑戰明文不相等(彼此)時,
攻擊者“只允許發送另一個”消息,否則,
定義將無法實現。