一种基于二进制转换器的定时旁路攻击安全防护方法与流程

文档序号:36999207发布日期:2024-02-09 12:42阅读:19来源:国知局
一种基于二进制转换器的定时旁路攻击安全防护方法与流程

本发明涉及工业系统控制安全领域,尤其涉及一种基于二进制转换器的定时旁路攻击安全防护方法。


背景技术:

1、二进制翻译是一种将二进制代码从一种isa(指令集架构)翻译成另一种 isa 的技术。这在虚拟化、模拟器和跨平台代码兼容性方面非常重要。

2、旁道攻击是一种常见的安全威胁,通过分析硬件层面的信息,例如处理器的缓存访问模式或执行时间,来推断程序的内部状态。

3、在进行跨平台的二进制翻译的过程中,由于两种架构的指令集和执行方式的不同,编译器需要进行一定程度的模拟来保持代码的功能一致性,而这种模拟不可避免的会导致执行时间差异。在这种情况下,如果编译器在转换过程中引入了时序侧通道,攻击者可能会利用代码执行时间的差异来获取关于敏感信息的一些线索,包括秘密数据、密码算法参数、加密密钥、访存模式以及程序流程等。如,在基于 qemu 等工具进行二进制翻译的过程中,分支结构可能基于秘密数值,容易导致时序泄露,从而使系统易受旁道攻击。


技术实现思路

1、本发明所要解决的问题是:提供一种基于二进制转换器的定时旁路攻击安全防护方法,用户解决跨平台二进制翻译过程中,二进制翻译器因旁路攻击导致的关键信息泄露的问题。

2、本发明采用如下技术方案,一种基于二进制转换器的定时旁路攻击安全防护方法,包括如下步骤:

3、步骤1、生成中间代码:将源平台的二进制客体代码转换为翻译器中间代码;

4、步骤2、遍历生成的翻译器中间代码,找到中间代码中每个基于秘密数值的条件分支;

5、步骤3、将秘密数值的条件分支转换为基于条件的数据选择结构,根据选择器和每个条件分支的数据选择结构,计算得到新的中间代码;

6、步骤4、对新的中间代码应用位运算进行条件选择;

7、步骤5、插入步骤4条件选择的结果到原来的中间代码;

8、步骤6、继续生成中间代码的剩余部分,具体为:处理机器码中的条件分支指令、函数调用和返回、处理多线程、锁定和其他并发控制结构;

9、步骤7、目标代码生成:将优化后的中间代码转换为目标平台的二进制代码。

10、进一步地,步骤1中,使用qemu的动态代码生成器tcg,将客体代码转换为 tcg 的中间代码,在生成中间代码的过程中,包括识别基于秘密数值的条件分支。

11、进一步地,步骤3中,所述数据选择结构,包括:简单的条件选择和复杂的条件选择,

12、在简单的条件选择中,中间代码中包含两个条件分支,分别执行两个条件分支的结构转换操作,并保存结果为dummy1 和 dummy2;

13、在复杂的条件选择中,中间代码中包含两个以上的条件分支,执行所有条件分支的结构转换操作,并将结果保存在数组dummy[n]中,n表示条件分支的个数;

14、其中,选择器为一种控制结构,基于给定的条件或表达式的结果选择执行哪个代码分支,决定程序执行的路径。

15、进一步地,步骤4中,对于简单的条件选择,包括如下子步骤:

16、步骤4.1.1、初始化参数:selector表示选择器选择出的执行结果,secret_value表示秘密数值,值为 0 或 1;

17、selector=-secret_value

18、其中,secret_value为0时,selector是0;secret_value为1时,selector是-1,在二进制表示中,-1 的所有位都是1;

19、步骤4.1.2、使用位运算组合dummy1和dummy2,公式如下:

20、result = (dummy1&~selector) | (dummy2&selector);

21、其中,&是按位与操作,| 是按位或操作,~ 是按位取反操作;

22、当selector为0时,~selector是-1,dummy1&~selector是dummy1,而dummy2&selector 是0,条件选择结果result是 dummy1|0,即dummy1;

23、当selector为-1时,~selector是0,dummy1&~selector是0,而dummy2&selector是dummy2,条件选择结果result是 0|dummy2,即dummy2。

24、进一步地,步骤4中,对于复杂的条件选择,使用循环和位运算来计算最终结果,包括如下子步骤:

25、步骤4.2.1、参数初始化:初始化参数secret_value为介于0到 n的整数,初始化条件选择结果result为0;

26、步骤4.2.2、对于每一个i,i=1,2...n,计算selector,i等于secret_value时,selector是-1,否则selector是0;

27、步骤4.2.3、使用selector将dummy[i]的所有位与selector相与,若selector是-1,结果为dummy[i];若selector 是0,结果为0;

28、步骤4. 2.4、将步骤4.3的结果与result相或,对于每个可能的i,计算相应的selector,将dummy[i]&selector与result相或,dummy[i]&selector为dummy[i]或0,取决于i是否等于secret_value;

29、步骤4.2.5、循环结束时,只有dummy[secret_value]不是0,条件选择结果result为 dummy[secret_value]。

30、执行所有可能的条件分支,根据 secret_value 的值,选择正确的结果。

31、进一步地,步骤5中,插入条件选择结果到原来的中间代码,方法为:将步骤4中得到的新的中间代码直接插入到步骤2中原来的中间代码中,替换原来的条件分支,在进行后续的优化和目标代码生成时,不会生成依赖于秘密值的分支,避免被时序攻击。

32、进一步地,步骤6中,继续生成中间代码的剩余部分,包括:插入操作、条件分支处理、代码块处理;

33、所述插入操作,具体为:算术和逻辑操作,包括基本算术运算和逻辑运算,以及位运算;控制结构操作,包括跳转、循环控制结构和条件分支;函数调用操作,处理函数或过程调用,包括参数传递、堆栈帧的处理;

34、所述条件分支处理,具体为:处理机器码中的其他条件分支指令;

35、所述代码块处理,包括:函数调用和返回,处理函数的调用机制,包括参数传递、栈帧处理、返回值处理;并发和同步机制,处理多线程、锁定和其他并发控制结构。

36、本发明技术方案还提供了: 一种电子设备,包括:一个或多个处理器;

37、存储装置,其上存储有一个或多个程序;

38、当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一基于二进制转换器的定时旁路攻击安全防护方法。

39、本发明技术方案还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,实现上述任一基于二进制转换器的定时旁路攻击安全防护方法中的步骤。

40、本发明采用以上技术方案与现有技术相比,具有以下技术效果:

41、本发明提出了一种预防动态二进制翻译器遭受旁路攻击的防护方法,将基于秘密数值的分支结构转换为数据选择结构的方法,用于减少旁道攻击的可能性,解决跨平台二进制翻译过程中,二进制翻译器因旁路攻击导致的关键信息泄露。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1