代碼混淆

代碼混淆Obfuscation)是將計算機程序源代碼機器碼,轉換成功能上等價,但是難於閱讀和理解的形式的行為。

代碼混淆可以用於程序源代碼,也可以用於程序編譯而成的中間代碼。執行代碼混淆的程序被稱作代碼混淆器。目前已經存在許多種功能各異的代碼混淆器。

其主要工作有:

  • 將代碼中的各種元素,如變量、函數、類的名字改寫成無意義的名字。比如改寫成單個字母,或是簡短的無意義字母組合,甚至改寫成「__」這樣的符號,使得閱讀的人無法根據名字猜測其用途。
  • 重寫代碼中的部分邏輯,將其變成功能上等價、但是更難理解的形式。比如將for循環改寫成while循環、將循環改寫成遞歸、精簡中間變量,等等。
  • 打亂代碼的格式。比如刪除空格、將多行代碼擠到一行中、或者將一行代碼斷成多行等等。
  • 添加花指令,通過特殊構造的指令來使得反編譯器反匯編器出錯,進而干擾反編譯工作的進行。

代碼混淆器也會帶來一些問題。主要的問題包括:

  • 被混淆的代碼難於理解,因此調試也變得困難起來。開發人員通常需要保留原始的未混淆的代碼用於調試。
  • 對於支持反射的語言,代碼混淆有可能與反射發生衝突。
  • 代碼混淆並不能真正阻止反向工程,只能增大其難度。因此,對於對安全性要求很高的場合,僅僅使用代碼混淆並不能保證源代碼的安全。

白盒密碼

白盒密碼( White-box cryptography)是指夠抵抗白盒攻擊的密碼算法,以及對應實現。常見的實現方式是藉助高強度的代碼及算法混淆。[1][2]

參考文獻

  1. ^ Chow S, Eisen P, Johnson H, et al. A white-box DES implementation for DRM applications[M]//Digital Rights Management. Springer Berlin Heidelberg, 2002: 1-15.
  2. ^ 林婷婷, 來學嘉. 白盒密碼研究頁面存檔備份,存於網際網路檔案館)[J]. 密碼學報, 2015, 2(3): 258-267.

外部連結