使用查找表的模乘运算的制作方法

文档序号:10534463阅读:282来源:国知局
使用查找表的模乘运算的制作方法
【专利摘要】各实施例涉及一种编码有用于由处理器执行的用于执行模幂运算的指令的非瞬时机器可读介质以及方法、系统,所述非瞬时机器可读介质包括:用于迭代地计算模幂bd mod n的指令,包括:用于将工作值c平方的指令;以及用于根据指数d的比特有条件地将工作值c乘以底数值b的指令,包括:用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令。
【专利说明】
使用查找表的模乘运算
技术领域
[0001] 本文公开的各实施例一般地涉及模幂运算,更具体但非排除地,涉及针对基于RSA 的数字签名和解密方案的模幂运算。
【背景技术】
[0002] 诸如RSA的许多密码系统利用模幂运算作为模糊数据的一个步骤。具体地,为了对 数据进行加密,将编码数据a提升到公共指数e次幂,并使用值N对其进行模运算:c = ae mod N。解密稍后被执行,并且包括将加密数据提升到私人指数d次幂:a = cd mod N。类似的模幂 运算可用于创建数字签名,差别在于对私人指数和公共指数的使用被交换:私人指数d被用 于初始地对数据加密,而公共指数e被用于稍后验证签名。
[0003] 传统地,针对密钥3元组<e,d,N>选择的值非常大。例如,RSA通常使用尺寸为1024 到4096比特的密钥。由于这些值很大,现有算法将使用过度量的处理时间来计算给定密码 系统所使用的模幂运算。

【发明内容】

[0004] 各种实施例简单总结如下。在以下概述中有一些简化和省略,其旨在突出和介绍 各实施例的一些方面,而非限制本发明的范围。在下面的部分中将给出足以使本领域普通 技术人员利用和使用发明构思的优选实施例的详细描述。
[0005] 本文描述的多种实施例涉及一种编码有指令的非瞬时机器可读介质以及相关方 法和设备,所述指令用于由处理器执行以用于执行模幂运算,所述非瞬时机器可读介质包 括:用于迭代地计算模幂b d mod n的指令,包括:用于将工作值c平方的指令;以及用于根据 指数d的比特有条件地将工作值c乘以底数值b的指令,包括:用于将所述工作值c无条件地 乘以与所述底数值相关联的查找表条目的指令。
[0006] 描述了多种实施例,其中,在余数系统RNS中表示所述工作值C和所述底数值b,并 且用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令包括:将表 示所述工作值C的多个工作RNS整数乘以与表示所述底数值b的多个底数RNS整数相关联的 多个查找表条目。
[0007] 描述了多种实施例,其中,用于将表示所述工作值c的多个工作RNS整数乘以与表 示所述底数值b的多个底数RNS整数相关联的多个查找表条目的指令包括:用于将表示所述 工作值c的所述多个工作RNS整数中的一个工作RNS整数乘以与表示所述底数值b的所述多 个底数RNS整数中的底数RNS整数相关联的一个查找表条目的指令,所述查找表条目来自与 对应于所述底数RNS整数的RNS模数相关联的查找表。
[0008] 描述了多种实施例,其中,用于迭代地计算所述模幂的指令包括:用于在所述指数 d的多个比特位置中进行迭代的指令;以及用于将所述工作值c无条件地乘以与所述底数值 b相关联的查找表条目的指令包括:用于利用多个查找表中与当前比特位置相关联的查找 表的指令。
[0009] 描述了多种实施例,其中,用于根据指数d的比特有条件地将工作值c乘以底数值b 的指令包括:用于执行蒙哥马利乘法的指令;以及用于执行蒙哥马利乘法的指令调用所述 用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令。
[0010] 多种实施例还包括:用于从另一设备接收由所述用于将所述工作值c无条件地乘 以与所述底数值相关联的查找表条目的指令使用的查找表的集合的指令。
[0011] 本文描述的多种实施例涉及一种编码有指令的非瞬时机器可读介质以及相关设 备和方法,所述指令用于由处理器执行以用于产生用于执行模幂运算的查找表,所述非瞬 时机器可读介质包括:用于初始化分别与秘密指数d内的不同比特位置相对应的多个查找 表的指令;用于产生用于添入所述多个查找表中的值的指令,包括:用于当所述秘密指数d 在与查找表相关联的比特位置处携带第一比特值时根据第一方法产生针对所述查找表的 值的指令;用于当所述秘密指数d在与查找表相关联的比特位置处携带与第一比特值不同 的第二比特值时根据与第一方法不同的第二方法产生针对所述查找表的值的指令。
[0012] 描述了多种实施例,其中,用于产生用于添入所述多个查找表中的值的指令包括: 用于模糊所产生的值的指令。
[0013] 描述了多种实施例,其中,用于模糊所产生的值的指令包括:用于对用于添入第一 查找表中的第一值执行第一数学函数的指令;以及用于对用于添入第二查找表中的第二值 执行第二数学函数的指令,其中,第二数学函数是第一数学函数的有效逆函数。
[0014]描述了多种实施例,其中:第一数学函数将模糊值并入第一值中,并且第二数学函 数将所述模糊值的模逆的平方并入第二值中。
[0015]描述了多种实施例,其中,所述模糊值包括:基于第一值将被存储在第一查找表中 的位置的索引而不变的恒定值。
[0016]描述了多种实施例,其中,所述模糊值包括:第一值将被存储在所述查找表中的位 置的索引被提升到恒定指数值次幂。
[0017]描述了多种实施例,其中,用于模糊所产生的值的指令包括:用于对用于添入第一 查找表中的第一值执行第一数学函数的指令;以及用于对用于添入第二查找表中的第二值 执行第二数学函数的指令,其中,第二数学函数是第一数学函数的有效逆函数。
[0018]描述了多种实施例,其中:第一数学函数将模糊值并入第一值中,并且第二数学函 数将所述模糊值的模逆的平方并入第二值中。
[0019]描述了多种实施例,其中,所述模糊值包括:基于第一值将被存储在第一查找表中 的位置的索引而不变的恒定值。
[0020] 描述了多种实施例,其中,所述模糊值包括:第一值将被存储在所述查找表中的位 置的索引被提升到恒定指数值次幂。
[0021] 描述了多种实施例,其中,第一方法和第二方法共同共享至少一个指令。
[0022] 描述了多种实施例,其中,第一方法包括用于将所述值将被存储在查找表中的位 置的索引并入所述值中的区分指令;以及第二方法不包括所述区分指令。
[0023] 描述了多种实施例,其中,用于初始化分别与秘密指数d内的不同比特位置相对应 的多个查找表的指令包括:用于确定将用于余数系统RNS中的模数M的集合的指令;以及用 于针对所述模数M的集合中的每个模数nu初始化分别与秘密指数d内的不同比特位置相对 应的多个查找表的指令。
[0024] 本文描述的多种实施例涉及一种编码有指令的非瞬时机器可读介质以及相关设 备和方法,所述指令用于由处理器执行以用于产生用于执行模幂运算的查找表,所述非瞬 时机器可读介质包括:用于初始化分别与秘密指数d的比特位置与余数系统RNS模数的多个 配对相对应的多个查找表的指令;用于当所述秘密指数d在与第一查找表Lo.dg对应的 比特位置处的值为〇时将所述多个查找表中的第一查找表Lo, k的值设置为
[0025] L〇imi:(at) = (S0 * aeL°)mod mt
[0026] 的指令,其中,ai是针对RNS模数中的模数nu的潜在RNS整数,5。是第一预定常数,eo 是第一预定指数;以及用于当所述秘密指数d在与第一查找表Lo,k相对应的比特位置处的值 为1时将所述多个查找表中的第一查找表Lo, mi的值设置为
[0027] LQm.(aL) = (S0 * a;e〇 * at )mod mt
[0028] 的指令。
[0029]多种实施例还包括:用于当所述秘密指数d在与最后的查找表Lk-1>mi相对应的比特 位置处的值为0时,将所述多个查找表中的第一查找表Lk-1>mi的值设置为
[0030] ife-i,m,(a/) - {iSk^7710^ * (ttirl)2efc_2) m〇d- m/.
[0031]的指令,其中,ai是针对RNS模数中的模数nu的潜在RNS整数,知-2是最后的预定常 数,ek-2是最后的预定指数,N是用于模幂运算的模数;以及用于当所述秘密指数d在与最后 的查找表相对应的比特位置处的值为0时将所述多个查找表中的第一查找表的 值设置为
[0032] Lk_lm.(ai) - ^(5^2?nod N) * (a^1)26^-2 * aL ^ mod mL [0033] 的指令。
[0034] 多种实施例还包括:用于当所述秘密指数d在与中间查找表对应的比特位 置处的值为〇时将所述多个查找表中的第一查找表k,mi的值设置为
[0035] Ljim.(aL) = * Sjmod N) * (af1)2^-1 * mod
[0036] 的指令,其中,ai是针对RNS模数mi中的模数mi的潜在RNS整数,心^是针对中间查找 表的先前预定常数,心是针对中间查找表的当前预定常数,eH是针对中间查找表的先前预 定指数,幻是针对中间查找表的当前预定指数,N是用于模幂运算的模数;以及用于当所述 秘密指数d在与中间查找表Lj, mi相对应的比特位置处的值为1时将所述多个查找表中的第 一查找表k,mi的值设置为
[0037] * SjMod iV) * * ol^ * at J mod m,i
[0038] 的指令。
[0039] 本文描述的多种实施例涉及一种用于提供白箱模幂运算的系统,包括:第一设备, 包括第一处理器和如上所述编码有用于由处理器执行以用于执行模幂运算的指令的非瞬 时机器可读介质;以及第二设备,包括第二处理器和如上所述编码有用于由处理器执行以 用于产生用于执行模幂运算的查找表的指令的非瞬时机器可读介质之一,其中,第二设备 产生由第一设备用来在不访问所述秘密指数d的情况下执行模幂运算的多个查找表。
【附图说明】
[0040] 为了更好地理解各实施例,现在参考附图,其中:
[0041] 图1示出用于实施本文描述的模幂方案的硬件系统100的示例;
[0042] 图2示出用于向用户设备提供安全内容和对该安全内容进行处理的软件应用的系 统的示例;
[0043] 图3示出用于计算模幂的方法的示例;
[0044] 图4示出用于在余数系统(RNS)中计算两个数的乘积的方法的示例;
[0045] 图5示出用于执行条件乘法的查找表的集合的第一示例;
[0046] 图6示出用于产生查找表的集合的第一示例的方法的示例;
[0047] 图7示出用于使用查找表执行条件乘法的方法的示例;
[0048] 图8示出用于执行条件乘法的查找表的集合的第二示例;
[0049] 图9示出用于产生查找表的集合的第二示例的方法的示例;
[0050] 图10示出用于执行条件乘法的查找表的集合的第三示例;
[0051] 图11示出用于产生查找表的集合的第三示例的方法的示例。
[0052] 为帮助理解,使用相同的附图标记来表示具有本质上相同或相似结构或本质上相 同或相似功能的元件。
【具体实施方式】
[0053] 本文给出的描述和【附图说明】了多个原理。因此可以理解的是,本领域的技术人员 将能够设计出虽然没有明确地描述或示出但体现了本公开的原理并包括在其范围之内的 各种布置。如本文的使用,术语"或"表示非限制性的或(g卩,和/或),除非另外地指示(例如 "否则"或"或者备选地")。此外,本文中描述的各种实施例并不是互斥的,并且可以组合以 产生包含本文中描述的原理的附加实施例。
[0054] 考虑到密码系统的上下文中的可能在计算模幂时涉及的过大值,希望实施用于高 效地执行这种功能的算法。本文描述的各方法利用对值的余数系统(RNS)表示法进行的平 方乘方法,以及对比初始底数和指数更小的值进行的蒙哥马利乘法,从而提供在计算成本 上比现有算法更少的算法。
[0055] 由于加密的环境和应用(诸如在不受信任平台上的应用)增加,最近已经致力于 "白箱密码"的概念,其中,密码方案被开发为即使密码实现对于攻击者公开也是安全的。白 箱密码涉及被工程化为在不受信任平台上执行的密码算法的软件实现的设计和分析。具体 地,这是特定设备的用户可以(用密钥)对用其公钥加密的消息解密,但是不能提取或获得 足够的信息以恢复该密钥的情景。此外,假设在这种实现中,用户可以是攻击者:例如,攻击 者可以完全访问软件实现,可以在任何时间暂停、改变和恢复软件实现的执行。
[0056]例如,在数字版权管理系统中,希望向内容消费者提供能够简单地将他们认证为 有权访问内容的一方的能力。然而,也希望防止内容消费者为了向其它方提供对仅原始内 容消费者有权访问的相同内容的访问的目的,而与其它方共享证书。
[0057]针对该情景的一个白箱方法在于向内容消费者提供使用为内容消费者分配的私 钥d对消息进行数字签名的能力,而不将该私钥d实际提供给内容消费者。为此,可以向内容 消费者提供可用于计算模幂的基于私钥d的预计算的值的查找表。例如,在各系统中,可以 由例如中央数字版权管理服务器向内容消费者提供查找表,所述中央数字版权管理服务器 用于向对受保护内容进行服务的一个或多个媒体服务器认证内容消费者。内容消费者可以 随后使用该查找表来计算数字签名,而不需要知道他们的私钥d的值。本文描述的各实施例 通过提供使设备能够在不实际知道秘密指数d的情况下使用该秘密指数d来计算模幂的查 找表,实现高效模幂方案的白箱实施。
[0058] 将理解,虽然在数字签名方案的上下文中解释本文描述的各示例,但是本文描述 的各方面可以适用于使用公钥对数据加密并使用私钥检索的数据加密方案。
[0059] 图1示出用于实施本文描述的模幂方案的硬件系统100的示例。硬件系统100可以 对应于可以参与密码系统方案中的几乎任何设备,例如,个人计算机,膝上型电脑、平板、移 动通信设备、服务器、笔记本、智能卡、近场通信(NFC)设备或其它设备。例如,硬件系统可以 对应于用于接收和渲染数字内容的机顶盒或者用于提供数字内容的服务器。本文描述的方 法的各种应用将明显可用于例如数字版权管理(DRM)、银行应用以及在诸如移动电话和电 视机顶盒的设备中保护密码密钥。
[0060] 如图所示,设备100包括经由一个或多个系统总线110互连的处理器120、存储器 130、用户接口 140、网络接口 150、和存储设备160。将理解的是,图1在一定程度上是抽象的 并且设备100的组件的实际组织可以比所示出的更为复杂。
[0061] 处理器120可以是能够执行存储在存储器130或存储设备150中的指令的任何硬件 设备。由此,处理器可以包括微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或 其他类似的设备。
[0062] 存储器130可以包括各种内容,例如L1、L2、L3高速缓存或系统存储器。因此,存储 器130可以包括静态随机存取存储器(SRAM)、动态RAM(DRAM)、闪存、只读存储器(ROM)、或者 其他类似存储器设备。
[0063]用户接口 140可以包括用于使得能够与诸如管理员的用户进行通信的一个或多个 设备。例如,用户接口 140可以包括显示器、鼠标、以及用于接收用户命令的键盘。在一些实 施例中,用户接口 140可以包括经由网络接口 150向远程终端呈现的命令行界面和图形用户 界面。
[0064] 网络接口 150可以包括用于实现与其他硬件设备的通信的一个或多个设备。例如, 网络接口 150可以包括配置成根据以太网协议进行通信的网络接口卡(NIC)。此外,网络接 口 150可以实现用于根据TCP/IP协议的通信的TCP/IP栈。网络接口 150的各种备选或附加的 硬件或配置将是显而易见的。
[0065] 存储设备160可以包括一个或多个机器可读存储介质,例如,只读存储器(R0M)、随 机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存设备、或类似的存储介质。在各个 实施例中,存储设备160可以存储由处理器120执行的指令或者处理器120可以操作的数据。
[0066] 例如,当硬件设备100被配置为根据本文描述的白箱密码系统对数据解密或对消 息进行数字签名时,存储设备160包括用于指示这种操作的密码系统实施161。如上所述,白 箱密码系统161可以利用一个或多个模幂步骤,如此,密码系统实施可以包括用于执行这种 模幂运算的平方乘算法163。另外,为了提供更多的高效计算,平方乘算法163可以使用蒙哥 马利乘法算法165。此外,如将在下文更详细的描述,蒙哥马利乘法算法165可以利用条件矢 量乘法算法167执行平方乘算法的条件运算。具体地,平方乘算法通过根据秘密指数d的值 执行乘法步骤来部分地计算bd mod n;然而,在白箱密码系统实施中,不向系统提供秘密指 数d的值。相反,本文描述的各实施例包括条件矢量乘法算法167,该算法无条件地由蒙哥马 利乘法算法167执行,并且使用由另一设备基于秘密指数d预计算的查找表169,以提供从平 方乘算法"去除"的条件的效果。例如,如下文的描述,条件矢量乘法算法167可以是可以使 用预计算的查找表以至少在某些方面引入条件效果的RNS乘法算法。
[0067] 在硬件设备100是向包括白箱密码系统实施的其它设备提供查找表的设备的情况 下,存储设备160包括用于创建查找表的密钥3元组171,该密钥3元组171包括公共指数e、私 人指数d、以及密钥模数N。存储设备170还包括用于创建将被其它设备使用的查找表的查找 表产生指令173。
[0068] 将会显而易见的是,被描述为存储在存储设备160中的各种信息可以附加地或备 选地存储在存储器130中。在这方面,存储器130还可以被视为构成"存储设备"并且存储设 备160可以被视为"存储器"。各种其它的布置将会是显而易见的。此外,存储器130和存储设 备160两者可以被视为"非瞬时机器可读介质"。本文所使用的术语"非瞬时"将被理解为排 除瞬时传播信号,但是包括包含所有形式的易失性和非易失性存储器的存储设备。
[0069] 尽管硬件设备100被示出为包括每个所描述的组件中的一个,可以在各实施例中 复制各个组件。例如,处理器120可以包括被配置为独立地执行本文中描述的方法或被配置 为执行本文中描述的方法的步骤或子例程的多个微处理器,使得多个处理器协同实现本文 描述的功能。在其它实施例中,诸如设备100被实施为云计算环境的那些实施例中,各组件 可以被物理地布置在各种机器中。例如,处理器120可以包括第一数据中心服务器中的第一 微处理器以及第二数据中心服务器中的第二微处理器。各种其它的布置将会是显而易见 的。
[0070] 图2示出用于向用户设备提供安全内容和对该安全内容进行处理的软件应用的系 统的示例。所述系统包括内容服务器200、应用服务器220、用户设备250和252、以及数据网 络240。用户设备250和252可以经由数据网络240请求对内容服务器200提供的安全内容的 访问。数据网络240可以是提供用户设备250和252、内容服务器200以及应用服务器220之间 的连接的任何数据网络。用户设备250和252可以是多个设备中的一个,例如机顶盒、媒体流 传输器、数字视频记录器、平板计算机、移动电话、膝上型计算机、便携式媒体设备、智能手 表、台式计算机、媒体服务器等。
[0071]针对访问的用户请求可以先获取可用于处理内容服务器200提供的安全内容的软 件应用的下载。可从应用服务器220下载软件应用。使用上文描述的技术并且如上文操作, 可能会混淆软件应用。一旦用户设备250、252安装软件应用,则用户设备可以从内容服务器 200下载安全内容,并使用下载的软件应用来访问安全内容。例如,下载的软件应用可以对 从内容服务器接收的加密内容进行解密。在其他实施例中,软件应用可以执行其他安全操 作,例如,加密、数字签名产生和验证等。
[0072]内容服务器200可以控制向用户设备250、252提供的对安全内容的访问。因此,当 内容服务器200接收针对安全内容的请求时,内容服务器200可以向请求用户设备发送安全 内容。类似地,应用服务器220可以控制向用户设备250、252提供的对软件应用的访问。因 此,当应用服务器220接收针对软件应用的请求时,应用服务器220可以向请求用户设备发 送软件应用。在向用户设备提供软件应用或安全内容前,各服务器还可以认证请求软件应 用或安全内容的用户设备。
[0073]内容服务器200可以包括经由一个或多个系统总线708互连的处理器202、存储器 204、用户接口 206、网络接口 210、以及内容存储设备212。将要理解的是,图2在一定程度上 是抽象的并且设备200的组件的实际组织可以比所示出的更为复杂。
[0074]处理器202可以是能够执行存储在存储器204或存储设备212中的指令的任何硬件 设备。由此,处理器可以包括微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或 其他类似的设备。
[0075] 存储器204可以包括各种内容,例如L1、L2、L3高速缓存或系统存储器。因此,存储 器204可以包括静态随机存取存储器(SRAM)、动态RAM(DRAM)、闪存、只读存储器(ROM)、或者 其他类似存储器设备。
[0076]用户接口 206可以包括用于使得能够与诸如管理员的用户进行通信的一个或多个 设备。例如,用户接口 206可以包括显示器、鼠标、以及用于接收用户命令的键盘。
[0077] 网络接口 210可以包括用于实现与其他硬件设备的通信的一个或多个设备。例如, 网络接口 210可以包括配置成根据以太网协议进行通信的网络接口卡(NIC)。此外,网络接 口 210可以实现用于根据TCP/IP协议的通信的TCP/IP栈。网络接口 210的各种备选或附加的 硬件或配置将是显而易见的。
[0078] 内容存储设备212可以包括一个或多个机器可读内容存储介质,例如,只读存储器 (R0M)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、或类似存储介质。在 各实施例中,内容存储设备212可以存储要提供给用户的内容。
[0079]应用服务器220包括与内容服务器200中的元件相似的元件,并且对内容服务器 200中的相似元件的描述适用于应用服务器220。此外,应用存储设备232替换内容存储设备 212。此外,应该注意的是,内容服务器和应用服务器可以在单个服务器上实现。而且,这样 的服务器可以实现在分布式计算机系统以及云计算机系统上。
[0080] 在各实施例中,应用服务器220可以具有用于每个用户设备250和252的私钥指数, 并且使用这些值来产生将发送给用户设备250和252的查找表的集合。之后,用户设备250、 252可以利用查找表对从内容服务器接收到的内容解密或者对将发送给内容服务器的消息 进行数字签名(从而对各个用户设备250、252进行认证)。本文描述的方法和系统的各种其 他应用将是显而易见的。
[0081] 将理解的是,可以以各种方式在图2的系统或类似系统中部署和使用模幂运算、编 码或数字签名方法。例如,用户设备250、252可以由制造商或其它经销商提供,并被预配置 为向内容服务器200发送签名消息以请求提供内容。备选地,用户设备250、252可以不完全 预配置为执行这种操作;相反,应用服务器220可以与用户设备250、252通信以使这种配置 生效。例如,应用服务器可以发送用于实施本文描述的方法的代码指令或定义一个或多个 查找表的数据。
[0082]图3示出用于计算模幂的方法300的示例。方法300可以由执行平方乘算法163的处 理器(例如图1的处理器120)执行。将理解的是,方法300可以完成计算:
[0083] bd mod n
[0084]以用于例如用于加密或数字签名的密码系统。
[0085] 方法300开始于步骤305,并进行到步骤310,在步骤310,处理器接收用于计算模幂 的值b、d和n。如将在下文更详细的描述,本文描述的各种修改能够实现处理器在步骤310或 其它步骤中没有接收到秘密指数d的值的方法300。相反,处理器可以被提供有或者通过其 他方式具有对由秘密指数d携带的比特数目的访问。处理器随后在步骤315通过将索引变量 j初始化为在比特上比秘密指数d的长度小2的值,来开始秘密指数d的比特的迭代。处理器 还在步骤320将工作值c初始化为等于底数值b。
[0086] 在步骤325,处理器通过对c的当前值进行平方并以模数N对结果进行模运算,来执 行"平方"步骤。从流程图中可以看到,对每一次迭代都执行该步骤325,并且该步骤可以被 视为"无条件"步骤。接着,处理器通过确定秘密密钥的第j比特是否被设置为值"1",来开始 方法300的"乘法"步骤。如果是的话,则处理器在步骤335将当前工作值乘以底数值,并且模 N。另一方面,如果秘密密钥的第j比特被设置为值"0",则处理器进行到步骤340而不改变工 作值(或者等效地,在步骤337中将工作值乘以1)。可以看到,仅在相应的秘密密钥比特被设 置为"1"时才执行"乘法"步骤,因此其可被视为"条件"步骤。换言之,处理器有条件地将工 作值乘以底数值。
[0087] 在执行了无条件的平方和有条件的乘法步骤之后,处理器在步骤340对索引值j进 行递减,并在步骤345确定附加的秘密指数比特是否保持被处理。如果j不小于零(即,d中的 附加比特保持),则方法300循环回到步骤325。否则,计算完成,处理器在步骤350返回作为 结果的最终值c,并且方法300在步骤355结束。
[0088]在各实施例中,如将在下文更详细的解释,步骤330、335和337被无条件执行的单 个乘法步骤360替代。具体地,在处理器不具有对秘密指数d的访问的白箱实施中,处理器本 身不能够执行步骤330。相反,本文描述的各实施例将工作值c乘以从查找表检索到的、被另 一设备基于值d预计算的值。处理器被提供有针对秘密指数d的从位置0到k-2的每个比特的 至少一个查找表。当秘密指数d在与查找表相对应的比特处具有值1时,查找表将提供有效 的值b(因此对应于步骤335);类似地,当秘密指数d在与查找表相对应的比特处具有值0时, 查找表将提供有效的值1 (因此对应于步骤337)。
[0089]根据各实施例,值b和c可以在余数系统(RNS)中表示。根据RNS,整数被表示为以更 小的(互质)整数为模得到的多个不同的余数。考虑RNSS_= {nh, m2,…mn},其中, 任意两个模数m的最大公约数是URNS模数被表示为M = 整数z € !/Ml.在 RNSS _^中由矢量史=(A, X2,表示,其中:
[0090] xi = x mod mi, 1 < i < n
[0091 ] 可以通过对其应用中国剩余定理来实现对由表示的整数x的计算。
[0093]对于在RNS中表达的乘法值,蒙哥马利乘法可以用于计算针对蒙哥马利基数R的a* MirVod N,其通过将模数N的合适倍数添加到乘积使得其可以被R整除。这可以通过计算下 式来实现:
[0095] 可以预计算值(-rrVod r),以在运行时进一步优化蒙哥马利乘法的执行。应注意, 右侧计算以N为模的蒙哥马利乘法而不实际减少模N的任何值。如此,蒙哥马利乘法适用于 RNS设置。
[0096] 蒙哥马利乘法的实施执行以R为模的计算。通常希望将蒙哥马利基数R设置为等于 RNS模数M。在这种配置中,当用具有模数M的RNS基表示数时,除以R = M的除法是不可能的 (因为在E/M2中M不是可逆的)。这可以通过引入具有辅助rns模数AT = 的辅 助基=(nVi, m''2,…m、]来避免,使得gccKM',M)=gcd(M/,N)=gcd(M,N) = l并且4N 〈iKif。对于执行了除以R的除法的步骤,蒙哥马利乘法可以随后从#知转换为你'
[0097]图4示出用于在余数系统(RNS)中计算两个数的乘积的方法400的示例。方法400可 以由执行蒙哥马利乘法算法165的处理器(例如处理器120)执行。在各实施例中,方法400可 以被调用为执行方法300的步骤325、335、337或360中的计算。
[0098] 方法开始于步骤405,并进行到步骤410,在步骤410,处理器接收值A、B和N以计算 A*B mod N。例如,在处理器针对方法300的步骤325调用方法400的情况下,A和B两者都可以 是来自于该方法300的工作值c。作为另一示例,在处理器针对方法300的步骤335调用方法 400的情况下,A可以来自于该方法300的工作值c,并且B可以是底数值b。在单个无条件步骤 用于乘法步骤360的情况下,A可以是工作值c,B可以是查找表访问的结果(因此,当查找表 被初始计算时,取决于秘密指数d的相应比特,B可以有效地是底数值b或1)。
[0099] 在步骤415,处理器选择两个RNS基激k到激\以用于表示值A、B和中间值。在一 些实施例中,RNS基激^到凝^中的一个或两个可以被硬编码进算法或者被预选择。在一 些实施例中,可以根据第一RNS基激k接收已经是RNS形式的值A和B。
[0100] 在步骤420,处理器通过计算两个RNS基中的乘积来开始执行蒙哥马利乘法公式的 面向非除法的方面:
[0101 ] f =:技 * 其中fi = ai*bi mod mi
[0102] f = d' 6' 其中i = Y i*t/ i mod n/ i
[0103] 其中,1 < i <n。之后,在步骤425,处理器将基级中的f =/* -计算为qi = fi*-N-imod mi。将理角军的是,项_泣_1是表示(-N-imod R)的矢量。
[0104] 接着,在执行蒙哥马利乘法公式的面向除法的方面之前,处理器将(在基激V中表 示的)|转换为(在基缀\中表示的)f。处理器可以根据任何方法执行该转换,例如,使用 中国剩余定理将|转换为非RNS整数,并接着通过用基中的每个模数m ':计算整数的 模,来将该整数转换为基綴"N中的RNS集合。
[0105] 在步骤435,处理器通过计算下式来执行蒙哥马利乘法公式中的其余计算:将 c'=(广 + * M-1 计算为= (/' + 分、.*.~、)* 饥f1 爪〇.这饥Y。
[0106] 结果P与在基中表示的A*B mod N同余。处理器在步骤440中通过例如应用 中国剩余定理并执行与基爾相关联的多次模运算,来将结果转换回初始的基顔>N。 处理器可以随后在步骤445返回结果芒(或者返回非RNS结果c),并进行到步骤450。
[0107] 在各实施例中(诸如其中0 < A,B < 2N,并且ANaa'的实施例),所述输出以2N为 界,并且可以被蒙哥马利乘法算法400的下一次调用再利用。
[0108] 如上所述,本文描述的系统和方法通过参考查找表的预计算的集合中的值,来将 检查秘密指数的比特的条件功能合并到无条件乘法语句中。返回参照图3,在简单情况下, 当相应的秘密指数d比特为"1"时,查找表将返回底数值b(步骤335),当相应的秘密指数d比 特为"1"时,将返回值"1"(步骤337)。如此,工作值c可以无条件地乘以查找表的结果。
[0109] 图5示出用于执行条件乘法的查找表的集合500的第一示例。查找表500均包括可 用于值b的每个RNS余数的条目(因为,在各实施例中,c将通过与它们的相应RNS余数相乘而 乘以b或1)。在一些实施例中,诸如将在下文描述的那些备选中,将针对每个RNS模数提供不 同的查找表(由于条目的数目以及可能的相应值将针对每个不同的模数而不同)。为了简化 图5的初始示例,将假设表500包括基中的最大模数的每个可能余数的条目。
[0110] 第一表510指示秘密指数d的第j比特被设置为"1"的情况,则所述值将与索引值j 相同。换言之,Lj(ai)=ai mod mi。如此,第一记录512指示针对索弓丨"0"的值为"0",第二记 录514指示针对索引"1"的值为"1",并且第一记录516指示针对索引"2"的值为"2"。表510可 以包括附加的条目518或更少的条目(例如,相应的RNS模数为2)。
[0111] 第二表520指示秘密指数d的第j比特被设置为"1"的情况,则每个条目的值将为1, 不论索引如何。换言之,Lj(ai) = l。如此,条目522、524、526都指示值1。表510可以包括附加 的条目518或更少的条目(例如,相应的RNS模数为2)。
[0112] 在各实施例中,白箱密码系统实施将被提供有与图5提供的示例相符的表的集合。 通过将工作值c的余数无条件地乘以与底数值b的余数相对应的查找表值,可以在不知道秘 密指数d的实际值的情况下实现步骤330、335、337的功能。
[0113] 对于利用表500的白箱密码系统实施,另一设备首先计算将被提供给白箱实施的 表。图6示出用于产生查找表的集合的第一示例的方法600的示例。方法600可以由处理器 (例如执行查找表产生指令173的处理器120)执行。
[0114] 方法开始于步骤605并进行到步骤610,在步骤610,处理器接收秘密密钥d以及潜 在索引A的集合。例如,索引的集合可以包括各个整数值a,使得0 < i <m,其中,m是RNS模数, 诸如基的最大RNS模数或者来自于查找表的集合将与之关联的基的特定模数。
[0115] 方法600进行到步骤615,在步骤615,处理器将查找表索引p初始化为0,并且随后 在步骤620,处理器将新查找表L P初始化为对应于秘密指数d的第p比特。例如,处理器可以 在A中创建针对每个索引的条目,并将值初始化为1、0、空值(null)、或者适合于实施的特例 的一些其它值。处理器还在步骤625将另一索引i初始化为0,以在索引的集合A中迭代。
[0116] 在步骤630,处理器确定秘密指数d的第p比特是否等于0。如果是,则处理器在步骤 635、640、645中循环,并将查找表L P中的每个条目设置为等于1。否则,处理器在步骤650、 655、660中循环,并将查找表"的每个条目设置为等于该条目的索引(即,LP(ai)= ai)。在查 找表中为每个条目填入值之后,处理器在步骤665中将p递增,并随后在步骤670通过确定p 目前是等于还是超过秘密指数d的比特长度,来确定附加的查找表是否仍然要被创建。应注 意,在方法300中,不考虑第k-1比特。如此,在各实施例中,作为替代,步骤670可以确定p是 大于还是等于d长度减1。
[0117] 如果附加的查找表仍然要被创建,则方法600循环回到步骤620。否则,处理器例如 通过将表L本地地存储以用于稍后使用或者通过将表L发送到白箱密码系统实施,来返回表 L。然后,方法600在步骤680结束。
[0118] 图7示出用于使用查找表执行条件乘法的方法700的示例。方法700可以由执行条 件矢量乘法算法167的处理器(例如处理器120)执行。当方法400被调用为计算平方乘方法 300的"乘法"步骤360时,可以例如通过蒙哥马利乘法方法400的步骤420来调用方法700。
[0119] 方法700开始于步骤710并进行到步骤720,在步骤720,处理器接收RNS矢量值5和 g(与方法400中的在和g,或者茁:和京相对应;或者与方法300中的c和b相对应)以及到秘密 指数中的当前索引(与方法300中的索引j相对应)。处理器还在步骤730例如通过创建与值 被初始化为〇、l、null或其它合适值的芒和g;相同的长度的矢量,来初始化结果矢量彦。在 步骤740,处理器将模数索引i初始化为值0。
[0120] 处理器随后在步骤750通过计算gi = Lj(bi)*Ci mod mi来开始计算结果矢量点的余 数值。在步骤760,处理器对模数索引进行递增,并在步骤770确定索引目前是否大于基集合 中的最大索引。如果否,则方法循环回到步骤750。否则,处理器在步骤780返回结果矢 量#,并且方法700在步骤790结束。
[0121] 考虑到上文,将清楚的是,本文描述的实施例通过无条件地将c乘以基于d预计算 的查找表的值,使得能够在不访问值d的情况下实现取决于值d的条件计算c*b。例如,在处 理器针对使得山=0的索引j执行方法700的步骤750的情况下,查找表b将被预计算为类似 于表520。如此,Lj(bi)将返回1,并且步骤750将有效地计算l*c mod m(从而对应于方法300 的步骤337)。类似地,在处理器针对使得dj = 1的索引j执行方法700的步骤750的情况下,查 找表Lj将被预计算为类似于表510。如此,Lj(bi)将返回bi,并且步骤750将高效地计算b*c mod m(从而对应于方法300的步骤335)。将理解的是,查找表500还可以被预计算以替代地 取决于值d来存储合适的乘法(bi*ci mod mi或者ci mod mi),从而通过降低存储效率来提高 处理效率,因为这样会平方地增加查找表的大小。
[0122] 虽然上述描述使得能够在不实际提供d值的情况下实现以mod N的计算,并从而 在白箱设置中提供某种程度上增加的安全性,但是可以访问查找表的攻击者仍然可能辨别 出秘密指数d的值。具体地,攻击者可能推导出:被值"1"填充的每个表,d的相应比特是"0", 反之为"1",从而攻击者能够确定秘密指数的值。如此,下面提供通过使查找表模糊来增加 实施的安全性的各种方法。
[0123] 图8示出用于执行条件乘法的查找表的集合800的第二示例。根据该示例,恒定值S 通过乘法被并入查找表,并且稍后使用有效逆函数从之后的表中"移除"。将理解,可以利用 加法或者备选的乘法中的运算。例如,可以根据任何可逆函数来添加、减去或者并入恒定值 5〇
[0124] 如之前针对图5的示例所示出和描述的,表集合800包括被平方乘算法考虑的针对 秘密指数d的每个比特的表。另外,表的值可以取决于RNS基的模数nu。如此,可以针对 RNS基的每个模数提供表800的不同集合。虽然最终表被示出为对应于第k-1比特,但是 在平方乘算法不针对第k_l比特执行任何特定操作的各实施例中,最终表850、860实际上可 以对应于第k-2比特。此外,还将清楚的是,在下文中,虽然图3的平方乘方法300从k-2到0往 回迭代,但是示出的表的顺序为从0到k-1(或k-2)。在各实施例中,可以以相反顺序产生表, 使得Lo是"最后的"表,而Lh (或Lk-2)是"第一"表。
[0125] 如图所示,第一表Lo810、820将值1或ai(取决于do的比特值)乘以与第一表相对应 的常数S〇,并以模数mi为模。因此,当(!〇 = 0时,利用被确定为Lj(ai) = 5〇mod mi的值来计算表 810。在示出的特定示例中,任意选择值8〇 = 2,如此,每个条目的值被设置为"2"(假设nu>2)。 另一方面,当do=l时,替代地提供表820。这里,值被确定为Lj(ai)=5〇*ai mod mi。如图所 示,条目822、824、826均分别具有不同的值0、2、4。
[0126] 对于第一表和最后的表之间的表Lj(其中,0〈j〈k-l),通过例如将值乘以常数5」,来 将附加的常数h并入表。之前,在该步骤可以使用任何可逆函数。另外,为了使之前的将常 数Sy并入表的效果逆向,将该常数的倒数并入值中。考虑到当考虑k表时平方乘方法300 将通过步骤325的操作而将先前的常数8^平方,当被因数分解为值时先前的常数心^是 Sj^mod N。因此,中间表830、840同时移除先前常数,通过将项Sjl^mod N:并入表的 值中来将新常数并入工作值中。
[0127] 因此,当山=0时,利用被确定为1^(31) = (§丨5]二21娜)£11^)111〇£111^的值来计算 表830。在示出的特定示例830中,每个条目的值被设置为"5"(假设姐>5)。另一方面,当山=1 时,替代地提供表840。这里,值被确定为Lj(ai) = (SjSjl^mod. N) * aj mod m;。如图所 示,条目842、844、846均分别具有不同的值0、5、3。
[0128] 对于最后的表U-i,没有附加的常数被并入值中,相反,移除将被并入的最后的常 数。因此,当dk-1=〇时,利用被确定为LjGi) = (Sf2mod N) mod 〇1丨的值来计算表850。 在示出的特定示例850中,每个条目的值被设置为"6"(假设nu>6)。另一方面,当山=1时,替 代地提供表860。这里,值被确定为Lj(ai) = (Sj^2mod * ai mod mi。如图所示,条 目862、864、866均分别具有不同的值0、6、5。将理解,当被实际计算时,每个表可以包括附加 的条目818、828、838、848、858、868或更少的条目(例如,相应1?吧模数为2的情况)。
[0129] 因此,将被应用的(在最后的表之前的)每个表通过将查找表乘以(或加上、减去 等)任意常数来使值模糊。此外,(在第一表之后的)每个表通过使用逆函数从查找表值移除 或"抵消"该任意常数来使该模糊的效果无效,所述逆函数考虑i)来自用于初始地将值并入 先前表中的逆运算,以及ii)在先前表被访问之后对工作值执行的临时函数。在示出的特定 示例中,可逆函数是被平方的倒数,因为将通过平方乘算法利用表。实现通过其它算法利用 表的修改将是显而易见的。
[0130] 图9示出用于产生查找表的集合的第二示例的方法900的示例。方法900可以被处 理器(例如执行查找表产生指令173的处理器120)执行。
[0131] 方法开始于步骤903并进行到步骤905,在步骤905,处理器接收秘密密钥d以及模 数的集合:处理器随后通过步骤907、910、913和915初始化第一传送(pass),在步骤 907、910、913和915中执行以下操作:初始化模数索引i,初始化比特位置索引p,针对每个条 目将用于组合模数索引和比特位置索引的查找表LP,:初始化为初始值1,以及初始化表索引 a。在步骤917,处理器产生常数A的集合,使得A包含针对除了秘密指数d的比特之一以外 的所有比特的常数8。换言之,A中的元素的数目等于d的长度减一。
[0132] 接着,处理器在步骤920通过确定当前比特索引是否小于d长度减2来产生用于包 括在表的条目中的值。如果是,则当前表不是"最后的"表,并且来自A的常数将被并入值 中;在步骤923,处理器将L P>1(a)处的值乘以Sp。否则,方法跳到步骤925。
[0133] 在步骤925,处理器确定当前比特索引是否大于0。如果是,则当前表不是"第一" 表,并且来自A的常数将从表的值中消除。在步骤927,处理器将LP,如)处的值乘以601:, 随后在步骤930,以N为模对LP>1(a)中的当前值进行模运算。否则,方法900跳到步骤933。
[0134] 在步骤933,处理器确定秘密密钥dP的当前比特是否等于"1"。如果是,则处理器在 步骤933通过将L P,da)处的当前值乘以a来将表索弓|a并入LP,da)处的值。否则,方法900跳 到步骤937。由于步骤933是实际上区分基于d中的"1"比特产生的表与基于d中的"0"比特产 生的表的步骤,因此步骤935可以被视为"区分步骤"。在步骤937,处理器以当前模数nu对 L P>1(a)处的值进行模运算,从而完成LP>1(a)处的值的计算。
[0135] 处理器接着在步骤940将表索引a递增,并在步骤943确定对于表LP, i是否所有的潜 在表索引a都已经被处理。如果a还未等于nu,则方法900循环回到步骤920,在步骤920,针对 更新的a计算表L P>1中的下一个条目。
[0136] 否则,处理器在步骤945将比特索引p递增,并且随后在步骤945确定留在秘密指数 中的附加的比特是否将被处理。如果P还未等于d长度减1,则方法将循环回到步骤913,在步 骤913,处理器将基于新的比特索引开始创建当前模数的下一个表。
[0137] 一旦处理了将被分配表的所有比特,则方法进行到步骤950,在步骤950,处理器将 模数索引i递增,并随后进行到步骤953,在步骤953,处理器确定是否还存在要被处理的附 加模数。如果i还未等于基集合的长度,则方法循环回到步骤910,在步骤910,处理器将 开始针对下一个模数nu创建新的表集合。否则,处理器在步骤955返回产生的表集合(例如, 将表分布到白箱实施),并且方法900在步骤957结束。
[0138] 使用在方法900中产生的表实质上等同于使用由方法600产生的表。例如,白箱密 码系统实施可以使用由方法900产生的表来利用方法700来产生模幂,仅需要将步骤750稍 微修改为假定被访问。换言之,步骤750被修改为访问与当前模数nu相关联的查找表。
[0139] 虽然增加了安全性的附加级别,但是在能够访问查找表的情况下,攻击者仍然可 能辨别出d的值。具体地,即使与"0"比特相关联的表不再始终被提供有恒定值1(如第一示 例集合500),但是与"0"比特相关联的那些表是输入不变地。从示例表810、830、850中可以 看到,输出值始终分别是"2"、"5"或"6",而表820、840、860的输出基于输入变化。知道了这 点,攻击者可能推算出秘密指数d的比特。
[0140] 图10示出用于执行条件乘法的查找表的集合1000的第三示例。根据该示例,输入 索引#的恒定值和附加幂两者通过乘法被并入查找表值,并且接着使用有效逆函数从稍后 的表中"移除"。将理解的是,可以利用加法或者备选的乘法中的运算。例如,可以根据任意 可逆函数加上、减去或者并入恒定值8。
[0141] 如之前针对图5和图8的示例所示出和描述的,表集合1000包括被平方乘算法考虑 的针对秘密指数d的每个比特的表。另外,表的值可以取决于RNS基的模数nu。如此,可 以针对RNS基激 1N的每个模数提供表1000的不同集合。虽然最终表被示出为对应于第k-1比 特,但是在平方乘算法不针对第k-1比特执行任何特定操作的各实施例中,最终表1050、 1060实际上可以对应于第k-2比特。此外,还将清楚的是,在下文中,虽然图3的平方乘方法 300从k-2到0往回迭代,但是示出的表的顺序为从0到k-1(或k-2)。在各实施例中,可以以相 反顺序产生表,使得L〇是"最后的"表,而Lh (或Lk-2)是"第一"表。
[0142] 如图所示,第一表LolOlO、1020将值1或ai(取决于do的比特值)乘以对应于所述表 的输入值的幂和常数S Q,模以模数mi。从而,当dQ = 0时,使用确定为 Lj(ai)= (50 * af^modmi的值计算表1〇1〇。在所示的特定示例中,条目1〇12、1〇14、 1016分别是"0"、"2"和T (假定mi>2)。另一方面,当dQ=l时,作为替代,提供表820。这里,值 被确定为Lj(ai) = (5〇 * a:f。* aOmodmi。如图所示,条目i〇22、i〇24、i〇26分别均分 别具有不同的值〇、2、2。
[0143] 对于第一表和最后的表之间的表Lj(其中,0〈j〈k-l),例如通过将值乘以输入的幂aie U]和常数将输入的幂afU和附加的常数~并入表。之前,在该步骤可以使用任何可逆函 数。另外,为了使之前的将常数8^和幂并入表的效果逆向,将这些值的倒数并入值中。 考虑到当考虑k表时平方乘方法300将通过步骤325的操作而将先前的常数5^和幂 aie[H]平 方,当被因数分解为值时先前的常数8^和幂是SgmodN和(af1产[W。因此,中 间表1030、1040同时移除先前常数,通过将项O^^^mod iv) * (ar1)^-1 * f并入表 的值中来将新常数并入工作值中。
[0144] 因此,当dj = 0时,利用被确定为ii(%) = ((.¥AmodW)* (江厂1)2~一i * a?)mo:dm( 的值来计算表1030。在示出的特定示例1030中,条目的值被分别设置为0、5和5(假设mi>5)。 另一方面,当dj = l时,替代地提供表1040。这里,值被确定心(屮)=(((^p^mod /V ) * (o^1)2,.1 * af * 如图所示,条目 1042、1044、1046均分别具有不同的值0、5、 3〇
[0145] 对于最后的表Lw,没有附加的常数或幂被并入值中,相反,移除将被并入的最后的常 数和幂。因此,当dk-1 = 0时,利用被确定为心如)=(<^2mod iV ) * (OM-O mod 的值来计 算表1050。在示出的特定示例1050中,条目的值被分别设置为0、6和6(假设血>6)。另一方面,当山 =1时,替代地提供表1060。这里,值被确定为心(屯)=(Wi 2m〇diV_)* 2aOmod瑪。如 图所示,条目1062、1064、1066均分别具有不同的值0、6、5。将理解,当被实际计算时,每个表 可以包括附加的条目1018、1028、1038、1048、1058、1068或更少的条目(例如,相应RNS模数 为2的情况)。
[0146] 图11示出用于产生查找表的集合的第三示例的方法1100的示例。方法1100可以被 处理器(例如执行查找表产生指令173的处理器120)执行。
[0147] 方法1100大部分与方法900类似,除了添加了一些新步骤。具体地,在在步骤917产 生了常数A的集合之后,处理器产生指数E的集合,使得E包含针对除了秘密指数d的比特之 一以外的所有比特的指数e。换言之,E中的元素的数目等于d长度减一。
[0148] 另外,在步骤1123、1127、1130保留并入常数Sp和5^的步骤923、927、930,但是现 在被保持为在步骤1119初始化的临时变量S。添入两个附加的步骤1124、1131,以分别将表 索引的幂并入条目的值和从条目消除表索引的幂。具体地,针对除了每个模数的最后的表 以外的所有表执行步骤1124,并且将表条目的当前值乘以由E中的与当前比特相对应的指 数e确定的幂;在这里的示例中,处理器将幂议,并入表条目。步骤1131通过并入逆函数来消 除先前的幂(考虑平方乘算法或其它算法的效果);在这里的示例中,处理器将幂 并入表条目。将理解的是,对于给定的余数整数ai,模逆(modular inverse) a,-1 = (a-1 mod A〇 mod m^。步骤1131还将临时常数5并入表条目。修改的方法lioo 的结果是针对每个模数m的表的集合,其将模糊常数和幂两者并入其值中,并随后消除这 种模糊的效果。例如,如上所述,可以通过除乘法以外的可逆数学函数来并入常数或幂。例 如,可以将常数~添加到一个表中的值中,并在下一个表中作为S p2减去。此外,方法可以使 用用于并入指数和幂的函数的组合。例如,表中可以乘以常数s P,并且在其中添加幂。作 为另一示例,第一表中可以乘以常数sP,并且后续的表中可以添加另一常数5^(同时消除 先前的常数s P)。一些实施可以不消除紧随的表中的每个模糊项;相反,考虑到由平方乘(或 其它算法)执行的附加运算,消除操作可以发生在按照顺序的两个或更多个表之前。例如, 第一表中可以乘以常数~,第二表可以仅乘以1(例如,如果d中的相应比特是"〇"),并且第 三表可以通过乘以Sf4:来消除常数sp(考虑将在中期发生的两个平方运算)。此外,一些实 施可以不并入常数,而是仅利用幂或另一个项作为模糊因子。将理解,各种模糊技术可以被 组合为使得不同的表适用不同的模糊技术。例如,在表集合内,一些表可以并入常数,其它 的表可以并入幂,而另一些表可以不并入任何模糊项。用于实施这种备选实施例的各种技 术以及进一步的修改将是显而易见的。
[0149] 根据上文,各种实施例实现在白箱设置中的模幂的高效计算。例如,通过提供基于 与模幂计算中的项相对应的秘密指数而计算出的查找表,白箱实施可以被提供有在不具有 对秘密指数的访问的情况下计算模幂的方法。此外,通过各种模糊技术,可以保护秘密指数 的值不会由于对提供的表的分析而被发现。从上文中,各种附加利益将是显而易见的。
[0150] 从上述描述中可以明显看出,本发明的各种示例性实施例可以通过硬件来实现。 此外,各实施例可以被实现为在非瞬时机器可读存储介质(例如易失性或非易失性存储器) 上存储的指令,所述指令可以被读取并通过至少一个处理器来运行以执行这里详细描述的 操作。机器可读存储介质可以包括用于以机器可读的形式存储信息的任何机制,例如个人 或膝上型计算机、服务器或其他计算设备。因此,非瞬时机器可读存储介质排除瞬时信号, 但可以包括易失性和非易失性存储器,包括但不限于只读存储器(ROM)、随机存取存储器 (RAM)、磁盘存储介质、光存储介质、闪存设备和类似的存储介质。
[0151]本领域技术人员应该理解的是,本文中的任意框图表示实现本发明的原理的说明 性电路的概念示图。类似地,将理解的是,任何流程图、流程示意图、状态转换图、伪代码等 表示可以实质上表示在机器可读介质中并且因此由计算机或处理器来执行的各种处理,而 不论这种计算机或处理器是否被显式地示出。
[0152]虽然参照其特定方面具体描述了各实施例,可以理解的是本发明可以采用其它实 施例并且它的细节可以在各种明显的方面进行修改。本领域技术人员非常清楚,可在本发 明的精神和范围内实现改变和修改。相应地,以上公开、描述和附图仅仅是用于说明性的目 的,而不应以任何形式限制仅由权利要求限定的本发明。
【主权项】
1. 一种编码有指令的非瞬时机器可读介质,所述指令由处理器执行以执行模幂运算, 所述非瞬时机器可读介质包括: 用于迭代地计算模幂bd mod η的指令,包括: 用于求工作值c的平方的指令;以及 用于根据指数d的比特有条件地将工作值c乘以底数值b的指令,包括: 用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令。2. 根据权利要求1所述的非瞬时机器可读介质,其中, 在余数系统RNS中表示所述工作值c和所述底数值b,并且 用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令包括:将 表示所述工作值c的多个工作RNS整数乘以与表示所述底数值b的多个底数RNS整数相关联 的多个查找表条目。3. 根据权利要求2所述的非瞬时机器可读介质,其中,用于将表示所述工作值c的多个 工作RNS整数乘以与表示所述底数值b的多个底数RNS整数相关联的多个查找表条目的指令 包括: 用于将表示所述工作值c的所述多个工作RNS整数中的工作RNS整数乘以与表示所述底 数值b的所述多个底数RNS整数中的底数RNS整数相关联的查找表条目的指令,所述查找表 条目来自与对应于所述底数RNS整数的RNS模数相关联的查找表。4. 根据权利要求1所述的非瞬时机器可读介质,其中, 用于迭代地计算所述模幂的指令包括:用于在所述指数d的多个比特位置进行迭代的 指令;以及 用于将所述工作值c无条件地乘以与所述底数值b相关联的查找表条目的指令包括:用 于利用多个查找表中与当前比特位置相关联的查找表的指令。5. 根据权利要求1所述的非瞬时机器可读介质,其中,用于根据指数d的比特有条件地 将工作值c乘以底数值b的指令包括:用于执行蒙哥马利乘法的指令,以及 用于执行蒙哥马利乘法的指令调用所述用于将所述工作值c无条件地乘以与所述底数 值相关联的查找表条目的指令。6. 根据权利要求1所述的非瞬时机器可读介质,还包括: 用于从另一设备接收由所述用于将所述工作值c无条件地乘以与所述底数值相关联的 查找表条目的指令使用的查找表的集合的指令。7. -种编码有指令的非瞬时机器可读介质,所述指令由处理器执行以产生用于执行模 幂运算的查找表,所述非瞬时机器可读介质包括: 用于初始化分别与秘密指数d内的不同比特位置相对应的多个查找表的指令; 用于产生用于添入所述多个查找表中的值的指令,包括: 用于当所述秘密指数d在与查找表相关联的比特位置处携带第一比特值时根据第一方 法产生针对所述查找表的值的指令; 用于当所述秘密指数d在与查找表相关联的比特位置处携带与第一比特值不同的第二 比特值时根据与第一方法不同的第二方法产生针对所述查找表的值的指令。8. 根据权利要求7所述的非瞬时机器可读介质,其中,用于产生用于添入所述多个查找 表中的值的指令包括:用于模糊所产生的值的指令。9. 根据权利要求8所述的非瞬时机器可读介质,其中,用于模糊所产生的值的指令包 括: 用于对用于添入第一查找表中的第一值执行第一数学函数的指令;以及 用于对用于添入第二查找表中的第二值执行第二数学函数的指令,其中,第二数学函 数是第一数学函数的有效逆函数。10. 根据权利要求9所述的非瞬时机器可读介质,其中: 第一数学函数将模糊值并入第一值中,并且 第二数学函数将所述模糊值的模逆的平方并入第二值中。11. 根据权利要求10所述的非瞬时机器可读介质,其中,所述模糊值包括:基于第一值 将被存储在第一查找表中的位置的索引而不变的恒定值。12. 根据权利要求10所述的非瞬时机器可读介质,其中,所述模糊值包括:第一值将被 存储在所述查找表中的位置的索引被提升到恒定指数值次幂。13. 根据权利要求7所述的非瞬时机器可读介质,其中,第一方法和第二方法共同共享 至少一个指令。14. 根据权利要求7所述的非瞬时机器可读介质,其中, 第一方法包括用于将所述值将被存储在查找表中的位置的索引并入所述值中的区分 指令;以及 第二方法不包括所述区分指令。15. 根据权利要求7所述的非瞬时机器可读介质,其中,用于初始化分别与秘密指数d内 的不同比特位置相对应的多个查找表的指令包括: 用于确定将用于余数系统RNS中的模数M的集合的指令;以及 用于针对所述模数M的集合中的每个模数ΠΗ初始化分别与秘密指数d内的不同比特位置 相对应的多个查找表的指令。16. -种用于提供白箱模幂运算的系统,包括: 第一设备,包括第一处理器和如权利要求1所述的非瞬时机器可读介质;以及 第二设备,包括第二处理器和如权利要求7所述的非瞬时机器可读介质,其中,第二设 备产生由第一设备用来在不访问所述秘密指数d的情况下执行模幂运算的多个查找表。17. -种编码有指令的非瞬时机器可读介质,所述指令由处理器执行以产生用于执行 模幂运算的查找表,所述非瞬时机器可读介质包括: 用于初始化分别与秘密指数d的比特位置与余数系统RNS模数的多个配对相对应的多 个查找表Li,j的指令; 用于当所述秘密指数d在与第一查找表L〇,k相对应的比特位置处的值为0时将所述多个 查找表中的第一查找表Lo,k的值设置为的指令,其中,ai是针对KNS悮数中的悮数m的潛在KNS整数,6。是第一预定常数,e〇是第 一预定指数;以及 用于当所述秘密指数d在与第一查找表Lo,k相对应的比特位置处的值为1时将所述多个 查找表中的第一查找表Lo,mi的值设置为 的指令。18. 根据权利要求17所述的非瞬时机器可读介质,还包括: 用于当所述秘密指数d在与最后的查找表Lk-1>mi相对应的比特位置处的值为O时,将所 述多个查找表中的第一查找表Lk-1>mi的值设置为的指令,其中而是针对RNS模数中的模数Hi1的潜在RNS整数,Sk-2是最后的预定常数, ek-2 是最后的预定指数,N是用于模幂运算的模数;以及 用于当所述秘密指数d在与最后的查找表L1^1,mi相对应的比特位置处的值为O时将所述 多个杳找表|+1沾靖二 太404主τ - 估4A*萌的指令。19. 根据权利要求18所述的非瞬时机器可读介质,还包括: 用于当所述秘密指数d在与中间查找表k,mi相对应的比特位置处的值为0时将所述多个 查找表中的第一查找表k,mi的值设置为的指令,其中,ai是针对RNS模数πη中的模数πη的潜在RNS整数,δ」-:是针对中间查找表的 先前预定常数,心是针对中间查找表的当前预定常数,eg是针对中间查找表的先前预定指 数,^是针对中间查找表的当前预定指数,N是用于模幂运算的模数;以及 用于当所述秘密指数d在与中间查找表k,mi相对应的比特位置处的值为1时将所述多个 查找表中的第一查找表k,mi的值设置为的指令。20. -种用于提供白箱模幂运算的系统,包括: 第一设备,包括第一处理器和如权利要求1所述的非瞬时机器可读介质;以及 第二设备,包括第二处理器和如权利要求19所述的非瞬时机器可读介质,其中,第二设 备产生由第一设备用来在不访问所述秘密指数d的情况下执行模幂运算的多个查找表。
【文档编号】G06F7/72GK105892991SQ201610087787
【公开日】2016年8月24日
【申请日】2016年2月16日
【发明人】乔普·威廉·波斯, 麦克尔·麦克·派德里克·皮德斯
【申请人】恩智浦有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1