什么是数据混淆?方法和技术


什么是混淆?

混淆是使某些东西难以理解的过程。编程代码经常被混淆以保护个人财产或机密信息,并防止入侵者对专有软件应用程序进行逆向工程。

一种混淆形式是对程序代码的一部分或全部进行加密。其他方法包括从应用程序脚本中删除可能泄露信息的代码,使用不相关的标签重写类和变量名,以及向应用程序脚本添加冗余或无用的代码。混淆器是一种工具,它会自动将简单的源代码转换为功能相同但更难阅读和理解的程序。

恶意代码编写者也使用这些方法来逃避反恶意软件解决方案的检测。

可以使用反混淆技术对混淆进行逆向工程。程序切片是这些策略之一,它包括将程序代码简化为程序中特定点仅包含必需语句的代码。编译器优化和程序综合是反混淆的两种替代方法。

混淆是如何工作的

计算机代码中的混淆采用复杂迂回的语言和重复的逻辑,使代码对读者更难以理解。目的是用复杂的语法来分散读者的注意力,使他们极难识别消息的真实含义。

计算机代码的读者可能是人、计算设备或其他程序。混淆也用于欺骗防病毒软件和其他严重依赖数字签名来读取代码的系统。Java 等语言、Android 和 iOS 等操作系统以及.NET 等开发平台都提供反编译器。它们可以自动反向工程源代码;混淆旨在使这些程序更难以进行反编译。

数据混淆方法和特性

这里我们将讨论一些最常用的混淆技术。

数据屏蔽

数据屏蔽用实际数据替换逼真但虚假的数据。测试、培训、开发和支持团队可以使用包含屏蔽数据的数据集进行工作,而无需冒真实数据泄露的风险。数据屏蔽也称为 *数据扰乱、数据屏蔽* 或 *数据混洗*。

没有技术可以永久恢复屏蔽数据的原始值。从敏感数据中永久删除个人身份信息 (PII) 称为数据匿名化或数据清理。

加密

加密非常安全,但它会阻止你在数据加密时处理或分析数据。数据加密技术越复杂,数据就越不容易受到意外访问。如果你需要安全地存储或传输敏感信息,加密是一个极好的混淆策略。

令牌化

令牌化用无意义的值替换敏感信息,此过程不可逆转。但是,你可以将令牌返回到初始数据。令牌化数据允许执行诸如处理信用卡交易之类的任务,而无需公开信用卡号。实际数据永远不会离开公司,并且第三方处理器无法访问或加密它。

更多混淆技术

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

  • 打包 - 这会压缩整个程序,使其无法使用。

  • 控制流 - 反编译的程序代码类似于意大利面条式逻辑,这种逻辑结构混乱且难以维护。这段代码的结果不明确,很难通过查看代码来了解代码的目标。

  • 指令模式转换 - 此方法将编译器生成的标准指令替换为更复杂、更不频繁的指令,以实现相同的功能。

  • 插入虚拟代码 - 可以向程序中插入虚拟代码,以使其更难以理解和反向工程,但这不会影响逻辑或结果。

  • 删除元数据 - 未使用的代码和元数据为读者提供了有关程序的额外信息,类似于 Word 文档中的注释,这有助于阅读和调试。删除元数据和未使用的代码后,读者几乎没有关于程序及其代码的信息。

  • 不透明谓词插入 - 在编程中,谓词是一个逻辑表达式,其结果为真或假。不透明谓词是偶然的或 if-then 语句——其结果在统计上难以预测。不透明谓词插入引入额外的代码,这些代码永远不会被执行,但会使试图理解反编译输出的读者感到困惑。

  • 反调试 - 合法的软件专业人员和黑客都使用调试工具逐行分析代码。软件开发人员可以使用这些工具来检测代码中的错误,而攻击者可以使用这些工具来反向工程代码。IT 安全专业人员可以使用反调试工具来检测攻击者何时使用调试软件。黑客可以使用反调试工具来查看是否使用调试工具来识别对代码的修改。

更新于:2022年5月4日

878 次浏览

启动您的 职业生涯

完成课程获得认证

开始
广告