Algorithm-Design

“白盒密碼學”和“程式碼混淆”有什麼區別?

  • November 22, 2017

我一直在閱讀問題“什麼是加密算法的白盒實現? ”它導致了這篇簡短的文章/問答,其中在問題 2 中指出:

Q2:程式碼混淆有什麼區別?

用於保護軟體實現但具有不同安全目標的相關和互補技術包括程式碼混淆和軟體防篡改。程式碼混淆旨在防止(加密)算法的逆向工程,而軟體防篡改旨在防止修改程式碼。然而,所有這些技術的共同點是生成的實現必須保持直接可執行。

現在,它顯示了混淆和抗回火之間的區別,但它沒有說明白盒密碼學和程式碼混淆之間的區別。

所以我想我的問題是:這兩個完全不同的東西嗎?或者程式碼混淆是實現白盒加密的一種方式?如果第二個是真的,還有其他方法可以實現嗎?

正如您所懷疑的,白盒密碼學和混淆之間存在非常密切的關係。(好直覺!)白盒密碼學基本上都是關於混淆加密實現。

**白盒密碼術是對密碼程式碼的混淆。**想像一下,您採用了 AES 實現,選擇了一個隨機 AES 密鑰,然後將該 AES 密鑰硬編碼到程式碼中。顯然,發布此程式碼是不安全的,因為它會立即洩露 AES 密鑰。如果我們能以一種保留其功能但隱藏加密密鑰的方式混淆生成的程式碼、硬編碼密鑰和所有內容,那可能會很好。換句話說,結果應該是混淆程式碼,它仍然計算相同的函式,但不再顯示 AES 密鑰。這正是“白盒密碼學”所做的——或者至少是它試圖實現的。

因此,您可以將白盒密碼術視為一種特殊用途的混淆方法,旨在混淆一種非常特殊的程式碼。

**更多背景。**關於白盒密碼學還有很多可以說的。例如,許多已發布的白盒密碼學方法已被破解;白盒 AES白盒 DES都已經過密碼分析,現在已知是不安全的。據我所知,所有已發布的白盒密碼學方法隨後都被破解,因此是否有可能安全地實現白盒密碼學的目標還不得而知

以下是對白盒密碼學的出色概述和介紹:

Marc Joye,白盒密碼學。資訊和網路安全,2008 年。

引用自:https://crypto.stackexchange.com/questions/386