什麼是資料混淆?方法和技術


什麼是混淆?

混淆是使某些東西難以理解的過程。程式設計程式碼經常被混淆以保護個人財產或機密資訊,並防止入侵者對專有軟體應用程式進行逆向工程。

一種混淆形式是對程式程式碼的一部分或全部進行加密。其他方法包括從應用程式指令碼中刪除可能洩露資訊的程式碼,使用不相關的標籤重寫類和變數名,以及嚮應用程式指令碼新增冗餘或無用的程式碼。混淆器是一種工具,它會自動將簡單的原始碼轉換為功能相同但更難閱讀和理解的程式。

惡意程式碼編寫者也使用這些方法來逃避反惡意軟體解決方案的檢測。

可以使用反混淆技術對混淆進行逆向工程。程式切片是這些策略之一,它包括將程式程式碼簡化為程式中特定點僅包含必需語句的程式碼。編譯器最佳化和程式綜合是反混淆的兩種替代方法。

混淆是如何工作的

計算機程式碼中的混淆採用複雜迂迴的語言和重複的邏輯,使程式碼對讀者更難以理解。目的是用複雜的語法來分散讀者的注意力,使他們極難識別訊息的真實含義。

計算機程式碼的讀者可能是人、計算裝置或其他程式。混淆也用於欺騙防病毒軟體和其他嚴重依賴數字簽名來讀取程式碼的系統。Java 等語言、Android 和 iOS 等作業系統以及.NET 等開發平臺都提供反編譯器。它們可以自動反向工程原始碼;混淆旨在使這些程式更難以進行反編譯。

資料混淆方法和特性

這裡我們將討論一些最常用的混淆技術。

資料遮蔽

資料遮蔽用實際資料替換逼真但虛假的資料。測試、培訓、開發和支援團隊可以使用包含遮蔽資料的資料集進行工作,而無需冒真實資料洩露的風險。資料遮蔽也稱為 *資料擾亂、資料遮蔽* 或 *資料混洗*。

沒有技術可以永久恢復遮蔽資料的原始值。從敏感資料中永久刪除個人身份資訊 (PII) 稱為資料匿名化或資料清理。

加密

加密非常安全,但它會阻止你在資料加密時處理或分析資料。資料加密技術越複雜,資料就越不容易受到意外訪問。如果你需要安全地儲存或傳輸敏感資訊,加密是一個極好的混淆策略。

令牌化

令牌化用無意義的值替換敏感資訊,此過程不可逆轉。但是,你可以將令牌返回到初始資料。令牌化資料允許執行諸如處理信用卡交易之類的任務,而無需公開信用卡號。實際資料永遠不會離開公司,並且第三方處理器無法訪問或加密它。

更多混淆技術

下面列出了一些常見的混淆技術的更多示例:

  • 打包 - 這會壓縮整個程式,使其無法使用。

  • 控制流 - 反編譯的程式程式碼類似於義大利麵條式邏輯,這種邏輯結構混亂且難以維護。這段程式碼的結果不明確,很難透過檢視程式碼來了解程式碼的目標。

  • 指令模式轉換 - 此方法將編譯器生成的標準指令替換為更復雜、更不頻繁的指令,以實現相同的功能。

  • 插入虛擬程式碼 - 可以向程式中插入虛擬程式碼,以使其更難以理解和反向工程,但這不會影響邏輯或結果。

  • 刪除元資料 - 未使用的程式碼和元資料為讀者提供了有關程式的額外資訊,類似於 Word 文件中的註釋,這有助於閱讀和除錯。刪除元資料和未使用的程式碼後,讀者幾乎沒有關於程式及其程式碼的資訊。

  • 不透明謂詞插入 - 在程式設計中,謂詞是一個邏輯表示式,其結果為真或假。不透明謂詞是偶然的或 if-then 語句——其結果在統計上難以預測。不透明謂詞插入引入額外的程式碼,這些程式碼永遠不會被執行,但會使試圖理解反編譯輸出的讀者感到困惑。

  • 反除錯 - 合法的軟體專業人員和駭客都使用除錯工具逐行分析程式碼。軟體開發人員可以使用這些工具來檢測程式碼中的錯誤,而攻擊者可以使用這些工具來反向工程程式碼。IT 安全專業人員可以使用反除錯工具來檢測攻擊者何時使用除錯軟體。駭客可以使用反除錯工具來檢視是否使用除錯工具來識別對程式碼的修改。

更新於:2022年5月4日

878 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.