混淆程序:代碼最安全的加密方式

2021-01-13 環球網

本文轉自【科技日報】;

幾十年來,計算機科學家一直都想驗證是否存在絕對安全的方法來加密電腦程式,讓人們在使用計算機的同時卻無法破解其程序。

在2020年底,幾位學者成功找到了一種加密方式,讓計算機用戶無法通過獲取代碼破解程序。

加密程序代碼

首先要對其進行混淆

不可區分混淆(indistinguishability obfuscation,簡稱IO)是一種強大的加密算法,它不僅能隱藏數據集,還能隱藏程序本身,從而實現幾乎所有的加密協議。

要想知道不可區分混淆是什麼,我們不妨先來看一看混淆是什麼。

對於程式設計師來說,最寶貴的自然是代碼,一旦原始碼被人獲取,基本上就等於程式設計師編寫代碼花費的心血付諸東流,還會涉及到智慧財產權糾紛。為了保護代碼,有的程式設計師會在導出程序之前採取一些手段來混淆程序。

當前程序混淆有兩種方式,第一種是全文替換關鍵詞,把整段代碼中所有的「命名」全部替換成數字(例如將ui_controller替代為a0123456);第二種是直接輸出編譯過後的代碼,將人們可以看懂的原始碼轉換成電腦看得懂的機器碼,這樣別人就沒法直接打開這個文件看到原本的代碼了。

這兩種方式的目的都是在導出程序的時候,把標註性的符號摘除。從而達到不暴露源碼信息的效果。

但這兩種方式並不是真正意義上的混淆,因為雖然人類難以理解這串代碼到底要做什麼,但如果把這樣的代碼放入編譯器中,讓編譯器去分析整個程式語言的語法結構,把每一行指令所要做的事情都歸納出來的話,那麼很容易就能看出些端倪。

真正意義上的混淆被稱作虛擬黑盒(Virtual Black Box Obfuscation,VBB),相當於將一個程序C嵌入一個黑盒中,我們可以在黑盒的一端輸入x,另一頭會輸出C(x)。因為整個程序都藏在黑盒中,我們完全無法得知任何C的構造信息,也無法從輸出反推輸入。

如果實現虛擬黑盒,用戶可以使用程序卻無法理解程序本身,那麼就能讓開發的程序永遠不被破解,並且加密程序的過程也會十分高效。

但虛擬黑盒的概念提出不久後,很快就被潑了一盆冷水。2001年,7位研究者聯手提出了一種特殊構造的程序,並證明通用的VBB混淆是絕對不可能的。

不過,這7位研究者的成果中,提出了一種混淆的新型定義——如果一對程序A和B具有相同的功能性,能否通過一種新的混淆算法,使第三方無法區分兩個程序呢?對於這樣的混淆,我們稱之為IO。

其利用的原理是:如果把相同值輸入程序A和B,計算得到O(A)=P和O(B)=P,在無法進入程序A或B的情況下,在計算上分辨P來自於A還是B是不可行的。

有了強大的不可區分混淆,我們就能完美加密已有的程序,使其永遠不會被破解。

IO存在性被證實

但還難以抵禦量子計算

2013年,美國加州大學洛杉磯分校的阿米特·沙海教授聯合其他5位學者提出一種IO協議,把一個程序拆分為幾塊,就像拼圖遊戲,單個碎片看上去毫無意義,但如果使用多線性配對方法將碎片正確地組合到一起,程序就能正常工作。

多線性配對本質上是一種利用多項式進行計算的方法,多項式是由不同變量和數字組成的數學表達式,如3xy+2yz2。為了保證其安全性,用戶不能獲知整個過程中任何參數。

多線性配對方法中,有一個重要的概念叫做「層數」,它可以理解為運算公式中變量的階數,如3xy+2yz2為2階多項式,即其層數為2;3xy+2yz4為4階多項式,其層數為4。層數越多,多線性配對的安全性越差。

2016年,美國華盛頓大學副教授林惠嘉開始探索能否通過減少多線性配對的層數來實現IO。最初,她想出了如何用30層多線性配對構建IO。接下來,她和其他研究者逐漸實現了只用3層多線性配對來構建IO。

表面上看,這是一個巨大的進步。但有一個問題——從安全的角度來看,3層多線性配對和其他3層以上多線性配對一樣不安全。

此前,研究人員只知道2層及以下的線性配對是絕對安全的。林惠嘉與阿米特·沙海聯手,試圖找出如何用2層線性配對構建IO,但是很長一段時間研究都沒有突破。最終,他們想出了一個折中方案:既然實現IO需要3層線性配對,但為了安全需要減少到2層,那麼中間是否存在2.5層呢?

研究人員設想了一個系統,使用戶可以看到部分變量的值,這讓整個機制不需要對太多變量進行加密。但多項式被隱藏的變量必須不能超過2階,如3x2y+2yz4公式中,z的值可以讓用戶看到,而變量x、y的階數由於沒有超過2階因此被隱藏。由此,研究人員在保證線性配對安全性的前提下,成功實現了IO。

雖然幾位科學家聯手證明了IO的存在性,但量子計算機的超強計算能力,會使得目前絕大部分加密算法都無法抵擋,這意味著所有的加密信息,都將會暴露在量子計算機的面前。現在研究者們正試圖開發一條新的通往IO的潛在途徑,希望能抵擋住量子攻擊。

(王昱編譯,據《環球科學》)

相關焦點

  • 一些防止java代碼被反編譯的方法
    隔離Java程序  最簡單的方法就是讓用戶不能夠訪問到Java Class程序,這種方法是最根本的方法,具體實現有多種方式。例如,開發人員可以將關鍵的Java Class放在伺服器端,客戶端通過訪問伺服器的相關接口來獲得服務,而不是直接訪問Class文件。這樣黑客就沒有辦法反編譯Class文件。
  • 幾乎無解的最強加密方法,終於被證實真的存在
    一種被稱為不可區分混淆的加密方式因為太過完美,多年來被認為無法實現。不過最近,三名研究者首次證明不可區分混淆是可行的,這或許是通往完美密碼的重要一步。例如,它支持創建可否認加密(deniable encryption),這種加密方式可以讓你向攻擊者發送和真實郵件完全不同的消息;以及函數加密(functional encryption),這種加密可以讓你向用戶提供不同級別的訪問權限,從而用數據進行計算。
  • 【科技資訊】幾乎無解的最強加密方法,終於被證實真的存在
    一種被稱為不可區分混淆的加密方式因為太過完美,多年來被認為無法實現。不過最近,三名研究者首次證明不可區分混淆是可行的,這或許是通往完美密碼的重要一步。 2018年,加州大學洛杉磯分校的研究生Ayush Jain前往日本,就他和同事正在開發的強大加密算法進行交流。
  • Java代碼威步輕鬆防護
    不過,JAVA最突出的跨平臺優勢使其要以中間代碼的形式運行在虛擬機環境中,因此JAVA代碼反編譯要比其他開發語言更容易實現,並且反編譯的代碼經過優化後幾乎可與原始碼相媲美。為了避免出現這種情況,保護軟體智慧財產權,有一種叫做Java混淆器的工具被開發出來。
  • 四個假設論證「不可區分混淆」存在性,華人科學家觸摸「皇冠上的...
    中文翻譯為不可區分混淆,簡稱為iO。iO是否存在一直是個迷,學者們為了論證它也打了非常多的「架」。這個概念(iO)又稱為Crypto-complete(密碼學完備)的,如果它真的存在,那麼就可以基於IO構建出幾乎所有的密碼學構造,包括但不限於公鑰加密、函數加密、數字水印.......此概念自美國加州大學洛杉磯分校的Sahai教授及其合作者們提出之後,有人狂熱,有人鄙夷。
  • 詳解一種端遊遊戲代碼保護方案
    PE代碼保護已逾20多年的歷史,從21世紀初期,PE代碼保護已經有了雛形,且誕生了許多直至今日仍具有不小影響力的加固思路與加密算法,如大名鼎鼎的「UPX」殼,便是利用其最核心的UCL這一效率較高的壓縮算法來實現的。
  • 一個真正安全的去中心化加密筆記應用程式TrustNote介紹
    打開APP 一個真正安全的去中心化加密筆記應用程式TrustNote介紹 發表於 2019-06-20 10:22:22 是否有一個網絡筆記應用程式,所有的筆記在通過網絡發送給其他人之前都經過了嚴格加密?而且,這個網絡筆記應用程式還能保證我所有的筆記永遠存儲在網絡上? 是的,TrustNote就是為此而設計的! TrustNote基於加密貨幣技術,重新架構了全球頂級的安全加密筆記應用。
  • 量子安全通話 亮點不在可加密,而在加密方式
    量子安全通話 亮點不在可加密,而在加密方式在競爭激烈的量子科技領域,我國科學家不斷取得新的突破,量子計算原型機「九章」問世,樹起了一座舉世矚目的裡程碑,量子通信方面的研究更是走在了世界前列,天地一體化的廣域量子通信網絡正在向我們走來。作為今年不斷刷屏的熱門話題,量子科技距離我們的生活還有多遠呢?或許答案比想像的更近。
  • 代碼質量與安全–架起程序語義和業務邏輯之間的橋梁
    打開APP 代碼質量與安全–架起程序語義和業務邏輯之間的橋梁 陳新中 發表於 2021-01-12 16:20:20 鑑釋首席技術官
  • 最全網絡安全詞彙詞典來了!
    通常情況下,此類漏洞的防護只需更新補丁即可,但由於多種原因,導致往往存在大量設備漏洞補丁更新不及時,且漏洞利用方式已經在網際網路公開,往往此類漏洞是黑客最常使用的漏洞。例如在永恆之藍事件中,微軟事先已經發布補丁,但仍有大量用戶中招。
  • 圈內丨洩密、被跟蹤再到追殺,這不是《菱鏡計劃》,這是存在於我們手機中的安全問題
    而重APP的安全可分為三方面來講:一為從開發的角度來講則是app原始碼安全問題,基於代碼審計層次的。二為從軟體保護角度來講app安全則是對原始碼的代碼混淆,資源加密,邏輯加固。其實就和PC上所說的為什麼要有殼這個問題是一類,沒有加固的App經過反編譯之後,所有資源,算法,代碼邏輯,內部封裝,赤裸裸的躺在那裡,毫無隱私和保密可言. 籠統的說app加固是對原本容易暴露的程序和運行邏輯進行保護,而不影響程序本身的運行結果。
  • i.MX RT系列外置Flash加密為您的產品安全保駕護航
    我們使用非對稱加密來實現HAB功能。加密工具會生成私鑰和相應的公鑰對。然後私鑰用於加密我們想要發布的鏡像,此加密為鏡像生成唯一標識符,稱為證書。公鑰也附加到鏡像上。在程序啟動時,公鑰用於解密證書。用於檢查比較證書和鏡像是否匹配。只有當證書和鏡像匹配時,鏡像才被視為「受信任」。否則,鏡像被視為「不安全」,不允許加載和運行。此過程稱為身份驗證。
  • 程式設計師如何寫出高質量的代碼程序
    編碼是程式設計師最重要的工作,每個程式設計師都希望自己可以寫出優雅,高性能,高質量的代碼,對於大師級別的程式設計師,他們的寫的代碼就和藝術品一樣,你會忍不住發出驚嘆,他們怎麼可以創造出如此驚豔的作品出來。下面筆者就以自己的淺薄學識和一些經驗來總結下優秀的程序應該具有的特點。
  • 歐洲打算破解WhatsApp等通訊服務的數據加密方式
    在本月早些時候發表的一份聯合聲明中,歐盟成員國內政部長呼籲各國元首「慎重思考數據加密問題,以便主管部門能夠合法收集和使用數字證據。」在這份聲明發表之前,有幾份關於加密數據的歐盟內部文件遭遇洩露。最開始是由Politico發布的一份聲明,提出了反對端到端加密的一些措施,並以此作為打擊虐待兒童內容的一種方式。
  • 巨鯨被盜,交易所關網,加密資產安全如何保障?
    2020年,加密貨幣市場很不太平,人心惶惶,甚至是一片哀嚎。在你還日夜盯盤,思考資產升值的時候,已經有人對你的資產虎視眈眈了。 2020的灰色開始,又一次讓人們的視線回到了加密資產安全的話題上,每個夜深人靜的夜晚,看著手機屏幕上的一串串龐大數字,回問自己一句:我的資產安全嗎?
  • 不懂代碼,如何製作小程序?
    小程序誕生以來,經歷了三年多的發展與更新,目前已成時下最熱門的網際網路產物。越來越多的人想要在小程序市場裡分一杯羹,但很多人對於如何製作小程序仍然不太了解。關於如何製作小程序,大致可以分為兩種方式,一種是自己製作,另一種就是使用第三方製作平臺。
  • 揭秘TPM安全晶片技術及加密應用
    在我國為避免影響國家戰略安全的核心技術控制在某些國家手中,我國也在同步進行可信計算平臺的研究和部署工作。其中,部署可信計算體系中,密碼技術是最重要的核心技術。  TPM安全晶片首先驗證當前底層固件的完整性,如正確則完成正常的系統初始化,然後由底層固件依次驗證BIOS和作業系統完整性,如正確則正常運行作業系統,否則停止運行。之後,利用TPM安全晶片內置的加密模塊生成系統中的各種密鑰,對應用模塊進行加密和解密,向上提供安全通信接口,以保證上層應用模塊的安全。
  • IBM Cloud提供量子安全密碼技術和Hyper Protect加密服務,以幫助...
    由IBM研究科學家首創,該公司目前正在為IBM Cloud中的密鑰管理和應用程式事務提供量子安全加密支持,使其成為業界最全面的量子安全加密方法,以保護當前可用的數據。· 擴展的IBM Cloud Hyper Protect加密服務:新功能可增強雲應用程式中數據的隱私性,其中通過網絡發送到雲應用程式的數據以及諸如信用卡號之類的敏感數據元素存儲在可以在應用程式中加密的資料庫中–由具有「保持自己的密鑰」(KYOK)功能的業界最高級別的加密密鑰加密保護提供支持。