通過自動編寫加密算法,“菲亞特加密”(Fiat Cryptography)技術可以消除錯誤,生成更安全的代碼并提高性能。
公鑰加密最常見的用途之一就是保護移動中的數據。過去,互聯網的數據加密都是由一群密碼學家實現的,他們會編寫和重寫算法,手動權衡各種數學技術和芯片架構以優化性能,是實實在在的“勞動密集型”工作。這種模式不僅存在明顯的人為錯誤和非最優算法的問題,而且隨著時間的流逝,算法編寫的數學或芯片架構也將變得過時,這就意味著密碼學家不得不再次動筆計算。
然而最近,隨著麻省理工學院(MIT)研究人員開發出了一款用于創建該代碼的新系統,情況開始發生了變化。
該系統被稱為“菲亞特加密”(Fiat Cryptography),可以自動為所有硬件平臺生成并同步驗證經過優化的加密算法,而這一過程以前都是由人工完成的。
MIT研究人員在今年5月份的EEE安全與隱私研討會上發表了他們的論文,并在論文中列出了他們系統的細節,以便任何人都能實現它。據悉,目前該系統已被Google用于保護其Chrome網絡瀏覽器通信。
Adam Chlipala,領導麻省理工學院計算機科學和人工智能實驗室的研究團隊開發了Fiat Cryptography的計算機科學副教授解釋稱,“我們已經證明,通過使用該系統,人們以后都不必再編寫這種低級的加密算術代碼了。我們可以擁有一個代碼庫來生成各種不同的特殊種類的代碼,摒棄之前的手動過程,這既可以降低開發成本,同時也能大大提升代碼的安全性和正確率?!?/p>
在對該系統進行測試時,研究人員發現自動化生成密鑰和數據加密證書的過程與人工編寫的最佳代碼的性能相匹配,但完成速度明顯更快。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是一個流行的加密庫,但由于缺乏可以輕松集成到現有工作流程中的高質量實現,使得它無法進入主流市場?!?/p>
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解釋稱,“因為量子算法的出現,從長遠來看,人們正在逐漸擺脫橢圓曲線技術?!?/p>
量子計算機——未來的超高速計算機——對現有的機密形式構成了嚴重的威脅。公鑰加密使用用于保護信息的唯一密鑰。這些唯一密鑰基于具有獨特屬性的數學函數:它們易于在一個方向上計算,但很難在反方向上計算。例如,將兩個素數相乘很容易,但是如果數字足夠大,那么考慮到當前計算機的計算能力,可能需要比宇宙年齡更長的時間才能將該數字反饋到原來的兩個素數中。
因子和離散對數(discrete logarithms)構成了當前使用的所有公鑰算法的基礎。但是,當量子計算機在十年左右的時間內建成時,它們將能夠非??焖俚赜嬎銛底植⑵平怆x散對數,甚至幾乎可以摧毀當前使用的所有公鑰算法。更令人震驚的是,破解公鑰加密的過程不需要數十億年,而是短短的幾秒。
毋庸置疑,當量子計算機出現后,現有的廣泛使用的密碼算法特別是公鑰算法例如RSA等將變得不安全。而“抗量子密碼算法”(Post-quantum Cryptographic algorithm),將是量子計算機出現后仍然安全的算法,其設計初衷就是能夠在量子計算機的世界中運行。
在量子計算機時代到來之前,Chlipala和他的團隊將繼續致力于將Fiat Cryptography擴展到密碼學原語之外。加密是一個偉大的領域,因為人們關心安全性和正確性。加密領域的錯誤可能會產生各種各樣的安全后果,因此,該領域從業者一直對提供數學保證的想法持開放態度,以求尋找到更為安全可靠的加密技術。
https://github.com/mit-plv/fiat-crypto