发明名称 | 在执行期间验证软件代码的完整性的方法和设备 | ||
摘要 | 本发明提供了一种自修改软件代码,包括多个模块(F1,F2),每个模块在所述软件代码的执行期间能够被修改为处于多个可能状态(S1,<u>S1</u>)。为了验证这样的代码的完整件,计算所述代码的不同状态。对于每个状态,针对代码的至少一部分产生校验和(例如,散列值)。在执行期间改变(320)代码的状态,从而修改(330)模块(F1,F2),使用代码的状态的校验和来执行(340)完整性校验。校验和可以存储在查找表(434)中,或者可以嵌入在完整性验证函数中。可以使用对模块的状态加以指示的状态变量(S)来对表(434)中的校验和进行查找。模块的可能状态是加密的和未加密的。还提供了一种用于产生受保护的软件代码(430)的设备(420)。 | ||
申请公布号 | CN102163268B | 申请公布日期 | 2016.03.16 |
申请号 | CN201110042102.6 | 申请日期 | 2011.02.17 |
申请人 | 汤姆森许可贸易公司 | 发明人 | 查理·萨尔蒙-勒加尼厄;安东尼·蒙西弗罗特 |
分类号 | G06F21/56(2013.01)I | 主分类号 | G06F21/56(2013.01)I |
代理机构 | 中科专利商标代理有限责任公司 11021 | 代理人 | 王波波 |
主权项 | 一种在自修改软件代码的执行期间验证所述自修改软件代码的完整性的方法,所述软件代码包括多个模块(F1,F2),每个模块在所述软件代码的执行期间能够处于至少两种可能状态(S1,<u>S1</u>),其中可能状态是加密的和未加密的,所述方法由执行所述软件代码的处理器(110)来执行,所述软件代码使处理器执行以下步骤:‑产生针对软件代码的至少一部分的第一校验和;‑通过将软件代码的第一校验和与所存储的所述软件代码的校验和相比较,来验证(340)所述软件代码的完整性;‑通过将多个模块(F1,F2)之一从第一状态(S1)变换(320,330)到第二状态(<u>S1</u>)来修改所述软件代码;以及‑产生针对修改后的软件代码的至少一部分的第二校验和;‑通过将修改后的软件代码的第二校验和与修改后的软件代码的校验和相比较,来验证(340)所述修改后的软件代码的完整性,所述修改后的软件代码的校验和要么是已存储的,要么是以确定性的方式根据所述软件代码的校验和来产生的。 | ||
地址 | 法国伊西莱穆利诺 |