The invention relates to a method for protecting a software code including at least one constant value, which generates a secure software code and comprises the following steps: \u2011 a constant value to be protected is determined in the software code by the processor, \u2011 an index array of (S2) values is inserted in the software code by the processor, so that the constant value to be protected can be determined according to one value of the array The processor inserts the first instruction sequence of (S4) into the software code. When it is executed at runtime, it calculates the index of the value in the array, and extracts the calculated index in the array from the array according to the constant value to be protected According to the extracted value, a constant value to be protected is determined, and the value of the replacement variable is set equal to the determined constant value.
【技术实现步骤摘要】
【国外来华专利技术】用于防护软件代码的方法
本专利技术涉及软件保护的领域,并且更具体地涉及防篡改技术的领域。它公开了一种混淆方法,其尤其使得能够在软件中安全地使用恒定值。
技术介绍
现今,通过运行软件应用而向用户提供了许多服务。这样的应用可以运行在各种移动或否的设备上,所述设备诸如台式计算机、膝上型电脑、销售终端点、智能电话等等。它们可以在本地运行或跨网络、比如LAN或因特网而被实现。诸如智能卡或银行信用卡之类的一些设备甚至可以专用于运行一个或几个应用。这样的应用通常运行在不安全的环境中,其中攻击者可获得对运行应用的系统的操作的某种控制或甚至全部控制。因此,这些应用中的大多数需要实现某些安全机制以便保护应用所处置的数据免被这样的攻击者读取或修改。攻击者可尝试通过对系统所执行的经编译的代码的逆向工程来理解软件的操作。他然后可以访问通过软件所处置的安全信息和/或修改软件以便执行恶意操作。例如,攻击者可修改银行软件以便执行恶意金融交易或修改经许可保护的软件以便在不购买许可的情况下免费运行它。这样的逆向工程通常通过使用工具来被执行,所述工具诸如代码分析器和调试器,其从经编译的代码中提取关于代码操作的信息,诸如控制流程图,其描述代码中指令的执行次序。为了防止对软件代码的任何修改,已经开发了防篡改技术。它们通常依赖于对代码的某个部分执行完整性校验,例如通过在软件代码的特定区之上计算校验和值,然后比较所获得的值与已知参考值。如果值不匹配,则代码已经被篡改,并且应当防止软件执行,要么通过拒绝正常的软件执行要么通过伪造它。虽然如此,这样的 ...
【技术保护点】
1.一种用于防护包括至少一个恒定值的软件代码(SC)的方法,所述方法生成安全软件代码(SSC)并且包括如下步骤:/n- 由处理器(21)在软件代码中确定(S1)待保护的恒定值,/n- 由处理器在软件代码中插入(S2)值的索引数组,使得待保护的恒定值可以根据数组的一个值(X)而被确定,/n- 由处理器在软件代码中通过替换变量来替换(S3)待保护的恒定值,/n- 由处理器在软件代码中插入(S4)第一指令序列,其当在运行时被执行的时候:/n○ 计算(E1)根据其能确定待保护的恒定值的值(X)在数组中的索引(i),/n○ 从所述数组中提取(E2)位于所述数组中所述所计算的索引(i)处的值(X),/n○ 根据所述所提取的值(X),确定(E3)待保护的恒定值,/n○ 将所述替换变量的值设置(E4)成等于所确定的恒定值。/n
【技术特征摘要】
【国外来华专利技术】20170126 EP 17153413.41.一种用于防护包括至少一个恒定值的软件代码(SC)的方法,所述方法生成安全软件代码(SSC)并且包括如下步骤:
-由处理器(21)在软件代码中确定(S1)待保护的恒定值,
-由处理器在软件代码中插入(S2)值的索引数组,使得待保护的恒定值可以根据数组的一个值(X)而被确定,
-由处理器在软件代码中通过替换变量来替换(S3)待保护的恒定值,
-由处理器在软件代码中插入(S4)第一指令序列,其当在运行时被执行的时候:
○计算(E1)根据其能确定待保护的恒定值的值(X)在数组中的索引(i),
○从所述数组中提取(E2)位于所述数组中所述所计算的索引(i)处的值(X),
○根据所述所提取的值(X),确定(E3)待保护的恒定值,
○将所述替换变量的值设置(E4)成等于所确定的恒定值。
2.根据权利要求1所述的方法,其中所述第一指令序列包括第二指令序列和第三指令序列,所述第二指令序列当在运行时被执行的时候返回第一中间值(v),所述第三指令序列当在运行时被执行的时候将第一变换函数(f)应用到所述第一中间值(v)以计算所述索引(i)。
3.根据权利要求2所述的方法,其中在预定变换函数的第一集合中随机选择第一变换函数(f)。
4.根据权利要求1所述的方法,其中根据其能确定待保护的恒定值的数组中的所述值(X)等于待保护的恒定值。
5.根据权利要求1所述的方法,其中待保护的恒定值是存储器地址,并且当软件代码由处理器执行的时候,所述数组中的值是有效存储器地址。
6.根据权利要求2所述的方法,其中所述第一指令序列包括:
-第四指令序列,其当在运行时被执行的时候通过向所述第一中间值(v)应用第二变换函数(g)而确定第二中间值(m),
-第五指令序列,其当在运行时被执行的时候基于所提取的值(X)和第二中间值(m)来确定待保护的恒定值。
7.根据权利要求6所述的方法,其中在预定变换函数的第二...
【专利技术属性】
技术研发人员:E加罗,S福尔佩,P加尔巴,
申请(专利权)人:泰雷兹数字安全法国股份有限公司,德国斯芬特有限责任公司,
类型:发明
国别省市:法国;FR
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。