更新秘钥信息的制作方法

文档序号:7994853阅读:242来源:国知局
更新秘钥信息的制作方法
【专利摘要】一种从发送器向一个或多个接收机提供秘钥信息的方法,该方法包括:获得包括采取各自值的多个单元的初始秘钥信息;由该初始秘钥信息形成已编码秘钥信息,其中,已编码秘钥信息包括对应于初始秘钥信息的各自单元的多个已编码单元,其中,所述形成包括针对初始秘钥信息的每个单元从与所述单元相关联的多个可逆编码中选择编码,并用所述所选编码对所述单元所采取的所述值进行编码以形成相应的已编码单元;并且向所述一个或多个接收机提供已编码秘钥信息。
【专利说明】更新秘钥信息

【技术领域】
[0001] 本发明涉及一种从发送器向一个或多个接收机提供秘钥信息的方法。本发明还涉 及一种用于接收机基于初始秘钥信息来执行密码操作的方法。本发明还涉及相应的设备和 计算机程序。

【背景技术】
[0002] 高级加密标准(AES)是众所周知的加密算法。AES是具有128位的区块尺寸和128 位、192位或256位的秘钥尺寸的区块密码。分别地用AES-128、AES-192和AES-256来表示 这三个变体。在2001年联邦信息处理标准出版物197的国家标准与技术协会(NIST)中的 "SpecificationfortheAdvancedEncryptionStandard(AES)" 中可以找到AES的完全 细节。其他区块密码当然也是众所周知的,诸如数据加密标准(DES)、三元素DES(在NIST 特种出版物800-67中称为三元素数据加密算法(TDEA))、Blowfish、Camellia、Serpent等。
[0003] AES是迭代区块密码。图la是图示出迭代区块密码的概念的附图。特别地,定义 轮函数H。迭代区块密码涉及执行轮函数H许多次,即作为迭代次数,将每个迭代称为"轮" 在图la中,存在n轮。AES-128具有10轮,AES-192具有12轮且AES-256具有14轮。每 轮具有关联轮秘钥一在图la中,与第i轮相关联的轮秘钥是Rl(i= 1,2,…,n)。在AES 中(亦即,在AES-128、AES-192和AES-256中),轮秘钥的尺寸是128位。到用于第i轮(i =1,2, . . .,n)的轮函数H的输入是与该轮相关联的轮秘钥和将被操作的数据量:针 对i= 1 (即针对第一轮),将被操作的数据\是输入明文或初始量的数据(在AES的情况 下,针对i=1,将被操作的数据是输入明文\和"初始轮秘钥"R&的函数,如稍后详述的); 针对i>1(即针对后续轮),将被操作的数据是前面第(i-1)轮的输出。针对i=1, 2, ...,n,第i轮的输出是Xj=H《XM,RKj),即基于轮秘钥Rl对输入数据Xg进行操作的 轮函数H的结果:第n轮(即最后一轮)的输出Xn是密文;针对i<n,第i轮的输出\形成 到下一第(i+1)轮的输入。轮函数正常地对于所有轮而言是相同的。然而,轮函数可对于 某些轮而言与其他轮不同是可能的一例如,在AES中,用于最后一轮的轮函数是用于前面 的轮的轮函数的修改型式(只要其省略某个处理步骤,如稍后详述的)。针对迭代区块密码 (例如AES),轮秘钥RI通常是使用秘钥调度算法而从密码(初始)秘钥导出的。再次地,其 他迭代区块密码当然也是众所周知的,诸如DES、三元组DES、Blowfish、Camellia、Serpent 等 某些迭代区块密码(诸如AES、Serpent、3-Way、SAFER、SHARK和Square)涉及所谓的"代 换-置换(SP)网络"(或"代换线性变换网络")。在SP网络中,轮函数H通常地可以划分成 轮秘钥加法层、置换层和置换或线性变换层。在图lb中图示出SP网络的示例性轮函数。到 轮函数的输入是数据块X和轮秘钥RK。秘钥加法层将输入数据X与轮秘钥RK组合(例如,作 为X与RK模2的逐位加法,即作为X0R,在图lb中用⑩表示)。置换层利用一个或多个置换 盒(或S盒),其每个获取秘钥加法层的输出的各部分并基于由S盒定义的可逆(或一对一) 映射而用不同的值来替换该部分。在图lb中,示出了t个S盒Si,...,St-其可彼此相同或 者其可彼此不同。置换层然后获取S盒的输出并将来自代换层的此总输出序列改变(例如, 作为总输出的位的置换)。然而,可能的是,SP网络的轮函数H按不同顺序来执行秘钥加法 层、代换层和置换层。例如,AES轮函数首先应用代换层(在AES中称为"SubBytes"操作)。 接下来,对AES代换层的输出应用置换层(包括AES"ShiftRows"操作和AES"MixColumns" 操作)。最后,对AES代换层的输出应用秘钥加法层(在AES中称为"AddRoundKey"操作)。
[0004] 如上所述,SP网络的轮函数对于某些轮而言可不同于其他轮是可能的一例如,AES 的最后一轮不包括MixColumns操作。在SP网络中,在执行第一轮之前对输入明文执行操 作也是可能的。例如,AES在应用第一AES轮之前使用附加秘钥加法层。更确切地,定义附 加AES轮秘钥R& (R&在AES中称为"初始轮秘钥")。类似于与AES轮相关联的轮秘钥,使 用AES秘钥调度算法来从AES秘钥导出R&。用于第一AES轮的输入是明文\与初始轮秘 钥RK。的X0R。此外,在SP网络中,对最后一轮的输出执行操作也是可能的。此操作的输出 则是密文。在AES中,情况不是这样;换言之,最后AES轮的输出是密文。
[0005] 在如上所述的SP网络中,轮秘钥加法层后面是代换层或者代换层后面是轮秘钥 加法层。例如,在AES中,轮秘钥加法层后面是下一AES轮的代换层。在涉及秘钥加法层和 代换层(或这些层的一部分)的本文中所述的示例中,在不失一般性的情况下假设轮秘钥加 法层后面是代换层。然而,如果需要的话,通过在必要时以将技术人员将熟知的方式对所述 示例进行适当调整,在那些示例中所描述的技术还可以在代换层后面是秘钥加法层的情况 下使用。例如,此类调整是对最后AES秘钥加法层应用该技术所需要的。
[0006] 可将直接地在秘钥加法层之后执行的秘钥加法层和代换层视为包括许多并行操 作(如果对代换层使用单个S盒,则其可以是相同的)。在附图的图lc中描述了此操作(请 注意,在图lc中,未示出轮函数的置换层)。到操作的输入是要处理的初始输入数据X的一 部分x(例如,密码的中间结果,诸如由另一轮引起的部分)和轮秘钥RK的相应部分k。在 该操作中,执行x和k模2的逐位加法(即在图lc中用?表示的X0R)。接下来,将此加法的 结果输入到S盒中,在图lc中用S来表不。如图lc中所不,用S(k?x)来表不操作的输出。 AES使用将8位输入映射到8位输出的一个固定S盒。在AES中,数据块的尺寸是128位 (即16字节),并且x和k是每个字节一因此,可以将AES的秘钥加法层和代换层视为包括图 lc中所示类型的相同并行操作。用于作为SP网络的其他迭代区块密码的轮函数可涉及图 lc中所述类型的不同数目的操作,并且,根据其是否使用相同S盒,其可彼此相同也可不这 样。
[0007] 白盒环境是其中敌方可完全访问算法的实现及其执行环境的环境。例如,敌方可 能能够:(1)跟踪实现的程序指令,(2)查看存储器和高速缓存器的内容,包括秘密数据, (3)在任何点处停止执行并运行离线过程,以及(4)随意地改变代码或存储器内容。为此, 敌方可能能够利用现有工具,诸如调试程序、反编译程序、仿真程序等。
[0008] 白盒加密术旨在在白盒环境中保护密码秘钥,即使得即使敌方可完全访问密码算 法的实现(诸如源代码,其可能是混淆的,或者可执行文件)和其中将运行该实现的环境(例 如,敌方可以在调试模式下执行该实现以访问存储在存储器中的数据的值或确定所执行的 操作序列),敌方也不应能够推导出正在使用的密码秘钥(或在迭代区块密码的情况下使用 的轮秘钥XChow等人在SelectedAreasinCryptography,LectureNotesinComputer Science,Volume2595,pp. 250-270, 2003 中的 "White-BoxCryptographyandanAES Implementation"中(在这里称为HOW)描述了AES的白盒实现。
[0009] 在Billet等人在SelectedAreasinCryptography,LectureNotesinComputer Science,Volume3357,pp. 227-240, 2005 中的"CryptanalysisofaWhiteBoxAES implementation"中(在这里称为BILLET)提出了白盒AES实现的密码分析。在Michiels 等人在SelectedAreasinCryptography(SAC),LectureNotesinComputerScience, Volume5381 ,pp. 414- 428,2009 中的"CryptanalysisofaGenericClassof White-BoxImplementations"中(在这里称为MICHIELS),针对SP网络的一般分类而将在 BILLET中提出的白盒AESE实现的密码分析广义化(AES-128、AES-192和AES-256属于SP 网络的此一般分类)。
[0010] CH0W中的白盒实现涉及使用白盒编码来对处理的中间结果(例如轮的输出)进行 编码。白盒编码是秘密编码,并且使用白盒编码的目的是防止敌方从白盒实施方式推导出 密码秘钥(例如通过根据处理的中间结果推导出密码秘钥)。BILLET和MICHIELS中的攻击 利用这样的事实,即CH0W中的白盒实现的中间结果是使用固定白盒编码而编码的一换言 之,用来对中间结果进行编码的白盒编码对于算法的白盒实现的不同执行而言是相同的。 在TO2010102960中公开了针对BILLET和MICHIELS中的攻击的对策。此对策使用AESS盒 的所谓"自等价"。自定价被定义为从R到R的一对可逆仿射映射(G,g)(其中,R是考虑之 中的S盒的可能输入和输出的范围,其对于某个整数n而言通常为Z2n,并且在AES情况下为 Z28,即在AES情况下n=8),具有性质纩S°G~1=S;换言之,对于所有yeR而言具有性质 s<y) =g<S(G~%)))。在本文的其余部分中,我们应参考R等于z2n,但是将认识到的是R可 以是值的更一般范围。特别地,这意味着如果输入等于G(y),则S的输出等于g(S(y)),如 附图的图 2 中所描述的。在Biryukov等人在AdvancesinCryptology,Eurocrypt2003, LectureNotesinComputerScience,Volume2656,pp. 33-50, 2003 中的"AToolboxfor Cryptanalysis:LinearandAffineEquivalenceAlgorithms"中(在这里称为BIRYUKOV), 已表明用于AESS盒的自等价的数目等于2040。
[0011] 如下面简要描述的,可以使用s盒的自等价作为白盒实现中的安全措施一在 W02010102960中可以找到关于这点的更详细信息。在以下描述中,在不失一般性的情况下 假设所有白盒编码都是可逆的仿射映射。以技术人员将熟知的方式,可以在已应用下述技 术之后向该实现添加附加非线性白盒编码。此外,假设使用白盒编码a和0来分别地对S 盒的输入和输出进行编码。在白盒实施方式中,用S盒映射来组成映射a和0以保护其 机密性,并且用T(也称为T盒)来表示结果,如附图的图3中所示。请注意,T=PeSQ?a_1。 通常,在白盒实现中将T实现为查找表一在其中S盒(和因此的T盒)的输入和输出是一个 字节的AES的情况下,S盒和因此的T盒由28 = 256个条目组成,每个条目的尺寸是一个字 节。在白盒实现中,S盒的每个实例可使用唯一编码a和0(并且因此可使用唯一查找表 来实现)一例如,虽然AES对所有操作(图lc中所述类型的)使用相同的S盒,但这些操作 中的每一个可以利用其自己的各自a和0以导致使用不同的T盒。替换地,S盒的多个 实例可使用相同的编码a和0,其可减小白盒实现的实现尺寸(通过查找表的重新使用)。 [0012]T盒的自等价与相应S盒的自等价有关。更确切地,如果分别地用EQ(S)= 獻)| = S且(ga,gA)是从z 2n至z2n的一对可逆仿射映射}和eq⑴= 4E¥,ef丨|e^T0^1 =T且(b,P;p)是从Z2n至Z2n的一对可逆仿射映射}来表不s盒和T 盒的自等价的集合,则对于每个入而言,存在唯一的q>,使得E^c^G^o^1且 ,并且对于每个(p而言,存在唯一的入,使得GfofkE^a且讥=p_1°e/p。特别地,集合 EQ(T)的尺寸等于集合EQ⑶的尺寸(其对于AES而言为2040)。
[0013] 如在W02010102960中所述,可以使用T盒的自等价来对T盒的输入和输出应 用"可变编码",因为该编码在白盒实现的不同执行中可以不同。为了看到这如何能完成, 观察到如果a(y)是到T盒的输入,则@ (S(y))是T盒的输出。其遵循的是如果具有 ee〇(t)的被输入到T盒,则T盒的输出等于⑶ >')))(如图3中所 示)。这样,可以对T盒的输入和输出应用可变编码,在该实现中使用T盒的仅一个实例,用 寸可变编码进行索引。例如,在白盒实现中,可根据加密(或解密)操作的多个未编码中间 值来实现爭的值,如在W〇2〇101〇296〇中详述的。
[0014] 既不是到S盒的输入也不是输出的加密(或解密)操作的中间结果可使用与T盒的 自等价并未相关联的可变编码。例如,此类中间结果的特定字节可与由白盒编码组成的集 合{Ts |Ts是从Z/至Z28的可逆仿射映射}相关联。编码Ts可以是秘密编码。当生成 白盒实现时选择此集合。在白盒实现的每次执行中,将此集合中的编码中的一个应用于中 间结果。还可以根据加密(或解密)操作的多个未编码中间值来实现S的值(用来从集合中 选择特定编码)。可以应用重新编码来将来自一个集合的可变编码变换成来自不同集合的 可变编码(例如,在白盒实现中可将此类重新编码实现为一个或多个查找表)。结果,还可以 使用可变白盒编码来对既不是到S盒的输入也不是输出的白盒实现的中间值进行编码,因 为编码在白盒实现的不同执行中可以不同。换言之,即使未编码中间值y(例如,y是到T盒 的未编码输入)在白盒实现的不同执行中是相同的(例如,当使用相同秘钥对不同明文进行 加密时),y的已编码值(例如,E4a(y))是到T盒的已编码输入)可不同。如在W02010102960 中详述的,此性质防止在BILLET和MICHIELS中提出的攻击。
[0015] 在白盒实现中,必须保持/存储可变编码的索引。特别地,要求索引作为到重新编 码(将来自一个集合的可变编码变换成来自另一集合的可变编码)的输入,并且在实现中的 某个点处必须去除应用于加密(或解密)操作的中间结果的可变编码,即需要去除所有白盒 编码以计算输出密文(或在解密的情况下输出明文)。
[0016] 其中部署了白盒加密术的许多应用要求可以向白盒实现提供已更新密码秘钥(诸 如AES秘钥)。更新密码秘钥的一个可能性是更新取决于密码秘钥的白盒实现中的所有查 找表。这在W02008142612中有所描述。替换地,可以更新白盒实现的所有查找表以更新密 码秘钥。然而,在某些应用中,需要使用有限数目的带宽来分发秘钥更新。付费TV条件接 入系统是此类应用的示例。对于此类应用而言,要求实现比上文所阐述的更小的秘钥更新 的方案。
[0017] 在W02010146140和W02010146139中描述了用于具有小的秘钥更新尺寸的白盒实 现的方案。在这些方案中,首先扩展密码秘钥(诸如AES秘钥);亦即,首先使用与密码算法 相关联的秘钥调度算法根据初始密码秘钥来计算轮秘钥(与密码秘钥相关联的轮秘钥的集 合在下文中也称为扩展秘钥)。接下来,使用白盒编码对轮秘钥进行编码。最后,分发已编码 轮秘钥,然后,将其用作到密码算法的白盒实现的输入。在W02010146140和W02010146139 中提出的方案中,每个已编码轮秘钥的尺寸与未编码轮秘钥的尺寸相同。因此,秘钥更新 信息(包括已编码轮秘钥的集合)的尺寸等于扩展秘钥的尺寸(即,未编码轮秘钥的集合的 总尺寸。AES-128具有11个轮秘钥(包括与10个AES轮中的每一个相关联的一个轮秘钥 和初始轮秘钥),并且每个轮秘钥由16个字节组成一这意味着在这些更新方案中,需要分发 11X16 = 176个已编码轮秘钥字节以更新AES-128秘钥。对于AES-192而言,轮秘钥字节 的数目等于13X16 = 208且对于AES-256而言,此数目等于15X16 = 240。与必须分发用 于白盒实现的更新查找表相比,这是明显更小的数据量。


【发明内容】

[0018] 本发明人已认识到存在W02010146140和W02010146139中提出的秘钥更新方法 的缺点,因为使用固定白盒编码对扩展秘钥的每个轮秘钥字节进行编码,即用来对每个字 节进行编码的编码(映射或函数)对于要分发的轮秘钥的所有字节而言是相同的编码,并且 此编码(或映射或函数)对于所有秘钥更新而言(即从一个秘钥更新至下一个)仍是相同的。 由于存在轮秘钥字节可以采取的仅256个不同值,并且由于秘钥更新可以涉及例如176个 字节(如果正在使用AES-128),则一个或多个特定轮秘钥字节在两个扩展AES秘钥中相等 的概率是高的。如果使用固定编码来对轮秘钥字节进行编码,则将对两个相同轮秘钥字节 (例如分两个扩展AES秘钥)(其将以高概率发生)进行编码以形成相同的已编码轮秘钥字 节。此性质可被敌方利用。例如,假设敌方损害第一AES-128秘钥,并且分发第二AES-128 作为秘钥更新以修正安全漏洞。对于每个特定轮秘钥字节而言,敌方可以将与被损害的第 一AES-128秘钥相关联的已编码轮秘钥字节的值和与已更新第二AES-128秘钥相关联的已 编码轮秘钥的值相比较。如果此类已编码轮秘钥字节的值是相等的,则减小了已更新第二 AES-128秘钥的熵。例如,假设与被损害的第一AES-128秘钥相关联的轮秘钥的两个特定 字节的值和与已更新第二AES-128秘钥相关联的这两个轮秘钥字节的值相同。通过针对每 个特定轮秘钥字节而比较与这两个AES-128相关联的已编码轮秘钥字节的值,敌方可以确 定已编码轮秘钥字节中的哪些是相等的。接下来,使用被损害的第一AES-128秘钥和AES 秘钥调算法,敌方可以计算被损害的第一AES-128秘钥的两个轮秘钥字节的值。在使用固 定白盒编码时,这两个值等于已更新第二AES-128秘钥的两个轮秘钥字节的值。因此,敌方 现在只须尝试获得与已更新第二AES-128秘钥相关联的该轮秘钥的其余14个字节的值即 可。在敌方获得这些其余14个字节的值之后,敌方就可以使用AES秘钥调度算法来计算第 二AES-128秘钥(因为一个AES-128轮秘钥的知识足以计算AES-128秘钥;这是AES秘钥调 度算法的性质)。这意味着在本示例中,将已更新第二AES-128的上从16字节减少至14字 节。请注意,如果使用相同的固定白盒编码对扩展AES秘钥的多个轮秘钥字节进行编码,则 此安全缺点进一步增加。
[0019] 因此,发明人认识到改善安全性以解决此问题将是期望的。
[0020] 本发明的目的是能够提供用于白盒实现的秘钥更新,其中,秘钥更新尺寸是小的 (亦即,秘钥更新的尺寸与在使用在W02010146140和W02010146139中提出的方案的情况下 将实现的为相同数量级)。
[0021] 本发明的目的是帮助改善安全性。如将描述的,用来实现这一点的一个方式是在 本发明的实施例中可以以超过一个方式对轮秘钥字节进行编码。如也将描述的,在本发明 的某些实施例中,可改善安全性,因为敌方不能使用轮秘钥加法层的白盒实现来验证与不 同编码轮秘钥相关联的轮秘钥字节是否是相等的。
[0022] 根据本发明的第一方面,提供了一种从发送器向一个或多个接收机提供秘钥信息 的方法,该方法包括:获得包括采取各自值的多个单元的初始秘钥信息;由该初始秘钥信 息形成已编码秘钥信息,其中,已编码秘钥信息包括对应于初始秘钥信息的各自单元的多 个已编码单元,其中,所述形成包括针对初始秘钥信息的每个单元从与所述单元相关联的 多个可逆编码中选择编码,并用所述所选编码对所述单元所采取的所述值进行编码以形成 相应的已编码单元;并且向所述一个或多个接收机提供已编码秘钥信息。
[0023] 在某些实施例中,可逆编码中的一个或多个是在发送器与所述一个或多个接收机 之间共享的秘密。
[0024] 在某些实施例中,初始秘钥信息包括一个或多个密码秘钥。例如,可将每个接收机 布置成执行对称密码算法,所述对称密码算法包括多个轮,并且所述一个或多个密码秘钥 中的每一个可以是用于所述对称密码算法的相应轮的轮秘钥。该方法可包括从初始秘钥获 得所述一个或多个轮秘钥。
[0025] 在某些实施例中,针对初始秘钥信息的至少第一单元和第二单元,与所述第一单 元相关联的所述多个编码不同于与所述第二单元相关联的所述多个编码。
[0026] 在某些实施例中,该方法包括识别到每个接收机的所选编码。
[0027] 根据本发明的一方面,提供了一种用于接收机基于初始秘钥信息而执行密码操作 的方法,该方法包括:接收包括采取各自值的多个已编码单元的已编码秘钥信息,所述已编 码秘钥信息对应于所述初始秘钥信息,其中,每个已编码单元所采取的值是用从与初始秘 钥信息的所述相应单元相关联的多个可逆编码中选择的编码进行编码的初始秘钥信息的 相应单元的值;并执行白盒函数作为所述密码操作的一部分,所述白盒函数被布置成:接 收包括(a)已编码单元和(b)用于该单元的所选编码的标识的输入;以及根据初始秘钥信 息的相应单元的值而产生第一输出。
[0028] 在某些实施例中,所述输入另外包括(c)根据多个可逆数据编码中的所选的一个 编码的数据量和(d)用来对所述数据量进行编码的所选数据编码的标识,并且所述第一输 出另外取决于该数据量。可根据多个输出编码中的一个对所述第一输出进行编码,其中,所 述白盒函数所使用的输出编码取决于针对所述单元所选的编码和/或用来对所述数据量 进行编码的数据编码,所述白盒函数还被布置成连同所述第一输出一起输出所使用的输出 编码的标识。所述白盒函数所使用的输出编码可取决于已编码单元和/或已编码数据量。 所述白盒函数所使用的输出编码对于所述多个可逆编码中的每一个而言可以是不同的。在 某些实施例中,所述方法包括使用多个标识编码中的一个对输出编码的标识进行编码,其 中,所使用的标识编码取决于该输入的至少一部分。
[0029] 在某些实施例中,将白盒函数实现为一个或多个查找表。
[0030] 根据本发明的一方面,提供了一种包括处理器的设备,所述处理器被配置成执行 上述方法中的任何一个。
[0031] 根据本发明的一方面,提供了一种计算机程序,其在被处理器执行时促使该处理 器执行上述方法中的任何一个。
[0032] 根据本发明的一方面,提供了一种存储此类计算机程序的计算机可读介质。

【专利附图】

【附图说明】
[0033] 现在将参考附图仅以示例的方式来描述本发明的实施例,在所述附图中: 图la图示出迭代区块密码的概念; 图lb图示出代换一置换网络的示例性轮函数,涉及轮函数加法层、代换层和线性变换 或置换层; 图lc图示出在图lb的处理中涉及的操作; 图2图示出S盒及其自等价的概念; 图3图示出如何可由S盒形成T盒; 图4示意性地图示出根据本发明的实施例的系统; 图5示意性地图示出秘钥信息与相应已编码秘钥信息之间的关系; 图6a示意性地图示出根据本发明的实施例的由白盒实现所实现的函数F执行的处 理; 图6b示意性地图示出根据本发明的实施例的由白盒实现所实现的函数F执行的处 理; 图6c示意性地图示出根据本发明的实施例的由白盒实现所实现的函数F执行的处 理; 图7是示意性地图示出根据本发明的实施例执行的处理的流程图; 图8示意性地图示出图lc的操作的已编码版本; 图9示意性地图示出图8的操作的变体; 图10示意性地图示出实现函数F、从而使用减小的查找表尺寸的实施例;以及 图11示意性地图示出实现函数F、从而使用减小的查找表尺寸的另一实施例。

【具体实施方式】
[0034] 在随后的描述中和图中,描述了本发明的某些实施例。然而,将认识到的是本发明 不限于所述实施例且某些实施例可不包括下面所述的所有特征。然而,将显而易见的是在 不脱离如在所附权利要求中阐述的本发明的更广泛精神和范围的情况下可对其进行各种 修改和变更。
[0035] 图4示意性地图示出根据本发明的实施例的系统400。系统400包括被布置成经 由通信网络430与接收机450进行通信的发送器410。虽然图4描述了具有单个发送器 410和单个接收机450的系统400,但这纯粹是为了清楚和易于说明,并且将认识到的是系 统400可以包括多个发送器410和/或多个接收机450,每个发送器410被布置成与接收机 450中的一个或多个进行通信且每个接收机450被布置成与发送器410中的一个或多个进 行通信。
[0036] 网络430可以是适合于从发送器410向接收机450发射或传送数据的任何种类的 网络。例如,该网络可以包括局域网、广域网、城域网、因特网、无线通信网、电缆网、数字广 播网、卫星通信网、电话网等中的一个或多个。发送器410然后可经由任何适当的通信介质 /协议通过网络430与接收机450通信以便从发送器410向接收机450传送数据。
[0037] 发送器410可以是适合于经由网络430向接收机450传送数据的任何系统。发送 器410包括一个或多个处理器412、存储器414和网络接口 416。网络接口 416被布置成与 网络430对接以使得发送器410能够与网络430进行通信(使得发送器410然后可以经由 网络430与接收机450进行通信)。作为示例,发送器410可以是数字广播系统或电缆网络 系统的头端系统,或者发送器410可以包括用于通过因特网来发射数据或提供对数据的访 问的一个或多个服务器,但是将认识到的是发送器410可替代地采取其他形成。
[0038] 同样地,接收机450可以是适合于通过网络430从发送器410接收数据的任何系 统。接收机450包括一个或多个处理器452、存储器454和网络接口 456。网络接口 456被 布置成与网络430对接以使得接收机450能够与网络430进行通信(使得接收机450然后 可以经由网络430与发送器410进行通信)。作为示例,接收机450可包括机顶盒、智能卡、 个人计算机、移动电话、游戏控制台等中的一个或多个,但将认识到的是接收机450可替代 地采取其他形式。
[0039] 接收机450具有一个或多个操作(或功能或程序)F的白盒实现460,其可以是例如 密码操作。白盒实现460可包括可由处理器452执行的一个或多个软件模块462和/或处 理器452读取并用来执行操作F的存储在存储器454中的各种数据(诸如一个或多个查找 表)。操作F利用秘钥信息KI来生成操作F的输出,即操作F的输出至少部分地基于秘钥 信息KI。例如,操作F可以是用于基于特定秘钥(由秘钥信息KI指定或从其导出)对数据 进行加密的加密操作或用于基于特定秘钥(由秘钥信息KI指定或从其导出)对数据进行解 密的解密操作。操作F可以是形成较大加密操作的一部分或由处理器452执行的某个其他 处理的一部分的操作(或函数或模块或级)。当函数F被实现为白盒实现460时,敌方应不 能在执行白盒实现460以执行函数F时从白盒实现460或从由处理器452执行的处理推导 出或导出秘钥信息KI。
[0040] 接收机450从发送器410接收秘钥信息KI。如下面将更详细地讨论的,发送器410 以已编码形式向接收机450提供秘钥信息KI,即已编码秘钥信息E(KI)。白盒实现460接 收已编码秘钥信息E(KI)并布置成处理接收到的已编码秘钥信息E(KI)以生成至少部分地 取决于原始/初始秘钥信息KI的输出。
[0041] 转到发送器410,发送器410包括秘钥信息获得模块418和编码模块420。这两个 模块可例如实现为用于由处理器412执行的软件部件或模块。
[0042] 总而言之,秘钥信息获得模块418获得秘钥信息KI并向编码模块420提供秘钥信 息KI;编码模块420对秘钥信息KI进行编码以获得已编码秘钥信息E(KI)-稍后将更详 细地描述此编码的性质;网络接口 416然后通过网络430将已编码秘钥信息E(KI)传送至 接收机450 ;在接收机450处,网络接口 456接收传送的已编码秘钥信息E(KI)并在存储器 454中将其传递至处理器452 (处理器452可存储已编码秘钥信息E(KI)和/或将已编码 秘钥信息K(KI)传递至白盒实现460);白盒实现460然后可使用已编码秘钥信息E(KI)来 执行操作F以生成至少部分地取决于原始/初始秘钥信息KI的输出。
[0043] 秘钥信息KI可以是用于配置白盒实现460 (即用于配置或控制操作F)的任何信 息。例如,秘钥信息KI可包括用于使得白盒实现460能够导出或获得一个或多个密码秘钥 的一个或多个密码秘钥和/或信息。在其中密码函数F包括轮序列且每个轮具有关联轮秘 钥的某些实施例中,秘钥信息KI可包括用于该轮序列的轮秘钥(或可从其导出所述多个轮 秘钥的信息)。例如,如果白盒实现460是AES-128的白盒实现,则秘钥信息KI可相应地包 括11个轮秘钥(即初始轮秘钥和与10个AES-128轮中的每一个相关联的一个轮秘钥)。在 某些实施例中,秘钥信息KI包括密码秘钥的一部分或多个轮秘钥的一部分(或可从其导出 密码秘钥的一部分或所述多个轮秘钥的一部分),密码秘钥的另一部分或所述多个轮秘钥 的另一部分可能可用于白盒实现460。
[0044] 秘钥信息获得模块418可以许多方式来获得秘钥信息KI。例如,可将秘钥信息获 得模块418布置成从第三方(在图4中未示出)获得秘钥信息KI。可将秘钥信息获得模块 418布置成生成秘钥信息KI。例如,秘钥信息KI可包括用于对称加密算法的对称密钥,或 者如果密码函数F使用多个轮秘钥,则对称秘钥可包括所述多个轮秘钥,并且可将秘钥信 息获得模块418布置成随机地生成对称密钥(在对称秘钥包括多个轮秘钥的情况下随机地 生成一组"独立"轮秘钥)。同样地,如果密码函数F使用通过使用秘钥调度算法从对称秘 钥导出的多个轮秘钥,则秘钥信息KI可包括对应于由白盒实现460实现的轮序列的所述多 个轮秘钥,并且秘钥信息获得模块418可使用秘钥调度算法而从对称秘钥生成轮秘钥(秘 钥信息获得模块418可能可能随机地本身已生成对称密钥,或者秘钥信息获得模块418可 能已从图4中未示出的第三方接收到对称密钥)。
[0045] 图5示意性地图示出秘钥信息KI与已编码秘钥信息E(KI)之间的关系。
[0046] 秘钥信息KI包括采取各自值的多个单元(或数据区块或数据块或不同的数据量)。 在图5中,将秘钥信息KI示为包括采取各自值u(1),u(2),...,u(m)的m个单元500 (1)、500 (2).....500 (m)。单元500可以全部是相同尺寸的一例如,其可以全部是秘钥信息KI的 相同位数或相同字节数。特别地,单元500可以在尺寸方面全部是一个字节。然而,将认识 到的是某些单元500可具有不同于其他单元500的尺寸。
[0047] 如果秘钥信息KI包括多个密码秘钥(例如如果秘钥信息KI可包括多个轮秘钥), 则可将秘钥信息KI的单元500布置成使得每个秘钥由一个或多个相应单元500形成(具有 每个单兀500属于仅一个密码秘钥的性质)。秘钥信息KI的每个单兀500具有相应的一组 编码(即关联的多个编码或函数或映射)。特别地,针对每个单元500(i)((i=1,2,…, m),存在相应的编码集合U(i) ={>A(i) |1彡X彡nw,⑴是从KD⑴至KCA(i)的可逆 映射},其中,n(i)是与第i单元500 (i)相关联的编码的数目,KD(i)是编码yA(i)的域(其被 定义为第i单元500(i)中的秘钥信息可以采取的可能值的范围),并且KCA(i)是编码yA(i) 的同域。请注意,一般地,与单元500 (i)相关联的编码yA(i)的同域对于A的不同值而言 可以是不同的。然而,由于集合U(i)中的所有编码都是可逆的,所以对于A的每个值而言 (1彡X彡na)),KD(i)中的元素的数目等于KCA(i)中的元素的数目。在某些实施例中, 对于入的每个值而言(1彡入彡n⑴),KD⑴等于KC,)。例如,如果单元500(i)是秘钥 信息KI的一个字节,则关联集合U(i)中的n(i)个编码yA(i)中的每一个可以是从以至^8 的可逆映射(在本示例中亦即KD⑴=KCA(i) =Z28)。
[0048] 编码优选地是仿射编码。
[0049] 与一个单元500 (i)相关联的编码的数目(即n(i)的值)可以跟与另一单元500 (j) 相关联的编码的数目(即nu)的值)相同,或者可与之不同。对于任何两个单元500(i)和 500 (j)而言,编码的关联集合U(i)和以^可重叠也可不重叠,并且甚至可以是相同的。
[0050] 编码优选地是由发送器410保持的秘密,并以至于白盒实现460可能能够执行由 白盒实现460保持的编码的逆。白盒实现460优选地保护编码的机密性,例如通过由另一 秘密函数或映射来组成每个编码或者通过仅在白盒实现460中实现此组成。
[0051] 已编码秘钥信息E(KI)还包括采取各自值的多个单元(或数据区块或数据块或不 同的数据量)。已编码秘钥信息E(KI)的单元应称为已编码单元510-在图5中,已编码秘钥 信息E(KI)包括m个已编码单元510(1) ... 510 (m)。已编码秘钥信息E(KI)的每个已编码 单元510对应于原始/初始秘钥信息KI的各单元500。特别地,针对原始/初始秘钥信息 KI的每个单元500(i)(i= 1,2, . . .,m),对于与单元500(i)相关联的编码集合U(i)中的 某些编码UAW(i)而言,在已编码秘钥信息E(KI)中存在相应的已编码单元510(i),其值为 i!AW(i)(U(i)),其中,入⑴处于索引中,其中1彡入⑴彡n(i),即编码单元510⑴所采 取的值是用编码集合中的编码中的一个编码的原始/初始秘钥信息KI的相应单元500 (i) 所采取的值u(i),该编码集合与原始/初始秘钥信息KI的该相应单元500(i)相关联。请 注意,编码Uw(i)的同域KCMi)(i)定义已编码单元510(i)在使用编码y⑴(i)时可以采取 的值的集合。A的值对于不同的单元500而言可以是不同的,即用于一个单元500(i)的 入(i)可以不同于用于不同的单元500 (j)的A(j)。
[0052] 回想到对于X(1彡X⑴彡n(i))的每个值而言,KD(i)中的元素的数目等于 KCA(i)中的元素的数目;然而,一般地,(单元500(i)所采取的)值u(i)的表示的尺寸可不同 于(相应编码单元510(i) (1彡X(i)彡na))所采取的)值iiAa)(ua))的表示的尺寸。 特别地,单元500 (i)的尺寸可不同于相应已编码单元510 (i)的尺寸。
[0053] 用于每个单元500(i)(i= 1,2,…,m)的编码集合可用于发送器410的编码模 块420。例如,编码集合U(i)可以是由处理器412执行的软件模块的一部分和/或可以存储 (例如作为一个或多个查找表)在存储器414内且是处理器412可访问的。
[0054] 编码模块420通过针对初始秘钥信息KI的每个单元500 (i)(i= 1,2,…,m)而从 与该单元500(i)相关联的所述多个可逆编码U(i)中选择编码yAW(i)并用所选编码y (i)对该单元500(i)所采取的值u(i)进行编码以形成然后采取值yAW(i)(u(i))的相应已编 码单元510 (i)而从由秘钥信息获得模块418获得的原始/初始秘钥信息KI生成(或形成) 已编码秘钥信息E(KI)。编码模块420可以任何适当方式来选择要使用的编码一例如从集 合U(i)选择编码可以是随机选择(编码模块420包括编码模块420用来生成索引A(i)(针 对i=1,2, . . .,m,其中1<入(i) <n(i))的随机数发生器,用种子值播种);编码模块 420可通过集合U(i)重复地进行循环,使得当要从集合U(i)中选择编码时,选择下一编码;等 等。
[0055]-旦已生成已编码秘钥信息E(KI),则发送器410使用网络接口 416经由网络430 向接收机450发送已编码秘钥信息E(KI)。
[0056] 发送器410还可连同已编码秘钥信息E(KI) -起向接收机450 (经由网络430)发 送识别由编码模块420选择的编码(且从而使得接收机450处的白盒实现能够解开编码)的 信息。此识别信息可以针对每个单元500 (i)(针对i=l,2,...,m)指定所选的特定编码 (例如,识别信息可针对每个单元500(i)包括所选编码yAW(i)的索引A(i))。替换地,如 果由编码模块420执行的选择是基于用于随机数发生器的种子值的随机选择,则识别信息 可以包括种子值。然而,将认识到的是发送器410可以不需要向接收机450提供此类识别 信息。例如,第三方(除发送器410)之外可以向接收机450提供识别信息。替换地,发送器 410和接收机450可以是同步的。例如,发送器410和接收机450两者可能已针对各随机 数发生器用相同的种子值进行初始化一当编码模块420对初始秘钥信息KI的单元500 (i) 进行编码以生成已编码秘钥信息E(KI)的已编码单元510(i)时,可使用发送器410处的随 机数发生器来选择编码的索引A(i)以用于每个单元500 (i);同样地,当在接收机450处 接收到已编码秘钥信息E(KI)时,可使用接收机450处的随机数发生器(其将产生与发送器 410处的随机数发生器相同的输出)来确定发送器410用于每个单元500 (i)的编码的索引 入⑴。
[0057] 与各单元500 (i)相关联的编码集合U(i)的使用以及如上文所阐述的从那里进行 的编码选择意味着即使秘钥信息KI的两个单元500采取相同的值,已编码秘钥信息E(KI) 的相应已编码单元510也可以采取不同的无关的值。同样地,如果提供给接收机450的第 一量的秘钥信息K的单元500 (i)(其中1 <i<m)采取与提供给接收机450的第二量 的秘钥信息K的单元500(i)相同的值,则已编码秘钥信息E(KI1)和E(KI2)的相应已编码 单元510(i)可以采取不同的无关的值。因此,如果敌方能够确定第一量的秘钥信息的单 元500 (i)的值,则敌方不能从相应的已编码单元510 (i)推导出第二量的秘钥信息的单元 500 (i)的值一即使已编码单元510 (i)是相等的,也不暗示相应单元500 (i)的值之间的任 何关系。同样地,使用与各单元500⑴和500(j)相关联的编码集合U(i4PUu)(其中1彡 i<m,l<j<m且i尹j)意味着如果秘钥信息KI的两个单元500(i)和500(j)采 取相同的值,则已编码秘钥信息E(KI)的相应已编码单元510(i)和510(i)可以采取不同 的无关的值,即使在集合U(i)等于集合以^的情况下。
[0058] 图6a示意性地图示出根据本发明的实施例的由白盒实现460所实现的函数F执 行的处理(在本实施例中,函数F可取决于单元500和相应已编码单元510的索引i)。特 别地,函数F接收输入,该输入包括(a)已编码秘钥信息E(KI)的已编码单元510 (具有值 yAW(i)(u(i)))和(b)用于该单元510的所选编码yMi)(i)的标识一在本实施例中,该标识 是与单元500相关联的编码集合U(i)中的所选编码yAW(i)的索引A(i)。函数F产生取 决于初始秘钥信息KI的相应单元500的值u(i)的输出(在图6a中用f(u(i))来表示此输出; 亦即,(UMi)(i)(u(i)),X(i)) =f(u(i)))这是由白盒实现460执行的。这可以例如通过白 盒实现460将函数F实现为一个或多个查找表(用值yAW(i)(u(i))和值A(i)来进行索引) 来实现,所述一个或多个查找表本质上解开编码(或将其去除或应用其逆)并对值 u(1)进行操作。在本实施例中,函数f可以是非秘密函数,或者函数f可以是秘密函数(例 如,f可以是非秘密函数和白盒编码的组成)。当然,将认识到的是图6a中的函数F可接收 输入,该输入包括(a)已编码秘钥信息E(KI)的多个已编码单元510和(b)用于那些单元 510的所选编码的标识,其中函数F则产生取决于初始秘钥信息KI的相应单元500的值的 输出。然而,为了便于图示,在图6a中仅示出了一个已编码单元510。
[0059] 图6b示意性地图示出根据本发明的另一实施例的由白盒实现460所实现的函数 F执行的处理(如上所述,函数F可取决于单元500和相应已编码单元510的索引i)。图 6b与6a相同(并且因以上描述同样适用),只是到函数F的输入还包括(c)根据多个可逆 数据编码中的所选的一个而编码的数据量x(i)(使得已编码数据量是Tswa)(xa))),以及 (d)用来对所述数据量进行编码的所选数据编码的标识一在图6b中所示的实施例中,此标 识为索引s(i)。函数F的输出取决于数据量x(i)(除取决于秘钥信息KI的单元500的值u⑴之外)。例如,如上所述,可用选自编码集合T= {>…⑴|1彡S⑴彡r⑴,丁 (i)是从DD(i)至DC5(i)的可逆映射}的编码对由白盒实现460执行的处理的中间结果进行 编码,其中,r(i)是与中间值x(i)相关联的编码数目,DD(i)是编码tsww的域(其被定义为 中间值可以采取的可能值的范围),并且DC5(i)是编码tsww的同域(相对于T(i)中的编码 的域和同域,类似的推理如上文所述适用于集合U(i)中的编码的域和同域)。中间值1(1)可 以例如是迭代区块密码的前一轮的轮函数H的输出的一部分(例如,字节)(或秘钥加法层的 输入的一部分),该中间值x(i)是用T(i)中的编码中的一个编码的,使得到函数F的输入另外 包括已编码中间值tsww(x)和特定编码tswa)的指示(诸如索引S(i))。到函数F的 输入因此可包括密码的加密或解密操作的已编码中间值。可以例如在白盒实现460中将函 数F实现为一个或多个查找表(用值yAW(i)(u(i))、值X(i)、值tsww(x)和值S(i)来 进行索引),所述一个或多个查找表本质上解开(或去除或应用其逆)编码UMi)(i)和tsw (i)并对值u(i)和x(i)进行操作。在图6b中用f(x(i),u(i))来表示F的输出;亦即F(yA⑴(i) (u(i)),入ptsww(x⑴),S(i)=f(xw,uw)。在本实施例中,函数f可以是非秘密函数, 或者函数f可以是秘密函数(例如,f可以是非秘密函数和白盒编码的组成)。
[0060] 图6c示意性地图示出根据本发明的另一实施例的由白盒实现460所实现的函数F 执行的处理(如上所述,函数F可取决于单元500和相应已编码单元510的索引i)。图6c 与图6b相同(并且因此以上描述同样地适用),只是使用来自一组可用输出编码的输出编码 对函数F的输出f(x(i),u(i))进行编码以形成图6c中所示的函数F的输出。特别地,可存 在可用的多个输出编码G(i): = {E^fll彡Mi)彡t(i),q⑴是从0C⑴至OC4⑴的 可逆映射},其中,t(i)是与值f(x(i),u(i))相关联的输出编码的数目,0D(i)是输出编码Emu (i)的域(其被定义为输出值f(x(i),u(i))可以采取的可能值的范围),并且OC4^是输出编 码E*⑴⑴的同域(相对于G⑴中的编码的域和同域,类似推理如上文所述适用于集合U⑴ 中的编码的域和同域)。基于这些输出编码中的一个对值f(x(i),u(i))进行编码,即对于G(i) 中的某些而言,函数F的输出等于E,⑴⑴(f(x(i),u(i)))。与Em,相关联的索 引小⑴可以是函数F的附加输出(如图6c冲所示。要使用的输出编码的特定选择(即索 引小⑴河取决于索引Mi)和索引S⑴中的一者或两者。优选地,索引Mi)取决于 索引A(i)和索引S(i)两者一如不久将举例说明的,这帮助确保敌方不能使用白盒实现 来验证与不同编码单元510相关联的未编码单元500是否是相等的。另外或替换地,索引 小⑴可取决于值UMi)(i)(u(i))-这样,索引小⑴仍(即使隐含地)取决于索引入⑴。另 外或替换地,索引$ (i)可取决于值tsw(i)(x(i))-这样,索引$ (i)仍(即使隐含地)取决 于值S⑴。
[0061] 图7是示意性地图示出根据本发明的实施例执行的处理的流程图。
[0062] 在步骤S700处,秘钥信息获得模块418如上文所阐述地获得秘钥信息KI。
[0063] 在步骤S702处,编码模块420对由秘钥信息获得模块418获得的秘钥信息KI进 行编码。此编码的输出是已编码秘钥信息E(KI)。
[0064] 在步骤S704处,发送器410通过网络430向接收机450传送已编码秘钥信息 E(KI)。
[0065] 在步骤S706处,接收机450接收传送的已编码秘钥信息E(KI)。
[0066] 在步骤S708,接收机450处的白盒实现460使用已编码秘钥信息E(KI)来执行操 作F以生成至少部分地取决于原始/初始秘钥信息KI的输出。
[0067] 参考图lc、2和3中所示的操作,现在将描述其中白盒实施方式460是AES算法的 白盒实施方式的特定示例。然而,将认识到的是这纯粹是为了帮助解释本发明且不应将其 理解为限制由所附权利要求定义的本发明的范围。
[0068] 在下面给出的示例中,单元500、已编码单元510和中间结果在尺寸方面均为一个 字节,使得所使用的各种编码是从Z28至z28的映射。然而,将认识到的是这仅仅是示例性的 且本发明并不这样受限制。
[0069] 当生成AES的白盒实现460时,针对每个AES轮秘钥字节(用i来进行索引),选择 一组编码U(i) = {> A⑴(i)11彡人⑴彡n(i),yA⑴(i)是从Z28至Z28的可逆映射}。这些编 码可以是仿射的。对于某些白盒实现460而言,这些集合U(i)中的某些对于不同的轮秘钥 字节而言可以是相同的(其可以帮助减小白盒实现460的尺寸)。替换地,可使每个轮秘钥 与为该轮秘钥字节所独有的集合U(i)相关联。
[0070] 如果将新的AES秘钥分发给白盒实现460,则秘钥信息获得模块418使用AES秘钥 调度算法而从新的AES秘钥生成所有AES轮秘钥一这些AES轮秘钥然后形成秘钥信息KI。 用B来表示秘密信息KI的字节的数目(S卩,轮秘钥字节的总数;亦即对于AES-128而言B =176,对于AES-192而言B= 208且对于AES-256而言B= 240)。对于i的每个值而言 (1 <i<B),编码模块420使用从其关联的编码集合U(i)获取的编码yA⑴(i)对轮秘钥字 节i进行编码。特别地,对于i的每个值而言(1 <i<B),编码模块420可选择值入(i) (其中1彡X⑴彡nw)且然后对轮秘钥字节i的值应用编码y 。已编码轮秘钥字 节的集合形成已编码秘钥信息E(KI)。发送器410然后将已编码秘钥信息E(KI)提供(或 传送或分发)给一个或多个接收机450的白盒实现460。发送器410还可将所选索引入(i) (针对1 <i<B)提供给一个或多个接收机450的白盒实现460,但是如上所述,可将一个 或多个接收机450的白盒实现460布置成以其他方式来获得这些所选索引。
[0071] 在实践中,每个索引a(i)的尺寸可能是小的,例如对于每个轮秘钥字节而言为4 位(例如,通过针对i的每个值选择包含16个编码的集合U(i))。因此,可以保持秘钥更新尺 寸是小的:特别地,更新秘钥涉及提供已编码秘钥信息E(KI),并且潜在地,另外提供一组 索引入(i)一针对AES-128,存在秘钥信息KI的176个字节,并且因此如果每个索引为4 位,索引信息的尺寸为176X(4/8)bytes=88字节。
[0072] 请注意,如果轮秘钥字节i针对不同的AES秘钥具有相同的值(例如,针对随后被 第二AES秘钥取代/更新的第一AES秘钥),则可以使用A (i)的不同值不同地对这些轮秘 钥字节进行编码,因为可以通过该方生成每个AES秘钥并对其进行编码来选择A (i)的值。 同样地,可以相互不同地对用于单个AES秘钥的同一组轮秘钥内的不同轮秘钥字节(即扩 展AES秘钥内的不同轮秘钥字节)进行编码,即使关联的各编码集合是相同的(假设该集合 包含至少两个编码)。这全部帮助改善白盒实现的安全,如上文已描述的。
[0073] 在下文中,提供了白盒实现460如何可实现AES秘钥加法层的示例。在这些示例 中,在不失一般性的情况下假设轮秘钥加法层后面是代换层。这适用于所有AES加法层和 AES代换层,最后的AES轮秘钥加法层例外。如果以技术人员将熟知的方式使轮秘钥加法层 和代换层的顺序反向,则可实现对所述示例的适当调整。随后的示例中的每一个满足这样 的性质,即敌方不能使用轮秘钥加法层的白盒实现460来验证与两个不同编码的轮秘钥字 节相关联的两个轮秘钥字节的值是否是相等的。为了便于说明,在以下讨论中考虑由白盒 实现460针对单个轮秘钥字节执行的处理,并且因此为了便于标记,省略了索引i。将认识 到的是这些示例纯粹是示例性的,并且其原理适用于其他函数F-特别是使得敌方不能使 用函数F的白盒实现460来验证与两个不同编码单元510相关联的两个单元500是否采取 相同的值。
[0074] 为了便于说明且在不失一般性的情况下,在以下示例中假设所有白盒编码都是可 逆仿射映射。将以技术人员将熟知的方式,可以在已应用在示例中描述的技术之后向该实 现添加附加非线性白盒编码。此外,如果已从一组编码中选择白盒编码,则包括编码的索引 作为随后的编码的下标(在示例中以能够容易地将此类编码与固定白盒编码区别开)。
[0075] 图8示意性地图示出图lc中所示的操作的已编码型式。在图8中描述的示例中, 假设该操作是AES加密或解密操作的一部分,并且如图3中所示地对AESS盒进行编码。图 8中的函数F以已编码方式计算轮秘钥字节k(即秘钥信息KI的单元500)与数据字节x的 X0R,并且T盒以已编码方式来计算AESS盒操作。到函数F的四个输入是:已编码轮秘钥 字节(k)以及应用于轮秘钥字节k的编码的索引A和可变编码数据字节ts (x)以及 应用于数据字节x的可变编码的索引6,16选自集合|>s |ts是从228至48的仿射映 射},其由与数据字节x相关联的白盒编码组成。函数F的输出是数据字节x和轮秘钥字节 k的可变编码X0R,用E^O^k^X))来表示,以及应用于〇<k?X丨的可变编码的索引一应将函数 E$称为可变"输出编码",存在多个可用输出编码(其可以例如是作为图3中的已编码S盒 的自等价的一部分的函数;已编码S盒在图3和8中称为T盒)。E^afk?X))的输出是到T 盒的输入,如图8中所描述的。在图8中所示的实施例中,a和0是从&8至228的可逆仿 射白盒编码(如在图3中所描述的示例中)。F的第二输出是应用于a<k?X)的可变输出编码 的索引小。
[0076]优选地,F的输出中的索引$的值取决于索引S的值。特别地,如果$将不取 决于S,则敌方可以利用白盒实现来生成对应于到F的两个输入X,tSi(Xi), S1)和(yA(k),X,TS2(X2),s2)的F的两个输出,其中s1关S2 (例如,敌方可以通 过使用不同的数据输入和相同的秘钥来执行AES的白盒实现而生成F的此类输入和输出); 对于的某个值而言,这些输出分别地是和E4<x(k0x2?。当且仅当xl=X2时, 这两个输出是相等的。换言之,敌方可以尝试使用F的(白盒)实现来验证两个输入数据字 节是否是相等的,从而"取消"应用于中间结果(亦即,数据字节x)的可变编码的效果。因 此,为了确保当使用相同已编码轮秘钥字节udk)时小的值在实现的不同执行中可以改 变(以便防止在BILLET和MICHIELS中存在的攻击),函数F优选地根据S而选择小的值。
[0077] 另外,为了确保敌方不能使用轮秘钥加法层的白盒实现460来验证与不同编码的 轮秘钥字节相关联的轮秘钥字节是否是相等的,敌方应不能使用F的白盒实现来将具有 入1尹X2的两个已编码轮秘钥字节yA1(ki)和yA2(k2)(例如与两个AES秘钥相关联) 变换成能够用来验证h的值是否等于k2的值的值。例如,如果应用于输出a(k?x>的可变 编码的索引小将仅取决于的值(亦即,对于某些(可能非秘密)函数g而言,小=g(S)), 则敌方可以使用白盒实现来生成对应于具有X1关X2的到F的两个输入A1 〇〇,入1, Ts (X),s)和(h2(k2),X2,Ts (X),s)的F的两个输出(例如,敌方可以通过使用相同 的数据输入和相同的轮秘钥来执行F的白盒实现而生成F的此类输入和输出,除针对已编 码轮秘钥字节uA10〇和yA2(k2)之外);对于某个值而言,这些输出分别地是 和EJo^k^x))。当且仅当匕=匕时,输出是相等的。为了防止此类攻击,函数F优选地根 据X和S两者来选择索引(K例如对于某些(可能非秘密)函数g而言小=g(A,6)。 可以对于S的每个值而言应用于a(k?x)的可变编码的索引小每当A的值改变时改变的 方式来选择函数g。特别地,用g的此类选择,使用不同的(可变)编码小1和小2对对应于 具有:V1 关:V2 的两个输入(i!A1GO,M,Ts (X),S)和(iiA2 (k2),X2,Ts (X),S)的 F的输出进行编码。
[0078] 因此,总而言之,索引优选地取决于入和S两者。
[0079] 在某些实施例中,如下面所讨论的,可采取其他措施以帮助改善安全性。
[0080]例如,如果4) =g(入,S),则两个输入(y,X,Ts(Xl),S)和(yA2(k2), 入,Ts (Xl),S)使用相同的白盒编码而映射到输出和Eya(k2?X2))。如果这 些输出是相等的,则揭示Xi、x2、ki和k2之间的关系(关系为!<_々=k2_2)。因此,在某些实 施例中,?的值(由函数g确定)可取决于ydk)和/或TS(X)以防止两个输入(ilA1(ki), 入,Ts (Xl),s)和(ii A2(k2),入,Ts(X2),s)使用相同的可变编码E/a而映射到输 出。此类函数g则隐含地取决于A和/或S的值。一般地,g可取决于F的四个输入的 任何组合,只要g取决于A和S即可(明示地或隐含地)。
[0081] 作为另一示例,可存在到函数F的使用相同白盒编码E,a映射到输出 ?xO》*Ef(cx_?X2))的不同的输入(yA 丨(k),入1,ts 丨(xD,S1)和(yA2 (k2), 入2,tS2(x2),62)。如果这些输出是相等的且如果敌方已知道对两个输出应用了相同的白 盒编码E$ °a,则揭不Xpx2、h和k2之间的关系(关系为ki?Xi=k2?X2)。为了减小敌 方可获得的信息量,在某些实施例中,可以应用于输出(用小进行索引)的可变输出编码的 数目可大于可以应用于输入数据字节(用S进行索引)的可变编码的数目。例如,可以这样 的方式来选择函数g(Udk),X,ts(x),6),即没有到函数F的两个不同输入(yA1(ki), 入1,TSl(Xl),S1)和(iiA2(k2),入2,tS2(x2),S2)使用小的相同值映射到输出(换言 之,函数g是相对于输出小的内射函数)。虽然这防止了上述攻击,但小的可能值的数目 以T盒的自等价的数目为上界。对于AES而言,此数目等于2040,其(远远)小于到函数F的 可能输入的数目(例如,如果A和S是4位值且如果已编码轮秘钥字节和已编码数据字节 是8位值,则到函数F的数目等于224 = 16,777,216)。因此,在某些实施例中,作为输出索 引小的替代,函数F输出$的已编码形式,其中,使用集合H= {h0 |he|是秘密的可逆 仿射映射}中的编码中的一个对小进行编码以减少敌方可获得的信息量。换言之,在此类 实施例中个,函数F输出(he〇),0)而不是简单地输出(如图9中所示)。一般地,在 某些实施例中,9的值取决于到函数F的输入的至少一部分。优选地,以这样的方式来选 择此相关性,即0的值对于到函数F的使用相同白盒编码E/a映射到输出的任何两 个输入而言是不同的。用此类选择,敌方不可能确定两个输出和Ep(a(k2?x2)) 是使用相同可变编码E$而编码的。
[0082] 可将函数F实现为单个查找表。然而,此类表的尺寸可能是大的。例如,如果入 和S是4位至且如果已编码轮秘钥字节和已编码数据字节是8位值,则到函数F的输 入的尺寸为24位。因此,如果函数F被实现为单个查找表,则实现函数F的表具有224 = 16, 777, 216 个条目。
[0083] 图10示意性地图示出使用较小总查找表尺寸来实现函数F的实施例。如前所述, 假设白盒编码UA和Ts是可逆仿射映射(从以至^8,在本实施例中,单元的尺寸是一 字节,但这纯粹是示例性的)。如在图8和9中,函数F具有四个输入:已编码轮秘钥字节 Udk)以及应用于轮秘钥字节k的编码的索引A和已编码数据字节ts(x)以及应用于 数据字节x的可变编码的索引S。
[0084] 在图10的实施例中,使用两个函数?1和? 2及乂(《操作在白盒实现460中实现函 数F-这减小所要求的查找表的总尺寸。
[0085] 到函数匕的输入分别地是已编码轮秘钥字节y A (k)和应用于轮秘钥字节k的编 码的两个索引A和S及应用于数据字节x的可变编码。函数匕的输出是用于将两个索引 入和S映射到Z28中的值的某个秘密函数f'的

【权利要求】
1. 一种从发送器向一个或多个接收机提供秘钥信息的方法,所述方法包括: 获得包括采取各自值的多个单元的初始秘钥信息; 由该初始秘钥信息形成已编码秘钥信息,其中,该已编码秘钥信息包括对应于初始秘 钥信息的各自单元的多个已编码单元,其中,所述形成包括针对初始秘钥信息的每个单元 而从与所述单元相关联的多个可逆编码中选择编码并用所述所选编码对所述单元所采取 的所述值进行编码以形成相应的已编码单元;以及 向所述一个或多个接收机提供已编码秘钥信息。
2. 权利要求1的方法,其中,可逆编码中的一个或多个是在发送器与所述一个或多个 接收机之间共享的秘密。
3. 前述权利要求中的任一项的方法,其中,所述初始密钥信息包括一个或多个密码秘 钥。
4. 权利要求3的方法,其中,每个接收机被布置成执行对称密码算法,所述对称密码算 法包括多个轮,并且其中,所述一个或多个密码秘钥中的每一个是用于所述对称密码算法 的相应轮的轮秘钥。
5. 权利要求4的方法,包括从初始密钥获得所述一个或多个轮秘钥。
6. 前述权利要求中的任一项的方法,其中,针对初始秘钥信息的至少第一单元和第二 单元,与所述第一单元相关联的所述多个编码不同于与所述第二单元相关联的所述多个编 码。
7. 前述权利要求中的任一项的方法,包括识别到每个接收机的所选编码。
8. -种用于接收机基于初始秘钥信息来执行密码操作的方法,所述方法包括: 接收采取各自值的的多个已编码单元的已编码秘钥信息,所述已编码秘钥信息对应于 所述初始秘钥信息,其中,每个已编码单元所采取的值是用从与初始秘钥信息的所述相应 单元相关联的多个可逆编码中选择的编码而编码的初始秘钥信息的相应单元的值;以及 执行白盒函数作为所述密码操作的一部分,所述白盒操作被布置成:接收包括(a)已 编码单元和(b)用于该单元的所选编码的标识的输入;以及根据初始秘钥信息的相应单元 的值而产生第一输出。
9. 根据权利要求8所述的方法,其中,所述输入另外包括(c)根据多个可逆数据编码中 的所选的一个而编码的数据量和(d)用来对所述数据量进行编码的所选数据编码的标识, 其中,所述第一输出另外取决于该数据量。
10. 权利要求9的方法,其中,所述第一输出根据多个输出编码中的一个而被编码,其 中,所述白盒函数所使用的输出编码取决于针对所述单元所选的编码和/或用来对所述数 据量进行编码的数据编码,其中,所述白盒函数还被布置成连同所述第一输出一起输出所 使用的输出编码的标识。
11. 权利要求10的方法,其中,所述白盒函数所使用的输出编码取决于已编码单元和/ 或已编码数据量。
12. 权利要求10的方法,其中,所述白盒函数所使用的输出编码对于所述多个可逆编 码中的每一个而言是不同的。
13. 权利要求10至12中的任一项所述的方法,包括使用多个标识编码中的一个对输出 编码的标识进行编码,其中,所使用的标识编码取决于该输入的至少一部分。
14. 权利要求8至13中的任一项的方法,其中,将白盒函数实现为一个或多个查找表。
15. -种设备处理器的设备,所述处理器被配置成执行根据前述权利要求中的任一项 所述的方法。
16. -种在被处理器执行时促使处理器执行根据权利要求1至14中的任一项所述的方 法的计算机程序。
17. -种存储根据权利要求16所述的计算机程序的计算机可读介质。
【文档编号】H04L9/06GK104322002SQ201280073305
【公开日】2015年1月28日 申请日期:2012年3月20日 优先权日:2012年3月20日
【发明者】P.勒尔泽, Y.德穆尔德 申请人:耶德托公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1