白箱实现中的行为指纹的制作方法_3

文档序号:9306508阅读:来源:国知局
g. 15_16,2002,下文称为"Chow1";以及"AWhite-BoxDES ImplementationforDRMApplications',,StanleyChow,PhilEisen,HaroldJohnson, andPaulC.vanOorschot,DigitalRightsManagement:ACMCCS-9fforkshop,DRM2002, Washington,D.C.,USA,Nov.l8,2002,下文称为"Chow2"。ChowI和Chow2 公开了通过以 下操作的组合来使用基于表的方式隐藏密码密钥的方法:使用随机双射对其表进行编码、 以及通过将其进一步推入包含应用来扩展密码边界。
[0060] 如上所述,针对许多密码操作,期望具有白箱实现。本发明可适用于例如对称或非 对称密码操作。此外,本发明可以适用于块密码、流密码、消息认证方案、签名方案等。注意 的是,本发明还可适用于散列函数。如果散列函数用作拥有秘密信息(例如秘密密钥、秘密 数据等)的建造块,则后者尤其有用。例如,本发明可适用于带密钥(keyed)散列消息认证 代码(HMAC或KHMAC)中使用的散列函数。熟知的块密码包括:高级加密标准(AES)、安全 快速加密例程(SAFER,以及变形SAFER+和SAFER++)、Blowfish、数据加密标准(DES)等。 熟知的流密码是RC4。此外,通过使用适当的操作模式(例如密码反馈(CFB)、计数器模式 (CTR)等),可以将任意块密码用作流密码。
[0061] 可以使用多个基本块实施白箱实现。采用将一些块构建在一个或多个之前的块的 输出上的方式,将多个基本块互连。还可将基本块实现在运行于通用计算机芯片(例如微 处理器)上的软件中。例如,基本块可以使用多个计算机指令,其中包括算术指令,这些指 令一起实现基本块的功能。基本块的一种广泛使用的实现是查找表。例如,Chowl和Chow 2采用这种方式来实现AES和DES块密码。查找表实现包括列表,该列表针对可能的输入值 列出输出值。输入值在查找表中可以是显式的。在这种情况中,通过在输入值列表中搜索 特定输入,查找表实现可以将特定输入映射到特定输出。当找到特定输入时,也找到了特定 输出。例如,特定输出可以与特定输入存储在一起。优选地,输入值没有被显式地存储,而 只是隐式地存储。例如,如果可能的输入是连续范围的编号或比特串,则查找表可被限制为 存储输出值的列表。特定的输入编号可被映射到存储在由所述编号所指示的位置处的特定 输出。此外,有限状态机或代码模糊可以用来实施白箱实现。
[0062] 例如,可通过针对函数的可能输入计算其输出值并将所述输出存储在列表中来创 建针对所述函数的查找表。如果所述函数取决于多个输入,则可针对多个输入的所有可能 组合计算并存储所述输出。查找表尤其适于实现非线性函数,其不定期地将输入映射到输 出。如下文所释,通过向其查找表中的一个或多个应用固定的模糊输入编码和固定的输出 编码,可进一步对白箱实现进行模糊处理。然后,应用固定的模糊输入编码和输出编码的结 果被完全预先评估。通过使用这一技术,查找表可被具有相同尺寸(其获取相同数量的输 入比特,并产生相同数量的输出比特)的模糊查找表替代。在最终的白箱实现中,在这种模 糊处理中使用的输入编码和输出编码不是显式的。
[0063] 基本块的网络被布置为在被呈递了输入消息时计算输出消息。通常,通过多个基 本输入块来对输入消息进行操作。多个进一步的基本输入块可从一个或多个所述基本输入 块和/或从所述输入获取输入。再进一步的基本块可获取采用以下各项的任意组合形式的 输入:输入消息、基本输入块的输出和所述进一步的基本块的输出。最终,基本退出块的某 集合(即至少一个)产生输出消息的全部或部分,作为输出。通过这一方式,出现了基本块 的网络,该网络共同地计算从输入消息到输出消息的映射。
[0064] 所使用的密钥可以是密码密钥,并且可包含足够的熵来承受所预计的蛮力攻击。 注意到,在白箱实现中,密钥通常并不显式地存在于所述实现中。这将冒着通过对实现的检 查发现所述密钥的风险。通常,密钥只是隐式存在的。已知有多种方式来将密钥隐藏在密 码系统中。通常,至少使用部分评估的方法,其中只要需要密钥输入的基本块不取决于输入 消息,则对其进行评估。例如,可通过事先对密钥值和掩码值一起进行异或处理来部分地评 估基本操作(其中输入值、掩码值(其不取决于输入消息(例如来自S箱的值))和密钥值 需要进行异或处理)。通过这种方式,操作仍然取决于密钥值,但是密钥值在所述实现中并 不是显式存在的。取而代之地,所述实现中只存在密钥值和掩码值之间的异或处理。注意 至IJ,隐藏所述密钥的更为复杂的方式和/或进一步的方式与本发明是兼容的。
[0065] 以下示例性实施例是使用AES(高级加密标准)块密码描述的,这是因为AES已经 成为块密码的广泛使用的标准。AES是块大小为128比特或16字节的块密码。明文被分成 16字节的块,这些块形成加密算法的初始状态,并且加密算法的最终状态是密码文本。在加 密算法的任意给定点,这些16字节是加密算法的状态。为了在概念上解释AES,所述状态的 字节被组织为4X4字节的矩阵。AES包括多个取决于密钥大小的回合。每个回合包括对 状态矩阵的字节、列或行进行操作的相似的处理步骤,每个回合在这些处理步骤中使用不 同的回合密钥。在使用AES作为示例的讨论中,注意到,AES以特定的方式定义回合。在以 下实施例中,回合是步骤的任意群组,所述群组包括至少一个非线性映射函数,比如AES中 的S箱。从而,下文所述的回合包括一个非线性映射函数和所述密码功能的其它步骤的任 意组合。
[0066] 图1示出了AES的一个回合的一些主要处理步骤。所述处理步骤包括:
[0067] AddRoundKey(添加回合密钥)110--所述状态的每个字节与回合密钥的字节进 行异或处理;
[0068] SubBytes(替换字节)120-一使用查找表进行字节到字节的置换;
[0069] ShiftRows(移位行)130--所述状态的每一行旋转固定数量的字节;以及
[0070] MixColumns(混合列)140--使用GF(28)中的模乘法来处理每一列。
[0071] 步骤SubBytes120、ShiftRows130 和MixColumns140 独立于所使用的特定密 钥。在步骤AddRoundKey110中应用密钥。除了步骤ShiftRows130,可在不知道其他列的 情况下,对4x4状态矩阵的每一列执行处理步骤。因此,由于每一列由四个8比特值构成, 所以它们可被认为是32比特操作。虚线150指示在已经执行了所需数量的回合之前重复 所述处理。
[0072] 这些步骤中的每一个或步骤的组合可由查找表或由查找表网络表示。如果 AddRoundKey110步骤是通过与回合密钥进行异或处理实现的,贝Ij密钥在白箱攻击的情况 下对于攻击者来讲是可见的。还可将AddRoundKey 110步骤嵌入到查找表中,这使得不那 么明显找到密钥。事实上,能够使用查找表网络来替代AES的完整回合。例如,可以使用表 查找来实现SubBytes120、ShiftRows130和MixColumns140步骤。下文中充分详细地讨 论了AES的可能白箱实现,以描述以下发明的实施例,但是在Chow1中可以找到对这一实 现的进一步详细描述。此外,可以使用查找表实现的其它变形,这些变形在本发明的范围之 内。
[0073] 基于表的白箱实现和有限状态机实现都具有以下属性:实现中的所有中间值 都被编码(与标准实现相比)。使用有限状态机的白箱实现的示例公开于标题为"Data ProcessingMethod" 的美国专利公开 2007/0014394 中,以及由WulfHarder和Atis Straujums在2008年3月11日在重新信任第六次季度会议上所作的题为"Synchrosoft MCFACT?SecureDataProcessingTechnology"的报告,它们均通过引用并入本文以用于 所有目的,如同在本文中完全阐述一样。图2示出了对回合的输入(即对S箱的输入)进 行固定编码的白箱AES实现。如图所示,16个输入字节中的每一个都被匕编码,输出字节 中的每一个都被^编码。
[0074] 为了描述本发明的实施例,将描述基于表的白箱AES实现的基本描述。对用于实 现基于表的白箱AES的方法的更具体地描述,参见Chow1。Chow1示出了使用特定尺寸的 表分解某些函数的特定实现。应该理解的是,可以对表进行各种其它划分,从而导致查找表 的不同函数以及不同尺寸。此外,虽然本发明的下述实施例使用AES的基于表的白箱实现, 但是可根据所述实施例来实现其它密码和密码功能。此外,可使用其它类型的白箱实现,而 不是基于表的实现,例如有限状态实现。
[0075] 将基于表的白箱AES的描述分为两个步骤。在第一个步骤中,AES的回合被描述 为查找表网络。在第二个步骤中
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1