CN105229659A - 混淆由软件应用对数据存储装置的访问 - Google Patents
混淆由软件应用对数据存储装置的访问 Download PDFInfo
- Publication number
- CN105229659A CN105229659A CN201380076947.4A CN201380076947A CN105229659A CN 105229659 A CN105229659 A CN 105229659A CN 201380076947 A CN201380076947 A CN 201380076947A CN 105229659 A CN105229659 A CN 105229659A
- Authority
- CN
- China
- Prior art keywords
- read
- write
- illusory
- storage device
- data storage
- 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.)
- Granted
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 125
- 238000000034 method Methods 0.000 claims abstract description 55
- 230000005055 memory storage Effects 0.000 claims abstract description 28
- 238000004590 computer program Methods 0.000 claims abstract description 9
- 238000013507 mapping Methods 0.000 description 33
- 230000009172 bursting Effects 0.000 description 26
- 230000008859 change Effects 0.000 description 18
- 230000002776 aggregation Effects 0.000 description 7
- 238000004220 aggregation Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000012163 sequencing technique Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 201000006549 dyspepsia Diseases 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/106—Enforcing content protection by specific content processing
- G06F21/1066—Hiding content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2123—Dummy operation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
描述了一种混淆由软件应用对数据存储装置的访问的方法。所述方法包括通过使用访问操作而访问数据存储装置。所述访问操作包括真实的访问操作和虚设的访问操作。每个真实的访问操作可操作以作为软件应用的执行的部分而访问数据存储装置。还描述了一种计算机程序,其在由处理器执行时使得处理器实施以上方法。还描述了一种计算机可读介质,其存储以上计算机程序。还描述了一种***,其被配置成实施以上方法。
Description
技术领域
本发明涉及混淆(obfuscate)由软件应用对数据存储装置的访问。
背景技术
软件应用(或程序)可以例如本地执行(在客户端设备上)或经由web浏览器通过网络来执行。浏览器应用还可以以离线模式(在本地)运行在浏览器中,表现得像本地运行的原生应用一样。
当软件应用由处理器执行时,其中履行执行的环境是所谓的“白盒”环境,如果用户(或第三方)能够访问处理使得用户可以观察并且变更软件应用的执行的话(例如通过运行合适的调试器)——这样的变更可以是对过程流的改变或对正处理的数据的改变。软件应用的执行的该观察和/或变更可以称作篡改。用户可以观察或变更(或换言之篡改)软件应用的执行以便满足他们自己的目的或目标,所述目的或目标在如果软件应用将正常运行而没有被篡改的情况下可能是不可能得以满足的。这样篡改以实现特定的目的或目标可以称作目标导向的篡改。目标导向的篡改可以涉及例如观察和/或变更在白盒环境中运行的软件应用的执行以便获得或推断由软件应用用于处理数字数据的密码学密钥(例如用于解密数据的解密密钥)。
已知各种技术用于保护在白盒环境中运行的数据处理软件应用(或程序或***)的完整性。可以在StanleyChow,PhilipEisen,HaroldJohnson,和PaulC.VanOorschot的“White-BoxCryptographyandanAESImplementation”(在密码学方面的所选领域中:第九届年度国际研讨会,SAC2002,加拿大纽芬兰圣约翰,2002年8月15-16)中找到一种示例性的技术,所述文献的全部公开内容通过引用被并入本文中。这样的技术一般目的在于通过在软件应用的控制和/或数据路径中引入附加的复杂性和/或随机性而隐藏应用的嵌入式知识。该附加的复杂性和/或随机性具有使软件应用的信息(或数据)或执行路径模糊或混淆的效应。作为该混淆的结果,变得更难以通过代码检查而从应用中提取信息并且更难以找到和/或修改与软件应用的特定功能性相关联的代码。因此,对于攻击者而言进行以下是困难得多的:能够访问在白盒环境中运行的软件应用以检索敏感数据或变更软件应用的操作以便通过篡改软件应用的执行而满足其自己的目标。因而,降低了攻击者实施目标导向的篡改的能力。目的在于降低攻击者实施目标导向的篡改的能力的这些技术可以被认为改进软件的抗篡改性。如果对于攻击者而言实施目标导向的篡改是充分困难的,那么对于任何实际的目的,软件应用可以被认为是抗篡改的,即使在理论上篡改仍是可能的。
当软件应用由处理器执行时,软件应用一般要求对数据存储装置或数据库或存储器的访问。在数据存储装置中存储的数据可以被加密或变换以便提供用于潜在攻击者的另外的屏障。这样的数据存储装置可以被视为“受保护的”数据存储装置。
以上描述的现有技术在图1中被示意性地图示。特别地,图1示出包括“受保护的”(或抗篡改的)部分12的软件应用10、以及“受保护的”数据存储装置14。然而,在应用10的受保护的部分12以及受保护的数据存储装置14之间的任何交互16对于攻击者而言仍然可见。换言之,由软件应用10对数据存储装置14的访问16对于攻击者而言是可见的。
本发明设法混淆由软件应用对数据存储装置的访问。
发明内容
如以上参照图1所提及的,在应用10的受保护的部分12以及受保护的数据存储装置14之间的任何交互对于攻击者而言是可见的。数据存储装置访问的简单追踪(例如,在定时、位置、模式、大小和频率方面)可以为潜在攻击者提供关于应用10为什么、如何或何时在使用该数据的足够信息,从而给予攻击者在对它进行分析中的起始点。示例是使用表单来选择偏好或输入数据——攻击者可以将这些动作与数据存储装置访问相互关联,理解到该类信息在本地存储。一旦攻击者开始以此方式分析软件应用10的执行,应用10就可能最终被侵入(hack)。本发明目的在于使得在应用10和数据存储装置14之间存在可见/可追踪的对接16的情况下对于攻击者而言难以分析数据存储装置访问。
根据本发明的第一方面,提供了一种混淆由软件应用对数据存储装置的访问的方法。所述方法包括通过使用访问操作而访问数据存储装置。访问操作包括真实的访问操作和虚设(dummy)的访问操作。每个真实的访问操作可操作以作为软件应用的执行的部分而访问数据存储装置。
在一些实施例中,访问操作被布置以在软件应用的至少一部分的执行期间周期性地访问数据存储装置。
在一些实施例中,对于真实的访问操作中的至少一个,在所述至少一个真实的访问操作的时间附近发生一个或多个虚设的访问操作。
在一些实施例中,虚设的访问操作被布置以与数据存储装置中的其它虚设存储位置相比更频繁地访问数据存储装置中的至少一个指定的虚设存储位置。
在一些实施例中,访问操作被布置以至少跨数据存储装置中的存储位置的子集而基本上均匀地访问数据存储装置。
在一些实施例中,访问操作包括读取操作。每个读取操作可操作以从数据存储装置的相应存储位置中读取值。真实的访问操作包括一个或多个真实的读取操作并且虚设的访问操作包括一个或多个虚设的读取操作。
在一些实施例中,访问操作包括写入操作。每个写入操作可操作以将值写入到数据存储装置的相应存储位置。真实的访问操作包括一个或多个真实的写入操作并且虚设的访问操作包括一个或多个虚设的写入操作。
在一些实施例中,访问操作包括读取/写入对。每个读取/写入对可操作以从数据存储装置的相应存储位置读取值并且随后将值写入到所述相应的存储位置。真实的访问操作包括一个或多个真实的读取/写入对并且虚设的访问操作包括一个或多个虚设的读取/写入对。
真实的读取/写入对中的至少一个可以包括软件应用的真实写入操作,其可操作以在软件应用的执行期间将指定的值写入到数据存储装置的指定的存储位置。在该情况下,真实读取/写入对中的所述至少一个可操作以从指定的存储位置读取值并且随后将指定的值写入到指定的存储位置。
真实的读取/写入对中的至少一个可以包括软件应用的真实的读取操作,其可操作以在软件应用的执行期间从数据存储装置的指定存储位置读取经编码的值X。在该情况下,真实的读取/写入对中的所述至少一个可操作以从指定的存储位置读取经编码的值X并且随后将经修改的编码值X'写入到指定的存储位置。X'被选择使得X'的经解码的版本与X的经解码的版本相同。可选地,可以通过使用误差校正码ECC来对X和X'进行解码,其中ECC(X)=ECC(X')。
在一个实施例中,所述方法此外包括通过在软件应用的真实访问操作当中分布虚设的访问操作来执行虚设的访问操作。
在一个实施例中,访问操作包括在真实的访问操作当中的虚设访问操作的时变分布。
在一个实施例中,提供了一种混淆由软件应用对客户端设备上的本地存储装置的访问的方法。所述方法包括以下步骤:(a)生成虚设的本地存储装置访问操作,每个虚设的本地存储装置访问操作可操作以访问本地存储装置;(b)生成本地存储装置访问操作的调度,所述调度包括软件应用的所生成的虚设的本地存储装置访问操作以及真实的本地存储装置访问操作,每个真实的本地存储装置访问操作可操作以作为软件应用的执行的部分来访问本地存储装置;以及(c)根据所生成的调度而访问本地存储装置。有利地,调度包括在真实的本地存储装置访问操作当中分布的虚设的本地存储装置访问操作。
根据本发明的第二方面,提供了一种计算机程序,所述计算机程序在被处理器执行时使得处理器实施根据第一方面的方法。
根据本发明的第三方面,提供了一种计算机可读介质,其存储了根据第二方面的计算机程序。
根据本发明的第四方面,提供了一种***,其被配置成实施根据第一方面的方法。
在随附的权利要求中阐明本发明的其它优选的特征。
附图说明
现在将通过示例、参照附图来描述本发明的实施例,在所述附图中:
图1是根据现有技术的由软件应用对数据存储装置的访问的示意性图示;
图2是根据本发明的一个实施例的由软件应用对数据存储装置的访问的示意性图示;
图3是根据本发明的一个实施例的使得能够实现对数据存储装置的访问的软件应用的受保护的部分内的软件模块的示意性图示;
图4和5是根据本发明的两个实施例的使用读取操作的数据存储装置访问的示意性图示;以及
图6是根据本发明的另外的实施例的使用成对的读取和写入操作的数据存储装置访问的示意性图示。
具体实施方式
在随后的描述中以及在各图中,描述了本发明的某些实施例。然而,将领会到,本发明不限于所描述的实施例并且一些实施例可以不包括以下描述的所有特征。然而,将明显的是,可以在本文中做出各种修改和改变而不偏离如在随附权利要求中所阐述的本发明的更宽的精神和范围。
图2提供了根据本发明的混淆由软件应用10对数据存储装置14的访问的方法的高级示意性图示。特别地,根据本方法,通过使用访问操作来访问数据存储装置,所述访问操作包括真实的访问操作16和虚设的访问操作18,从而混淆(或保护、或掩蔽、或隐藏、或隐蔽、或伪装、或模糊、或屏蔽、或掩饰)真实的本地存储装置访问操作。真实的访问操作16可操作以作为软件应用10的执行的部分而访问数据存储装置14。虚设的访问操作18是附加的访问操作,其也可操作以访问数据存储装置14。然而,虚设的访问操作18对软件应用10的执行没有实质上的影响,即从软件应用10的观点来看,虚设的访问操作18是“虚设的”访问操作。换言之,虚设的访问操作18对软件应用10的执行是冗余的。因而,提供虚设的访问操作以便迷惑攻击者并且使得对于攻击者而言更难以理解应用10如何工作,因为对于攻击而言不可能明确地知道给定的访问操作是真实的访问操作16还是虚设的访问操作18。换言之,包括了虚设访问操作18增加了数据存储装置访问的模糊性,以便挫败攻击者。因此,本发明可以被视为在软件应用10和数据存储装置14之间提供“受保护的”或“抗篡改”的接口,而不管在软件应用10和数据存储装置14之间的所有交互对潜在攻击者而言都可见这一事实。
除了阻碍攻击者的以上提及的优点之外,本方法还可以为软件应用提供增加的多样性。该多样性涉及使用不同的方式来掩蔽对数据存储装置14的访问,例如,查看以下的组合(a)如何创建数据存储装置访问模式,以及(b)如何将真实的访问操作16嵌入在数据存储装置访问模式中。
虚设的访问操作18特定于特定的软件应用10(即,它们是应用特定的)。在一个实施例中,虚设的访问操作18由软件应用10的受保护的部分12中的模块创建和执行。在软件应用10的受保护的部分12对攻击者而言不可渗透的假设下,真实访问操作16(的定时)将仅在软件应用10的该受保护的部分12内可见,使得真实访问操作16(的定时)在开放的应用编程接口(API)调用层级处被伪装。在图3中示意性地示出示例性的高级架构。特别地,图3的软件应用10的受保护的部分12包括聚合模块20、模式生成模块22以及映射模块24。
聚合模块20可操作以将来自软件应用10的真实访问操作16聚合到一个或多个队列中。例如,真实访问操作16可以包括真实的读取操作和真实的写入操作。读取操作的示例是X=READ(x),其中X是从数据存储装置14中的存储位置x读取的值。写入操作的示例是WRITE(Y,y),其中Y是将被写入到数据存储装置14中的存储位置y的值。聚合模块20可以在适当时将软件应用10的真实访问操作16聚合到读取队列26和写入队列28中。
模式生成模块22可操作以生成(或创建)独立于软件应用10的其余部分的数据存储装置访问模式。模式生成模块22可以经由模式参数22a被配置成生成所期望的数据存储装置访问模式。例如,模式参数22a可以用于配置数据存储装置访问的定时,或数据存储装置14中的特定存储位置的访问的频率。以下参照图4和5中所示的示例性实施例给出另外的示例。
映射模块24可操作以将真实的访问操作16(如由聚合模块20所聚合的)映射到由模式生成模块22所生成的数据存储装置访问模式。换言之,映射模块24可操作以将真实的访问操作16嵌入到由模式生成模块22所生成的数据存储装置访问模式中。映射模块24可以经由映射参数24a被配置成生成所期望的映射。例如,映射参数24a可以用于配置每个真实的访问操作16提供多少虚设的访问操作18。以下参照图4和5中所示的示例性实施例而给出另外的示例。
通过使用模式生成模块22和映射模块24,可能的是在运行时经由简单的参数传递(即使用模式参数22a和映射参数24a)来改变数据存储装置访问模式和映射模式。可替换地,数据存储装置访问模式和/或映射模式的序列的调度可以被预供应到软件应用10,或者由运行软件应用10的客户端设备本地创建(例如,基于客户端设备的数字指纹),或者在运行时从(多样性控制的)服务器所网络供应,或者这些选项的任何组合。所有这些选项允许动态的多样性。
将理解的是,图2的软件应用10可以事实上包括多个受保护的部分12,其中的一些或全部可操作以访问数据存储装置。另外,将理解的是,图2的软件应用的受保护的部分12(或多个受保护的部分12)可以可操作以访问多个不同的受保护的数据存储装置14。例如,单个软件应用10可以具有可操作以访问文件存储装置和web存储装置的一个或多个受保护的部分12。可以在受保护的部分12和数据存储装置14之间跨单独的或多个访问而提供混淆。
“恒定流”实施例
在一个有利的实施例中,模式生成模块22可以可操作以生成数据存储装置访问模式,所述访问模式提供读取和/或写入操作的相对恒定的流。换言之,访问操作16和18可以被布置以在软件应用10的至少一部分的执行期间周期性地访问数据存储装置14。关于读取操作在图4中示出访问操作的恒定流的示例。
图4示出了读取队列26,其包括两个真实的读取操作16a和16b。将理解的是,另外的真实读取操作16可以被包括作为读取队列26的部分,但是为了图示的目的在图4中仅仅示出了两个。根据图4,模式生成模块22可操作成创建具有以规律(或固定)的时间间隔的读取操作的数据存储装置访问模式30,因此模式参数22a中的一个可以包括例如读取周期性参数。因而,图4的数据存储装置访问模式30可以提供读取操作的永久恒定速率(比方说每秒一个读取操作)。已经生成了三个虚设的读取操作18a-c。这些虚设的读取操作可以由模式生成模块22或由分离的虚设访问操作生成模块(未示出)生成。虚设的读取操作可操作以从数据存储装置14中的有效/现存的存储位置中读取数据。映射模块24可操作以将两个真实的读取操作16a和16b映射到数据存储装置访问模式30,如由图4中的映射箭头M1和M2所指示的。特别地,图4示出了在虚设的读取操作18之间散布的(或混杂的、或分布的、或分散的、或扩散的)真实读取操作16。该散布可以由映射参数24a配置,所述映射参数24a指定存在一个虚设的读取操作18,继之以一个真实的读取操作16等等。当然,如果在读取队列26中没有真实的读取操作16,则映射模块24可以可操作成使用虚设读取操作18来代替真实的读取操作。在图4中,数据存储装置访问模式30包括以下述次序的读取操作:第一虚设读取操作18a,第一真实读取操作16a、第二虚设读取操作18b、第二真实读取操作16b、以及第三虚设读取操作18c,但是将领会到,其它定序将会是可能的。
因而,在该实施例中,数据存储装置访问模式可以提供周期性的读取操作来访问数据存储装置14(例如,每秒一个读取操作)。将理解到,可以在适当时改变周期性。换言之,每秒的访问操作16和18的数目可以增加或减少,这取决于软件应用10。例如,本身要求每秒相对大量的真实访问操作16的软件应用10与要求每秒显著较低量的真实访问操作16的另一软件应用10相比将要求更高的周期性。还将理解到,周期性可以一般涉及访问操作16和18,或者可以涉及单独的读取操作,或者可以涉及单独的写入操作,或者可以涉及读取和写入操作的组合。例如,数据存储装置访问模式可以每2秒提供两个读取操作,继之以一个写入操作。将领会到,在本方法的范围内,许多其它的数据存储装置访问模式是可用的。例如,可以交换读取和写入操作的次序(尽管在该情况下将有必要注意在读取和写入操作之间的任何数据依赖性)。可替换地,可以变更数据存储装置访问模式中的读取和写入操作的相对数目。另外,可以变更真实和虚设的访问操作的相对数目和定序。当使用写入操作时,可能的是使用数据存储装置14中的虚设存储位置,使得在这些虚设存储位置中写入的值对软件应用10的执行没有影响。
在该“恒定流”实施例中,攻击者只能看到访问操作(即,开放API调用)的相对恒定的流。在不理解软件应用10的受保护的部分12如何工作的情况下,攻击者不能标识哪些访问操作是真实的(即,由软件应用10所要求的真实访问操作16)以及哪些是由软件应用10引入以用于混淆目的的虚设访问操作18,因而提升了安全性阻拦(bar)。换言之,访问操作16和18的分析将不提供任何值,因此攻击者不能得到初始的钩连以开始他的逆向工程工作。
“时间性猝发”(temporalburst)实施例
如上所述,数据存储装置访问模式可以提供对数据存储装置14的访问的恒定流。然而,这将招致性能损失,特别是如果绝大多数的访问操作事实上是虚设访问操作18的话(如针对增加的安全性所期望的)。因此,在另一有利的实施例中,模式生成模块22可以可操作以生成数据存储装置访问模式,所述访问模式提供读取和/或写入操作的时间性猝发。换言之,对于至少一个真实的访问操作16,一个或多个虚设的访问操作18可以在所述至少一个真实的访问操作16的时间附近发生。在当对数据存储装置14的访问非常有限但仍需要被虚设数据补充时的情况下,该时间性猝发实施例是特别有用的。为了增加的安全性,当软件应用10不需要来自数据存储装置14的任何数据时,该时间性猝发实施例还可以引入仅仅虚设访问操作18的额外的猝发。如与图4的恒定流实施例相比,时间性猝发实施例可以减少混淆方法的性能损失。因而,该“时间性猝发”实施例提供了在真实访问操作周围的虚设访问操作的猝发,以使得真实访问操作在虚设访问操作的猝发当中被伪装。涉及读取操作的时间性猝发示例在图5中示出。
如同图4,图5示出了读取队列26,其包括两个真实的读取操作16a和16b。将理解的是,另外的真实读取操作16可以被包括作为读取队列26的部分,但是为了图示的目的在图5中仅仅示出两个。根据图5,模式生成模块22可操作以创建具有两个不同的时间性猝发中的读取操作的数据存储装置访问模式32,因此模式参数22a可以包括例如涉及猝发中的读取操作的数目的一个或多个猝发大小参数,涉及在猝发之间的时间分隔的猝发分隔参数,以及涉及每个猝发的总持续时间的猝发持续时间参数。因而,图5的数据存储装置访问模式32可以提供读取操作的周期性猝发(例如,每三秒三个成组的读取操作)。在图5的示例性实施例中已经生成四个虚设的读取操作18a-d。关于图4,可以由模式生成模块22或由分离的虚设访问操作生成模块(未示出)生成这些虚设的读取操作。映射模块24可操作以将两个真实的读取操作16a和16b映射到数据存储装置访问模式32,如由图5中的映射箭头M1和M2所指示的。特别地,图5示出在两个虚设读取操作18之间包括真实读取操作16的读取操作的每个猝发。该散布可以由映射参数24a配置,所述映射参数24a指定每个真实读取操作16的虚设读取操作18的数目,以及在每个猝发中的真实读取操作16的位置。在图5中,数据存储装置访问模式32包括以下述次序的读取操作的第一猝发:第一虚设读取操作18a、第一真实读取操作16a、第二虚设读取操作18b。数据存储装置访问模式32还包括在读取操作的第一猝发之后的一些时间的读取操作的第二猝发。读取操作的第二猝发的定序和构成如下:第三虚设读取操作18c、第二真实读取操作16b、第四虚设读取操作18d。将领会到,在第一或第二猝发内的其它定序将是可能的。还将领会到,可以变更真实和虚设访问操作的相对数目。
因而,在该“时间性猝发”实施例中,数据存储装置访问模式可以提供读取操作的时间性猝发以访问数据存储装置14(例如,每三秒一个猝发、每猝发三个读取操作以及每个猝发持续一秒)。将理解的是,在适当时取决于软件应用10可以改变模式参数22a。例如,本身要求每秒相对大量的真实访问操作16的软件应用10与要求每秒显著较低量的真实访问操作16的另一软件应用10相比可能具有每秒更高量的猝发。在该情况下的另一选项将会是减少在猝发之间的时间段以便增加真实读取操作的频率。另外的选项将是改变映射参数24a以便将更多的真实读取操作16映射到每个猝发中。还将理解的是,时间性猝发的使用可以一般涉及访问操作16和18,或者可以涉及单独的读取操作,或者可以涉及单独的写入操作,或者可以涉及读取和写入操作的组合。例如,数据存储装置访问模式可以提供每二十秒五十个读取和/或写入操作的周期性猝发,可能地具有读取和写入操作的随机混合。在另一示例中,数据存储装置访问模式和映射可以在根据聚合模块的写入队列28调度至少两个真实的写入操作时提供二十个访问操作的猝发。在类似的示例中,数据存储装置访问模式和映射可以在根据聚合模块的读取队列26调度至少一个真实读取操作时提供十个访问操作的猝发。另一示例将会是模式生成模块22和映射模块24,其在二十个访问操作16和18的猝发中嵌入两个真实的访问操作16。另一类似的示例将会是模式生成模块22和映射模块24,其在十个访问操作16和18的猝发中嵌入四个真实访问操作16。将领会的是,通过变化涉及访问操作16和18的猝发的模式参数22a和映射参数24a,在本方法的范围内,许多其它的数据存储装置访问模式和映射是可用的。
将领会到,模式生成模块22可以可操作以组合以上描述的“恒定流”和“时间性猝发”实施例。例如,将可能的是提供访问操作的背景恒定流,其具有访问操作的偶尔猝发。可替换地,将可能的是提供访问操作的猝发的恒定流。可替换地,将可能的是例如在第一时间段内提供访问操作的时间性猝发,继之以在第二时间段内的访问操作的恒定流。将领会到,给定特定的模式参数22a和映射参数24a(其全部可以随时间变化),其它这样的所组合的实施例也是可能的。
“读取/写入对”实施例
如以上所提及的,图4和5的实施例等同地可适用于写入操作。值得注意地,读取操作不影响在数据存储装置14中所存储的数据,因为读取操作仅仅从数据存储装置14取出数据。相反,写入操作对数据存储装置14中存储的数据产生持续的(可观察到的)影响,因为要么值被写入到数据存储装置14中新的(即之前未使用的)存储位置,要么新的值被写入到数据存储装置14中现存(即,使用中)的存储位置。因此,与虚设读取操作相反,虚设的写入操作可以增加存储大小(即,这样的操作可以增加数据存储装置14中所存储的数据的量)。特别地,涉及新的存储位置的虚设写入操作将增加存储大小。此外,对现存存储位置的虚设写入操作将变更在该位置中所存储的值,因此虚设写入操作一般仅仅在其中仅仅存储虚设数据的所谓的“虚设存储位置”处是可能的,而不是在存储真实应用数据的地方。
因此,为了进一步挫败攻击者,可能的是使读取和写入操作配对,由此给定的配对涉及数据存储装置14中的相同的存储位置。换言之,读取/写入对从相同的存储位置读取数据并且向相同的存储位置写入数据。攻击者仅能够看到成对的读取和写入操作的流。在该情况下,攻击者不能在读取操作和写入操作之间进行区分。真实的读取/写入对包含一个真实的访问操作,无论它是读取操作还是写入操作。虚设的读取/写入对不包括任何真实的访问操作,使得读取操作和写入操作二者是虚设的访问操作。虚设的读取/写入对可以从现存虚设位置或新的虚设位置读取以及向其写入。此外,攻击者不能在真实的读取/写入对和虚设的读取/写入对之间进行区分。假定攻击者还可以监视数据存储装置14的内容,合期望的是,对于每个读取/写入对(虚设或真实)都对数据存储装置14中所存储的数据量具有影响,使得数据存储装置14中所存储的数据的量和值持续改变。访问操作的恒定流的示例在图6中关于读取/写入对而被示出。
图6示出包括一个真实读取操作(X=READ(x))的读取队列26以及包括一个真实写入操作(WRITE(Y,y))的写入队列28。将理解的是,另外的真实读取和写入操作可以分别被包括作为读取和写入队列26和28的部分,但是为了图示的目的在图6中仅示出每个队列一个。根据图6,模式生成模块22可操作以创建数据存储装置访问模式34,所述访问模式具有以规律时间间隔的成对的读取和写入操作,使得模式参数22a中之一可以包括例如周期性参数。每个读取/写入对可操作以从数据存储装置14的相应存储位置读取值并且随后将值写入到所述相应的存储位置。
在图6的实施例中已经生成两个虚设的读取/写入对18a和18b。这些虚设的读取/写入对可以由模式生成模块22或由分离的虚设访问操作生成模块(未示出)生成。在图6的实施例中,数据存储装置16中的虚设存储位置与虚设的读取/写入对18结合使用。第一虚设读取/写入对18a初始从第一虚设存储位置d1读取值D1,并且然后将虚设值N1写入到第一虚设存储位置d1。第二虚设读取/写入对18b初始从第二虚设存储位置d2读取值D2并且然后将虚设值N2写入到第二虚设存储位置d2。
映射模块24可操作以将来自写入队列28的真实写入操作映射到数据存储装置访问模式34中的真实读取/写入对16a中的写入操作,如由图6中的映射箭头M1所指示的。如以上所提及的,读取写入操作可操作以将值Y写入到数据存储装置14中的存储位置y(即WRITE(Y,y))。将该真实写入操作包括在真实读取/写入对中相对简单并且通过使用由从存储位置y读取当前值Y0的初始读取操作Y0=READ(y)以及与来自写入队列28的真实写入操作(即WRITE(Y,y))等同的随后的写入操作所定义的真实读取/写入对16a来实现。因而,真实读取/写入对16a的效应是从数据存储装置14中的存储位置y读取数据,并且然后在该相同的存储位置y处执行所期望的真实写入操作。由于写入操作,存在对数据存储装置14中所存储的数据的可见影响。
映射模块24还可操作以将来自读取队列26的真实读取操作映射到数据存储装置访问模式34中的真实读取/写入对16b中的读取操作,如由图6中的映射箭头M2所指示的。如以上所提及的,真实读取操作可操作以从数据存储装置14中的存储位置x读取值X(即X=READ(x))。将该真实读取操作包括在真实读取/写入对中稍微较复杂,因为读取操作正常对数据存储装置14中存储的数据没有可见影响。因此,为了针对已经在使用中的存储位置x而对此进行缓和,通过使用由等同于来自读取队列26的真实读取操作(即X=READ(x))的初始读取操作以及将新值X'写入到存储位置x的随后的写入操作WRITE(X',x)所定义的真实的读取/写入对16b而包括真实的读取操作。重要地,新值X'可以被转换回到原始读取值X。换言之,值X和X'二者都是编码的值,其中X'被选择使得X'的经解码的版本与X的经解码的版本相同。始终只是X(或X')的经解码的版本由软件应用10使用,因此通过用可替换的经编码的数据值X’替换真实的经编码的数据值X对软件应用10没有影响。因而,真实读取/写入对16b的效应是执行来自读取队列26的所期望的读取操作并且然后将数据值X的经修改的版本X'写入到相关的存储位置x,但是X和X'二者对于软件应用是不可区分的,因为它们以解码的形式被使用。换言之,存在由软件应用10所使用的解码功能DECODE(解码),使得DECODE(X)=DECODE(X'),并且仅仅X(或X')的经解码的版本在软件应用中被使用。一个示例是使用误差校正码(ECC),其中所有数据值以包括冗余信息的编码格式被存储在数据存储装置14中。ECC的简单化的示例是存储每个数据位三次并且通过“多数票决”来解码。例如,数据位0可以初始被存储在数据存储装置14中,如X=000,并且可以被重写为X'=001或010或100,因为在所有情况下ECC(X)=ECC(X')=0(即,ECC(000)=ECC(001)=ECC(010)=ECC(100))。可以利用除了ECC之外的技术实现相同的效果,例如密码学和密钥管理。对于映射模块24而言没有记住真实/虚设存储位置的需要,因为,如以上所提及的,软件应用10将只从数据存储装置14请求真实(即,解码的)数据。因而,所有数据以编码的格式存储在数据存储装置14中,而不论它是源自真实读取/写入对中的真实写入操作,还是真实读取/写入对中的真实读取操作,还是虚设读取/写入对。
值得注意地,第一真实读取/写入对16a(其包括真实的写入操作)以及第二真实读取/写入对16b(其包括真实的读取操作)对于攻击者而言不可区分,因为它们二者都执行读取操作,继之以写入操作,并且在每个情况下(由写入操作)修改被存储在数据存储装置14中的数据。换言之,当使用读取/写入对时,攻击者甚至不能在读取和写入操作之间进行区分,并且即使攻击者能够观察数据存储装置14的内容,这并不将有所帮助,因为数据存储将总是改变。
图6示出根据来自映射模块24的指令而在虚设读取/写入对18之间散布的真实读取/写入操作16。该散布可以通过映射参数24a进行配置,所述映射参数24a指定存在一个虚设读取/写入对18,继之以一个真实的读取/写入对16等等。在图6中,数据存储装置访问模式34包括以下述次序的读取/写入对:第一虚设读取/写入对18a、第一真实读取/写入对16a、第二虚设读取/写入对18b以及第二真实读取/写入对16b,但是将领会到,其它定序将是可能的。
可能存在一些所涉及的依赖性,例如,不可能读取尚未写入的数据。然而,通过记录在读取和写入队列26和28中的真实读取和写入操作中所使用的读取/写入位置x和y,有可能确保没有冲突发生。此外,聚合模块20能够混合、重排序、或聚合读取块中的读取操作。
图6示出了包括读取/写入对的恒定流的实施例。因此,以上参照读取所描述的所有恒定流考虑,仅仅图4的实施例等同地可适用于该情况中。此外,虽然图6示出了包括读取/写入对的恒定流的实施例,但是将领会到,可以代替地在如以上参照图5所描述的时间性猝发中提供读取/写入对。换言之,技术人员将理解,本发明的实施例可以在不存在相反断言的情况下被组合。
可选地,在“读取/写入对”实施例中,有可能迭代通过数据存储装置14的至少一些存储位置,并且在到达恰当的位置时读取和写入数据值。
创建“人工热点”等等
如果攻击者怀疑正在使用虚设的访问操作,可能有可能分析所访问的存储位置以找到所谓的“热点”,即数据存储装置14中被一再访问的存储位置。通常,热点将指示真实存储位置而不是虚设存储位置。对于攻击者而言还可能有可能获得与在软件应用10的不同运行上存储位置的使用频率相关的数据。可能预期随机选择虚设存储位置,并且这可能使得攻击者能够在真实和虚设存储位置之间进行区分以便开始逆向工程过程。
为了挫败这样的攻击,本方法虑及在数据存储装置14中的特定虚设存储位置处创建人工热点的可能性。换言之,本方法通过生成对于特定虚设存储位置的较高访问频率(即人工局部热点)而提供欺骗攻击者的可能性。这样的人工热点将由模式生成模块22在相关联的模式参数22a的控制下生成。例如,模式参数22a可以用于控制例如人工热点的数目和/或分布。因而,根据人工热点实施例,虚设访问操作被布置以与数据存储装置中的其它虚设存储位置相比更频繁地访问数据存储装置中至少一个指定的虚设存储位置,从而创建人工(或虚设)存储热点。人工存储热点使得对于攻击者而言难以在真实和虚设存储位置之间进行区分,并且因此使得对于攻击者而言难以在真实和虚设访问操作之间进行区分。如之前所提及的,虚设存储位置是否则将不作为软件应用的执行的部分而被访问的存储位置。
击败对所访问的存储位置的分布进行监视的攻击的可替换方式是提供数据存储装置访问模式,其中访问操作被布置成跨数据存储装置14中的存储位置的至少子集而基本上均匀地访问数据存储装置14。这拉平数据存储装置访问以使得难以在真实和虚设存储位置之间进行区分。在该实施例中,每存储位置可以存在类似数目的访问操作。例如,每存储位置的访问操作的数目可以在给定的时间段上以及在给定的存储器部分上对于所有存储位置是相同的数量级。换言之,有可能迭代通过数据存储装置14的至少部分并且确保访问水平(即访问操作16和18的数目)在数据存储装置14的该部分中的所有存储位置当中恒定地分布。可选地,该调平过程可以跨整个数据存储装置14而执行。可选地,在其中数据存储装置14被拆分成存储区的情况下,访问水平可以在所有存储区当中恒定地分布。再次,这可以由模式生成模块22、作为数据存储装置访问模式创建的部分而实现。
还将可能的是组合以上描述的人工热点和调平实施例,使得存在有在数据存储装置14的第一部分中创建的人工热点,并且访问水平跨数据存储装置14的第二部分而恒定地分布。
总而言之,所访问的虚设存储位置的任何分布是可能的。可以通过提供模式参数22a以如所期望的那样定义数据存储装置访问模式来控制分布。
适用性领域
HTML5是由W3C提出的标准集,其允许web应用开发者开发在浏览器中运行的应用,所述应用可以直接使用与原生应用类似的特征集,而无需插件。使用HTML5的优点是结果得到的应用将在使用任何OS的任何平台上安装的任何HTML5兼容的浏览器中运行。这导致对于应用开发者而言明显的成本节约。这意味着,平台的抽象层级向上移动到浏览器层级。当前,HTML5以高的采用率而跨不同的市场树立起声势。
HTML5引入可用于应用开发者的新的特征集:例如,客户端侧的持久存储装置、离线应用模式、浏览器中的视频渲染或地理位置API。客户端侧的持久存储装置包含若干类型的本地可访问的存储装置,例如web存储装置。
在任何形式的本地存储装置中所存储的数据被展露给控制平台或浏览器的攻击者,因为它仅受浏览器的“相同域策略”所保护(沙盒化)。该策略声称仅仅来自相同域的应用可以访问本地存储的数据;这仅由浏览器实施。本地存储装置充当用于应用的运行时输入端,其中web应用客户端从它读取数据,或者充当用于应用的输出端,其中web应用客户端在那里写入数据。数据可以是应用数据(比方说令牌)或用户数据(例如,用户的地址)。
通过标准化的(W3C指定的)API调用(例如读取/写入调用)来访问本地存储装置。这些调用在HTML5(JS)中被展露。对于来自浏览器应用的文件访问(其由W3C指定并且在HTML5(JSAPI)中被展露)同样如此。因此,本方法可以用于混淆通过客户端设备上执行的特定应用的本地存储装置访问调用。在该情况下,数据存储装置14可以是客户端设备上的本地存储装置。
因而,本方法具有在浏览器环境中的特定应用。本方法还可适用于其它“开放接口”,例如进行通信的硬件模块或硬件/软件接口。
另外的考虑
根据本方法,可以在空间和/或时间上动态地改变数据存储装置访问模式以便提供动态多样性。
本方法可以在运行时采用,并且因而通过支持运行时动态创建的读取和写入操作而提供使实现容易。
本方法具有除了如上所述的仅仅访问数据存储装置14中的单独存储位置之外的适用性领域。例如,所述方法还可以适用于比单个的读取和/或写入操作更高层级的粒度处,比方说在读取和/或写入操作的块的层级处。所述方法还可以应用于其它存储选项(例如文件)。这可以在作为文件***的部分的读取和/或写入层级、文件部分层级、或文件层级处完成。
将领会到,所述方法已经被示出为以特定次序实施的各个步骤。然而,技术人员将领会到这些步骤可以被组合或以不同的次序被实施,而同时仍实现所期望的结果。
将领会到,本发明的实施例可以通过使用各种不同的信息处理***来实现。特别地,尽管各图及其讨论提供了示例性方法,但是这些仅仅被呈现来提供在讨论本发明的各个方面中的有用参考。本发明的实施例可以实施在任何合适的数据处理设备上,诸如个人计算机、膝上型电脑、个人数字助理、移动电话、机顶盒、电视、服务器计算机等等。当然,***和方法的描述为了讨论的目的已经被简化,并且它们仅仅是可以用于本发明的实施例的许多不同类型的***和方法中的一个。将领会到,在逻辑块(或软件模块)之间的边界仅仅是说明性的并且可替换的实施例可以合并逻辑块或元件(或软件模块),或可以在各种逻辑块或元件(或软件模块)上施加功能性的可替换的分解。
将领会到,以上提及的功能性可以被实现为一个或多个对应的模块,如硬件和/或软件。例如,以上提及的功能性可以实现为一个或多个软件组件以供***的处理器执行。可替换地,以上提及的功能性可以实现为硬件,诸如在一个或多个现场可编程门阵列(FPGA)和/或一个或多个专用集成电路(ASIC)和/或一个或多个数字信号处理器(DSP)和/或其它硬件布置上。在本文中包含的或如上所描述的流程图中实现的方法步骤可以各自由对应的相应模块实现;本文中包含的或如上所描述的流程图中实现的多个方法步骤可以一起由单个模块实现。
将领会到,在本发明的实施例的范围内由计算机程序实现,于是承载计算机程序的存储介质和传输介质形成本发明的方面。计算机程序可以具有一个或多个程序指令、或程序代码,其在由计算机执行时实施本发明的实施例。术语“程序”,如本文中所使用的,可以是被设计用于在计算机***上执行的指令的序列,并且可以包括子例程、功能、过程、模块、对象方法、对象实现、可执行应用、小应用程序、伺服小程式、源代码、对象代码、共享的库、动态链接的库和/或被设计用于在计算机***上执行的指令的其它序列。存储介质可以是磁盘(诸如硬驱动器或软盘)、光盘(诸如CD-ROM、DVD-ROM或蓝光盘)或存储器(诸如ROM、RAM、EEPROM、EPROM、闪速存储器或便携式/可移除的存储器设备)等等。传输介质可以是通信信号、数据广播、在两个或更多计算机之间的通信链路等等。
Claims (14)
1.一种混淆由软件应用对数据存储装置的访问的方法,所述方法包括:
通过使用访问操作而访问数据存储装置,所述访问操作包括真实的访问操作和虚设的访问操作,每个真实的访问操作可操作以作为软件应用的执行的部分而访问数据存储装置。
2.根据权利要求1所述的方法,其中所述访问操作被布置以在软件应用的至少一部分的执行期间周期性地访问数据存储装置。
3.根据任何前述权利要求所述的方法,其中,对于至少一个真实的访问操作,在所述至少一个真实的访问操作的时间附近发生一个或多个虚设的访问操作。
4.根据任何前述权利要求所述的方法,其中所述虚设的访问操作被布置以与数据存储装置中的其它虚设存储位置相比更频繁地访问数据存储装置中的至少一个指定的虚设存储位置。
5.根据任何前述权利要求所述的方法,其中所述访问操作被布置以跨数据存储装置中的存储位置的至少子集而基本上均匀地访问数据存储装置。
6.根据任何前述权利要求所述的方法,其中所述访问操作包括读取操作,每个读取操作可操作以从数据存储装置的相应存储位置读取值,真实的访问操作包括一个或多个真实的读取操作并且虚设的访问操作包括一个或多个虚设的读取操作。
7.根据任何前述权利要求所述的方法,其中所述访问操作包括写入操作,每个写入操作可操作以将值写入到数据存储装置的相应存储位置,真实的访问操作包括一个或多个真实的写入操作并且虚设的访问操作包括一个或多个虚设的写入操作。
8.根据任何前述权利要求所述的方法,其中所述访问操作包括读取/写入对,每个读取/写入对可操作以从数据存储装置的相应存储位置读取值并且随后将值写入到所述相应的存储位置,真实的访问操作包括一个或多个真实的读取/写入对并且虚设的访问操作包括一个或多个虚设的读取/写入对。
9.根据权利要求8所述的方法,其中至少一个真实的读取/写入对包括软件应用的真实写入操作,其可操作以在软件应用的执行期间将指定的值写入到数据存储装置的指定的存储位置,所述至少一个真实的读取/写入对可操作以从指定的存储位置读取值并且随后将指定的值写入到指定的存储位置。
10.根据权利要求8或权利要求9所述的方法,其中至少一个真实的读取/写入对包括软件应用的真实读取操作,其可操作以在软件应用的执行期间从数据存储装置的所指定的存储位置读取经编码的值X,所述至少一个真实的读取/写入对可操作以从指定的存储位置读取经编码的值X并且随后将经修改的编码值X'写入到指定的存储位置,其中X'被选择使得X'的解码版本与X的解码版本相同。
11.根据权利要求10所述的方法,其中通过使用误差校正码ECC来解码X和X',其中ECC(X)=ECC(X')。
12.一种计算机程序,其在由处理器执行时使得处理器实施根据权利要求1至11中任一项所述的方法。
13.一种计算机可读介质,其存储根据权利要求12所述的计算机程序。
14.一种***,其被配置成实施根据权利要求1至11中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2013/056704 WO2014154280A1 (en) | 2013-03-28 | 2013-03-28 | Obfuscating access to a data store by a software application |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105229659A true CN105229659A (zh) | 2016-01-06 |
CN105229659B CN105229659B (zh) | 2019-04-16 |
Family
ID=48014017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380076947.4A Expired - Fee Related CN105229659B (zh) | 2013-03-28 | 2013-03-28 | 混淆由软件应用对数据存储装置的访问 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10089495B2 (zh) |
EP (1) | EP2979217B1 (zh) |
CN (1) | CN105229659B (zh) |
WO (1) | WO2014154280A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10089495B2 (en) | 2013-03-28 | 2018-10-02 | Irdeto B.V. | Obfuscating access to a data store by a software application |
CN113487811A (zh) * | 2016-08-30 | 2021-10-08 | Ncr公司 | 安全进程模仿检测 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201405706D0 (en) * | 2014-03-31 | 2014-05-14 | Irdeto Bv | Software protection |
US9495111B2 (en) * | 2014-10-10 | 2016-11-15 | The Boeing Company | System and method for reducing information leakage from memory |
CN105589814A (zh) * | 2015-12-17 | 2016-05-18 | 北京大学 | 针对Path ORAM的叉型访问方法 |
US10229068B2 (en) * | 2015-12-29 | 2019-03-12 | The Trustees Of Princeton University | Tunable oblivious RAM |
KR102278337B1 (ko) * | 2017-04-21 | 2021-07-19 | 에스케이하이닉스 주식회사 | 메모리장치의 스케줄러 및 스케줄링 방법 |
US20190042781A1 (en) * | 2017-08-04 | 2019-02-07 | Bitdefender IPR Management Ltd. | Secure Storage Device |
US10691610B2 (en) * | 2017-09-27 | 2020-06-23 | Apple Inc. | System control using sparse data |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030018779A1 (en) * | 2001-07-20 | 2003-01-23 | International Business Machines Corporation | Method, system and computer program for controlling access in a distributed data processing system |
CN101000649A (zh) * | 2006-12-22 | 2007-07-18 | 重庆广惠科技有限公司 | 分离式计算机软件保护器及应用软件保护方法 |
US8250648B2 (en) * | 2003-03-28 | 2012-08-21 | Secure Systems Limited | Security system and method for computer operating systems |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123045A (en) * | 1989-08-18 | 1992-06-16 | Massachusetts Institute Of Technology | Comprehensive software protection system |
CA2305078A1 (en) * | 2000-04-12 | 2001-10-12 | Cloakware Corporation | Tamper resistant software - mass data encoding |
US8121237B2 (en) * | 2006-03-16 | 2012-02-21 | Rambus Inc. | Signaling system with adaptive timing calibration |
US7975149B2 (en) * | 2006-06-30 | 2011-07-05 | Microsoft Corporation | Software protection using data structures |
US7805645B2 (en) * | 2008-01-11 | 2010-09-28 | Arm Limited | Data processing apparatus and method for testing stability of memory cells in a memory device |
US9117094B2 (en) * | 2008-10-29 | 2015-08-25 | Microsoft Technology Licensing, Llc | Data location obfuscation |
US8006045B2 (en) * | 2009-02-27 | 2011-08-23 | Atmel Rousset S.A.S. | Dummy write operations |
US8321645B2 (en) * | 2009-04-29 | 2012-11-27 | Netapp, Inc. | Mechanisms for moving data in a hybrid aggregate |
US8910002B2 (en) * | 2009-08-24 | 2014-12-09 | OCZ Storage Solutions Inc. | NAND flash-based storage device with built-in test-ahead for failure anticipation |
US9537650B2 (en) * | 2009-12-15 | 2017-01-03 | Microsoft Technology Licensing, Llc | Verifiable trust for data through wrapper composition |
US9015853B2 (en) * | 2012-06-15 | 2015-04-21 | The Regents Of The University Of California | Concealing access patterns to electronic data storage for privacy |
US8909967B1 (en) * | 2012-12-31 | 2014-12-09 | Emc Corporation | Technique for secure computation |
EP2779520B1 (en) * | 2013-03-11 | 2019-01-16 | Idemia Identity & Security France | A process for obtaining candidate data from a remote storage server for comparison to a data to be identified |
US9747456B2 (en) * | 2013-03-15 | 2017-08-29 | Microsoft Technology Licensing, Llc | Secure query processing over encrypted data |
WO2014154280A1 (en) | 2013-03-28 | 2014-10-02 | Irdeto B.V. | Obfuscating access to a data store by a software application |
-
2013
- 2013-03-28 WO PCT/EP2013/056704 patent/WO2014154280A1/en active Application Filing
- 2013-03-28 EP EP13712803.9A patent/EP2979217B1/en active Active
- 2013-03-28 CN CN201380076947.4A patent/CN105229659B/zh not_active Expired - Fee Related
- 2013-03-28 US US14/779,285 patent/US10089495B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030018779A1 (en) * | 2001-07-20 | 2003-01-23 | International Business Machines Corporation | Method, system and computer program for controlling access in a distributed data processing system |
US8250648B2 (en) * | 2003-03-28 | 2012-08-21 | Secure Systems Limited | Security system and method for computer operating systems |
CN101000649A (zh) * | 2006-12-22 | 2007-07-18 | 重庆广惠科技有限公司 | 分离式计算机软件保护器及应用软件保护方法 |
Non-Patent Citations (1)
Title |
---|
ELAINE SHI等: "《Oblivious RAM with O((logN)3) Worst-Case Cost》", 《INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10089495B2 (en) | 2013-03-28 | 2018-10-02 | Irdeto B.V. | Obfuscating access to a data store by a software application |
CN113487811A (zh) * | 2016-08-30 | 2021-10-08 | Ncr公司 | 安全进程模仿检测 |
Also Published As
Publication number | Publication date |
---|---|
EP2979217A1 (en) | 2016-02-03 |
EP2979217B1 (en) | 2018-05-02 |
US20160070918A1 (en) | 2016-03-10 |
CN105229659B (zh) | 2019-04-16 |
US10089495B2 (en) | 2018-10-02 |
WO2014154280A1 (en) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245506B (zh) | 基于区块链的智能合约管理方法及装置、电子设备 | |
CN105229659A (zh) | 混淆由软件应用对数据存储装置的访问 | |
CN109831298B (zh) | 区块链中安全更新密钥的方法及节点、存储介质 | |
Bahmani et al. | Secure multiparty computation from SGX | |
CN110032884B (zh) | 区块链中实现隐私保护的方法及节点、存储介质 | |
CN109886682B (zh) | 区块链中实现合约调用的方法及节点、存储介质 | |
CN110266467B (zh) | 基于区块高度实现动态加密的方法及装置 | |
US10191754B2 (en) | Virtual machine device having key driven obfuscation and method | |
CN110008735B (zh) | 区块链中实现合约调用的方法及节点、存储介质 | |
CN110263086B (zh) | 结合用户类型与事件函数类型的收据存储方法和节点 | |
CN110264198B (zh) | 结合代码标注与交易类型的有条件的收据存储方法和节点 | |
CN110245944B (zh) | 基于用户类型的收据存储方法和节点 | |
CN110264196B (zh) | 结合代码标注与用户类型的有条件的收据存储方法和节点 | |
CN110245942B (zh) | 结合用户类型和判断条件的收据存储方法和节点 | |
CN108664773A (zh) | Java源代码的保护方法及装置 | |
CN110022199A (zh) | 用于计数器模式存储器保护的间接目录 | |
CN110245503B (zh) | 结合代码标注与判断条件的收据存储方法和节点 | |
CN110245947B (zh) | 结合交易与用户类型的条件限制的收据存储方法和节点 | |
CN110008715B (zh) | 区块链中实现隐私保护的方法及节点、存储介质 | |
CN103136468A (zh) | 协助用于硬件保护的应用程序的***服务请求交互 | |
CN113079200A (zh) | 一种数据处理的方法、装置及*** | |
CN110263090B (zh) | 多类型维度的收据存储方法和节点 | |
CN113010856A (zh) | 一种动态非对称加解密的JavaScript代码混淆方法与*** | |
CN111159658B (zh) | 字节码处理方法、***、装置、计算机设备和存储介质 | |
CN110245943B (zh) | 基于判断条件的收据存储方法和节点 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190416 Termination date: 20210328 |