密碼學:從理論到現實

摘要:“一切都會出錯”是任何規劃都應該遵循的主要原則之一。不穩定是事實在解決密碼問題時,會出現不可抗力的情況。多年來,許多科學家都在考慮每一個細節,但現實往往會讓你感到驚訝。在很多方面,正是這種無休止的循環,由一系列開發新的密碼解決方案、識別漏洞,然後才發現漏洞是怎樣形成的,也才吸引人們去研究密碼學。 …

“一切都會出錯”是任何規劃都應該遵循的主要原則之一。

不穩定是事實

在解決密碼問題時,會出現不可抗力的情況。多年來,許多科學家都在考慮每一個細節,但現實往往會讓你感到驚訝。在很多方面,正是這種無休止的循環,由一系列開發新的密碼解決方案、識別漏洞,然後才發現漏洞是怎樣形成的,也才吸引人們去研究密碼學。

例如,著名的TLS協議在他的歷史發展進程中有一個很有趣的插曲:

在2001年,Hugo Krawczyk首次對TLS 1.1中使用的數據保護方案的安全性進行了數學證明,但不到一年後,出現了一種攻擊,表明該協議在數據保護方面存在不穩定性。

不幸的事,這樣的事件在密碼學中並不罕見,上面提到的漏洞問題,在TLS協議中肯定也不是最後一次出現。

每年,在密碼學會議和研討會上,都會出現一些令人驚奇的攻擊案例,這些攻擊乍一看,與理論研究相矛盾,此刻,有個問題就被提出:密碼學理論家的“失誤”原因是什麼?

在回答這個問題之前,讓我們試著弄清楚密碼學的支柱是什麼,對手的模型是什麼,以及關於“信息安全”這樣一個複雜而多方面的概念的知識是如何在世界上形成和擴展的。

模型作為基礎

解決信息安全問題的系統的開發是一個極其複雜和耗時的過程。事實證明,理論研究知識此類系統生命中眾多階段中的一個。同樣重要的是系統的建模、實施和運行階段,從普通用戶的角度來說,運行階段才是最重要的,理論永遠是理論。

每一個階段都是基於前一個階段,並且是前一個階段的邏輯延續:例如,理論研究階段沒有建模是不可能的,因為推理的嚴謹性需要對研究的屬性和對象進行形式化。

密碼學中的建模涉及到對正在開發的系統的所有屬性、用戶與之互動的所有可能方式的深入分析,有時甚至涉及到系統運行的物理條件。

建模的結果是系統的數學模型,其中特別包括所謂的對手模型,事實上,它決定了一個安全的穩定的系統意味著什麼。

對手模型由三個部分組成:攻擊類型、威脅模型和關於對手可用資源的假設。這三個部分加在一起,使我們有可能清楚地定義我們的系統所處的世界:敵人如何與之溝通,他可以從對手那裡學到什麼,他究竟想要實現什麼以及他擁有哪些資源。

攻擊類型決定了敵人在與分析系統交互方面的定性能力。因此,攻擊的類型決定了對手可以接收什麼樣的系統信息,以及他可以如何干擾其運行過程。

一個例子是敵人可以攔截和修改通信渠道上的數據的攻擊類型。在這裡,敵人的能力應該考慮到所有已知的違反所研究系統安全的實踐和理論方法,並儘可能接近在實踐中使用該系統時出現的方法。

威脅模型定義了違反安全屬性的任務,這是對手想要解決的。例子包括偽造信息簽名或洩露機密信息。如果敵人解決了指定的任務,他們就說他“意識受到了威脅”。威脅模型反映了哪些情況違反了特定係統的安全性的想法。

關於敵人資源的假設也是模型中極其重要的部分,現在其決定了敵人的定量能力。通常它們是由一整套因素決定的:敵人的時間和計算資源、程序的大小以及他可以通過與系統交互而接收的信息量。

如果沒有這些限制,談論實踐中使用的大多數係統的安全性是完全沒有意義的,因為,對他們來說,總有一個對手,擁有無限的資源,可以通過簡單的暴力手段找到所需的密鑰,而不使用任何復雜的方法。

客觀現實

一旦研究對象的數學模型出現,就有可能應用合適的數學方法,其結果是先驗絕對準確的(如果作者沒有在計算中出錯並且最初的假設是正確的)。

使用這種方法可以揭示被研究對象的深層屬性,並且在對時間延長的過程的研究中,實際上可以預測它們的未來。

在物理學中,我們預測扔出的石頭會在多少秒內掉在地上,而在密碼學中,我們預測未來幾年密碼系統是否會被黑客入侵。

因此,如果研究的數學部分是準確進行的,其結果不包含錯誤,那麼理論和實踐之間出現看似奇怪的矛盾的主要原因在於對手的模型和系統在實踐中運行的真實條件之間的差異。在這種情況下,模型被認為還是不相關的。

同時,也不應該把責任歸咎於負責建模的員工,在系統開發過程的任何階段,從想法到運行,模型都可能變得不相關。然而,現實和模型之間的差異可能出現在構成模型的三個部門中的任何一個。

攻擊類型不匹配

讓我們看一下TLS1.1中使用的數據保護方案的安全性的數學證明示例,看看現實與Hugo Krawczyk在他的工作中使用的模型之間的差異發生在哪裡,以及導致這種差異的錯誤發生在哪裡。

2001年的相同工作證明了MAC-then-Encrypt認證加密方案的強度,其中首先將模擬插入附加到消息,然後在消息和插入的串聯之後以CBC模式加密。 CBC加密模式的特殊性在於它只能處理可以分成一定固定大小的塊的字符串。

因此,為了能夠處理任何長度的信息,通常採用填充法:在向信息中添加插入物後,根據一定的規則,將產生的字符串填充到所需的大小。在接收方處理信息時,首先進行解密和驗證加法的正確性,然後才檢查模擬的插入。

在Hugo Krawczyk的作品發表不到一年,就出現了針對CBC模式的填充預言機攻擊,它利用對手在檢查解密消息的補碼時獲取有關接收方是否遇到錯誤的信息。

攻擊的結果是違反了傳輸數據的保密性。起初,人們認為TLS協議免受填充預言機攻擊,因為其中的錯誤僅以加密形式返回,因此添加中的錯誤與模擬插入中的錯誤無法區分。

然而,密碼分析者能夠確定,對於大多數實現,在錯誤添加的情況下發布錯誤的時間與發布其他錯誤的時間不同,因為在錯誤添加的情況下,錯誤會立即發布,並且沒有採取進一步行動。

這個時間差使得可以區分接收端返回的錯誤並將填充預言機攻擊應用於TLS協議。

然而,在Krawczyk的模型中,沒有考慮到對手可以在解密期間接收有關錯誤發生位置的信息。

這種遺漏導致攻擊類型與敵人的實際能力不匹配,事實證明這比模型假設的要多。這種機會的出現是由於系統功能的特殊性(錯誤處理的順序)出現在其實施階段。

因此,起初給這位受人尊敬的科學家的工作蒙上陰影的整個情況遠沒有那麼可怕:Krawczy的證明是絕對正確的,只是進行證明的模型變得無關緊要。

威脅模型不匹配

同樣有趣的是威脅模型不匹配引起的漏洞。如果一些可能的情況沒有被認為是負面的,它們就會出現。這種漏洞的一個例子是能夠恢復加密的VoIP對話的近似轉錄,只知道加密數據包的長度。

最初,人們認為對手存在這種信息並不構成違反保密性的巨大威脅,最多只能揭示對話的語言或某些短語的存在。

但是北卡羅來納大學的科學家們發現,通過結合某些編碼語音信息的方法和保留消息長度的流密碼,使用計算語言學和統計方法,可以準確地重新創建整個對話的轉錄。

因此,識別威脅的錯誤在建模階段就悄悄出現了。由於該系統是專門為加密語音電話而創建的,這樣的威脅本可以在加密協議開發的初始階段就被注意到。

對敵方資源的假設不一致

反過來,Sweet32攻擊基於對敵人資源的假設不匹配而產生的漏洞。 Sweet32攻擊破壞了機密性,並使用塊長度較小的塊密碼(例如3DES或塊長度為64位的Blowfish密碼)來針對CBC加密模式。

這種攻擊基於生日悖論,為了成功,需要保持與服務器的連接時間大約38小時,以發送大約785GB的流量。

其實,早在2000年,就有一篇發表的作品中已經給出了破解CBC模式的概率對加密數據量的依賴。在那個年代,即使使用64位分組密碼,加密如此大量的數據,足以打破CBC模式,實際上是不切實際的。

因此,基於64位分組密碼的CBC模式在實踐中被認為是強大的。然而,隨著時間的推移,實施Sweet32所需要的資源不再顯得那麼出色。

只是沒有註意到,在操作階段,模型與現實之間存在不匹配。因此,在實踐中,敵人可用的資源比模型中假設的要多得多。

進化鬥爭

應該注意的是,系統通發現任何漏洞的常見做法是:當所考慮的示例中描述的每個漏洞的出版物發布後,立即採取措施解決這些漏洞。

然而,在無誤的理論研究的前提下,發現的漏洞會觸發另一個同樣重要的過程:分析對手模型與實際情況的差異及其後續擴展,將作為新一輪理論研究的一部分,這個過程本質上是對手模型的演變。

因此,在現實中,一個系統的發展是一個封閉的循環,其中,在解決方案的整合之後,一個同樣重要的運行過程發生了,它也進行了自身的調整。

在操作過程中,我們對敵人能力和安全屬性的鏈接會顯著擴大,有時是根據第三方或內部要求的結果對系統進行黑客攻擊的結果,這樣的“發現”開始了系統生命週期的新迭代。

不完美是不可避免的

但是不應該將此開發順序流程視為不合理,應該將其周期性視為流程不完善的標誌。密碼學與其他科學沒有什麼不同,類似的情況隨處可見。

有一個例子是:人們對地球形狀的理解的發展,它是最有形和最廣為人知的模型之一。該模型經歷從平坦地球模型到球狀地球模型、自轉橢球模型和大帝水準面模型的演變。

在這種情況下,出現與理論預測不一致的情況類似於在實踐中破壞理論上穩定的密碼系統。

對手模型(並在開發真實係統時考慮其結果)增加了這樣的可能性:在系統被破壞的情況下,發現的漏洞將加深我們對信息安全方面的總體理解。

還值得注意的是,理論研究允許在實際實施之前預測許多攻擊。例如,1997年表明使用具有可預測初始化向量的CBC模型是不安全的。

然而,由於所提出的攻擊似乎過於理論化,所以沒有對使用這種加密方法的協議的實施進行修改。

到2011年,儘管有大量研究警告對TLS進行此類攻擊的可能性,但該漏洞仍未得到修復,密碼分析人員提出了該攻擊的實際實現,稱為BEAST。直到那時漏洞才被關閉。

總之,在毛球科技看來,系統開發的每個階段都很重要,應該與前幾個階段相互作用,如此這樣的過程確保了知識的精確進化,而不僅僅是“修補漏洞”。因此,不要忽視任何一個階段,適當關注新模型的發展和理論研究是非常重要的。

量子威脅

大多數人認為,絕大多數支持分佈式賬本交易的加密協議都容易受到強大的量子計算機的攻擊。

量子計算機主要是一種模擬計算系統,它利用量子力學所描述的物理現象來處理數據和傳輸信息。更具體點說,量子計算機使用量子疊加和量子糾纏來計算。

在數據不變性的層面上,區塊鏈得到了很好的保護,甚至不受量子力量的影響。有關交易的信息存儲在註冊表中,該數據的重複記錄可供區塊鏈的所有主體使用,所有參與者相互獨立。

在這方面,為了改變網絡上的數據以修改向交易(竊取支付),必須影響所有區塊,這在沒有百萬用戶確認的情況下是不可能發生的。

只要用戶的錢包才會出現問題和漏洞。這是由於在可預見的未來,量子計算機的力量可能足以成功攻擊64位數的私鑰,而這也是量子計算威脅的唯一假設真實機會。

基於理論假設,俄羅斯聯邦政府金融大學副教授弗拉基米爾·吉辛表示,在擁有100量子比特量子計算機的世界中,比特幣區塊鏈可能被黑客入侵。

現在,上面的都是基於理論假設,還沒有實際的量子計算機出現,就算谷歌製造的49位量子位設備的存在也尚未被證實。

Total
0
Shares
Related Posts