通過自動(dòng)編寫加密算法,“菲亞特加密”(Fiat Cryptography)技術(shù)可以消除錯(cuò)誤,生成更安全的代碼并提高性能。
公鑰加密最常見的用途之一就是保護(hù)移動(dòng)中的數(shù)據(jù)。過去,互聯(lián)網(wǎng)的數(shù)據(jù)加密都是由一群密碼學(xué)家實(shí)現(xiàn)的,他們會(huì)編寫和重寫算法,手動(dòng)權(quán)衡各種數(shù)學(xué)技術(shù)和芯片架構(gòu)以優(yōu)化性能,是實(shí)實(shí)在在的“勞動(dòng)密集型”工作。這種模式不僅存在明顯的人為錯(cuò)誤和非最優(yōu)算法的問題,而且隨著時(shí)間的流逝,算法編寫的數(shù)學(xué)或芯片架構(gòu)也將變得過時(shí),這就意味著密碼學(xué)家不得不再次動(dòng)筆計(jì)算。
然而最近,隨著麻省理工學(xué)院(MIT)研究人員開發(fā)出了一款用于創(chuàng)建該代碼的新系統(tǒng),情況開始發(fā)生了變化。
該系統(tǒng)被稱為“菲亞特加密”(Fiat Cryptography),可以自動(dòng)為所有硬件平臺(tái)生成并同步驗(yàn)證經(jīng)過優(yōu)化的加密算法,而這一過程以前都是由人工完成的。
MIT研究人員在今年5月份的EEE安全與隱私研討會(huì)上發(fā)表了他們的論文,并在論文中列出了他們系統(tǒng)的細(xì)節(jié),以便任何人都能實(shí)現(xiàn)它。據(jù)悉,目前該系統(tǒng)已被Google用于保護(hù)其Chrome網(wǎng)絡(luò)瀏覽器通信。
Adam Chlipala,領(lǐng)導(dǎo)麻省理工學(xué)院計(jì)算機(jī)科學(xué)和人工智能實(shí)驗(yàn)室的研究團(tuán)隊(duì)開發(fā)了Fiat Cryptography的計(jì)算機(jī)科學(xué)副教授解釋稱,“我們已經(jīng)證明,通過使用該系統(tǒng),人們以后都不必再編寫這種低級(jí)的加密算術(shù)代碼了。我們可以擁有一個(gè)代碼庫來生成各種不同的特殊種類的代碼,摒棄之前的手動(dòng)過程,這既可以降低開發(fā)成本,同時(shí)也能大大提升代碼的安全性和正確率。”
在對該系統(tǒng)進(jìn)行測試時(shí),研究人員發(fā)現(xiàn)自動(dòng)化生成密鑰和數(shù)據(jù)加密證書的過程與人工編寫的最佳代碼的性能相匹配,但完成速度明顯更快。Forfa Consulting(瑞士數(shù)據(jù)安全咨詢公司)合伙人兼首席執(zhí)行官Rolf von Roessing表示,“自動(dòng)化是加密領(lǐng)域向前邁出的重要一步。幸運(yùn)的是,此次測試結(jié)果顯示,該自動(dòng)化系統(tǒng)比以前的操作形式更可靠,且更不易出錯(cuò)?!?/p>
經(jīng)過驗(yàn)證的密碼技術(shù)
在互聯(lián)網(wǎng)的數(shù)據(jù)加密過程中,對于算法的要求十分嚴(yán)格。因?yàn)樵谶@個(gè)過程中可能存在很多變量——各種數(shù)學(xué)技術(shù)和芯片架構(gòu)等等,密碼學(xué)家需要不斷地編寫和重寫這些算法,以應(yīng)對不同的變化情況。在此過程中不僅會(huì)產(chǎn)生不太理想的算法性能,甚至可能生成軟件錯(cuò)誤,這些都無異于增加了開發(fā)成本。
Fiat Cryptography不僅可以自動(dòng)化算法編寫,還可以同步驗(yàn)證代碼是否正確運(yùn)行。Chlipala解釋稱,“密碼學(xué)是一門關(guān)于安全通信的學(xué)問,它不僅要保持通信私密還要確保你能夠知道通信另一端是誰。經(jīng)過驗(yàn)證的密碼技術(shù),就意味著我們有數(shù)學(xué)定理證實(shí)我們的代碼是正確實(shí)現(xiàn)的,且正在運(yùn)行我們想要運(yùn)行的算法?!?/p>
MIT開發(fā)的這款新系統(tǒng)可用于創(chuàng)建密碼學(xué)原語(cryptographic primitives)——用于構(gòu)建通信加密協(xié)議的基本算法——目前已經(jīng)部署在了谷歌的BoringSSL上,這是一個(gè)用于生成加密和解密谷歌瀏覽器、Android應(yīng)用程序和其他應(yīng)用程序數(shù)據(jù)的密鑰和證書的開源加密庫?!爸榉屙?xiàng)目”(Project Everest)——包含微軟、Inria,卡內(nèi)基梅隆大學(xué)和愛丁堡大學(xué)在內(nèi)的一個(gè)聯(lián)合項(xiàng)目——也有一個(gè)庫,可以提供Mozilla Firefox、WireGuard VPN和Tezos區(qū)塊鏈所使用的密碼學(xué)原語。
隨著Fiat Cryptography獲得越來越多的支持,它有可能將經(jīng)過驗(yàn)證的密碼學(xué)也納入主流。舊金山數(shù)字風(fēng)險(xiǎn)保護(hù)解決方案提供商Digital Shadows的安全工程主管Richard Gold解釋稱,“它是BoringSSL的一部分,BoringSSL是一個(gè)流行的加密庫,但由于缺乏可以輕松集成到現(xiàn)有工作流程中的高質(zhì)量實(shí)現(xiàn),使得它無法進(jìn)入主流市場。”
ISACA的von Roessing認(rèn)為,F(xiàn)iat Cryptography成為主流僅僅是時(shí)間的問題,因?yàn)樗鼘盹@著的流程改進(jìn)成果。就像機(jī)器人過程自動(dòng)化一般,F(xiàn)iat Cryptography對于大幅改善整體加密流程起到了重要作用。過去人們依賴于手寫算法,是因?yàn)槟菚r(shí)候沒有任何工具和方法能夠可靠地自動(dòng)生成算法。
應(yīng)對不同類型的設(shè)備
除了從加密算法中移除人為失誤并生成經(jīng)過驗(yàn)證的代碼之外,研究人員開發(fā)的這款新系統(tǒng)還可以提高代碼運(yùn)行方式的性能。
例如,一個(gè)用于創(chuàng)建公共和私有密鑰的流行算法在為瀏覽器和服務(wù)器間提供安全的通信通道時(shí)會(huì)使用“橢圓曲線技術(shù)”(elliptical curve technology)。所謂“橢圓曲線密碼學(xué)”(ECC,Elliptic curve cryptography)是一套關(guān)于加密數(shù)據(jù)、解密數(shù)據(jù)和交換秘鑰的算法,也是目前被廣泛使用的最強(qiáng)大的,同時(shí)也是最難懂的一個(gè)密碼學(xué)。本質(zhì)上來說,ECC本就是通過在一個(gè)曲線圖的曲線上隨機(jī)選擇點(diǎn)來創(chuàng)建各種不同長度的密鑰。
為密鑰創(chuàng)建的數(shù)字可能很大,以至于大多數(shù)芯片需要使用多個(gè)寄存器來存儲(chǔ)構(gòu)成密鑰的“位”(bit)。寄存器是用于存儲(chǔ)數(shù)據(jù)位的芯片組件,不同類型的設(shè)備具有不同的寄存器組件,也就具有不同的計(jì)算能力。你必須知道哪些功能可用于規(guī)劃執(zhí)行算術(shù)運(yùn)行的最有效方法。
與其他機(jī)密算法一樣,用于管理如何將“位”分配給寄存器的算法通常是手寫的。手寫代碼是將其從一個(gè)架構(gòu)轉(zhuǎn)移到另一個(gè)架構(gòu)中最簡單的方法。但MIT的方法允許自動(dòng)化代碼生成系統(tǒng)處理這種轉(zhuǎn)移問題,而不是由人類開發(fā)人員進(jìn)行處理。
MIT研究人員通過研究現(xiàn)有的手寫ECC算法,并將這些技術(shù)轉(zhuǎn)移到他們的代碼庫中來實(shí)現(xiàn)了這一點(diǎn),從而為每個(gè)架構(gòu)創(chuàng)建了最佳性能算法列表。除此之外,該庫還使用了一個(gè)編譯器——一種將編程語言轉(zhuǎn)換為計(jì)算機(jī)處理器可以理解的代碼的軟件——通過使用名為“Coq”的校對工具生成經(jīng)過驗(yàn)證的代碼。
但是,創(chuàng)建一個(gè)強(qiáng)大的算法是一回事,而針對各種目標(biāo)平臺(tái)和不同的編譯器進(jìn)行優(yōu)化又是另外一回事了。毫無疑問,擁有一個(gè)緩慢且表現(xiàn)不佳的強(qiáng)大算法是沒有意義的。這就解釋了為什么在PGP(Pretty Good Privacy,用于對電子郵件和文件進(jìn)行加密的軟件)早期人們并沒有將它用于大型數(shù)據(jù)集中,原因就在于20世紀(jì)90年代的處理器還不夠強(qiáng)大,無法支持快速加密和解密。
量子計(jì)算機(jī)威脅
隨著Fiat Cryptography變得越來越流行,它可以會(huì)推“橢圓曲線加密學(xué)”(ECC)一把。ECC通常是強(qiáng)加密的首選工具,但在過去它并不怎么受歡迎,甚至對某些用例來說它的“處理速度太過緩慢”。但是隨著Fiat Cryptography的出現(xiàn)和流行,這種情況可能將發(fā)生改變,ECC有可能會(huì)得到更廣泛地推廣和應(yīng)用。
然而,ECC的日子可能已經(jīng)屈指可數(shù)了。PGP開發(fā)者Phil Zimmermann解釋稱,“因?yàn)榱孔铀惴ǖ某霈F(xiàn),從長遠(yuǎn)來看,人們正在逐漸擺脫橢圓曲線技術(shù)?!?/p>
量子計(jì)算機(jī)——未來的超高速計(jì)算機(jī)——對現(xiàn)有的機(jī)密形式構(gòu)成了嚴(yán)重的威脅。公鑰加密使用用于保護(hù)信息的唯一密鑰。這些唯一密鑰基于具有獨(dú)特屬性的數(shù)學(xué)函數(shù):它們易于在一個(gè)方向上計(jì)算,但很難在反方向上計(jì)算。例如,將兩個(gè)素?cái)?shù)相乘很容易,但是如果數(shù)字足夠大,那么考慮到當(dāng)前計(jì)算機(jī)的計(jì)算能力,可能需要比宇宙年齡更長的時(shí)間才能將該數(shù)字反饋到原來的兩個(gè)素?cái)?shù)中。
因子和離散對數(shù)(discrete logarithms)構(gòu)成了當(dāng)前使用的所有公鑰算法的基礎(chǔ)。但是,當(dāng)量子計(jì)算機(jī)在十年左右的時(shí)間內(nèi)建成時(shí),它們將能夠非常快速地計(jì)算數(shù)字并破解離散對數(shù),甚至幾乎可以摧毀當(dāng)前使用的所有公鑰算法。更令人震驚的是,破解公鑰加密的過程不需要數(shù)十億年,而是短短的幾秒。
毋庸置疑,當(dāng)量子計(jì)算機(jī)出現(xiàn)后,現(xiàn)有的廣泛使用的密碼算法特別是公鑰算法例如RSA等將變得不安全。而“抗量子密碼算法”(Post-quantum Cryptographic algorithm),將是量子計(jì)算機(jī)出現(xiàn)后仍然安全的算法,其設(shè)計(jì)初衷就是能夠在量子計(jì)算機(jī)的世界中運(yùn)行。
在量子計(jì)算機(jī)時(shí)代到來之前,Chlipala和他的團(tuán)隊(duì)將繼續(xù)致力于將Fiat Cryptography擴(kuò)展到密碼學(xué)原語之外。加密是一個(gè)偉大的領(lǐng)域,因?yàn)槿藗冴P(guān)心安全性和正確性。加密領(lǐng)域的錯(cuò)誤可能會(huì)產(chǎn)生各種各樣的安全后果,因此,該領(lǐng)域從業(yè)者一直對提供數(shù)學(xué)保證的想法持開放態(tài)度,以求尋找到更為安全可靠的加密技術(shù)。
https://github.com/mit-plv/fiat-crypto