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

用于保护数据的方法 Download PDF

Info

Publication number
CN104272319B
CN104272319B CN201280071962.5A CN201280071962A CN104272319B CN 104272319 B CN104272319 B CN 104272319B CN 201280071962 A CN201280071962 A CN 201280071962A CN 104272319 B CN104272319 B CN 104272319B
Authority
CN
China
Prior art keywords
hash
sensitive data
salt
program
during
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
CN201280071962.5A
Other languages
English (en)
Other versions
CN104272319A (zh
Inventor
R·克尔滕
H·董
C·利姆
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.)
Ai Dide Technology Co Ltd
Original Assignee
Irdeto BV
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 BV filed Critical Irdeto BV
Publication of CN104272319A publication Critical patent/CN104272319A/zh
Application granted granted Critical
Publication of CN104272319B publication Critical patent/CN104272319B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • 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/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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/32Cryptographic 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/3236Cryptographic 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/3239Cryptographic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2107File encryption
    • 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)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General 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匹配,则宣布失败。
可对上述特定实施例作出许多修改、变化和适配,而不脱离在权利要求中限定的本专利公开的范围。

Claims (27)

1.一种用于保护敏感数据的方法,包括步骤:
至少部分地基于程序映像在程序的建立时间期间生成一个或多个建立时间散列,其中程序映像对应于程序的一部分;
至少部分地基于敏感数据的一个或多个部分、程序映像和一个或多个建立时间散列在程序的建立时间期间计算一个或多个salt,其中salt包括值,当所述值与散列值组合时产生敏感数据的所述一个或多个部分;
存储一个或多个salt;
至少部分地基于程序映像在程序的运行时间期间生成一个或多个运行时间散列;
在程序的运行时间期间检索一个或多个salt;以及
在程序的运行时间期间将一个或多个运行时间散列与一个或多个salt组合以恢复敏感数据的一个或多个部分。
2.如权利要求1的方法,其中至少部分地基于敏感数据的一个或多个部分、程序映像和一个或多个建立时间散列在程序的建立时间期间计算一个或多个salt包括:
将敏感数据的第一部分与一个或多个建立时间散列中的一个组合以生成第一salt;以及
将敏感数据的第二部分与一个或多个建立时间散列中的一个组合以生成第二salt。
3.如权利要求2的方法,其中在程序的运行时间期间检索一个或多个salt包括:
检索第一salt和第二salt中的一个或多个;
组合第二散列。
4.如权利要求3的方法,其中在程序的运行时间期间将一个或多个运行时间散列与一个或多个salt组合以恢复敏感数据的一个或多个部分包括以下的一个或多个:
将一个或多个运行时间散列中的运行时间散列与第一salt组合以恢复敏感数据的第一部分;以及
将一个或多个运行时间散列中的运行时间散列与第二salt组合以恢复敏感数据的第二部分。
5.如权利要求2的方法,其中至少部分地基于程序映像在程序的建立时间期间生成一个或多个建立时间散列包括:
将散列函数应用于程序映像和第一vinegar的组合以生成第一建立时间散列;
将散列函数应用于程序映像和第二vinegar的组合以生成第二建立时间散列。
6.如权利要求5的方法,其中第一vinegar对应于敏感数据的第一部分并且其中第二vinegar对应于敏感数据的第二部分。
7.如权利要求6的方法,其中至少部分地基于程序映像在程序的运行时间期间生成一个或多个运行时间散列包括:
接收第一vinegar或第二vinegar的选择;
当选择第一vinegar时将散列函数应用于程序映像和第一vinegar的组合以生成第一运行时间散列;以及
当选择第二vinegar时将散列函数应用于程序映像和第二vinegar的组合以生成第二运行时间散列。
8.如权利要求7的方法,其中在程序的运行时间期间将一个或多个运行时间散列与一个或多个salt组合以恢复敏感数据的一个或多个部分包括:
当选择第一vinegar时将第一运行时间散列与第一salt组合以恢复敏感数据的第一部分;以及
当选择第二vinegar时将第二运行时间散列与第二salt组合以恢复敏感数据的第二部分。
9.如权利要求1的方法,还包括:
在建立时间期间对一个或多个建立时间散列进行散列以生成一个或多个建立时间验证散列;
在运行时间期间对一个或多个运行时间散列进行散列以生成一个或多个运行时间验证散列;
将一个或多个建立时间验证散列中的建立时间验证散列与一个或多个运行时间验证散列中的运行时间验证散列进行比较以在运行时间期间确定它们是否是相同的;以及
如果它们相同则验证一个或多个敏感数据部分中的敏感数据部分。
10.如权利要求9的方法,其中至少部分地基于敏感数据的一个或多个部分、程序映像和一个或多个建立时间散列在程序的建立时间期间计算一个或多个salt包括:
将一个或多个建立时间验证散列中的每个与随机数和从随机数和敏感数据的一个或多个部分中的敏感数据的相应部分生成的中间值进行组合以生成一个或多个组合值;以及
将一个或多个组合值中的每个与一个或多个建立时间散列中的相应的建立时间散列进行异或以计算一个或多个salt。
11.如权利要求10的方法,其中通过将敏感数据的相应部分与随机数进行异或来生成中间值。
12.如权利要求11的方法,还包括:
将一个或多个salt中的salt与用于生成运行时间验证散列的运行时间散列进行异或来在运行时间期间产生建立时间验证散列。
13.如权利要求1的方法,其中敏感数据的一个或多个部分包括一个或多个指令地址,其中一个或多个指令地址包括转移地址和回调函数地址中的至少一个,并且其中一个或多个指令地址包括32位地址和64位地址中的一个或多个。
14.一种用于保护敏感数据的计算设备,所述计算设备包括用于执行根据权利要求1-13中任一项所述的方法的装置。
15.一种用于保护敏感数据的设备,包括:
用于至少部分地基于程序映像在程序的建立时间期间生成一个或多个建立时间散列的装置,其中程序映像对应于程序的一部分;
用于至少部分地基于敏感数据的一个或多个部分、程序映像和一个或多个建立时间散列在程序的建立时间期间计算一个或多个salt的装置,其中salt包括值,当所述值与散列值组合时产生敏感数据的所述一个或多个部分;
用于存储一个或多个salt的装置;
用于至少部分地基于程序映像在程序的运行时间期间生成一个或多个运行时间散列的装置;
用于在程序的运行时间期间检索一个或多个salt的装置;以及
用于在程序的运行时间期间将一个或多个运行时间散列与一个或多个salt组合以恢复敏感数据的一个或多个部分的装置。
16.如权利要求15的设备,其中用于至少部分地基于敏感数据的一个或多个部分、程序映像和一个或多个建立时间散列在程序的建立时间期间计算一个或多个salt的装置包括:
用于将敏感数据的第一部分与一个或多个建立时间散列中的一个组合以生成第一salt的装置;以及
用于将敏感数据的第二部分与一个或多个建立时间散列中的一个组合以生成第二salt的装置。
17.如权利要求16的设备,其中用于在程序的运行时间期间检索一个或多个salt的装置包括:
用于检索第一salt和第二salt中的一个或多个的装置;
用于组合第二散列的装置。
18.如权利要求17的设备,其中用于在程序的运行时间期间将一个或多个运行时间散列与一个或多个salt组合以恢复敏感数据的一个或多个部分的装置包括以下的一个或多个:
用于将一个或多个运行时间散列中的运行时间散列与第一salt组合以恢复敏感数据的第一部分的装置;以及
用于将一个或多个运行时间散列中的运行时间散列与第二salt组合以恢复敏感数据的第二部分的装置。
19.如权利要求16的设备,其中用于至少部分地基于程序映像在程序的建立时间期间生成一个或多个建立时间散列的装置包括:
用于将散列函数应用于程序映像和第一vinegar的组合以生成第一建立时间散列的装置;
用于将散列函数应用于程序映像和第二vinegar的组合以生成第二建立时间散列的装置。
20.如权利要求19的设备,其中第一vinegar对应于敏感数据的第一部分并且其中第二vinegar对应于敏感数据的第二部分。
21.如权利要求20的设备,其中用于至少部分地基于程序映像在程序的运行时间期间生成一个或多个运行时间散列的装置包括:
用于接收第一vinegar或第二vinegar的选择的装置;
用于当选择第一vinegar时将散列函数应用于程序映像和第一vinegar的组合以生成第一运行时间散列的装置;以及
用于当选择第二vinegar时将散列函数应用于程序映像和第二vinegar的组合以生成第二运行时间散列的装置。
22.如权利要求21的设备,其中用于在程序的运行时间期间将一个或多个运行时间散列与一个或多个salt组合以恢复敏感数据的一个或多个部分的装置包括:
用于当选择第一vinegar时将第一运行时间散列与第一salt组合以恢复敏感数据的第一部分的装置;以及
用于当选择第二vinegar时将第二运行时间散列与第二salt组合以恢复敏感数据的第二部分的装置。
23.如权利要求15的设备,还包括:
用于在建立时间期间对一个或多个建立时间散列进行散列以生成一个或多个建立时间验证散列的装置;
用于在运行时间期间对一个或多个运行时间散列进行散列以生成一个或多个运行时间验证散列的装置;
用于将一个或多个建立时间验证散列中的建立时间验证散列与一个或多个运行时间验证散列中的运行时间验证散列进行比较以在运行时间期间确定它们是否是相同的的装置;以及
用于如果它们相同则验证一个或多个敏感数据部分中的敏感数据部分的装置。
24.如权利要求23的设备,其中用于至少部分地基于敏感数据的一个或多个部分、程序映像和一个或多个建立时间散列在程序的建立时间期间计算一个或多个salt的装置包括:
用于将一个或多个建立时间验证散列中的每个与随机数和从随机数和敏感数据的一个或多个部分中的敏感数据的相应部分生成的中间值进行组合以生成一个或多个组合值的装置;以及
用于将一个或多个组合值中的每个与一个或多个建立时间散列中的相应的建立时间散列进行异或以计算一个或多个salt的装置。
25.如权利要求24的设备,其中通过将敏感数据的相应部分与随机数进行异或来生成中间值。
26.如权利要求25的设备,还包括:
用于将一个或多个salt中的salt与用于生成运行时间验证散列的运行时间散列进行异或来在运行时间期间产生建立时间验证散列的装置。
27.如权利要求15的设备,其中敏感数据的一个或多个部分包括一个或多个指令地址,其中一个或多个指令地址包括转移地址和回调函数地址中的至少一个,并且其中一个或多个指令地址包括32位地址和64位地址中的一个或多个。
CN201280071962.5A 2012-03-26 2012-03-26 用于保护数据的方法 Active CN104272319B (zh)

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 CN104272319A (zh) 2015-01-07
CN104272319B true 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)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
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
WO2018057479A1 (en) * 2016-09-21 2018-03-29 Mastercard International Incorporated Method and system for double anonymization of data
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 정보 군집화를 통한 후킹 판단 방법 및 그 시스템
CN111639312B (zh) * 2020-06-02 2023-04-14 腾讯科技(成都)有限公司 反调试方法、装置、存储介质及电子装置
US20220300606A1 (en) * 2021-03-19 2022-09-22 Adobe Inc. Tamper detection for executable applications

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101369297A (zh) * 2007-08-14 2009-02-18 精品科技股份有限公司 一种碎映档案审核输出方法
EP2264639A2 (en) * 2009-06-19 2010-12-22 Uniloc Usa, Inc. Securing executable code integrity using auto-derivative key

Family Cites Families (14)

* Cited by examiner, † Cited by third party
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
CN101086880B (zh) * 2004-04-02 2010-06-02 松下电器产业株式会社 未授权内容检测系统
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
US8266691B2 (en) * 2007-04-13 2012-09-11 Microsoft Corporation Renewable integrity rooted system
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
US8010804B2 (en) * 2008-08-08 2011-08-30 International Business Machines Corporation Method to protect secrets against encrypted section attack
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101369297A (zh) * 2007-08-14 2009-02-18 精品科技股份有限公司 一种碎映档案审核输出方法
EP2264639A2 (en) * 2009-06-19 2010-12-22 Uniloc Usa, Inc. Securing executable code integrity using auto-derivative key

Also Published As

Publication number Publication date
WO2013142943A1 (en) 2013-10-03
CN104272319A (zh) 2015-01-07
EP2831800B1 (en) 2020-05-06
EP2831800A1 (en) 2015-02-04
WO2013142943A8 (en) 2013-12-05
EP2831800A4 (en) 2015-09-09
US20150324590A1 (en) 2015-11-12
US9454666B2 (en) 2016-09-27

Similar Documents

Publication Publication Date Title
CN104272319B (zh) 用于保护数据的方法
Gutub et al. Hiding shares by multimedia image steganography for optimized counting-based secret sharing
RU2619895C1 (ru) Система и способы для шифрования данных
JP6277734B2 (ja) 情報処理プログラム、情報処理装置および情報処理方法
EP3542261B1 (en) Method for performing a trustworthiness test on a random number generator
CN108011706B (zh) 数据处理装置和用于数据的加密处理的方法
US11227037B2 (en) Computer system, verification method of confidential information, and computer
WO2018156208A1 (en) Verification of code signature with flexible constraints
JP5401477B2 (ja) 誤りに基づく攻撃から電子回路を保護する方法
EP3316160A1 (en) Authentication method and apparatus for reinforced software
CN103559454B (zh) 数据保护系统和方法
RU2006116797A (ru) Способ обеспечения целостности набора записей данных
CN111512590B (zh) 用于密码认证的同态加密
WO2016104476A1 (ja) 秘密改ざん検知システム、秘密計算装置、秘密改ざん検知方法、およびプログラム
JP6533583B2 (ja) モデル結託防止用透かし
JP6142704B2 (ja) 秘匿データ照合装置、秘匿データ照合プログラムおよび秘匿データ照合方法
JP2017103634A (ja) 秘匿データ照合装置、秘匿データ照合プログラムおよび秘匿データ照合方法
US20100281256A1 (en) Hash function using a piling-up process
US8311212B2 (en) Method of processing data protected against attacks by generating errors and associated device
JP6053238B2 (ja) 秘密改ざん検知システム、秘密計算装置、秘密改ざん検知方法、およびプログラム
WO2016063512A1 (ja) Macタグリスト生成装置、macタグリスト検証装置、macタグリスト生成方法、macタグリスト検証方法およびプログラム記録媒体
CN104751042A (zh) 基于密码哈希与生物特征识别的可信性检测方法
KR102067053B1 (ko) 다변수 2차 다항식 기반 포스트 양자 서명 스킴의 안전성 검증 장치 및 방법
US20200067693A1 (en) Systems and methods for masking ecc operations
CN111092721A (zh) 一种设置访问口令的方法及装置

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