【技术实现步骤摘要】
【国外来华专利技术】软件完整性验证
本专利技术涉及保护软件项目的方法、执行这种受保护的软件项目的方法和验证这种受保护的软件项目的方法,以及对应的装置和计算机程序。
技术介绍
软件应用通常在不友好的环境中进行操作或执行。这种不友好的环境可以被形式化为白盒攻击场景-在这种场景中,攻击者被假设有能力在软件应用的执行之前及期间审查和修改软件应用的代码/指令和数据/资源以及由该软件应用生成的运行时间数据。一个重要的保护目的是确定软件应用的操作正确性。这通常被称为完整性验证(参见例如https://en.wikipedia.org/wiki/File_verification,其整体公开通过引用结合在本文中)。IV旨在确保在运行时间执行的软件应用是由软件应用的供应商发布的版本。这有助于最终用户或服务提供商信任软件应用的原始/认证副本而非修改版本(例如,包含恶意软件的版本)正在执行。IV的传统方法是基于软件应用的原始代码中的一些或全部来计算一个值,当此代码被读取为数据时-这个值可以例如被计算为已被读取的代码的检查和(checksum)或散列或加密的强散列。使用加密的强散列使得对于攻击者在维持原始散列值的同时修改代码变得不可行-因此,可以通过检测不正确的或非预期的散列值来标识对代码的修改。这种IV可以由IV模块来执行,所述IV模块已经被结合到例如软件应用中或者其作为单独过程来执行。这在附图的图10中示意性示出。但是,如果攻击者能够以跳过或禁用验证步骤的方式修改IV模块,或者将IV测试改变为总是报告成功,则IV的这种方法可能会被击败。因此,IV模块通常以安全方式来实现,其中一种或多种软件保护技 ...
【技术保护点】
1. 一种方法包括,在包括验证代码和代码中的一个或多个部分的软件项目的运行时间期间:所述验证代码使用(a)由代码的所述一个或多个部分生成的运行时间数据和(b)一个或多个预定参数来生成验证数据,所述验证数据表示数据元素的预定第一集合的元素;以及将所述验证数据提供给完整性检查器,所述完整性检查器布置成(i)如果所述验证数据表示数据元素的预定第二集合的元素,其中所述第二集合是所述第一集合的子集,则标识与所述验证代码相关的修改尚未发生,以及(ii)如果所述验证数据没有表示所述第二集合的元素,则标识与所述验证代码相关的修改已经发生;其中在不具有对所述一个或多个预定参数或与所述一个或多个预定参数相关的数据的认识的情况下,确定所述第二集合的元素在计算上是不可实行的;以及其中,在没有与所述验证代码相关的修改的情况下,由所述验证代码对所述一个或多个预定参数的使用确保所述验证数据表示所述第二集合的元素,并且由所述验证代码对所述运行时间数据的使用控制所述第二集合的哪个元素由所生成的验证数据表示。
【技术特征摘要】
【国外来华专利技术】1.一种方法包括,在包括验证代码和代码中的一个或多个部分的软件项目的运行时间期间:所述验证代码使用(a)由代码的所述一个或多个部分生成的运行时间数据和(b)一个或多个预定参数来生成验证数据,所述验证数据表示数据元素的预定第一集合的元素;以及将所述验证数据提供给完整性检查器,所述完整性检查器布置成(i)如果所述验证数据表示数据元素的预定第二集合的元素,其中所述第二集合是所述第一集合的子集,则标识与所述验证代码相关的修改尚未发生,以及(ii)如果所述验证数据没有表示所述第二集合的元素,则标识与所述验证代码相关的修改已经发生;其中在不具有对所述一个或多个预定参数或与所述一个或多个预定参数相关的数据的认识的情况下,确定所述第二集合的元素在计算上是不可实行的;以及其中,在没有与所述验证代码相关的修改的情况下,由所述验证代码对所述一个或多个预定参数的使用确保所述验证数据表示所述第二集合的元素,并且由所述验证代码对所述运行时间数据的使用控制所述第二集合的哪个元素由所生成的验证数据表示。2.一种保护软件项目的方法,其中所述软件项目包括代码中的一个或多个部分,所述方法包括:修改所述软件项目,以使得所述软件项目包括验证代码,所述验证代码布置成,在所述软件项目的运行时间期间:使用(a)由代码中的所述一个或多个部分生成的运行时间数据和(b)一个或多个预定参数来生成验证数据,所述验证数据表示数据元素的预定第一集合的元素;以及将所述验证数据提供给完整性检查器,所述完整性检查器布置成(i)如果所述验证数据表示数据元素的预定第二集合的元素,其中所述第二集合是所述第一集合的子集,则标识与所述验证代码相关的修改尚未发生,以及(ii)如果所述验证数据没有表示所述第二集合的元素,则标识与所述验证代码相关的修改已经发生;其中在不具有对所述一个或多个预定参数或与所述一个或多个预定参数相关的数据的认识的情况下,确定所述第二集合的元素在计算上是不可实行的;以及其中,在没有与所述验证代码相关的修改的情况下,由所述验证代码对所述一个或多个预定参数的使用确保所述验证数据表示所述第二集合的元素,并且由所述验证代码对所述运行时间数据的使用控制所述第二集合的哪个元素由所生成的验证数据表示。3.根据权利要求2所述的方法,其中所述一个或多个预定参数中的每个是所述验证代码的一部分或者是在所述修改期间被包括在所述软件项目中的数据的一部分。4.根据权利要求2或3所述的方法,其中所述验证代码没有基于在所述修改之前存在于所述软件项目中的软件元素来生成所述验证数据。5.一种验证软件项目的方法,所述软件项目包括用于生成验证数据的验证代码,所述方法包括:接收验证数据,所述验证数据表示数据元素的预定第一集合的元素;如果所述验证数据表示数据元素的预定第二集合的元素,其中所述第二集合是所述第一集合的子集,则标识与所述验证代码相关的修改尚未发生;以及如果所述验证数据没有表示所述第二集合的元素,则标识与所述验证代码相关的修改已经发生;以及其中在不具有对一个或多个预定参数或与所述一个或多个预定参数相关的数据的认识的情况下,确定所述第二集合的元素在计算上是不可实行的;其中,在没有与所述验证代码相关的修改的情况下,由所述验证代码对所述一个或多个预定参数的使用确保所述验证数据表示所述第二集合的元素,并且由所述验证代码对由所述软件项目的代码中的一个或多个部分生成的运行时间数据的使用控制所述第二集合的哪个元素由所生成的验证数据表示。6.根据权利要求5所述的方法,包括:标识所接收到的验证数据是否对应于先前接收到的与所述软件项目相关的验证数据;如果所接收到的验证数据没有对应于先前接收到的与所述软件项目相关的验证数据,则标识与所述验证代码相关的修改尚未发生;以及如果所接收到的验证数据对应于先前接收到的与所述软件项目相关的验证数据,则标识与所述验证代码相关的修改已经发生。7.根据前述权利要求中任一项所述的方法,其中所述验证代码生成所述验证数据是通过:使用所述运行时间数据来生成伪随机数据并且使用所述伪随机数据和所述一个或多个预定参数来生成所述验证数据。8.根据权利要求1至6中任一项所述的方法,其中所述运行时间数据是伪随机的或熵的源。9.根据前述权利要求中任一项所述的方法,其中所述验证代码布置成生成与由所述验证代码先前生成的基本上所有验证数据不同的验证数据。10.根据权利要求8所述的方法,其中所述验证代码布置成生成与由所述验证代码先前生成的基本上所有验证数据不同的验证数据,这是由于用来生成所述验证数据的所述运行时间数据与由所述验证代码先前...
【专利技术属性】
技术研发人员:顾元祥,H约翰逊,
申请(专利权)人:爱迪德技术有限公司,
类型:发明
国别省市:荷兰,NL
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。