CN108064381B - 用于数据保护的方法 - Google Patents

用于数据保护的方法 Download PDF

Info

Publication number
CN108064381B
CN108064381B CN201580080551.6A CN201580080551A CN108064381B CN 108064381 B CN108064381 B CN 108064381B CN 201580080551 A CN201580080551 A CN 201580080551A CN 108064381 B CN108064381 B CN 108064381B
Authority
CN
China
Prior art keywords
data
amount
entity
elements
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580080551.6A
Other languages
English (en)
Other versions
CN108064381A (zh
Inventor
M.基纳茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Irdeto Technology Co ltd
Original Assignee
Irdeto Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Irdeto Technology Co ltd filed Critical Irdeto Technology Co ltd
Publication of CN108064381A publication Critical patent/CN108064381A/zh
Application granted granted Critical
Publication of CN108064381B publication Critical patent/CN108064381B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

用于数据保护的方法
技术领域
本发明涉及用于第一实体保护第一量的数据并使第二实体能够基于第一量的数据执行数据处理的方法,和用于第二实体然后基于第一量的数据执行这样的数据处理的方法,以及用于施行这样的方法的装置和计算机程序。
背景技术
第一实体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))生成MAC M1,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和MAC M1两者。
在步骤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生成MAC M3,即, M3=F(D2)。如当第一实体X基于初始数据D1生成MAC M1时在步骤100被第一实体 X使用的那样,第二实体Y使用以与用于第一实体X的相同方式配置的(例如,使用相同 的密钥K)相同MAC函数F。
在步骤108,第二实体Y执行比较操作以确定接收到的MAC M2是否与所生成的 MACM3相同(即,是否M3=M2)。
如果接收到的MAC M2与所生成的MAC M3相同(即,如果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)的完整性和来源都 已经被成功地验证的基础上),执行数据处理。
另一方面,如果接收到的MAC M2与所生成MAC M3不相同(即, 如果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-Box Cryptography and an AESImplementation”,S.Chow et al,Selected Areas in Cryptography,9th AnnualInternational Workshop,SAC 2002,Lecture Notes in Computer Science 2595(2003),p250-270和“A White- Box DES Implementation for DRM Applications”,S.Chow etal,Digital Rights Management, ACM CCS-9 Workshop,DRM 2002,Lecture Notes inComputer Science 2696(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:
Figure GDA0001588042270000071
其中: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中减去
Figure GDA0001588042270000072
其中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获得(例如接收或取得或访问)一定量的数据
Figure GDA0001588042270000101
在没有由攻击者攻击并且没有任何其它损坏(例如,噪声的引入)的情况下,数据
Figure GDA0001588042270000102
将与受保护的数据D2相同。然而,如果受保护的数据D2在其被第二实体304接收或获得之前已经被损坏(例如, 通过在其通过有噪声通信信道向第二实体304的传输期间在受保护的数据D2中引入噪声, 或者通过正在第一实体302和第二实体304之间的通信信道上窃取的攻击者修改受保护的数据D2),则数据
Figure GDA0001588042270000103
将与受保护的数据D2不相同。因此,数据D1可以被认为是第一量的数 据,并且受保护的数据D2和接收到的/获得的数据
Figure GDA0001588042270000111
两者都可以被认为是第二量的数据 (其中,
Figure GDA0001588042270000112
潜在地是D2的一个版本,并且等于D2,如果从D2由第一实体302生成到D2被第二实体304获得/接收没有对其的损坏的话)。
第二实体304处理获得的数据
Figure GDA0001588042270000113
第二实体304可以包括(或执行)用于处理获得的数据
Figure GDA0001588042270000114
的处理模块308。由第二实体304对接收到的数据
Figure GDA0001588042270000115
的处理被布置使得:(a)如果受保护的数据D2没有被攻击者修改或者没有以其它方式被损坏,从而第二实体304处理的数据
Figure GDA0001588042270000116
与受保护的数据D2相同,则数据
Figure GDA0001588042270000117
的处理造成第二实体304基于初始数据D1执行数据处理;而(b)如果受保护的数据D2已经被攻击者修改或者已经以其它方式被损坏,从而第二实体304处理的数据
Figure GDA0001588042270000118
与受保护的数据D2不相同,或者如果第二实体304处理的数据
Figure GDA0001588042270000119
不是来源于第一实体302(例如,如果攻击者正执行数据注入攻击),则数据
Figure GDA00015880422700001110
的处理造成第二实体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获得数据
Figure GDA0001588042270000121
可替代地,第一实体302可以已经生成受保护的数据D2并且将该受保护的数据D2提供给一个或多个居间部(其它实体、存储部/存储器,等等),使得第二实体304最终经由那些一个或多个居间部获得数据
Figure GDA0001588042270000122
第一实体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结合而操作以产生相应的经修改的元素
Figure GDA0001588042270000151
受保护的数据D2因此是其中元素E0,…EN-1被经修改的元素
Figure GDA0001588042270000152
替换的第一量的数据D1
在可选的步骤406,受保护的数据D2被提供给第二实体304。这是可选的步骤因为,例如:第一实体302可以是与第二实体304相同的实体,在这种情况下,第二实体304 将已经具有(或可以访问)受保护的数据D2;或者第二实体304可以被布置为从第一实体 302取得(与被提供相反)受保护的数据D2。步骤406因此可以是使受保护的数据D2对于 第二实体304可访问的步骤。
步骤402和404(并且可能地步骤406也)可以由保护模块306执行。
在步骤408,第二实体304获得数据
Figure GDA0001588042270000153
意图是,第二实体304获得第一实体302 在步骤404创建的受保护的数据D2。如以上所讨论的,在没有由攻击者攻击并且没有任何 其它的损坏(例如,噪声的引入)的情况下,数据
Figure GDA0001588042270000156
将与受保护的数据D2相同。然而,如 果在步骤404后续并且在步骤408之前受保护的数据D2已经被损坏(例如,通过在有噪声 通信信道上引入噪声或者通过攻击者修改受保护的数据D2),则数据
Figure GDA0001588042270000155
将与受保护的数据 D2不相同。事实上,如果攻击者正通过向第二实体304提供新数据执行攻击,则第二实体 304在步骤408获得的数据
Figure GDA0001588042270000161
可能与第一实体已经在步骤404创建的任何受保护的数据D2不相关。
第二实体304可以例如通过从第一实体302接收或取得数据
Figure GDA0001588042270000162
(如果例如第二实体 304与第一实体302经由网络302通信,则第二实体304可以经由网络从第一实体302接收或取得数据
Figure GDA0001588042270000163
)来获得数据
Figure GDA0001588042270000164
相似地,如果第二实体304是与第一实体302相同的实 体,则第二实体304可以从第一实体302在其中存储了或记录了受保护的数据D2的存储器 或数据库或存储部获得数据
Figure GDA0001588042270000165
在步骤410,第二实体304对数据
Figure GDA0001588042270000166
应用相同的预定函数s以生成第二值
Figure GDA0001588042270000167
换句话说,第二实体304使用预定函数s基于(或对应于)数据
Figure GDA0001588042270000168
生成第 二值V2
在步骤412,第二实体304生成(或创建或形成)第三量的数据D3。这是通过使用 第二结合函数c2将数据
Figure GDA0001588042270000169
的N(在步骤404使用的相同的以上提及的数字)个元素中的每 个与第二值V2结合来实现的,即,
Figure GDA00015880422700001610
换句话说,数据
Figure GDA00015880422700001611
的 这N个元素中的每个通过使用第二结合函数c2基于第二值V2被修改。第二结合函数c2的性 质不久将被更详细地描述。
因此,如果数据
Figure GDA0001588042270000171
的N个元素是元素G0,…GN-1,则第二结合函数c2通过将 G0,…GN-1中的每个与第二值V2结合而操作以产生相应的经修改的元素
Figure GDA0001588042270000172
第 三量的数据D3因此是其中元素G0,…GN-1被经修改的元素
Figure GDA0001588042270000173
替换的数据
Figure GDA0001588042270000174
数据
Figure GDA0001588042270000175
的N个元素G0,…GN-1对应于初始数据D1的N个元素E0,…EN-1(或, 等同地,对应于受保护的数据D2的N个元素
Figure GDA0001588042270000176
),因为,对于 i=0,…,N-1,元素Gi(a)具有与对应的元素Ei
Figure GDA0001588042270000177
相同数目的比特或字节并且(b)由 在
Figure GDA0001588042270000178
内与分别地在初始数据D1或受保护的数据D2内形成对应元素Ei
Figure GDA0001588042270000179
的比特或字节的 位置相同/对应的位置处的比特或字节形成。因此,如果没有对受保护的数据D2的攻击或损 坏从而
Figure GDA00015880422700001710
Figure GDA00015880422700001711
(对于i=0,…,N-1)。
在步骤414,第二实体304基于在步骤412生成的第三量的数据D3执行它的数据处理。如以上所讨论的,这可以是任何种类的数据处理,并且该数据处理的性质对于本发明的实施例不是重要的。
步骤408、410、412和414可以由处理模块308施行。
如不久将被更详细地描述的,如果没有对受保护的数据D2的攻击或损坏 从而
Figure GDA0001588042270000181
Figure GDA0001588042270000182
(对于i=0,…,N-1),这意味着第三量的数据D3与第一 量的数据D1相同。因此,如果没有对受保护的数据D2的攻击或损坏,则第二实体304能够 基于在第二实体304处再生成的第一量的数据D1执行它的数据处理(因为在这种情形中第 二实体304使用将与D1相等的数据D3执行它的处理)。另一方面,如果有对受保护的数据 D2的攻击或损坏从而
Figure GDA0001588042270000183
则至少一个经修改的元素
Figure GDA0001588042270000184
将与初始数据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生成
Figure GDA0001588042270000191
-因此,如果没有对受保护的数据D2的攻击或损坏从而
Figure GDA0001588042270000192
Figure GDA0001588042270000193
使得第二实体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,这帮助 防止攻击者创建并供应数据
Figure GDA0001588042270000201
给第二实体304使得
Figure GDA0001588042270000202
第二实体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)可以因此被视为有限环
Figure GDA0001588042270000204
(即具有模 2m加(+)和模2m乘(·)的整数环{0,1,…,2m-1})的元素。
定义预定函数s为
Figure GDA0001588042270000203
使得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′,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)。
现在:
Figure GDA0001588042270000211
因此,给定经修改的量的数据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),其中
Figure GDA0001588042270000221
(这里,加、减和乘是模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可以被修改为
Figure GDA0001588042270000222
其中 ui或者是元素w0,…,wN-1中的一个或者是元素z,…,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)如 果对于某个j ui=wj,则令u′i=wj+s(w);并且(b)如果对于某个j uj=zj,则令u′i=zj。因此,结合函数c1对于每个i∈S利用经修改的元素u′i替换元素ui。于是
Figure GDA0001588042270000231
在这种情况下:
Figure GDA0001588042270000232
因此,给定经修改的量的数据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牵涉利用经修改的元素
Figure GDA0001588042270000251
(或w′0…,w′N-1)替换这N个元 素以生成第二量的数据D2(或w′)。在步骤408获得的量的数据
Figure GDA0001588042270000252
包括对应的多个元素 G0,…,GN-1。假定没有对第二量的数据D2的修改或损坏,则
Figure GDA0001588042270000253
从而对于 i=0,…,N-1,
Figure GDA0001588042270000254
然后,步骤410牵涉基于数据
Figure GDA0001588042270000255
(并且优选地,基于元素 G0,…,GN-1(或w′0,…,w′N-1))确定值V2(或v2)。步骤412牵涉利用新的元素
Figure GDA0001588042270000256
(或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、闪速存储器或便携式/可移除的存储器设备),等等。传 输介质可以是通信信号、数据广播、两个或更多计算机之间的通信链路,等等。

Claims (17)

1.一种用于第一实体保护第一量的数据并使第二实体能够基于第一量的数据执行数据处理的方法,所述方法包括第一实体进行以下:
对第一量的数据应用预定函数以生成第一值;和
生成用于第二实体处理的第二量的数据,所述生成包括使用第一结合函数将第一量的数据的数目N个元素中的每个与第一值结合;
其中预定函数是这样的函数,对于所述函数,预定函数对输入数量的数据的应用生成对应的输出值,并且预定函数具有如下属性:给定通过修改第一数量的数据的N个元素中的每个而生成的第二数量的数据,通过使用第二结合函数将N个经修改的元素中的每个与通过对第二数量的数据应用预定函数所产生的输出值结合来从第二数量的数据再生成第一数量的数据,所述修改通过使用第一结合函数将第一数量的数据的那N个元素中的每个与通过对第一数量的数据应用预定函数所生成的输出值结合来进行。
2.如权利要求1所述的方法,包括向第二实体提供第二量的数据。
3.如权利要求1所述的方法,其中,预定函数具有以下在计算上是不可行的属性:确定与第二数量的数据不同的第三数量的数据,通过使用第二结合函数将第三数量的数据的N个元素中的每个与通过对第三数量的数据应用预定函数所产生的输出值结合来从第三数量的数据再生成第一数量的数据。
4.一种用于第二实体基于第一量的数据执行数据处理的方法,所述方法包括第二实体进行以下:
获得第二量的数据;
对第二量的数据应用预定函数以生成第二值;
通过使用第二结合函数将第二量的数据的数目N个元素中的每个与第二值结合,生成第一量的数据;和
基于所生成的第一量的数据执行数据处理;
其中,预定函数是这样的函数,对于所述函数,预定函数对输入数量的数据的应用生成对应的输出值,并且预定函数具有如下属性:给定通过修改第一数量的数据的N个元素中的每个而生成的第二数量的数据,通过使用第二结合函数将N个经修改的元素中的每个与通过对第二数量的数据应用预定函数所产生的输出值结合来从第二数量的数据再生成第一数量的数据,所述修改通过使用第一结合函数将第一数量的数据的那N个元素中的每个与通过对第一数量的数据应用预定函数所生成的输出值结合来进行。
5.如权利要求4所述的方法,包括第一实体进行以下:
对第一量的数据应用预定函数以生成第一值;和
通过使用第一结合函数将第一量的数据的N个元素中的每个与第一值结合,生成第二量的数据。
6.如权利要求4所述的方法,其中,预定函数具有以下在计算上是不可行的属性:确定与第二数量的数据不同的第三数量的数据,通过使用第二结合函数将第三数量的数据的N个元素中的每个与通过对第三数量的数据应用预定函数所产生的输出值结合来从第三数量的数据再生成第一数量的数据。
7.如前述权利要求中任一项所述的方法,其中N个元素基于密钥被选取。
8.如权利要求1-6中任一项所述的方法,其中预定函数是由如下定义的函数s:
Figure DEST_PATH_IMAGE001
其中:
w是输入数量的数据,并且s(w)是由预定函数生成的对应于所述量的数据w的对应输出值;
a和b是预定值;并且
Figure DEST_PATH_IMAGE002
是所述量的数据w的N个元素。
9.如权利要求8所述的方法,其中a和b是基于密钥而确定的值。
10.如权利要求8所述的方法,其中所述数量的数据w包括至少N个元素的有序序列,并且N个元素
Figure 634014DEST_PATH_IMAGE002
是从至少N个元素的有序序列中随机选择的。
11.如权利要求10所述的方法,其中随机选择由密钥播种。
12.如权利要求8所述的方法,其中使用第一结合函数将第一数量的数据的N个元素中的每个与通过对第一数量的数据应用预定函数所生成的输出值的所述结合包括:对于
Figure DEST_PATH_IMAGE003
,使用模运算将s(w)与wi相加以生成相应的经修改的元素
Figure DEST_PATH_IMAGE004
13.如权利要求12所述的方法,其中使用第二结合函数将N个经修改的元素中的每个与通过对第二数量的数据应用预定函数所产生的输出值的所述结合包括:对于
Figure 738105DEST_PATH_IMAGE003
,从
Figure 783422DEST_PATH_IMAGE004
中减去
Figure DEST_PATH_IMAGE005
,其中
Figure DEST_PATH_IMAGE006
是第二数量的数据。
14.如权利要求1-6中任一项所述的方法,其中,第一量的数据或第二量的数据具有总数M个元素,其中
Figure DEST_PATH_IMAGE007
15.如权利要求1至6中任一项所述的方法,其中,第一量的数据或第二量的数据具有总数M个元素,其中
Figure DEST_PATH_IMAGE008
16.一种被布置为施行根据权利要求1至15中任一项所述的方法的装置。
17.一种计算机可读介质,其存储计算机程序,当被一个或多个处理器执行时,其引起一个或多个处理器施行根据权利要求1至15中任一项的方法。
CN201580080551.6A 2015-03-30 2015-03-30 用于数据保护的方法 Active CN108064381B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2015/056927 WO2016155779A1 (en) 2015-03-30 2015-03-30 Data protection

Publications (2)

Publication Number Publication Date
CN108064381A CN108064381A (zh) 2018-05-22
CN108064381B true CN108064381B (zh) 2021-06-18

Family

ID=52875122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580080551.6A Active CN108064381B (zh) 2015-03-30 2015-03-30 用于数据保护的方法

Country Status (5)

Country Link
US (1) US10523419B2 (zh)
EP (1) EP3278259B1 (zh)
CN (1) CN108064381B (zh)
CA (1) CA2981363A1 (zh)
WO (1) WO2016155779A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2981363A1 (en) 2015-03-30 2016-10-06 Irdeto B.V. Data protection
FR3063857B1 (fr) * 2017-03-08 2020-02-14 Safran Identity & Security Procede de signature electronique d'un document avec une cle secrete predeterminee

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1300398A (zh) * 1999-02-17 2001-06-20 索尼公司 信息处理设备和方法,以及程序存储介质
CN101233755A (zh) * 2005-07-14 2008-07-30 塞库斯特里姆技术公司 多媒体数据保护
CN103023862A (zh) * 2011-09-21 2013-04-03 索尼公司 用于完整性保护和验证的方法、服务器及系统
US8762731B2 (en) * 2012-09-14 2014-06-24 Sap Ag Multi-system security integration

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4113889C2 (de) 1991-04-27 1994-05-11 Stockhausen Chem Fab Gmbh Neue wasserlösliche biologisch abbaubare Kohlensäurepolyester und ihre Verwendung als Präparations- und Gleitmittel für Synthesegarne
US6567917B1 (en) * 1999-02-01 2003-05-20 Cisco Technology, Inc. Method and system for providing tamper-resistant executable software
US6594761B1 (en) 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
US6779114B1 (en) 1999-08-19 2004-08-17 Cloakware Corporation Tamper resistant software-control flow encoding
CA2305078A1 (en) 2000-04-12 2001-10-12 Cloakware Corporation Tamper resistant software - mass data encoding
CA2327911A1 (en) 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
US7167565B2 (en) * 2001-03-06 2007-01-23 Arcot Systems, Inc. Efficient techniques for sharing a secret
US7478243B2 (en) * 2001-03-21 2009-01-13 Microsoft Corporation On-disk file format for serverless distributed file system with signed manifest of file modifications
EP1369499A3 (en) * 2002-04-15 2004-10-20 Semiconductor Energy Laboratory Co., Ltd. Method of fabricating light-emitting device and apparatus for manufacturing light-emitting device
CN101364415B (zh) * 2003-07-07 2013-03-20 罗威所罗生股份有限公司 用于控制盗版和启用交互式内容的可重编程的安全性
US7721340B2 (en) * 2004-06-12 2010-05-18 Microsoft Corporation Registry protection
US20070206786A1 (en) * 2005-08-31 2007-09-06 Skyetek, Inc. Rfid security system
US8479016B2 (en) * 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function
DE502007004774D1 (de) * 2007-03-12 2010-09-30 Secunet Security Networks Ag Schutzeinrichtung für eine programmierbare datenverarbeitende Einheit
EP2304552B1 (en) 2008-05-23 2019-11-06 Irdeto B.V. System and method for generating white-box implementations of software applications
US8555089B2 (en) * 2009-01-08 2013-10-08 Panasonic Corporation Program execution apparatus, control method, control program, and integrated circuit
JP5552541B2 (ja) * 2009-12-04 2014-07-16 クリプトグラフィ リサーチ, インコーポレイテッド 検証可能な耐漏洩性暗号化および復号化
EP2487828A1 (en) * 2011-02-10 2012-08-15 Thomson Licensing Method and device for generating control words
US20150121073A1 (en) * 2012-03-23 2015-04-30 Irdeto B.V. Software fingerprinting
KR20150074414A (ko) * 2013-12-24 2015-07-02 현대자동차주식회사 펌웨어 업그레이드 방법 및 그 시스템
US10374807B2 (en) * 2014-04-04 2019-08-06 Hewlett Packard Enterprise Development Lp Storing and retrieving ciphertext in data storage
CA2981363A1 (en) 2015-03-30 2016-10-06 Irdeto B.V. Data protection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1300398A (zh) * 1999-02-17 2001-06-20 索尼公司 信息处理设备和方法,以及程序存储介质
CN101233755A (zh) * 2005-07-14 2008-07-30 塞库斯特里姆技术公司 多媒体数据保护
CN103023862A (zh) * 2011-09-21 2013-04-03 索尼公司 用于完整性保护和验证的方法、服务器及系统
US8762731B2 (en) * 2012-09-14 2014-06-24 Sap Ag Multi-system security integration

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A White-box DES Implementation for DRM Application;S.Chow 等;《Pre-proceedings for ACM DRM-2002 workshop》;20021015;第1-16页 *
云安全研究进展综述;俞能海 等;《电子学报》;20130228;第41卷(第2期);371-381页 *

Also Published As

Publication number Publication date
CN108064381A (zh) 2018-05-22
CA2981363A1 (en) 2016-10-06
EP3278259A1 (en) 2018-02-07
US20180091295A1 (en) 2018-03-29
WO2016155779A1 (en) 2016-10-06
US10523419B2 (en) 2019-12-31
EP3278259B1 (en) 2020-12-23

Similar Documents

Publication Publication Date Title
US11281769B2 (en) Software integrity verification
JP6771565B2 (ja) ウェブページ、ウェブアプリ、およびアプリケーションをセキュリティ保護すること
US9838198B2 (en) Splitting S-boxes in a white-box implementation to resist attacks
CA2717622C (en) White-box implementation
US9455833B2 (en) Behavioral fingerprint in a white-box implementation
US20180262326A1 (en) Protecting white-box feistel network implementation against fault attack
EP3169017B1 (en) Split-and-merge approach to protect against dfa attacks
WO2019229234A1 (en) Shared secret establishment
US10700849B2 (en) Balanced encoding of intermediate values within a white-box implementation
CN107273724B (zh) 为白盒实施方案的输入和输出加水印
US20160182227A1 (en) S-Box In Cryptographic Implementation
EP3602955A1 (en) Method of rsa signature or decryption protected using assymetric multiplicative splitting
EP3068067B1 (en) Implementing padding in a white-box implementation
US10546155B2 (en) Protecting an item of software
CN108064381B (zh) 用于数据保护的方法
US9338145B2 (en) Security patch without changing the key
EP2940917A1 (en) Behavioral fingerprint in a white-box implementation
EP3267618B1 (en) Equality check implemented with secret sharing
EP3931999A1 (en) Method secured against side-channel attacks with a new masking scheme protecting linear operations of a cryptographic algorithm
EP2940920B1 (en) Security patch without changing the key

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant