康步榮,張 磊,張 蕊,孟欣宇,陳 桐
1(軟硬件協(xié)同設(shè)計(jì)技術(shù)與應(yīng)用教育部工程研究中心(華東師范大學(xué)),上海 2000 62)
2(華東師范大學(xué) 軟件工程學(xué)院,上海 20006 2)
3(密碼科學(xué)技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100 878)
迄今為止,大多數(shù)密碼原語(yǔ)的安全性都依賴于高質(zhì)量的不可預(yù)測(cè)的隨機(jī)數(shù)[1?4].密碼學(xué)中,我們通常用偽隨機(jī)數(shù)生成器(pseudorandom nu mber generator,簡(jiǎn)稱PRNG)來(lái)生成隨機(jī)數(shù).而實(shí)際上,很多人為因素會(huì)導(dǎo)致PRNG生成的隨機(jī)數(shù)不安全[1?3,5].通常,我們稱不安全的PRNG 為存在后門的PRNG(backdoored pseudorandom number generator,簡(jiǎn)稱BPRNG).在信息安全領(lǐng)域,后門是指可以繞過(guò)安全控制而獲取對(duì)程序或系統(tǒng)訪問(wèn)權(quán)的方法.后門的最主要目的就是方便以后再次秘密進(jìn)入或者控制系統(tǒng).此處,我們所研究的后門主要是指存在于密碼組件PRNG 里的后門,這種后門使得PRNG 產(chǎn)生的用于密碼算法中的隨機(jī)數(shù),對(duì)于那些已知此后門的人來(lái)說(shuō)是可預(yù)測(cè)的.知道后門的攻擊者因可預(yù)測(cè)隨機(jī)數(shù),他很可能會(huì)成功破解相應(yīng)的密碼算法,這將嚴(yán)重地威脅到密碼算法的安全性.正如在2014年SXSW 大會(huì)(South B y Southwest Con ference)上斯諾登所言,攻擊者在攻擊加密算法時(shí),真正受到攻擊的其實(shí)是加密算法中使用的PRNG,而非算法本身.所以,研究抵抗隨機(jī)數(shù)后門攻擊的密碼算法是非常有意義且有必要的.
說(shuō)起對(duì)密碼算法的威脅,量子計(jì)算機(jī)也是其中之一.近年來(lái),量子信息科學(xué)的研究和發(fā)展催生了量子計(jì)算機(jī)[6],而量子計(jì)算機(jī)的強(qiáng)大計(jì)算能力對(duì)傳統(tǒng)密碼算法,尤其是對(duì)公鑰密碼算法產(chǎn)生了嚴(yán)重威脅[6].例如,Shor 算法就是一個(gè)分解大整數(shù)問(wèn)題和求解離散對(duì)數(shù)問(wèn)題的有效量子算法[6,7].Shor 算法的出現(xiàn),嚴(yán)重威脅了基于大整數(shù)分解困難問(wèn)題和離散對(duì)數(shù)困難問(wèn)題的公鑰密碼算法,如RSA,ECC,ElGamal 算法等.文獻(xiàn)[6]總結(jié)了現(xiàn)有的量子算法及其對(duì)傳統(tǒng)公鑰密碼算法的威脅,并梳理了量子計(jì)算機(jī)在物理實(shí)現(xiàn)上的發(fā)展歷史及相應(yīng)成果.到目前為止,雖然國(guó)際上很多著名的公司都紛紛加入量子計(jì)算機(jī)的研制之中,但距離通用的量子計(jì)算機(jī)的大規(guī)模使用還需要很長(zhǎng)時(shí)間.因此,在量子計(jì)算機(jī)真正取代傳統(tǒng)計(jì)算機(jī)之前,隨機(jī)數(shù)后門攻擊成為威脅現(xiàn)有密碼算法的主要因素.研究抗隨機(jī)數(shù)后門攻擊的密碼算法是亟待解決的問(wèn)題.
據(jù)統(tǒng)計(jì),目前主要有兩類影響PRNG 工作過(guò)程的因素[1,2,5,8?10].
?第1 類影響因素是“漏洞”.例如,2006年9月~2008年5月發(fā)生在Debian Linux 操作系統(tǒng)上的安全漏洞,一名程序員刪除了OpenSSL 密碼庫(kù)里的部分代碼,導(dǎo)致該系統(tǒng)中PRNG 的種子密鑰僅剩15 位熵[11].信息論中,熵用來(lái)表示一個(gè)數(shù)的不確定性,熵越大,數(shù)的不確定性越高.隨后,傳輸層協(xié)議(transport layer security,簡(jiǎn)稱TLS)和安全套接字層協(xié)議(secure sockets layer,簡(jiǎn)稱SSL)被曝出其服務(wù)器的重要組件使用了有后門的PRNG 而使協(xié)議存在安全漏洞[12];
?第2 類影響因素被稱為“惡意顛覆”,其目的是減弱PRNG 生成隨機(jī)數(shù)的隨機(jī)性.一個(gè)典型的例子是雙橢圓曲線偽隨機(jī)數(shù)生成器Dual EC PRNG,Dual EC PRNG 是NSA 設(shè)計(jì)的一個(gè)偽隨機(jī)數(shù)生成器算法,由NIST 列入算法標(biāo)準(zhǔn)[1,2,5,8?10,13,14].此后,Dual EC P RNG 一直被廣泛使用,直至2014年,該算法被曝出存在后門,即生成的隨機(jī)數(shù)可預(yù)測(cè)[15].在實(shí)際應(yīng)用中,Dual E C P RNG 被著名網(wǎng)絡(luò)公司Juniper N etwork 應(yīng)用于其所生產(chǎn)的NetScreen VP N 路由器的操作系統(tǒng)中.在文獻(xiàn)[16]中,作者詳細(xì)分析了NetScreen VPN路由器所存在的該隨機(jī)數(shù)后門攻擊.
對(duì)于加密算法,我們通常要求其能達(dá)到CPA(chosen plaintext attacks)安全性.然而,經(jīng)典的對(duì)稱加密算法(如AES,DES)未考慮該安全性.究其原因,這些算法為確定性加密算法.要實(shí)現(xiàn)CPA 安全性,加密算法必須為概率性算法,即算法中需引入隨機(jī)數(shù)(如加密模式中使用的初始化向量IV、消息填充等).然而,若在算法實(shí)現(xiàn)時(shí)使用存在后門的PRNG,則該加密算法將仍然無(wú)法達(dá)到CPA 安全.本節(jié)介紹抗隨機(jī)數(shù)后門的對(duì)稱加密算法.
到目前為止,關(guān)于抗隨機(jī)數(shù)后門攻擊的對(duì)稱加密算法的研究成果并不多,較為有效的算法僅有Kamara-Katz 系列對(duì)稱加密算法SKE1,SKE2.但是我們不難發(fā)現(xiàn),該算法的構(gòu)造依賴于很強(qiáng)的假設(shè)條件.因?yàn)樵谒惴▽?shí)現(xiàn)過(guò)程中,很難保證所用的P函數(shù)和F函數(shù)是真正偽隨機(jī)的,所以除了偽隨機(jī)函數(shù)和偽隨機(jī)置換之外,還可以用哪些數(shù)學(xué)工具和密碼原語(yǔ)來(lái)構(gòu)造抗后門攻擊的對(duì)稱密碼算法,是一個(gè)需要研究的問(wèn)題.另外,Kamara-Katz 系列對(duì)稱加密算法相當(dāng)于重新構(gòu)造了一個(gè)對(duì)稱加密算法,而不是在現(xiàn)有對(duì)稱加密算法基礎(chǔ)上構(gòu)造.如何構(gòu)造實(shí)用的抗隨機(jī)數(shù)后門攻擊的對(duì)稱加密算法,即簡(jiǎn)單改變現(xiàn)有密碼庫(kù)(如OpenSSL 庫(kù))的使用方式即可實(shí)現(xiàn)抗后門攻擊,也是此研究領(lǐng)域的另一重要的有待解決的問(wèn)題.這將大大減少密碼庫(kù)開發(fā)者的工作量,節(jié)省開發(fā)成本.
對(duì)沖公鑰加密算法最早由Bellare 等人在2009年亞密會(huì)(ASIACRYPT)上提出[18].所謂對(duì)沖是指密碼算法滿足兩個(gè)層次的安全性.
?第1 層安全性是指在加密算法中所用隨機(jī)數(shù)是可靠的、高熵的情況下,算法可達(dá)到標(biāo)準(zhǔn)安全性(如IND-CPA,IND-CCA);
?第2 層安全性是指在加密算法中所用隨機(jī)數(shù)是不可靠的、低熵的情況下,算法依然可以滿足某些比標(biāo)準(zhǔn)安全性稍弱的安全性,而不是直接被攻破[2,3,18].
當(dāng)對(duì)沖公開密鑰加密算法同時(shí)滿足上述兩個(gè)層次的安全性時(shí),才說(shuō)它是對(duì)沖安全的.對(duì)沖加密算法要求被加密的消息和加密時(shí)所用隨機(jī)數(shù)的聯(lián)合分布具有高熵.現(xiàn)有的對(duì)沖加密算法可以概括為3 類,即確定性公鑰加密(deterministic public-key e ncryption,簡(jiǎn)稱 D-PKE)[2,18?20]、隨機(jī)再確定性公鑰加密算法(randomized-thendeterministic,簡(jiǎn)稱RtD)[2,18]、填充再確定性公鑰加密(pad-then- deterministic,簡(jiǎn)稱PtD)[2,18].本節(jié)討論對(duì)沖公鑰加密的含義和安全性概念,然后分別從上述3 個(gè)方面對(duì)現(xiàn)有方案進(jìn)行總結(jié)和分析.
確定性公鑰加密算法最早是由Bellare 等人在2007年美密會(huì)(CRYPTO)上提出來(lái)的密碼學(xué)原語(yǔ)[19].在文獻(xiàn)[18]中,作者指出,確定性加密算法是構(gòu)造對(duì)沖加密算法的一種方法.所謂確定性加密,本質(zhì)上是指在算法設(shè)計(jì)中不使用隨機(jī)數(shù).他們指出,設(shè)計(jì)確定性公鑰加密算法存在兩個(gè)問(wèn)題.
?首先,如果一個(gè)敵手得知該算法的明文消息是從一個(gè)小的明文空間中選取的,那么他可以很容易用窮舉法恢復(fù)出明文.為解決這個(gè)問(wèn)題,他們要求算法的明文空間足夠大,并且具有高的最小熵;
?其次,因?yàn)樵诖_定性公鑰加密算中不使用隨機(jī)數(shù),所以加密算法輸出的密文在某種程度上暴露了明文的部分信息.該問(wèn)題的解決辦法是要求明文不依賴于公鑰,即明文和公鑰是相互獨(dú)立的.
文獻(xiàn)[19]中提出了兩個(gè)在隨機(jī)預(yù)言模型下的確定性公鑰加密算法實(shí)例:EwH 算法(encrypt-with-Hash,簡(jiǎn)稱EwH)和RSA-DOAEP 算法(RSA-deterministic optimal asymmetric encryption padding,簡(jiǎn)稱RSA-DOAEP).下面我們將對(duì)EwH 算法和RSA-DOAEP 算法分別進(jìn)行討論.簡(jiǎn)單來(lái)說(shuō),EwH 算法是先對(duì)用戶的公鑰、明文消息做一次Hash 操作,將Hash 值作為一個(gè)安全公鑰加密算法的隨機(jī)數(shù),并利用該公鑰加密算法生成最終密文.下面我們給出具體的EwH 加密算法.為方便描述,我們將EwH 算法記為EwH=(EwH.K,EwH.E,EwH.D),將任一安全公鑰密碼算法記為PKE=(PKE.K,PKE.E,PKE.D),哈希函數(shù)記為H:{0,1}*×{0,1}*→{0,1}*.
?密鑰生成算法EwH.K(1k):輸入安全參數(shù)k,該算法運(yùn)行算法PKE.K(1k)→(pk,sk),輸出公私鑰對(duì)(pk,sk);
?加密算法EwH.E(pk,x):輸入公鑰pk和要加密的消息x,先計(jì)算H(pk,x)→R,再運(yùn)行算法PKE.E(pk,x,R)→y,輸出密文y;
?解密算法EwH.D(y,pk,sk):輸入私鑰sk、公鑰pk和密文y,先計(jì)算PKE.D(sk,y)→x,H(pk,x)→R,再判斷等式PKE.E(pk,x,R)=y是否成立:若成立,輸出x;否則,輸出⊥.
在文獻(xiàn)[19]中,Bellare 等人也同時(shí)分析了確定性公鑰加密算法的安全性,給出了PRIV(privacy,簡(jiǎn)稱PRIV)安全性的定義.PRIV 安全性要求一個(gè)攻擊者,已知一個(gè)明文向量所對(duì)應(yīng)的確定性加密算法的密文,只要這個(gè)明文向量的每個(gè)分量有高的最小熵,則該攻擊者不能在多項(xiàng)式時(shí)間內(nèi)以不可忽略的概率猜出任何關(guān)于原明文的部分信息(部分信息不依賴于加密時(shí)所用的公鑰).證明結(jié)果表明:如果公鑰加密算法PKE=(PKE.K,PKE.E,PKE.D)是IND-CPA 安全的,則上述EwH 確定性加密算法滿足PRIV 安全性.
證明結(jié)果表明,上述確定性加密算法RSA-DOAEP 是PRIV 安全性.
關(guān)于確定性加密算法的研究還有一些其他的研究結(jié)果,例如在文獻(xiàn)[20]中,Boldyreva 等人在文獻(xiàn)[19]的基礎(chǔ)上繼續(xù)研究了確定性公鑰加密算法的設(shè)計(jì)及安全性定義,他們發(fā)現(xiàn)了確定性公鑰加密和有損限門函數(shù)之間的聯(lián)系.他們利用有損限門函數(shù),給出了在標(biāo)準(zhǔn)模型下滿足PRIV-CPA 安全性(即,在PRIV 安全性的基礎(chǔ)上允許攻擊者進(jìn)行加密預(yù)言機(jī)詢問(wèn))的確定性公鑰加密算法的一般性構(gòu)造思想.為了更好地描述該算法,他們提出了一個(gè)新的密碼原語(yǔ),隱藏全域哈希模式的確定性公鑰加密算法(deterministic encryption with hidden universal-Hash mode,簡(jiǎn)稱DEHUHM);其次,他們將該P(yáng)RIV-CPA 安全的算法構(gòu)造進(jìn)行了擴(kuò)展,給出了PRIV-CCA 安全的確定性加密算法的一般性構(gòu)造.另外,文獻(xiàn)中還基于抗目標(biāo)碰撞哈希函數(shù)、DDH 困難問(wèn)題給出了兩個(gè)具體的確定性加密算法實(shí)例.
Bellare 等人在文獻(xiàn)[18]中介紹了對(duì)沖公鑰密碼算法RtD,RtD 基本思想是:對(duì)消息m先用一個(gè)概率性加密算法進(jìn)行加密,輸出密文C′,再用一個(gè)確定性加密算法對(duì)C′進(jìn)行加密,輸出最終密文C.同時(shí),他們定義了一個(gè)新的對(duì)沖公鑰加密算法的安全性質(zhì),即選擇分布攻擊下的不可區(qū)分性(indistinguishability under c hosen-distribution attacks,簡(jiǎn)稱IND-CDA).在被加密的明文消息和相應(yīng)隨機(jī)數(shù)的聯(lián)合分布是高熵的條件下,一個(gè)對(duì)沖公鑰加密算法才能滿足IND-CDA 安全性.Bellare 等人表示:IND-CDA 安全性本質(zhì)上是對(duì)PRIV 安全性的一種變形,兩者的關(guān)系是適應(yīng)性IND-CDA 安全性比PRIV 安全性強(qiáng),而非適應(yīng)性IND-CDA 安全性等價(jià)于PRIV 安全性.下面給出具體的RtD=(RtD.P,RtD.K,RtD.E,RtD.D)構(gòu)造.為方便起見(jiàn),我們將隨機(jī)性公鑰密碼算法記為RPKE=(RPKE.P,RPKE.K,RPKE.E,RPKE.D),將確定性公鑰密碼算法記為DPKE=(DPKE.P,DPKE.K,DPKE.E,DPKE.D).
?參數(shù)生成算法RtD.P(1k):輸入安全參數(shù)k,先運(yùn)行算法RPKE.P(1k)→Parr,得到隨機(jī)性公鑰密碼算法RPKE 的系統(tǒng)參數(shù)Parr;再運(yùn)行算法DPKE.P(1k)→Pard,得到確定性公鑰密碼算法DPKE 的系統(tǒng)參數(shù)Pard,輸出(Parr,Pard);
?密鑰生成算法RtD.K(1k):輸入安全參數(shù)k,運(yùn)行算法RPKE.K(Parr)→(pkr,skr)和DPKE.K(Pard)→(pkd,skd),輸入算法的公私鑰對(duì)(pk=(pkr,pkd),sk=(skr,skd));
?加密算法RtD.E((pkr,pkd),m,r):輸入公鑰pk=(pkr,pkd)、被加密消息m和一個(gè)隨機(jī)數(shù)r,先計(jì)算RPKE.E(pkr,m,r)→c,再計(jì)算DPKE.E(pkd,c||10l)→C,輸出密文C.其中,l=nd?|c|?1,nd表示DPKE 算法的明文長(zhǎng)度,0l表示有l(wèi)個(gè)0;
?解密算法RtD.D(C,(skr,skd)):輸入私鑰sk=(skr,skd)和密文C,計(jì)算DPKE.D(skd,C)→c,RPKE.D(skr,c)→m,輸出m.
證明結(jié)果表明:若公鑰加密算法RPKE=(RPKE.P,RPKE.K,RPKE.E,RPKE.D)是IND-CPA 安全的,則上述RtD構(gòu)造滿足IND-CDA 安全性.
PtD 也是Bellare 等人在文獻(xiàn)[18]中提出的一種構(gòu)造對(duì)沖公鑰加密算法的方法.所謂的PtD 加密是指先對(duì)消息m進(jìn)行填充,輸出m′,再用一個(gè)確定性加密算法對(duì)m′進(jìn)行加密,輸出最終的密文C.下面介紹具體的PtD=(PtD.P,PtD.K,PtD.E,PtD.D)加密算法,我們將確定性公鑰密碼算法記為:DPKE=(DPKE.P,DPKE.K,DPKE.E,DPKE.D).
?參數(shù)生成算法PtD.P(1k):輸入安全參數(shù)k,運(yùn)行確定性加密算法的參數(shù)生成算法DPKE.P(1k)→Pard,輸出確定性公鑰加密算法的系統(tǒng)參數(shù)Pard;
?密鑰生成算法PtD.K(Pard):輸入系統(tǒng)參數(shù)Pard,運(yùn)行確定性公鑰加密算法的密鑰生成算法DPKE.K(Pard)→(pkd,skd),輸出公私鑰對(duì)(pkd,skd);
?加密算法PtD.E(pkd,m,r):輸入系統(tǒng)參數(shù)Pard、隨機(jī)數(shù)r、明文m,運(yùn)行確定性公鑰加密算法DPKE.E(pkd,r||m)→C,輸出密文C;
?解密算法PtD.D(C,skd):輸入密文C,私鑰skd,運(yùn)行解密算法DPKE.D(skd,C)→m,輸出消息m.
證明結(jié)果表明,上述對(duì)沖加密算法PtD=(PtD.P,PtD.K,PtD.E,PtD.D)滿足IND-CDA 安全性.
在2017年的美密會(huì)上,Boldyreva 等人從實(shí)際出發(fā),研究了在密碼庫(kù)OpenSSL 中可實(shí)現(xiàn)的對(duì)沖加密算法以及對(duì)沖加密算法的安全性質(zhì)[2].他們定義了兩個(gè)新的對(duì)沖安全性質(zhì),即 MM-CCA(message-message s ecurity against ch osen c iphertext a ttack)和MMR-CCA(message-message-randomness security against chos en ciphertex t attack).作者指出,第2.2 節(jié)、第2.3 節(jié)中所述的IND-CDA 安全性等價(jià)于MMR-CPA 安全性(message-messagerandomness security against chosen plaintext attack).文獻(xiàn)[18]的研究結(jié)果已經(jīng)表明:RtD算法和PtD算法在滿足一定約束條件時(shí)可達(dá)到IND-CDA 安全性,即MMR-CPA 安全性.所以在文獻(xiàn)[2]中,Boldyreva 等人將該結(jié)果進(jìn)行擴(kuò)展,研究了RtD 算法和PtD 算法相應(yīng)的CCA 安全性.證明結(jié)果表明,對(duì)于RtD 算法,當(dāng)確定性算法選用RSA-DOAEP 時(shí),算法可達(dá)到MM-CPA 和IND-CPA 安全;當(dāng)概率性算法選用關(guān)聯(lián)數(shù)據(jù)的單射加密算法,則算法可達(dá)到MMR-CCA 和IND-CCA 安全性.而對(duì)于PtD 算法,當(dāng)確定性算法選用RSA-DOAEP 時(shí),算法可滿足MM-CCA 和IND-CCA 安全性.同時(shí),文獻(xiàn)[2]中的作者還基于關(guān)聯(lián)數(shù)據(jù)的可驗(yàn)證加密算法和陷門置換函數(shù)構(gòu)造了一個(gè)混合加密算法,并給出安全性分析.結(jié)果表明,該混合加密算法可滿足MMR-CCA 和IND-CCA 安全性.他們的另一研究結(jié)果表示,RSA-OAEP 算法在隨機(jī)預(yù)言模型中可達(dá)到MM-CCA 安全性.這在實(shí)際應(yīng)用中非常有意義,因?yàn)镽SA-OAEP 包含在現(xiàn)有很多密碼庫(kù)中,可直接訪問(wèn)現(xiàn)有密碼庫(kù)的中的高級(jí)程序接口而易于實(shí)現(xiàn).
關(guān)于對(duì)沖公鑰加密算法,我們總結(jié)了如下幾個(gè)需要進(jìn)一步研究的問(wèn)題.
1)現(xiàn)有對(duì)沖公鑰加密算法都依賴隨機(jī)預(yù)言模型,而該模型是密碼學(xué)中的一個(gè)理想化模型,現(xiàn)實(shí)世界中并不存在.如何構(gòu)造基于標(biāo)準(zhǔn)模型下的對(duì)沖公鑰機(jī)密算法,將是值得繼續(xù)研究的一個(gè)方向;
2)目前,關(guān)于對(duì)沖公鑰加密算法的安全性研究存在一個(gè)一般性問(wèn)題,就是沒(méi)有一個(gè)安全性質(zhì)可以適用于所有的對(duì)沖公鑰加密算法.所以,研究對(duì)沖公鑰加密算法的一般性安全性質(zhì)是值得探索的方向;
3)對(duì)沖公鑰加密算法通常要求明文消息和相應(yīng)隨機(jī)數(shù)(或隨機(jī)填充值)的聯(lián)合分布是高熵的.若明文空間較小,對(duì)沖公鑰加密算法的安全性等價(jià)于隨機(jī)數(shù)生成算法的安全性.因此,設(shè)計(jì)明文空間較小情況下,抗后門攻擊的對(duì)沖公鑰加密算法,是一個(gè)值得探索的方向.
本節(jié)討論基于隨機(jī)性強(qiáng)化的抗隨機(jī)數(shù)后門攻擊方法.目前,基于隨機(jī)性強(qiáng)化的方法可以概括為3 類,即nonce-based 公鑰加密算法(nonce-based public-key encryption,簡(jiǎn)稱N-PKE)[1,4,21,22]、對(duì)沖的nonce-based 公鑰加密算法(hedged nonce-based public key encryption,簡(jiǎn)稱HN-PKE)[3]、Dodis 隨機(jī)數(shù)生成算法[5].以下對(duì)這3 種方法分別進(jìn)行總結(jié).
Nonce-based 公鑰加密算法的發(fā)展可以追溯到2002年,Rogaway 在關(guān)聯(lián)數(shù)據(jù)的可驗(yàn)證加密方案中首次引入了nonce 的概念[21].2004年,Rogaway 首次提出nonce-based 對(duì)稱加密方案[4].2006年,Rogaway 和Shrimpton 細(xì)化了nonce 的概念[22].他們表示:packet sequence numbers 即可作為一個(gè)nonce,并且強(qiáng)調(diào)nonce-based 加密思想可以有效抵抗隨機(jī)數(shù)后門攻擊.2016年,Bellare 和Tackmann 提出了nonce-based 公鑰密碼算法[1].
在文獻(xiàn)[1]中,Bellare 和Tackmann 定義了nonce-based 公鑰密碼算法應(yīng)滿足的安全屬性,并給出了具體構(gòu)造和安全性分析.相比于傳統(tǒng)公鑰密碼算法,nonce-based 公鑰密碼算法中需要使用兩個(gè)額外的密碼組件,即nonce生成器(nonce generator,簡(jiǎn)稱NG)和對(duì)沖提取器(hedged extractor,簡(jiǎn)稱HE).
?前者的輸入為安全參數(shù)k、nonce selectorη和當(dāng)前狀態(tài)值St,輸出為nonce 值n和下一個(gè)狀態(tài)值St′;
?后者輸入為安全參數(shù)k,種子密鑰xk、消息M和noncen,輸出一個(gè)隨機(jī)數(shù)r.
Bellare 和Tackmann 分別給出了HE 在隨機(jī)預(yù)言模型和標(biāo)準(zhǔn)模型下的構(gòu)造方法[1].
在隨機(jī)預(yù)言模型下HE 的構(gòu)造,需把HE 看作隨機(jī)預(yù)言機(jī)RO.假設(shè)k是種子密鑰的長(zhǎng)度,l是HE 的輸出長(zhǎng)度,HE.Keys={0,1}k,HE.Dom={0,1}*×{0,1}*,HE.Rng={0,1}l,其中,HE.Dom是(n,M)的取值空間.HE 可定義為映射HE:HE.Keys×HE.Dom→HE.Rng.具體HE 的構(gòu)造為HERO(xk,(n,M)),其中,xk為種子密鑰,n∈{0,1}*為nonce 值,M∈{0,1}*表示消息.為保證構(gòu)造的安全性,HE 需視作RO,即HERO(xk,(n,M))=RO((xk,(n,M)),l).
標(biāo)準(zhǔn)模型下,HE 的構(gòu)造基于偽隨機(jī)函數(shù)PRF(pseudorandom function)和AXUHF(almost XOR universal Hash function).將PRF 記為映射F:F.Keys×({0,1}*×{0,1}*)→{0,1}l,將AXUHF 記為映射H:H.Keys×H.Dom→{0,1}l.其中,F.Keys和H.Keys分別表示PRF 和AXUHF 的密鑰空間,H.Dom?{0,1}*表示nonce 值的取值空間.假設(shè)種子密鑰為xk、nonce 值為n∈H.Dom、消息為M∈{0,1}*,標(biāo)準(zhǔn)模型下HE 的構(gòu)造如下.
?先將xk分為兩部分,即xk→(hk,fk),其中,hk和fk分別屬于H.Keys和F.Keys;
?分別執(zhí)行PRF 和AXUHF,即H(hk,n)→z1,F(fk,(M,n))→z2;
?最終,HE 的輸出為z1⊕z2∈{0,1}l.
Nonce-based 公鑰加密算法基于一個(gè)傳統(tǒng)安全的公鑰加密算法設(shè)計(jì)[1].下面介紹具體的nonce-based 公鑰加密算法.為方便起見(jiàn),我們將其記做NPKE=(NKg,NSKg,NEnc,NDec),將所用的傳統(tǒng)安全的公鑰加密算法記為PE=(PE.Kg,PE.Enc,PE.Dec).一個(gè)nonce-based 公鑰加密算法包括如下4 個(gè)基本算法.
?密鑰生成算法NKg(1k):輸入安全參數(shù)1k,運(yùn)行算法(pk,sk)←PE.Kg(1k),輸出公私鑰對(duì)(pk,sk);
?種子密鑰生成算法NSKg(1k):輸入安全參數(shù)1k,輸出種子密鑰xk;
?加密算法NEnc(pk,M,xk):輸入公鑰pk、消息M、種子密鑰xk,先運(yùn)行NG 算法生成nonce 值n,即(n,St′)←NG(η,St),其中,nonce selectorη和NG 的當(dāng)前狀態(tài)值St是加密者自己選取的,St′表示NG 的下一個(gè)狀態(tài)值;再運(yùn)行HE 算法生成隨機(jī)數(shù)r,即r←HERO(xk,M,n);再運(yùn)行算法PE.Enc進(jìn)行加密操作,即C←PE.Enc(pk,M,r);最后輸出密文C;
?解密算法NDec(sk,C):輸入私鑰sk和密文C,運(yùn)行算法M←PE.Dec(sk,pk,C),輸出消息M.
對(duì)于nonce-based 公鑰加密算法,若一個(gè)攻擊者想攻破該算法,他需要同時(shí)獲得nonce 和種子密鑰的值[1].文獻(xiàn)[1]中,Bellare 和Tackmann 定義了兩個(gè)nonce-based 公鑰加密算法的安全性質(zhì),即NBP1(nonce-based privacy 1)和NBP2(nonce-based privacy 2).
?NBP1 是指攻擊者未知用戶的種子密鑰時(shí),只要消息和nonce 不重復(fù),攻擊者就不能攻破nonce-based公鑰加密算法;
?NBP2 是指攻擊者已知用戶種子密鑰時(shí),只要nonce 不可預(yù)測(cè),攻擊者就不能攻破密碼算法.
Bellare 和Tackmann 指出:對(duì)于上述NPKE 算法,若其采用標(biāo)準(zhǔn)模型下的HE 和標(biāo)準(zhǔn)模型下可證明安全的PE算法,則NPKE 算法在標(biāo)準(zhǔn)模型下滿足NBP1 和NBP2 安全性;否則,只要NPKE 中采用了隨機(jī)預(yù)言模型下的HE 或PE,則NPKE 在隨機(jī)預(yù)言模型下滿足NBP1 和NBP2 安全性[1].
另外,Bellare 和Tackmann 還研究了nonce-based 簽名方案,并對(duì)其安全性進(jìn)行分析和證明[1].Nonce-based 簽名方案的設(shè)計(jì)基于一個(gè)傳統(tǒng)的數(shù)字簽名算法.下面介紹具體的nonce-based 簽名算法,為方便起見(jiàn),我們將其記做NDS=(NDS.Kg,NDS.Sig,NDS.Vrf),將所用的傳統(tǒng)簽名算法記為DS=(DS.Kg,DS.Sig,DS.Vrf).一個(gè)nonce-based 公鑰加密算法包括如下3 個(gè)基本算法.
?密鑰生成算法NDS.Kg(1k):輸入安全參數(shù)1k,運(yùn)行算法(sk,vk)←DS.Kg(1k),輸出簽名密鑰sk,驗(yàn)證密鑰vk
以及種子密鑰xk;
?簽名算法NDS.Sig(1k):輸入簽名密鑰sk、種子密鑰xk、消息M,先運(yùn)行NG 算法生成nonce 值n,即(n,St′)←NG(η,St),其中,nonce selectorη和NG 的當(dāng)前狀態(tài)值St是加密者自己選取的,St′表示NG 的下一個(gè)狀態(tài)值;再運(yùn)行HE 算法生成隨機(jī)數(shù)r,即r←HERO(xk,M,n);再運(yùn)行算法DS.Sig進(jìn)行簽名操作,運(yùn)行算法s←DS.Sig(sk,M,r),輸出簽名s;
?驗(yàn)證算法NDS.Vrf(1k):輸入驗(yàn)證密鑰vk、消息M和簽名s,若等式NDS.Vrf(vk,M,NDS.Sig(sk,xk,M,n))=1,則表示簽名認(rèn)證成功;否則,輸出錯(cuò)誤符號(hào)⊥.
文獻(xiàn)[1]中定義了nonce-based 簽名算法的兩個(gè)安全性質(zhì),即NBUF1(nonce-based unforgeability 1)和NBUF2(nonce-based unforgeability 2).
?NBUF1 是指:只要種子密鑰保密的情況下,不論nonce 值是否可預(yù)測(cè),則nonce-based 簽名算法都能滿足不可偽造性;
?NBUF2 是指:種子密鑰泄露的情況下,只有nonce 值不可預(yù)測(cè)時(shí),nonce-based 簽名算法才能滿足不可偽造性.
Bellare 和Tackmann 指出:對(duì)于上述NDS 算法,若其采用標(biāo)準(zhǔn)模型下的HE 和標(biāo)準(zhǔn)模型下可證明安全的DS算法,則NDS 算法在標(biāo)準(zhǔn)模型下滿足NBUF1 和NBUF2 安全性;否則,只要NDS 中采用了隨機(jī)預(yù)言模型下的HE 或DS,則NDS 在隨機(jī)預(yù)言模型下滿足NBUF1 和NBUF2 安全性[1].
2018年,Huang 等人在文獻(xiàn)[3]中首次將對(duì)沖公鑰加密和nonce-based 公鑰加密相結(jié)合,提出了對(duì)沖的noncebased 公鑰加密算法.從本質(zhì)上講,對(duì)沖的nonce-based 公鑰加密著眼于研究nonce-based 公鑰加密算法(詳見(jiàn)第3.1 節(jié))的對(duì)沖安全性質(zhì),即:當(dāng)nonce-based 公鑰加密算法中所用的隨機(jī)數(shù)存在后門時(shí),算法不是直接被攻破,而是仍然可以滿足某些弱的安全性.文獻(xiàn)[3]中,作者將第2.2 節(jié)介紹的對(duì)沖安全性質(zhì)IND-CDA 進(jìn)行了擴(kuò)展,在其基礎(chǔ)上定義了一個(gè)新的適用于nonce-based 公鑰加密算法的安全性質(zhì)IND-CDA2(chosen-ciphertext securit y against chosen-distribution attack);并且他們指出,IND-CDA2 安全性比IND-CDA 安全性更強(qiáng).IND-CDA2 安全性要求nonce-based 公鑰加密算法中對(duì)沖提取器HE 的種子密鑰、被加密明文消息以及隨機(jī)數(shù)的聯(lián)合分布有高的最小熵.對(duì)沖的nonce-based 公鑰加密算法需要同時(shí)滿足IND-CDA2,NBP1,NBP2 這3 種安全性.除此之外,文獻(xiàn)[3]中還分析證明了IND-CDA2 與NBP1/NBP2 之間的關(guān)系,他們的證明結(jié)論表示,NBP1/NBP2?IND-CDA2,IND-CDA2?NBP1/NBP2.Huang 等人表示,第3.1 節(jié)介紹的nonce-based 公鑰加密算法即可視作在隨機(jī)預(yù)言模型下HN-PKE 的算法構(gòu)造.他們著重研究了nonce-based 公鑰加密算法的對(duì)沖安全性質(zhì),證明結(jié)果表明,noncebased 公鑰加密算法在隨機(jī)預(yù)言機(jī)模型下滿足IND-CDA2 安全性.
另外,Huang 等人考慮了 HN-PKE 在標(biāo)準(zhǔn)模型下的算法構(gòu)造,并提出了一個(gè)具體的 NtD(nonce-thendeterministic)加密算法[3].所謂的NtD 算法是指:先用nonce-based 公鑰加密算法N-PKE(詳見(jiàn)第3.1 節(jié))對(duì)明文消息m進(jìn)行加密生成m′,再選擇一個(gè)確定性加密算法D-PKE 對(duì)m′進(jìn)行加密,生成最終密文C.具體的NtD 算法包含4 個(gè)基本算法,分別是密鑰生成算法NDKg、種子生成算法NDSKg、加密算法NDEnc、解密算法NDDec,我們將其記為NtD=(NDKg,NDSKg,NDEnc,NDDec).為方便起見(jiàn),我們將N-PKE 算法記為NPKE=(NKg,NSKg,NEnc,NDec),將D-PKE 算法記為DPKE=(DKg,DEnc,DDec).具體的NtD 加密算法介紹如下.
?密鑰生成算法NDKg(1k):輸入安全參數(shù)1k,首先運(yùn)行N-PKE 算法的密鑰生成算法NKg(1k)→(pkn,skn),生成N-PKE 算法的公私鑰對(duì);其次運(yùn)行D-PKE 算法的密鑰生成算法DKg(1k)→(pkd,skd),生成D-PKE算法的公私鑰對(duì);最后輸出NtD 算法的公鑰pk=(pkn,pkd),私鑰sk=(skn,skd);
?種子生成算法NDSKg(1k):輸入安全參數(shù)1k,運(yùn)行N-PKE 算法的種子生成算法NSKg(1k)→xk,輸出種子密鑰xk;
?加密算法NDEncpk(M,n,xk):輸入公鑰pk=(pkn,pkd)、消息M、一個(gè)nonce 值n,先運(yùn)行N-PKE 算法的加密算法NEnc(pkn,xk,M,n)→y,再運(yùn)行D-PKE 算法的加密算法DEnc(pkd,y)→C,輸出密文C,其中,nonce由NG 產(chǎn)生;
?解密算法NDDecsk(C):輸入私鑰sk=(skn,skd)和密文C,先運(yùn)行D-PKE 算法的解密算法DDec(skd,C)→y,再運(yùn)行N-PKE 算法的解密算法NDec(skn,y)→M,輸出消息M.
證明結(jié)果表明:當(dāng)確定性加密算法DPKE=(DKg,DEnc,DDec)在標(biāo)模下滿足適應(yīng)性CCA 安全性時(shí),NtD 算法在標(biāo)模下滿足NBP1,NBP2,IND-CDA2 安全性.
在文獻(xiàn)[5]中,Dodis 等人詳細(xì)介紹了Dual E C P RNG 中后門攻擊的原理.同時(shí),他們表示,可以用密鑰封裝算法和公鑰加密算法來(lái)構(gòu)造BPRNG.即,將密鑰封裝算法和公鑰加密算法的輸出看作BPRNG 生成的隨機(jī)數(shù).
除此之外,他們還提出了一種用于增強(qiáng)PRNG 輸出隨機(jī)性的函數(shù),將該函數(shù)定義為“免疫”函數(shù),用fseed表示.“免疫”函數(shù)的工作原理是:將可能存在后門的PRNG 生成的可能不安全的可預(yù)測(cè)隨機(jī)數(shù)做為“免疫”函數(shù)fseed的輸入,將函數(shù)fseed的輸出作為最終的隨機(jī)數(shù).
這種情況下,如何判斷“免疫”函數(shù)作用的有效性是個(gè)重要問(wèn)題.文獻(xiàn)[5]中給出了一種驗(yàn)證方法:存在一個(gè)攻擊者A,他試圖構(gòu)造一個(gè)帶有后門的PRNG,然后使用“免疫”函數(shù)fseed對(duì)該P(yáng)RNG 進(jìn)行免疫.如果A能成功構(gòu)造一個(gè)帶有后門的PRNG,并繞過(guò)fseed,則表明函數(shù)fseed為無(wú)效免疫;否則,表明fseed有效免疫.在這個(gè)驗(yàn)證過(guò)程中,根據(jù)攻擊者已知“免疫”函數(shù)fseed相關(guān)信息的程度不同,Dodis 等人將免疫模型分為3 種:公開免疫模型、半隱私免疫模型和隱私免疫模型.其中:公開免疫模型是指攻擊者A構(gòu)造帶有后門的PRNG 之前就已知函數(shù)fseed的seed值,也就是說(shuō),攻擊者已知函數(shù)fseed;半隱私免疫模型是指A構(gòu)造帶有后門的PRNG 之后才已知seed;隱私免疫模型是指A構(gòu)造帶有后門的PRNG 前后都未知seed.Dodis 等人的研究結(jié)果表明:在公開免疫模型下,存在后門的PRNG 是不能被免疫的,即不存在免疫函數(shù)fseed.在半隱私免疫模型下,Dodis 等人分別考慮了針對(duì)隨機(jī)預(yù)言模型和標(biāo)準(zhǔn)模型的免疫函數(shù).他們指出:在隨機(jī)預(yù)言模型下,可將隨機(jī)預(yù)言機(jī)RO(random orac le)看作免疫函數(shù),即fseed=RO;在標(biāo)準(zhǔn)模型下,可用通用計(jì)算萃取器UCE(universal computational extractor)作為免疫函數(shù),即fseed=UCE;在隱私免疫模型下,Dodis 等人指出:可將偽隨機(jī)函數(shù)PRF 作為免疫函數(shù),即fseed=PRF.
基于隨機(jī)性強(qiáng)化的抗隨機(jī)數(shù)后門攻擊方法本質(zhì)上是一種門限機(jī)制,即隨機(jī)數(shù)的生成依賴多個(gè)密碼組件.當(dāng)單個(gè)或若干個(gè)密碼組件存在后門時(shí),只要某個(gè)密碼組件是安全可靠的,仍然可以得到安全的隨機(jī)數(shù).雖然門限機(jī)制可有效解決后門攻擊問(wèn)題,然而現(xiàn)有方案還存在如下問(wèn)題.
1)在nonce-based 公鑰加密算法中,一個(gè)新的密碼組件HE 被用于增強(qiáng)隨機(jī)性.然而,根據(jù)文獻(xiàn)[1]中所給HE 的定義可以看出,HE 的實(shí)例化依賴于隨機(jī)預(yù)言機(jī)RO 或者依賴于AXUHF 和PRF.而RO 是密碼學(xué)中的一個(gè)假設(shè),現(xiàn)實(shí)世界并不存在.此外,作者并沒(méi)給出隨機(jī)預(yù)言模型下,HE 的具體構(gòu)造.因此在實(shí)際應(yīng)用中,如何實(shí)現(xiàn)該類HE 還需進(jìn)一步研究.在標(biāo)準(zhǔn)模型下,HE 的實(shí)例化依賴于AXUHF 和PRF,而現(xiàn)有已實(shí)現(xiàn)的AXUHF,PRF 等密碼學(xué)工具中是否存在類似于Dual EC PRNG 隨機(jī)數(shù)后門攻擊,也還有待研究;
2)第3.3 節(jié)所述的“免疫”函數(shù)的實(shí)現(xiàn)也存在上述類似的問(wèn)題.現(xiàn)有“免疫”函數(shù)的實(shí)現(xiàn)依賴于RO,UCE 或PRF.RO 和UCE 都在密碼學(xué)中的一個(gè)假設(shè),而已實(shí)現(xiàn)的PRF 中是否存在隨機(jī)數(shù)后門攻擊等問(wèn)題,還有待研究.此外,作者也未給出具體的免疫函數(shù);
3)在文獻(xiàn)[3]中,作者考慮了對(duì)沖公鑰加密算法在標(biāo)準(zhǔn)模型下的構(gòu)造,并提出了NtD 對(duì)沖公鑰加密算法(詳見(jiàn)第3.3 節(jié)).該算法的安全性依賴于完全適應(yīng)性CCA 安全的確定性加密算法,然而如何構(gòu)造適應(yīng)性CCA 安全的確定性加密算法,目前還是一個(gè)開放問(wèn)題[3].
上述抗隨機(jī)數(shù)后門攻擊密碼算法側(cè)重于算法層面的安全性.在實(shí)際應(yīng)用中,攻擊者可在算法實(shí)現(xiàn)時(shí)設(shè)計(jì)后門來(lái)破壞密碼系統(tǒng)的安全性,其中最典型的為算法替代攻擊.本節(jié)首先闡述算法替代攻擊基本原理,隨后介紹現(xiàn)有抵抗算法替代的方法.
算法替代攻擊(algorithm substitution attacks,簡(jiǎn)稱ASA)最早由Young 等人在1997年歐密會(huì)(EUROCRYPT)上提出[23],該攻擊也稱為顛覆攻擊(substitution attac ks,簡(jiǎn)稱SA).相較于在算法中設(shè)計(jì)后門,算法替代攻擊著重于在密碼算法實(shí)現(xiàn)過(guò)程中插入后門.通常來(lái)說(shuō),密碼系統(tǒng)中使用的密碼算法的安全性是經(jīng)過(guò)嚴(yán)格的安全性分析的.然而在實(shí)際應(yīng)用中,這些密碼系統(tǒng)的使用模式是“黑盒”模式[24],即用戶并不知曉其內(nèi)部構(gòu)造.這使得攻擊者可惡意設(shè)計(jì)算法的使用模式,在特殊情況下,用新算法覆蓋掉原有算法,同時(shí),新算法即使面對(duì)相當(dāng)密集的黑盒測(cè)試也會(huì)看起來(lái)完全安全.在文獻(xiàn)[25]中,作者指出,所有依賴第三方軟件庫(kù)或硬件設(shè)備的密碼系統(tǒng)均可能遭受算法替代攻擊.
算法替代攻擊的基本原理是:攻擊者在密碼算法從理論轉(zhuǎn)化為現(xiàn)實(shí)過(guò)程中,將原誠(chéng)實(shí)可靠的實(shí)現(xiàn)算法替換成一個(gè)已被植入秘密信息的替代算法[26].植入的秘密信息只有敵手可見(jiàn),通常稱為后門信息.攻擊者可利用該后門信息與輸出結(jié)果的聯(lián)系來(lái)恢復(fù)系統(tǒng)的秘密信息(如密鑰、隨機(jī)數(shù)等),從而破壞系統(tǒng)的安全性.ASA 攻擊要求對(duì)于除攻擊者以外的任意用戶來(lái)說(shuō),替代算法與誠(chéng)實(shí)算法的輸出分布結(jié)果是不可區(qū)分的.隨著對(duì)算法替代攻擊的不斷研究,如何有效抵御算法替代攻擊也成為一個(gè)新的問(wèn)題.最簡(jiǎn)單的防算法替代攻擊的策略是采用確定性密碼算法[8],如文獻(xiàn)[8,25?27]中所建議的加密方案、本文第2.1 節(jié)中所介紹的確定性加密算法等.因確定性加密算法具有唯一密文屬性,攻擊者若在算法實(shí)現(xiàn)時(shí)插入后門,其攻擊行為將很容易被檢測(cè)到.然后,如第2.1 節(jié)所述,為保證算法的安全性,確定性加密算法要求明文空間足夠大,并且具有高的最小熵.
近年來(lái),針對(duì)概率性密碼算法的ASA 防御策略的研究也取得了一定的進(jìn)展,目前大致分為兩類:第1 類被稱作為抗盜密密碼學(xué)(cliptography)[28],詳見(jiàn)第4.2 節(jié);第2 類被稱為逆向防火墻[29,30],詳見(jiàn)第4.3 節(jié).
抗盜密密碼學(xué)的概念最初是由Alexander 和Tang 等人[25]提出的,旨在防止盜密攻擊(kleptographic)下[20],概率性密碼算法免受算法替代攻擊的威脅.抗盜密密碼學(xué)借鑒了模塊化的設(shè)計(jì)思想,即原密碼算法可劃分成不同的算法組件(子模塊),每個(gè)算法組件可獨(dú)立執(zhí)行.此外,抗盜密密碼學(xué)采用有威懾力的可信第三方實(shí)體——看門狗”(watchdog)來(lái)檢測(cè)每個(gè)算法組件是否遭受算法替代攻擊.抗盜密密碼學(xué)的關(guān)鍵在于如何劃分算法組件,文獻(xiàn)[28]中的“split-program”模塊化方法根據(jù)算法執(zhí)行過(guò)程中是否需要使用隨機(jī)數(shù)而將整個(gè)算法分成兩個(gè)模塊:確定性算法組件(例如確定性加密算法)和概率性算法組件(例如隨機(jī)數(shù)生成算法、密鑰生成算法).兩個(gè)模塊獨(dú)立執(zhí)行,具體的,先執(zhí)行概率性算法組件,并將執(zhí)行結(jié)果輸入到一個(gè)散列函數(shù)中,再將經(jīng)過(guò)該函數(shù)作用過(guò)的結(jié)果輸入到確定性算法組件去執(zhí)行.由于原算法被分為多個(gè)獨(dú)立組件,因此攻擊者需對(duì)所有組件一一替換.模塊化設(shè)計(jì)的思想在于增加了攻擊者替換原算法的難度,散列函數(shù)的作用則在于增加隨機(jī)數(shù)的熵值和不確定性.此外,Alexander 等人在文獻(xiàn)[28]基礎(chǔ)上提出了“double-split”方法[31,32].該方法在“split-program”劃分的基礎(chǔ)上,將概率性算法組件分為兩個(gè)子組件.子組件獨(dú)立且并發(fā)執(zhí)行,執(zhí)行結(jié)果級(jí)聯(lián)后輸入散列函數(shù).后續(xù)執(zhí)行過(guò)程與文獻(xiàn)[28]類似.
目前,抗盜密密碼學(xué)只是初具雛形,有關(guān)的潛在應(yīng)用場(chǎng)景還值得進(jìn)一步研究,譬如利用該方法構(gòu)造一個(gè)collusion-free 的協(xié)議[33].此外,該方法主要考慮無(wú)狀態(tài)算法[34].在一些實(shí)踐中,算法可能是有狀態(tài)的[28],例如計(jì)數(shù)器模式加密.如何擴(kuò)展到有狀態(tài)的算法,還值得深入研究.
傳統(tǒng)防火墻用于內(nèi)網(wǎng)和外網(wǎng)的隔離,它按照系統(tǒng)管理員預(yù)先定義好的規(guī)則來(lái)控制數(shù)據(jù)包的進(jìn)出,以阻擋來(lái)自外網(wǎng)的入侵,保障內(nèi)網(wǎng)的安全.密碼逆向防火墻(cryptographic r everse fi rewalls,簡(jiǎn)稱CRF)的概念最初是由Mironov 等人在2015年的歐密會(huì)上提出的[35].密碼逆向防火墻旨在防止機(jī)密信息從內(nèi)網(wǎng)遭受入侵(密碼算法存在算法替代攻擊)的主機(jī)中泄露出去,其基本思想在于重隨機(jī)化[36,37?39].密碼逆向防火墻的關(guān)鍵在于設(shè)計(jì)/找到合適的加密算法,該算法能確保公鑰/密鑰或是密文被重隨機(jī)化后,接收方仍能正確解密.例如:在公鑰密碼體制中,發(fā)送者用公鑰加密生成的密文從內(nèi)網(wǎng)發(fā)出時(shí),為防止加密算法被替換為植入后門信息的算法而破環(huán)算法安全性,密文會(huì)被密碼逆向防火墻重隨機(jī)化后發(fā)給接收者,接收者可直接解密該密文.密碼逆向防火墻也可基于公鑰/密鑰重隨機(jī)化[40],該類方法旨在抵抗攻擊者在公鑰中植入后門信息.此時(shí)要求選擇的加密算法具有密鑰可延展性(key m alleable),即,接收者可把使用重隨機(jī)后的公鑰加密的密文映射到用原始公鑰加密的密文[41,42].找到擁有這樣的可重隨機(jī)化特性的加密算法并設(shè)計(jì)相應(yīng)的密碼逆向防火墻,是當(dāng)下的主要研究?jī)?nèi)容.
目前為止,密碼逆向防火墻仍有一些問(wèn)題亟待解決,其中包括文獻(xiàn)[35]中提到的缺少前向安全性以及相對(duì)低效(當(dāng)下的方案需要對(duì)整個(gè)明文進(jìn)行加密).所以,尋找前向安全的高效密碼逆向防火墻方案,將成為日后的研究方向之一.
抗隨機(jī)數(shù)后門攻擊密碼算法經(jīng)過(guò)幾年的研究,已經(jīng)取得了一些有意義的成果.本文全方位地就其中的主要成果進(jìn)行梳理總結(jié),包括抗隨機(jī)數(shù)后門攻擊的對(duì)稱加密算法、對(duì)沖公鑰加密算法、基于隨機(jī)性強(qiáng)化的方法以及其他相關(guān)技術(shù)目前的研究現(xiàn)狀,分析了相關(guān)構(gòu)造的特點(diǎn),并指出目前相關(guān)技術(shù)研究過(guò)程中所面臨的問(wèn)題.總體來(lái)說(shuō),現(xiàn)有成果大多是從理論層面分析了抗隨機(jī)數(shù)后門攻擊的解決方案,而可實(shí)現(xiàn)的抗隨機(jī)數(shù)后門攻擊的密碼算法仍然是需要進(jìn)一步研究的主要方向.
現(xiàn)有的密碼算法大多采用靜態(tài)密碼組件(如密鑰生成器、PRNG 等)設(shè)計(jì),這增加了算法在實(shí)現(xiàn)過(guò)程中被植入隨機(jī)數(shù)后門的可能性.動(dòng)態(tài)密碼組件的使用,將能更有效地防止攻擊者在算法中植入后門.例如,研究動(dòng)態(tài)與交叉動(dòng)態(tài)技術(shù)是未來(lái)抗隨機(jī)數(shù)后門密碼算法的一個(gè)研究方向:前者的基本思想在于對(duì)消息用多個(gè)動(dòng)態(tài)變化的密碼算法作用于該消息,并且其中的隨機(jī)數(shù)生成算法使用不同的算法;后者的基本思想在于對(duì)多個(gè)動(dòng)態(tài)變化的隨機(jī)數(shù)生成算法產(chǎn)生的隨機(jī)數(shù)進(jìn)行一些運(yùn)算(如異或等),將運(yùn)算后的結(jié)果用于理論上安全的密碼算法中.直觀上,這兩種技術(shù)可有效抵抗隨機(jī)數(shù)后門攻擊,然而如何對(duì)他們的安全性進(jìn)行形式化分析還有待探討.另外,目前抗隨機(jī)數(shù)后門攻擊密碼算法的研究成果主要集中在加密算法方面,而在密鑰協(xié)商協(xié)議、簽名算法、簽密算法等方面的研究較少.因此,抗隨機(jī)數(shù)后門攻擊的密鑰協(xié)商協(xié)議、簽名算法、簽密算法等方向都是未來(lái)的研究方向.最后,現(xiàn)有的抗隨機(jī)數(shù)后門攻擊密碼算法大多數(shù)只能在隨機(jī)預(yù)言模型下得到證明,在標(biāo)準(zhǔn)模型下可證明安全的抗隨機(jī)數(shù)后門攻擊密碼算法為數(shù)不多.標(biāo)準(zhǔn)模型下,高效的抗隨機(jī)數(shù)后門攻擊密碼算法還待進(jìn)一步研究.