“一切都會(huì)出錯(cuò)”是任何規(guī)劃都應(yīng)該遵循的主要原則之一。
不穩(wěn)定是事實(shí)
在解決密碼問題時(shí),會(huì)出現(xiàn)不可抗力的情況。多年來,許多科學(xué)家都在考慮每一個(gè)細(xì)節(jié),但現(xiàn)實(shí)往往會(huì)讓你感到驚訝。在很多方面,正是這種無(wú)休止的循環(huán),由一系列開發(fā)新的密碼解決方案、識(shí)別漏洞,然后才發(fā)現(xiàn)漏洞是怎樣形成的,也才吸引人們?nèi)パ芯棵艽a學(xué)。
例如,著名的TLS協(xié)議在他的歷史發(fā)展進(jìn)程中有一個(gè)很有趣的插曲:
在2001年,Hugo Krawczyk首次對(duì)TLS 1.1中使用的數(shù)據(jù)保護(hù)方案的安全性進(jìn)行了數(shù)學(xué)證明,但不到一年后,出現(xiàn)了一種攻擊,表明該協(xié)議在數(shù)據(jù)保護(hù)方面存在不穩(wěn)定性。
不幸的是,這樣的事件在密碼學(xué)中并不罕見,上面提到的漏洞問題,在TLS協(xié)議中肯定也不是最后一次出現(xiàn)。
每年,在密碼學(xué)會(huì)議和研討會(huì)上,都會(huì)出現(xiàn)一些令人驚奇的攻擊案例,這些攻擊乍一看,與理論研究相矛盾,此刻,有個(gè)問題就被提出:密碼學(xué)理論家的“失誤”原因是什么?
在回答這個(gè)問題之前,讓我們?cè)囍宄艽a學(xué)的支柱是什么,對(duì)手的模型是什么,以及關(guān)于“信息安全”這樣一個(gè)復(fù)雜而多方面的概念的知識(shí)是如何在世界上形成和擴(kuò)展的。
模型作為基礎(chǔ)
解決信息安全問題的系統(tǒng)的開發(fā)是一個(gè)極其復(fù)雜和耗時(shí)的過程。事實(shí)證明,理論研究知識(shí)此類系統(tǒng)生命中眾多階段中的一個(gè)。同樣重要的是系統(tǒng)的建模、實(shí)施和運(yùn)行階段,從普通用戶的角度來說,運(yùn)行階段才是最重要的,理論永遠(yuǎn)是理論。
每一個(gè)階段都是基于前一個(gè)階段,并且是前一個(gè)階段的邏輯延續(xù):例如,理論研究階段沒有建模是不可能的,因?yàn)橥评淼膰?yán)謹(jǐn)性需要對(duì)研究的屬性和對(duì)象進(jìn)行形式化。
密碼學(xué)中的建模涉及到對(duì)正在開發(fā)的系統(tǒng)的所有屬性、用戶與之互動(dòng)的所有可能方式的深入分析,有時(shí)甚至涉及到系統(tǒng)運(yùn)行的物理?xiàng)l件。
建模的結(jié)果是系統(tǒng)的數(shù)學(xué)模型,其中特別包括所謂的對(duì)手模型,事實(shí)上,它決定了一個(gè)安全的穩(wěn)定的系統(tǒng)意味著什么。
對(duì)手模型由三個(gè)部分組成:攻擊類型、威脅模型和關(guān)于對(duì)手可用資源的假設(shè)。這三個(gè)部分加在一起,使我們有可能清楚地定義我們的系統(tǒng)所處的世界:敵人如何與之溝通,他可以從對(duì)手那里學(xué)到什么,他究竟想要實(shí)現(xiàn)什么以及他擁有哪些資源。
攻擊類型決定了敵人在與分析系統(tǒng)交互方面的定性能力。因此,攻擊的類型決定了對(duì)手可以接收什么樣的系統(tǒng)信息,以及他可以如何干擾其運(yùn)行過程。
一個(gè)例子是敵人可以攔截和修改通信渠道上的數(shù)據(jù)的攻擊類型。在這里,敵人的能力應(yīng)該考慮到所有已知的違反所研究系統(tǒng)安全的實(shí)踐和理論方法,并盡可能接近在實(shí)踐中使用該系統(tǒng)時(shí)出現(xiàn)的方法。
威脅模型定義了違反安全屬性的任務(wù),這是對(duì)手想要解決的。例子包括偽造信息簽名或泄露機(jī)密信息。如果敵人解決了指定的任務(wù),他們就說他“意識(shí)受到了威脅”。威脅模型反映了哪些情況違反了特定系統(tǒng)的安全性的想法。
關(guān)于敵人資源的假設(shè)也是模型中極其重要的部分,現(xiàn)在其決定了敵人的定量能力。通常它們是由一整套因素決定的:敵人的時(shí)間和計(jì)算資源、程序的大小以及他可以通過與系統(tǒng)交互而接收的信息量。
如果沒有這些限制,談?wù)搶?shí)踐中使用的大多數(shù)系統(tǒng)的安全性是完全沒有意義的,因?yàn)?,?duì)他們來說,總有一個(gè)對(duì)手,擁有無(wú)限的資源,可以通過簡(jiǎn)單的暴力手段找到所需的密鑰,而不使用任何復(fù)雜的方法。
客觀現(xiàn)實(shí)
一旦研究對(duì)象的數(shù)學(xué)模型出現(xiàn),就有可能應(yīng)用合適的數(shù)學(xué)方法,其結(jié)果是先驗(yàn)絕對(duì)準(zhǔn)確的(如果作者沒有在計(jì)算中出錯(cuò)并且最初的假設(shè)是正確的)。
使用這種方法可以揭示被研究對(duì)象的深層屬性,并且在對(duì)時(shí)間延長(zhǎng)的過程的研究中,實(shí)際上可以預(yù)測(cè)它們的未來。
在物理學(xué)中,我們預(yù)測(cè)扔出的石頭會(huì)在多少秒內(nèi)掉在地上,而在密碼學(xué)中,我們預(yù)測(cè)未來幾年密碼系統(tǒng)是否會(huì)被黑客入侵。
因此,如果研究的數(shù)學(xué)部分是準(zhǔn)確進(jìn)行的,其結(jié)果不包含錯(cuò)誤,那么理論和實(shí)踐之間出現(xiàn)看似奇怪的矛盾的主要原因在于對(duì)手的模型和系統(tǒng)在實(shí)踐中運(yùn)行的真實(shí)條件之間的差異。在這種情況下,模型被認(rèn)為還是不相關(guān)的。
同時(shí),也不應(yīng)該把責(zé)任歸咎于負(fù)責(zé)建模的員工,在系統(tǒng)開發(fā)過程的任何階段,從想法到運(yùn)行,模型都可能變得不相關(guān)。然而,現(xiàn)實(shí)和模型之間的差異可能出現(xiàn)在構(gòu)成模型的三個(gè)部門中的任何一個(gè)。
攻擊類型不匹配
讓我們看一下TLS1.1中使用的數(shù)據(jù)保護(hù)方案的安全性的數(shù)學(xué)證明示例,看看現(xiàn)實(shí)與Hugo Krawczyk在他的工作中使用的模型之間的差異發(fā)生在哪里,以及導(dǎo)致這種差異的錯(cuò)誤發(fā)生在哪里。
2001年的相同工作證明了MAC-then-Encrypt認(rèn)證加密方案的強(qiáng)度,其中首先將模擬插入附加到消息,然后在消息和插入的串聯(lián)之后以CBC模式加密。CBC加密模式的特殊性在于它只能處理可以分成一定固定大小的塊的字符串。
因此,為了能夠處理任何長(zhǎng)度的信息,通常采用填充法:在向信息中添加插入物后,根據(jù)一定的規(guī)則,將產(chǎn)生的字符串填充到所需的大小。在接收方處理信息時(shí),首先進(jìn)行解密和驗(yàn)證加法的正確性,然后才檢查模擬的插入。
在Hugo Krawczyk的作品發(fā)表不到一年,就出現(xiàn)了針對(duì)CBC模式的填充預(yù)言機(jī)攻擊,它利用對(duì)手在檢查解密消息的補(bǔ)碼時(shí)獲取有關(guān)接收方是否遇到錯(cuò)誤的信息。
攻擊的結(jié)果是違反了傳輸數(shù)據(jù)的保密性。起初,人們認(rèn)為TLS協(xié)議免受填充預(yù)言機(jī)攻擊,因?yàn)槠渲械腻e(cuò)誤僅以加密形式返回,因此添加中的錯(cuò)誤與模擬插入中的錯(cuò)誤無(wú)法區(qū)分。
然而,密碼分析者能夠確定,對(duì)于大多數(shù)實(shí)現(xiàn),在錯(cuò)誤添加的情況下發(fā)布錯(cuò)誤的時(shí)間與發(fā)布其他錯(cuò)誤的時(shí)間不同,因?yàn)樵阱e(cuò)誤添加的情況下,錯(cuò)誤會(huì)立即發(fā)布,并且沒有采取進(jìn)一步行動(dòng)。
這個(gè)時(shí)間差使得可以區(qū)分接收端返回的錯(cuò)誤并將填充預(yù)言機(jī)攻擊應(yīng)用于TLS協(xié)議。
然而,在Krawczyk的模型中,沒有考慮到對(duì)手可以在解密期間接收有關(guān)錯(cuò)誤發(fā)生位置的信息。
這種遺漏導(dǎo)致攻擊類型與敵人的實(shí)際能力不匹配,事實(shí)證明這比模型假設(shè)的要多。這種機(jī)會(huì)的出現(xiàn)是由于系統(tǒng)功能的特殊性(錯(cuò)誤處理的順序)出現(xiàn)在其實(shí)施階段。
因此,起初給這位受人尊敬的科學(xué)家的工作蒙上陰影的整個(gè)情況遠(yuǎn)沒有那么可怕:Krawczy的證明是絕對(duì)正確的,只是進(jìn)行證明的模型變得無(wú)關(guān)緊要。
威脅模型不匹配
同樣有趣的是威脅模型不匹配引起的漏洞。如果一些可能的情況沒有被認(rèn)為是負(fù)面的,它們就會(huì)出現(xiàn)。這種漏洞的一個(gè)例子是能夠恢復(fù)加密的VoIP對(duì)話的近似轉(zhuǎn)錄,只知道加密數(shù)據(jù)包的長(zhǎng)度。
最初,人們認(rèn)為對(duì)手存在這種信息并不構(gòu)成違反保密性的巨大威脅,最多只能揭示對(duì)話的語(yǔ)言或某些短語(yǔ)的存在。
但是北卡羅來納大學(xué)的科學(xué)家們發(fā)現(xiàn),通過結(jié)合某些編碼語(yǔ)音信息的方法和保留消息長(zhǎng)度的流密碼,使用計(jì)算語(yǔ)言學(xué)和統(tǒng)計(jì)方法,可以準(zhǔn)確地重新創(chuàng)建整個(gè)對(duì)話的轉(zhuǎn)錄。
因此,識(shí)別威脅的錯(cuò)誤在建模階段就悄悄出現(xiàn)了。由于該系統(tǒng)是專門為加密語(yǔ)音電話而創(chuàng)建的,這樣的威脅本可以在加密協(xié)議開發(fā)的初始階段就被注意到。
對(duì)敵方資源的假設(shè)不一致
反過來,Sweet32攻擊基于對(duì)敵人資源的假設(shè)不匹配而產(chǎn)生的漏洞。Sweet32攻擊破壞了機(jī)密性,并使用塊長(zhǎng)度較小的塊密碼(例如3DES或塊長(zhǎng)度為64位的Blowfish密碼)來針對(duì)CBC加密模式。
這種攻擊基于生日悖論,為了成功,需要保持與服務(wù)器的連接時(shí)間大約38小時(shí),以發(fā)送大約785GB的流量。
其實(shí),早在2000年,就有一篇發(fā)表的作品中已經(jīng)給出了破解CBC模式的概率對(duì)加密數(shù)據(jù)量的依賴。在那個(gè)年代,即使使用64位分組密碼,加密如此大量的數(shù)據(jù),足以打破CBC模式,實(shí)際上是不切實(shí)際的。
因此,基于64位分組密碼的CBC模式在實(shí)踐中被認(rèn)為是強(qiáng)大的。然而,隨著時(shí)間的推移,實(shí)施Sweet32所需要的資源不再顯得那么出色。
只是沒有注意到,在操作階段,模型與現(xiàn)實(shí)之間存在不匹配。因此,在實(shí)踐中,敵人可用的資源比模型中假設(shè)的要多得多。
進(jìn)化斗爭(zhēng)
應(yīng)該注意的是,系統(tǒng)通發(fā)現(xiàn)任何漏洞的常見做法是:當(dāng)所考慮的示例中描述的每個(gè)漏洞的出版物發(fā)布后,立即采取措施解決這些漏洞。
然而,在無(wú)誤的理論研究的前提下,發(fā)現(xiàn)的漏洞會(huì)觸發(fā)另一個(gè)同樣重要的過程:分析對(duì)手模型與實(shí)際情況的差異及其后續(xù)擴(kuò)展,將作為新一輪理論研究的一部分,這個(gè)過程本質(zhì)上是對(duì)手模型的演變。
因此,在現(xiàn)實(shí)中,一個(gè)系統(tǒng)的發(fā)展是一個(gè)封閉的循環(huán),其中,在解決方案的整合之后,一個(gè)同樣重要的運(yùn)行過程發(fā)生了,它也進(jìn)行了自身的調(diào)整。
在操作過程中,我們對(duì)敵人能力和安全屬性的鏈接會(huì)顯著擴(kuò)大,有時(shí)是根據(jù)第三方或內(nèi)部要求的結(jié)果對(duì)系統(tǒng)進(jìn)行黑客攻擊的結(jié)果,這樣的“發(fā)現(xiàn)”開始了系統(tǒng)生命周期的新迭代。
不完美是不可避免的
但是不應(yīng)該將此開發(fā)順序流程視為不合理,應(yīng)該將其周期性視為流程不完善的標(biāo)志。密碼學(xué)與其他科學(xué)沒有什么不同,類似的情況隨處可見。
有一個(gè)例子是:人們對(duì)地球形狀的理解的發(fā)展,它是最有形和最廣為人知的模型之一。該模型經(jīng)歷從平坦地球模型到球狀地球模型、自轉(zhuǎn)橢球模型和大帝水準(zhǔn)面模型的演變。
在這種情況下,出現(xiàn)與理論預(yù)測(cè)不一致的情況類似于在實(shí)踐中破壞理論上穩(wěn)定的密碼系統(tǒng)。
對(duì)手模型(并在開發(fā)真實(shí)系統(tǒng)時(shí)考慮其結(jié)果)增加了這樣的可能性:在系統(tǒng)被破壞的情況下,發(fā)現(xiàn)的漏洞將加深我們對(duì)信息安全方面的總體理解。
還值得注意的是,理論研究允許在實(shí)際實(shí)施之前預(yù)測(cè)許多攻擊。例如,1997年表明使用具有可預(yù)測(cè)初始化向量的CBC模型是不安全的。
然而,由于所提出的攻擊似乎過于理論化,所以沒有對(duì)使用這種加密方法的協(xié)議的實(shí)施進(jìn)行修改。
到2011年,盡管有大量研究警告對(duì)TLS進(jìn)行此類攻擊的可能性,但該漏洞仍未得到修復(fù),密碼分析人員提出了該攻擊的實(shí)際實(shí)現(xiàn),稱為BEAST。直到那時(shí)漏洞才被關(guān)閉。
總之,在毛球科技看來,系統(tǒng)開發(fā)的每個(gè)階段都很重要,應(yīng)該與前幾個(gè)階段相互作用,如此這樣的過程確保了知識(shí)的精確進(jìn)化,而不僅僅是“修補(bǔ)漏洞”。因此,不要忽視任何一個(gè)階段,適當(dāng)關(guān)注新模型的發(fā)展和理論研究是非常重要的。
量子威脅
大多數(shù)人認(rèn)為,絕大多數(shù)支持分布式賬本交易的加密協(xié)議都容易受到強(qiáng)大的量子計(jì)算機(jī)的攻擊。
量子計(jì)算機(jī)主要是一種模擬計(jì)算系統(tǒng),它利用量子力學(xué)所描述的物理現(xiàn)象來處理數(shù)據(jù)和傳輸信息。更具體點(diǎn)說,量子計(jì)算機(jī)使用量子疊加和量子糾纏來計(jì)算。
在數(shù)據(jù)不變性的層面上,區(qū)塊鏈得到了很好的保護(hù),甚至不受量子力量的影響。有關(guān)交易的信息存儲(chǔ)在注冊(cè)表中,該數(shù)據(jù)的重復(fù)記錄可供區(qū)塊鏈的所有主體使用,所有參與者相互獨(dú)立。
在這方面,為了改變網(wǎng)絡(luò)上的數(shù)據(jù)以修改向交易(竊取支付),必須影響所有區(qū)塊,這在沒有百萬(wàn)用戶確認(rèn)的情況下是不可能發(fā)生的。
只要用戶的錢包才會(huì)出現(xiàn)問題和漏洞。這是由于在可預(yù)見的未來,量子計(jì)算機(jī)的力量可能足以成功攻擊64位數(shù)的私鑰,而這也是量子計(jì)算威脅的唯一假設(shè)真實(shí)機(jī)會(huì)。
基于理論假設(shè),俄羅斯聯(lián)邦政府金融大學(xué)副教授弗拉基米爾·吉辛表示,在擁有100量子比特量子計(jì)算機(jī)的世界中,比特幣區(qū)塊鏈可能被黑客入侵。
現(xiàn)在,上面的都是基于理論假設(shè),還沒有實(shí)際的量子計(jì)算機(jī)出現(xiàn),就算谷歌制造的49位量子位設(shè)備的存在也尚未被證實(shí)。