【软件与系统安全笔记】八、软件自我保护

【软件与系统安全】八、软件自我保护

Image

这是《【软件与系统安全】笔记与期末复习》系列中的一篇

7-软件自我保护.pdf

  • Man-At-The-End 攻击模型
  • 主要软件自我保护技术:代码混淆
  • 主要软件自我保护技术:软件防篡改
  • 主要软件自我保护技术:软件水印
  • 主要软件自我保护技术:软件胎记

Man-At-The-End 攻击 (MATE)

攻击者: 位于终端,对终端计算资源有最高控制权限

攻击对象:安装在受控终端上的软件程序

攻击目的: 获悉、篡改软件的内部逻辑

image.png

代码混淆

目标:阻止对软件实施非授权的逆向分析

核心方法: 语义保留的程序变换

代码混淆的可能性

借鉴密码学算法的安全模型。目标:可证明安全性

image.png

image.png

然而,“虚拟黑盒”式的混淆器真的可以实现吗?

研究结论: 不可能

核心因素: 程序执行与Oracle访问有着本质区别

  • 程序是对函数的简明描述
  • Oracle访问只给出函数的输入-输出映射关系
  • 函数的功能往往无法通过Oracle访问的方式予以精确学习

代码混淆的实际能力

  • 做不到: 让程序的执行逻辑变得不可知
  • 做得到: 使程序的执行逻辑变得难以理

代码混淆的方法

不透明谓词( opaque predicate)

较强的构造方法:基于3SAT问题 通过3SAT证明支配集是NPC问题 | 骑士的个人主页 (samjjx.github.io)

  • 问题:证明显示不透明谓词在计算上是不安全的

条件分支混淆

image.png

方法:

  • 单向函数

    image.png

  • 利用分析技术弱点

    image.png

    image.png

  • 利用神经网络

    image.png

    image.png

    image.png

软件混淆

软件胎记

胎记”的实际含义

  • 一类对象的本质特征
  • 与生俱来
  • 独一无二

软件胎记的广义安全价值

  • 反代码剽窃(未经授权使用共享库,或违反协议使用开源代码)
  • 检测恶意代码(特别是经过各种伪装保护的)
  • 检测移动app的重包装

构造形式分类

  • 静态/动态(取决于胎记所依赖的特征类型)

静态构造举例:基于JAVA的栈行为模式

动态构造1:基于执行路

动态构造2:基于程序内的系统调用

不懂呀

软件水印

目标:在软件中嵌入用于标识其版权归属的秘密信息

软件水印的应用形式

  • 反盗版 – 通过声明版权
  • 反盗版 – 通过追溯盗版母盘的来源

软件水印的形式分类

  • 静态/动态(取决于水印的构造方式)

静态构造举例:基本块重排序

image.png

静态构造举例:寄存器占用重分配

image.png

传统动态构造1:基于动态生成的图对象

image.png

传统动态构造2:基于执行路径上的分支行为

image.png

传统动态构造3:基于多线程的同步

image.png

传统动态构造的问题1:

  • 与主程序的关联性很弱
  • 往往具有显著的模式/特征
  • 很难予以隐藏或伪装

一个特别的设计:基于抽象解释的水印

  • 在正常维度上,水印组件服务于载体软件的原本功能
  • 在预设的秘密维度上,水印组件展示出隐藏的信息

image.png

image.png

改进动态构造1:利用返回导向编程

image.png

image.pngimage.png

改进动态构造2:利用代码混淆

image.png

image.png

传统动态构造的问题2:

image.png

改进动态构造3:利用神经网络

image.png

软件水印仍然存在的不足之处

  • 没有在真正意义上实现隐蔽性
  • 缺乏有效的定性/定量评估标准(特别是隐蔽性这一安全度量)
  • 数据嵌入率很差
  • 没有解决工业化、自动化实施的问题

软件防篡改

目标:

  • 使得软件的内部逻辑无法被篡改
  • 当篡改发生时,完成自我诊断/修复

意义: 阻止对软件的破解

方法:

  • 内省自检(introspection)

    image.png

  • Oblivious Hashing 未察觉的哈希

    image.png

新场景:对抗app重打包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

框架主义者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值