結合演算法/代碼混淆技術 白箱加密法保護資料安全

2015-01-05
物聯網將帶來前所未有的經濟增長。到2020年,預估將有超過兩千億台設備具有與互聯網連接的功能,影響現今生活中的每一個領域。物聯網正對許多市場造成衝擊,從機器人到零售終端(Point-of-sale)系統、行動計算裝置,甚至是3D列印。這些市場中的嵌入式系統正逐步實現為使用者提供資訊、下達自主的決定、與商業夥伴溝通乃至管理資產。
這些系統上的資料、資訊系統和數位內容之存取,通常會受到加密保護。為保護加密資訊,確保其加密密匙從未外洩是很重要的。

標準加密方案使得演算法和密匙容易受到篡改和逆向工程的攻擊,因為使用密匙的進程,就是任何加密系統的單一故障點。在現代系統中,透過使用簽名、樣式和記憶體分析,便很容易識別該點,例如在未受保護的軟體中,密匙提取攻擊通常可以在幾個小時內成功提取被編碼成文字資料陣列的密匙。

白箱加密降低演算法遭攻擊機率

白箱加密(White-box Cryptography)是一種用於混淆加密演算法的縝密方法(圖1),使得密匙材料可充分隱藏、防止窺探,其目的在於防止加密運算中的關鍵資訊(比如密匙)洩露,以免潛在攻擊者完全存取系統。

圖1 白箱和傳統密匙之間的關係十分密切,因此使用網路攻擊者可用的工具來重新構造傳統密匙是不切實際的。

白箱加密的名稱源自於白箱攻擊(White-box Attack)。與攻擊者不會進入系統內部的黑箱(Black-box)攻擊相反,在白箱攻擊中,攻擊者可完全存取系統、記憶體及軟體程式等。現代系統如筆記型電腦、平板電腦及手機,變得越來越開放和具有行動性,也變得越來越容易被存取,因此若沒有適當的安全措施,便很容易受到白箱攻擊。

白箱演算法通常是晦澀難懂的,即使攻擊者存取到加密運算的實施或了解其細節,也不會危害到密匙材料。一個典型加密標準的白箱方案會使用和傳統方案相同的方式來對敏感性資料進行加密、解密、標識和驗證,迫使攻擊者必須實施複雜的數學變換逆向工程才可以獲取密匙。

在容易受到潛在攻擊的環境中,無論是必須保護加密密匙和/或未加密資料,還是不受信任的使用者能夠控制主系統,使用白箱加密技術都會有效。這樣的使用案例包括了危及聯網系統、將軟體提供給商業競爭對手、或商業部署具有私密金鑰(Private Key)的軟體。

2014年的Heartbleed安全性漏洞就是一個備受關注的攻擊案例。攻擊者從有弱點的伺服器端軟體(即OpenSSL)檢索記憶體內容。重建的Heartbleed漏洞能夠找回記憶體內容,其中可能包含用來對伺服器和外部世界之間的通訊進行加密的密匙材料。

為保護加密資訊,最重要的是密匙絕對不會暴露在記憶體或磁片中,然而標準加密方案(如上述Heartbleed攻擊中,OpenSSL所利用的方案)使演算法和密匙容易受到篡改和逆向工程的攻擊。

白箱加密將密匙經數學方法變換為複雜的數字圖表(Graph of Numbers)和可執行代碼,基於使用者提供的隨機源(Random Source),這些圖表在運行時具有許多隨機選擇的有效路徑。

白箱加密將數學演算法、資料和代碼混淆技術結合,並以複雜的方式來變換密匙和相關加密運算,使攻擊者必須具備多學科的豐富知識才能夠發動攻擊。

重要的是,密匙從不會在靜態或運行記憶體中出現;相反地,若沒有特別產生的白箱演算法,密匙只會成為一堆無效的資料。總之,若以具有白箱功能的程式庫(Library)來替代標準密碼的程式庫,將永遠不會將密匙暴露,可永遠有效地杜絕這一類攻擊。

四大特性加強保密措施

白箱產品和技術隨不同的機制而不同。自然地,某些特性和技術會比其他方案更為強大。一般來說,對於潛在易受到攻擊系統中使用的任何白箱方案,都須要考慮到以下的特性。

多元化

不要對所有用戶實施單一的白箱加密演算法,這將導致闖入一次即可到處橫行的攻擊,應該使用代碼產生器來產生獨特的演算法變體(Variant),這可減輕密匙或所選明文等敏感性資料的首次通過觀察(First Pass Observation)。

值得注意的是,定制演算法也可消除代數攻擊,這種攻擊可藉由了解單一標準方案,輕易地解開資料保護。

白箱演算法不應僅僅只是自動地變換標準演算法。每種演算法/密碼都應以基礎數學特定屬性的方式來修改(圖2);永遠不可將全部的變換應用在所有的演算法上。

圖2 一個多元化白箱方案應該利用加密演算法的基礎數學,包含隨機化和多變換混淆。

硬體結合

與硬體相比,軟體天生更容易受到攻擊。攻擊者可以利用對照每個位元的簡單方法來複製原有軟體系統,便能夠沒有限制地去嘗試突破系統。然而硬體可以實施更多的永久阻礙,強大的白箱加密方案應該要利用硬體的優勢,以限制利用逆向工程來破解混淆演算法的嘗試。

這樣的技術包含了硬體結合(Hardware Binding)。將一個硬體標識加密結合到白箱演算法和/或資料上時,將可迫使攻擊者須對一個複雜、動態改變的密匙圖(Key-graph)進行逆向工程,且同時受到單一硬體系統的影響;這種硬體系統在檢查到入侵時,可實施更為永久的阻礙措施。

邊通道對抗

對於保護密匙材料和防止暴露,對抗邊通道攻擊(比如簡單或差分功率分析)是十分重要的。穩健的白箱加密方案應該利用眾多邊通道分析(Side-channel Analysis)對策來防止密匙暴露在這一類攻擊之下。

重要混淆

某些針對許多加密演算法的攻擊可能會產生公認的答案。很多時候,標準加密演算法設計會導致方案對於白箱攻擊存在基礎漏洞,因為開發人員假設方案在安全的主機上執行,而一個強大的白箱方案不應該留有這些漏洞。

白箱混淆應可防止技巧熟練的攻擊者暴露演算法的基礎數學主體,誘騙演算法產生公認答案的混淆版本。另外,應該採用混淆(比如圓形邊界模糊)來隱藏清晰的攻擊點,危害先進加密標準(AES)執行就是一個例子。

使用白箱加密,攻擊者便難以獲得密匙,迫使他們要經歷逆向工程複雜和大量的混淆變換組合的痛苦,並且要詳細了解抽象代數和離散數學。

有鑑於行動互聯網連接設備的增加,以及不斷增長的安全運行和通訊需求,產品開發人員最低限度應該使用上述技術的強大白箱加密方案,做為使用加密的任何軟體系統的主要組成部分。

(本文作者為美高森美產品銷售總監)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!