為什么要做代碼保護?
為了保護知識產權并讓攻擊者的利用更加困難,組織應該為其軟件的逆向工程設置障礙(例如,反篡改、調試保護、反盜版特性、運行時完整性),增加攻擊者分析和利用你的軟件所需的投入。代碼保護對于廣泛分布的代碼尤其重要,例如分布在瀏覽器上的移動應用程序和JavaScript。
混淆技術obfuscation techniques
對于某些軟件,混淆技術可以作為產品構建和發布過程的一部分加以應用。在其他情況下,當應用程序在部署后動態重新生成時,可以在軟件定義網絡或軟件編排層應用這些保護。
有各種各樣的混淆技術可用,包括重命名變量和函數、添加冗余或無意義的代碼、更改控制流和加密字符串。根據您的軟件和威脅模型,您應該選擇能夠提供足夠級別的保護而不會顯著影響性能或可維護性的技術。
并非代碼的所有部分都需要混淆。重點關注混淆關鍵部分,例如身份驗證機制、敏感算法和專有邏輯。不太關鍵的部分,如UI組件或實用程序功能,可能不需要相同級別的混淆。
混淆工具
Proguard:?Java Obfuscator and Android App Optimizer | ProGuard (guardsquare.com)
保護代碼的完整性
這也是IEC62443 4-1的要求之一
代碼簽名:代碼簽名包括對可執行文件和腳本進行數字簽名。這提供了一種驗證代碼的真實性和完整性的方法。用戶可以檢查數字簽名,以確保代碼在簽名后沒有被篡改。使用允許組織證明重要代碼的來源、完整性和授權的代碼保護機制(例如,代碼簽名)。