CN104272319A - 用于保护数据的方法 - Google Patents
用于保护数据的方法 Download PDFInfo
- Publication number
- CN104272319A CN104272319A CN201280071962.5A CN201280071962A CN104272319A CN 104272319 A CN104272319 A CN 104272319A CN 201280071962 A CN201280071962 A CN 201280071962A CN 104272319 A CN104272319 A CN 104272319A
- Authority
- CN
- China
- Prior art keywords
- hash
- sensitive data
- combined
- salt
- value
- 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
- 238000000034 method Methods 0.000 title claims description 90
- 150000003839 salts Chemical class 0.000 claims abstract description 61
- 235000021419 vinegar Nutrition 0.000 description 32
- 239000000052 vinegar Substances 0.000 description 32
- 230000008569 process Effects 0.000 description 11
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 6
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000035945 sensitivity Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 239000003637 basic solution Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000000243 solution Substances 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- 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/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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/2107—File encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Abstract
在本公开中,通过已知的映像计算散列函数,例如程序中的地址范围。已知散列函数的结果在两个不同的时间点处相同,即在运行程序之前,即在建立时间签名,和在程序运行期间,即运行时间。程序员希望隐藏的值,即秘密值,在建立时间也是已知的。在建立时间,以这样一种方式组合秘密值和散列使得可在运行时间反转该组合操作。该组合值,即salt,与程序一起被存储。之后,在运行时间,程序与在签名时间计算的那样计算相同的散列值,并且进行反向的组合操作,以便揭示该秘密值。
Description
技术领域
本发明涉及用于保护数据的方法,并且特别地关于向敏感数据提供保护。
背景技术
敏感程序(即遭受攻击/篡改的程序)具有在其操作期间使用的被认为敏感的某些数据。例如,在完成软件内的一组计算后,需要激活程序中的一大组子例程中的子例程。然而,揭示哪个子例程将被激活可有助于攻击者破坏软件的操作。在这种情况下,子例程的地址是需要保护的宝贵资产。在另一个例子中,视频流可能需要用钥匙来解密。因此,密钥构成了需要保护的宝贵资产。
现有的软件实现适合于不同程度的静态分析。也就是说,一旦攻击者能够提取整个软件负载,他们能够基于他们希望利用的功能优先化和反向工程化目标的组件。因为所有的重要数据变量是静态的,所以攻击者可以简单地从反向工程化的代码读取它们。直接嵌入在程序中的秘密易于被攻击者检索,例如函数地址和/或解密密钥。
这个问题的基本解决方案在于隐藏敏感数据。这样做的一种众所周知的方法是通过“分割秘密”模型,从而该数据被分解成两部分,每一部分单独是无用的,但在组合时恢复原始数据。
本文公开的系统和方法提供散列(hashing)数据的方法和系统,用于对敏感数据提供保护以消除或减轻上述缺点中的至少一些。
发明内容
本发明的一个目的是提供保护敏感数据的改进方法。
因此,在本公开中,通过已知的映像(image)(例如程序中的地址范围)计算散列函数。已知散列函数的结果在两个不同的时间点处相同,即在运行程序之前(即在建立时间签名),和在程序运行期间(即运行时间)。程序员希望隐藏的值(即秘密值)在建立时间也是已知的。仍然在建立时间,以这样一种方式组合秘密值和散列使得可在运行时间反转该组合操作。该组合值(即salt(混淆值))与程序一起被存储。注意:salt决不静态地揭示秘密值。之后,在运行时间,程序与在签名时间计算的那样计算相同的散列值,并且进行反向组合操作,以便揭示该秘密值。进一步的细分显示如何在不进行与敏感值的直接比较(这将不希望地揭示预期的“正确”值)的情况下验证敏感值是正确的。
根据本发明的一个方面,提供了一种保护敏感数据的方法,包括步骤:在建立时间期间,对映像进行散列以产生第一散列,将敏感数据与第一散列组合以形成salt,存储salt,并且在运行时间,对映像进行散列以产生第二散列,检索salt,将第二散列与salt组合以恢复敏感数据。
附图说明
参照附图,将从下面的详细描述中进一步理解本发明,其中:
图1示出根据本公开第一实施例的保护敏感数据的方法;
图2示出根据本公开第一实施例的恢复敏感数据的方法;
图3示出根据本公开第二实施例的保护敏感数据的方法;
图4示出根据本公开第一实施例的恢复敏感数据的方法;
图5示出根据本公开第三实施例的保护敏感数据的方法;
图6示出根据本公开第三实施例的恢复敏感数据的方法;
图7示出根据本公开第四实施例的保护敏感数据的方法;
图8示出图7的方法的进一步的细节;
图9示出图7的方法的进一步的细节;
图10示出图7的方法的进一步的细节;以及
图11示出恢复由图8至10的方法所保护的敏感数据的方法。
具体实施方式
定义
表A
参照图1,示出一种根据本公开第一实施例的保护敏感数据的方法。为了实现该技术,系统10包括签名工具12(即建立时间程序)、需要保护的敏感数据片14(即秘密数据)、映像16、可选的vinegar(图1中未示出)、存储salt18和目标程序(图1中未示出)的地方。
在操作中,签名工具12被提供以要隐藏的敏感数据片14以及用于通过映像计算散列20的映像16作为输入。映像16可以是任意的大小并且可以是较大数据集的选定部分。签名工具12然后基于敏感数据14、映像16和计算的散列20来计算salt 18。
然后存储salt 18,用于以后由目标程序使用。
参照图2,示出了根据本公开第一实施例的恢复敏感数据的方法,其使用图1的方法的输出。在将来的某一点处,目标程序24需要访问敏感数据14。目标程序24反转在本文中如上所述的步骤。也就是说,目标程序24接受映像16作为输入,通过映像26计算散列,并将所存储的salt 18与映像16组合以产生敏感数据14。
图1和2的方法和系统的优点在于:攻击者最初无法获得敏感(即秘密)数据以进行细读。敏感数据仅在正好使用它之前和计算散列函数之后的程序点处可获得。因此,如果散列函数被用于验证程序映像未被篡改,并且敏感数据是成功验证时将被调用的函数地址,则该系统足以隐蔽这种在程序中检测篡改的方法。下面详细描述该机制的这个实际的实施例。
上述方法跨建立时间和运行时间有效地分割信息以共享秘密。
以上的过程可以多样化;也就是说,可以使得它依赖于另一个变量、签名工具和目标程序之间共享的秘密。该秘密变量在下文中被称为“vinegar”,并且在计算散列之前它与映像组合,如图3所示。图3的过程30在建立时间期间将vinegar 32添加到对签名工具12的输入。
加入vinegar 32意味着存在必须由目标程序24提供以便解锁敏感数据14的值的附加变量,正如图4所示。
除非正确提供vinegar 32,否则敏感数据14将是不正确的/无用的。下文中关于图7涉及正确性的检测。
该附加措施的优点在于:可跨建立时间和运行时间分割秘密,正如在先前的情况中(即salt+散列);然而,还可实现跨不同程序点的附加分割。当参照图5和6描述多个vinegar时,提供进一步的例子。
参照图5,示出了使用多个vinegar的建立时间过程50的例子。敏感数据被一分为二——52和53,使用签名工具12和映像16将敏感数据与两个vinegar 54和55组合以产生两个salt 56和57。
多个vinegar的优点在于:可使用相同的散列映像来编码多片敏感数据,同时保留它们单独的保密性。也就是说,计算一片敏感数据将不会揭示其他敏感数据片的值,即使使用相同的散列对它们进行编码。在简单的salt+散列模型中已经如此。在图5的过程中,两个或更多的vinegar(54和55)被提供给签名工具12。每个vinegar与一片敏感数据相关联。使用相同的映像16,签名工具12计算两个不同的salt(56和57)。每个salt与一片敏感数据相关联。
参照图6,示出了运行时间过程的例子。在运行时间60,在程序代码段中选择vinegar 54或55,其选择程序希望访问敏感数据52或53中的哪一片。所选的vinegar 54或55被施加到映像16,并且然后与适当的salt 56或57组合以揭示所选的敏感数据片52或53。
在运行时间选择vinegar的动作实际上允许程序员将任意值(即vinegar)与对所选的敏感数据的安全访问相关联。因此,只有在与salt和运行时间所选的vinegar组合的散列值62的成功计算时才产生敏感数据。
参照图7,示出了用于验证敏感数据的过程70。在某些情况下,验证所得到的敏感数据的有效性是所希望的和/或必需的。显然,这无法通过与预期答案的简单比较来完成,因为那将揭示敏感数据。作为本发明实施例的简洁的解决方案是使用部分所述输出作为所述散列的散列。使用图7的例子,过程70将所计算的散列72的一部分作为散列74的散列。
在该方法中,散列74的散列被计算并合并到salt中,使得在运行时间期间它是可用的。将散列的散列与固定值(也就是散列的所存储的散列)相比较没有揭示关于敏感数据的任何有用信息,除了所计算的散列实际上是否被正确地计算,即不基于损坏的数据。
在多个vinegar的情况下,从敏感数据中分离salt是可能的并且希望的。在这种情况下,将如上那样计算salt(在“多vinegar模型”中),但是salt然后将在存储区域中被随机化(例如它们可被按数值排序)。为了使用敏感数据,程序将计算散列和敏感数据分量的散列,然后对照散列的所计算的散列来验证散列的散列。如果由程序提供的vinegar匹配在签名时间提供的vinegar之一,并且已经不存在对映像的任何篡改,则散列值的散列之一将匹配散列的所计算的散列。与该计算相关联的敏感数据是正确的,并且可由程序使用。
可使用上述方法编码的敏感数据的量被限制为散列输出中所包含的位数,因为散列输出与salt组合以便产生敏感数据。如果有的话,可被编码的敏感数据的量随自检值的大小而减少。
如果敏感数据的大小大于以这种方式提供的位数,则可通过提供每个敏感数据元素多个salt而不是每个敏感数据元素单个salt而增加该大小。每个这样的salt与计算的散列组合,并产生敏感数据元素的附加位。(当与计算的散列组合时,salt中的一个仍然可以包含自检数据)。可替代地,可依次使用多个vinegar以提供多片敏感数据元素。
如果敏感数据的大小是大的,替代方案将是以上述方式将密钥存储到一组加密数据。
在进一步的场景中,假定甚至在程序的运行时间都不希望揭示秘密数据。在这种情况下,希望的是组合US6594761和US6842862中的技术以有效地隐蔽数据,即使在它被使用时。在这些专利中描述的技术显示在运行程序时如何将操作和数据使用变换为在对于攻击者而言不明显的数学空间中运行。
上述方法在两个组件中,如上所述的签名者被称为签名工具,而如上所述的目标程序被称为验证库,并且意在由用户集成到完全运行的程序中。
签名工具被用于组合多个vinegar和敏感数据。vinegar是32位整数,而敏感数据是成功回调函数的地址。任务是验证用户提供的程序的完整性。在这种情况下,存在如上定义的多个映像。每个映像是用户提供的程序的一部分。例如,用户提供的程序(“app.exe”)可被划分成10片(在到签名工具的命令行上选择的),并且用户可能希望与三个vinegar(0x1234、0x9876和经典的Oxdeadbeef)相关联的3个成功回调函数(被称为sf1()、sf2()和sf3())。在这种情况下,用户将提供下面的命令行选项(除了用于签名工具操作所需的其他选项以外):
-f app.exe-110-Bsf1,0x 1234-Bsf2,0x9876-Bsf3,0xdeadbeef
这导致签名工具利用所命名的成功回调函数及其相关联的vinegar从app.exe程序创建10个签名(“-110”部分)。
在现实中,签名工具计算30个散列-该程序被分成10个部分,并且存在3个vinegar(对于每个部分)。用相关联的vinegar计算每一组的三个散列,并且将结果存储在“凭照(voucher)文件”中。然后在运行时间由应用程序使用该凭照文件。
参照图8,示出计算的第一部分。过程80取映像81和vinegar 82,应用第一散列函数83以产生160位的散列84。然后应用第二散列函数85以生成散列86的散列,其与回调地址87一起被存储。
所提供的32位vinegar 82被预挂到(prepend to)映像81;也就是说,映像被制成比实际大小大四个字节。然后通过此组合的映像+vinegar计算SHA1散列84。SHA1散列的160位的值84然后由CRC-32散列算法85处理,并产生32位的校验和86。如在命令行上提供的那样,校验和86和回调地址87形成将使用这种方法而保护的敏感数据。
这种过程的第一部分如图9所示,其中计算160位的值。采用以下步骤:
步骤1)(90)将SHA1的CRC-32存储在4个字节中(86)。
步骤2)(91)将回调地址87存储在8个字节中(在32位回调地址的情况下,前4个字节是零)。
步骤3)(92)选择随机的64位值93,并存储在8个字节中。
步骤4)(94)通过异或来组合来自回调地址87的8个字节和随机值93的8个字节,以产生中间值95。
步骤5)(96)将作为步骤4的结果的中间值95存储在8个字节中。
步骤6)(97)组合来自步骤1、4和5的值,以创建在进一步的计算中使用的160位(20字节)的值(98)。
如图10所示,由图9的步骤6(97)产生的最终值98然后通过异或与vinegar+映像的160位的SHA1值84组合,并被存储100到凭照文件中。
在运行时间,在图11中使用类似的(反向)过程:
步骤1)从凭照文件检索salt值100。
步骤2)将应用程序提供的vinegar 82预挂到映像81,并且通过该结果计算SHA183,从而产生H1、112。
步骤3)计算SHA1散列112的CRC-32、113,从而产生C1、114。
步骤4)通过异或将salt 100和SHA1散列112组合,从而产生三个值-C2-115(存储在签名步骤中的CRC-32)和V1-116以及V2-117(存储在签名步骤中的两个8字节值)。
步骤5)比较C1-114和C2-115。
步骤6)如果它们匹配,则通过异或来组合V1-116和V2-117,以便从签名步骤中检索所存储的地址87。在这一点,该算法完成,因为它已经成功地检索到敏感数据元素,即地址87。
步骤7)如果C1-114和C2-115不匹配,则处理凭照文件中的下一个salt,直到发现匹配,或者已经穷尽所有的salt。
步骤8)如果没有salt匹配,则宣布失败。
可对上述特定实施例作出许多修改、变化和适配,而不脱离在权利要求中限定的本专利公开的范围。
权利要求书(按照条约第19条的修改)
1.一种保护敏感数据的方法,包括步骤:
在建立时间期间,对映像进行散列以产生第一散列;
将敏感数据与第一散列组合以形成salt;以及
存储salt;
在运行时间,对映像进行散列以产生第二散列;
检索salt;
将第二散列与salt组合以恢复敏感数据;
将第一值与映像组合;并且
包括步骤:将敏感数据分割成至少两部分,将第一值与映像组合,将敏感数据的第一部分与第一散列组合以形成第一salt,以及将第二值与映像组合,将敏感数据的第二部分与第一散列组合以形成第二salt。
2.如权利要求1的方法,其中检索salt的步骤检索第一和第二salt,并且组合第二散列的步骤将第二散列与第一及第二salt组合以分别恢复敏感数据的第一和第二部分。
3.如权利要求2的任一项权利要求的方法,还包括步骤:对第一和第二散列进行散列以产生第三和第四散列,以及比较第三和第四散列以确定它们是否相同,并且如果它们相同则验证该敏感数据。
4.如权利要求3的方法,其中将敏感数据与第三散列值组合的步骤包括将敏感数据与随机数据组合。
5.如权利要求4的方法,其中将敏感数据与第三散列值组合的步骤包括:将敏感数据与随机数据组合,并且将输出与随机数据及第三散列值组合。
6.如权利要求5的方法,其中敏感数据是指令地址。
7.如权利要求6的方法,其中指令地址包括转移地址和回调函数地址中的至少一个。
8.如权利要求6或7的方法,其中指令地址具有32位和64位之一。
9.如权利要求1的方法,其中映像是任何文件的一部分。
10.如权利要求9的方法,其中映像是可执行文件的一部分。
11.一种保护敏感数据的方法,包括步骤:
在建立时间期间,对映像进行散列以产生第一散列;
对第一散列进行散列以产生第二散列;
将敏感数据与第二散列组合以产生组合值;
将第一散列与组合值组合以形成salt;以及
存储salt;
在运行时间,对映像进行散列以产生第三散列;
对第三散列进行散列以产生第四散列;
检索salt;
将第三散列与salt组合以恢复组合值;
比较来自恢复的组合值的第二散列与第四散列,并且如果它们相同;
则从该组合的数据的其余部分恢复敏感数据。
12.如权利要求11的方法,其中将敏感数据与第二散列值组合的步骤包括添加随机数据的步骤。
13.如权利要求12的方法,其中将敏感数据与第二散列值组合的步骤包括将敏感数据与随机数据进行异或。
14.如权利要求13的方法,其中将敏感数据与第二散列值组合的步骤包括:将敏感数据与随机数据进行异或,以及将输出与随机数据及第二散列值组合。
15.如权利要求14的方法,其中敏感数据是指令地址。
16.如权利要求15的方法,其中指令地址包括转移地址和回调函数地址中的至少一个。
17.如权利要求15或16的方法,其中指令地址具有32位和64位之一。
18.如权利要求11的方法,其中映像是任何文件的一部分。
19.如权利要求18的方法,其中映像是可执行文件的一部分。
20.如权利要求19的方法,其中映像具有与之组合的值。
21.如权利要求20的方法,其中该值对应于指令地址。
22.如权利要求21的方法,其中存在多个指令地址,每个地址具有与映像组合的对应值。
23.如权利要求22的方法,其中将第一散列与组合值组合以形成salt的步骤针对与映像组合的每个对应值而如此进行,以产生对应的多个salt。
Claims (25)
1.一种保护敏感数据的方法,包括步骤:
在建立时间期间,对映像进行散列以产生第一散列;
将敏感数据与第一散列组合以形成salt;以及
存储salt;
在运行时间,对映像进行散列以产生第二散列;
检索salt;
将第二散列与salt组合以恢复敏感数据。
2.如权利要求1的方法,还包括将第一值与映像组合的步骤。
3.如权利要求1的方法,还包括步骤:将敏感数据分割成至少两部分,将第一值与映像组合,将敏感数据的第一部分与第一散列组合以形成第一salt,以及将第二值与映像组合,将敏感数据的第二部分与第一散列组合以形成第二salt。
4.如权利要求3的方法,其中检索salt的步骤检索第一和第二salt,并且组合第二散列的步骤将第二散列与第一及第二salt组合以分别恢复敏感数据的第一和第二部分。
5.如权利要求4的任一项权利要求的方法,还包括步骤:对第一和第二散列进行散列以产生第三和第四散列,以及比较第三和第四散列以确定它们是否相同,并且如果它们相同则验证该敏感数据。
6.如权利要求5的方法,其中将敏感数据与第三散列值组合的步骤包括将敏感数据与随机数据组合。
7.如权利要求6的方法,其中将敏感数据与第三散列值组合的步骤包括:将敏感数据与随机数据组合,并且将输出与随机数据及第三散列值组合。
8.如权利要求7的方法,其中敏感数据是指令地址。
9.如权利要求8的方法,其中指令地址包括转移地址和回调函数地址中的至少一个。
10.如权利要求8或9的方法,其中指令地址具有32位和64位之一。
11.如权利要求1的方法,其中映像是任何文件的一部分。
12.如权利要求11的方法,其中映像是可执行文件的一部分。
13.一种保护敏感数据的方法,包括步骤:
在建立时间期间,对映像进行散列以产生第一散列;
对第一散列进行散列以产生第二散列;
将敏感数据与第二散列组合以产生组合值;
将第一散列与组合值组合以形成salt;以及
存储salt;
在运行时间,对映像进行散列以产生第三散列;
对第三散列进行散列以产生第四散列;
检索salt;
将第三散列与salt组合以恢复组合值;
比较来自恢复的组合值的第二散列与第四散列,并且如果它们相同;
则从该组合的数据的其余部分恢复敏感数据。
14.如权利要求13的方法,其中将敏感数据与第二散列值组合的步骤包括添加随机数据的步骤。
15.如权利要求14的方法,其中将敏感数据与第二散列值组合的步骤包括将敏感数据与随机数据进行异或。
16.如权利要求15的方法,其中将敏感数据与第二散列值组合的步骤包括:将敏感数据与随机数据进行异或,以及将输出与随机数据及第二散列值组合。
17.如权利要求16的方法,其中敏感数据是指令地址。
18.如权利要求17的方法,其中指令地址包括转移地址和回调函数地址中的至少一个。
19.如权利要求17或18的方法,其中指令地址具有32位和64位之一。
20.如权利要求13的方法,其中映像是任何文件的一部分。
21.如权利要求20的方法,其中映像是可执行文件的一部分。
22.如权利要求21的方法,其中映像具有与之组合的值。
23.如权利要求22的方法,其中该值对应于指令地址。
24.如权利要求23的方法,其中存在多个指令地址,每个地址具有与映像组合的对应值。
25.如权利要求24的方法,其中将第一散列与组合值组合以形成salt的步骤针对与映像组合的每个对应值而如比进行,以产生对应的多个salt。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CA2012/000269 WO2013142943A1 (en) | 2012-03-26 | 2012-03-26 | Method for protecting data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104272319A true CN104272319A (zh) | 2015-01-07 |
CN104272319B CN104272319B (zh) | 2017-11-07 |
Family
ID=49257981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280071962.5A Active CN104272319B (zh) | 2012-03-26 | 2012-03-26 | 用于保护数据的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9454666B2 (zh) |
EP (1) | EP2831800B1 (zh) |
CN (1) | CN104272319B (zh) |
WO (1) | WO2013142943A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111639312A (zh) * | 2020-06-02 | 2020-09-08 | 腾讯科技(成都)有限公司 | 反调试方法、装置、存储介质及电子装置 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102238590B1 (ko) * | 2013-11-29 | 2021-04-09 | 삼성전자주식회사 | 데이터 패킷 전송의 인증 및 검증 방법, 및 상기 방법을 수행하는 장치들 |
US10110566B2 (en) | 2015-07-21 | 2018-10-23 | Baffle, Inc. | Systems and processes for executing private programs on untrusted computers |
US10380098B1 (en) | 2015-09-30 | 2019-08-13 | EMC IP Holding Company LLC | Fine-grained shared multi-tenant de-duplication system |
US10649974B1 (en) * | 2015-09-30 | 2020-05-12 | EMC IP Holding Company | User-level processes in a shared multi-tenant de-duplication system |
US10162627B2 (en) | 2016-02-29 | 2018-12-25 | Red Hat, Inc. | Maintaining build secrets in a build container |
CN109964228B (zh) * | 2016-09-21 | 2023-03-28 | 万事达卡国际股份有限公司 | 用于数据双重匿名化的方法和系统 |
US11050552B2 (en) | 2017-05-03 | 2021-06-29 | Infosys Limited | System and method for hashing a data string using an image |
FR3068498B1 (fr) * | 2017-06-29 | 2019-07-19 | Sagemcom Energy & Telecom Sas | Procedes de partage et d'utilisation d'un secret |
CN110598405B (zh) * | 2018-06-12 | 2022-05-31 | 杨力祥 | 一种运行时访问控制方法及计算装置 |
KR20210145935A (ko) * | 2020-05-26 | 2021-12-03 | 라인플러스 주식회사 | Api 정보 군집화를 통한 후킹 판단 방법 및 그 시스템 |
US20220300606A1 (en) * | 2021-03-19 | 2022-09-22 | Adobe Inc. | Tamper detection for executable applications |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256631A1 (en) * | 2007-04-13 | 2008-10-16 | Microsoft Corporation | Renewable integrity rooted system |
CN101369297A (zh) * | 2007-08-14 | 2009-02-18 | 精品科技股份有限公司 | 一种碎映档案审核输出方法 |
US20100037068A1 (en) * | 2008-08-08 | 2010-02-11 | Masana Murase | Method to Protect Secrets Against Encrypted Section Attack |
EP2264639A2 (en) * | 2009-06-19 | 2010-12-22 | Uniloc Usa, Inc. | Securing executable code integrity using auto-derivative key |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5764766A (en) * | 1996-06-11 | 1998-06-09 | Digital Equipment Corporation | System and method for generation of one-time encryption keys for data communications and a computer program product for implementing the same |
AUPR960601A0 (en) | 2001-12-18 | 2002-01-24 | Canon Kabushiki Kaisha | Image protection |
EP1730619B1 (en) * | 2004-04-02 | 2011-05-11 | Panasonic Corporation | Unauthorized contents detection system |
JP2005346182A (ja) * | 2004-05-31 | 2005-12-15 | Fujitsu Ltd | 情報処理装置、耐タンパ方法、耐タンパプログラム |
US7841010B2 (en) * | 2007-01-08 | 2010-11-23 | Apple Inc. | Software or other information integrity verification using variable block length and selection |
JP4893751B2 (ja) * | 2007-01-12 | 2012-03-07 | 富士通株式会社 | 文書検証プログラム、記録媒体、文書検証方法および文書検証装置 |
US8769637B2 (en) * | 2007-03-23 | 2014-07-01 | Sap Ag | Iterated password hash systems and methods for preserving password entropy |
US20080263366A1 (en) | 2007-04-19 | 2008-10-23 | Microsoft Corporation | Self-verifying software to prevent reverse engineering and piracy |
US9589152B2 (en) | 2007-09-19 | 2017-03-07 | Visa U.S.A. Inc. | System and method for sensitive data field hashing |
JP2011150693A (ja) * | 2009-12-22 | 2011-08-04 | Tani Electronics Corp | 情報管理システム、情報管理の方法および装置、暗号化の方法およびプログラム |
US8270963B1 (en) * | 2010-10-01 | 2012-09-18 | Viasat, Inc. | Cross domain notification |
US8862522B1 (en) * | 2010-12-14 | 2014-10-14 | Symantec Corporation | Incremental machine learning for data loss prevention |
-
2012
- 2012-03-26 US US14/388,232 patent/US9454666B2/en active Active
- 2012-03-26 WO PCT/CA2012/000269 patent/WO2013142943A1/en active Application Filing
- 2012-03-26 CN CN201280071962.5A patent/CN104272319B/zh active Active
- 2012-03-26 EP EP12873324.3A patent/EP2831800B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256631A1 (en) * | 2007-04-13 | 2008-10-16 | Microsoft Corporation | Renewable integrity rooted system |
CN101369297A (zh) * | 2007-08-14 | 2009-02-18 | 精品科技股份有限公司 | 一种碎映档案审核输出方法 |
US20100037068A1 (en) * | 2008-08-08 | 2010-02-11 | Masana Murase | Method to Protect Secrets Against Encrypted Section Attack |
EP2264639A2 (en) * | 2009-06-19 | 2010-12-22 | Uniloc Usa, Inc. | Securing executable code integrity using auto-derivative key |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111639312A (zh) * | 2020-06-02 | 2020-09-08 | 腾讯科技(成都)有限公司 | 反调试方法、装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2831800A1 (en) | 2015-02-04 |
US9454666B2 (en) | 2016-09-27 |
WO2013142943A8 (en) | 2013-12-05 |
CN104272319B (zh) | 2017-11-07 |
EP2831800A4 (en) | 2015-09-09 |
US20150324590A1 (en) | 2015-11-12 |
EP2831800B1 (en) | 2020-05-06 |
WO2013142943A1 (en) | 2013-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104272319A (zh) | 用于保护数据的方法 | |
US11080665B1 (en) | Cryptographically concealing amounts and asset types for independently verifiable transactions | |
CN109074434B (zh) | 使用分布式散列表和点对点分布式分类账验证数字资产所有权的方法和系统 | |
US11062303B2 (en) | Cryptographically concealing amounts transacted on a ledger while preserving a network's ability to verify the transaction | |
US8656175B2 (en) | Secure processing device, secure processing method, encrypted confidential information embedding method, program, storage medium, and integrated circuit | |
US20190102782A1 (en) | Genuine instance of digital goods | |
US6079018A (en) | System and method for generating unique secure values for digitally signing documents | |
CN111314069B (zh) | 基于区块链的摇号系统、方法、电子设备及存储介质 | |
CN101311942B (zh) | 对软件进行加密、解密的方法及加密、解密的装置 | |
CN105024803B (zh) | 白箱实现中的行为指纹 | |
EP3721582B1 (en) | Blockchain-implemented security systems and methods for blinded outcome selection | |
CN102170356A (zh) | 一种支持数字签名密钥专属控制的认证系统实现方法 | |
Noether et al. | Monero is not that mysterious | |
CN103700059B (zh) | 基于多功能数字水印的云存储图像数据持有性证明方法 | |
CN111512590A (zh) | 用于密码认证的同态加密 | |
Bond | Understanding Security APIs | |
CN114154174A (zh) | 后量子签名设施的状态同步 | |
Ahmad et al. | A secure network communication protocol based on text to barcode encryption algorithm | |
CN107852328B (zh) | 用于安全产品标识和验证的增强混淆或随机化 | |
KR20200001178A (ko) | 암호화폐지갑의 연상기호 코드 적용 방법 | |
JP2016126354A (ja) | 秘密改ざん検知システム、秘密計算装置、秘密改ざん検知方法、およびプログラム | |
JPH03151738A (ja) | 検証用データ生成装置 | |
CN113158176A (zh) | 基于sm2签名的公钥解析方法、装置、设备及存储介质 | |
JP5913041B2 (ja) | 秘密情報隠蔽装置、秘密情報復元装置、秘密情報隠蔽プログラムおよび秘密情報復元プログラム | |
Song et al. | Secure and fast implementation of ARX-Based block ciphers using ASIMD instructions in ARMv8 platforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: IRDETO B. V. Free format text: FORMER OWNER: IRDETO CANADA CORP. Effective date: 20150601 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150601 Address after: Holland Hoofddorp Applicant after: Ai Dide Technology Co., Ltd. Address before: Ontario, Canada Applicant before: Irdeto Canada Corp |
|
GR01 | Patent grant | ||
GR01 | Patent grant |