CN101401348A - 用于使密码函数模糊的方法和系统 - Google Patents

用于使密码函数模糊的方法和系统 Download PDF

Info

Publication number
CN101401348A
CN101401348A CNA2007800085510A CN200780008551A CN101401348A CN 101401348 A CN101401348 A CN 101401348A CN A2007800085510 A CNA2007800085510 A CN A2007800085510A CN 200780008551 A CN200780008551 A CN 200780008551A CN 101401348 A CN101401348 A CN 101401348A
Authority
CN
China
Prior art keywords
parameter
question blank
data
group
bit
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
Application number
CNA2007800085510A
Other languages
English (en)
Other versions
CN101401348B (zh
Inventor
W·P·A·J·米基尔斯
P·M·H·M·A·戈里森
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 BV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN101401348A publication Critical patent/CN101401348A/zh
Application granted granted Critical
Publication of CN101401348B publication Critical patent/CN101401348B/zh
Expired - Fee Related 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
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

一种保护数据处理系统的完整性的方法。该方法包括:确定(902)将被保护的数据串,该数据串的完整性是数据处理系统的完整性的指示。计算(904)表示预定数据处理函数的一组参数,使用该组参数中的冗余将数据串并入到所述组参数的比特表示中。使得(906)系统能够根据数据处理函数处理数据。该组参数表示包括密钥的密码算法的至少一部分。该组参数表示查询表的网络。查询表的网络包括数据处理算法的白盒子实现的多个查询表。数据处理算法包括密码算法。

Description

用于使密码函数模糊的方法和系统
技术领域
本发明涉及保护数据处理系统的完整性。
背景技术
因特网使用户可以方便和随时随地地接入数字内容。由于因特网作为强大的发布通道的潜力,许多消费者电子(CE)产品争取直接接入因特网或与PC平台(因特网的主要入口)互操作。CE产品包括但不局限于数字机顶盒、数字电视机、游戏控制台、PC并且日益增加地,包括诸如PDA、移动电话机、移动存储器和诸如Apple的iPod的再现设备之类的手持设备。使用因特网作为受版权保护的内容的发布媒介产生了保护内容提供者利益的强制性的挑战。特别是需要保证内容提供者的版权和商业模式。日益增加地,使用加载适当的软件的处理器操作CE平台。这种软件可以包括用于再现(重放)诸如音频和/或视频的数字内容的功能的主要部分。重放软件的控制是实施内容所有者的利益的一种方式,包括内容可以被使用的条款以及条件。在传统上许多CE平台(PC和PDA除外)过去常常是封闭的情况下,现在越来越多的平台至少部分地开放。特别是对于PC平台,部分用户可以被假设对提供内容接入的硬件和软件具有完全的控制并且具有大量的时间和资源攻击和绕过任何内容保护机制。结果,内容提供者必须在对社团敌意的网络上传送内容给合法的用户,在社团中不是所有的用户和设备能够被信任。
典型地,数字权利管理系统使用基于块密码的加密技术,该技术使用一系列加密/解密步骤(被称为回合(round))按照块来处理数据流。在每一回合期间,执行回合特定的函数。该回合特定的函数可以基于在回合特定的子密钥控制下执行的相同的回合函数。对于许多加密系统,能够使用映射表或查询表来指定回合函数。即使不使用明确的表,无论如何为了在加密/解密函数的软件中有效的执行,表被频繁地使用用于函数的不同部分。计算机代码存取或组合表值到函数的范围值中。取代发布密钥,它可以是用户特定的,发布用户特定的算法而不是用于加密或解密算法的密钥变得更加有兴趣。这些算法,绝大多数经常是函数(映射),必须是模糊的(obfuscate)(隐藏的)以便防止重新设计或禁止重新计算类似密钥的元素。在计算机上,被伴随某种计算机代码的表通常表示这些函数。
内容提供者必须在对社团敌意的网络上传送内容到合法用户,在社团中不是所有的用户或设备能够被信任。特别是对于PC平台,用户必须被假设为对提供内容接入的硬件和软件具有完全的控制并且具有不受限制的时间和资源攻击和绕过任何内容保护机制。实施内容可以被使用的条款和条件的软件代码必须不被篡改。用于被发布到PC的受保护内容的数字权利管理的一般方法是加密数字内容,例如DES(数据加密标准)、AES(高级加密标准)、或使用在WO9967918中公开的方法,以及使用解密密钥。
依赖于加密的数字权利管理的脆弱性的两个主要方面是实施内容可以被使用的条款和条件的软件插件,以及密钥发布和处理。
典型地,插件实施内容将被使用的条款和条件。意图删除这些条款和条件的攻击者可以试图通过篡改包括在软件插件中的程序代码实现它。
在涉及密钥处理时,为了重放媒体播放器必须从许可数据库检索解密密钥。然后它必须在存储器中的某个地方存储该解密密钥用于加密内容的解密。这留给攻击者对密钥进行攻击的两个选择。首先,许可数据库访问函数的反向工程能够产生黑盒子软件(即攻击者不必明白软件函数的内部工作方式),这允许攻击者从所有许可数据库检索有用的密钥。其次,通过在内容解密期间观测存储器的存取,有可能检索有用的密钥。在两种情况下密钥被认为是将被泄漏。在下文中,描述通常如何可以防止软件被篡改。
防篡改软件之所以这样称谓是因为有目的的篡改软件是复杂的。存在增强软件应用的防篡改的各种技术。绝大多数这些技术基于通过在软件应用的控制和数据通道中增加随机性和复杂性的遮蔽来隐藏应用的嵌入知识。其后面的构思是它变得更加难以仅仅通过代码检查提取信息。所以更加难以找到代码,例如,处理应用的访问和许可控制的代码,并因此将难以改变它。
Stanley Chow,Philip Eisen,Harold Johnson,和Paul C.VanOorschot的“White-Box Cryptography and an AES Implementation”,Selected Areas in Cryptography: 9th Annual International Workshop,SAC 2002,St.John’s,Newfoundland,Canada,August 15-16,2002年,下称为“Chow 1”,以及Stanley Chow,Phil Eisen,Harold Johnson,和Paul C.van Oorschot的“A White-Box DES Implementation for DRMApplications”,Digital Rights Management:ACM CCS-9 Workshop,DRM 2002,Washington,DC,USA,November 18,2002年,下称为“Chow 2”,它们公开了这样的方法,其目的是通过利用表示组成而不是个别步骤的随机双射(bijection)编码它的表格,以及通过将它推出进一步到包含的应用扩展密码边界的组合来隐藏密钥。
发明内容
将会有利的是具有保护数据处理系统完整性的改进的方法。为了更好解决这个问题,在本发明的第一方面中提出了一种方法,包括:
-确定将被保护的数据串,数据串的完整性是数据处理系统的完整性的指示;
-计算至少部分表示预定数据处理函数的一组参数,使用该组参数中的冗余将数据串并入所述组参数的比特表示中;
-使得系统能够根据所述组参数处理数据,其中在所述组参数的比特表示中数据串的改变使得系统失去根据数据处理函数处理数据的能力。
由于数据串被并入计算的所述组参数的比特表示中,对于数据串的改变意味着对于所述组参数的改变。当所述组参数表示数据处理函数时,改变所述组参数意味着改变数据处理函数。所以,改变数据串导致改变通过所述组参数定义的数据处理函数。当相对难以在不改变数据处理函数的条件下改变数据串时,数据处理系统的完整性被保护。因此如果数据串已经改变,则避免数据处理根据预定的算法发生。
所述数据串能够是系统的一部分或者能够被单独地提供给系统。所述数据串和预定的数据处理函数优选是相互独立的。数据处理函数例如通过具有特定密钥的密码算法定义。数据处理函数的标识能够通过伪随机过程的方式。数据处理函数可以是完全定义的密码算法,例如具有特定密钥的解密算法。但是,数据处理函数可以是任何数据处理函数,例如图像增强函数。
在一个实施例中,所述组参数表示至少部分包括密钥的密码算法。该组参数定义密钥。密码算法的实例包括解密算法、加密算法、和加水印算法。
在一个实施例中,所述组参数表示查询表的网络。这样一组参数本质上包括许多冗余,并且有可能通过增加查询表到网络来增加冗余。因此相对容易计算一组参数,其中所述计算的该组参数的比特表示包括将被保护的数据串。
在一个实施例中,查询表的网络包括数据处理算法的白盒子实现的多个查询表。数据处理算法的白盒子实现所具有的特性是它们隐藏数据处理算法的部分内部工作,这使得更加难以修复由于改变被保护串所引起的任何缺陷。
在一个实施例中,所述数据处理算法是密码算法。密码算法是希望改变软件和硬件系统以便处理(通常解密)攻击者不被授权的数据的攻击者的共同目标。通过使得更加难以篡改数据串能够保护这些算法。
一个实施例包括
-给系统提供除了要被保护的数据串之外的所述组参数;和
-使得系统能够从系统的执行环境获得该数据串。
该实施例允许保护系统的执行环境,因为如果执行环境中的数据串没有被篡改,那么所述数据处理才将是成功的。
一个实施例包括
-给系统提供除了要被保护的数据串之外的所述组参数;和
-使得系统能够通过质询/响应协议获得数据串。
该实施例允许经由质询/响应协议保护系统。在这种协议中,系统对另一个单元提出质询,以及接收响应作为回答。该实施例允许响应是预定的串。
一个实施例包括使得所述系统能够从成为系统一部分的计算机可执行代码中推导数据串。这是使得篡改计算机可执行代码更加困难的一种方式:代码的改变意味着所述组参数的改变,反之亦然。
在一个实施例中,计算机可执行代码包括用于确立系统的可靠性或实施许可控制的指令集的至少一部分。指令集的这些部分在数字权利管理中特别地重要。
例如,将被保护的数据串包括至少以下之一的表示:
-硬件标识符,
-将被处理的内容的一部分,
-计算机可执行代码,
-处理器指令,
-口令,或
-系统被安排用于通过质询/响应协议获得的响应。
一个实施例包括
-计算表示密钥的查询表的网络;
-选择将被保护数据串的至少一个字用于包括在至少一个查询表中;
-通过应用到查询表的元素的变换在至少一个查询表中包括所述字;
-通过应用反转变换效果的补偿变换来补偿所述变换;以及
-使用变换的查询表的网络作为参数。
在这种情况下,所述数字处理可以包括根据密钥进行加密和解密。该数字处理还可以包括基于密钥的认证。二者都能够通过在查询表的网络中执行一系列的表格查询来实现,该网络被建立用于实现一部分密码算法。所述指令可以被设计用于根据在参数中提供的表格执行表格查询。可以将反转变换效果的补偿变换应用于经由网络被连接到至少一个查询表的至少一个其他查询表的元素。该补偿变换还可以通过内容提供者,或程序被应用于数字数据。
查询表的网络可以例如表示诸如AES或DES的密码算法的回合。优选地,通过将编码应用于每个表的输入和输出使得查询表的网络模糊。这些编码对查询表的内容具有影响;改变编码会以可预测的方式改变表的内容。但是,当攻击者仅仅具有指示其输入和输出已经以相对复杂的方式被编码的映射的最终查询表的知识时,他可能难以解开编码。应用于查询表元素的变换能够通过适当地改变编码实现。通过改变输出编码,特定值可以包含在表格中。通过改变输入编码,可以改变例如值在表格中出现的顺序。在下文中,输入编码还被称为输入解码,因为它可以解码前面查询表的输出编码所产生的数据的编码,。
一个实施例包括安排查询表网络中的第一查询表(例如f(t1(x)))的输出编码(例如f)和查询表网络中的第二查询表(例如t2(f-1(x)))的输入解码(例如f-1),输入解码反转输出编码的效果(例如t2(f-1(f(t1(x))))=t2(t1(x))),从而所选择的字被包括在以下至少之一中:第一查询表(例如f(t1(x)))和第二查询表(例如t2(f-1(x)))。这里,括号中的实例仅仅指示一个例子。在详细的描述中将提供其他的实例。
当不同表格的编码被设计用于反转相互的效果时,有利地是当作出改变时考虑相应对中的表格,因此保证查询表网络的输出保持相同。
其中所选择的字被包括在第一查询表(例如f(t1(h-1(x))))中的实施例包括安排查询表网络中的第三查询表(例如h(t3(x)))的输出编码(例如h)以及第一查询表(例如f(t1(h-1(x))))的输入解码(例如h-1),第一查询表的输入解码反转第三查询表的输出编码的效果(例如f(t1(h-1(h(t3(x)))))=f(t1(t3(x)))),以用于在第一查询表中定位所述选择的字。
通过改变输入和输出编码能够以最大自由度来操作查询表。当改变时考虑至少三个查询表允许改变至少一个表格的输入和输出编码。通过改变至少两个其他表格的编码可以补偿这些改变。
一个实施例包括使得所述系统能够:
-应用网络的第一组查询表于数字数据的比特串以获得第一组中间结果;
-应用网络的第二组查询表于数字数据的比特串以获得第二组中间结果,第二组查询表的比特表示包括将被保护的数据串;
-组合第一和第二中间结果以获得第三中间结果;和
-根据第三中间结果计算处理的数字数据。
例如,组合的步骤可以包括应用其它一些查询表或执行XOR运算。
一个实施例包括用于保护第二系统的完整性的第一系统,第一系统包括
-用于确定将被保护的数据串的串确定器,数据串的完整性是第二系统的完整性的指示;
-用于计算至少部分表示预定的数据处理函数的一组参数,使用该组参数中的冗余将数据串并入到该组参数的比特表示中的参数确定器;和
-用于使得第二系统能够根据所述组参数处理数据的装置,其中改变所述组参数的比特表示中的数据串使得所述系统失去其根据数据处理函数处理数据的能力。
一个实施例包括计算机程序产品,该产品包括使得处理器执行所阐述方法的指令。
一个实施例包括数据处理系统,该系统包括
-用于存储要被保护数据串的存储器,数据串的完整性是数据处理系统的完整性的指示;
-用于存储至少部分表示预定的数据处理函数的一组参数的存储器,使用该组参数中的冗余所述数据串被并入到该组参数的比特表示中;以及
-根据所述组参数处理数据的处理模块,其中改变该组参数的比特表示中的数据串使得所述系统失去其根据数据处理函数处理数据的能力。
一个实施例包括计算机程序产品,该产品包括使得处理器根据至少部分表示数据处理函数的一组参数处理数据的指令,将被保护的数据串的完整性是计算机程序产品的完整性的指示,使用所述组参数中的冗余所述数据串被并入到该组参数的比特表示中,其中改变该组参数的比特表示中的数据串使得所述系统失去其根据数据处理函数处理数据的能力。
附图说明
以下通过参考附图将阐述本发明的这些和其他方面,其中
图1是图示在AES的一个回合中的操作的图;
图2是图示模糊表格的实例的图;
图3是图示在白盒子AES实现中一列的一个回合的图;
图4是图示包含在类型Ia表格中的映射的图;
图5是图示包含在类型II表格中的映射的图;
图6是图示包含在类型III表格中的映射的图;
图7是图示包含在类型IV表格中的映射的图;
图8是图示包含在类型Ib表格中的映射的图;
图9是图示处理步骤的流程图;
图10是图示更多处理步骤的流程图;
图11是图示查询表的网络的图;
图12是图示一个实施例的图;
图13示意性图示了作为块密码加密或解密处理的一部分的回合函数;
图14描述了程序代码的序列;
图15显示了在计算中使用的表格的实例;
图16显示了图14程序代码使用的表格,其中表格包含程序代码;
图17显示了图16表格的替换形式;
图18显示了在计算机存储器中表格的映射;
图19图示了合并可执行程序和给用于提供用户对已加密数据的条件访问的密钥的示意图;
图20图示了用于提供对已加密内容的条件访问的统一密钥的使用的示意图;
图21图示了处理步骤;以及
图22描述了本发明的实施例的图。
具体实施方式
在软件应用的控制和数据通道中增加随机性和复杂性的遮蔽的方法并没有阻止软件经常遭篡改,而是仅仅使其更加难以确定需要作出哪些改变以便达到篡改者的目的。防篡改背后的一般原理能够被如下概述。程序P能够被表示为访问控制和/或许可X与功能Y的合成物。攻击者可能希望篡改程序以便删除访问控制或许可而不影响功能。被篡改的程序然后能够在完全没有访问控制或许可的条件下运行,或至少被运行从而忽略这些控制。本发明将主要说明Y包括解密功能的情况。但是,将会理解本发明可以被应用于包括例如加密或解密或二者组合的任何功能Y。
理想情况下,对于防篡改程序,篡改X应该立即导致Y的丢失,而不管篡改如何小。换言之,X和Y应该是不可分离的,或至少利用相当的难度才可分离。一种实现不可分离的方式将是创建X和Y之间的关系从而对X的任何有意修改导致对Y的无意图修改,这将会从Y删除所述功能。为了恢复Y的功能,将需要对Y的进一步修改。当程序的功能和控制元素已经不可分离时,攻击变得困难得多。如果在程序的代码上创建这种不可分离性,该程序可以是防篡改的而不需要程序代码必须被遮蔽。防篡改软件是其中难以执行有意图的篡改的软件。
AES是块大小128比特或16字节的块密码。明文被分割成16字节的块,这形成了编码算法的初始状态,以及编码算法的最终状态是密文。为了在概念上说明AES,状态的字节被组织为4×4字节的矩阵。AES包括大量的回合。每个回合包括在状态矩阵的字节、行、或列上操作的类似的处理步骤,在这些处理步骤中每个回合使用不同的回合密钥。
图1图示了AES的一个回合的一些主要处理步骤。该处理步骤包括:
-添加回合密钥802-将状态的每个字节与回合密钥的字节进行异或(XOR)。
-替换字节(SubBytes)804-使用查询表的字节到字节置换。
-移位行806-将状态的每一行旋转固定数量的字节。
-混合列808-在GF(28)中使用模乘法处理每一列。
步骤替换字节804、移位行806、和混合列808与使用的特定密钥不相关。在步骤添加回合密钥80中应用所述密钥。除步骤移位行806之外,在4×4状态矩阵的每一列上能够执行处理步骤而不用获知其他的列。所以,当每一列包括4个8比特值时它们能够被认为是32比特运算。虚线810指示处理被重复直到已经执行所需数量的回合。
这些步骤的每个步骤或步骤的组合可以通过查询表或查询表的网络(S-box)表示。还有可能通过查询表的网络替换AES的一个完整回合。例如,通过简单地与回合密钥进行异或能够实现添加回合密钥步骤,而使用表查询实现替换字节、移位行、和混合列步骤。但是,这意味着在白盒子攻击的上下文中所述密钥对于攻击者仍然是可见的。添加回合密钥还能够被嵌入在查询表中,这使其较不明显发现密钥。
图2图示了使得甚至更加难以提取密钥的方式。设X和Y是两个函数。考虑运算
Figure A200780008551D0015142356QIETU
,图示为图812,其中c是输入值,例如4字节状态列。但是,该方法适用于任何类型的输入值c。映射X和Y能够被实现为可以被存储在存储器中的查询表,但是,当它们被存储在存储器中时,攻击者能够读取这些值。图14图示了通过使用输入编码F和输出编码H如何使查询表的内容模糊。对应于
Figure A200780008551D0015142424QIETU
的查询表取代X和Y被存储为图示的,这使其更加难以提取X和Y。图816显示如何添加其他的,例如随机的、双射函数G,从而两个表的中间结果也被编码。在这种情况下,两个表被存储在存储器中:
Figure A200780008551D00151
Figure A200780008551D00152
这在图818中又一次图示了:
Figure A200780008551D00153
这里
Figure A200780008551D00154
表示通常函数组成(即,对于任何两个函数f(x)和g(x),定义
Figure A200780008551D00155
X和Y是适于通过查询表方式实现的函数。同样能够编码包括多于两个函数的网络。实际表格编码X和Y通过在单个查询表中组合
Figure A200780008551D00156
以及在单个查询表中组合
Figure A200780008551D00157
被模糊。只要F、G、和/或H保持未知,攻击者就不能从查询表提取有关X和/或Y信息,然后攻击者不能提取成为X和/或Y基础的密钥。包括DES和Rijndael的(AES是特定的实例)其他密码算法,还可以被编码为可以以类似于上述的方式模糊的查询表(的级联或网络)。本发明并不局限于上述的示意性密码算法。
Chow1公开了通过利用表示组成而不是各个步骤的随机双射编码它的表格以便有意隐藏密钥的方法。防止密钥提取具有的优点是防止攻击者提取密钥资料,这将允许在其他机器上绕过软件保护目标,或防止公布有效地创建‘全局解密’的密钥资料,这种全局解密击败已安装软件的大量用户基础之上的安全措施。它提供了增强的保护程度,其给定了仅软件解决方案和敌意主机现实性的约束。在Chow1的方法中,通过(1)使用用于组成而不是各个步骤的表格;(2)利用随机双射编码这些表格;(3)扩展密码边界进一步超出密码算法本身到包含应用中,强迫攻击者(反向工程师)明白相当大量的代码段实现其目标,从而隐藏密钥。Chow 1讨论固定密钥方法:通过关于密钥的部分评估在实现中嵌入密钥,以便密钥输入不是必须的。部分评估意味着包含密钥的表示被尽可能更合理地评估,结果被置入代码而不是全部表示。攻击者能够提取密钥特定的实现并且使用它而不是密钥,但是密码典型是能够以操作或编码的形式给密码组件提供输入的较大包含系统的组件,组件为密码设计,但是对手将会发现难以删除。参考编码表格的步骤,由于编码是任意的,结果仅当一个步骤的输出编码匹配下一个步骤的输入编码时才是有意义的。例如,如果步骤X后跟随着步骤Y(导致计算
Figure A200780008551D00161
),所述计算能够被编码为
Figure A200780008551D00162
因此,虽然需要利用F编码输入以及利用H-1解码输出,但是
Figure A200780008551D0016142522QIETU
被正确地计算。所述步骤单独地表示为对应于Y’和X’的表格,从而F、G和H以及X和Y被隐藏。
除这些混乱步骤之外,Chow 1通过线性变换的方式使用扩散步骤以进一步伪装潜在的操作。术语混合双射用于描述在以上意义中使用的线性双射。Chow 1的实现采取一种操作形式的输入,以不同的操作形式产生输出,从而使得白盒子攻击上下文(WBAC)防止AES难以从其包含应用程序中分离。
Chow 2讨论设计用于抵抗白盒子攻击上下文的DES的密码实现,其目的是防止从程序中提取密钥。在本文中讨论的有关模糊查询表网络的技术也大部分适用于包括AES等等算法的其他密码算法。尽管控制执行环境的攻击者能够清楚地使用软件本身(例如,为了解密)而不明确地提取密钥,但是强迫攻击者使用在手边安装的例子对于数字权利管理(DRM)系统提供者来说是有价值的。通常,Chow 2的方法是面向完全由替换盒子构成的实现工作的,没有一个实现仿射变换。需要支持该一般方法的大量技术在Chow 2中描述。部分的这些技术是I/O分块编码、组合函数编码、旁路编码、分离通道编码、和输出分离。
部分评估意味着预先评估基于在实现时(部分)已知的值的表示。在简化的实例中,当密钥是‘5’时,原始实现包含表示‘2*密钥’,那么不是在该实现中并入‘2*5’,预先评估的表示‘10’被置于该实现中。因此,密钥‘5’在代码中并不是直接地存在。在具有固定密钥的DES的情况下,这涉及到利用密钥特定的预先评估的S-盒子(在编译时或在编译时间之前根据密钥计算)替换标准S-盒子(在运行时根据密钥计算)。根据Chow 2的混合双射是这样被设计以便每个输出比特取决于大量的输入比特的双射仿射变换。I/O分块编码是一种处理大量输入和输出比特的编码方法。在这种情况下,编码/解码能够被形成为编码的级联,每个编码处理输入/输出比特的子集。组合函数编码意味着如果能够并行地处理两个或更多操作,单个编码函数被应用于并行操作的输入(分别输出)的级联。它或多或少是I/O阻挡编码的相反。旁路编码意味着编码变换增加熵的大量的冗余比特到将被模糊的变换的输入和/或输出,以及重新设计将被模糊的变换以“绕过”冗余比特从而它们不影响过程的最终输出。分离通道编码意味着修改函数以提供附加输出比特用于模糊实质的信息比特。输出分离意味着在若干部分函数上分布函数的输出,这里所有部分函数的输出必须以非明显的方式组合以便获得函数的原始输出。
Chow 2提出构建编码网络以利用宽的输入,32比特或甚至96比特构造S盒子。这种表示仿射变换的宽输入S盒子被分割成S盒子的网络,每个盒子具有更窄的输入和输出;通过在S盒子中并入编码函数来编码每个S盒子。编码函数的反演被合并在处理S盒子输出的S盒子中。
白盒子AES实现能够如下概述。AES加密和解密算法的输入是单个128-比特块。这个块通过由16字节构成的4×4矩阵表示。AES通常包括用于AES-128的10个回合。每个回合更新形成AES状态的一组16字节,因此每个AES回合处理128个比特。AES-128使用128比特的密钥。该密钥用作将密钥转换成128比特的不同回合密钥的算法的输入。基本回合包括以下四个部分:
.替换字节
.移位行
.混合列
.添加回合密钥。
操作的这个顺序适用于AES加密。尽管在AES解密中操作的标准顺序是不同的,但是有可能重写AES解密算法以具有与AES加密相同顺序的操作。
在第一回合之前,额外的添加回合密钥操作发生,从回合十混合列操作被省略。使用所述密钥的唯一部分是添加回合密钥,其他三个部分与密钥无关。在所述实现中回合的边界被改变以将下一回合的添加回合密钥步骤和替换字节步骤集成到一个步骤中。回合利用添加回合密钥和替换字节开始,其后跟随的是移位行以及最后是混合列。
首先,通过组合替换字节步骤和添加回合密钥一起到一个步骤中隐藏密钥。这使得密钥不再独自地可见。由于密钥是提前已知的,能够预先评估涉及密钥的操作。这意味着在步骤替换字节中使用的标准S盒子能够被密钥特定的S盒子所替换。为了产生AES-128的密钥特定的例子,通过创建如下定义的十六个8×8(即8比特输入,8比特输出)查询表该密钥被集成到替换字节变换中:
T i , j r ( x ) = S ( x ⊕ k i , j r - 1 ) , i = 0 , . . . , 3 ; j = 0 , . . . , 3 ; r = 1 , . . . , 9 ,
这里S是AES S盒子(可逆的8比特映射),以及
Figure A200780008551D0018111207QIETU
是在4×4矩阵的位置i,j的AES子密钥字节,该矩阵表示回合r的回合密钥。这些T盒子利用前一回合的添加回合密钥步骤组成替换字节步骤。回合10T盒子如下吸收后变白密钥:
T i , j 10 ( x ) = S ( x ⊕ k i , j 9 ) ⊕ k sr ( i , j ) 10 , i = 0 , . . . , 3 ; j = 0 , . . . , 3 ,
这里sr(i,j)表示在移位行步骤之后单元i,j的新位置。T盒子的总数是10×16=160。但是,由于S-1公开地被已知,从T盒子能够容易地恢复所述密钥。这使得附加编码是必须的。使用线性变换用于扩散T盒子的输入。这些线性变换被称为混合双射并且能够在GF(2)上被表示为8×8矩阵。通过之前计算反转混合双射以取消其影响。
图3图示包括在白盒子ASE的回合中用于状态的一个32比特列(在应用移位行之后)的表格。这里介绍不同类型表格的名称。在下文中更详细地讨论它们。在回合之前,应用128比特状态的每个字节于相应类型Ia表格。这产生了相应的128比特值,这些值使用类型IV表格的网络被异或以提供被分割成四个32比特值的128比特输出。在这里阐述了每个32比特值的处理步骤。输入32比特值的四个字节到四个相应的类型II表格20。四个类型II表格20的每个表格产生32比特输出。这些输出使用类型IV表格22被逐位异或。每个类型IV表格22执行4比特逐位异或。通过正确地连接类型IV表格的输入和输出,正如本领域普通技术人员将会明白的,能够实现四个32比特输出的逐位异或。该步骤的结果是32比特值。该值的四个字节中的每个字节被应用于相应的类型III表格24。每个类型III表格提供32比特输出。这些输出使用类似于类型IV表格22的网络的类型IV表格26的网络被再次逐位异或。所述输出是指示状态的列的32比特值。对于每个回合重复这个过程。
在对于四个32比特值的每个值已经执行回合之后,将所述输出组合到128比特值中。128比特值的每个字节被应用于类似1b表格;使用类型IV表格的网络异或结果。
图4图示类型Ia表格100。图5图示类型II表格200。图6图示类型III表格300。图7图示类型IV表格400。图8图示类型Ib表格500。
如下使用混合双射。AES状态通过由字节构成的4×4矩阵表示。混合列步骤一次在一列上(四个8比特单元)操作。考虑32×32矩阵MC。如果通过表格表示该矩阵,该表格将花费232×32=137438953472比特=16GB。为了避免这些巨大的表格,所述矩阵被分块成四个部分。
MC被分块成四个32×8个部分,MC0,MC1,MC2,MC3(块208)。通过将x的比特划分到四个字节中并且将MC的每个部分乘以一个字节,产生四个32比特向量(z0,...,z3),从而完成32比特向量x=(x0,...,x31)与MC的相乘。这之后跟随三个32比特异或,给出最终的32比特结果z。四个表格一起仅仅花费4×28×32=32768比特=4KB。
三个异或将被划分成24个4比特异或,每个异或通过利用适当的级联(例如((z[0,0],z[0,1],z[0,2],z[0,3])+(z[1,0],z[1,1],z[1,2],z[1,3]))‖((z[0,4],z[0,5],z[0,6],z[0,7])+(z[1,4],z[1,5],z[1,6],z[1,7]))‖...),可能编码的查询表表示,这里‖表示级联以及+表示异或。通过使用这些条带(strip)和细分的异或,每个步骤通过小的查询表表示。特别是,对于i=0,...,3使用8×32表格计算zi,而4比特异或变为24个8×4比特表格。图7图示如何在异或404周围放置输入解码402和输出编码406。这些编码通常是随机选择的非线性4×4双射。异或表格被称为类型IV表格400。类型IV表格从两个之前计算的每个计算取4比特作为输入。这些计算的输出编码212与类型IV表格的输入解码402相匹配以相互取消。4×4非线性双射的选择取决于表格的大小。在这种情况下类型IV表格仅仅是28×4比特=128字节。需要总共花费3KB的24个表格。如果异或不被划分,将需要计算32比特异或的三个异或表格。一个这种表格将花费224KB。T盒子206和8×32表格208能够被表示为单独的查询表。相反,它们能够被组成创建新的8×32表格200,这些表格计算替换字节和添加回合密钥变换以及部分的混合列。这节省了(用于存储T盒子的)空间和(用于执行表格查询的)时间。
在如上分离MC成MCi之前,MC将被左乘以32×32混合双射MB,如在图5中以附图标记210所指示,其被选择作为具有满秩的4×4子矩阵的非奇异矩阵。使用混合双射增加了特定表格的可能结构的数量。
图5图示包括4×4输入解码202和4×4输出编码212的8×32类型II表格200。这些输出编码和输入解码是必须匹配类型IV表格400的输入解码和输出编码的非线性4×4双射。类型IV表格400跟随类型II表格200。为了反转MB,使用额外的一组表格来计算MB-1。令(x’0,...,x’31)是混合列的输入,以及令(z0,...,z31)是在混合列之后的输出。令(z’o,...,z’31)T是在与MB相乘之后的结果。(z’o,...,z’31)T用作类型III表格300的输入。应该注意到由于通过下一表格的输入解码取消表格的输出编码,在这里并不需要考虑输入解码和输出编码。在类型III表格300中,MB-1被应用以及下一回合的四个类型II表格200的四个输入混合双射204的反转308。
图6图示包括4×4非线性输入解码和4×4非线性输出编码的8×32类型III表格300。这些表格后跟随着相应的类型IV表格400。
数据操作的一个回合包含在128比特状态矩阵上的操作。在128-比特状态矩阵的32比特的四个条带的每个条带上执行的数据操作如下。32-比特条带被划分成四个8比特字节。四个字节的每个字节被馈送到不同的类型II表格200中,产生四个32比特输出值。必须使用被模糊的类型IV表格400异或这些值。为此,每个32比特输出值被划分成八个4比特的四位字节,适当四位字节对被输入到相应的类型IV表格中,从而以编码的格式获得四个32-比特输出值的异或。
这32比特的作为结果产生的编码异或的结果再次被划分成字节,以及每个字节被输入到不同的类型III表格300中。类型III表格的每个四位字节的输入解码对应于最后应用的类型IV表格的输出编码。类型III表格再次产生被使用被模糊类型IV表格400再次异或的四个32比特输出值。
总之,通过查询表实现回合。单个回合的查询表被如下网络化。馈送数据到类型II表格中。馈送这些表格的输出到表示被编码异或的类型IV表格的网络。该网络的输出被馈送到取消通过类型II表格插入的混合双射编码的类型III表格。最终通过将类型III表格的输出再次馈送到表示被编码异或的类型IV表格的网络中推导该回合的编码输出。
进一步,白盒子实现在开始(类Ia表格100)和结束(类型Ib表格500)包含分别用于消除和插入外部编码的类型I表格。类型Ia表格100能够被用于通过应用单个表格查询应用如在图4中图示的映射的级联。在所述级联中,4-比特的四位字节输入解码102首先出现。然后,8-比特到128-比特双射104出现;这种双射完成网络的输出和输入的编码;这种映射能够在程序的其它地方被取消。双射104的结果被分离成相应的8-比特双射106被应用于其的16个8-比特块。最后,应用输出四位字节编码108。如上所述,预先评估映射102、104、106和108的级联以及在查询表中将最后的结果制成表。这产生了具有每个项128比特的至多256个项的表格。在图8中示意性显示在类型Ib表格500中所包含的映射的级联。第一映射是输入四位字节解码502,其后跟随着8比特双射504,T-box Ti,j r506,这里r对应于最后的回合,用于提供输出编码的8比特到128比特映射,以及输出四位字节编码510。再次使用四位字节输入和输出编码的类型IV表格400,异或这种类型表格的128比特输出与其他类型Ib表格的输出。输出编码508在程序的其它地方,即在程序的密码部分之外被取消。这使得攻击者更佳难以通过仅仅分析程序的密码部分的输入和输出破解表格的编码。
在本发明的一个方面中,提供能够防篡改数字数据发布的方法。需要通过包括数字数据接收者可获得的指令的计算机代码处理数据。处理的目的可以是再现通过所述数据表示的音频/视频信号。处理可以包括加密、解密、压缩、解压缩、或其他处理。所述方法包括编写多个指令,包括用于处理数字数据的处理算法的实现。所述多个指令形成计算机程序,例如在用户终端上需要的用于成功重放发布的内容的插件程序或媒体播放器。所述处理算法基于参数。在解密的情况下,该参数可以表示密钥。发布的数据可以使用相应的加密密钥(部分地)被加密。
等效于处理器指令的一部分的部分参数被识别。更具体而言,参数的比特表示的一部分等于指令的比特表示的一部分。参数的剩余部分可以不同于任何处理器指令。
处理器指令被如此安排,从而在执行期间参数的相同部分通过参考处理器指令的比特表示的所述部分的存储器位置被读取(例如在解密处理中使用)。参数的相同部分并不单独地存储在存储器中,因为所需的比特表示已经存在于保持相同的处理器指令的存储器地址。以两种方式有效地使用相同的存储器地址:解密算法的参数的存储位置,以及同时作为将要执行的处理器指令的存储位置。典型地,读取存储器位置作为参数的指令本身被存储在不同的存储器位置,以及通过参考存取保持所述参数的存储器位置。所述指令形成程序代码。该指令遵循执行程序代码的执行环境。例如,它们是处理器指令或诸如虚拟机器指令(例如,java字节码)的伪代码指令。
在本发明的另一个方面中,选择所述参数以便它们包含相对大的相同部分。单个存储器地址可以保持能够以两种看上去不相关的方式使用的数据:作为处理器指令合作为参数值。这具有的效果是如果攻击者改变处理器指令,参数可以变得无效,以及反之亦然,如果攻击者改变参数,处理器指令则变得无效。因此对于攻击者可以变得更加难以执行有目的的篡改。
有可能在首先,用于基于参数处理数字数据的计算机可执行指令,和其次,其比特表示等于参数比特表示的一部分的计算机可执行指令之间作出区别。第二指令被与第一指令使用的参数合并。当然,第一和第二指令可以是相同的。但是,还有可能第二指令是软件程序的另一个模块的一部分,或完全不同的程序的一部分。例如,第一指令可以是用于解密视频内容或认证银行交易的插件程序的一部分,而第二指令可以是诸如操作系统内核程序或TCP/IP驱动器的至关重要的操作系统组件的一部分。由于第一指令使用第二指令的比特表示获得参数值,解密或认证将仅在如果内核程序或驱动器还没有被篡改的条件下是成功的。因此,数字权利实施或银行交易安全的防篡改被改善。
编码的选择
图10图示本发明的另一个方面。该图所示为编写实现603,标识参数613的相同部分,以及安排实现615的步骤。所述参数可以包括一个或更多查询表,例如形成查询表的网络。例如根据密钥能够计算(步骤604)这种查询表的网络。处理器指令的比特表示的字被选择(在步骤606中)用于包括在网络的至少一个查询表中。字的包括通过应用(在步骤608中)到查询表的元素的变换来实现。通过应用(在步骤610中)反转到至少一个其他查询表的元素的变换的效果的补偿变换来补偿这种变换。通常至少两个变换的查询表经由查询表的网络连接。变换的查询表网络用作密码算法的参数而不是查询表的原始网络。
在一个实施例中,可以使用输出和/或输入编码模糊所述查询表。例如查询表网络中的第一查询表f(t1(x))具有输出编码f。查询表网络中的第二查询表t2(f-1(x))具有输入解码f-1。输入解码f反转输出编码的效果,例如t2(f-1(f(t1(x))))=t2(t1(x))。可以选择解码f和f-1以便预定的字被包括在第一查询表f(t1(x))或第二查询表t2(f-1(x))中。例如令t1(x0)=y0。为了在查询表中包括字w,能够如此选择f从而f(y0)=w,由于在这种情况下f(t1(x))=f(y0)=w。这将w放置在查询表中的位置x0。为了补偿,如此选择f-1从而f-1(w)=y0
通过自适应查询表的输入解码能够重新定位选择的字。例如,考虑以上阐述的实例利用查询表实现f(t1(x)),这里选择f从而f(t1(x0))=w。如果期望将w放置在位置x1而不是x0,那么这能够通过安排输入解码h-1获得查询表实现f(t1(h-1(x)))来实现。这里,选择h-1从而h-1(x1)=x0。这给出了f(t1(h-1(x1)))=f(t1(x0))=w。这将w放置在查询表中的位置x1。为了补偿,选择h从而h(x0)=x1以及在第三查询表h(t3(x))中应用它作为输出编码。三个查询表的组成能够是
Figure A200780008551D00232
这里括号()指示不同的查询表以及
Figure A200780008551D00241
通常表示函数组成。
当推导白盒子实现时,有选择编码的自由度。以下能够被任意地选择:
-在内部和外部编码中128×128线性双射。
-散布T盒子的输入的8×8混合双射。
-散布混合列的输出的32×32混合双射。
-施加于表格上的四位字节编码双射。
在本发明的一个方面中,这种自由度能够用于以这种方式修改给定的查询表即它包含一组预定义的比特或字节。这些预定义的比特或字节能够包括将要执行的处理器指令。篡改这些处理器指令将使得表格无效,以及篡改表格将使得处理器指令无效。通过适当地选择以上所述的编码,预定义的字节被包括在表格中。正如以上所说明的,通过反转包含在其他表格中的双射来取消这些线性混合双射和四位字节编码双射的效果。
在一个实施例中,改变类型II表格的输出编码以便将代码置于表格中。类型II表格的输出编码包括四位字节编码和32×32混合双射。这里描述的这些和其他实施例并无意图限制本发明而不是示例本发明的若干方面。以类似的方式还能够将代码置于其他类型的表格中,并且更普遍地,置于能够被应用变换的任何表格中,这种变换能够通过表格查询接下来的或之前的操作所取消。通过本领域的普通技术人员这里公开的方法能够适应于这种情况。在本实例中,使用输出编码强制预定义的代码段在表格中出现。除了以表格项的预定义序列正确地定位预定义的代码分段之外还可以使用输入编码。输入编码的任何自适应必须通过自适应之前表格的输出编码进行补偿,因为包括表格的代码的输入编码是之前表格的输出编码的反转。
能够自由地选择每种类型II表格的四位字节编码。但是,对于回合的每个列仅仅能够选择一次32×32混合双射。所以,四个类型II表格共享相同的32×32混合双射MB。四位字节编码或32×32混合双射的任何一个或二者能够以一种方式被修改,即期望的代码分段出现的表格中的某个地方。通过正确地修改网络中的下一个查询表或一些查询表的输入解码补偿这种修改。
首先,描述一种方法用于选择MB从而某些预定义的代码出现在表格中。这种方法将被称为“修改MB的算法”。输入四位字节解码、8×8混合双射、以及四位字节输出编码F原则上被保持固定,但是可以在某些情况下被修改以在表格中容纳更多的码字。由于每个四位字节编码32比特表格II输出的4个比特,因此输出四位字节编码F能够被写为(F0,F1,...,F7),这里Fi是第i个输出)字节的编码。
令X为编码之前的类型II表格,包含混合列和T盒子的AES步骤。由32比特的256行构成的查询表X能够被认为是256×32矩阵。该矩阵的行1通过以下给出
( MC i · b 0 ( l ) b 1 ( l ) · · · b 7 ( l ) ) T ,
这里b(1)是对于值1,T盒子输出的二进制表示以及bi(1)是该表示中的第i个比特。矩阵X的秩是8。所以,正如本领域普通技术人员将会明白,如果需要,在例如通过适当地选择输入四位字节解码和/或8×8混合双射重新安排X的行之后,能够计算满秩的32×32矩阵A和24×8矩阵α,从而
XA = I 8 0 8 × 24 α 0 24 × 24 ,               (方程1)
这里In表示n×n单位矩阵,0nxm是所有项为零的n×m零矩阵。令C=((c(0),c(1),...,c(7))是表示指令的预定义序列的八个32比特字,以及令C从而
F-1(C)=(F-1(c(0)),F-1(c(1)),...,F-1(c(7)))T       (方程2)
是8个不相关的32比特行向量。如果方程2的行向量不是不相关的,那么通过适当地修改F可以使其不相关。如果不希望修改F或如果并不是所有八个c(0),c(1),...,c(7)是不同的,所述方法仍然能够被应用。例如,能够建立和使用c(0),c(1),...,c(7)的子集,对于该子集方程2的相应子集由不相关向量构成。本领域普通技术人员能够计算由附加不相关32-比特行向量构成的24×32矩阵β从而通过下式定义满秩的32×32矩阵B
B = F - 1 ( C ) β .
然后获得X的编码版本,通过应用由MB=(AB)T给出的混合双射和(预定的)四位字节输入编码和四位字节输出编码F,它的首先8行等于C。令Y表示代表X的因此编码版本的查询表。它是单个查询表,在单个查询步骤中包含(预定的)输入四位字节解码、(预定的)8×8混合双射、T盒子、混合列、MB、以及(预定的)输出四位字节编码F的组成。比较起来,查询表X仅仅包含T盒子和混合列的组成。
通过C给出查询表Y的首先8行,正如将会理解通过考虑通过以下给出的Y的第一行
F ( MB · MC i · b 0 ( 0 ) b 1 ( 0 ) · · · b 7 ( 0 ) ) T = F ( ( MC i · b 0 ( 0 ) b 1 ( 0 ) · · · b 7 ( 0 ) ) T · MB T ) .
由于 ( MC i · b 0 ( 0 ) b 1 ( 0 ) · · · b 7 ( 0 ) ) T 是X的第一行以及XA的第一行通过(1,0,0,...,0)给出,Y的第一行等于F((1,0,0,...,0)B)。通过B的定义这是F(F-1(c0)),其等于c0。类似地,Y的第二到第八行通过c1,c2,...,c7给出也成立。
应该注意到,计算满足方程1的A可能需要重新安排X的行。这可以通过修改输入编码实现。对于类型II表格,输入编码包括输入四位字节解码和8×8(线性)混合双射。例如,通过交换对应于两行的四位字节解码的输出值可以交换两行。不需要代码被放置在X的开始。该代码还可以通过正确地修改输入编码和/或A和/或B被放置在另一组行中。而且,在按照愿望在表格中定位代码之后,在选择输入编码中可能仍然留下自由度。这种自由度可以被任意地使用例如用于进一步模糊表格。这结束了通过在其输出编码中选择混合双射将代码放到类型II表格中的实例算法的讨论。
对于给定的输入四位字节解码,给定的8×8混合双射,以及给定的32×32混合双射MB,有可能以这样一种方式修改输出四位字节编码F,即代码出现在类型II表格中。例如通过首先修改MB以便代码的八个32-比特字出现在表格中,然后修改输出四位字节编码以添加代码的更多的32-比特字,这种可能性能够组合以上阐述的算法被使用。在下文中将对此说明。如上所述,令X表示编码之前的类型II表格。因此查询表X仅仅包含T盒子和混合列的组成。而且,定义MB(X)为通过在X上应用混合双射MB获得的查询表。MB(X)的行1通过下式给出
( MB · MC i · b 0 ( l ) b 1 ( l ) · · · b 7 ( l ) ) T .
令C是表示将被置于表格中的代码的32比特字的集合。令Z表示具有正在创建的输出四位字节编码的MB(X)的版本。包含C的32-比特字到Z中的方法是通过修改输出四位字节编码F=(F0,F1,...,F7),通过贪婪地从C添加字到Z中直到由于以下阐述的约束不再有可能为止。所述修改应该如此执行从而例如通过交换函数值F保持双射。在下文中,将使用注脚指示32-比特字的顺序的4-比特四位字节,例如w0,w1,...,w7表示32-比特字w的8个四位字节。
考虑来自C的任何32-比特字c以及MB(X)的任何行保持32-比特字r。初始,能够选择来自C的随机字c,或可以以例如顺序的排序从C选择字c。通过定义fi(ri)=ci,i=0,1,...7,字c能够被置于Z的行r中。因此,对于F的八个四位字节编码的每个编码,一个值的映射已经是固定的。
接下来,从C选择另一个字c。优选地如此选择字c从而它已经未被包含在Z中,为此行r存在于Z中从而有可能通过使用在规定F中剩余的自由度,即不改变已经包含代码的查询表Z的字实现fi(ri)=ci,i=0,1,...7。如果例如fi(ri)已经未被分配和如果ci已经未被分配给不同的四位字节值,即对于fi(x)=ci没有四位字节值x≠ri存在,这种实现是有可能的。重复该处理直到不再有字能够被置于Z中。再次,输入四位字节解码和8×8混合双射能够用于在正确的位置将包括的指令置于表格中。能够任意地使用输入四位字节编码、8×8混合双射、和输出四位字节编码的剩余自由度以进一步模糊表格Z。
修改MB的算法和修改输出四位字节编码的算法能够被组合例如以与通过仅使用其中一种算法的可能情况相比能够在表格中包括代码的更多字,或者能够较佳的模糊表格。实现这的一种方法包括以下步骤。正如所述应用固定的输出四位字节编码F执行选择MB的算法。这经由MB的选择将表示代码的字的第一集合C1置于查询表Y中。接下来,继续利用Y,应用选择输出四位字节编码的算法以将表示代码的字的第二集合C2置于查询表Z中,这里如果并且仅仅如果Fi(x)与已经表示代码的查询表Y中字的集合C1中的一个码字不一致,值Fi(x)被初始化为“已经未分配”。这种初始化保证码字C1和C2的集合将出现在表格Z中。
假设选择代码分段C被置于到表格中。在某些情况下,例如如果C的32-比特字并不是完全相关的,可能需要其他步骤获得包括代码分段的表格。能够应用某些技术以在该表格中包含C的至少一部分。这些技术的部分实例是:
a.表格不必存储在存储器的连续块中。例如,能够以交织的顺序在存储器中存储多个表格。合并存储器中表格的其他方式是有可能的。例如,表格T1的第一行后不需要跟随表格T1的第二行。它后面还能够跟随不同表格T2的第一行。结果,不能被包括在T1中的码字能够包括在T2中,以及T1和T2的字能够以这种顺序被存储在存储器中,使得代码分段C出现在连续存储器分段中。
b.能够将C变换成不同的但是功能等同的代码分段。这已经能够通过诸如改变寄存器分配的非常简单的技术实现。
c.通过例如插入NOP指令(即处理器跳过的指令)。可替换地,一起具有合乎要求的效果的其他指令可以被插入。如果NOP指令是例如8-比特和码字是32-比特,跟随NOP指令的指令被移位8比特。这导致产生了要包括在表格中的32-比特字的不同集合C。如果NOP在y之前被插入那么等同的两个32-比特字x和y不再等同。注意到通过在y之前插入NOP,y的最后字节移位到下一个32-比特字。
d.通过代码重新分配,能够将C的问题部分移动到程序的不同部分。作为其新的位置,问题部分不再需要是问题的。
在已经明白这种描述之后,对于普通技术人员而言在模糊的表格或表格网络中包含代码或其他预定义数据的其他方式将会变得明显。能够使用的表格的其他实例是类型Ia表格100和类型Ib表格500。所述方法能够被成功地应用于能够被模糊的查询表的所有网络。所述方法能够被成功地应用于诸如DES、AES或Serpent之类的任何类型的密码算法,尤其是如果至少部分地通过查询表方式实现的话。所述方法同样可应用于涉及多个查询表的任何方法,其中查询表的输出是下一个查询表的输入。所述方法还应用于其中以查询表实施的操作能够至少部分地通过在应用查询表之前或之后所执行的适当选择的操作进行反转的任何情况。所述方法还能够被应用于例如在用于应用线性操作的矩阵中包含代码,或通过诸如加法、乘法、或XOR的二进制操作的方式被应用于数据的固定操作数。在矩阵的情况下,可以通过修改或包括应用于数据的随后的(线性)操作补偿需要用于包含代码的矩阵修改。在二进制操作的情况下,可以通过修改随后的(二进制)操作的操作数补偿操作数的修改。这里提出的方法同样适用于包含合并代码与在方法或算法中出现的数字常量的其他情况。在可替换的实施例中,多个查询表表示密钥,通过在查询表格中包括预先定义的值改变该密钥。
图9所示为创建能够实施数字权利管理策略的防篡改程序所需操作的可能流程的示意图。在步骤602中,例如使用软件开发环境(SDE),也被称为编程环境,程序由处理器指令构成。例如,能够提供编辑器或编译器用于执行该步骤。所述程序应用一定的参数解密数字内容。该参数可以涉及在程序下面解密算法的密钥。例如,密钥本身是参数,或表示在程序内发生的线性操作的矩阵,或例如表示在程序内发生的(可能非线性)操作的查询表。步骤612包含识别等于程序的比特的一部分参数。例如,参数的比特表示还能够作为程序的处理器指令的比特表示出现。在步骤614中安排所述实现参考在处理器指令的位置的参数值。这保证了通过攻击者的处理器指令改变将产生不想要的参数改变。这样可以使得解密处理的结果是不可使用的,从内容提供者的角度出发希望这样的结果,因为内容提供者不想要他的程序被篡改。当然,还有可能首先识别612参数的相同部分(具有等于某些指令的比特表示的比特表示的参数),然后编辑602所述程序,以及同时如此安排614程序从而它参考在相应处理器指令的位置的参数的相合部分。动作的其他顺序同样是有可能的。
在步骤604中,计算一组查询表以用作所述程序的参数。该程序使用查询表实现从输入值到输出值的映射。通过使用第一查询表的输出作为第二查询表的输入可以采用有可能被模糊的查询表的网络。通过多个比特表示的输入值可以被划分成多个值,每个值通过多个比特的部分比特表示,以及每个值可以被馈送到其中一个查询表中。查询表的结果可以通过例如使用被模糊的异或查询表,例如异或输出被合并在单个输出值中。同样可以例如通过同属(generic)查询表(即不实现异或的查询表)或通过级联输出的其他方式合并该输出。
在步骤606中,从程序代码选择字以包括在参数,例如查询表中。该字可以基于特定处理器指令关于防篡改如何关键进行选择。该字还可以基于已经存在于参数中或因为特别容易将它包含在参数/查询表中的事实进行选择。
在步骤608中,如果所述选择的字没有已经存在于参数中,则通过应用适当的变换将它包括在参数中。例如,这样改变输入和/或输出编码从而所述字在查询表中的预定位置出现。在步骤610中,例如通过改变分别是查询表网络中的之前和/或相继查询表的相应输出和/或输入编码,执行补偿变换。识别与程序代码的比特表示相一致的一部分参数的步骤612可以包括检查在参数中包括想要的字是否是成功的。它还可以简单地为步骤604-610的结果。有可能将步骤614与步骤602合并;例如能够安排所述实现寻址在特定的程序代码地址的特定参数;此后,在步骤604-610中创建和适配所述查询表用于保证按照程序的期望所述值出现在参数中。
代码作为密钥的对应部分
一个实施例包括选择指令的比特表示的多个字和创建包含指令的该比特表示的查询表以形成‘包含代码’的查询表。包含代码的查询表包括在查询表的网络中,形成数据处理程序的参数。通常通过在查询表的网络中包括正确适配的查询表来补偿包含代码的查询表的效果。如此安排形成程序代码的指令从而保存在包含代码查询表中所出现指令的存储器地址还被用于读取包含代码查询表的值。
一个实施例还包括应用网络的第一组查询表于数字数据的比特串以获得第一组中间结果。相同的比特串还被应用于包括包含代码查询表的第二组查询表以获得第二组中间结果。合并第一和第二中间结果以计算处理的数字内容。由于指令的内容对正确的处理数据没有贡献,第二组查询表可能具有不想要的效果。通过调整第一组查询表中的值和通过正确地合并第一和第二中间结果取消该不想要的效果。
在本发明的实施例中代码被包含在查询表网络中的一个或多个‘包含代码’的查询表中,通过补偿其他表格中包含代码查询表的效果取消它们的效果。查询表网络的结构可以被特别地适配用于此。例如,能够添加一个或多个查询表到网络,与没有包含代码查询表的网络相比能够改变存在的连接。计算查询表的网络从而包含代码查询表被包括在网络中,以及所述网络实现至少部分数据处理算法。通过这样,能够在参数中存储相当大部分的代码,以及可以实现高的防篡改程度。
在一个实施例中,通过使用代码作为密钥的相对应部分实现防篡改。令T是包含k-比特字的查询表。而且,令C是包含表示将被防篡改的代码的相同数量k-比特字的集合。通过 T ′ = T ⊕ C 定义新的查询表,这里
Figure A200780008551D00312
表示异或操作。由于 T = T ′ ⊕ C , 表格T中的查询操作能够被表格T’中的查询、表格C中的查询、以及异或所述结果替换。想要改变C中代码的攻击者将必须相应地改变T’,因为否则查询表将不会正确地工作。
图11图示例如32-比特字的输入字700,它被应用于通过实例方式概述的类型II、III、和IV表格实现与AES状态的列和AES的回合相关联的计算的网络702。通过如上所述的混合双射和四位字节编码的方式模糊所述网络。取代图示的网络,可以使用表示任何类型算法的任何部分的查询表的网络。查询表的网络702与输入700组合产生字706。相同的输入字700还被应用于包含一个或更多包含代码表CC的查询表的网络704。例如,在32-比特输入的情况下,能够提供四个8-比特到32-比特查询表CC以便给4×256×4=4096字节代码提供存储。为了使用这四个8-比特到32-比特查询表,所述输入被分离成4字节,每个字节被应用于其中一个查询表,以及使用类型IV表格合并所述结果形成输出字708。当查询表的网络72可以表示仅仅部分处理算法(在本实例中,网络702表示状态一列的AES的一回合)时,通过在处理算法中创建包含代码表格704作为每个网络702的相对应部分(在本实例中,对于AES的每个回合和对于状态的每列包括一组包含代码表格704)更多的代码能够被包括在参数中。
所述表格还能够被不同地组织。在本实例中,网络702是类似于图3的被模糊的查询表网络。通过给类型III网络的层添加相应类型IV表格可以扩展包含代码网络704。还有可能替换四个8-比特到32-比特包含代码表CC。例如,可以使用8-比特到8-比特表格,8-比特输出可以被级联以获得32-比特输出字708。对于普通技术人员来说组织表格的其他方式将是显而易见的并且可能需要适当地重新组织网络702。只要网络702被适当地改变来取消其效果,就能够利用较大数量的自由度设计查询表的网络704。查询表网络704的结果是输出字708。例如使用类型IV查询表710合并输出字706和708以获得解密的字712。取代类型IV网络710,能够使用简单的异或操作或其他适当选择的算子。
由于攻击者相对难以对于对包含代码表704作出的改变(即,对程序代码的指令作出的改变)补偿查询表702,所述防篡改被增强。
有可能添加类似于包含代码网络704的多个包含代码网络作为表的单个网络702的相对应部分。通过扩展类型IV表格的网络710这些包含代码网络704的输出字708全部被与字706合并。为了保持高的防篡改程度,利用类型III和类型IV表格的层(例如实现混合双射)可以扩展包含代码网络704以加扰包含代码查询表的输出。在至多一个包含代码网络704中这种扩展可以被省略而不危及防篡改。
图12图示本发明的实施例。该图显示诸如用于与数字内容提供者进行连接的到因特网的连接的通信端口895。还能够从诸如DVD或CD的介质896获得该内容。典型使用通过处理器892使用存储器891执行的媒体播放器再现PC上的数字内容。对于特定内容格式,这些播放器能够执行各自的插件程序,这些插件程序用于执行对应于经由通信端口895和/或介质896所获得内容的特定格式解码。这些内容格式可以包括AVI、DV、运动JPEG、MPEG-1、MPEG-2、MPEG-4、WMV、音频CD、MP3、WMA、WAV、AIFF/AIFC、AU等等。为了数字权利管理,可以使用安全的插件,该插件不仅解码内容而且解密该内容。这种插件包括存储在存储器891中的处理器指令和参数(诸如被模糊的查询表)。处理器指令和参数可以如上所述相互重叠;在这种情况下,在插件的执行期间存储器891中的某些存储位置包含表示处理器指令的值和参数值。可以提供用户输入894来从用户获得指示将被再现内容的命令,以及提供显示器893和/或扬声器用于再现解码和/或解密的内容。
防篡改软件
正如这里所述,查询表至少部分以程序代码的形式,可以形成在解密处理中使用的用户密钥的部分评估,例如以密码的回合密钥的形式。该密码优选是块密码,更优选是如AES或Lombok的已知类型密码。
本发明可以应用于实现大量的回合的加密或解密算法。
诸如AES或Lombok的示意加密或解密处理的每个回合函数将前一回合(或初始输入)的输出比特映射到下一回合(或最后输出)的输入比特。
回合的数量可以随每个特定的实现发生变化。例如,AES使用10、12或14次回合,而Lombok可以使用16次回合。
密钥的大小可以随每个特定的实现发生变化。例如,AES可以使用128、192或256-比特用户密钥,而Lombok可以使用128比特密钥。在特定实现中使用的密钥次序表可以是从用户密钥推导的扩展密钥的形式。
以下通过实例的方式描述如应用于Lombok密码的特定实现。
Lombok是由16回合构成的Feistel结构密码。除使用的回合密钥值以及在最后回合中缺少交换之外每个回合是相同的。Lombok的操作类似于AES,在操作中实现大量的加密/解密回合,在回合之间执行字节替换、字节旋转和列混合函数。
Lombok中的回合函数将32-比特输入映射到32-比特输出。在图13中显示这种实现的示意性表示。32-比特输入11被分成8个4-比特四位字节,每个四位字节被输入到8个查询表12中。表格T7-T0中每个表格包括16(=24)行和32列比特并且映射输入4-比特四位字节到相应的32-比特输出字x7-x0。每个4-比特四位字节提供定义表格Ti的32-比特输出的地址行。在步骤13逐位(通过符号⊕表示)异或32-比特输出字x7到x0,产生单个32-比特输出字。
对于任意32-比特字ai,这里0≤i≤6,由于 a i ⊕ a i = 0
( a 0 ⊕ x 0 ) ⊕ ( a 1 ⊕ x 1 ) ⊕ ( a 2 ⊕ x 2 ) ⊕ ( a 3 ⊕ x 3 ) ⊕ ( a 4 ⊕ x 4 ) ⊕ ( a 5 ⊕ x 5 ) ⊕ ( a 6 ⊕ x 6 )
⊕ ( a 0 ⊕ a 1 ⊕ a 2 ⊕ a 3 ⊕ a 4 ⊕ a 5 ⊕ a 6 ⊕ x 7 ) = x 0 ⊕ x 1 ⊕ x 2 ⊕ x 3 ⊕ x 4 ⊕ x 5 ⊕ x 6 ⊕ x 7
(方程3)
所以,如果如上所述每个表格Ti的所有行与相应的值ai被逐位异或,出最后异或操作13产生的输出将与使用不包含ai值的表格产生的输出相同。
每个查询表Ti可以通过32列和16行的矩阵表示,表中的每个元素(比特)通过ti,j,k表示,这里i表示表格编号以及j,k分别是行和列索引。
对于每个表格Ti,0≤i≤6,如通过值ai变换的变换后表格Ti’的每个元素现在变为
t ′ i , j , p = t i , j , p ⊕ a i , p       (方程4)
这里
Figure A200780008551D00345
是表格Ti’的变换后元素以及ai,p是32比特字ai的第p个比特。
由于值ai能够是任意的,即它们的值对回合函数的输出14没有影响,这些值可以被如此选择,从而值
Figure A200780008551D00346
这里0≤i≤6,即表格T0’到T6’中每个表格的第一行的元素,对应于比特表示加密/解密程序代码本身的比特。如果程序代码通过一系列比特c0-cq表示,这里q足够的大以提供足够的比特与每个表格的第一行进行合并,然后表格Ti’的元素通过以下给出
t ′ i , j , p = t i , j , p ⊕ a i , p         (方程5)
对于所有j,这里
a i , p = c p + 32 i ⊕ t i , 0 , p        (方程6)
因此,程序的顺序比特cp+32i形成每个表格Ti’第一行中的比特。为了编码所述表格,给定任意系列比特和一组表格T0-T7,需要简单地根据每个表格第一行中的字节计算字节ai,0≤i≤6。然后根据a0-a6的结果计算表格T7’即
t ′ 7 , j , p = t 7 , j , p ⊕ a 0 , p ⊕ a 1 , p ⊕ a 2 , p ⊕ a 3 , p ⊕ a 4 , p ⊕ a 5 , p ⊕ a 6 , p       (方程7)
0≤j≤15和0≤p≤31。
采用以上描述的方式,单个回合的8个表格能够包含程序代码的7×32=224个比特。由于总共有16个回合,所以有可能合并程序代码的3584个比特与一个Lombok实现的完整密钥。
在总的方面,利用由n个表格构成的单个回合,每个回合具有b-比特输入字节,在每个回合密钥中能够包含高达程序代码的(n-1)b个比特。对于总共r个回合,总共能够包含程序代码的r(n-1)b个比特。
全文中使用的术语‘字节’意图用于指代被作为一个数据单元处理的一组比特,除非特别声明,其意义并不局限于由任何特定数量的比特构成的字节。
应该明白在程序代码中包括的比特并不需要以如上所述的顺序的次序被包含,而是可以例如根据程序代码的任何特定部分或该代码的选择部分推导,以及以任何预定的次序。程序代码的这样一个部分可以方便地被称为c’,以及上述的处理同样适用于这个部分。优选地,包含在表格中的程序代码的部分是加密或解密处理、或以其它方式控制访问和/或许可、处理验证、或限制执行或处理构成查询表所提供功能的计算的操作所必须的部分。
通过简化实例的方式图示,图14到17显示上述处理实现的各种组成,取代仅使用5个表格,每个表格由5行8-比特字节构成。在图14中以四个8-比特字节的形式显示程序代码21的部分,其表示如上所述程序代码c的部分c’。图15显示实现正在讨论中的程序的函数的一系列5个表格T0到T431-35。这种函数可以是密码的,在这种情况下表格可以执行块密码的回合密钥的函数,尽管取决于查询表的其他函数同样是有可能的。图16显示程序代码21的各个字节如何被包含在修改的表格T0’到T4’41-45中,其中程序代码21中的各个字节形成表格T0’到T3’中每个表格的第一行。
根据以上方程6,给定程序代码21和原始表格31-34,能够确定字节ai的值。
a 0 = 01110111 ⊕ 00001010 = 01111101
a 1 = 01010101 ⊕ 11111110 = 10101011
                                  (方程8)
a 2 = 11111111 ⊕ 01100101 = 10011010
a 3 = 10011001 ⊕ 01101111 = 11110110
通过将每一行和适当的ai值进行合并,表格T0’到T3’41-44的剩余值根据方程5随后产生。例如,在表格T0’中,通过如下将所述行和a0进行合并给出这些值:
T ′ 0 [ 1 ] = 01011101 ⊕ 01111101 = 00100000
T ′ 0 [ 2 ] = 11100100 ⊕ 01111101 = 10011001          (方程9)
T ′ 0 [ 3 ] = 01010001 ⊕ 01111101 = 00101100
T ′ 0 [ 4 ] = 01100010 ⊕ 01111101 = 00011111
而在以上方程8之后,通过下式给出最后表格T4’:
T ′ 4 [ 0 ] = a 0 ⊕ a 1 ⊕ a 2 ⊕ a 3 ⊕ T 5 [ 0 ]
= 01111101 ⊕ 10101011 ⊕ 10011010 ⊕ 11110110 ⊕ 01000000
= 11111010
T ′ 4 [ 1 ] = a 0 ⊕ a 1 ⊕ a 2 ⊕ a 3 ⊕ T 5 [ 1 ]
= 01111101 ⊕ 10101011 ⊕ 10011010 ⊕ 11110110 ⊕ 01001010
= 11110000
T ′ 4 [ 2 ] = a 0 ⊕ a 1 ⊕ a 2 ⊕ a 3 ⊕ T 5 [ 2 ]
= 01111101 ⊕ 10101011 ⊕ 10011010 ⊕ 11110110 ⊕ 01111110
= 11000100
T ′ 4 [ 3 ] = a 0 ⊕ a 1 ⊕ a 2 ⊕ a 3 ⊕ T 5 [ 3 ]
= 01111101 ⊕ 10101011 ⊕ 10011010 ⊕ 11110110 ⊕ 10110010
= 00001000
T ′ 4 [ 4 ] = a 0 ⊕ a 1 ⊕ a 2 ⊕ a 3 ⊕ T 5 [ 4 ]
= 01111101 ⊕ 10101011 ⊕ 10011010 ⊕ 11110110 ⊕ 01001010
= 11111000
    (方程10)
在图17中显示完整的一组表格T0’到T4’41-45。能够看出,当比较图15和图17中的表格时,根据方程3,涉及来自每个表格的一个字节的任何异或操作的结果对于任何一组表格产生相同的输出,尽管表格41-45中的所有各个字节不同于表格31-35中的字节。表格31-35中a0到a3的值和原始值并不立即从表格41-45可恢复。不改变查询表41-45的至少部分输出就不能够改变程序代码21。
图18显示合并的程序代码和表格41-45的字节51被映射到计算机存储器中的字节52的优选次序的示意图。箭头53指示程序代码的字节的映射操作。
包含在表格41-45中的程序代码21部分可以是检验被许可操作或对于处理执行实现限制的部分。可能的实例是程序代码中的时间检验例程从而根据项上的时间标记,密钥对于有限的时间是有效的。然后能够例如对出租的视频授予有限的时间周期的访问权,该视频通过密钥加密以及当利用视频和智能卡或其他解密密钥载体操作时在播放器中被解密。另一个实例可以是验证是否呼叫的号码被许可的电话机中的密钥。
应该明白,不必将程序代码包含在所有回合密钥和/或密码链的单个回合的所有表格中,因为密码链中的每个块基本上是不相关的。不是所有的查询表包含程序代码的比特时,本发明的目的仍然被实现,尽管在较低优选的程度。根据以上给出的原理,特定实施例将位于本发明的范围中,如果来自每个表格Ti’的输出的最后异或操作使得字节ai从操作中被删除,导致输出字节对于任何给定的输入字节都与使用初始表格Ti所得到的相同。
前面的特定实例针对在Lombok密码中本发明的实现。但是,通过适当的改变,本发明能够同样应用于可以在计算中使用类似表格的其他程序,而并不局限于涉及块密码操作的应用。例如,在其他数据处理应用中使用的表格可以使用由各种数量的比特构成的输出。除了2的幂,诸如在Lombok或AES的情况下25或27,根据本发明还可以使用诸如包括18比特输出的IDCT(逆离散余弦变换)的格式。
包括上述特征的可执行程序代码将防止篡改,原因在于对于形成查询表的程序代码部分的任何修改将必然地修改由查询表构成的函数。
在所述查询表是被部分评估密钥的情况下,用于执行加密或解密函数的程序的修改将会使得密钥无效。
因此被修改成统一的密钥和程序形式的程序代码能够提供能够给用户提供条件性访问的可执行程序或插件组件加密数据的基础。在图19中显示产生这种统一密钥的操作的示意图,以及在图20中显示这种密钥/程序的操作。在步骤62中将程序代码61编译成一系列比特。在步骤65中将用户密钥变换成一系列表格。在步骤63中合并这些两个输出以形成统一密钥66。取代用户密钥64,作为例如支付数据使用费用的结果,统一密钥66被提供给用户。
在图20中,程序和密钥都使用统一密钥66,合并密钥与加密的内容71以给用户产生解密的内容73。
由于通过如上所述的处理保护程序代码防止篡改,因此用户非常难以克服用户密钥提供的保护措施,因为程序代码61的任何修改将导致统一密钥66变得无效。
在总的方面,密钥和解密代码的部分评估导致不丢失密钥地解密内容的代码和数据。令人惊讶地,如果它是利用像Lombok或AES的解密算法的密钥的部分评估,然后评估的结果是遵循要求的原则并且所以能够被变换成统一的代码和数据(密钥)形式的数据和代码。
程序可以使用通过合并操作(通过
Figure A200780008551D00391
指示)链接的查询表(如在DES、Lombok和AES的情况中)编辑结果,像:
T 0 [ x 0 ] ⊕ · · · ⊕ T n [ x n ]
这里n是足够大的自然数以及运算符
Figure A200780008551D00396
和Ti的值的类型符合
∀ x , y : x ⊕ y = y ⊕ x
∀ x , y , z : ( x ⊕ y ) ⊕ z = x ⊕ ( y ⊕ z )
∀ x ∃ x - 1 : x ⊕ x - 1 = e
然后这些表格具有包含长度至多k的程序代码的能力,c0;...;ck,这里k<n,结果是修改代码的任何部分导致链接表(在加密或解密情况下它是密钥)的功能丢失。
应该明白,除异或操作之外,诸如加法、减法或乘法的其他合并操作(如果T中没有值是0)也符合上述的先决条件。
记号: T &CirclePlus; v : &ForAll; i &Element; dom ( T ) : T &CirclePlus; v [ i ] = T [ i ] &CirclePlus; v
令m在dom(T)中是固定的
然后
T 0 [ x 0 ] &CirclePlus; &CenterDot; &CenterDot; &CenterDot; &CirclePlus; T n [ x n ]
Figure A200780008551D00399
T &prime; 0 [ x 0 ] &CirclePlus; &CenterDot; &CenterDot; &CenterDot; &CirclePlus; T &prime; n - 1 [ x n - 1 ] &CirclePlus; T &prime; n [ x n ]
这里
&ForAll; i : 0 &le; i < n : T &prime; i [ x ] = T i &CirclePlus; ( T i [ m ] 1 &CirclePlus; c i ) [ x ]
T &prime; n [ x ] = T n &CirclePlus; ( ( T 0 [ m ] &CirclePlus; c 0 ) &CirclePlus; &CenterDot; &CenterDot; &CenterDot; &CirclePlus; ( T n - 1 [ m ] &CirclePlus; c n - 1 ) ) [ x ]
现在应该注意到程序总是c0;...;cn-1的序列。对于一定的m我们现在有
&ForAll; i : 0 &le; i < n : T i &CirclePlus; ( T i [ m ] - 1 &CirclePlus; c i ) [ m ] = c i
但是它们仍不是以相继的次序。通过创建新的
T″[(x·n)+i]≡T′i[xi]
我们发现值c0;...;cn-1以我们希望的次序被映射。
在程序中通过T”替换T能够就代码大小而言影响程序长度。但是在这种情况下它不会,因为计算Tj[xi](被计算为地址(T0)+j·大小(T)+xi)显示指令方法与T”[(xi·n)+i](被计算为地址(T”)+xi·n+i)没有任何不同。
应该明白以上仅仅是合并程序代码与表格的许多方式的其中一种。变型能够例如包含在每个表格的更多行上扩展代码,或对T’n使用不同的表格消除其他表格输出的结果。代码的模块还能够非连续地分布在密钥上。
为了避免疑问,应该明白术语在全文中所称的“表格”意图用于包含以任何适当的结构化形式的数据或代码的表示,无论是在计算机存储器中还是存储在诸如盘的可寻址的物理介质中,而不仅仅是当呈现时以诸如为了清楚起见在全文中示出的二维格式。
其他实施例意图位于附属权利要求书的范围内。
在以上的描述中,参考附图,描述了一种将程序代码包含在查询表中的方法,包括以下步骤:提供包括多个程序比特的程序代码21;提供第一多个查询表Ti 31-35,每个查询表用于将输入字节的一部分映射到输出字节;以及合并一个或更多查询表Ti的多个元素与一系列字节ai以产生第二多个查询表T’I 41-45,该系列字节被如此选择从而第二查询表的预定部分包含至少程序代码的一部分,因此来自第二多个查询表的输出字节的合并对于任何给定的输入字节与使用第一多个查询表获得的是相同的。
保护数据处理系统的完整性
在上文中,已经强调了在查询表的网络中包含代码。但是,使用相同的方法,有可能将任何预先定义的数据串包含在查询表的网络中。而且,查询表的网络仅仅是表示数据处理函数的一组参数的实例。代码或任何预先定义的数据串,可以被包含在所述组参数的比特表示中,特别是如果该组参数是足够冗余的。这意味着通过多个不同组参数的任何一组参数能够表示单个数据处理函数,所述组参数包括其比特表示包括数据串的至少一组参数。
图21图示保护数据处理系统完整性的方法的处理步骤。该数据处理系统包括例如软件应用程序或机顶盒或智能卡。所述数据处理系统执行的数据处理包括例如数据的加密、解密、或认证。该数据能够是任何类型的数据。例如,该数据包括音频或视频流。
如在方块902中图示,所述方法包括确定将被保护的数据串。该数据串例如是需要保护的任何数据的字符串或字节串表示。数据串包括例如在系统的软件中出现的处理器指令的序列。特别是在数字权利管理中涉及的处理器指令常常遭受篡改,并且是保护的适当对象。其他数据串包括例如系统的硬件标识符。这种硬件标识符包括例如硬盘标识符、网络接口的MAC地址、或CPU标识符。优选地,所述数据串包括硬件标识符本身和在检索硬件标识符中涉及的处理器指令。所述数据串可以例如包括在质询/响应协议中使用的数据。例如,通过系统发送质询消息到返回响应消息的服务器。质询消息和/或响应消息之一或二者可以包含在将被保护的数据串中。而且,可以确定多个数据串用于保护。例如,多个处理器代码段可以被包括独立的串中。而且,经由不同的数据串可以保护不同类型的数据。数据串的完整性应该是数据处理系统的完整性的指示。优选地,从系统中可获得的数据选择数据串。如果所述串被改变,系统本身也被改变。将被保护的数据串还可以从系统有关的信息,诸如硬件标识符或处理器指令或质询/响应协议中的消息中推导。
如在方块904中图示,所述方法包括计算表示预定的数据处理函数的一组参数。数据处理函数优选被完全地确定,即数据处理函数能够用于处理数据而不需要任何其他的信息。例如,数据处理函数是具有特定密钥的解密算法。具有另一个密钥的相同的解密算法将导致不同的数据处理函数。确定数据处理函数包括确定解密算法(例如DES或AES)和确定算法的密钥。可替换地,数据处理函数还提供处理数据的增强,诸如增强的对比度和增强的白平衡。所述组参数具有冗余。多个不同组参数用于表示相同的数据处理函数(例如:不同组参数能够用于表示相同的密钥)。这些不同组参数与系统相兼容,这意味着当系统被提供所述组参数的任何一组时,其被安排用于根据数据处理函数处理数据。当计算所述组参数时,根据系统的特性计算它们,从而当系统被提供该组参数时,其因此被安排用于根据数据处理函数处理数据,从而该组参数的比特表示包括将被保护的数据串。对于所述组参数包括查询表网络的至少一部分的情况,在以上已经描述了将数据串包含在所述组参数的比特表示中的若干方式。尽管查询表的网络非常适于用作一组参数,但是它不是唯一的可能性。能够以许多其他的方式引入冗余。例如,数据处理函数可以包含计算所述组参数的散列函数。具有散列函数的正确知识和控制,考虑到这种描述的本领域普通技术人员可能通过使用其中的冗余将要被保护的数据串包含在所述组参数中,而不改变散列函数结果并且所以不改变数据处理函数的结果。
如在方块906中图示,所述方法包括使得所述系统能够根据所述组参数处理数据。该步骤能够以许多不同的方式实现。该系统需要处理硬件和/或软件来输入数据,根据所述组参数处理数据,和输出数据。这已经参考图12进行说明。该方法还包含给系统提供对所述组参数的访问。在一个实例中,在系统中硬编码完整的所述组参数。例如,在存储器或存储介质中存储该参数。要被保护的数据串存储在存储介质中,并优选具有双重功能,例如相同的存储器位置用作存储一个或更多处理器指令的位置和用作存储所述组参数的一部分的位置,处理器指令的比特表示等于所述组参数的该部分的比特表示。如果要被保护的数据串包括硬件标识符,通常数据串不被永久地存储在存储器和存储介质中。而是,系统包括从硬件的特定片断获得标识符的代码。有利地代码的这个片断也是受保护的数据串。
在另一个实例中,从诸如广播介质或经由电话网络、因特网、或可移除存储介质的外部来源提供所述组参数的一部分。在某些情况下从外部来源,例如智能卡或服务器,经由质询/响应协议提供所述组参数的一部分。如上所述所述组参数的另一个部分被存储在系统中。在绝大多数实施例中,系统仅当它访问完整的所述组参数时才能够处理数据。在另一个实例中,从外部来源提供完整的该组参数。
图22图示本发明的实施例。该图显示用于保护第二系统922的完整性的第一系统920。第一系统包括确定以上述方式将被保护的数据串930的串确定器924。数据串的完整性形成第二系统完整性的指示。第一系统920包括用于使用该组参数中的冗余计算表示预定数据处理函数的一组参数932以将数据串包含在该组参数的比特表示中的参数确定器926。第一系统920还包括使得第二系统能够根据该组参数处理数据的装置928。在某些实施例中,装置928对于第二系统922的实现具有影响。在某些实施例中,装置928与第二系统922进行通信以给第二系统922提供使它能够执行所述处理的信息。例如,装置928发送或导致发送数据串930的至少一部分和/或所述组参数932的至少一部分。系统920能够以硬件和/或软件实现。
第二系统922是数据处理系统。它包括存储将被保护的数据串的存储器930。数据串的完整性形成数据处理系统的完整性的指示。第二系统922还包括存储表示预定数据处理函数的一组参数的存储器932。两个存储器930和932可以部分或全部地重叠。系统922可以从内部或外部来源拷贝数据串和/或所述组参数到存储器930和932中。使用所述组参数中的冗余,该数据串被包含在该组参数的比特表示中。第二系统还包括经由数据输入936根据所述组参数932处理数据,以经由数据输出938提供已处理数据的处理模块934。例如,输入936被连接到广播网络,以及输出938被连接到电视的视频输入。第二系统922能够以硬件和/或软件实现。
将会理解本发明还扩展到计算机程序,特别是位于载体上或载体中适于实现本发明的计算机程序。该程序可以是源代码、目标代码的形式、诸如部分编译形式的代码中间源和目标代码,或适于实现根据本发明所述方法的任何其他形式。所述载体可以是能够承载所述程序的任何实体或装置。例如,该载体可以包括诸如ROM,例如CD ROM或半导体ROM的存储介质,或例如软盘或硬盘的磁记录介质。进一步,所述载体可以是诸如电或光信号的可传输的载体,所述信号可以经由电缆或光缆或通过无线电或其他方式被传送。当程序在这种信号中被实施时,所述载体可以通过这种电缆或其他装置或方式构成。可替换地,所述载体可以是嵌入所述程序的集成电路,该集成电路被适配用于执行有关的方法或在有关方法的执行中使用。
应该注意到上述实施例图示而不是限制本发明,本领域的普通技术人员将会能够设计许多替换的实施例而不背离所附权利要求书的范围。在权利要求书中,放置在括号之间的任何附图标记不应该解释为限制本发明。使用动词“包括”及其变形并不排除除权利要求中所阐述单元或步骤之外的其他单元或步骤的存在。单元之前的冠词“一个”并不排除多个这些单元的存在。本发明可以通过包括若干分立元件的硬件,或通过适当编程的计算机实现。在装置权利要求中列举了若干的装置,这些装置的若干可以通过一个并且相同的硬件项实施。仅仅在相互不同的从属权利要求中阐述一定措施的事实并不表明这些措施的组合不能够被有利地使用。

Claims (21)

1.一种保护数据处理系统的完整性的方法,该方法包括:
-确定(902)要被保护的数据串,该数据串的完整性是数据处理系统的完整性的指示;
-计算(904)至少部分表示预定数据处理函数的一组参数,使用该组参数中的冗余将数据串并入到所述组参数的比特表示中;
-使得(906)系统能够根据数据处理函数使用所述组参数处理数据,其中在所述组参数的比特表示中数据串的改变使得系统失去根据数据处理函数处理数据的能力。
2.根据权利要求1所述的方法,其中所述组参数表示包括密钥的至少部分密码算法。
3.根据权利要求1所述的方法,其中所述组参数表示查询表的网络。
4.根据权利要求3所述的方法,其中所述查询表的网络包括数据处理算法的白盒子实现的多个查询表。
5.根据权利要求4所述的方法,其中所述数据处理算法包括密码算法。
6.根据权利要求1所述的方法,还包括
-给所述系统提供所述组参数,要被保护的数据串除外;和
-使得该系统能够从系统的执行环境获得所述数据串。
7.根据权利要求1所述的方法,还包括
-给所述系统提供所述组参数,除要被保护的数据串之外;和
-使得该系统能够通过质询/响应协议获得数据串。
8.根据权利要求1所述的方法,还包括
-使得所述系统能够从成为该系统一部分的计算机可执行的代码推导所述数据串。
9.根据权利要求8所述的方法,其中所述计算机可执行代码包括一组指令的至少一部分,该指令用于确立系统的可靠性或用于实施许可控制。
10.根据权利要求1所述的方法,其中所述要被保护的数据串包括至少以下之一的表示:
-硬件标识符,
-要被处理的内容的一部分,
-计算机可执行代码,
-处理器指令,
-口令,或
-系统被安排用于通过质询/响应协议获得的响应。
11.根据权利要求1所述的方法,其中所述组参数包括多个查询表以及选择该组参数的步骤包括
提供第一多个查询表Ti(31-35),每个查询表用于将输入字节的一部分映射到输出字节;和
组合一个或更多查询表Ti的多个元素和一系列字节ai以产生第二多个查询表T’i(41-45),所述系列字节被如此选择从而使得第二查询表的预定部分包含要被保护的数据串,以及使得来自第二多个查询表的每个表格的输出字节的组合对于任何给定的输入字节与使用第一多个查询表获得的是相同的。
12.根据权利要求11所述的方法,
-还包括提供包括多个程序比特的程序代码;和
-其中要被保护的数据串是所述程序代码的至少一部分。
13.根据权利要求1所述的方法,其中计算所述组参数的步骤包括
-计算(604)表示密钥的查询表的网络;
-选择(606)要被保护的数据串的至少一个字用于包括在至少一个查询表中;
-通过应用变换(608)到查询表的元素在至少一个查询表中包括所述字;
-通过应用反转所述变换(608)的效果的补偿变换(610)来补偿所述变换;以及
-使用变换的查询表的网络作为参数。
14.根据权利要求13所述的方法,其中要被保护的数据串是计算机可执行代码的比特表示。
15.根据权利要求13所述的方法,还包括
-安排查询表网络中的第一查询表例如f(t1(x))的输出编码例如f和查询表网络中的第二查询表例如t2(f1(x))的输入解码例如f1,该输入解码反转输出编码的效果例如t2(f1(f(t1(x))))=t2(t1(x)),从而所选择的字被包括在以下至少之一中:第一查询表例如f(t1(x))和第二查询表例如t2(f-1(x))。
16.根据权利要求15所述的方法,其中所选择的字被包括在第一查询表例如f(t1(h-1(x)))中,该方法还包括
-安排查询表网络中的第三查询表例如h(t3(x))的输出编码例如h以及第一查询表例如f(t1(h-1(x)))的输入解码例如h-1,第一查询表的输入解码反转第三查询表的输出编码的效果,例如f(t1(h-1(h(t3(x)))))=f(t1(t3(x))),以用于在所述第一查询表中定位所述选择的字。
17.根据权利要求3所述的方法,还包括使得所述系统能够:
-应用网络的第一组查询表到数字数据的比特串以获得第一组中间结果;
-应用网络的第二组查询表到数字数据的比特串以获得第二组中间结果,第二组查询表的比特表示包括要被保护的数据串;
-组合第一和第二中间结果以获得第三中间结果;和
-根据第三中间结果计算处理的数字数据。
18.用于保护第二系统(922)的完整性的第一系统(920),第一系统包括
-用于确定要被保护的数据串(930)的串确定器(924),数据串的完整性是第二系统的完整性的指示;
-计算至少部分表示预定的数据处理函数的一组参数(932),使用该组参数中的冗余将数据串并入该组参数的比特表示中的参数确定器(926);和
-使得第二系统能够根据所述组参数处理数据的装置(928),其中改变所述组参数的比特表示中的数据串使得所述系统失去其根据数据处理函数处理数据的能力。
19.一种计算机程序产品,包括使得处理器执行根据权利要求1所述方法的指令。
20.一种数据处理系统(922),包括
-用于存储要被保护数据串的存储器(930),数据串的完整性是数据处理系统的完整性的指示;
-用于存储至少部分表示预定的数据处理函数的一组参数的存储器(932),使用该组参数中的冗余,所述数据串被并入该组参数的比特表示中;以及
-根据所述组参数处理数据(936)的处理模块(934),其中改变该组参数的比特表示中的数据串使得所述系统失去其根据数据处理函数处理数据的能力。
21.一种计算机程序产品,其包括使得处理器根据至少部分表示数据处理函数的一组参数处理数据的指令,要被保护的数据串的完整性是计算机程序产品的完整性的指示,使用所述组参数中的冗余,所述数据串被并入该组参数的比特表示中,其中改变该组参数的比特表示中的数据串使得所述系统失去其根据数据处理函数处理数据的能力。
CN2007800085510A 2006-03-10 2007-02-28 用于使密码函数模糊的方法和系统 Expired - Fee Related CN101401348B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
EP06110974 2006-03-10
EP06110974.0 2006-03-10
EP06116693 2006-07-06
EP06116693.0 2006-07-06
EP06117036 2006-07-12
EP06117036.1 2006-07-12
EP07102674 2007-02-20
EP07102674.4 2007-02-20
PCT/IB2007/050640 WO2007105126A2 (en) 2006-03-10 2007-02-28 Method and system for obfuscating a cryptographic function

Publications (2)

Publication Number Publication Date
CN101401348A true CN101401348A (zh) 2009-04-01
CN101401348B CN101401348B (zh) 2011-08-31

Family

ID=38179640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800085510A Expired - Fee Related CN101401348B (zh) 2006-03-10 2007-02-28 用于使密码函数模糊的方法和系统

Country Status (5)

Country Link
US (1) US8479016B2 (zh)
EP (1) EP1997265B1 (zh)
JP (1) JP5249053B2 (zh)
CN (1) CN101401348B (zh)
WO (1) WO2007105126A2 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102484581A (zh) * 2009-06-19 2012-05-30 耶德托公司 使用中间数据更改的具有可配置密钥的白盒密码系统
US8634553B2 (en) 2007-11-05 2014-01-21 Sumitomo Electric Industries, Ltd. Encryption key generation device
CN105281893A (zh) * 2014-06-24 2016-01-27 恩智浦有限公司 用于引入白箱实现对串集合的依赖性的方法
CN105359450A (zh) * 2013-03-27 2016-02-24 爱迪德技术有限公司 防篡改密码算法实现
CN106464484A (zh) * 2014-03-31 2017-02-22 爱迪德技术有限公司 预定函数的混淆执行
CN108064381A (zh) * 2015-03-30 2018-05-22 爱迪德技术有限公司 数据保护
CN108352981A (zh) * 2015-11-09 2018-07-31 皇家飞利浦有限公司 被布置用于计算目标块加密的密码设备
CN109478995A (zh) * 2016-07-12 2019-03-15 捷德移动安全有限责任公司 白盒加密算法实现

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2044724B1 (en) * 2006-07-12 2015-04-29 Irdeto B.V. Tamper resistance of a digital data processing unit
JP5113169B2 (ja) 2006-07-12 2013-01-09 イルデト・コーポレート・ビー・ヴイ 暗号関数を難読化する方法およびシステム
JP5485694B2 (ja) * 2006-11-17 2014-05-07 イルデト・コーポレート・ビー・ヴイ ホワイトボックス実施のための暗号化方法
WO2008142633A1 (en) * 2007-05-22 2008-11-27 Koninklijke Philips Electronics N.V. Data security
KR101545631B1 (ko) 2007-09-13 2015-08-26 이르데토 비.브이. 콘텐트의 암호화 프로세싱
WO2009095838A1 (en) * 2008-01-31 2009-08-06 Koninklijke Philips Electronics N.V. Securing a smart card
KR101639587B1 (ko) 2008-03-05 2016-07-14 이르데토 비.브이. 암호 시스템
JP5599728B2 (ja) 2008-03-05 2014-10-01 イルデト・コーポレート・ビー・ヴイ ホワイトボックス実装
KR20110014630A (ko) * 2008-05-07 2011-02-11 이르데토 비.브이. 지수 불명료화
US8171306B2 (en) * 2008-11-05 2012-05-01 Microsoft Corporation Universal secure token for obfuscation and tamper resistance
US9654280B2 (en) * 2009-03-10 2017-05-16 Irdeto B.V. White-box cryptographic system with input dependent encodings
US8812959B2 (en) * 2009-06-30 2014-08-19 International Business Machines Corporation Method and system for delivering digital content
US9274976B2 (en) * 2010-11-05 2016-03-01 Apple Inc. Code tampering protection for insecure environments
WO2012167231A1 (en) * 2011-06-03 2012-12-06 Exelis Inc. Method and system for a programmable parallel computation and data manipulation accelerator
US8605894B2 (en) * 2011-07-14 2013-12-10 Apple Inc. Cryptographic process execution protecting an input value against attacks
US9111072B1 (en) 2011-08-23 2015-08-18 Tectonic Labs, LLC Anti-reverse engineering unified process
US9189425B2 (en) * 2011-09-01 2015-11-17 Apple Inc. Protecting look up tables by mixing code and operations
FR2995111B1 (fr) * 2012-09-04 2015-07-24 Morpho Protection contre canaux auxiliaires
US10103876B2 (en) * 2012-10-17 2018-10-16 Synopsys, Inc. System and method for multichannel cryptographic processing
US10180824B2 (en) 2012-12-21 2019-01-15 Koninklijke Philips N.V. Computing device comprising a table network
MX343892B (es) * 2012-12-21 2016-11-28 Koninklijke Philips Nv Dispositivo de computo configurado con una red de tablas.
US9454653B1 (en) * 2014-05-14 2016-09-27 Brian Penny Technologies for enhancing computer security
WO2015082212A1 (en) * 2013-12-05 2015-06-11 Koninklijke Philips N.V. A computing device for iterative application of table networks
KR20150123476A (ko) * 2014-04-25 2015-11-04 한국전자통신연구원 부채널 공격 방지를 위한 대칭키 암호 알고리즘의 함수 마스킹 장치 및 그 방법
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
US9485226B2 (en) 2014-04-28 2016-11-01 Nxp B.V. Method for including an implicit integrity or authenticity check into a white-box implementation
EP2940925B1 (en) * 2014-04-28 2017-12-27 Nxp B.V. Implementing use-dependent security settings in a single white-box implementation
US9380033B2 (en) 2014-04-28 2016-06-28 Nxp B.V. Implementing use-dependent security settings in a single white-box implementation
EP2940677A1 (en) 2014-04-28 2015-11-04 Nxp B.V. Method for including an implicit integrity or authenticity check into a white-box implementation
US9338145B2 (en) * 2014-04-28 2016-05-10 Nxp B.V. Security patch without changing the key
EP2960891B1 (en) 2014-06-24 2019-01-16 Nxp B.V. Method for introducing dependence of white-box implementationon a set of strings
DE102014016548A1 (de) 2014-11-10 2016-05-12 Giesecke & Devrient Gmbh Verfahren zum Testen und zum Härten von Softwareapplikationen
BR112017013588A2 (pt) * 2014-12-24 2018-03-06 Koninklijke Philips Nv sistema para processamento criptográfico, dois sistemas, unidade de etapa para processamento criptográfico, método de processamento criptográfico, e produto de programa de computador
US10922292B2 (en) 2015-03-25 2021-02-16 WebCloak, LLC Metamorphic storage of passcodes
US10505709B2 (en) * 2015-06-01 2019-12-10 Nxp B.V. White-box cryptography interleaved lookup tables
US9916472B2 (en) 2015-07-22 2018-03-13 International Business Machines Corporation Obfuscation and protection of data rights
JP6292195B2 (ja) * 2015-08-24 2018-03-14 富士電機株式会社 情報処理装置及び情報処理方法
DE102015014038A1 (de) * 2015-10-30 2017-05-04 Giesecke & Devrient Gmbh Alternative Darstellung des Krypto-Algorithmus DES
GB201519612D0 (en) * 2015-11-06 2015-12-23 Nagravision Sa Key sequence generation for cryptographic operations
US10432596B2 (en) * 2016-02-09 2019-10-01 Kåre L. Andersson Systems and methods for cryptography having asymmetric to symmetric key agreement
KR101933649B1 (ko) * 2016-05-27 2018-12-28 삼성에스디에스 주식회사 화이트박스 암호 알고리즘을 이용한 공개키 암호화를 위한 장치 및 방법
US10389517B2 (en) 2016-06-27 2019-08-20 Nxp B.V. Using secure key storage to bind a white-box implementation to one platform
JP6876423B2 (ja) * 2016-12-14 2021-05-26 Kddi株式会社 ストリーム暗号における内部状態の初期化装置、方法及びプログラム
US11218291B2 (en) * 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
FR3078464A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et circuit de mise en oeuvre d'une table de substitution
FR3078463A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et dispositif de realisation d'operations en table de substitution
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
FR3103591A1 (fr) * 2019-11-22 2021-05-28 Orange Procédé sécurisé d’échange de données entre un terminal et un serveur
CN111555862B (zh) * 2020-05-13 2023-04-28 华南师范大学 基于掩码保护的随机冗余轮函数的白盒aes实现方法
US12099622B2 (en) * 2020-12-21 2024-09-24 Cryptography Research, Inc Protection of neural networks by obfuscation of activation functions

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1038370B1 (en) 1998-06-25 2006-09-06 Koninklijke Philips Electronics N.V. Synchronous stream cipher
FR2792141B1 (fr) 1999-04-09 2001-06-15 Bull Cp8 Procede de securisation d'un ou plusieurs ensembles electroniques mettant en oeuvre un meme algorithme cryptographique avec cle secrete, une utilisation du procede et l'ensemble electronique
JP3917357B2 (ja) * 2000-10-10 2007-05-23 三菱電機株式会社 非線形変換方法及びプログラムを記録したコンピュータ読み取り可能な記録媒体及び非線形変換装置
CA2327911A1 (en) 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
US7142675B2 (en) * 2002-02-12 2006-11-28 City University Of Hong Kong Sequence generator and method of generating a pseudo random sequence
FR2856539A1 (fr) * 2003-06-17 2004-12-24 France Telecom Procede et systeme tracables de chiffrement et/ou de dechiffrement d'informations, et supports d'enregistrement pour la mise en oeuvre du procede
CN1245695C (zh) * 2003-09-15 2006-03-15 苏盛辉 一种基于杠杆函数和超递增序列的公钥加密方法
US7363620B2 (en) 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
CN1890914B (zh) * 2003-12-11 2011-07-27 耶德托公司 块加密系统、利用置换隐藏各加密轮的核心加密函数
US20060002548A1 (en) * 2004-06-04 2006-01-05 Chu Hon F Method and system for implementing substitution boxes (S-boxes) for advanced encryption standard (AES)
US7715555B2 (en) * 2004-09-07 2010-05-11 Broadcom Corporation Method and system for extending advanced encryption standard (AES) operations for enhanced security
EP1646174A1 (en) * 2004-10-07 2006-04-12 Axalto SA Method and apparatus for generating cryptographic sets of instructions automatically and code generation
KR101226167B1 (ko) 2004-10-28 2013-01-24 이르데토 코포레이트 비.브이. 암호 함수 모호화 방법 및 시스템
JP2007298847A (ja) * 2006-05-02 2007-11-15 Kddi Corp プログラム内データの保護装置、保護方法およびプログラム

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8634553B2 (en) 2007-11-05 2014-01-21 Sumitomo Electric Industries, Ltd. Encryption key generation device
CN102484581B (zh) * 2009-06-19 2015-07-01 耶德托公司 使用中间数据更改的具有可配置密钥的白盒密码系统
CN102484581A (zh) * 2009-06-19 2012-05-30 耶德托公司 使用中间数据更改的具有可配置密钥的白盒密码系统
CN105359450A (zh) * 2013-03-27 2016-02-24 爱迪德技术有限公司 防篡改密码算法实现
US10127390B2 (en) 2013-03-27 2018-11-13 Irdeto B.V. Tamper resistant cryptographic algorithm implementation
CN105359450B (zh) * 2013-03-27 2020-08-07 爱迪德技术有限公司 防篡改密码算法实现
CN106464484B (zh) * 2014-03-31 2019-08-09 爱迪德技术有限公司 预定函数的混淆执行
CN106464484A (zh) * 2014-03-31 2017-02-22 爱迪德技术有限公司 预定函数的混淆执行
US10944545B2 (en) 2014-03-31 2021-03-09 Irdeto B.V. Obfuscated performance of a predetermined function
CN105281893A (zh) * 2014-06-24 2016-01-27 恩智浦有限公司 用于引入白箱实现对串集合的依赖性的方法
CN105281893B (zh) * 2014-06-24 2019-06-04 恩智浦有限公司 用于引入白箱实现对串集合的依赖性的方法
CN108064381A (zh) * 2015-03-30 2018-05-22 爱迪德技术有限公司 数据保护
CN108352981A (zh) * 2015-11-09 2018-07-31 皇家飞利浦有限公司 被布置用于计算目标块加密的密码设备
CN109478995A (zh) * 2016-07-12 2019-03-15 捷德移动安全有限责任公司 白盒加密算法实现

Also Published As

Publication number Publication date
CN101401348B (zh) 2011-08-31
US20090158051A1 (en) 2009-06-18
US8479016B2 (en) 2013-07-02
EP1997265B1 (en) 2020-08-05
WO2007105126A3 (en) 2007-11-15
EP1997265A2 (en) 2008-12-03
WO2007105126A2 (en) 2007-09-20
JP2009529819A (ja) 2009-08-20
JP5249053B2 (ja) 2013-07-31

Similar Documents

Publication Publication Date Title
CN101401348B (zh) 用于使密码函数模糊的方法和系统
CN101536398B (zh) 用于白盒实现的加密方法
CN102461058B (zh) 具有输入相关编码的白盒密码系统
CN101491001B (zh) 数字数据处理单元的防篡改系统和方法
US8306216B2 (en) Method and system for tracking or identifying copy of implementation of computational method, and computation system
CN101491000B (zh) 用于混淆密码函数的方法和系统
US8625794B2 (en) White-box cryptographic system with configurable key using intermediate data modification
CN101048969B (zh) 用于扰乱密码函数的方法和系统
CN101790865A (zh) 更新密码密钥数据
EP1712032B1 (en) Block ciphering system, using permutations to hide the core ciphering function of each encryption round
CN107273724A (zh) 为白盒实施方案的输入和输出加水印
WO2010146140A1 (en) White-box cryptographic system with configurable key using block selection
CN100561396C (zh) 修改数字权限对象的方法及其所用的电子设备
Alhamalawy et al. A Comprehensive Survey on Digital Rights Management Systems (DRM) and Advanced Encryption Techniques
JP2004086917A (ja) 情報処理装置、耐タンパ処理装置
JP2004078976A (ja) 情報処理装置、耐タンパ処理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: YEDETO CO., LTD.

Owner name: YEDETO CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20100402

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: EINDHOVEN, NETHERLANDS TO: HOOFDDORP, NETHERLAND

TA01 Transfer of patent application right

Effective date of registration: 20100402

Effective date of registration: 20100402

Address after: Holland Hoofddorp

Applicant after: IRDETO B.V.

Co-applicant after: IRDETO B.V.

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: IRDETO BV

Free format text: FORMER NAME: IRDETO B.V.

CP01 Change in the name or title of a patent holder

Address after: Holland Hoofddorp

Patentee after: IRDETO CORPORATE B.V.

Address before: Holland Hoofddorp

Patentee before: Irdeto B.V.

ASS Succession or assignment of patent right

Owner name: IRDETO B.V.

Free format text: FORMER OWNER: IRDETO BV

Effective date: 20150108

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150108

Address after: Holland Hoofddorp

Patentee after: IRDETO B.V.

Address before: Holland Hoofddorp

Patentee before: IRDETO CORPORATE B.V.

C56 Change in the name or address of the patentee

Owner name: IRDETO B. V.

Free format text: FORMER NAME: IRDETO B.V.

CP01 Change in the name or title of a patent holder

Address after: Holland Hoofddorp

Patentee after: IRDETO B.V.

Address before: Holland Hoofddorp

Patentee before: Irdeto B.V.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110831

CF01 Termination of patent right due to non-payment of annual fee