本文將介紹密碼學中的PRF、PRP等相關概念,並介紹 PRP/PRF 轉換引理及其證明,希望讀完本文後,你能對現代密碼學中這幾個基礎概念有所瞭解。
在開始本文前,希望你有如下預備知識:
- 現代密碼學是怎樣的一門學科?
- “Security Through Obscurity” 是什麼意思?
- 集合、極限、函式、隨機變數、取樣等數學概念是什麼?
概述
在之前的一篇部落格中提到,偽隨機性是現代密碼學的根基,每一個密碼演算法都需要有這樣的偽隨機性來源。而偽隨機數發生器只是一個承載偽隨機性的初等原語,其數學性質和模型都太樸素,不足以幫助我們構建更復雜的演算法結構。
而偽隨機函式的出現,對「如何將隨機性這個特點與函式的輸入輸出結合?」這一問題給出了嚴格的數學定義與描述方法。這為各位密碼學家們提供了一個很強的模型。進一步地,偽隨機置換則在此基礎上,引入了「對映可逆」的概念,從而豐富和細化了PRF的抽象能力。
這篇部落格將依次介紹偽隨機數發生器(PRNG)、偽隨機函式(PRF)、偽隨機置換(PRP),並給出大名鼎鼎的 PRF/PRP 轉換引理及其證明。
PRNG
偽隨機性之於現代密碼學的重要性在之前的部落格中已經為大家介紹過了,而作為偽隨機性的載體,偽隨機數發生器(Pseudorandom Number Generator,PRNG)的定義重新陳述如下:
令\(G\)為一多項式時間演算法,其輸入為\(s\in \{0, 1\}^{n}\),即為一長度為\(n\)的01位元串,輸出的長度記作\(l(n)\)。其中,\(l(\cdot )\)也為一多項式時間演算法,\(l(n)\)則表示是\(n\)的多項式界(如 \(n^{2}\)、\(n\))下的一個數值。若\(G\)為一PRNG,則應同時滿足如下兩個條件:
- 對於任意的\(n\),都有\(l(n) > n\);
- 若此時對於任意一具有多項式資源的敵手\(\mathcal{A}\),都存在一個可忽略(negligible)的概率 $\epsilon $,使得下式成立:
PRNG作為偽隨機性最直觀的抽象模型,示意圖如下圖所示。
可以看到,PRNG在演算法構建上的表現力似乎還不是很強。例如,\(G(s)\)作為PRNG的輸出,但這和一個密碼演算法到底有啥關係?生成金鑰?可一個演算法又不只有金鑰,還有輸入輸出呢!因此,PRNG作為一個初等原語,其抽象能力還是有些弱,這就需要表達能力更強的原語了。
PRF與PRP
PRF
偽隨機函式(即 Pseudorandom Function, PRF)與PRNG相比,多了對輸入輸出的描述,而這正是「函式」的意義。在介紹PRF之前,首先介紹隨機函式。
隨機函式
對於將\(n\)位位元串\(\{0, 1 \}^{n}\)對映到\(n\)位位元串\(\{0, 1 \}^{n}\)的所有函式組成的函式族\(\mathcal{F}\),一個隨機函式\(f\)是指在\(\mathcal{F}\)中以均勻隨機取樣的方法選擇得到的一個函式,即有\(f \stackrel{rnd} \in \mathcal{F}\).
在該函式族中,一個函式相當於給出了一種\(2^{n}\)個\(n\)位元長的串的排列,那麼整個函式族的大小即為\(2^{n\cdot 2^{n}}\)。這是一個指數級別的計算規模,因此即使存在一個多項式資源的敵手或區分器,他也無法在多項式時間內建模某個隨機函式\(f\)的對映方式。
偽隨機函式
PRF的正式定義如下:
對於一類帶金鑰的函式\(F\),有\(F: \{0,1\}^{*} \times \{0, 1\}^{*} \rightarrow \{0, 1\}^{*}\),即\(y \leftarrow F(k, x)\),其中\(x\)為輸入,\(k\)為金鑰,\(y\)為輸出。若稱\(F\)為PRF,則可滿足以下條件:
- 高效計算:給定\(k\)與\(x\),存在高效的多項式時間演算法能計算\(y=F(k, x)\);
- 不可區分:隨機選定金鑰\(k\),偽隨機函式\(F(k, \cdot)\)與一隨機函式\(f(\cdot)\)是不可區分的;
- 長度保留:\(y、x、k\)的長度均為\(n\);該性質是非必需的。
可以看到,PRF的性質和很多密碼演算法都有共性了:接收一個輸入,返回一個看起來是隨機輸出的函式,而這種偽隨機性來自於金鑰,只要金鑰\(k\)不被敵手獲取,\(F(k, x)\)的對映性質就無法被建模或攻破。因此,在有些地方,PRF會被定義成「在函式族\(\mathcal{F}中\),由金鑰\(k\)作為索引的隨機函式」,記作\(F_{k}(\cdot)\)。
綜上,兩種PRF定義都可以用上面的示意圖來表示。而不論哪種定義,PRF都會涉及金鑰、輸入、輸出三個要素,這正好可以與常見的密碼演算法是相同的,訊息認證演算法就是一種PRF,對稱加密演算法在廣義上也是一種PRF。在PRF的模型下,我們似乎可以刻畫出更多的安全性質,例如輸出的不可區分性,輸出的單向性等等。PRF豐富了偽隨機性的範圍和尺度,讓其能更好地貼合人們的直覺。
儘管PRF能幫助我們抽象不同的密碼演算法,但是卻不能很好地刻畫輸入與輸出之間的對映關係。沒錯,藉助PRF的確能構建出\(x\)到\(y\)的對映關係,但對加解密演算法而言,\(x\)與\(y\)之間需要是嚴格的雙射。因此,為進一步加強PRF對這類「可逆」密碼演算法的表現能力,一種新的原語出現了。
PRP
偽隨機置換(即 Pseudorandom Permutation,PRP)與PRF相比,多了對\(x\)到\(y\)對映關係可逆的要求,而這也是「置換」的意義。同樣地,此處將先介紹隨機置換。
隨機置換
對於將\(n\)位位元串\(\{0, 1 \}^{n}\)對映到自身的所有置換組成的置換族\(\mathcal{P}\),一個隨機置換\(p\)是指在\(\mathcal{P}\)中以均勻隨機取樣的方法選擇得到的一個置換,即有\(p \stackrel{rnd} \in \mathcal{P}\).
同理,由於置換一定是雙射的,因此該置換族的大小等價於所有輸出的全排列數量,即為\((2^{n})!\);但這同樣是一個遠大於多項式(super poly)級別的計算規模,因此即使存在一個多項式資源的敵手或區分器,他也無法在猜出或建模出某個隨機置換\(p\)的對映方式。
偽隨機置換
PRP的正式定義如下:
對於一類帶金鑰的置換\(P\),有\(P: \{0,1\}^{*} \times \{0, 1\}^{n} \rightarrow \{0, 1\}^{n}\),即\(y \leftarrow P(k, x)\),其中\(x\)為輸入,\(k\)為金鑰,\(y\)為\(x\)對應的置換後結果。若稱\(P\)為PRP,則可滿足以下條件:
- 高效計算:給定\(k\)與\(x\),存在高效的多項式時間演算法能計算\(y=P(k, x)\);給定\(k\)與\(y\),存在高效的多項式時間可逆演算法能計算\(x=P^{-1}(k, y)\)
- 不可區分:隨機選定金鑰\(k\),偽隨機置換\(P(k, \cdot)\)與一隨機置換\(p(\cdot)\)是不可區分的;
- 長度保留:\(y、x\)的長度均為\(n\)。
可以看到,與PRF相比,PRP的定義實質上就是將原來的「函式」變為「置換」,即\(x\)與\(y\)此時位於同一概率空間中,之間的對映關係為雙射,示意圖如下圖所示。PRP對於那些具備逆運算的密碼演算法而言,能更好地描述輸入和輸出之間的可逆對映關係,因此更適合用於刻畫加解密演算法時。至此,現代密碼學中三個非常重要的原語已經全部介紹完畢。
不可區分性
上文介紹PRF與PRP時,未闡述究竟是如何不可區分的,但這一性質實際上是密碼學計算安全性的核心,本節將予以重點介紹。
PRF的不可區分性
一個長度保留的、可高效計算的PRF \(F_{k}(\cdot)\)的不可區分性表示為,對於任意的具有多項式規模資源的敵手\(\mathcal{A}\),都存在一個可忽略的極小概率\(\epsilon(n)\),使得下式成立:
其中\(\epsilon(n)\)是指與長度引數\(n\)相關的一個可忽略概率,例如\(\frac{1}{2^{n}}\);\(\mathcal{A}^{F_{k}(\cdot)}(1^{n})=1\)以及\(\mathcal{A}^{f(\cdot)}(1^{n})=1\)分別表示敵手\(\mathcal{A}\)在未知當前函式是\(F_{k}(\cdot)\)或\(f(\cdot)\)的條件下,正確猜出了這個函式是什麼。\(1^{n}\)表示函式引數規模為\(n\)。因此,式(2)可以寫作:
實際上,敵手\(\mathcal{A}\)在辨別當前函式是誰的這種情景,在現代密碼學的語義下,通常稱敵手\(\mathcal{A}\)與一個寓言機(Oracle)\(\mathcal{O}\)進行詢問(query)遊戲(Game),\(\mathcal{O}\)的內部可能是\(F_{k}(\cdot)\)或\(f(\cdot)\)。而根據每次詢問\(\mathcal{O}\)返回的輸出,\(\mathcal{A}\)最終輸出對\(\mathcal{O}\)的猜測結果。示意圖如下所示。
如圖所示,敵手\(\mathcal{A}\)在與\(\mathcal{O}\)詢問若干次後,若能正確判定自己面前的這個\(\mathcal{O}\)的內部究竟是一個偽隨機函式還是一個隨機函式,那就稱\(\mathcal{A}\)攻破了PRF的不可區分性。換言之:
-
當敵手能輕易區分何時是PRF,何時是隨機函式時,說明敵手攻破PRF的優勢足夠大;
-
當敵手對這二者是不可區分時,說明敵手攻破PRF的優勢很小。
因此,敵手的這種區分能力其實就是敵手攻破PRF的優勢,那麼式(2)還可以寫作:
其中,\(\mathrm{Adv}_{\mathcal{O}}^{PRF}(\mathcal{A})\)即為敵手\(\mathcal{A}\)面對寓言機\(\mathcal{O}\)時進行不可區分實驗的優勢。
PRP的不可區分性
一個長度保留的、可高效計算的PRP \(P_{k}(\cdot)\)的不可區分性表示為,對於任意的具有多項式規模資源的敵手 \(\mathcal{A}\),都存在一個可忽略的極小概率 \(\epsilon(n)\),使得下式成立:
同理,\(\mathcal{A}^{P_{k}(\cdot)}(1^{n})=1\)以及\(\mathcal{A}^{p(\cdot)}(1^{n})=1\)分別表示敵手\(\mathcal{A}\)在當前的寓言機\(\mathcal{O}\)的確是\(P_{k}(\cdot)\)或\(p(\cdot)\)的條件下,正確猜出了這個置換是什麼。示意圖如下圖所示。
在PRP不可區分實驗中,引入敵手的優勢改寫式(3)如下:
PRP/PRF轉換引理與證明
這個引理能做什麼?
一個安全的加解密演算法\(\mathcal{E}=(E, D)\)可以抽象成一個實現了PRP的寓言機。由於在對稱演算法的設計中,\(E\)與\(D\)的演算法結構通常是對合的(Involution)。因此在證明\(\mathcal{E}\)的安全性時,只考慮加密演算法\(E\)即可。這時,如果\(E\)是安全的,則既可被證明是一個PRP寓言機,也可被證明是一個PRF寓言機。證明\(E\)的安全性,也就是回答下面兩個問題之一:
-
能否證明\(E\)是一個PRP(即\(\mathrm{Adv}_{E}^{PRP}(\mathcal{A})\)是否為可忽略的?)
-
能否證明\(E\)是一個PRF(即\(\mathrm{Adv}_{E}^{PRF}(\mathcal{A})\)是否為可忽略的?)
而許多時候,PRP所代表的這種「置換」模型的安全性並不利於證明工作的推進,如果將其歸約到PRF這種更符合一般數學直覺的「函式」模型上,概率空間的定義、碰撞事件等問題都可以在函式的框架下進行計算和討論,這為證明的抽象和表示帶來了方便。
因此,在加解密演算法尤其是分組密碼的安全性證明中,該引理能將證明工作的重心轉換到更為熟悉和直觀的「函式」模型上。
PRP/PRF轉換引理
鋪墊了這麼多,終於該介紹這個轉換引理的內容了。
令\(\mathcal{A}\)為一具有多項式資源的敵手,\(\mathcal{A}\)對寓言機\(\mathcal{O}\)最多能進行\(q\)次詢問,\(\mathcal{O}\)內部可能實現了一個隨機函式\(f\),也可能實現了一個隨機置換\(p\)。對於整數\(n \ge 1\),則下式[1]成立:
通常,我們認為敵手不會傳送兩次相同的詢問。若考慮到敵手優勢的定義,則有:
因此該引理還有另外一種寫法[2]:
這兩種形式均是正確的,使用時可根據上下文需求選擇。可以看到, 式(4)表示敵手區分隨機函式和隨機置換的優勢是一與詢問次數\(q\)和\(n\)有關的值;當\(n\)取較大值如128時,這一上界\(\frac{q(q-1)}{2^{n+1}}\)變成為了可忽略的值,即當演算法規模相對詢問次數足夠大時,敵手的區分能力將會很快減弱。
引理證明
為證明這一引理,我們定義事件 \(\mathrm{Coll}\) 為:當敵手\(\mathcal{A}\)提交不同的輸出\(x_{i},x_{j}\)給寓言機\(\mathcal{O}\)後,\(\mathcal{O}\)返回了相同的輸出\(y\)。而事件 \(\mathrm{Dist}\) 為\(\mathrm{Coll}\)的補集,即 \(\mathrm{Pr[Dist]}=1-\mathrm{Pr[Coll]}\). 首先,我們說明這一結論:
式(6)說明,當敵手的查詢結果未發生碰撞時,敵手是無法區分一個隨機函式和一個隨機置換的。回顧PRF與PRP的定義,二者最大的區別就在於輸入與輸出所定義的概率空間不同。在PRP這種「置換」定義下,輸入與輸出為同一概率空間,這也就暗含了輸入元素和輸出元素必然為一一對應的雙射關係;而在PRF這種「函式」定義下,輸入與輸出為不同空間,此時多個輸入可能對應同一輸出。
因此,如果已經先驗地確定了輸出不會發生碰撞,那麼函式寓言機將「看起來」與置換寓言機完全一樣,從而式(6)成立。這一結論的其他更嚴格的證明可參照xxx。
當式(6)成立時,令\(x=\mathrm{Pr}[\mathcal{A}^{p(\cdot)}(1^{n})=1] = \mathrm{Pr}[\mathcal{A}^{f(\cdot)}(1^{n})=1 | \mathrm{Dist} ]\),令\(y=\mathrm{Pr}[\mathcal{A}^{f(\cdot)}(1^{n})=1 | \mathrm{Coll}]\),根據全概率公式,可得以下結論:
式(7)的推導說明了此時敵手\(\mathcal{A}\)的區分能力不會超過 \(\mathrm{Coll}\) 事件的發生概率,也就意味著「除非讓\(\mathcal{A}\)在不同的詢問中獲得了相同的結果,否則\(\mathcal{A}\)是不可能知道這是一個隨機函式還是一個隨機置換的」。這個結論在直覺上也是符合「函式」與「置換」的定義的。
因此,\(\mathrm{Coll}\) 事件若發生,則說明\(\mathcal{A}\)在提交的\(q\)次詢問中,\(\mathcal{O}\)有兩次選取了同一個\(y\)進行返回,由於函式模型下的\(\mathcal{O}\)是沒有記憶性的(類似古典概型中的小球取出會放回),因此返回同一個\(y\)發生的概率是\(\frac{1}{2^{n}}\)。另一方面,\(q\)次詢問一共會產生\(\binom{q}{2}\)個\((x_{i}, x_{j})\)組合對。綜上可知,\(\mathrm{Pr[Coll]}\le \binom{q}{2}\frac{1}{2^{n}}=\frac{q(q-1)}{2^{n+1}}\). 證畢。
不同的界
其實,在許多地方,式(4)(5)的不等式上界會寫為\(\frac{q^{2}}{2^{n+1}}\),即為[3]:
由先前的證明過程可知,上界\(\frac{q(q-1)}{2^{n+1}}\)若能成立,則自然蘊含\(\frac{q^{2}}{2^{n+1}}\)也是成立的。因此兩種版本的引理公式均是正確的。在許多論文中,式(8)其實是更常見的寫法,這是因為平方式的形式更利於表達和記憶。兩種上界之所以能共存,是由於前者更嚴密(tight),後者更好記,在使用時按需選擇即可。
關於這一不同的上界,更多資訊可以參見這一解答
總結
PRP/PRF轉換引理其實只是許多複雜證明的第一步,但其「只要沒碰撞,敵手就分不出來」這一核心思想在對稱演算法的證明中卻十分重要。該引理說明了如果一個加密演算法是PRP,那它必然也是一個PRF,這一基礎推論應能在證明中靈活應用。此外,如果見到上界不同的兩個引理版本,請不要驚慌,兩個版本都是正確的,可按需使用。最後,本文的所有重點總結如下:
-
PRF與PRP的定義和性質
-
不可區分性的本質
-
PRP/PRF轉換引理內容
-
碰撞事件的內涵及其概率計算
感謝你的閱讀,歡迎給出建議,以一句歌詞作為結束。
“勞斯難面對,卻跟她勾過手指;萊斯,偏偏那樣痴” —— 黃偉文《勞斯·萊斯》
參考
[1] https://eprint.iacr.org/2004/331.pdf
[2] https://crypto.stanford.edu/~dabo/cs255/lectures/PRP-PRF.pdf
[3] https://crypto.stanford.edu/~dabo/cryptobook/BonehShoup_0_5.pdf