高级搜索

留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

浮点数比较分支的混淆方法研究

耿普 祝跃飞

耿普, 祝跃飞. 浮点数比较分支的混淆方法研究[J]. 电子与信息学报, 2020, 42(12): 2857-2864. doi: 10.11999/JEIT190743
引用本文: 耿普, 祝跃飞. 浮点数比较分支的混淆方法研究[J]. 电子与信息学报, 2020, 42(12): 2857-2864. doi: 10.11999/JEIT190743
Pu GENG, Yuefei ZHU. An Branch Obfuscation Research on Path Branch Which Formed by Floating-point Comparison[J]. Journal of Electronics and Information Technology, 2020, 42(12): 2857-2864. doi: 10.11999/JEIT190743
Citation: Pu GENG, Yuefei ZHU. An Branch Obfuscation Research on Path Branch Which Formed by Floating-point Comparison[J]. Journal of Electronics and Information Technology, 2020, 42(12): 2857-2864. doi: 10.11999/JEIT190743

浮点数比较分支的混淆方法研究

doi: 10.11999/JEIT190743
基金项目: 国家重点研发计划(2016YFB0801601, 2016YFB0801505)
详细信息
    作者简介:

    耿普:男,1982年生,博士生,研究方向为信息安全

    祝跃飞:男,1962年生,教授、博士生导师,研究方向为网络空间安全

    通讯作者:

    耿普 23015636@qq.com

  • 中图分类号: TP311

An Branch Obfuscation Research on Path Branch Which Formed by Floating-point Comparison

Funds: The National Key R&D Program of China (2016YFB0801601, 2016YFB0801505)
  • 摘要: 针对当前分支混淆方法仅对整数比较分支有效的缺陷,该文分析浮点数二进制表示与大小比较的关系,证明了浮点数二进制区间的前缀集合与浮点数区间内数据之间具有前缀匹配关系。使用哈希函数对前缀集合进行保护,利用哈希函数的单向性实现对抗符号执行,通过哈希值比对替换浮点数比较,提出一种基于前缀哈希值比较的分支条件混淆技术,实现了一种在符号执行对抗和混淆还原对抗上具有较强对抗性的混淆方法。最后,通过实验证和分析,证实了该文提出的混淆方法有消耗小、能够有效对抗符号执行和混淆还原的优点,具备较好的实用性。
  • 图  1  浮点数IEEE 754标准存储示意图

    图  2  浮点数比较分支的混淆示意图

     算法1 前缀算法
     输入:a1a2···an//起始值a的二进制表示
        b1b2···bn//结束值b的二进制表示
     输出:PrefixSet//区间的前缀集合
     PrefixSet Get_Prefix(a1a2···anb1b2···bn)
     {
      for (int k=1; (k<=n) && (ak==bk); k++)
      {
       if (k==(n+1))
        return { a1a2···an};
      }
      if ((akak+1···an == 00···0) && (bkbk+1···bn == 11···1))
      {
       if (k== 1)
        return {*};
       else
        return {a1a2···ak-1};
      }
      PrefixSet1 = Get_Prefix(ak+1ak+2···an, 11···1);
      PrefixSet2 = Get_Prefix(00···0, bk+1bk+2···bn);
      Return {a1a2···ak-10+PrefixSet1, a1a2···ak-11+PrefixSet2};
     }
    下载: 导出CSV
     算法2:isMatch(x, HS) //判断输入为x时,分支条件的取值,算
     法返回值为true或者false
     输入:浮点数x,浮点数区间[a, b]对应二进制前缀集合的sha1集
     合HS1和HS2
     输出:x是否属于浮点数区间[a,b]
     bool isMatch(x,HS1,HS2)
     { char tmp[32] = {‘*’,‘*’,···,‘*’};
       int Ix= *((int *)&x); char sha1out[32][24];
       char sign = (Ix>>(31-i))&1; tmp[0] = sign;
       for(int i=1; i<32; i++){
        tmp[i]=(Ix>>(31-i))&1; sha1out[i]=sha1(tmp,32);
        char sign = tmp[0];
        if(sign == 0)
        {for(int j=0; j<hashNumofHS1;j++)
        { if(sha1out[i]==HS1[j]) return true; }
        }
        else if(sign == 1)
        {for(int j=0; j<hashNumofHS2;j++)
         { if(sha1out[i]==HS2[j]) return true; }
        }
       }
       return false;}
    下载: 导出CSV

    表  1  单分支混淆的消耗数据表

    分支条件空间消耗(Byte)时间消耗(ms)
    解密后前缀数据空间Sha1算法代码空间isMatch算法代码空间
    if(1.0≤x ≤10.0)混淆后变为:if(isMatch(x, HS1))4×20=8026844680.033
    if((x ≤1.0)||((y>10.0)&&(1.0≤z ≤10.0))) 混淆后变为:if(isMatch(x,HS2)||(isMatch (y,HS3) && isMatch(z,HS4)))(9+8+4)×20=44026844680.102
    注释:(1) 空间消耗中,只有前缀数据占用空间是每个分支混淆需要独占的,其余空间是所有分支混淆共享的空间。(2) HS1, HS2, HS3和HS4表示前缀数据的哈希值集合。
    下载: 导出CSV

    表  2  分支混淆前后程序占用空间和执行时间数据表

    混淆前的数据处理程序混淆后的数据处理程序
    占用空间(Byte)3737641472
    执行时间(ms)235.6
    被混淆分支数(个)1
    分支执行次数(次)1000
    下载: 导出CSV

    表  3  混淆方法执行效率比较

    混淆方法单分支单次执行平均时间消耗(ms)单分支混淆空间消耗(Byte)实验主机分支类型
    本文方法0.0334×103CPU为Intel I5的主机浮点数比较
    王志方法0.0314×103CPU为Intel I5的主机整数大小比较
    王志方法(11312-1442.7)/(3×10000)=0.3294×103CPU为Intel Core2 Q9400的主机整数大小比较
    陈喆方法2209.8×104CPU为Intel Core2 Q9400的主机整数大小比较
    Ma方法7507×103CPU为Intel Core2 Q9400的主机整数大小比较
    下载: 导出CSV

    表  4  混淆分支的符号执行测试结果

    利用符号执行的程序分析工具执行时间(min)结果
    Angr80求解出使得isMatch返回值为真的分支输入值的解个数为0
    KLEE360共执行593906条指令和 118个分支执行,但求解出使得isMatch返回值为真的分支输入值的解个数为0
    下载: 导出CSV
  • [1] Software Management: Security imperative, business opportunity —2018 BSA global software survey. Washington[OL]. https://ww2.bsa.org/-/media/Files/StudiesDownload/2018_BSA_GSS_Report_cn.pdf. 2018.
    [2] 梁光辉, 庞建民, 单征. 基于代码进化的恶意代码沙箱规避检测技术研究[J]. 电子与信息学报, 2019, 41(2): 341–347. doi:  10.11999/JEIT180257

    LIANG Guanghu, PANG Jianmin, and SHAN Zheng. Malware sandbox evasion detection based on code evolution[J]. Journal of Electronics &Information Technology, 2019, 41(2): 341–347. doi:  10.11999/JEIT180257
    [3] COLLBERG C, THOMBORSON C, and LOW D. A taxonomy of obfuscating transformations[R]. Technical Report 148, 1997.
    [4] 张跃军, 潘钊, 汪鹏君, 等. 基于状态映射的AES算法硬件混淆设计[J]. 电子与信息学报, 2018, 40(3): 750–757. doi:  10.11999/JEIT170556

    ZHANG Yuejun, PAN Zhao, WANG Pengjun, et al. Design of hardware obfuscation AES based on state deflection strategy[J]. Journal of Electronics &Information Technology, 2018, 40(3): 750–757. doi:  10.11999/JEIT170556
    [5] POPOV I V, DEBRAY S K, and ANDREWS G R. Binary obfuscation using signals[C]. The 16th USENIX Security Symposium, Boston, USA, 2007: 275–290.
    [6] 贾春福, 王志, 刘昕, 等. 路径模糊: 一种有效抵抗符号执行的二进制混淆技术[J]. 计算机研究与发展, 2011, 48(11): 2111–2119.

    JIA Chunfu, WANG Zhi, LIU Xin, et al. Branch obfuscation: An efficient binary code obfuscation to impede symbolic execution[J]. Journal of Computer Research and Development, 2011, 48(11): 2111–2119.
    [7] SHARIF M, LANZI A, GIFFIN J, et al. Impeding malware analysis using conditional code obfuscation[C]. Network and Distributed System Security Symposium, San Diego, USA, 2008: 321–333.
    [8] WANG Zhi, MING Jiang, JIA Chunfu, et al. Linear obfuscation to combat symbolic execution[C]. The 16th European Symposium on Research in Computer Security, Leuven, Belgium, 2011: 210–226. doi: 10.1007/978-3-642-23822-2_12.
    [9] ZONG Nan and JIA Chunfu. Branch obfuscation using "Black Boxes"[C]. 2014 Theoretical Aspects of Software Engineering Conference, Changsha, China, 2014: 114–121. doi: 10.1109/TASE.2014.19.
    [10] MA Haoyu, MA Xinjie, LIU Weijie, et al. Control flow obfuscation using neural network to fight concolic testing[C]. The 10th International Conference on Security and Privacy in Communication Networks, Beijing, China, 2014: 287–304.
    [11] 王志, 贾春福, 刘伟杰, 等. 一种抵抗符号执行的路径分支混淆技术[J]. 电子学报, 2015, 43(5): 870–878. doi:  10.3969/j.issn.0372-2112.2015.05.006

    WANG Zhi, JIA Chunfu, LIU Weijie, et al. Branch obfuscation to combat symbolic execution[J]. Acta Electronica Sinica, 2015, 43(5): 870–878. doi:  10.3969/j.issn.0372-2112.2015.05.006
    [12] 陈喆, 王志, 王晓初, 等. 基于代码移动的二进制程序控制流混淆方法[J]. 计算机研究与发展, 2015, 52(8): 1902–1909. doi:  10.7544/issn1000-1239.2015.20140607

    CHEN Zhe, WANG Zhi, WANG Xiaochu, et al. Using code mobility to obfuscate control flow in binary codes[J]. Journal of Computer Research and Development, 2015, 52(8): 1902–1909. doi:  10.7544/issn1000-1239.2015.20140607
    [13] 陈喆, 贾春福, 宗楠, 等. 随机森林在程序分支混淆中的应用[J]. 电子学报, 2018, 46(10): 2458–2466. doi:  10.3969/j.issn.0372-2112.2018.10.020

    CHEN Zhe, JIA Chunfu, ZONG Nan, et al. Branch obfuscation using random forest[J]. Acta Electronica Sinica, 2018, 46(10): 2458–2466. doi:  10.3969/j.issn.0372-2112.2018.10.020
    [14] KING J C. Symbolic execution and program testing[J]. Communications of the ACM, 1976, 19(7): 385–394. doi:  10.1145/360248.360252
    [15] 崔宝江, 梁晓兵, 王禹, 等. 基于回溯与引导的关键代码区域覆盖的二进制程序测试技术研究[J]. 电子与信息学报, 2012, 34(1): 108–114. doi:  10.3724/SP.J.1146.2011.00532

    CUI Baojiang, LIANG Xiaobing, WANG Yu, et al. The study of binary program test techniques based on backtracking and leading for covering key code area[J]. Journal of Electronics &Information Technology, 2012, 34(1): 108–114. doi:  10.3724/SP.J.1146.2011.00532
    [16] BANESCU S, COLLBERG C, GANESH V, et al. Code obfuscation against symbolic execution attacks[C]. The 32nd Annual Conference on Computer Security Applications, Los Angeles, USA, 2016: 189–200. doi: 10.1145/2991079.2991114.
    [17] BANESCU S, COLLBERG C, and PRETSCHNER A. Predicting the resilience of obfuscated code against symbolic execution attacks via machine learning[C]. The 26th USENIX Security Symposium, Vancouver, Canada, 2017: 661–678.
    [18] FAN Jinliang, XU Jun, AMMAR M H, et al. Prefix-preserving IP address anonymization: measurement-based security evaluation and a new cryptography-based scheme[J]. Computer Networks, 2004, 46(2): 253–272. doi:  10.1016/j.comnet.2004.03.033
    [19] 魏凌波, 冯晓兵, 张驰, 等. 基于前缀保持加密的网络功能外包系统[J]. 通信学报, 2018, 39(4): 159–166. doi:  10.11959/j.issn.1000-436x.2018057

    WEI Lingbo, FENG Xiaobing, ZHANG Chi, et al. Network function outsourcing system based on prefix-preserving encryption[J]. Journal on Communications, 2018, 39(4): 159–166. doi:  10.11959/j.issn.1000-436x.2018057
  • [1] 张跃军, 潘钊, 汪鹏君, 丁代鲁, 李刚.  基于状态映射的AES算法硬件混淆设计, 电子与信息学报. doi: 10.11999/JEIT170556
    [2] 王丹, 黄开枝, 李云洲.  基于辅助符号的非线性自干扰抵消算法及其简化实现, 电子与信息学报. doi: 10.11999/JEIT160291
    [3] 赵晶晶, 霍凯, 刘永祥, 杨小琪.  基于循环前缀的相位编码OFDM雷达多普勒频移估计和补偿, 电子与信息学报. doi: 10.11999/JEIT160549
    [4] 韩明, 刘教民, 孟军英, 震洲, 王敬涛.  结合局部能量与改进的符号距离正则项的图像目标分割算法, 电子与信息学报. doi: 10.11999/JEIT141473
    [5] 唐建强, 周华春, 刘颖, 张宏科.  内容中心网络下基于前缀识别的兴趣包泛洪攻击防御方法, 电子与信息学报. doi: 10.3724/SP.J.1146.2013.01770
    [6] 高立宁, 马潇, 刘腾飞, 吴金.  基于超大点数FFT优化算法的研究与实现, 电子与信息学报. doi: 10.3724/SP.J.1146.2013.00841
    [7] 夏巧桥, 田茂, 汪鼎文, 陈曦.  基于单调优化框架的凸松弛分支定界算法求解非凸多信道联合感知问题, 电子与信息学报. doi: 10.3724/SP.J.1146.2013.01279
    [8] 陈晨, 陈志坚, 孟建熠, 严晓浪.  基于预测极性动态变换的分支预测框架研究, 电子与信息学报. doi: 10.3724/SP.J.1146.2012.00650
    [9] 李强, 严庆, 罗胜.  基于符号频域均衡的CPM迭代检测算法, 电子与信息学报. doi: 10.3724/SP.J.1146.2010.01287
    [10] 胡登鹏, 石峰, 张尔扬.  非数据辅助的OFDM系统符号同步算法, 电子与信息学报. doi: 10.3724/SP.J.1146.2010.00487
    [11] 高燕, 王炎, 尤肖虎.  一种基于数据辅助的OFDM系统符号同步算法, 电子与信息学报. doi: 10.3724/SP.J.1146.2006.00836
    [12] 潘小飞, 刘爱军, 张邦宁.  一种基于LDPC编码系统的符号同步联合信噪比估计算法, 电子与信息学报. doi: 10.3724/SP.J.1146.2006.00880
    [13] 王欢良, 韩纪庆, 郑铁然, 李海峰.  基于K-L散度的最大后验弧主导的混淆网络生成算法, 电子与信息学报. doi: 10.3724/SP.J.1146.2006.01760
    [14] 刘文强, 王呈贵.  一种用于OFDM符号定时跟踪的盲估计算法, 电子与信息学报.
    [15] 张彭, 毕光国, 曹秀英.  基于预测的OFDM系统迭代联合信道估计与符号检测算法, 电子与信息学报.
    [16] 徐斌, 杨晨阳, 毛士艺.  采用脉冲调制和循环前缀的超宽带无线通信系统, 电子与信息学报.
    [17] 孙建成, 张太镒, 刘枫, 官世子.  基于抽取滤波器多相分解的盲自适应符号同步算法, 电子与信息学报.
    [18] 艾渤, 葛建华, 赵妍妮.  多径衰落下符号定时恢复算法的改进, 电子与信息学报.
    [19] 姚兴苗, 胡光岷, 李乐民.  一种采用按值分支树的多维流分类算法, 电子与信息学报.
    [20] 禹卫东, 吴淑梅.  距离-多普勒方法中的几种插值算法比较, 电子与信息学报.
  • 加载中
  • 图(2) / 表(6)
    计量
    • 文章访问数:  249
    • HTML全文浏览量:  187
    • PDF下载量:  15
    • 被引次数: 0
    出版历程
    • 收稿日期:  2019-09-27
    • 修回日期:  2020-05-23
    • 网络出版日期:  2020-07-09
    • 刊出日期:  2020-12-08

    目录

      /

      返回文章
      返回

      官方微信,欢迎关注