数据保护的制作方法

文档序号:14491503阅读:161来源:国知局
数据保护的制作方法

本发明涉及用于第一实体保护第一量的数据并使第二实体能够基于第一量的数据执行数据处理的方法,和用于第二实体然后基于第一量的数据执行这样的数据处理的方法,以及用于施行这样的方法的装置和计算机程序。



背景技术:

第一实体x可能想要向第二实体y发送一定量的数据d1。第一实体x和第二实体y之间的通信信道可能是不安全的或者不可信的信道,就此情况而言,跨该信道传送的数据可能被非故意地修改(由于在信道上的噪声)和/或可能被故意地修改(例如,恶意的攻击者可能修改跨该信道传送的数据,和/或恶意的攻击者可能在通信信道中包括或注入新的数据,潜在地同时“假装”是第一实体x)。第二实体y因此可以接收数据d2,其中(a)接收到的数据d2可能与初始数据d1相同(如果没有初始量的数据d1的修改或损坏已经出现的话),(b)接收到的数据d2可能是第一实体x向第二实体y发送的初始数据d1的经修改的版本(例如,如果已经有由通信信道添加的噪声和/或由攻击者的修改)或者(c)接收到的数据d2可能是新的数据,其不是来源于第一实体x或者不是基于由第一实体x发送的数据(例如,如果攻击者正尝试引入新的/恶意的数据同时假装是实体x)。第二实体y可能希望只有第二实体y信任来源于第一实体的接收到的数据d2才处理接收到的数据d2(或基于接收到的数据d2提供功能),和/或只有第二实体y信任接收到的数据d2的完整性才处理接收到的数据d2(或基于接收到的数据d2提供功能)(即,处理没有被修改过的数据,或者换句话说,只有接收到的数据d2与第一实体x向第二实体y发送的初始数据d1相同才提供功能)。

公知的是,使用消息认证码(mac)对付该情形。附图中的图1是图解mac的使用的流程图。

在步骤100,第一实体x为初始数据d1生成mac。特别地,第一实体x使用mac函数f(即,m1=f(d1))生成macm1,m1是基于数据d1的一定量的数据或值(例如,校验和)。一般地,mac函数f是带密钥的(或密码)散列函数或所谓的带密钥的(或密码)单向函数。换句话说,函数f可以使用由第一实体x和第二实体y两者共享的秘密密钥k,从而仅仅第一实体x和第二实体y知道用于要执行的mac函数f的配置/设定。附加地,mac函数f是使得以下情况的函数:给定mac值m1(并且可能地甚至密钥k),创建进一步的一定量的数据d*使得f(d*)=m1在计算上是不可行的。这样的mac函数(或算法或过程)的示例是sha-1,其详情可以在http://en.wikipedia.org/wiki/sha-1(其全部的内容都通过引用合并于此)找到。

在步骤102,第一实体x向第二实体y发送该量的数据d1和macm1两者。

在步骤104,第二实体y接收一定量的数据d2和值m2。第二实体将把值m2作为意味着对应于接收到的数据d2的mac值来使用或对待。如果通过通信信道发送的数据没有被损坏或修改,则该量的数据d2是该量的数据d1,并且mac值m2是mac值m1。然而,如果已经有通过通信信道发送的数据的损坏,则可能的是该量的数据d2与该量的数据d1不同和/或mac值m2与mac值m1不同。实际上,如果攻击者已经向通信信道中引入了完全新的数据并且已经把该新的数据发送给第二实体y,则该量的数据d2可能与该量的数据d1完全不相关,并且mac值m2可能与mac值m1完全不相关。然而,如以下所陈述的,第二实体y可以在有效(即,未损坏的或真实的)的数据和无效(即,损坏的或不真实的)的数据之间进行区分。

在步骤106,第二实体可以基于接收到的量的数据d2生成macm3,即,m3=f(d2)。如当第一实体x基于初始数据d1生成macm1时在步骤100被第一实体x使用的那样,第二实体y使用以与用于第一实体x的相同方式配置的(例如,使用相同的密钥k)相同mac函数f。

在步骤108,第二实体y执行比较操作以确定接收到的macm2是否与所生成的macm3相同(即,是否m3=m2)。

如果接收到的macm2与所生成的macm3相同(即,如果m3=m2),则在步骤110,第二实体y可以假定(a)接收到的数据(d2和m2)与由第一实体x发送的初始数据(d1和m1)相同并且(b)接收到的数据(d2和m2)来源于第一实体x。这是因为仅仅第一和第二实体共享秘密密钥k并且因为对于攻击者而言创建进一步的量的数据d*使得f(d*)=m1在计算上是不可行的。因此,在步骤110,第二实体y可以在接收到的数据(d2和m2)是真实的基础上(即,在接收到的数据(d2和m2)的完整性和来源都已经被成功地验证的基础上),执行数据处理。

另一方面,如果接收到的macm2与所生成macm3不相同(即,如果m3≠m2),则在步骤112,第二实体y可以假定(a)接收到的数据(d2和m2)与第一实体x发送的初始数据(d1和m1)不相同和/或(b)接收到的数据(d2和m2)不是来源于第一实体x。因此,在步骤112,第二实体y可以在接收到的数据(d2和m2)是不真实的基础上(即,在接收到的数据(d2和m2)的完整性和/或来源没有被成功地验证的基础上),执行数据处理。

关于mac和它们可以怎样使用的更多信息可以在http://en.wikipedia.org/wiki/message_authentication_code(其全部的内容都通过引用合并于此)找到。

“白盒”环境是用于软件项目的执行环境,其中该软件项目的攻击者被假定具有对该软件项目的被操作的数据(包括中间值)、存储器内容和执行/处理流的完全访问和可见性。而且,在白盒环境中,攻击者被假定能够例如通过使用调试器来修改该软件项目的被操作的数据、存储器内容和执行/处理流——以这种方式,攻击者可以以规避初始地意图功能和/或标识秘密信息和/或为了其它目的为目标,在该软件项目上进行试验和尝试操纵该软件项目的操作。事实上,人们甚至可以假定攻击者知晓由该软件项目执行的底层算法。然而,该软件项目可能需要使用秘密信息(例如,一个或多个密码密钥),其中该信息需要向攻击者保持隐藏。相似地,将想要的是,防止攻击者修改该软件项目的执行/控制流,例如防止攻击者强制该软件项目在判定块之后采取一条执行路径代替合法的执行路径。

有许多技术,在此称为“白盒混淆技术”,用于变换软件项目12使得它对白盒攻击有抵抗力。这样的白盒混淆技术的示例可以在“white-boxcryptographyandanaesimplementation”,s.chowetal,selectedareasincryptography,9thannualinternationalworkshop,sac2002,lecturenotesincomputerscience2595(2003),p250-270和“awhite-boxdesimplementationfordrmapplications”,s.chowetal,digitalrightsmanagement,acmccs-9workshop,drm2002,lecturenotesincomputerscience2696(2003),p1-15中找到,其全部的公开通过引用合并于此。附加的示例可以在us61/055,694和wo2009/140774中找到,其全部的公开通过引用合并于此。一些白盒混淆技术实现数据流混淆——例如参见us7,350,085、us7,397,916、us6,594,761和us6,842,862,其全部的公开通过引用合并于此。一些白盒混淆技术实现控制流混淆——例如参见us6,779,114、u6,594,761和us6,842,862,其全部的公开通过引用合并于此。然而,将领会的是,存在其它的白盒混淆技术。



技术实现要素:

将领会的是,如以上参考图1描述的mac的使用要求第二实体y执行比较操作(也就是以上的步骤108)。当在软件中实现mac验证时这显出潜在的弱点。特别地,如果该软件在白盒环境中执行,则攻击者可能能够标识在软件的执行中的特定点,用于步骤108的比较在该点被执行,并且可能能够强制软件执行步骤110(即,好像mac的认证是成功的那样执行处理),即便是步骤108确定了m3≠m2(即,验证不是成功的)。事实上,攻击者可能能够修改软件的执行流,使得执行整个忽略步骤106和108,从而引起软件在接收(在步骤104)一定量的数据d2之后在步骤110执行处理。换句话说,攻击者可能能够以各种方式绕开mac检查过程,以便在可能不是有效的数据d2上施行处理。攻击者可能希望这样做,以例如引起软件执行非意图的功能(例如,通过能够向软件馈送精心打造的数据d2)。将想要的是,能够提供对付该问题的机制。

换句话说,将想要的是,使实体(以上提及的第二实体y)能够只有接收到的数据的来源和完整性是有效的,才基于接收到的数据提供意图的功能/处理(即,实体想要的或期望的或对实体有用的功能),并且如果接收到的数据的来源和/或完整性是无效的,则提供非意图的功能/处理(即,实体不想要或不期望的或对实体没有用的功能),而不必执行明确的验证步骤(诸如在图1中的步骤108)。

根据本发明的第一方面,提供一种用于第一实体保护第一量的数据并使第二实体能够基于第一量的数据执行数据处理的方法,该方法包括第一实体进行以下:对第一量的数据应用预定函数以生成第一值;和生成用于第二实体处理的第二量的数据,所述生成包括使用第一结合函数,将第一量的数据的数目n个元素中的每个与第一值结合;其中预定函数是这样的函数,对于所述函数,预定函数对输入数量的数据的应用生成对应的输出值,并且预定函数具有如下属性:给定通过修改第一数量的数据的n个元素中的每个而生成的第二数量的数据,通过使用第二结合函数将n个经修改的元素中的每个与通过对第二数量的数据应用预定函数所产生的输出值结合来从第二数量的数据再生成第一数量的数据,所述修改通过使用第一结合函数将第一数量的数据的那n个元素中的每个与通过对第一数量的数据应用预定函数所生成的输出值结合来进行。

在一些实施例中,该方法包括向第二实体提供第二量的数据。

根据本发明的第二方面,提供一种用于第二实体基于第一量的数据执行数据处理的方法,该方法包括第二实体进行以下:获得第二量的数据;对第二量的数据应用预定函数以生成第二值;通过使用第二结合函数将第二量的数据的数目n个元素中的每个与第二值结合,生成第一量的数据;和基于所生成的第一量的数据执行数据处理;其中,预定函数是这样的函数,对于所述函数,预定函数对输入数量的数据的应用生成对应的输出值,并且预定函数具有如下属性:给定通过修改第一数量的数据的n个元素中的每个而生成的第二数量的数据,通过使用第二结合函数将n个经修改的元素中的每个与通过对第二数量的数据应用预定函数所产生的输出值结合来从第二数量的数据再生成第一数量的数据,所述修改通过使用第一结合函数将第一数量的数据的那n个元素中的每个与通过对第一数量的数据应用预定函数所生成的输出值结合来进行。

在一些实施例中,该方法包括第一实体进行以下:对第一量的数据应用预定函数以生成第一值;和通过使用第一结合函数将第一量的数据的n个元素中的每个与第一值结合,生成第二量的数据。

在第一方面和第二方面的一些实施例中,预定函数具有以下在计算上是不可行的属性:确定与第二数量的数据不同的第三数量的数据,通过使用第二结合函数将第三数量的数据的n个元素中的每个与通过对第三数量的数据应用预定函数所产生的输出值结合来从第三数量的数据再生成第一数量的数据。

在第一方面和第二方面的一些实施例中,n个元素基于密钥被选取。

在第一方面和第二方面的一些实施例中,预定函数是由如下定义的函数s:其中:w是输入数量的数据,并且s(w)是由预定函数生成的对应于该量的数据w的对应输出值;a和b是预定值;并且w0,w1,…,wn-1是该量的数据w的n个元素。

这里,a和b可以是基于密钥而确定的值。

该数量的数据w可以包括至少n个元素的有序序列,并且n个元素w0,w1,…,wn-1是从至少n个元素的有序序列中随机选择的。随机选择可以由密钥播种。

使用第一结合函数将第一数量的数据的n个元素中的每个与通过对第一数量的数据应用预定函数所生成的输出值的所述结合可以包括:对于i=0,…n-1,使用模运算将s(w)与wi相加以生成相应的经修改的元素w′i。附加地,使用第二结合函数将n个经修改的元素中的每个与通过对第二数量的数据应用预定函数所产生的输出值的所述结合包括:对于i=0,…n-1,从w′i中减去其中w′是第二数量的数据。

在第一方面和第二方面的一些实施例中,第一量的数据或第二量的数据具有总数m个元素,其中n=m。

在第一方面和第二方面的一些实施例中,第一量的数据或第二量的数据具有总数m个元素,其中n<m。

根据本发明的第三方面,提供一种被布置为施行以上描述的方法中任何一种方法的装置。

根据本发明的第四方面,提供一种计算机程序,当被一个或多个处理器执行时,其引起一个或多个处理器施行以上描述的方法中任何一种方法。计算机程序可以被存储在计算机可读介质上。

附图说明

现在将仅作为举例参照附图来描述本发明的实施例,其中:

-图1是图解mac的使用的流程图;

-图2示意性图解计算机系统的示例;

-图3示意性图解根据本发明的实施例的系统;

-图4是图解根据本发明的实施例的方法的流程图;和

-图5示意性图解在图3和图4中图解的实施例的示例实现。

具体实施方式

在随后的说明中和在附图中,描述了本发明的某些实施例。然而,将领会的是,本发明没有被限制于描述的实施例,并且一些实施例可以不包括下面描述的所有特征。然而,将明显的是,在不脱离如在所附权利要求书中所陈述的本发明的宽广精神和范围的情况下,可以在此做出各种修改和改变。

图2示意性图解计算机系统200的示例。系统200包括计算机202。计算机202包括:通过一个或多个通信总线218全部链接在一起的存储介质204、存储器206、处理器208、接口210、用户输出接口212、用户输入接口214和网络接口216。

存储介质204可以是任何形式的非易失性数据存储设备,诸如硬盘驱动器、磁盘、光盘、rom等等中的一个或多个。存储介质204可以存储供处理器208执行以便计算机202起作用的操作系统。存储介质204也可以存储一个或多个计算机程序(或软件或指令或代码)。

存储器206可以是任何适合于存储数据和/或计算机程序(或软件或指令或代码)的随机存取存储器(存储单元或易失性存储介质)。

处理器208可以是适合于执行一个或多个计算机程序(诸如存储在存储介质204上的和/或在存储器206中的那些)的任何的数据处理单元,这些计算机程序中的一些可以是根据本发明实施例的计算机程序,或者是当被处理器208执行时引起处理器208施行根据本发明实施例的方法并且将系统200配置为根据本发明实施例的系统的计算机程序。处理器208可以包括单一的数据处理单元或者并行地、单独地或相互协作地操作的多个数据处理单元。处理器208在施行用于本发明实施例的数据处理操作中,可以向存储介质204和/或存储器206存储数据和/或从存储介质204和/或存储器206读取数据。

接口210可以是用于向计算机202外部的或可从计算机202移除的设备222提供接口的任何单元。设备222可以是数据存储设备,例如,光盘、磁盘、固态存储设备等等中的一个或多个。设备222可以具有处理能力——例如,设备可以是智能卡。接口210因此可以依照一个或多个其从处理器208接收的命令,从设备222访问数据或者向设备222提供数据或者与设备222对接。

用户输入接口214被布置为接收来自系统200的用户或操作员的输入。用户可以经由系统200的一个或多个输入设备(诸如,连接到用户输入接口214或者与用户输入接口214通信的鼠标(或其它定点设备)226和/或键盘224)提供该输入。然而,将领会的是,用户可以经由一个或多个附加的或者可替代的输入设备(诸如触屏)向计算机202提供输入。计算机202可以在存储器206中存储经由用户输入接口214从输入设备接收的输入以供处理器208后续访问和处理,或者可以把它直接传递给处理器208使得处理器208可以相应地响应用户输入。

用户输出接口212被布置为向系统200的用户或操作员提供图形/视觉和/或音频输出。照此,处理器208可以被布置为指令用户输出接口212形成代表想要的图形输出的图像/视频信号,并且将该信号提供给连接到用户输出接口212的系统200的监控器(或屏幕或显示单元)220。附加地或可替代地,处理器208可以被布置为指令用户输出接口212形成代表想要的音频输出的音频信号,并且将该信号提供给连接到用户输出接口212的系统200的一个或多个扬声器221。

最后,网络接口216提供用于计算机202从一个或多个数据通信网络下载数据和/或向一个或多个数据通信网络上传数据的功能。

将领会的是,在图2中图解的和上面描述的系统200的架构仅仅是示例性的,并且具有不同架构的其它计算机系统200(例如具有比在图2中示出的更少的部件,或者与在图2中示出的相比具有附加的和/或可替代的部件)可以在本发明的实施例中使用。作为示例,计算机系统200可以包括以下中的一个或多个:个人计算机;服务器计算机;移动电话;平板计算机;膝上型计算机;电视机;机顶盒;游戏控制台;其它移动设备或消费电子设备;等等。

图3示意性图解根据本发明的实施例的系统300。系统300包括第一实体302和第二实体304,其中第一实体302希望保护(或防护)一定量(或数量或区块)的数据d1,使得第二实体304可以在该量的数据d1上执行数据处理(或使用该量的数据d1)。由第二实体304进行的该数据处理的性质或者类型可以是任何种类的数据处理,并且对于本发明的实施例而言不重要。

如不久将更详细描述的,第一实体302被布置为通过生成新的/受保护的量的数据d2并且把该受保护的量的数据d2提供给第二实体304(或者至少使受保护的量的数据d2对于第二实体304可用或可访问)来保护初始的量的数据d1。第一实体302可以包括(或执行)保护模块306,保护模块306被布置为通过生成受保护的量的数据d2来保护初始的量的数据d1。

第二实体304获得(例如接收或取得或访问)一定量的数据在没有由攻击者攻击并且没有任何其它损坏(例如,噪声的引入)的情况下,数据将与受保护的数据d2相同。然而,如果受保护的数据d2在其被第二实体304接收或获得之前已经被损坏(例如,通过在其通过有噪声通信信道向第二实体304的传输期间在受保护的数据d2中引入噪声,或者通过正在第一实体302和第二实体304之间的通信信道上窃取的攻击者修改受保护的数据d2),则数据将与受保护的数据d2不相同。因此,数据d1可以被认为是第一量的数据,并且受保护的数据d2和接收到的/获得的数据两者都可以被认为是第二量的数据(其中,潜在地是d2的一个版本,并且等于d2,如果从d2由第一实体302生成到d2被第二实体304获得/接收没有对其的损坏的话)。

第二实体304处理获得的数据第二实体304可以包括(或执行)用于处理获得的数据的处理模块308。由第二实体304对接收到的数据的处理被布置使得:(a)如果受保护的数据d2没有被攻击者修改或者没有以其它方式被损坏,从而第二实体304处理的数据与受保护的数据d2相同,则数据的处理造成第二实体304基于初始数据d1执行数据处理;而(b)如果受保护的数据d2已经被攻击者修改或者已经以其它方式被损坏,从而第二实体304处理的数据与受保护的数据d2不相同,或者如果第二实体304处理的数据不是来源于第一实体302(例如,如果攻击者正执行数据注入攻击),则数据的处理造成第二实体304执行不向攻击者提供想要的或者有用的结果(即,不是基于初始数据d1的结果)的数据处理。而且,这在没有执行在图1中步骤108的形式的明确的认证/核实步骤/测试的情况下被实现,其意味着攻击点已经被移除从而第二实体304处的处理的安全性已经被增加。

第一实体302可以是软件项目(即,计算机程序或代码/指令的一些或全部),在这种情况下第一实体302可以在计算机系统(诸如图2的计算机系统200)的处理器上执行。保护模块306于是可以是该软件项目的代码或指令的部分。可替代地,第一实体302可以是硬件设备并且可以例如其本身包括计算机系统(诸如图2的计算机系统200)。保护模块306于是可以是由第一实体302执行的代码或指令的部分或者可以是第一实体302的硬件模块。第一实体302可以已经自己生成数据d1或者可以已经从另一个源(没有在图3中示出)接收到数据d1°

相似地,第二实体304可以是软件项目(即,计算机程序或代码/指令的一些或全部),在这种情况下第二实体304可以在计算机系统(诸如图2的计算机系统200)的处理器上执行。处理模块308于是可以是该软件项目的代码或指令的部分。可替代地,第二实体304可以是硬件设备并且可以例如其本身包括计算机系统(诸如图2的计算机系统200)。处理模块308于是可以是由第二实体304执行的代码或指令的部分或者可以是第二实体304的硬件模块。第二实体304可以已经直接从第一实体302获得数据可替代地,第一实体302可以已经生成受保护的数据d2并且将该受保护的数据d2提供给一个或多个居间部(其它实体、存储部/存储器,等等),使得第二实体304最终经由那些一个或多个居间部获得数据

第一实体302可以是与第二实体304相同的实体。例如,第一实体302可以是生成受保护的数据d2的软件项目,受保护的数据d2用于相同软件项目(现在称作第二实体304)以在稍后某个点处理。类似地,第一实体302可以是计算机系统,其保护模块306生成受保护的数据d2,受保护的数据d2用于相同计算机系统(现在称作第二实体304)的处理模块308以在稍后某个点处理。

第一实体302和第二实体304可以被布置为相互通信。例如,第一实体302可以被布置为向第二实体304传输或发送受保护的数据d2,或者第二实体304可以被布置为经由网络(没有在图3中示出)从第一实体302获得或取得受保护的数据d2。网络可以是适合于在第一实体302和第二实体304之间传送或输送数据的任何种类的数据通信网络。因此,网络可以包括以下中的一个或更多:局域网、广域网、城域网、因特网、无线通信网、有线或电缆通信网、卫星通信网、电话网络,等等。第一实体302和第二实体304可以被布置为经由任何适合的数据通信协议经由网络相互通信。例如,当网络是因特网时,数据通信协议可以是http。

有鉴于此,图4是图解根据本发明的实施例的方法400的流程图。如以上所描述的,本发明的实施例涉及第一实体302保护第一量的数据d1由此使第二实体304能够基于第一量的数据d1执行数据处理。

在步骤402,第一实体302对数据d1应用预定函数,在此称作函数s,以生成第一值v1=s(d1)。换句话说,第一实体302使用预定函数s基于(或对应于)数据d1生成第一值v1。数据d1的性质和大小不是重要的,即,数据d1可以涉及任何种类的数据(例如,音频数据、视频数据、软件代码、金融数据,等等)并且可以具有任意大小。预定函数s的性质不久将被更详细地描述。

在步骤404,第一实体302生成(或创建或形成)受保护的数据d2。这是通过使用第一结合函数c1将数据d1的数目n个元素中的每个与第一值v1结合来实现的,即,d2=c1(d1,v1)=c1(d1,s(d1))。换句话说,数据d1的这n个元素中的每个通过使用第一结合函数c1基于第一值v1被修改。第一结合函数c1的性质不久将被更详细地描述。

在此,术语“元素”指的是一定量或数量的数据的数个比特或字节(其可以是或可以不是在该量或数量的数据内的连续的或相邻的比特或字节)。因此,数据d1的这n个元素中的每个是数据d1的数个相应比特或字节。优选地,n个元素在数据d1内是非重叠的(即,它们不共享或共同具有数据d1的任何比特或字节)。如果n>1,则在一些实施例中所有的n个元素具有相同数目的字节或比特,但是在其它实施例中不需要一定是该情况。

如将领会的那样,n是正整数。

初始数据d1可以包括总数m个元素,其中m≥n。如果m=n,则初始数据d1的所有元素在步骤404被修改以便生成受保护的数据d2,并且因此提供对抗对受保护的数据d2的任何部分的修改或损坏的保护。然而,在一些实施例中,n可以小于该m,使得不是初始数据d1所有(即,仅仅子集)的元素在步骤404被修改以便生成受保护的数据d2,并且因此提供对抗对受保护的数据d2的仅部分的修改或损坏的保护。

数字n可以是预定或者可以是变化的(例如,取决于初始数据d1中总共存在多少元素)。

因此,如果在步骤404要修改的数据d1的n个元素是元素e0,…en-1,则第一结合函数c1通过将e0,…en-1中的每个与第一值v1结合而操作以产生相应的经修改的元素受保护的数据d2因此是其中元素e0,…en-1被经修改的元素替换的第一量的数据d1。

在可选的步骤406,受保护的数据d2被提供给第二实体304。这是可选的步骤因为,例如:第一实体302可以是与第二实体304相同的实体,在这种情况下,第二实体304将已经具有(或可以访问)受保护的数据d2;或者第二实体304可以被布置为从第一实体302取得(与被提供相反)受保护的数据d2。步骤406因此可以是使受保护的数据d2对于第二实体304可访问的步骤。

步骤402和404(并且可能地步骤406也)可以由保护模块306执行。

在步骤408,第二实体304获得数据意图是,第二实体304获得第一实体302在步骤404创建的受保护的数据d2。如以上所讨论的,在没有由攻击者攻击并且没有任何其它的损坏(例如,噪声的引入)的情况下,数据将与受保护的数据d2相同。然而,如果在步骤404后续并且在步骤408之前受保护的数据d2已经被损坏(例如,通过在有噪声通信信道上引入噪声或者通过攻击者修改受保护的数据d2),则数据将与受保护的数据d2不相同。事实上,如果攻击者正通过向第二实体304提供新数据执行攻击,则第二实体304在步骤408获得的数据可能与第一实体已经在步骤404创建的任何受保护的数据d2不相关。

第二实体304可以例如通过从第一实体302接收或取得数据(如果例如第二实体304与第一实体302经由网络302通信,则第二实体304可以经由网络从第一实体302接收或取得数据)来获得数据相似地,如果第二实体304是与第一实体302相同的实体,则第二实体304可以从第一实体302在其中存储了或记录了受保护的数据d2的存储器或数据库或存储部获得数据

在步骤410,第二实体304对数据应用相同的预定函数s以生成第二值换句话说,第二实体304使用预定函数s基于(或对应于)数据生成第二值v2。

在步骤412,第二实体304生成(或创建或形成)第三量的数据d3。这是通过使用第二结合函数c2将数据的n(在步骤404使用的相同的以上提及的数字)个元素中的每个与第二值v2结合来实现的,即,换句话说,数据的这n个元素中的每个通过使用第二结合函数c2基于第二值v2被修改。第二结合函数c2的性质不久将被更详细地描述。

因此,如果数据的n个元素是元素g0,…gn-1,则第二结合函数c2通过将g0,…gn-1中的每个与第二值v2结合而操作以产生相应的经修改的元素第三量的数据d3因此是其中元素g0,…gn-1被经修改的元素替换的数据

数据的n个元素g0,…gn-1对应于初始数据d1的n个元素e0,…en-1(或,等同地,对应于受保护的数据d2的n个元素),因为,对于i=0,…,n-1,元素gi(a)具有与对应的元素ei或相同数目的比特或字节并且(b)由在内与分别地在初始数据d1或受保护的数据d2内形成对应元素ei或的比特或字节的位置相同/对应的位置处的比特或字节形成。因此,如果没有对受保护的数据d2的攻击或损坏从而(对于i=0,…,n-1)。

在步骤414,第二实体304基于在步骤412生成的第三量的数据d3执行它的数据处理。如以上所讨论的,这可以是任何种类的数据处理,并且该数据处理的性质对于本发明的实施例不是重要的。

步骤408、410、412和414可以由处理模块308施行。

如不久将被更详细地描述的,如果没有对受保护的数据d2的攻击或损坏从而(对于i=0,…,n-1),这意味着第三量的数据d3与第一量的数据d1相同。因此,如果没有对受保护的数据d2的攻击或损坏,则第二实体304能够基于在第二实体304处再生成的第一量的数据d1执行它的数据处理(因为在这种情形中第二实体304使用将与d1相等的数据d3执行它的处理)。另一方面,如果有对受保护的数据d2的攻击或损坏从而则至少一个经修改的元素将与初始数据d1的对应初始元素ei不同,这意味着第三量的数据d3将与第一量的数据d1不同。因此,如果有对受保护的数据d2的攻击或损坏,则第二实体304不能基于第一量的数据d1执行它的数据处理,而是将代之以基于不同的量的数据d3执行它的数据处理。本发明的实施例因此特别适合于其中由第二实体304进行的数据处理对于被处理的输入数据特别敏感的情形,即,适合于其中d3小变化(例如,d3的仅仅一个比特的变化)在第二实体304的数据处理的输出中产生大变化的情形。这可能发生,例如,如果数据d3被第二实体304用作密码密钥、被第二实体304用作种子(例如,用于随机数生成器)、被第二实体304用作密码过程的输入,等等。

因此,预定函数s是这样的函数,对于所述函数,预定函数s对输入数量的数据w的应用生成对应的输出值,并且预定函数s具有如下属性:给定通过修改第一数量的数据w的n个元素中的每个而生成的第二数量的数据w′,则通过或可以通过使用第二结合函数c2将n个经修改的元素中的每个与通过对第二数量的数据w′应用预定函数s所产生的输出值v2结合来从第二数量的数据w′再生成第一数量的数据w,所述修改通过使用第一结合函数c1将第一数量的数据w的那n个元素中的每个与通过对第一数量的数据w应用预定函数s所生成的输出值v1结合来进行。换句话说,函数s、c1和c2满足下面的关系:

w=c2(w′,v2)

=c2(w′,s(w′))

=c2(c1(w,v1),s(c1(w,v1)))

=c2(c1(w,s(w)),s(c1(w,s(w))))

因此,在图3和4的上下文中:

-第一实体302生成d2=c1(d1,v1)=c1(d1,s(d1))

-第二实体304生成

-因此,如果没有对受保护的数据d2的攻击或损坏从而

使得第二实体304当处理所生成的数据d3时将处理原始的数据d1。

优选地,预定函数s具有以下在计算上是不可行的属性:确定与第二数量的数据w′不同的第三数量的数据w″,通过使用第二结合函数c2将第三数量的数据w″的n个元素中的每个与通过对第三数量的数据w″应用预定函数所产生的输出值v3结合来从第三数量的数据w″再生成第一数量的数据w。换句话说,优选的是如果对于攻击者标识第三数量的数据w″从而c2(w",v3)=w(即,从而c2(w",s(w"))=w)在计算上不可行。因此,在图3和4的上下文中,针对攻击者希望第二实体304处理的一些想要的/目标数据d3,这帮助防止攻击者创建并供应数据给第二实体304使得

第二实体304(或者至少处理模块308)可以以提供保护对抗白盒攻击(即,可以在第二实体304或处理模块308可以在白盒环境中操作或执行时(或者依赖于第二实体304或处理模块308可以在白盒环境中操作或执行的事实)发动的攻击)的方式实现。如以上所讨论的,白盒混淆技术是已知的,并且因此在此将不会被更详细地描述。这些技术提供一定程度的保护对抗由攻击者滥用或入侵第二实体304(或处理模块308)的企图。无论第二实体304(或处理模块308)是否以提供保护对抗白盒攻击的方式实现,本发明的实施例由于没有在使用mac时被采用的明确验证步骤108,而提供了增加的安全性(或者至少使攻击者更难成功地发动针对第二实体304或处理模块308的攻击)。

函数s、c1和c2的示例如下给出。

令w是一定数量的数据。令该数量的数据w的n个元素中的每个是数目m个从w中取出的相应的比特。这里,m是预定正整数,诸如m=32。将这n个元素标示为w0,w1,…,wn-1。元素wi(i=0,…,n-1)可以因此被视为有限环(即具有模2m加(+)和模2m乘(·)的整数环{0,1,…,2m-1})的元素。

定义预定函数s为使得s(w)是对应于输入数量的数据w的输出值,其中a和b是在r中的预定值。这可以经由递归关系来表示:

h0=a

hn=b×hn-1+wn-1对于n=1,…,n

设定s(w)=hn

并且因此,这是可以用干n的所有值的预定函数s的一般件定义。

第一结合函数c1于是可以被定义如下,对于w的n个元素w0,w1,…,wn-1中的每个,结合函数c1生成那n个元素w0,w1,…,wn-1的相应的经修改的版本,在此称作n个经修改的元素w′0,w′1,…,w′n-1,其中w′i=wi+s(w)(对于i=0,…,n-1)(使用模2m加)。因此,结合函数c1使用第一值v1=s(w)通过利用对应的经修改的元素w′i(对于i=0,…,n-1)替换在w中的元素wi来从初始的量的数据w生成经修改的量的数据w′,即w′=c1(w,v1)。

现在:

因此,给定经修改的量的数据w′,可以对经修改的量的数据w′应用预定函数s以获得第二值v2=s(w′)。然后,第二结合函数c2可以被定义如下:对于经修改的量的数据w′的n个经修改的元素w′0,w'1,…,w′n-1中的每个,结合函数c2使用第二值v2通过利用对应的新的元素w″i替换在w′中的每个经修改的元素w′i来从经修改的量的数据w’生成新的量的数据w",即w"=c2(w′,v2),其中w"i=w′i-s(w′)×k(对于i=0,…,n-1),其中(这里,加、减和乘是模2m的)。以这种方式,假定w′自从其初始创建起没有被修改或损坏,则w″i=w′i-s(w)=wi(对于i=0,…,n-1),从而新的量的数据w″等于原始的量的数据w。

在该示例中,值a和b可以基于第一实体302和第二实体304之间共享的密钥k(或者至少部分基于该密钥k被确定)(例如,通过将密钥k用作用于随机数生成器的种子以从环r中随机选择a和b)。

如以上所提及的,初始数据d1(或w)可以包括不同于n个元素e0,…en-1(或w0,w1,…,wn-1)的一个或多个元素。令这b个其它的元素称为元素z0,…,zb-1(对于某个正整数b)。于是函数s可以被修改为其中ui或者是元素w0,…,wn-1中的一个或者是元素z0,…,zb-1中的一个,使得无序集合{u0,…,un+b-1}是无序集合{w0,…,wn-1,z0,…zb-1}。如以上所陈述的,结合函数c1可以保持相同从而c1仅仅修改元素w0,…,wn-1。令集合s和t定义为s={i:0≤i<n+b且元素ui对于某个j是元素wj)并且t={i:0≤i<n+b且元素ui对于某个j是元素zj)。于是对于i=0,…,n+b-1,(a)如果对于某个jui=wj,则令u′i=wj+s(w);并且(b)如果对于某个juj=zj,则令u′i=zj。因此,结合函数c1对于每个i∈s利用经修改的元素u′i替换元素ui。于是在这种情况下:

因此,给定经修改的量的数据w′,可以对经修改的量的数据w′应用预定函数s以获得第二值v2=s(w′)。然后,第二结合函数c2可以被定义如下:对于经修改的量的数据w′的n个经修改的元素w′0,w′1,…,w′n-1中的每个,结合函数c2使用第二值v2通过利用对应的新的元素w″i替换w′中的每个经修改的元素w′i来从经修改的量的数据w′生成新的量的数据w″,即w″=c2(w′,v2),其中w″i=w′i-s(w′)×k(对于i=0,…,n-1),其中k=(1+∑i∈sbn+b-1-i)-1(这里,加、减和乘都是模2m的)。以这种方式,假定w′自从其初始创建起没有被修改或损坏,则w″i=w′i-s(w)=wi(对于i=0,…,n-1),从而新的量的数据w″等于初始的量的数据w。

因此,这是基于除了被修改的n个元素之外的初始数据w(或d1)的其它元素(z0,…,zb-1)(或对其操作)的预定函数s的示例。将领会的是,附加地或可替代地,结合函数c1(和对应地,结合函数c2)可以修改除了当应用预定函数s时使用的元素之外的初始数据w(或d1)的一个或多个元素。

将领会的是,本发明的实施例可以利用其它的具有以上提及的关系的函数s、c1和c2,以上提及的关系是,对于任何量的数据w,c2(c1(w,s(w)),s(c1(w,s(w))))=w。

图5示意性图解第一个以上提及的示例对在图3和4中图解的实施例的应用。特别地,图5图解初始的量的数据d1(或w)可以如何包括多个元素e0,…,en-1(或w0,…,wn-1)。步骤402牵涉基于数据d1(并且优选地,基于多个元素e0,…,en-1)确定值v1(或v1)。步骤404牵涉利用经修改的元素(或w′0…,w′n-1)替换这n个元素以生成第二量的数据d2(或w′)。在步骤408获得的量的数据包括对应的多个元素g0,…,gn-1。假定没有对第二量的数据d2的修改或损坏,则从而对于i=0,…,n-1,然后,步骤410牵涉基于数据(并且优选地,基于元素g0,…,gn-1(或w′0,…,w′n-1))确定值v2(或v2)。步骤412牵涉利用新的元素(或w"0…,w"n-1)替换这n个经修改的元素以生成第三量的数据d3(或w″)。假定没有对第二量的数据d2的修改或损坏,则d3=d1,从而在步骤412,第二实体304处理第一量的数据d1(凭借处理数据d3)。

如以上所讨论的,将领会的是,数据d1(或w)可以包括数目m个元素h0,…,hm,其中m≥n。例如,数据d1(或w)可以包括m个元素h0,…,hm的有序序列。n个元素e0,…,en-1(或w0,…,wn-1)于是可以是数据d1(或w)的m个元素中的n个元素。n个元素e0,…,en-1(或w0,…,wn-1)可以是从数据d1(或w)的m元素中随机选择的n个元素。n个元素e0,…,en-1(或w0,…,wn-1)可以是数据d1(或w)的m个元素中的n个元素,该n个元素以与在数据d1(或w)中的那n个元素出现的顺序不同的顺序(潜在地,随机地选择的顺序)。n个元素的该选择(或选取)和/或该排序可以基于第一实体302和第二实体304之间共享的密钥k(或者至少部分地基于该密钥k来确定)(例如,通过把密钥k用作用于随机数生成器的种子)。

特别地,如果数据d1(或w)包括数目m=n个元素h0,…,hn,则n个元素e0,…,en-1(或w0,…,wn-1)可以是以特定顺序的数据d1(或w)的n个元素h0,…,hn,即,对于整数集合{0,1,…,n-1}的某个排列p,ei=hp(i)。该排列可以基于第一实体302和第二实体304之间共享的密钥k(或者至少部分地基于该密钥k来确定)(例如,通过把密钥k用作用于随机数生成器的种子)。

将领会的是,描述的方法已经作为以特定顺序施行的各个步骤示出。然而,技术人员将领会,这些步骤可以以不同顺序结合或施行而同时仍然实现想要的结果。

将领会的是,本发明的实施例可以通过使用各种不同的信息处理系统实现。特别地,尽管各图及其讨论提供示例性的计算系统和方法,但是这些仅仅是为了在讨论本发明的各种方面中提供有用的参考而呈现。本发明的实施例可以在任何合适的数据处理设备上施行,诸如个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视、计算机服务器,等等。当然,系统和方法的描述已经为了讨论的目的而被简化,并且它们仅仅是可以用于本发明的实施例的许多不同类型的系统和方法中的一个。将领会的是,逻辑块之间的界限仅仅是说明性的并且可替代的实施例可以合并逻辑块或元件,或者可以对各种逻辑块或元件施加可替代的功能分解。

将领会的是,以上提及的功能可以被实现为一个或多个对应的如硬件和/或软件的模块。例如,以上提及的功能可以被实现为用于由系统的处理器执行的一个或多个软件部件。可替代地,以上提及的功能可以被实现为硬件,诸如在一个或多个现场可编程门阵列(fpga)和/或一个或多个专用集成电路(asic)和/或一个或多个数字信号处理器(dsps)和/或其它硬件布置上。在此包含的在流程图中实现的或者如以上所描述的方法步骤中的每个可以由对应的相应模块实现;在此包含的在流程图中实现的或者如以上所描述的多个方法步骤可以一起由单一的模块实现。

将领会的是,就本发明的实施例由计算机程序实现而言,那么存储或承载计算机程序的一个或多个存储介质和/或一个或多个传输介质形成本发明的各方面。计算机程序可以具有一个或多个程序指令或程序代码,当其被一个或多个处理器(或一个或多个计算机)执行时施行本发明的实施例。如在此使用的术语“程序”可以是被设计用于在计算机系统上执行的指令序列,并且可以包括子例程、函数、过程、模块、对象方法、对象实现、可执行应用程序、小程序(applet)、小服务程序(servlet)、源代码、目标代码、字节代码、共享库、动态链接库、和/或被设计用于在计算机系统上执行的其它的指令序列。存储介质可以是磁盘(诸如硬盘或软盘)、光盘(诸如cd-rom、dvd-rom或蓝光盘)、或存储器(诸如rom、ram、eeprom、eprom、闪速存储器或便携式/可移除的存储器设备),等等。传输介质可以是通信信号、数据广播、两个或更多计算机之间的通信链路,等等。

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