CN101536398A - 用于白盒实现的加密方法 - Google Patents

用于白盒实现的加密方法 Download PDF

Info

Publication number
CN101536398A
CN101536398A CN200780042694.3A CN200780042694A CN101536398A CN 101536398 A CN101536398 A CN 101536398A CN 200780042694 A CN200780042694 A CN 200780042694A CN 101536398 A CN101536398 A CN 101536398A
Authority
CN
China
Prior art keywords
output
key
operator
input
diffusion
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
CN200780042694.3A
Other languages
English (en)
Other versions
CN101536398B (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.)
Ai Dide Technology Co., Ltd.
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 CN101536398A publication Critical patent/CN101536398A/zh
Application granted granted Critical
Publication of CN101536398B publication Critical patent/CN101536398B/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/002Countermeasures against attacks on cryptographic mechanisms
    • 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
    • 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

Abstract

一种在白盒实现中实现的加密方法。该方法包括应用多个变换(802),每个变换用输出字代替输入字,该方法还包括对多个输出字的串联应用扩散算子(804)以便在输出字之间扩散由输出字表示的信息。加密方法的密钥(806)包括表示扩散算子的信息。该扩散算子满足性质:在扩散算子的输入中的一个比特的变化对应于在扩散算子的输出中的多于一个比特的变化。

Description

用于白盒实现的加密方法
技术领域
本发明涉及在白盒实现(white-box implementation)中实现的加密方法。
背景技术
因特网为用户提供了方便的、无处不在的对数字内容的接入(access)。因特网作为受版权保护内容的发行媒介的使用引起了保护内容提供者的利益的引人注目的难题。特别地要求保证内容提供者的版权和商业模式。逐渐地,使用装载有合适软件的处理器来运算消费电子(consumerelectronics,CE)平台。这样的软件可包括用于再现(重放)诸如音频和/或视频这样的电子内容的功能的主要部分。控制重放软件,包括内容可被使用的限期(terms)和条件,是增强内容所有者利益的一种方式。在传统上许多CE平台(除了PC和PDA以外)曾不公开(closed)的场合,越来越多的平台如今至少部分地是开放的。特别是PC平台,可认为一些用户具有对硬件和软件的完全控制,这提供了对内容的接入以及攻击和回避任何内容保护机制的大量时间和资源。结果,内容提供者必须越过连接其中并非所有用户或设备都可靠的社区的不利网络向合法用户传送内容。
典型地,数字版权管理系统使用基于块密码的加密技术,该技术使用被称为轮(round)的一系列加密/解密步骤以块的方式处理数据流。在每一轮期间,执行轮特定函数(round-specific function)。轮特定函数可基于在特定轮的子密钥控制下被执行的相同轮函数。对于许多加密系统,可使用映射表或查找表来指定轮函数。即使不使用明确的表,也要频繁地将表用于函数的不同部分,该函数用于在加密/解密函数的软件中有效执行。计算机代码访问表值或将表值组合为函数的范围值。替代发布可能是用户特定的密钥,发布用户特定的算法而不发布用于加密或解密算法的密钥变得更引人注目。为了防止重新设计或禁止类似密钥的元素的重新计算,这些算法(最常用的是函数(映射))必须是令人迷惑的(隐藏的)。在计算机上,具有某些计算机代码的表常常代表了这些函数。
内容提供者必须通过连接并非所有用户或设备都可靠的区域的不利网络向合法用户传送内容。特别是PC平台,必须认为一些用户具有对硬件和软件的完全控制,这提供了对内容的接入以及攻击和回避任何内容保护机制无限量的时间和资源。增强内容可被使用的期限和条件的软件代码必须不被篡改。在数字版权管理中用于向PC发布受保护内容的一般方法是加密该数字内容,例如DES(数据加密标准,Data Encryption Standard)、AES(高级加密标准,Advanced Encryption Standard)或使用在WO9967918中公开的方法,和使用解密密钥。
关于密钥处理,为了重放,媒体播放器必须从证书(license)数据库获得解密密钥。然后它必须将该解密密钥存储在存储器中用于加密内容的解密。这给了攻击者两种攻击密钥的选择。首先,证书数据库访问功能的相反设计可导致黑盒软件(即攻击者不必理解软件功能的内部工作方式),使得攻击者可从所有证书数据库获得资产密钥(asset key)。第二,通过在内容解密期间对存储器访问的观察,获取资产密钥是可能的。在两种情况下认为密钥被泄漏。
“White-Box Cryptography and AES Implementation”(作者:StanleyChow、Philip Eisen、Harold Johnson和Paul C.Van Oorschot,in SelectedAreas in Cryptography:9th Annual International Workshop,SAC 2002,St.John’s,Newfoundland,Canada,August 15-16,2002),在下文中称为“Chow1”,和“A White-Box DES Implementation for DRM Applications”(作者:Stanley Chow、Phil Eisen、Harold Johnson和Paul C.van Oorschot,DigitalRights Management:ACM CCS-9 Workshop,DRM 2002,Washington,DC,USA,November 18,2002),在下文中称为“Chow 2”,公开了一些方法,该方法想通过编码密钥表和扩展加密边界的结合来隐藏密钥,其中,使用表示合成而不是单一步骤的随机双射(bijection)来编码密钥表,通过将密钥边界拉出再推入包含应用来扩展加密边界。
“Cryptanalysis of a White Box AES Implementation”(Olivier Billet,Henri Gilbert,and Charaf Ech-Chatbi,SAC 2004,LNCS 3357,pp.227-240,2005),以下被称为“Billet”,描述了对难于理解的AES实现的攻击,该难于理解的AES实现在SAC 2002被提议为保护在白盒背景中运行的AES软件免于密钥泄漏的方法。该论文解释了如何以可以忽略的内存和最差时间复杂度230来提取嵌入在这样的白盒AES实现中的整个AES秘密密钥。
发明内容
具有改进的加密方法将是有利的。为了更好的解决这个问题,在本发明的第一个方面,展示了一种在白盒实现中实现的加密方法,其包括
应用多个变换,每个变换用输出字代替输入字;和
对多个输出字的串联(concatenation)应用扩散算子,以在输出字间扩散由输出字表示的信息;其中加密方法的密钥包括表示扩散算子的信息。
白盒实现可包括查找表的网络,通过编码查找表的输入和输出来扰乱(obfuscate)查找表。发明者意识到扩散算子使加密方法的白盒实现相对地易受攻击。减少该弱点的一个方法是使攻击者更难找出在白盒实现中使用的是哪个扩散算子。通过将扩散算子合并到加密方法的密钥中使扩散算子成为该方法的变量确保了攻击者不会先验地知道使用了哪个扩散算子。这样攻击者需要发现更多的信息来实现成功的攻击。特别地,由于采取了这种防范,一些已公开的对白盒实现的攻击变得复杂。
扩散算子不遵守字边界。这意味着它向更大部分的数据传播误码。作为加密方法一部分的其他运算,例如S盒(S-boxes),将字值映射为不同的字值。在此,字具有有限数目的比特,例如字可以是4比特的半字节、8比特的字节或16比特的字。在字中的比特数可由在这样的S盒中使用的字长来确定。扩散算子具有比一个字大的输出,例如两个或四个字。如果加密方法是块密码,通常地扩散算子的输出字不大于块密码的一个数据块。在AES的例子中,S盒在8比特的字上运算,而扩散算子在32比特值即包括了4个8比特字的值上运算。AES的块大小为128比特,它大于扩散算子的输出大小。表示扩散算子的信息包括足够的信息来唯一地识别想要的扩散算子,例如该信息可包括矩阵算子的元素,或可包括需要在白盒实现中使用的许多查找表,以与可应用的输入和输出编码结合来实现扩散算子。
在一个实施例中,扩散算子满足以下性质:扩散算子的输入中一个比特的改变对应该扩散算子的输出中多于一个比特的改变。
扩散算子的目的是向数据块的其他比特传播单个比特中解密错误的影响,以使整个数据块不能使用。这也使得找到嵌入在白盒实现中的加密密钥更困难。实现该性质的最少(minimum)步骤是确保误码被传播至不止一个比特。找到满足该性质的算子的方法在现有技术中是已知的。理想地,如果使用的是线性扩散算子,它是可分离的最大距离。通过扩散算子,在一个输出字中至少一个比特的改变应当导致至少两个输出字的改变(该至少两个输出字的每一个具有至少一个改变的比特)。
在一个实施例中,扩散算子是非线性算子。
非线性扩散算子使得攻击更困难。
在一个实施例中,
扩散算子的输入由S盒的k个输出的序列给出,每个S盒的输出是n比特值,其中k和n是预定的正整数值,
扩散算子的输出表示白盒实现的非线性输出编码的l个输入的序列,每个输出编码的输入为m比特值,其中l和m是预定的正整数值,以及
扩散算子是具有可划分为l行k个m×n元素子矩阵的可逆矩阵表现形式的线性算子,每一行满足以下性质:由形成该行的子矩阵的第一子集的串联形成的矩阵和由形成该行的子矩阵的第二子集的串联形成的矩阵不都具有秩m,第一子集和第二子集是分离的。
使用在该实施例中使用的这种类型的线性算子的加密方法相对地难于破坏。
在一个实施例中,密钥包括可逆矩阵的表现形式。
该表现形式是表示线性扩散算子的有效方式。
在一个实施例中,加密方法包括Rijndael方法,其中混合列算子被扩散算子代替。在另一个实施例中,加密方法基于Feistel方法。
一个实施例包括
用于接收密钥的输入端,密钥包括表示扩散算子的信息;和
加密方法的白盒实现,该加密方法包括应用多个变换,每个变换用输出字代替输入字;以及对多个输出字的串联应用扩散算子,以便在输出字间扩散由输出字表示的信息。
在一个实施例中,密钥包括一个或多个表示用输入和输出编码扰乱的扩散算子的查找表。
一个实施例包括
包括用于接收密钥的输入端的客户机,该密钥包括表示扩散算子的信息;该客户机进一步包括加密方法的白盒实现,该加密方法包括应用多个变换,每个变换用输出字代替输入字,该加密方法还包括多个输出字的串联应用由在密钥中的信息表示的扩散算子,以便在输出字间扩散由输出字表示的信息;
服务器,用于根据密钥应用与客户机中实现的加密方法相应的加密方法;和
用于生成密钥的装置。
附图说明
将参考附图进一步阐明和描述本发明的这些和其他方面,其中
图1是图示AES的轮中的运算的示意图;
图2是图示扰乱表的例子的示意图;
图3是图示在白盒AES实现中的列的轮的示意图;
图4是图示合并在类型Ia表中的映射的示意图;
图5是图示合并在类型II表中的映射的示意图;
图6是图示合并在类型III表中的映射的示意图;
图7是图示合并在类型IV表中的映射的示意图;
图8是图示合并在类型Ib表中的映射的示意图;
图9是图示处理步骤的流程图;
图10是图示更多处理步骤的流程图;
图11是图示一个实施例的示意图;和
图12是图示一个实施例的示意图。
具体实施方式
AES是块大小为128比特或16字节的块密码。明文被划分为形成编码算法的初始状态的16字节的块,该编码算法的最终状态是密文。为了概念地解释AES,状态比特被组织为4×4字节的矩阵。AES由多个轮组成。每个轮由在状态矩阵的字节、行或列上运算的相似处理步骤组成,每个轮在这些处理过程中使用不同的轮密钥。
图1图示了AES轮的一些主要处理步骤。这些处理步骤包括:
-加上轮密钥(AddRoundKey)2——该状态的每个字节与轮密钥的字节异或(XOR)。
-替换字节(SubBytes)4——使用查找表的逐字节置换。
-移动行(ShiftRows)6——状态的每一行被循环固定数目的比特。
-混合列(MixColumns)8——使用GF(28)的模乘处理每一列。
步骤替换字节4、移动行6和混合列8独立于使用的特定密钥。在步骤加上轮密钥2中应用该密钥。除了步骤移动行6外,处理步骤可以在不知道其他列的情况下在4×4状态矩阵的每一列上进行。因此,由于每一列由4个8比特值组成,它们可以被认为是32比特的运算。虚线10表示重复该过程直到执行了需要数目的轮。
这些步骤中的每一个或步骤的结合可由查找表或由查找表网络(S盒)表示。用查找表网络来代替AES的完整轮也是可能的。例如,加上轮密钥步骤可通过简单地与轮密钥异或来实现,而替换字节、移行和混合列步骤可使用表查找来实现。然而,这意味着对于白盒攻击背景中的攻击者来说密钥仍然是可见的。加上轮密钥步骤也可以被嵌入在查找表中,这使得找到密钥不那么显而易见。
图2图示了使提取密钥更困难的方法。X和Y是两个函数。考虑运算
Figure A200780042694D0009154419QIETU
,如图2中的图12所示,其中c是输入值,例如4字节状态列。然而,该方法应用于任何类型的输入值c。映射X和Y可被实现为存储在存储器中的查找表,然而,当它们被存储在存储器中时这些值可被攻击者读取。图14图示了如何通过使用输入编码F和输出编码H扰乱查找表的内容。对应于
Figure A200780042694D0009154445QIETU
Figure A200780042694D0009154457QIETU
的查找表如图所示被存储代替X和Y,使得提取X和Y更困难。图16显示了如何增加附加的例如随机双射函数G,使得这两个表的中间结果也被编码。在这种情况下,两个表被存储在存储器中:
Figure A200780042694D0009154518QIETU
Figure A200780042694D0009154531QIETU
。这在图表18中再次被解释:
其中。通常表示函数合成(即对于任何两个函数f(x)和g(x),定义
Figure A200780042694D0009154615QIETU
,X和Y是适合借助于查找表实现的函数。同样地由多于两个函数构成的网络可以被编码。编码X和Y的真实表由在单个查找表中结合
Figure A200780042694D0009154632QIETU
和在单个查找表中结合
Figure A200780042694D0009154645QIETU
来扰乱。只要F、G和/或H保持未知,攻击者就不能从查找表中提取作为X和/或Y的基础的信息,因此攻击者不能提取基于X和/或Y的密钥。其他加密算法,包括DES和Rijndael(AES是它的一个特例),也可被编码为以上述类似方法扰乱的查找表(的级联(cascade)或网络)。这也适用于基于例如代替置换(substitution-permutation)网络或Feistel网络的密码。本发明不限于所述示例加密算法。
Chow 1公开了一种想通过用表示合成而不是单独的步骤的随机双射编码密钥表来隐藏密钥的方法。防止密钥提取具有的优点是,防止攻击者提取将允许软件保护目标在其他机器上被回避的密码资料(keyingmaterial),或防止攻击者发布有效创建“全面破解(global crack)”的密钥资料,“全面破解”击溃被安装的软件的大的用户-基础上的安全措施。它通过约束纯软件解决方案和恶意主机实体(hostile-host reality)提高了保护的程度。在Chow 1的方法中,通过下列手段隐藏密钥(1)使用用于合成而不是单独的步骤的表;(2)用随机双射编码这些表;和(3)扩展加密边界超出加密算法本身进一步向外到包含应用(containing application)中,迫使攻击者(逆向工程人员)理解明显更多的代码段以达到他们的目的。Chow 1讨论了一种固定密钥方法:通过关于密钥部分求值(partialevaluation)来将所述密钥嵌入在实现(implementation)中,这样密钥输入成为不必要的。部分求值是指尽可能合理多地对涉及密钥的表达式(expression)求值,并将结果而不是完整的表达式放入代码中。攻击者可提取密钥特定的实现并用它代替密钥,然而加密典型地是能以经处理或经编码的形式向加密成分(component)提供输入的较大包含系统的成分,为之设计所述成分,但是对手将发觉移除它很困难。对于编码表的步骤,由于编码是随意的(arbitrary),只有当一个步骤的输出编码与下一步骤的输入编码匹配时,结果才是有意义的。例如,如果步骤Y跟着步骤X(产生
Figure A200780042694D0010154715QIETU
的计算),该计算可编码为
Figure A200780042694D0010154729QIETU
这样,
Figure A200780042694D0010154736QIETU
被正确计算,虽然输入需要用F来编码,输出需要用H-1来解码。这些步骤被单独地表示为对应于Y’和X’的表,从而除了X和Y被隐藏之外F、G和H也被隐藏了。
除了这样的混淆(confusion)步骤外,Chow 1借助于线性变换使用扩散(diffusion)步骤来进一步掩饰这些基本运算(underlying operation)。使用术语混合双射来描述上述意义的线性双射。Chow 1的实现采用经处理形式的输入,并产生差别处理的形式的输出,由此使抗白盒攻击环境(white-box attack context,WBAC)的AES难于从它的包含应用中分离。
白盒AES实现可如下所述。对AES加密和解密算法的输入是单个128比特块。该块由包括16字节的4×4矩阵表示。AES通常由用于AES-128的10轮组成。每一轮更新一组形成AES状态的十六个字节,因此每一个AES轮处理128比特。AES-128使用128比特的密钥。该密钥作为将该密钥转换为不同的128比特的轮密钥的算法的输入。基本轮由四个部分组成:
●替换字节
●移行
●混合列
●加上轮密钥。
该运算的顺序应用于AES加密。虽然AES解密中运算的标准顺序不同,但是重写AES解密算法以具有与AES加密相同的运算顺序是可能的。
在第一轮之前,实现额外的加上轮密钥运算,并且在轮十省略混合列运算。使用密钥的唯一部分是加上轮密钥,其他三个部分与密钥无关。在该实现中改变轮的边界以把加上轮密钥步骤和下一轮的替换字节步骤整合为一个步骤。轮从加上轮密钥和替换字节开始,然后是移行,最后是混合列。
首先,通过把替换字节步骤和加上轮密钥组合在一起成为一个步骤来隐藏密钥。这使得密钥单独地不再可见。因为密钥事先是已知的,涉及密钥的运算可被预求值。这意味着在步骤替换字节中使用的标准S盒可被密钥特定的S盒代替。为了生成AES-128的密钥特定的实例,通过创建十六个8×8(即8比特输入,8比特输出)查找表
Figure A200780042694D0011154923QIETU
来将密钥整合到替换字节变换中,查找表
Figure A200780042694D0011154934QIETU
被定义为:
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 A200780042694D0011155015QIETU
是在表示轮r的轮密钥的4×4矩阵的i,j位置处的AES子密钥字节。这些T盒将替换字节步骤与上一轮的加上轮密钥步骤组合。轮10T盒如下吸收变白后的密钥(post-whitening key):
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。然而,密钥可容易地从T盒重新获得,因为S-1是众所周知的。这使得额外的编码是必需的。线性转换被用于扩散T盒的输入。这些线性变换被称为混合双射,并且可由GF(2)上的8×8矩阵表示。通过早前的计算来对混合双射求逆(invert)以消除它们的影响。
图3图示了状态(在应用移行后)的一个32比特列的白盒AES轮中涉及的表。在此介绍了不同种类的表的名字。将在下文更详细的讨论它们。在该轮之前,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比特值。轮2至9类似于该第一轮。128比特值的每个字节被应用于类型Ib表;使用类型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)。32比特向量x=(x0,...,x31)与MC的乘法通过将x的比特划分为四个字节并将MC的每一部分与字节之一相乘得以完成,得到四个32比特的向量(z0,...,z3)。接着实现三个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]))‖...),每一个4比特异或由可能地编码的查找表表示,其中‖表示串联,+表示异或。通过使用这些分解(strip)和细分的异或,每个步骤由小的查找表表示。特别地,对于i=0,...,3使用8×32的表计算zi,而4比特异或变为24个8×4的表。图7图示了输入编码402和输出编码406如何能被放置在异或404的附近。这些编码通常是随机选取的非线性4×4双射。异或表被称为类型IV表400。类型IV表从两个先前计算的每一个计算获取4比特作为输入。那些计算的输出编码212与针对类型IV表的输入解码402进行匹配以互相撤销(undo)。4×4的非线性双射的选取取决于表的大小。在这种情况下类型IV表仅是28×4比特=128字节。需要一共耗费3KB的24个表。如果不划分异或,那么将需要计算32比特异或的三个异或表。T盒206和8×32的表208可被表示为分离的查找表。替代地,它们可被组合,从而创建新的计算替换字节和加上轮密钥变换以及部分混合列的8×32的表200。这节约了(存储T盒的)空间和(执行表查找的)时间。
在如上将MC分离成MCi之前,MC将左乘以32×32混合双射MB(图5在附图标记210处图示地指出MB),选为具有满秩的4×4子矩阵的非奇异性矩阵。混合双射的使用增加了特定表的可能编排的数量。
图5图示了包括4×4输入解码202和4×4输出编码212的8×32的类型II表200。这些输出编码和输入解码是必须与类型IV表400的输入解码和输出编码匹配的非线性4×4双射。类型II表200由类型IV表400跟随。为了对MB求逆,额外的一组表被用于计算MB-1。假设(x’0,...,x’31)是混合列的输入,并且假设(z0,...,z31)是MixColunms之后的输出。假设(z’0,...,z’31)T是与MB相乘后的结果。(z’0,...,z’31)T作为类型III表300的输入。注意在此不需要考虑输入解码和输出编码,因为一个表的输出编码被下一个表的输入解码撤销。在类型III表300中,应用MB-1304以及对下一轮的四个类型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比特输出值被划分为8个4比特的半字节,并且半字节的适当对被输入到各个类型IV表,从而以编码的方式获得四个32比特输出值的异或。
该32比特合成的经编码异或的结果被再次划分为字节,并且每个字节被输入到不同的类型III表300。类型III表的每个半字节的输入解码与最后应用的类型IV表的输出编码相对应。类型III表再次产生四个32比特的输出值,再次使用扰乱的类型IV表400来异或这些输出值。
总之,轮由查找表实现。单个轮的查找表如下形成网络。数据被馈送入类型II表。这些表的输出被馈送至表示编码的异或的类型IV表的网络。该网络的输出被馈送至删除由类型II表插入的混合双射编码的类型III表。通过将类型III表的输出再次馈送入表示编码的异或的类型IV表的网络,最终导出该轮的编码输出。
并且,为了分别删除和插入外部编码,白盒实现在开始(类型Ia表100)和结尾(类型Ib表500)包含类型I表。通过应用单独表查找,类型Ia表100可用于应用如图4所示的映射串联。在该串联中,4比特半字节输入解码102首先出现。然后,8比特至128比特双射104出现;该双射实现网络输入和输出的编码;该映射可在程序的其他地方被撤销。双射104的结果被分离成16个8比特片,将各个8比特双射106应用于这16个8比特片。最后应用输出的半字节编码108。如上所述,映射102、104、106和108的级联被预求值,最终结果在查找表中被列成表格。这产生最多256个条目、每个条目128比特的表。在图8中示意性地显示了合并在类型Ib表500中的映射的串联。第一个映射是输入的半字节解码502,其后是8比特的双射504、T盒
Figure A200780042694D0014155207QIETU
506(其中r对应于最后一轮)、用于提供输出编码的8比特至128比特的映射以及输出的半字节编码510。这种类型的表的128比特输出被与其他类型Ib表的输出异或,再次使用了半字节输入和输出的编码的类型IV表400。输出编码508可在该程序的其他地方(即在该程序的加密部分以外)被撤销。这使得对于攻击者来说通过仅分析该程序的加密部分的输入和输出来破坏表的编码更加困难。
白盒加密涉及在软件中实现块密码,使得攻击者甚至在白盒攻击模式中也无法提取密钥。白盒攻击模式是最强的可想象的攻击模式之一,因为攻击者被认为具有对该实现的完全接入和对该执行环境的完全控制。对于AES、DES和其他加密方案,都存在白盒实现。这些白盒实现基于上面提到的类似思想,本领域技术人员能够应用白盒实现的原理来创建其他加密方案的白盒实现。
最近,公开了一些揭示特定白盒实现的某些弱点的攻击。例如,Billet描述了对AES白盒实现的攻击。出现了对一种改进的块密码的需求,这种块密码具有使这样的攻击在白盒环境中更困难的特性。白盒实现的应用(例如增强了软件的防篡改性)将得益于这样的改进的块密码。即,它们将得益于既安全又在速度和存储方面具有上佳表现的块密码,白盒实现为了这个块密码而存在。
当用于白盒实现时,诸如AES和DES这样的块密码具有一些缺点。已公开的在它们的白盒实现上的攻击也反映了这一点。尽管对于到目前为止已公开的攻击存在补丁,但是优选的是,拥有不具有已知块密码的弱点或至少减少其一些弱点的与目标契合的块密码。
块密码的扩散算子通常可被指定为确定的矩阵乘积。例如对于AES和DES就是这个情况。这样的块密码的白盒实现对于如在Billet中所述的攻击来说是易受攻击的,其中块密码包括确定的线性扩散算子。这将在下文中解释。
如前所述的白盒实现包括通过编码它们的输入和输出被扰乱的查找表。在Chow 1和Chow 2中建议使用非线性编码。然而,鉴于在Billet中所述的攻击,有人可能会指出该编码的非线性部分不足以扰乱密钥,并且出现在基本加密方案中的线性算子在白盒实现中仍然具有弱点。建议例如通过使线性算子的定义成为密钥的部分来使线性算子的选取可变。
在一个实施例中,AES被修改以使扩散算子是可变的。AES的扩散算子是混合列。该运算通过矩阵相乘将四个字节a0、a1、a2、a3转换为四个字节b0、b1、b2、b3
b 0 b 1 b 2 b 3 = 02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02 a 0 a 1 a 2 a 3 , - - - ( 1 )
其中矩阵的元素以十六进制计数法给出。可通过在密钥中包括矩阵的定义来使该矩阵成为可变的,其中矩阵元素被不同的值代替。在AES中,密钥由在加上轮密钥变换中使用的128比特字符串形成。在根据本发明的修改版本中,它是该128比特字符串和在混合列变换中使用的系数的组合。使用一组系数来表示应该在整个加密方案中用于代替方程式(1)的单个混合列变换是可能的。因为攻击者不知道使用的是哪个变换,并且因为包括不同未知变换的不同密钥被发布,设计有效的攻击更困难。使用每一组表示不同混合列变换的更多组系数也是可能的。在该情况下,不同的混合列变换被用于加密方案中不同的地方,这进一步使攻击复杂化了。例如,不同的变换被应用于不同的轮和/或不同的列。
块密码可借助白盒实现来实现。这样的白盒实现包括经编码的查找表形式的(取决于密钥的)混合列运算。当密钥(包括修改的混合列运算的定义)需要升级或改变时,一组新的查找表需要代替(一些)现存的查找表。出于这个目的,以可能地编码或加密的形式向白盒实现提供新的系数。
提出的方法可被应用来获得块密码的安全白盒实现。该白盒实现不旦可用来保护块密码的密钥(这是白盒加密的一般目的),还可用来应用相关软件防篡改技术。
应当注意在白盒实现中进行的运算可划分为两种类型。运算的第一类型是作为白盒实现基础的加密方案的部分。这些运算可以通过它们确定了被加密数据中的值这一事实粗略地来加以认识。运算的第二类型,可称为“编码”,被包括在白盒实现中以扰乱第一类型运算的中间结果。通常第一类型运算的输出借助于输出编码来编码。该输出编码在应用下一个第一类型的运算之前被相应的输入解码运算撤销。通常,一个或多个输入解码、一个或多个第一类型的运算和一个或多个输出编码被组合为单个运算,通常是查找表,使得难以通过检查代码或通过进行其他白盒攻击来提取关于第一类型运算的信息。
可以从已公开的攻击总结出的一个结论是输入和输出编码不足以隐藏第一类型的运算。当第一类型的变换的数目是众所周知的信息时,并且当仅仅几个运算或甚至仅单个运算是可变的,或者是取决于密钥时,尤其是上述情况。例如,AES在一个轮中包括四个运算。只有一个运算是取决于密钥的(加上轮密钥步骤用从密钥导出的比特进行异或运算)。剩余的三个运算(替换字节、移行和混合列)是在标准规范中完全固定的。这使得破坏第二类型的运算(即这些运算周围的输入和输出编码)相对容易。使得白盒实现容易遭受攻击的一个步骤是混合列步骤。该步骤被认为是扩散运算,因为它确保在解码期间引入的误码在32个输出比特(即多个字节)上得以传播(扩散),而替换字节步骤(S盒)在单个字节上运算。因此通过替代AES而使用AES的修改,可以更好地保护白盒实现免受攻击,在AES的修改中混合列步骤由秘密矩阵控制。这个秘密矩阵可以被硬编码(hard-coded)进白盒实现中或可以通过提供关于矩阵的足够的信息来传递(communicate),以使白盒实现能对数据应用混合列步骤。
可以考虑保证现在可变的扩散算子满足某些需要的性质。这些需要的性质包括扩散算子是可逆的。同样,该算子的输入中的一个(或一些)比特的改变应当对该算子的多个输出比特产生影响。更准确地说,给定两个输入值x和y,x和y中不同的比特数与相应于x和y的输出值中不同的比特数的和应当很大。特别地,当考虑到输入值x和y的所有结合时该和的最小值应当很大。例如这可以通过使用作为最大可分离距离的扩散算子来实现。使用非线性扩散算子来使系统更难于破坏也是可能的。增强所需性质的一个简单方法是在一大类(a large class of)算子中选取随机的算子,并且验证选择的算子是否属于较小类具有所需性质的算子。如果验证显示选择的算子不属于所述较小类算子,则从所述大类算子中选取新的随机算子并验证,直到发现算子的确属于较小类算子。
这样的扩散算子的另一个需要性质在下文中被概述。考虑一个块密码,其轮由S盒组成,跟在S盒后面的是与处理扩散的矩阵M的矩阵相乘。另外,假设我们通过白盒实现来实现该块密码。假设n表示S盒的输入比特数,m是轮的非线性输出编码的精细度,即轮的输出由m比特的非线性函数(对于上述示例性白盒实现,n=8且m=4)来编码。将bi定义为第i个S盒的输出,k为S盒的数目,l为编码的输出字的数目(注意这暗示了扩散算子的输入大小和输出大小被给定为kn=lm比特),则轮的输出由下式给出
M = b 1 b 2 · · · b k = x 1 x 2 · · · x l ,
其中对于所有i=1,...,k bi是一个n比特的值,对于所有i=1,...,l xi是一个m比特的值。将Mi,j定义为从行(i-1)m和列(j-1)n开始的M的m×n子矩阵,其中行和列从0开始计数,则上述表达式可重写为
M 11 M 12 · · · M 1 k M 21 M 22 · · · M 2 k · · · · · · · · · · · · M l 1 M l 2 · · · M lk b 1 b 2 · · · b k = x 1 x 2 · · · x l
假设在M中一行有k个子矩阵Mi1,Mi2,...,Mik。假设子集V={v1,v2,...,vr}是这些矩阵对于某些正整数r的子集。将M(V)定义为通过在V中串联矩阵而得到的m×nr的矩阵,即对于某些正整数p,M(V)的行p是通过按顺序排列来自V的所有矩阵的第p行得到的。例如,对于
V = { 1 0 0 1 , 1 1 0 0 }
矩阵M(V)由下式给出
M ( V ) = 1 0 1 1 0 1 0 0
扩散算子的需要性质是对于任何i=1,...,l,M中的子矩阵Mi1,Mi2,...,Mik的行i,不存在{Mi1,Mi2,...,Mik}的两个不相交的子集V1和V2,从而M(V1)和M(V2)都具有秩m。
图9显示了根据本发明的一个实施例的处理步骤流程图。在步骤602中,随机地选择扩散算子作为块密码的密钥的一部分。该随机化可使用(伪)随机生成器来实现。也可以通过或多或少的随机人为输入来实现。连续选取也是随机选取,其中选取的算子被以基本上随机的顺序指定给不同的用户。算子的类可以借助于一组公式来定义,这组公式具有借助于随机生成器填充(fill in)的参数。在步骤606中,根据步骤602的密钥配置加密算法的实现。这包括将扩散算子设置为由该密钥指定的值。因此,给定了扩散算子在块密码中它的位置。在步骤608中,根据密钥配置对应于加密算法的解密算法的实现。这可以以类似于配置加密算法实现的方式来完成。在合适的地方,其中根据块密码,应当在两个实现的任何一个中对扩散算子求逆。
两个实现中的至少一个是白盒实现。关于白盒实现的配置,出于安全原因不能将扩散算子显式地传递至白盒实现。而是,可通过适当选取的输入和/或输出编码来扰乱扩散算子。然后表示被扰乱的扩散算子的查找表可被传递至白盒实现,从而隐式地使它能够使用密钥。查找表也可以与加密算法的一个或多个运算相结合。扩散算子也可以被划分为几个更小的运算。通常,在白盒实现中这些扰乱的运算将借助查找表来实现。
在步骤610中,这两个实现被用于加密数据的交换。出于这个目的,通过实现加密算法而被加密的数据被传送给解密算法的实现。通常,这两个实现将在不同的终端上使用。数据交换不仅可使用互联网连接或其他类型的网络连接来实现,还可以借助于诸如CD或DVD这样的存储介质来实现。
以特定的顺序在这个和其他实施例中介绍了运算。这仅被认为是例子,本领域技术人员将意识到,这些步骤可以以许多不同的顺序来执行。
图10图示了本发明的一个实施例。在步骤702中显示了生成了包括与选取的扩散算子相关的信息的加密密钥消息。该消息应当包含用于白盒实现合适地配置它自己的有效信息。通常该消息不显式地包含扩散算子,而它包含提供有输入和输出编码的扩散算子的版本。该加密密钥消息可部分地或完全地被加密。该消息还可包含密钥信息,例如如果使用类似AES的块密码,则该密钥还可包含128比特的AES密钥。在步骤704中使用诸如数字网络或数字存储介质这样的任何已知的介质将所述加密密钥消息提供给白盒实现。在步骤706中,根据消息中的信息配置该白盒实现。例如,如果该密钥包含查找表形式的扩散算子,那么这些查找表以预定义的方式被包括在白盒实现中。该白盒实现处于其上的终端具有能够接收和处理加密密钥消息的软件和/或硬件以配置该白盒实现。
图11图解了一种加密方法。该加密方法适合于在白盒实现上实现。该方法涉及应用多个变换(方框802),每个变换用输出字代替输入字。在基于AES的例子中,这样的变换包括加上轮密钥、替换字节和移行(它使用行中的邻近输入字代替输入字)。这些运算具有共性,即每个字节中的信息不被传播到多于一个的其他字节。
该方法进一步涉及对多个输出字的串联应用扩散算子(方框804)。扩散算子具有在输出字之间扩散由输出字表示的信息的作用。在AES的例子中,这样的扩散算子是混合列,因为混合列在是四个字节的串联的32位字符串的比特之间传播一个字节中的信息。表示扩散算子的信息被包括在加密方法的密钥806中。该密钥使该方法的扩散算子成为变量。
图12图示了本发明的一个实施例。该图显示了诸如到互联网的连接之类的通信端口95,以便与数字内容提供商连接。该内容还可以从诸如DVD或CD这样的介质96获得。通常使用由使用存储器91的处理器92执行的媒体播放器来再现PC上的数字内容。对于特定内容格式,这样的播放器可以执行各种插件,以便进行对应于通过通信端口95和/或介质96获得的内容的格式特定的解码。那些内容格式可包括AVI、DV、运动JPEG、MPEG-1、MPEG-2、MPEG-4、WMV、音频CD、MP3、WMA、WAV、AIFF/AIFC、AU等。出于数字版权管理的目的,可使用不仅解码内容还解密内容的安全插件。该插件包括存储在存储器91中的处理器指令和参数(例如被扰乱的查找表)。被扰乱的查找表形成具有如上所述随机选取的扩散算子的白盒实现。可选地可通过通信端口94和/或介质96接收加密密钥消息。可提供用户输入94以从用户获取命令,指示将要再现的内容,并且提供显示器93和/或扬声器来再现经解码和/或经解密的内容。
应当理解,本发明还扩展到适用于将本发明进行实践的计算机程序,特别是在载体上或载体中的计算机程序。该程序可以是源代码、目标代码、代码中间源(code intermediate source)和诸如部分编译形式之类的目标代码的形式,或者是其他适用于在根据本发明方法的实现中使用的任何形式。该载体可以是任何能够执行该程序的实体或设备。例如,该载体可包括诸如ROM之类的存储介质(例如CD ROM或半导体ROM),或磁记录介质(例如软盘或硬盘)。进一步地,该载体可以是诸如电信号或光信号这样的可传输载体,可传输载体可通过电缆或光缆或通过无线电或其他方式进行传送。当程序被包括在这样的信号中时,载体可由这样的电缆或其他设备或装置构成。可选地,载体可以是程序被包括在其中的集成电路,该集成电路适合于完成或用于完成相关的方法。
应当注意,上述实施例说明而非限制了本发明,那些本领域的技术人员将能够设计许多可选的实施例而不脱离附加权利要求书的范围。在该权利要求书中,任何放置在括号间的附图标记不应当被解释为限制该权利要求。动词“包括”和它的变形的使用不排除除那些在权利要求中陈述的那些以外的元件或步骤的出现。元件前的冠词“一个”或“一”不排除多个这样的元件的出现。本发明可借助于包括几个不同的元件并借助合适地编程的计算机来实现。在列举了几个装置的设备权利要求中,这些装置中的一些可由一个硬件和硬件的相同部分包含。某些措施被描述在互不相同的从属权利要求中的这个事实并不意味着这些措施的组合不能被用来产生良好的效果。

Claims (9)

1.一种用于在白盒实现中实现的加密方法,该方法包括
应用多个变换(802),每个变换用输出字代替输入字;和
对多个所述输出字的串联应用扩散算子(804)以便在所述输出字之间扩散由所述输出字表示的信息;
其中该加密方法的密钥(806)包括表示所述扩散算子的信息。
2.根据权利要求1的方法,其中所述扩散算子满足性质:所述扩散算子的输入中的一个比特的改变对应于所述扩散算子的输出中的多于一个比特的改变。
3.根据权利要求1的方法,其中所述扩散算子是非线性算子。
4.根据权利要求1的方法,其中
所述扩散算子的输入由S盒的k个输出的序列给出,每个S盒的输出是n比特值,其中k和n是预定义的正整数值,
所述扩散算子的输出表示所述白盒实现的非线性输出编码的l个输入的序列,每个输出编码的输入是m比特值,其中l和m是预定义的正整数值,以及
所述扩散算子是具有作为可逆矩阵的表示的线性算子,所述可逆矩阵可划分为k个m×n个元素的子矩阵的l行,每一行满足性质:由形成该行的子矩阵的第一子集的串联所形成的矩阵和由形成该行的子矩阵的第二子集的串联所形成的矩阵不都具有秩m,所述第一子集和所述第二子集是不相交的。
5.根据权利要求0的方法,其中所述密钥包括所述可逆矩阵的表示。
6.根据权利要求1的方法,其中所述加密方法包括Rijndael方法,其中混合列算子被所述扩散算子代替。
7.一种系统,包括
用于接收密钥的输入端,所述密钥包括表示扩散算子的信息;和
加密方法的白盒实现,该加密方法包括应用多个变换,每个变换用输出字代替输入字;并对多个所述输出字的串联应用所述扩散算子以便在所述输出字之间扩散由所述输出字表示的信息。
8.根据权利要求7的系统,其中所述密钥包括一个或多个表示用输入和输出编码扰乱的所述扩散算子的查找表。
9.一种客户机服务器系统,包括
客户机,包括用于接收密钥的输入端,该密钥包括表示扩散算子的信息;该客户机进一步包括加密方法的白盒实现,该加密方法包括应用多个变换,每个变换用输出字代替输入字,并对多个输出字的串联应用由所述密钥中的信息表示的扩散算子以便在所述输出字之间扩散由所述输出字表示的信息;
用于依赖于所述密钥应用对应于在所述客户机中实现的加密方法的加密方法的服务器;和
用于生成所述密钥的装置。
CN200780042694.3A 2006-11-17 2007-11-09 用于白盒实现的加密方法 Expired - Fee Related CN101536398B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06124267.3 2006-11-17
EP06124267 2006-11-17
PCT/IB2007/054565 WO2008059420A2 (en) 2006-11-17 2007-11-09 Cryptographic method for a white-box implementation

Publications (2)

Publication Number Publication Date
CN101536398A true CN101536398A (zh) 2009-09-16
CN101536398B CN101536398B (zh) 2012-11-07

Family

ID=39272061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200780042694.3A Expired - Fee Related CN101536398B (zh) 2006-11-17 2007-11-09 用于白盒实现的加密方法

Country Status (5)

Country Link
US (1) US20100080395A1 (zh)
EP (1) EP2092684A2 (zh)
JP (1) JP5485694B2 (zh)
CN (1) CN101536398B (zh)
WO (1) WO2008059420A2 (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102461058A (zh) * 2009-03-10 2012-05-16 爱迪德有限责任公司 具有输入相关编码的白盒密码系统
CN103119888A (zh) * 2010-08-20 2013-05-22 苹果公司 用于不安全环境中的块密码处理的装置和方法
CN105049400A (zh) * 2014-03-19 2015-11-11 恩智浦有限公司 在白盒实现方案中拆分s盒以防止攻击
CN105099666A (zh) * 2015-06-26 2015-11-25 中国科学院信息工程研究所 混淆轮边界的白盒密码系统和方法
CN105187364A (zh) * 2014-03-19 2015-12-23 恩智浦有限公司 保护白盒实现方案不受攻击
CN105591734A (zh) * 2015-04-24 2016-05-18 桂林电子科技大学 一种基于查表的白盒密码非线性编码保护方法
CN105656622A (zh) * 2015-04-24 2016-06-08 桂林电子科技大学 一种基于查表和扰动置乱相结合的白盒密码非线性编码保护方法
CN105721134A (zh) * 2014-12-18 2016-06-29 恩智浦有限公司 使用带有多个外部编码的单个白盒实现
CN106656467A (zh) * 2015-10-29 2017-05-10 三星Sds株式会社 加密装置及方法
CN106888081A (zh) * 2015-12-16 2017-06-23 恩智浦有限公司 白盒实施方案内中间值的宽编码
CN106888080A (zh) * 2015-11-25 2017-06-23 恩智浦有限公司 保护白盒feistel网络实施方案以防错误攻击
CN107111966A (zh) * 2014-11-10 2017-08-29 德国捷德有限公司 用于测试并且加固软件应用的方法
CN107437999A (zh) * 2016-05-27 2017-12-05 三星Sds株式会社 利用白盒密码算法的用于公钥加密的装置及方法
CN107637010A (zh) * 2015-05-19 2018-01-26 三星Sds株式会社 数据加密装置及方法和数据解密装置及方法
CN107968793A (zh) * 2017-12-29 2018-04-27 北京梆梆安全科技有限公司 一种下载白盒密钥的方法、装置及系统
CN109962768A (zh) * 2017-12-26 2019-07-02 中国航空工业集团公司西安航空计算技术研究所 一种基于白盒aes的航电系统加解密方法
US10361842B2 (en) 2014-09-18 2019-07-23 Huawei International Pte. Ltd. Encryption function and decryption function generating method, encryption and decryption method and related apparatuses
CN111314079A (zh) * 2018-12-11 2020-06-19 北京思源理想控股集团有限公司 一种加解密方法、装置
CN114189324A (zh) * 2021-11-12 2022-03-15 湖南遥昇通信技术有限公司 一种消息安全签名方法、系统、设备及存储介质

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101884195B (zh) * 2007-09-13 2013-03-06 耶德托公司 内容的密码处理
US9710623B2 (en) 2008-03-05 2017-07-18 Irdeto B.V. Cryptographic system
EP2304552B1 (en) 2008-05-23 2019-11-06 Irdeto B.V. System and method for generating white-box implementations of software applications
US8175265B2 (en) * 2008-09-02 2012-05-08 Apple Inc. Systems and methods for implementing block cipher algorithms on attacker-controlled systems
US8280040B2 (en) * 2009-02-04 2012-10-02 Globalfoundries Inc. Processor instructions for improved AES encryption and decryption
WO2010146140A1 (en) * 2009-06-19 2010-12-23 Irdeto B.V. White-box cryptographic system with configurable key using block selection
EP2443786A1 (en) * 2009-06-19 2012-04-25 Irdeto B.V. White-box cryptographic system with configurable key using intermediate data modification
EP2388730A1 (en) 2010-05-17 2011-11-23 Nagravision S.A. Method for generating software code
EP2458774A1 (en) 2010-11-24 2012-05-30 Nagravision S.A. A method of processing a cryptographic function in obfuscated form
KR101744748B1 (ko) 2011-01-05 2017-06-09 한국전자통신연구원 화이트박스 암호 테이블을 이용한 콘텐츠 보호 장치, 콘텐츠 암호화 및 복호화 장치
US8966285B2 (en) * 2011-01-10 2015-02-24 Apple Inc. Securing implementation of a cryptographic process having fixed or dynamic keys
EP2691906B1 (en) * 2011-03-31 2018-12-26 Irdeto B.V. Method and system for protecting execution of cryptographic hash functions
US9189425B2 (en) * 2011-09-01 2015-11-17 Apple Inc. Protecting look up tables by mixing code and operations
JP6415542B2 (ja) * 2013-05-01 2018-10-31 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 難読化に適した電子ブロック暗号装置
US9654279B2 (en) * 2014-03-20 2017-05-16 Nxp B.V. Security module for secure function execution on untrusted platform
US9338145B2 (en) * 2014-04-28 2016-05-10 Nxp B.V. Security patch without changing the key
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
EP2950229B1 (en) * 2014-05-28 2018-09-12 Nxp B.V. Method for facilitating transactions, computer program product and mobile device
CN106796624B (zh) 2014-09-26 2021-05-04 爱迪德技术有限公司 挑战响应方法、相关联的计算设备和相关联的计算机可读介质
US9665699B2 (en) * 2015-03-13 2017-05-30 Nxp B.V. Implementing padding in a white-box implementation
JP6480291B2 (ja) * 2015-08-28 2019-03-06 株式会社日立製作所 通信装置、送信装置及び受信装置
JP6187624B1 (ja) * 2016-03-17 2017-08-30 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
EP3467808B1 (en) * 2016-05-23 2020-04-08 Sony Corporation Encryption device, encryption method, decryption device, and decryption method
DE102016008456B4 (de) * 2016-07-12 2018-03-29 Giesecke+Devrient Mobile Security Gmbh White Box AES Implementierung
CN107623568B (zh) * 2016-07-15 2022-09-06 青岛博文广成信息安全技术有限公司 基于依赖密钥的s盒的sm4白盒实现方法
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
WO2021201779A1 (en) * 2020-03-31 2021-10-07 Agency For Science, Technology And Research Method and system for generating a hash-based message authentication code (hmac) based on white-box implementation
CN112199696B (zh) * 2020-10-09 2022-12-06 西安电子科技大学 基于白盒分组密码的加解密方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2820576B1 (fr) * 2001-02-08 2003-06-20 St Microelectronics Sa Procede de cryptage protege contre les analyses de consommation energetique, et composant utilisant un tel procede de cryptage
CN1258148C (zh) * 2003-05-01 2006-05-31 南京邮电学院 高安全等级对称密钥算法的加密、解密方法及加密器
EP1480371A1 (en) * 2003-05-23 2004-11-24 Mediacrypt AG Device and method for encrypting and decrypting a block of data
JP5249053B2 (ja) * 2006-03-10 2013-07-31 イルデト・コーポレート・ビー・ヴイ データ処理システムの完全性
BRPI0714242A2 (pt) * 2006-07-12 2013-01-29 Koninkl Philips Electronics Nv sistema e mÉtodo para aumentar a resistÊncia Á adulteraÇço de uma unidade de processamento de dados digitais, e, produto de programa de computador

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9654280B2 (en) 2009-03-10 2017-05-16 Irdeto B.V. White-box cryptographic system with input dependent encodings
CN102461058A (zh) * 2009-03-10 2012-05-16 爱迪德有限责任公司 具有输入相关编码的白盒密码系统
CN103119888A (zh) * 2010-08-20 2013-05-22 苹果公司 用于不安全环境中的块密码处理的装置和方法
CN105049400A (zh) * 2014-03-19 2015-11-11 恩智浦有限公司 在白盒实现方案中拆分s盒以防止攻击
CN105187364A (zh) * 2014-03-19 2015-12-23 恩智浦有限公司 保护白盒实现方案不受攻击
CN105049400B (zh) * 2014-03-19 2019-01-11 恩智浦有限公司 在白盒实现方案中拆分s盒以防止攻击
US9838198B2 (en) 2014-03-19 2017-12-05 Nxp B.V. Splitting S-boxes in a white-box implementation to resist attacks
US10361842B2 (en) 2014-09-18 2019-07-23 Huawei International Pte. Ltd. Encryption function and decryption function generating method, encryption and decryption method and related apparatuses
CN107111966A (zh) * 2014-11-10 2017-08-29 德国捷德有限公司 用于测试并且加固软件应用的方法
CN112002210A (zh) * 2014-11-10 2020-11-27 捷德移动安全有限责任公司 用于测试并且加固软件应用的方法
CN105721134B (zh) * 2014-12-18 2019-07-23 恩智浦有限公司 使用带有多个外部编码的单个白盒实现
CN105721134A (zh) * 2014-12-18 2016-06-29 恩智浦有限公司 使用带有多个外部编码的单个白盒实现
CN105656622A (zh) * 2015-04-24 2016-06-08 桂林电子科技大学 一种基于查表和扰动置乱相结合的白盒密码非线性编码保护方法
CN105591734A (zh) * 2015-04-24 2016-05-18 桂林电子科技大学 一种基于查表的白盒密码非线性编码保护方法
CN107637010B (zh) * 2015-05-19 2021-05-18 三星Sds株式会社 数据加密装置及方法和数据解密装置及方法
CN107637010A (zh) * 2015-05-19 2018-01-26 三星Sds株式会社 数据加密装置及方法和数据解密装置及方法
CN105099666A (zh) * 2015-06-26 2015-11-25 中国科学院信息工程研究所 混淆轮边界的白盒密码系统和方法
CN106656467B (zh) * 2015-10-29 2021-01-15 三星Sds株式会社 加密装置及方法
CN106656467A (zh) * 2015-10-29 2017-05-10 三星Sds株式会社 加密装置及方法
CN106888080B (zh) * 2015-11-25 2021-06-25 恩智浦有限公司 保护白盒feistel网络实施方案以防错误攻击
CN106888080A (zh) * 2015-11-25 2017-06-23 恩智浦有限公司 保护白盒feistel网络实施方案以防错误攻击
CN106888081A (zh) * 2015-12-16 2017-06-23 恩智浦有限公司 白盒实施方案内中间值的宽编码
CN106888081B (zh) * 2015-12-16 2021-08-13 恩智浦有限公司 白盒实施方案内中间值的宽编码
US10965454B2 (en) 2016-05-27 2021-03-30 Samsung Sds Co., Ltd. Apparatus and method for public key encryption
CN107437999A (zh) * 2016-05-27 2017-12-05 三星Sds株式会社 利用白盒密码算法的用于公钥加密的装置及方法
CN109962768B (zh) * 2017-12-26 2022-03-15 中国航空工业集团公司西安航空计算技术研究所 一种基于白盒aes的航电系统加解密方法
CN109962768A (zh) * 2017-12-26 2019-07-02 中国航空工业集团公司西安航空计算技术研究所 一种基于白盒aes的航电系统加解密方法
CN107968793A (zh) * 2017-12-29 2018-04-27 北京梆梆安全科技有限公司 一种下载白盒密钥的方法、装置及系统
CN107968793B (zh) * 2017-12-29 2021-03-19 北京梆梆安全科技有限公司 一种下载白盒密钥的方法、装置及存储介质
CN111314079A (zh) * 2018-12-11 2020-06-19 北京思源理想控股集团有限公司 一种加解密方法、装置
CN111314079B (zh) * 2018-12-11 2023-09-12 北京思源理想控股集团有限公司 一种加解密方法、装置
CN114189324A (zh) * 2021-11-12 2022-03-15 湖南遥昇通信技术有限公司 一种消息安全签名方法、系统、设备及存储介质
CN114189324B (zh) * 2021-11-12 2024-03-22 湖南遥昇通信技术有限公司 一种消息安全签名方法、系统、设备及存储介质

Also Published As

Publication number Publication date
JP5485694B2 (ja) 2014-05-07
US20100080395A1 (en) 2010-04-01
JP2010510539A (ja) 2010-04-02
WO2008059420A3 (en) 2008-07-10
WO2008059420A2 (en) 2008-05-22
EP2092684A2 (en) 2009-08-26
CN101536398B (zh) 2012-11-07

Similar Documents

Publication Publication Date Title
CN101536398B (zh) 用于白盒实现的加密方法
CN102461058B (zh) 具有输入相关编码的白盒密码系统
EP1997265B1 (en) Integrity of a data processing system using white-box for digital content protection
CN102484581B (zh) 使用中间数据更改的具有可配置密钥的白盒密码系统
US8306216B2 (en) Method and system for tracking or identifying copy of implementation of computational method, and computation system
CN101491001B (zh) 数字数据处理单元的防篡改系统和方法
WO2010146140A1 (en) White-box cryptographic system with configurable key using block selection
CN107273724A (zh) 为白盒实施方案的输入和输出加水印

Legal Events

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

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

Address after: Holland Hoofddorp

Applicant after: Irdeto B.V.

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1136407

Country of ref document: HK

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.

CI01 Publication of corrected invention patent application

Correction item: International Day of publication

Correct: 20080522

False: 20080710

Number: 45

Volume: 28

CI03 Correction of invention patent

Correction item: International Day of publication

Correct: 20080522

False: 20080710

Number: 45

Page: The title page

Volume: 28

ERR Gazette correction

Free format text: CORRECT: INTERNATIONAL PROCLAMATION DATE; FROM: 2008.07.10 TO: 2008.05.22

RECT Rectification
ASS Succession or assignment of patent right

Owner name: IRDETO B.V.

Free format text: FORMER OWNER: IRDETO BV

Effective date: 20150106

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

Effective date of registration: 20150106

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: Ai Dide Technology Co., Ltd.

Address before: Holland Hoofddorp

Patentee before: Irdeto B.V.

REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1136407

Country of ref document: HK

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

Granted publication date: 20121107

Termination date: 20171109