CN105892991B - 使用查找表的模乘运算 - Google Patents

使用查找表的模乘运算 Download PDF

Info

Publication number
CN105892991B
CN105892991B CN201610087787.9A CN201610087787A CN105892991B CN 105892991 B CN105892991 B CN 105892991B CN 201610087787 A CN201610087787 A CN 201610087787A CN 105892991 B CN105892991 B CN 105892991B
Authority
CN
China
Prior art keywords
value
instructions
lookup table
look
rns
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.)
Active
Application number
CN201610087787.9A
Other languages
English (en)
Other versions
CN105892991A (zh
Inventor
乔普·威廉·波斯
麦克尔·麦克·派德里克·皮德斯
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.)
NXP BV
Original Assignee
NXP BV
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 NXP BV filed Critical NXP BV
Publication of CN105892991A publication Critical patent/CN105892991A/zh
Application granted granted Critical
Publication of CN105892991B publication Critical patent/CN105892991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/729Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using representation by a residue number system
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
    • 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

各实施例涉及一种编码有用于由处理器执行的用于执行模幂运算的指令的非瞬时机器可读介质以及方法、系统,所述非瞬时机器可读介质包括:用于迭代地计算模幂bd mod n的指令,包括:用于将工作值c平方的指令;以及用于根据指数d的比特有条件地将工作值c乘以底数值b的指令,包括:用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令。

Description

使用查找表的模乘运算
技术领域
本文公开的各实施例一般地涉及模幂运算,更具体但非排除地,涉及针对基于RSA的数字签名和解密方案的模幂运算。
背景技术
诸如RSA的许多密码系统利用模幂运算作为模糊数据的一个步骤。具体地,为了对数据进行加密,将编码数据a提升到公共指数e次幂,并使用值N对其进行模运算:c=ae modN。解密稍后被执行,并且包括将加密数据提升到私人指数d次幂:a=cd mod N。类似的模幂运算可用于创建数字签名,差别在于对私人指数和公共指数的使用被交换:私人指数d被用于初始地对数据加密,而公共指数e被用于稍后验证签名。
传统地,针对密钥3元组<e,d,N>选择的值非常大。例如,RSA通常使用尺寸为1024到4096比特的密钥。由于这些值很大,现有算法将使用过度量的处理时间来计算给定密码系统所使用的模幂运算。
发明内容
各种实施例简单总结如下。在以下概述中有一些简化和省略,其旨在突出和介绍各实施例的一些方面,而非限制本发明的范围。在下面的部分中将给出足以使本领域普通技术人员利用和使用发明构思的优选实施例的详细描述。
本文描述的多种实施例涉及一种编码有指令的非瞬时机器可读介质以及相关方法和设备,所述指令用于由处理器执行以用于执行模幂运算,所述非瞬时机器可读介质包括:用于迭代地计算模幂bd mod n的指令,包括:用于将工作值c平方的指令;以及用于根据指数d的比特有条件地将工作值c乘以底数值b的指令,包括:用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令。
描述了多种实施例,其中,在余数系统RNS中表示所述工作值c和所述底数值b,并且用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令包括:将表示所述工作值c的多个工作RNS整数乘以与表示所述底数值b的多个底数RNS整数相关联的多个查找表条目。
描述了多种实施例,其中,用于将表示所述工作值c的多个工作RNS整数乘以与表示所述底数值b的多个底数RNS整数相关联的多个查找表条目的指令包括:用于将表示所述工作值c的所述多个工作RNS整数中的一个工作RNS整数乘以与表示所述底数值b的所述多个底数RNS整数中的底数RNS整数相关联的一个查找表条目的指令,所述查找表条目来自与对应于所述底数RNS整数的RNS模数相关联的查找表。
描述了多种实施例,其中,用于迭代地计算所述模幂的指令包括:用于在所述指数d的多个比特位置中进行迭代的指令;以及用于将所述工作值c无条件地乘以与所述底数值b相关联的查找表条目的指令包括:用于利用多个查找表中与当前比特位置相关联的查找表的指令。
描述了多种实施例,其中,用于根据指数d的比特有条件地将工作值c乘以底数值b的指令包括:用于执行蒙哥马利乘法的指令;以及用于执行蒙哥马利乘法的指令调用所述用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令。
多种实施例还包括:用于从另一设备接收由所述用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令使用的查找表的集合的指令。
本文描述的多种实施例涉及一种编码有指令的非瞬时机器可读介质以及相关设备和方法,所述指令用于由处理器执行以用于产生用于执行模幂运算的查找表,所述非瞬时机器可读介质包括:用于初始化分别与秘密指数d内的不同比特位置相对应的多个查找表的指令;用于产生用于添入所述多个查找表中的值的指令,包括:用于当所述秘密指数d在与查找表相关联的比特位置处携带第一比特值时根据第一方法产生针对所述查找表的值的指令;用于当所述秘密指数d在与查找表相关联的比特位置处携带与第一比特值不同的第二比特值时根据与第一方法不同的第二方法产生针对所述查找表的值的指令。
描述了多种实施例,其中,用于产生用于添入所述多个查找表中的值的指令包括:用于模糊所产生的值的指令。
描述了多种实施例,其中,用于模糊所产生的值的指令包括:用于对用于添入第一查找表中的第一值执行第一数学函数的指令;以及用于对用于添入第二查找表中的第二值执行第二数学函数的指令,其中,第二数学函数是第一数学函数的有效逆函数。
描述了多种实施例,其中:第一数学函数将模糊值并入第一值中,并且第二数学函数将所述模糊值的模逆的平方并入第二值中。
描述了多种实施例,其中,所述模糊值包括:基于第一值将被存储在第一查找表中的位置的索引而不变的恒定值。
描述了多种实施例,其中,所述模糊值包括:第一值将被存储在所述查找表中的位置的索引被提升到恒定指数值次幂。
描述了多种实施例,其中,用于模糊所产生的值的指令包括:用于对用于添入第一查找表中的第一值执行第一数学函数的指令;以及用于对用于添入第二查找表中的第二值执行第二数学函数的指令,其中,第二数学函数是第一数学函数的有效逆函数。
描述了多种实施例,其中:第一数学函数将模糊值并入第一值中,并且第二数学函数将所述模糊值的模逆的平方并入第二值中。
描述了多种实施例,其中,所述模糊值包括:基于第一值将被存储在第一查找表中的位置的索引而不变的恒定值。
描述了多种实施例,其中,所述模糊值包括:第一值将被存储在所述查找表中的位置的索引被提升到恒定指数值次幂。
描述了多种实施例,其中,第一方法和第二方法共同共享至少一个指令。
描述了多种实施例,其中,第一方法包括用于将所述值将被存储在查找表中的位置的索引并入所述值中的区分指令;以及第二方法不包括所述区分指令。
描述了多种实施例,其中,用于初始化分别与秘密指数d内的不同比特位置相对应的多个查找表的指令包括:用于确定将用于余数系统RNS中的模数M的集合的指令;以及用于针对所述模数M的集合中的每个模数mi初始化分别与秘密指数d内的不同比特位置相对应的多个查找表的指令。
本文描述的多种实施例涉及一种编码有指令的非瞬时机器可读介质以及相关设备和方法,所述指令用于由处理器执行以用于产生用于执行模幂运算的查找表,所述非瞬时机器可读介质包括:用于初始化分别与秘密指数d的比特位置与余数系统RNS模数的多个配对相对应的多个查找表Li,j的指令;用于当所述秘密指数d在与第一查找表L0,k相对应的比特位置处的值为0时将所述多个查找表中的第一查找表L0,k的值设置为
Figure GDA0002671719290000041
的指令,其中,ai是针对RNS模数中的模数mi的潜在RNS整数,δo是第一预定常数,e0是第一预定指数;以及用于当所述秘密指数d在与第一查找表L0,k相对应的比特位置处的值为1时将所述多个查找表中的第一查找表L0,mi的值设置为
Figure GDA0002671719290000042
的指令。
多种实施例还包括:用于当所述秘密指数d在与最后的查找表Lk-1,mi相对应的比特位置处的值为0时,将所述多个查找表中的第一查找表Lk-1,mi的值设置为
Figure GDA0002671719290000043
的指令,其中,ai是针对RNS模数中的模数mi的潜在RNS整数,δk-2是最后的预定常数,ek-2是最后的预定指数,N是用于模幂运算的模数;以及用于当所述秘密指数d在与最后的查找表Lk-1,mi相对应的比特位置处的值为1时将所述多个查找表中的第一查找表Lk-1,mi的值设置为
Figure GDA0002671719290000044
的指令。
多种实施例还包括:用于当所述秘密指数d在与中间查找表Lj,mi相对应的比特位置处的值为0时将所述多个查找表中的第一查找表Lj,mi的值设置为
Figure GDA0002671719290000051
的指令,其中,ai是针对RNS模数mi中的模数mi的潜在RNS整数,δj-1是针对中间查找表的先前预定常数,δj是针对中间查找表的当前预定常数,ej-1是针对中间查找表的先前预定指数,ej是针对中间查找表的当前预定指数,N是用于模幂运算的模数;以及用于当所述秘密指数d在与中间查找表Lj,mi相对应的比特位置处的值为1时将所述多个查找表中的第一查找表Lj,mi的值设置为
Figure GDA0002671719290000052
的指令。
本文描述的多种实施例涉及一种用于提供白箱模幂运算的系统,包括:第一设备,包括第一处理器和如上所述编码有用于由处理器执行以用于执行模幂运算的指令的非瞬时机器可读介质;以及第二设备,包括第二处理器和如上所述编码有用于由处理器执行以用于产生用于执行模幂运算的查找表的指令的非瞬时机器可读介质之一,其中,第二设备产生由第一设备用来在不访问所述秘密指数d的情况下执行模幂运算的多个查找表。
附图说明
为了更好地理解各实施例,现在参考附图,其中:
图1示出用于实施本文描述的模幂方案的硬件系统100的示例;
图2示出用于向用户设备提供安全内容和对该安全内容进行处理的软件应用的系统的示例;
图3示出用于计算模幂的方法的示例;
图4示出用于在余数系统(RNS)中计算两个数的乘积的方法的示例;
图5示出用于执行条件乘法的查找表的集合的第一示例;
图6示出用于产生查找表的集合的第一示例的方法的示例;
图7示出用于使用查找表执行条件乘法的方法的示例;
图8示出用于执行条件乘法的查找表的集合的第二示例;
图9示出用于产生查找表的集合的第二示例的方法的示例;
图10示出用于执行条件乘法的查找表的集合的第三示例;
图11示出用于产生查找表的集合的第三示例的方法的示例。
为帮助理解,使用相同的附图标记来表示具有本质上相同或相似结构或本质上相同或相似功能的元件。
具体实施方式
本文给出的描述和附图说明了多个原理。因此可以理解的是,本领域的技术人员将能够设计出虽然没有明确地描述或示出但体现了本公开的原理并包括在其范围之内的各种布置。如本文的使用,术语“或”表示非限制性的或(即,和/或),除非另外地指示(例如“否则”或“或者备选地”)。此外,本文中描述的各种实施例并不是互斥的,并且可以组合以产生包含本文中描述的原理的附加实施例。
考虑到密码系统的上下文中的可能在计算模幂时涉及的过大值,希望实施用于高效地执行这种功能的算法。本文描述的各方法利用对值的余数系统(RNS)表示法进行的平方乘方法,以及对比初始底数和指数更小的值进行的蒙哥马利乘法,从而提供在计算成本上比现有算法更少的算法。
由于加密的环境和应用(诸如在不受信任平台上的应用)增加,最近已经致力于“白箱密码”的概念,其中,密码方案被开发为即使密码实现对于攻击者公开也是安全的。白箱密码涉及被工程化为在不受信任平台上执行的密码算法的软件实现的设计和分析。具体地,这是特定设备的用户可以(用密钥)对用其公钥加密的消息解密,但是不能提取或获得足够的信息以恢复该密钥的情景。此外,假设在这种实现中,用户可以是攻击者:例如,攻击者可以完全访问软件实现,可以在任何时间暂停、改变和恢复软件实现的执行。
例如,在数字版权管理系统中,希望向内容消费者提供能够简单地将他们认证为有权访问内容的一方的能力。然而,也希望防止内容消费者为了向其它方提供对仅原始内容消费者有权访问的相同内容的访问的目的,而与其它方共享证书。
针对该情景的一个白箱方法在于向内容消费者提供使用为内容消费者分配的私钥d对消息进行数字签名的能力,而不将该私钥d实际提供给内容消费者。为此,可以向内容消费者提供可用于计算模幂的基于私钥d的预计算的值的查找表。例如,在各系统中,可以由例如中央数字版权管理服务器向内容消费者提供查找表,所述中央数字版权管理服务器用于向对受保护内容进行服务的一个或多个媒体服务器认证内容消费者。内容消费者可以随后使用该查找表来计算数字签名,而不需要知道他们的私钥d的值。本文描述的各实施例通过提供使设备能够在不实际知道秘密指数d的情况下使用该秘密指数d来计算模幂的查找表,实现高效模幂方案的白箱实施。
将理解,虽然在数字签名方案的上下文中解释本文描述的各示例,但是本文描述的各方面可以适用于使用公钥对数据加密并使用私钥检索的数据加密方案。
图1示出用于实施本文描述的模幂方案的硬件系统100的示例。硬件系统100可以对应于可以参与密码系统方案中的几乎任何设备,例如,个人计算机,膝上型电脑、平板、移动通信设备、服务器、笔记本、智能卡、近场通信(NFC)设备或其它设备。例如,硬件系统可以对应于用于接收和渲染数字内容的机顶盒或者用于提供数字内容的服务器。本文描述的方法的各种应用将明显可用于例如数字版权管理(DRM)、银行应用以及在诸如移动电话和电视机顶盒的设备中保护密码密钥。
如图所示,设备100包括经由一个或多个系统总线110互连的处理器120、存储器130、用户接口140、网络接口150、和存储设备160。将理解的是,图1在一定程度上是抽象的并且设备100的组件的实际组织可以比所示出的更为复杂。
处理器120可以是能够执行存储在存储器130或存储设备150中的指令的任何硬件设备。由此,处理器可以包括微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其他类似的设备。
存储器130可以包括各种内容,例如L1、L2、L3高速缓存或系统存储器。因此,存储器130可以包括静态随机存取存储器(SRAM)、动态RAM(DRAM)、闪存、只读存储器(ROM)、或者其他类似存储器设备。
用户接口140可以包括用于使得能够与诸如管理员的用户进行通信的一个或多个设备。例如,用户接口140可以包括显示器、鼠标、以及用于接收用户命令的键盘。在一些实施例中,用户接口140可以包括经由网络接口150向远程终端呈现的命令行界面和图形用户界面。
网络接口150可以包括用于实现与其他硬件设备的通信的一个或多个设备。例如,网络接口150可以包括配置成根据以太网协议进行通信的网络接口卡(NIC)。此外,网络接口150可以实现用于根据TCP/IP协议的通信的TCP/IP栈。网络接口150的各种备选或附加的硬件或配置将是显而易见的。
存储设备160可以包括一个或多个机器可读存储介质,例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存设备、或类似的存储介质。在各个实施例中,存储设备160可以存储由处理器120执行的指令或者处理器120可以操作的数据。
例如,当硬件设备100被配置为根据本文描述的白箱密码系统对数据解密或对消息进行数字签名时,存储设备160包括用于指示这种操作的密码系统实施161。如上所述,白箱密码系统161可以利用一个或多个模幂步骤,如此,密码系统实施可以包括用于执行这种模幂运算的平方乘算法163。另外,为了提供更多的高效计算,平方乘算法163可以使用蒙哥马利乘法算法165。此外,如将在下文更详细的描述,蒙哥马利乘法算法165可以利用条件矢量乘法算法167执行平方乘算法的条件运算。具体地,平方乘算法通过根据秘密指数d的值执行乘法步骤来部分地计算bd mod n;然而,在白箱密码系统实施中,不向系统提供秘密指数d的值。相反,本文描述的各实施例包括条件矢量乘法算法167,该算法无条件地由蒙哥马利乘法算法167执行,并且使用由另一设备基于秘密指数d预计算的查找表169,以提供从平方乘算法“去除”的条件的效果。例如,如下文的描述,条件矢量乘法算法167可以是可以使用预计算的查找表以至少在某些方面引入条件效果的RNS乘法算法。
在硬件设备100是向包括白箱密码系统实施的其它设备提供查找表的设备的情况下,存储设备160包括用于创建查找表的密钥3元组171,该密钥3元组171包括公共指数e、私人指数d、以及密钥模数N。存储设备160还包括用于创建将被其它设备使用的查找表的查找表产生指令173。
将会显而易见的是,被描述为存储在存储设备160中的各种信息可以附加地或备选地存储在存储器130中。在这方面,存储器130还可以被视为构成“存储设备”并且存储设备160可以被视为“存储器”。各种其它的布置将会是显而易见的。此外,存储器130和存储设备160两者可以被视为"非瞬时机器可读介质"。本文所使用的术语"非瞬时"将被理解为排除瞬时传播信号,但是包括包含所有形式的易失性和非易失性存储器的存储设备。
尽管硬件设备100被示出为包括每个所描述的组件中的一个,可以在各实施例中复制各个组件。例如,处理器120可以包括被配置为独立地执行本文中描述的方法或被配置为执行本文中描述的方法的步骤或子例程的多个微处理器,使得多个处理器协同实现本文描述的功能。在其它实施例中,诸如设备100被实施为云计算环境的那些实施例中,各组件可以被物理地布置在各种机器中。例如,处理器120可以包括第一数据中心服务器中的第一微处理器以及第二数据中心服务器中的第二微处理器。各种其它的布置将会是显而易见的。
图2示出用于向用户设备提供安全内容和对该安全内容进行处理的软件应用的系统的示例。所述系统包括内容服务器200、应用服务器220、用户设备250和252、以及数据网络240。用户设备250和252可以经由数据网络240请求对内容服务器200提供的安全内容的访问。数据网络240可以是提供用户设备250和252、内容服务器200以及应用服务器220之间的连接的任何数据网络。用户设备250和252可以是多个设备中的一个,例如机顶盒、媒体流传输器、数字视频记录器、平板计算机、移动电话、膝上型计算机、便携式媒体设备、智能手表、台式计算机、媒体服务器等。
针对访问的用户请求可以先获取可用于处理内容服务器200提供的安全内容的软件应用的下载。可从应用服务器220下载软件应用。使用上文描述的技术并且如上文操作,可能会混淆软件应用。一旦用户设备250、252安装软件应用,则用户设备可以从内容服务器200下载安全内容,并使用下载的软件应用来访问安全内容。例如,下载的软件应用可以对从内容服务器接收的加密内容进行解密。在其他实施例中,软件应用可以执行其他安全操作,例如,加密、数字签名产生和验证等。
内容服务器200可以控制向用户设备250、252提供的对安全内容的访问。因此,当内容服务器200接收针对安全内容的请求时,内容服务器200可以向请求用户设备发送安全内容。类似地,应用服务器220可以控制向用户设备250、252提供的对软件应用的访问。因此,当应用服务器220接收针对软件应用的请求时,应用服务器220可以向请求用户设备发送软件应用。在向用户设备提供软件应用或安全内容前,各服务器还可以认证请求软件应用或安全内容的用户设备。
内容服务器200可以包括经由一个或多个系统总线208互连的处理器202、存储器204、用户接口206、网络接口210、以及内容存储设备212。将要理解的是,图2在一定程度上是抽象的并且设备200的组件的实际组织可以比所示出的更为复杂。
处理器202可以是能够执行存储在存储器204或存储设备212中的指令的任何硬件设备。由此,处理器可以包括微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其他类似的设备。
存储器204可以包括各种内容,例如L1、L2、L3高速缓存或系统存储器。因此,存储器204可以包括静态随机存取存储器(SRAM)、动态RAM(DRAM)、闪存、只读存储器(ROM)、或者其他类似存储器设备。
用户接口206可以包括用于使得能够与诸如管理员的用户进行通信的一个或多个设备。例如,用户接口206可以包括显示器、鼠标、以及用于接收用户命令的键盘。
网络接口210可以包括用于实现与其他硬件设备的通信的一个或多个设备。例如,网络接口210可以包括配置成根据以太网协议进行通信的网络接口卡(NIC)。此外,网络接口210可以实现用于根据TCP/IP协议的通信的TCP/IP栈。网络接口210的各种备选或附加的硬件或配置将是显而易见的。
内容存储设备212可以包括一个或多个机器可读内容存储介质,例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、或类似存储介质。在各实施例中,内容存储设备212可以存储要提供给用户的内容。
应用服务器220包括与内容服务器200中的元件相似的元件,并且对内容服务器200中的相似元件的描述适用于应用服务器220。此外,应用存储设备232替换内容存储设备212。此外,应该注意的是,内容服务器和应用服务器可以在单个服务器上实现。而且,这样的服务器可以实现在分布式计算机系统以及云计算机系统上。
在各实施例中,应用服务器220可以具有用于每个用户设备250和252的私钥指数,并且使用这些值来产生将发送给用户设备250和252的查找表的集合。之后,用户设备250、252可以利用查找表对从内容服务器接收到的内容解密或者对将发送给内容服务器的消息进行数字签名(从而对各个用户设备250、252进行认证)。本文描述的方法和系统的各种其他应用将是显而易见的。
将理解的是,可以以各种方式在图2的系统或类似系统中部署和使用模幂运算、编码或数字签名方法。例如,用户设备250、252可以由制造商或其它经销商提供,并被预配置为向内容服务器200发送签名消息以请求提供内容。备选地,用户设备250、252可以不完全预配置为执行这种操作;相反,应用服务器220可以与用户设备250、252通信以使这种配置生效。例如,应用服务器可以发送用于实施本文描述的方法的代码指令或定义一个或多个查找表的数据。
图3示出用于计算模幂的方法300的示例。方法300可以由执行平方乘算法163的处理器(例如图1的处理器120)执行。将理解的是,方法300可以完成计算:
bd mod n
以用于例如用于加密或数字签名的密码系统。
方法300开始于步骤305,并进行到步骤310,在步骤310,处理器接收用于计算模幂的值b、d和n。如将在下文更详细的描述,本文描述的各种修改能够实现处理器在步骤310或其它步骤中没有接收到秘密指数d的值的方法300。相反,处理器可以被提供有或者通过其他方式具有对由秘密指数d携带的比特数目的访问。处理器随后在步骤315通过将索引变量j初始化为在比特上比秘密指数d的长度小2的值,来开始秘密指数d的比特的迭代。处理器还在步骤320将工作值c初始化为等于底数值b。
在步骤325,处理器通过对c的当前值进行平方并以模数N对结果进行模运算,来执行“平方”步骤。从流程图中可以看到,对每一次迭代都执行该步骤325,并且该步骤可以被视为“无条件”步骤。接着,处理器通过确定秘密密钥的第j比特是否被设置为值“1”,来开始方法300的“乘法”步骤。如果是的话,则处理器在步骤335将当前工作值乘以底数值,并且模N。另一方面,如果秘密密钥的第j比特被设置为值“0”,则处理器进行到步骤340而不改变工作值(或者等效地,在步骤337中将工作值乘以1)。可以看到,仅在相应的秘密密钥比特被设置为“1”时才执行“乘法”步骤,因此其可被视为“条件”步骤。换言之,处理器有条件地将工作值乘以底数值。
在执行了无条件的平方和有条件的乘法步骤之后,处理器在步骤340对索引值j进行递减,并在步骤345确定附加的秘密指数比特是否保持被处理。如果j不小于零(即,d中的附加比特保持),则方法300循环回到步骤325。否则,计算完成,处理器在步骤350返回作为结果的最终值c,并且方法300在步骤355结束。
在各实施例中,如将在下文更详细的解释,步骤330、335和337被无条件执行的单个乘法步骤360替代。具体地,在处理器不具有对秘密指数d的访问的白箱实施中,处理器本身不能够执行步骤330。相反,本文描述的各实施例将工作值c乘以从查找表检索到的、被另一设备基于值d预计算的值。处理器被提供有针对秘密指数d的从位置0到k-2的每个比特的至少一个查找表。当秘密指数d在与查找表相对应的比特处具有值1时,查找表将提供有效的值b(因此对应于步骤335);类似地,当秘密指数d在与查找表相对应的比特处具有值0时,查找表将提供有效的值1(因此对应于步骤337)。
根据各实施例,值b和c可以在余数系统(RNS)中表示。根据RNS,整数被表示为以更小的(互质)整数为模得到的多个不同的余数。考虑RNS基
Figure GDA0002671719290000131
其中,任意两个模数m的最大公约数是1。RNS模数被表示为
Figure GDA0002671719290000132
整数
Figure GDA0002671719290000133
在RNS基
Figure GDA0002671719290000134
中由矢量
Figure GDA0002671719290000135
表示,其中:
xi=x mod mi,1≤i≤n
可以通过对其应用中国剩余定理来实现对由
Figure GDA0002671719290000136
表示的整数x的计算。
Figure GDA0002671719290000137
对于在RNS中表达的乘法值,蒙哥马利乘法可以用于计算针对蒙哥马利基数R的a*b*R-1 mod N,其通过将模数N的合适倍数添加到乘积使得其可以被R整除。这可以通过计算下式来实现:
Figure GDA0002671719290000138
可以预计算值(-N-1 mod R),以在运行时进一步优化蒙哥马利乘法的执行。应注意,右侧计算以N为模的蒙哥马利乘法而不实际减少模N的任何值。如此,蒙哥马利乘法适用于RNS设置。
蒙哥马利乘法的实施执行以R为模的计算。通常希望将蒙哥马利基数R设置为等于RNS模数M。在这种配置中,当用具有模数M的RNS基表示数时,除以R=M的除法是不可能的(因为在
Figure GDA0002671719290000139
中M不是可逆的)。这可以通过引入具有辅助RNS模数
Figure GDA00026717192900001310
的辅助基
Figure GDA00026717192900001311
Figure GDA00026717192900001312
来避免,使得gcd(M′,M)=gcd(M′,N)=gcd(M,N)=1并且4N<M<M′。对于执行了除以R的除法的步骤,蒙哥马利乘法可以随后从
Figure GDA0002671719290000141
转换为
Figure GDA0002671719290000142
图4示出用于在余数系统(RNS)中计算两个数的乘积的方法400的示例。方法400可以由执行蒙哥马利乘法算法165的处理器(例如处理器120)执行。在各实施例中,方法400可以被调用为执行方法300的步骤325、335、337或360中的计算。
方法开始于步骤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)。
在步骤415,处理器选择两个RNS基
Figure GDA0002671719290000143
Figure GDA0002671719290000144
以用于表示值A、B和中间值。在一些实施例中,RNS基
Figure GDA0002671719290000145
Figure GDA0002671719290000146
中的一个或两个可以被硬编码进算法或者被预选择。在一些实施例中,可以根据第一RNS基
Figure GDA0002671719290000147
接收已经是RNS形式的值A和B。
在步骤420,处理器通过计算两个RNS基中的乘积来开始执行蒙哥马利乘法公式的面向非除法的方面:
Figure GDA0002671719290000148
其中fi=ai*bi mod mi
Figure GDA0002671719290000149
其中f′i=a′i*b′i mod m′i
其中,1≤i≤。之后,在步骤425,处理器将基
Figure GDA00026717192900001410
中的
Figure GDA00026717192900001411
计算为qi=fi*-N-1 mod mi。将理解的是,项
Figure GDA00026717192900001412
是表示(-N-1 mod R)的矢量。
接着,在执行蒙哥马利乘法公式的面向除法的方面之前,处理器将(在基
Figure GDA00026717192900001413
中表示的)
Figure GDA00026717192900001414
转换为(在基
Figure GDA00026717192900001415
中表示的)
Figure GDA00026717192900001416
处理器可以根据任何方法执行该转换,例如,使用中国剩余定理将
Figure GDA00026717192900001417
转换为非RNS整数,并接着通过用基
Figure GDA00026717192900001418
中的每个模数m'i计算整数的模,来将该整数转换为基
Figure GDA00026717192900001419
中的RNS集合。
在步骤435,处理器通过计算下式来执行蒙哥马利乘法公式中的其余计算:将
Figure GDA0002671719290000151
计算为
Figure GDA0002671719290000152
Figure GDA0002671719290000153
结果
Figure GDA0002671719290000154
与在基
Figure GDA0002671719290000155
中表示的A*B mod N同余。处理器在步骤440中通过例如应用中国剩余定理并执行与基
Figure GDA0002671719290000156
相关联的多次模运算,来将结果
Figure GDA0002671719290000157
转换回初始的基
Figure GDA0002671719290000158
处理器可以随后在步骤445返回结果
Figure GDA0002671719290000159
(或者返回非RNS结果c),并进行到步骤450。
在各实施例中(诸如其中0≤A,B≤2N,并且4N<M<M′的实施例),所述输出以2N为界,并且可以被蒙哥马利乘法算法400的下一次调用再利用。
如上所述,本文描述的系统和方法通过参考查找表的预计算的集合中的值,来将检查秘密指数的比特的条件功能合并到无条件乘法语句中。返回参照图3,在简单情况下,当相应的秘密指数d比特为“1”时,查找表将返回底数值b(步骤335),当相应的秘密指数d比特为“0”时,将返回值“1”(步骤337)。如此,工作值c可以无条件地乘以查找表的结果。
图5示出用于执行条件乘法的查找表的集合500的第一示例。查找表500均包括可用于值b的每个RNS余数的条目(因为,在各实施例中,c将通过与它们的相应RNS余数相乘而乘以b或1)。在一些实施例中,诸如将在下文描述的那些备选中,将针对每个RNS模数提供不同的查找表(由于条目的数目以及可能的相应值将针对每个不同的模数而不同)。为了简化图5的初始示例,将假设表500包括基
Figure GDA00026717192900001510
中的最大模数的每个可能余数的条目。
第一表510指示秘密指数d的第j比特被设置为“1”的情况,则所述值将与索引值j相同。换言之,Lj(ai)=ai mod mi。如此,第一记录512指示针对索引“0”的值为“0”,第二记录514指示针对索引“1”的值为“1”,并且第一记录516指示针对索引“2”的值为“2”。表510可以包括附加的条目518或更少的条目(例如,相应的RNS模数为2)。
第二表520指示秘密指数d的第j比特被设置为“0”的情况,则每个条目的值将为1,不论索引如何。换言之,Lj(ai)=1。如此,条目522、524、526都指示值1。表510可以包括附加的条目518或更少的条目(例如,相应的RNS模数为2)。
在各实施例中,白箱密码系统实施将被提供有与图5提供的示例相符的表的集合。通过将工作值c的余数无条件地乘以与底数值b的余数相对应的查找表值,可以在不知道秘密指数d的实际值的情况下实现步骤330、335、337的功能。
对于利用表500的白箱密码系统实施,另一设备首先计算将被提供给白箱实施的表。图6示出用于产生查找表的集合的第一示例的方法600的示例。方法600可以由处理器(例如执行查找表产生指令173的处理器120)执行。
方法开始于步骤605并进行到步骤610,在步骤610,处理器接收秘密密钥d以及潜在索引A的集合。例如,索引的集合可以包括各个整数值a,使得0≤i≤m,其中,m是RNS模数,诸如基
Figure GDA0002671719290000161
的最大RNS模数或者来自于查找表的集合将与之关联的基
Figure GDA0002671719290000162
的特定模数。
方法600进行到步骤615,在步骤615,处理器将查找表索引p初始化为0,并且随后在步骤620,处理器将新查找表Lp初始化为对应于秘密指数d的第p比特。例如,处理器可以在A中创建针对每个索引的条目,并将值初始化为1、0、空值(null)、或者适合于实施的特例的一些其它值。处理器还在步骤625将另一索引i初始化为0,以在索引的集合A中迭代。
在步骤630,处理器确定秘密指数d的第p比特是否等于0。如果是,则处理器在步骤635、640、645中循环,并将查找表Lp中的每个条目设置为等于1。否则,处理器在步骤650、655、660中循环,并将查找表Lp的每个条目设置为等于该条目的索引(即,Lp(ai)=ai)。在查找表中为每个条目填入值之后,处理器在步骤665中将p递增,并随后在步骤670通过确定p目前是等于还是超过秘密指数d的比特长度,来确定附加的查找表是否仍然要被创建。应注意,在方法300中,不考虑第k-1比特。如此,在各实施例中,作为替代,步骤670可以确定p是大于还是等于d长度减1。
如果附加的查找表仍然要被创建,则方法600循环回到步骤620。否则,处理器例如通过将表L本地地存储以用于稍后使用或者通过将表L发送到白箱密码系统实施,来返回表L。然后,方法600在步骤680结束。
图7示出用于使用查找表执行条件乘法的方法700的示例。方法700可以由执行条件矢量乘法算法167的处理器(例如处理器120)执行。当方法400被调用为计算平方乘方法300的“乘法”步骤360时,可以例如通过蒙哥马利乘法方法400的步骤420来调用方法700。
方法700开始于步骤710并进行到步骤720,在步骤720,处理器接收RNS矢量值
Figure GDA0002671719290000171
Figure GDA0002671719290000172
(与方法400中的
Figure GDA0002671719290000173
Figure GDA0002671719290000174
或者
Figure GDA0002671719290000175
Figure GDA0002671719290000176
相对应;或者与方法300中的c和b相对应)以及到秘密指数中的当前索引(与方法300中的索引j相对应)。处理器还在步骤730例如通过创建与值被初始化为0、1、null或其它合适值的
Figure GDA0002671719290000177
Figure GDA0002671719290000178
相同的长度的矢量,来初始化结果矢量
Figure GDA0002671719290000179
在步骤740,处理器将模数索引i初始化为值0。
处理器随后在步骤750通过计算gi=Lj(bi)*ci mod mi来开始计算结果矢量
Figure GDA00026717192900001710
的余数值。在步骤760,处理器对模数索引进行递增,并在步骤770确定索引目前是否大于基集合
Figure GDA00026717192900001711
中的最大索引。如果否,则方法循环回到步骤750。否则,处理器在步骤780返回结果矢量
Figure GDA00026717192900001712
并且方法700在步骤790结束。
考虑到上文,将清楚的是,本文描述的实施例通过无条件地将c乘以基于d预计算的查找表的值,使得能够在不访问值d的情况下实现取决于值d的条件计算c*b。例如,在处理器针对使得dj=0的索引j执行方法700的步骤750的情况下,查找表Lj将被预计算为类似于表520。如此,Lj(bi)将返回1,并且步骤750将有效地计算1*c mod m(从而对应于方法300的步骤337)。类似地,在处理器针对使得dj=1的索引j执行方法700的步骤750的情况下,查找表Lj将被预计算为类似于表510。如此,Lj(bi)将返回bi,并且步骤750将高效地计算b*cmod m(从而对应于方法300的步骤335)。将理解的是,查找表500还可以被预计算以替代地取决于值d来存储合适的乘法(bi*ci mod mi或者ci mod mi),从而通过降低存储效率来提高处理效率,因为这样会平方地增加查找表的大小。
虽然上述描述使得能够在不实际提供d值的情况下实现bd mod N的计算,并从而在白箱设置中提供某种程度上增加的安全性,但是可以访问查找表的攻击者仍然可能辨别出秘密指数d的值。具体地,攻击者可能推导出:被值“1”填充的每个表,d的相应比特是“0”,反之为“1”,从而攻击者能够确定秘密指数的值。如此,下面提供通过使查找表模糊来增加实施的安全性的各种方法。
图8示出用于执行条件乘法的查找表的集合800的第二示例。根据该示例,恒定值δ通过乘法被并入查找表,并且稍后使用有效逆函数从之后的表中“移除”。将理解,可以利用加法或者备选的乘法中的运算。例如,可以根据任何可逆函数来添加、减去或者并入恒定值δ。
如之前针对图5的示例所示出和描述的,表集合800包括被平方乘算法考虑的针对秘密指数d的每个比特的表。另外,表的值可以取决于RNS基
Figure GDA0002671719290000181
的模数mi。如此,可以针对RNS基
Figure GDA0002671719290000182
的每个模数提供表800的不同集合。虽然最终表被示出为对应于第k-1比特,但是在平方乘算法不针对第k-1比特执行任何特定操作的各实施例中,最终表850、860实际上可以对应于第k-2比特。此外,还将清楚的是,在下文中,虽然图3的平方乘方法300从k-2到0往回迭代,但是示出的表的顺序为从0到k-1(或k-2)。在各实施例中,可以以相反顺序产生表,使得L0是“最后的”表,而Lk-1(或Lk-2)是“第一”表。
如图所示,第一表L0 810、820将值1或ai(取决于d0的比特值)乘以与第一表相对应的常数δ0,并以模数mi为模。因此,当d0=0时,利用被确定为Lj(ai)=δ0 mod mi的值来计算表810。在示出的特定示例中,任意选择值δ0=2,如此,每个条目的值被设置为“2”(假设mi>2)。另一方面,当d0=1时,替代地提供表820。这里,值被确定为Lj(ai)=δ0*ai mod mi。如图所示,条目822、824、826均分别具有不同的值0、2、4。
对于第一表和最后的表之间的表Lj(其中,0<j<k-1),通过例如将值乘以常数δj,来将附加的常数δj并入表。之前,在该步骤可以使用任何可逆函数。另外,为了使之前的将常数δj-1并入表的效果逆向,将该常数的倒数并入值中。考虑到当考虑Lj表时平方乘方法300将通过步骤325的操作而将先前的常数δj-1平方,当被因数分解为值时先前的常数δj-1
Figure GDA0002671719290000191
因此,中间表830、840同时移除先前常数,通过将项
Figure GDA0002671719290000192
并入表的值中来将新常数并入工作值中。
因此,当dj=0时,利用被确定为
Figure GDA0002671719290000193
的值来计算表830。在示出的特定示例830中,每个条目的值被设置为“5”(假设mi>5)。另一方面,当dj=1时,替代地提供表840。这里,值被确定为
Figure GDA0002671719290000194
如图所示,条目842、844、846均分别具有不同的值0、5、3。
对于最后的表Lk-1,没有附加的常数被并入值中,相反,移除将被并入的最后的常数。因此,当dk-1=0时,利用被确定为
Figure GDA0002671719290000195
Figure GDA0002671719290000196
的值来计算表850。在示出的特定示例850中,每个条目的值被设置为“6”(假设mi>6)。另一方面,当dj=1时,替代地提供表860。这里,值被确定为
Figure GDA0002671719290000197
如图所示,条目862、864、866均分别具有不同的值0、6、5。将理解,当被实际计算时,每个表可以包括附加的条目818、828、838、848、858、868或更少的条目(例如,相应RNS模数为2的情况)。
因此,将被应用的(在最后的表之前的)每个表通过将查找表乘以(或加上、减去等)任意常数来使值模糊。此外,(在第一表之后的)每个表通过使用逆函数从查找表值移除或“抵消”该任意常数来使该模糊的效果无效,所述逆函数考虑i)来自用于初始地将值并入先前表中的逆运算,以及ii)在先前表被访问之后对工作值执行的临时函数。在示出的特定示例中,可逆函数是被平方的倒数,因为将通过平方乘算法利用表。实现通过其它算法利用表的修改将是显而易见的。
图9示出用于产生查找表的集合的第二示例的方法900的示例。方法900可以被处理器(例如执行查找表产生指令173的处理器120)执行。
方法开始于步骤903并进行到步骤905,在步骤905,处理器接收秘密密钥d以及模数的集合
Figure GDA0002671719290000198
处理器随后通过步骤907、910、913和915初始化第一传送(pass),在步骤907、910、913和915中执行以下操作:初始化模数索引i,初始化比特位置索引p,针对每个条目将用于组合模数索引和比特位置索引的查找表Lp,i初始化为初始值1,以及初始化表索引a。在步骤917,处理器产生常数Δ的集合,使得Δ包含针对除了秘密指数d的比特之一以外的所有比特的常数δ。换言之,Δ中的元素的数目等于d的长度减一。
接着,处理器在步骤920通过确定当前比特索引是否小于d长度减2来产生用于包括在表的条目中的值。如果是,则当前表不是“最后的”表,并且来自Δ的常数将被并入值中;在步骤923,处理器将Lp,i(a)处的值乘以δp。否则,方法跳到步骤925。
在步骤925,处理器确定当前比特索引是否大于0。如果是,则当前表不是“第一”表,并且来自Δ的常数将从表的值中消除。在步骤927,处理器将Lp,i(a)处的值乘以
Figure GDA0002671719290000201
随后在步骤930,以N为模对Lp,i(a)中的当前值进行模运算。否则,方法900跳到步骤933。
在步骤933,处理器确定秘密密钥dp的当前比特是否等于“1”。如果是,则处理器在步骤933通过将Lp,i(a)处的当前值乘以a来将表索引a并入Lp,i(a)处的值。否则,方法900跳到步骤937。由于步骤933是实际上区分基于d中的“1”比特产生的表与基于d中的“0”比特产生的表的步骤,因此步骤935可以被视为“区分步骤”。在步骤937,处理器以当前模数mi对Lp,i(a)处的值进行模运算,从而完成Lp,i(a)处的值的计算。
处理器接着在步骤940将表索引a递增,并在步骤943确定对于表Lp,i是否所有的潜在表索引a都已经被处理。如果a还未等于mi,则方法900循环回到步骤920,在步骤920,针对更新的a计算表Lp,i中的下一个条目。
否则,处理器在步骤945将比特索引p递增,并且随后在步骤945确定留在秘密指数中的附加的比特是否将被处理。如果p还未等于d长度减1,则方法将循环回到步骤913,在步骤913,处理器将基于新的比特索引开始创建当前模数的下一个表。
一旦处理了将被分配表的所有比特,则方法进行到步骤950,在步骤950,处理器将模数索引i递增,并随后进行到步骤953,在步骤953,处理器确定是否还存在要被处理的附加模数。如果i还未等于基集合
Figure GDA0002671719290000202
的长度,则方法循环回到步骤910,在步骤910,处理器将开始针对下一个模数mi创建新的表集合。否则,处理器在步骤955返回产生的表集合(例如,将表分布到白箱实施),并且方法900在步骤957结束。
使用在方法900中产生的表实质上等同于使用由方法600产生的表。例如,白箱密码系统实施可以使用由方法900产生的表来利用方法700来产生模幂,仅需要将步骤750稍微修改为假定Li,j被访问。换言之,步骤750被修改为访问与当前模数mi相关联的查找表。
虽然增加了安全性的附加级别,但是在能够访问查找表的情况下,攻击者仍然可能辨别出d的值。具体地,即使与“0”比特相关联的表不再始终被提供有恒定值1(如第一示例集合500),但是与“0”比特相关联的那些表是输入不变地。从示例表810、830、850中可以看到,输出值始终分别是“2”、“5”或“6”,而表820、840、860的输出基于输入变化。知道了这点,攻击者可能推算出秘密指数d的比特。
图10示出用于执行条件乘法的查找表的集合1000的第三示例。根据该示例,输入索引ae的恒定值和附加幂两者通过乘法被并入查找表值,并且接着使用有效逆函数从稍后的表中“移除”。将理解的是,可以利用加法或者备选的乘法中的运算。例如,可以根据任意可逆函数加上、减去或者并入恒定值δ。
如之前针对图5和图8的示例所示出和描述的,表集合1000包括被平方乘算法考虑的针对秘密指数d的每个比特的表。另外,表的值可以取决于RNS基
Figure GDA0002671719290000211
的模数mi。如此,可以针对RNS基
Figure GDA0002671719290000212
的每个模数提供表1000的不同集合。虽然最终表被示出为对应于第k-1比特,但是在平方乘算法不针对第k-1比特执行任何特定操作的各实施例中,最终表1050、1060实际上可以对应于第k-2比特。此外,还将清楚的是,在下文中,虽然图3的平方乘方法300从k-2到0往回迭代,但是示出的表的顺序为从0到k-1(或k-2)。在各实施例中,可以以相反顺序产生表,使得L0是“最后的”表,而Lk-1(或Lk-2)是“第一”表。
如图所示,第一表L01010、1020将值1或ai(取决于d0的比特值)乘以对应于所述表的输入值的幂ai e[0]和常数δ0,模以模数mi。从而,当d0=0时,使用确定为
Figure GDA0002671719290000213
的值计算表1010。在所示的特定示例中,条目1012、1014、1016分别是“0”、“2”和“1”(假定mi>2)。另一方面,当d0=1时,作为替代,提供表820。这里,值被确定为
Figure GDA0002671719290000221
如图所示,条目1022、1024、1026分别均分别具有不同的值0、2、2。
对于第一表和最后的表之间的表Lj(其中,0<j<k-1),例如通过将值乘以输入的幂ai e[j]和常数δj,将输入的幂ai e[j]和附加的常数δj并入表。之前,在该步骤可以使用任何可逆函数。另外,为了使之前的将常数δj-1和幂ai e[j-1]并入表的效果逆向,将这些值的倒数并入值中。考虑到当考虑Lj表时平方乘方法300将通过步骤325的操作而将先前的常数δj-1和幂ai e[j-1]平方,当被因数分解为值时先前的常数δj-1和幂ai e[j-1]
Figure GDA0002671719290000222
Figure GDA0002671719290000223
因此,中间表1030、1040同时移除先前常数,通过将项
Figure GDA0002671719290000224
并入表的值中来将新常数并入工作值中。
因此,当dj=0时,利用被确定为
Figure GDA0002671719290000225
Figure GDA0002671719290000226
的值来计算表1030。在示出的特定示例1030中,条目的值被分别设置为0、5和5(假设mi>5)。另一方面,当dj=1时,替代地提供表1040。这里,值被确定
Figure GDA0002671719290000227
Figure GDA0002671719290000228
如图所示,条目1042、1044、1046均分别具有不同的值0、5、3。
对于最后的表Lk-1,没有附加的常数或幂被并入值中,相反,移除将被并入的最后的常数和幂。因此,当dk-1=0时,利用被确定为
Figure GDA0002671719290000229
的值来计算表1050。在示出的特定示例1050中,条目的值被分别设置为0、6和6(假设mi>6)。另一方面,当dj=1时,替代地提供表1060。这里,值被确定为
Figure GDA00026717192900002210
如图所示,条目1062、1064、1066均分别具有不同的值0、6、5。将理解,当被实际计算时,每个表可以包括附加的条目1018、1028、1038、1048、1058、1068或更少的条目(例如,相应RNS模数为2的情况)。
图11示出用于产生查找表的集合的第三示例的方法1100的示例。方法1100可以被处理器(例如执行查找表产生指令173的处理器120)执行。
方法1100大部分与方法900类似,除了添加了一些新步骤。具体地,在在步骤917产生了常数Δ的集合之后,处理器产生指数E的集合,使得E包含针对除了秘密指数d的比特之一以外的所有比特的指数e。换言之,E中的元素的数目等于d长度减一。
另外,在步骤1123、1127、1130保留并入常数δp和δp-1的步骤923、927、930,但是现在被保持为在步骤1119初始化的临时变量δ。添入两个附加的步骤1124、1131,以分别将表索引的幂并入条目的值和从条目消除表索引的幂。具体地,针对除了每个模数的最后的表以外的所有表执行步骤1124,并且将表条目的当前值乘以由E中的与当前比特相对应的指数e确定的幂;在这里的示例中,处理器将幂
Figure GDA0002671719290000231
并入表条目。步骤1131通过并入逆函数来消除先前的幂(考虑平方乘算法或其它算法的效果);在这里的示例中,处理器将幂
Figure GDA0002671719290000232
并入表条目。将理解的是,对于给定的余数整数ai,模逆(modular inverse)
Figure GDA0002671719290000233
步骤1131还将临时常数δ并入表条目。修改的方法1100的结果是针对每个模数mi的表的集合,其将模糊常数和幂两者并入其值中,并随后消除这种模糊的效果。例如,如上所述,可以通过除乘法以外的可逆数学函数来并入常数或幂。例如,可以将常数δp添加到一个表中的值中,并在下一个表中作为δp 2减去。此外,方法可以使用用于并入指数和幂的函数的组合。例如,表中可以乘以常数δp,并且在其中添加幂
Figure GDA0002671719290000234
作为另一示例,第一表中可以乘以常数δp,并且后续的表中可以添加另一常数δp-1(同时消除先前的常数δp)。一些实施可以不消除紧随的表中的每个模糊项;相反,考虑到由平方乘(或其它算法)执行的附加运算,消除操作可以发生在按照顺序的两个或更多个表之前。例如,第一表中可以乘以常数δp,第二表可以仅乘以1(例如,如果d中的相应比特是“0”),并且第三表可以通过乘以
Figure GDA0002671719290000235
来消除常数δp(考虑将在中期发生的两个平方运算)。此外,一些实施可以不并入常数,而是仅利用幂或另一个项作为模糊因子。将理解,各种模糊技术可以被组合为使得不同的表适用不同的模糊技术。例如,在表集合内,一些表可以并入常数,其它的表可以并入幂,而另一些表可以不并入任何模糊项。用于实施这种备选实施例的各种技术以及进一步的修改将是显而易见的。
根据上文,各种实施例实现在白箱设置中的模幂的高效计算。例如,通过提供基于与模幂计算中的项相对应的秘密指数而计算出的查找表,白箱实施可以被提供有在不具有对秘密指数的访问的情况下计算模幂的方法。此外,通过各种模糊技术,可以保护秘密指数的值不会由于对提供的表的分析而被发现。从上文中,各种附加利益将是显而易见的。
从上述描述中可以明显看出,本发明的各种示例性实施例可以通过硬件来实现。此外,各实施例可以被实现为在非瞬时机器可读存储介质(例如易失性或非易失性存储器)上存储的指令,所述指令可以被读取并通过至少一个处理器来运行以执行这里详细描述的操作。机器可读存储介质可以包括用于以机器可读的形式存储信息的任何机制,例如个人或膝上型计算机、服务器或其他计算设备。因此,非瞬时机器可读存储介质排除瞬时信号,但可以包括易失性和非易失性存储器,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备和类似的存储介质。
本领域技术人员应该理解的是,本文中的任意框图表示实现本发明的原理的说明性电路的概念示图。类似地,将理解的是,任何流程图、流程示意图、状态转换图、伪代码等表示可以实质上表示在机器可读介质中并且因此由计算机或处理器来执行的各种处理,而不论这种计算机或处理器是否被显式地示出。
虽然参照其特定方面具体描述了各实施例,可以理解的是本发明可以采用其它实施例并且它的细节可以在各种明显的方面进行修改。本领域技术人员非常清楚,可在本发明的精神和范围内实现改变和修改。相应地,以上公开、描述和附图仅仅是用于说明性的目的,而不应以任何形式限制仅由权利要求限定的本发明。

Claims (18)

1.一种编码有指令的非瞬时机器可读介质,所述指令由处理器执行以执行模幂运算,所述非瞬时机器可读介质包括:
用于迭代地计算模幂bd mod n的指令,包括:
用于求工作值c的平方的指令;以及
用于根据指数d的比特有条件地将工作值c乘以底数值b的指令,包括:
用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令;
其中,在余数系统RNS中表示所述工作值c和所述底数值b,并且
用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令包括:将表示所述工作值c的多个工作RNS整数乘以与表示所述底数值b的多个底数RNS整数相关联的多个查找表条目。
2.根据权利要求1所述的非瞬时机器可读介质,其中,用于将表示所述工作值c的多个工作RNS整数乘以与表示所述底数值b的多个底数RNS整数相关联的多个查找表条目的指令包括:
用于将表示所述工作值c的所述多个工作RNS整数中的工作RNS整数乘以与表示所述底数值b的所述多个底数RNS整数中的底数RNS整数相关联的查找表条目的指令,所述查找表条目来自与对应于所述底数RNS整数的RNS模数相关联的查找表。
3.根据权利要求1所述的非瞬时机器可读介质,其中,
用于迭代地计算所述模幂的指令包括:用于在所述指数d的多个比特位置进行迭代的指令;以及
用于将所述工作值c无条件地乘以与所述底数值b相关联的查找表条目的指令包括:用于利用多个查找表中与当前比特位置相关联的查找表的指令。
4.根据权利要求1所述的非瞬时机器可读介质,其中,用于根据指数d的比特有条件地将工作值c乘以底数值b的指令包括:用于执行蒙哥马利乘法的指令,以及
用于执行蒙哥马利乘法的指令调用所述用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令。
5.根据权利要求1所述的非瞬时机器可读介质,还包括:
用于从另一设备接收由所述用于将所述工作值c无条件地乘以与所述底数值相关联的查找表条目的指令使用的查找表的集合的指令。
6.一种编码有指令的非瞬时机器可读介质,所述指令由处理器执行以产生用于执行模幂运算的查找表,所述非瞬时机器可读介质包括:
用于初始化分别与秘密指数d内的不同比特位置相对应的多个查找表的指令;
用于产生用于添入所述多个查找表中的值的指令,包括:
用于当所述秘密指数d在与查找表相关联的比特位置处携带第一比特值时根据第一方法产生针对所述查找表的值的指令;
用于当所述秘密指数d在与查找表相关联的比特位置处携带与第一比特值不同的第二比特值时根据与第一方法不同的第二方法产生针对所述查找表的值的指令,
其中,用于初始化分别与秘密指数d内的不同比特位置相对应的多个查找表的指令包括:
用于确定将用于余数系统RNS中的模数M的集合的指令;以及
用于针对所述模数M的集合中的每个模数mi初始化分别与秘密指数d内的不同比特位置相对应的多个查找表的指令。
7.根据权利要求6所述的非瞬时机器可读介质,其中,用于产生用于添入所述多个查找表中的值的指令包括:用于模糊所产生的值的指令。
8.根据权利要求7所述的非瞬时机器可读介质,其中,用于模糊所产生的值的指令包括:
用于对用于添入第一查找表中的第一值执行第一数学函数的指令;以及
用于对用于添入第二查找表中的第二值执行第二数学函数的指令,其中,第二数学函数是第一数学函数的有效逆函数。
9.根据权利要求8所述的非瞬时机器可读介质,其中:
第一数学函数将模糊值并入第一值中,并且
第二数学函数将所述模糊值的模逆的平方并入第二值中。
10.根据权利要求9所述的非瞬时机器可读介质,其中,所述模糊值包括:基于第一值将被存储在第一查找表中的位置的索引而不变的恒定值。
11.根据权利要求9所述的非瞬时机器可读介质,其中,所述模糊值包括:第一值将被存储在所述查找表中的位置的索引被提升到恒定指数值次幂。
12.根据权利要求6所述的非瞬时机器可读介质,其中,第一方法和第二方法共同共享至少一个指令。
13.根据权利要求6所述的非瞬时机器可读介质,其中,
第一方法包括用于将所述值将被存储在查找表中的位置的索引并入所述值中的区分指令;以及
第二方法不包括所述区分指令。
14.一种用于提供白箱模幂运算的系统,包括:
第一设备,包括第一处理器和如权利要求1所述的非瞬时机器可读介质;以及
第二设备,包括第二处理器和如权利要求7所述的非瞬时机器可读介质,其中,第二设备产生由第一设备用来在不访问所述秘密指数d的情况下执行模幂运算的多个查找表。
15.一种编码有指令的非瞬时机器可读介质,所述指令由处理器执行以产生用于执行模幂运算的查找表,所述非瞬时机器可读介质包括:
用于初始化分别与秘密指数d的比特位置与余数系统RNS模数的多个配对相对应的多个查找表Li,j的指令;
用于当所述秘密指数d在与第一查找表L0,k相对应的比特位置处的值为0时将所述多个查找表中的第一查找表L0,k的值设置为
Figure FDA0002671719280000031
的指令,其中,ai是针对RNS模数中的模数mi的潜在RNS整数,δo是第一预定常数,e0是第一预定指数;以及
用于当所述秘密指数d在与第一查找表L0,k相对应的比特位置处的值为1时将所述多个查找表中的第一查找表L0,mi的值设置为
Figure FDA0002671719280000041
的指令。
16.根据权利要求15所述的非瞬时机器可读介质,还包括:
用于当所述秘密指数d在与最后的查找表Lk-1,mi相对应的比特位置处的值为0时,将所述多个查找表中的第一查找表Lk-1,mi的值设置为
Figure FDA0002671719280000042
的指令,其中,ai是针对RNS模数中的模数mi的潜在RNS整数,δk-2是最后的预定常数,ek-2是最后的预定指数,N是用于模幂运算的模数;以及
用于当所述秘密指数d在与最后的查找表Lk-1,mi相对应的比特位置处的值为1时将所述多个查找表中的第一查找表Lk-1,mi的值设置为
Figure FDA0002671719280000043
的指令。
17.根据权利要求16所述的非瞬时机器可读介质,还包括:
用于当所述秘密指数d在与中间查找表Lj,mi相对应的比特位置处的值为0时将所述多个查找表中的第一查找表Lj,mi的值设置为
Figure FDA0002671719280000044
的指令,其中,ai是针对RNS模数mi中的模数mi的潜在RNS整数,δj-1是针对中间查找表的先前预定常数,δj是针对中间查找表的当前预定常数,ej-1是针对中间查找表的先前预定指数,ej是针对中间查找表的当前预定指数,N是用于模幂运算的模数;以及
用于当所述秘密指数d在与中间查找表Lj,mi相对应的比特位置处的值为1时将所述多个查找表中的第一查找表Lj,mi的值设置为
Figure FDA0002671719280000051
的指令。
18.一种用于提供白箱模幂运算的系统,包括:
第一设备,包括第一处理器和如权利要求1所述的非瞬时机器可读介质;以及
第二设备,包括第二处理器和如权利要求17所述的非瞬时机器可读介质,其中,第二设备产生由第一设备用来在不访问所述秘密指数d的情况下执行模幂运算的多个查找表。
CN201610087787.9A 2015-02-18 2016-02-16 使用查找表的模乘运算 Active CN105892991B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/624,874 2015-02-18
US14/624,874 US9652200B2 (en) 2015-02-18 2015-02-18 Modular multiplication using look-up tables

Publications (2)

Publication Number Publication Date
CN105892991A CN105892991A (zh) 2016-08-24
CN105892991B true CN105892991B (zh) 2021-05-07

Family

ID=55066414

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610087787.9A Active CN105892991B (zh) 2015-02-18 2016-02-16 使用查找表的模乘运算

Country Status (3)

Country Link
US (1) US9652200B2 (zh)
EP (1) EP3059894B1 (zh)
CN (1) CN105892991B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11093213B1 (en) 2010-12-29 2021-08-17 Ternarylogic Llc Cryptographic computer machines with novel switching devices
US9904516B2 (en) 2014-12-23 2018-02-27 Nxp B.V. Modular exponentiation using look-up tables
US9906368B2 (en) 2014-12-23 2018-02-27 Nxp B.V. General encoding functions for modular exponentiation encryption schemes
US9985784B2 (en) 2014-12-23 2018-05-29 Nxp B.V. Efficient smooth encodings for modular exponentiation
KR101933649B1 (ko) * 2016-05-27 2018-12-28 삼성에스디에스 주식회사 화이트박스 암호 알고리즘을 이용한 공개키 암호화를 위한 장치 및 방법
WO2018086951A1 (en) * 2016-11-08 2018-05-17 Koninklijke Philips N.V. Electronic calculating device for converting a residue numbers system representation to a radix representation
RU2019121710A (ru) * 2016-12-12 2021-01-12 Конинклейке Филипс Н.В. Электронное вычислительное устройство, выполненное с возможностью вычисления произведения целых чисел
FR3063857B1 (fr) * 2017-03-08 2020-02-14 Safran Identity & Security Procede de signature electronique d'un document avec une cle secrete predeterminee
EP3379769A1 (en) 2017-03-21 2018-09-26 Gemalto Sa Method of rsa signature or decryption protected using multiplicative splitting of an asymmetric exponent
FR3066845B1 (fr) 2017-05-24 2019-06-14 Idemia Identity And Security Procede de signature electronique d'un document avec une cle secrete predeterminee
US20180351918A1 (en) * 2017-06-06 2018-12-06 Nxp B.V. Method for distributing a software application and encryption program for a white-box implementation
CN108133239A (zh) * 2018-01-17 2018-06-08 北京中星微人工智能芯片技术有限公司 用于处理分类器样本的方法和装置
US10868828B2 (en) * 2018-03-19 2020-12-15 Fortinet, Inc. Mitigation of NTP amplification and reflection based DDoS attacks
US10387122B1 (en) * 2018-05-04 2019-08-20 Olsen Ip Reserve, Llc Residue number matrix multiplier
US11509454B2 (en) * 2019-05-22 2022-11-22 Crypto Lab Inc. Apparatus for processing modular multiply operation and methods thereof
CN111343421B (zh) * 2020-02-19 2020-12-29 成都三零凯天通信实业有限公司 一种基于白盒加密的视频共享方法和系统
EP3883174A1 (en) * 2020-03-20 2021-09-22 Thales Dis France Sa Method for securely performing a public key algorithm
CN111901110B (zh) * 2020-08-06 2023-05-23 中电科网络安全科技股份有限公司 白盒化模幂结果获取方法、装置、设备及存储介质
CN114139693A (zh) * 2021-12-03 2022-03-04 安谋科技(中国)有限公司 神经网络模型的数据处理方法、介质和电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064740A (en) * 1997-11-12 2000-05-16 Curiger; Andreas Method and apparatus for masking modulo exponentiation calculations in an integrated circuit
DE10024325B4 (de) * 2000-05-17 2005-12-15 Giesecke & Devrient Gmbh Kryptographisches Verfahren und kryptographische Vorrichtung
JP3785044B2 (ja) 2001-01-22 2006-06-14 株式会社東芝 べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体
US7027598B1 (en) * 2001-09-19 2006-04-11 Cisco Technology, Inc. Residue number system based pre-computation and dual-pass arithmetic modular operation approach to implement encryption protocols efficiently in electronic integrated circuits
US7653196B2 (en) 2004-04-27 2010-01-26 Intel Corporation Apparatus and method for performing RC4 ciphering
US8793496B2 (en) 2006-08-18 2014-07-29 Florida State University Systems, methods, and computer program products for secure optimistic mechanisms for constrained devices

Also Published As

Publication number Publication date
EP3059894A1 (en) 2016-08-24
US20160239267A1 (en) 2016-08-18
CN105892991A (zh) 2016-08-24
EP3059894B1 (en) 2018-02-21
US9652200B2 (en) 2017-05-16

Similar Documents

Publication Publication Date Title
CN105892991B (zh) 使用查找表的模乘运算
US20080240443A1 (en) Method and apparatus for securely processing secret data
US11323255B2 (en) Methods and systems for encryption and homomorphic encryption systems using Geometric Algebra and Hensel codes
US10372886B2 (en) Protecting the input/output of modular encoded white-box RSA/ECC
TW200844847A (en) Chinese remainder theorem-based computation method for cryptosystems
JP2010277085A (ja) Rsaアルゴリズムにおける素数生成の保護
EP3038287A1 (en) General encoding functions for modular exponentiation encryption schemes
JP2020510879A (ja) 楕円曲線点乗算デバイス及び方法
US10235506B2 (en) White-box modular exponentiation
US10140437B2 (en) Array indexing with modular encoded values
EP2738973A1 (en) System and method for cryptography using multiplicative masking using simultaneous exponentiation techniques
US9590805B1 (en) Ladder-based cryptographic techniques using pre-computed points
CN107040370B (zh) 一种用于产生实施模幂运算的代码的装置
KR100817048B1 (ko) 여러 가지 포인트 표현을 기반으로 한 ecc에서 dfa대책을 위한 암호화 방법 및 장치
Mukhopadhyay et al. Securing the data in clouds with hyperelliptic curve cryptography
US10068070B2 (en) White-box elliptic curve point multiplication
CN107437998B (zh) 使用不安全和安全环境计算安全椭圆曲线标量乘法
KR102490702B1 (ko) 유한 필드 디피 헬만에서 보안 소수를 선택하기 위한 방법 및 시스템
KR101112570B1 (ko) 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체
CN106059770B (zh) 用于模幂运算的高效平稳编码
CN115001741B (zh) 一种数据加密方法及相关组件
Kumar Improved RSA Algorithm Based on Cloud Database using Proth Number and Mersenne Prime Number
US10903975B2 (en) Apparatus and method for performing operation being secure against side channel attack
CN106059769B (zh) 一种用于执行使用查找表的模幂运算的装置及其方法
TW202324967A (zh) 用大整數值進行編碼的白箱處理

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant