從領主到「機器」
講義 p. 24 把兩位領主抽象成兩台機器(machines)\(M_1(\sk,\ik)\) 與 \(M_2(\sk,\ik)\)——文獻中也叫 players、agents、principals、entities——它們共享加密金鑰 \(\sk\) 與完整性金鑰 \(\ik\),來回傳送 \((c_1,\tau_1), (c_2,\tau_2), \ldots\)。通道上另有一個敵手 \(\adv\)。
\((M_1, M_2)\) 通常叫 Alice 與 Bob(源自 Rivest–Shamir–Adleman 1978 年的 RSA 論文)。敵手依能力取名:Eve(eavesdropper,只能竊聽)、Charlie 或 Mallory(malicious,能主動竄改、注入、重放)。文獻中還有 Trent(可信第三方)、Peggy/Victor(零知識證明中的 prover/verifier)等。
兩個通用的安全敘述(講義 pp. 25–26)
若你確定敵手只能竊聽,這個性質在任何場景下都足夠——領主之間、你與朋友、你與銀行、你與記者。這就是定義的「通用性」(generic):同一條敘述不依賴應用的語意。 但講義立刻補一句:「Eve 通常不被視為足夠強的敵手。」在真實網路上,能看到你封包的人幾乎都能改你的封包。
這對應第 [sec:iterations] 節的迭代 (v),也就是 CPA/CCA 安全。
為什麼要用這種框架思考安全?(講義 p. 27)
明確:它明確地賦予敵手能力(\(\dagger\)),並描述敵手能或不能達成什麼(\(\ast\))。沒有含糊地帶。
共享的理解:讓所有人對「安全」有同一個理解,而不是各自依賴模糊(且人人不同!)的英文語意——「這個方案很安全」在沒有定義之前是一句空話。
悲觀而通用:允許我們對敵手悲觀(假設他們比實際上更強),因此證明出來的安全性可以通用地套用到各種場景。如果方案能擋住 Charlie,當然也能擋住 Eve。
延伸補充:安全定義在紙上長什麼樣子——以 MAC 為例
Problem Set 1 會要你比較好幾個 MAC 的安全定義。先看看一個標準定義的「長相」,之後讀題會輕鬆許多。KL-IMC Definition 4.2 把 MAC 的安全定義寫成一個實驗(experiment)\(\mathsf{Mac\text{-}forge}_{\adv,\MAC}\):
產生金鑰 \(\ik \gets \KGen\)。
敵手 \(\adv\) 獲得預言機 \(\Tag(\ik,\cdot)\) 的存取權(\(\dagger\)):可以反覆送入任何 \(m\) 並取得 \(\Tag(\ik,m)\)。令 \(\calQ\) 為 \(\adv\) 查詢過的所有訊息所成的集合。
\(\adv\) 最終輸出一對 \((m^\ast, \tau^\ast)\)。
\(\adv\) 獲勝(實驗輸出 \(1\))若且唯若(\(\ast\)):\(\Vf(\ik, m^\ast, \tau^\ast) = 1\) 且 \(m^\ast \notin \calQ\)。
定義:\(\MAC\) 是安全的(existentially unforgeable under adaptive chosen-message attack,EUF-CMA),若對所有有效率的敵手 \(\adv\),\(\Prob[\mathsf{Mac\text{-}forge}_{\adv,\MAC} = 1]\) 都是可忽略的(negligible)。
注意這個定義如何同時精確地寫出(\(\dagger\))(第 2 步)與(\(\ast\))(第 4 步)。Problem 1 的 就是這個定義的非正式版本。「存在性」(existential)指敵手只要對任何一個新訊息偽造成功就算贏,哪怕那個訊息毫無意義——因為「有意義」是應用層才知道的事,定義不該依賴它。
第一次 tutorial 與 Problem Set 預告(講義 p. 28)
教師邀請同學帶著問題來 tutorial(也可以先寫在 KEATS),可討論的主題包括:安全性質的形式化、「合理」的敵手能力、通訊以外的密碼學、具體的真實世界場景等。 第一份 Problem Set 聚焦於不同場景中的保密性與完整性——也就是本教材第二部分的全部內容。
能說明 Eve 與 Charlie 的差別,以及為何「只防 Eve」通常不夠。
能複述安全定義框架的三大優點(明確、共享理解、悲觀而通用)。
能用(\(\ast\))/(\(\dagger\))的語言讀懂(並寫出)一個以實驗形式呈現的安全定義。