通過自動編寫加密算法,“菲亞特加密”(Fiat Cryptography)技術可以消除錯誤,生成更安全的代碼並提高性能。

公鑰加密最常見的用途之一就是保護移動中的數據。過去,互聯網的數據加密都是由一羣密碼學家實現的,他們會編寫和重寫算法,手動權衡各種數學技術和芯片架構以優化性能,是實實在在的“勞動密集型”工作。這種模式不僅存在明顯的人爲錯誤和非最優算法的問題,而且隨着時間的流逝,算法編寫的數學或芯片架構也將變得過時,這就意味着密碼學家不得不再次動筆計算。

然而最近,隨着麻省理工學院(MIT)研究人員開發出了一款用於創建該代碼的新系統,情況開始發生了變化。

該系統被稱爲 “菲亞特加密”(Fiat Cryptography)
,可以自動爲所有硬件平臺生成並同步驗證經過優化的加密算法,而這一過程以前都是由人工完成的。

MIT 研究人員在今年 5 月份的 EEE 安全與隱私研討會上發表了他們的論文,並在論文中列出了他們系統的細節,以便任何人都能實現它。
據悉,目前該系統已被 Google 用於保護其 Chrome 網絡瀏覽器通信。

Adam Chlipala,領導麻省理工學院計算機科學和人工智能實驗室的研究團隊開發了 Fiat
Cryptography 的計算機科學副教授解釋稱,“我們已經證明,通過使用該系統,人們以後都不必再編寫這種低級的加密算術代碼了。我們可以擁有一個代碼庫來生成各種不同的特殊種類的代碼,摒棄之前的手動過程,這既可以降低開發成本,同時也能大大提升代碼的安全性和正確率。”

在對該系統進行測試時,研究人員發現 自動化生成密鑰和數據加密證書的過程與人工編寫的最佳代碼的性能相匹配,但完成速度明顯更快。 Forfa
Consulting (瑞士數據安全諮詢公司)合夥人兼首席執行官 Rolf von
Roessing 表示,“自動化是加密領域向前邁出的重要一步。幸運的是,此次測試結果顯示,該自動化系統比以前的操作形式更可靠,且更不易出錯。”

經過驗證的密碼技術

在互聯網的數據加密過程中,對於算法的要求十分嚴格。因爲在這個過程中可能存在很多變量——各種數學技術和芯片架構等等,密碼學家需要不斷地編寫和重寫這些算法,以應對不同的變化情況。在此過程中不僅會產生不太理想的算法性能,甚至可能生成軟件錯誤,這些都無異於增加了開發成本。

Fiat Cryptography 不僅可以自動化算法編寫,還可以同步驗證代碼是否正確運行。
Chlipala 解釋稱,“密碼學是一門關於安全通信的學問,它不僅要保持通信私密還要確保你能夠知道通信另一端是誰。經過驗證的密碼技術,就意味着我們有數學定理證實我們的代碼是正確實現的,且正在運行我們想要運行的算法。”

MIT 開發的這款新系統可用於創建密碼學原語(cryptographic
primitives)——用於構建通信加密協議的基本算法——目前已經部署在了谷歌的 BoringSSL 上,這是一個用於生成加密和解密谷歌瀏覽器、Android 應用程序和其他應用程序數據的密鑰和證書的開源加密庫。“珠峯項目”(Project
Everest)——包含微軟、Inria,卡內基梅隆大學和愛丁堡大學在內的一個聯合項目——也有一個庫,可以提供 Mozilla
Firefox、WireGuard VPN 和 Tezos 區塊鏈所使用的密碼學原語。

隨着 Fiat Cryptography 獲得越來越多的支持,它有可能將經過驗證的密碼學也納入主流。舊金山數字風險保護解決方案提供商 Digital
Shadows 的安全工程主管 Richard
Gold 解釋稱,“它是 BoringSSL 的一部分,BoringSSL 是一個流行的加密庫,但由於缺乏可以輕鬆集成到現有工作流程中的高質量實現,使得它無法進入主流市場。”

ISACA 的 von Roessing 認爲,Fiat
Cryptography 成爲主流僅僅是時間的問題,因爲它將帶來顯著的流程改進成果。就像機器人過程自動化一般,Fiat
Cryptography 對於大幅改善整體加密流程起到了重要作用。過去人們依賴於手寫算法,是因爲那時候沒有任何工具和方法能夠可靠地自動生成算法。

應對不同類型的設備

除了從加密算法中移除人爲失誤並生成經過驗證的代碼之外,研究人員開發的這款新系統還可以提高代碼運行方式的性能。

例如,一個用於創建公共和私有密鑰的流行算法在爲瀏覽器和服務器間提供安全的通信通道時會使用“橢圓曲線技術”(elliptical curve
technology)。所謂“橢圓曲線密碼學”(ECC,Elliptic curve
cryptography)是一套關於加密數據、解密數據和交換祕鑰的算法,也是目前被廣泛使用的最強大的,同時也是最難懂的一個密碼學。本質上來說,ECC 本就是通過在一個曲線圖的曲線上隨機選擇點來創建各種不同長度的密鑰。

爲密鑰創建的數字可能很大,以至於大多數芯片需要使用多個寄存器來存儲構成密鑰的“位”(bit)。寄存器是用於存儲數據位的芯片組件,不同類型的設備具有不同的寄存器組件,也就具有不同的計算能力。你必須知道哪些功能可用於規劃執行算術運行的最有效方法。

與其他機密算法一樣,用於管理如何將“位”分配給寄存器的算法通常是手寫的。手寫代碼是將其從一個架構轉移到另一個架構中最簡單的方法。但 MIT 的方法允許自動化代碼生成系統處理這種轉移問題,而不是由人類開發人員進行處理。

MIT 研究人員通過研究現有的手寫 ECC 算法,並將這些技術轉移到他們的代碼庫中來實現了這一點,從而 爲每個架構創建了最佳性能算法列表
。除此之外,該庫還使用了一個編譯器——一種將編程語言轉換爲計算機處理器可以理解的代碼的軟件——通過使用名爲“Coq”的校對工具生成經過驗證的代碼。

但是,創建一個強大的算法是一回事,而針對各種目標平臺和不同的編譯器進行優化又是另外一回事了。毫無疑問,擁有一個緩慢且表現不佳的強大算法是沒有意義的。這就解釋了爲什麼在 PGP (Pretty
Good
Privacy,用於對電子郵件和文件進行加密的軟件)早期人們並沒有將它用於大型數據集中,原因就在於 20 世紀 90 年代的處理器還不夠強大,無法支持快速加密和解密。

量子計算機威脅

隨着 Fiat
Cryptography 變得越來越流行,它可以會推“橢圓曲線加密學”(ECC)一把。ECC 通常是強加密的首選工具,但在過去它並不怎麼受歡迎,甚至對某些用例來說它的“處理速度太過緩慢”。但是隨着 Fiat
Cryptography 的出現和流行,這種情況可能將發生改變,ECC 有可能會得到更廣泛地推廣和應用。

然而,ECC 的日子可能已經屈指可數了。PGP 開發者 Phil Zimmermann 解釋稱,“因爲量子算法的出現,從長遠來看,人們正在逐漸擺脫橢圓曲線技術。”

量子計算機——未來的超高速計算機——對現有的機密形式構成了嚴重的威脅。公鑰加密使用用於保護信息的唯一密鑰。這些唯一密鑰基於具有獨特屬性的數學函數:它們易於在一個方向上計算,但很難在反方向上計算。例如,將兩個素數相乘很容易,但是如果數字足夠大,那麼考慮到當前計算機的計算能力,可能需要比宇宙年齡更長的時間才能將該數字反饋到原來的兩個素數中。

因子和離散對數(discrete
logarithms)構成了當前使用的所有公鑰算法的基礎。但是,當量子計算機在十年左右的時間內建成時,它們將能夠非常快速地計算數字並破解離散對數,甚至幾乎可以摧毀當前使用的所有公鑰算法。更令人震驚的是,破解公鑰加密的過程不需要數十億年,而是短短的幾秒。

毋庸置疑,當量子計算機出現後,現有的廣泛使用的密碼算法特別是公鑰算法例如 RSA 等將變得不安全。而 “抗量子密碼算法”(Post-quantum
Cryptographic algorithm)
,將是量子計算機出現後仍然安全的算法,其設計初衷就是能夠在量子計算機的世界中運行。

在量子計算機時代到來之前,Chlipala 和他的團隊將繼續致力於將 Fiat
Cryptography 擴展到密碼學原語之外。加密是一個偉大的領域,因爲人們關心安全性和正確性。加密領域的錯誤可能會產生各種各樣的安全後果,因此,該領域從業者一直對提供數學保證的想法持開放態度,以求尋找到更爲安全可靠的加密技術。

https://github.com/mit-plv/fiat-crypto

相關閱讀

加密的現實與虛幻

後門之王:談一談加密算法中的數學後門

“後量子加密時代”即將到來
我們做好準備了嗎?

來源鏈接:mp.weixin.qq.com