CN107040370B - 一种用于产生实施模幂运算的代码的装置 - Google Patents

一种用于产生实施模幂运算的代码的装置 Download PDF

Info

Publication number
CN107040370B
CN107040370B CN201610951530.3A CN201610951530A CN107040370B CN 107040370 B CN107040370 B CN 107040370B CN 201610951530 A CN201610951530 A CN 201610951530A CN 107040370 B CN107040370 B CN 107040370B
Authority
CN
China
Prior art keywords
code
chain
addition chain
random
mod
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
CN201610951530.3A
Other languages
English (en)
Other versions
CN107040370A (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 CN107040370A publication Critical patent/CN107040370A/zh
Application granted granted Critical
Publication of CN107040370B publication Critical patent/CN107040370B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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
    • 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/7276Additional details of aspects covered by group G06F7/723
    • G06F2207/7295Additional details of aspects covered by group G06F7/723 using an addition chain, or an addition-subtraction chain
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)

Abstract

各种实施例涉及一种用于产生实施模幂运算的代码的装置,所述装置包括:用于存储查询表的存储器;以及与所述存储器通信的处理器,所述处理器被配置成:接收用于所生成的随机加法链的信息;输出用于实施所述模幂运算的代码,所述代码从包括中间结果的所述查询表载入要素,所述中间结果利用用于所生成的随机加法链的信息;以及输出用于实施所述模幂运算的代码,所述代码使用所述所载入的要素以计算下一要素。

Description

一种用于产生实施模幂运算的代码的装置
技术领域
本文所公开的各种实施例大体上涉及一种密码函数。
背景技术
白盒密码术涉及通过工程改造以在不可信平台上执行的密码算法的软件实施方案的设计和分析。具体来说,这是在特定装置的用户可以解密消息(通过秘密密钥)的情况下的情境,消息通过他的公共密钥加密,但无法提取或导出足够的信息来恢复此秘密密钥。此外,假设用户可能是攻击者:例如,攻击者可具有完全的对软件实施方案的存取权,他可在任何时间暂停、更改和恢复软件实施方案的执行。白盒模型首先在诸如高级加密标准(AES)或数据加密标准(DES)的对称密码算法的情况下加以研究。
各种不对称密码方案包括作为主要计算运算的模幂运算。模幂运算计算,例如,
c=bd mod N
其中,底数b、指数d和模数N是正整数,使得0<b<N且0<d<φ(N)。函数φ是欧拉函数,其可计算为
Figure BDA0001140360990000011
结果通过不同的大于1的素数p除以N得出。存在用于密码术的两个特别情况,包括:
1.当N为素数时,那么φ(N)=N-1。
2.当N=p·q,其中两个素数p和q符合1<p≠q>1时,那么φ(N)=(p-1)(q-1)。
发明内容
各种实施例的简要概述在下文呈现。在以下概述中可以做出一些简化和省略,其意图突出和引入各种实施例的一些方面,而不是限制本发明的范畴。足以允许本领域的普通技术人员制作和使用本发明概念的优选实施例的详细描述将跟随在稍后的部分中。
本文所描述的各种实施例涉及用于产生实施模幂运算的代码的装置,所述装置包括:用于存储查询表的存储器;以及与存储器通信的处理器,所述处理器被配置成:接收用于所生成的随机加法链的信息;输出用于基于所生成的随机链实施模幂运算的代码,所述代码从包括中间结果的查询表载入要素,所述中间结果利用用于所生成的随机加法链的信息;以及输出用于实施模幂运算的代码,所述代码使用所载入的要素以计算下一要素。
本文所描述的各种实施例涉及用于产生实施模幂运算的代码的方法,所述方法包括:接收用于所生成的随机加法链的信息;输出用于基于所生成的随机链实施模幂运算的代码,所述代码从包括中间结果的查询表载入要素,所述中间结果利用用于所生成的随机加法链的信息;以及输出用于实施模幂运算的代码,所述代码使用所载入的要素以计算下一要素。
附图说明
为了更好的理解各种实施例,参考附图,附图中:
图1示出了用于实施不对称密码方案或查询表产生方案的硬件系统 100的例子;
图2示出了用于为用户装置提供安全内容和处理所述安全内容的软件应用程序的系统的例子;
图3示出了用于产生随机加法链的方法的例子;以及
图4示出了用于产生源码的方法的例子。
为了便于理解,相同参考标号已经用于表示具有大体上相同或类似结构或大体上相同或类似功能的元件。
具体实施方式
本文所呈现的描述和图式示出了各种原理。将了解,本领域的技术人员将能够设计各种布置,尽管本文中未明确地描述或示出所述布置,但所述布置体现这些原理且包括于本发明的范畴内。如本文中所使用,除非另外指明(例如,“否则”或者“或在替代方案中”),否则术语“或”指代非排他的或(即,和/或)。另外,本文所描述的各种实施例未必是相互排斥的,并且可组合以产生并入本文所描述的原理的额外实施例。
计算模幂的一种方法是基于加法链。有限序列的正整数a0=1,a1,..., ar=s被称作长度r的加法链,如果每一要素ai可写成之前要素的和aj+ak,那么其能计算出s。
使用加法链计算模幂运算的一种方法包括平方乘算法。此方法也被称作倍加算法(当群组被相加地写入时)。这一概念是基于事实:
Figure BDA0001140360990000031
考虑示例指数d=9997。在二进制中,这个数字是 999710=100111000011012。基于这个二进制表示的下列加法链
D3→A→D→A→D→A→D5→A→D→A→D2→A
(((((23+20)·21+20)·21+20)·25+20)·21+20)·22+20=9997
计算d(其中,D表示加倍,A表示相加)。当将本例子转化为模幂运算背景时,这恰好是倍加算法将计算的。给定输入底数b,模幂运算 c=bd mod N可通过将加倍替换为平方和将相加替换为相乘来计算
S3→M→S→M→S→M→S5→M→S→M→S2→M
((((((b^23·b)2·b)2·b)^25·b)2·b)^22·b)≡b9997mod N
所描述的实施例允许计算其中指数未直接揭示的模幂运算。当计算白盒攻击模型中的不对称密码基元时,这可能会是一个重要的特性。
实施例包括基于秘密指数d的输入,产生实施随机加法链以计算模幂运算cd modN的工具。包括对于如何有效地构建此类随机链和如何自动产生它们的技术。指数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可以对这些数据进行操作。
例如,存储装置160可包括随机加法链指令161,其中硬件装置100 基于模幂运算使用白盒非对称密码实施装置。类似地,硬件装置100可实施源码产生指令162。
将显而易见的是,描述为存储在存储装置160中的各种信息可另外或替代地存储在存储器130中。在这方面中,存储器130也可被视为构成“存储装置”,并且存储装置160可被视为“存储器”。各种其它布置将是显而易见的。另外,存储器130和存储装置160可都被视为“非暂时性机器可读媒体”。如本文中所使用,术语“非暂时性”将被理解为不包括暂时性信号,但是包括所有形式的存储装置,包括易失性存储器和非易失性存储器这两者。
虽然硬件装置100示出为包括每个所描述的组件中的一个,但是各种组件可在各种实施例中复制。例如,处理器120可包括多个微处理器,所述微处理器被配置成独立地执行本文所描述的方法或被配置成执行本文所描述的方法的步骤或子例程,使得多个处理器协作以实现本文所描述的功能性。在其它实施例中,例如在其中装置100在云计算环境中实施的那些实施例中,各种组件可物理地位于不同机器中。例如,处理器 120可包括在第一数据中心服务器中的第一微处理器以及在第二数据中心服务器中的第二微处理器。各种额外布置将是显而易见的。
图2示出了用于为用户装置提供安全内容和处理所述安全内容的软件应用程序的系统的例子。所述系统包括内容服务器200、应用程序服务器220、用户装置250、252以及数据网络240。用户装置250、252 可请求通过数据网络240获取由内容服务器200提供的安全内容。数据网络可以是提供用户装置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。并且,内容存储装置212被应用程序存储装置232代替。另外,应注意,内容服务器和应用程序服务器可在单个服务器上实施。并且,此类服务器可在分布式计算机系统上以及在云计算机系统上实施。
如应理解,本文所描述的模幂、加密或数字签名方法可在图2的系统或类似系统内以各种方式部署和利用。例如,用户装置250、252可由制造商或其它卖方提供,所述用户装置被预配置成将签名的消息发射到内容服务器200以请求内容的提供。可替换的是,用户装置250、252 可不完全针对此类操作预配置;实际上,应用程序服务器220可与用户装置250、252通信以实现此类配置。例如,应用程序服务器可发射代码指令以用于实施本文所描述的方法或限定一个或多个查询表的数据。
图3示出了用于产生随机加法链300的方法的例子。
一个实施例可包括全部加法链的子集,所谓的星型加法链(star additionchain),但所呈现的技术可更普遍地应用到全部加法链上。布劳尔链(Brauer chain)或星型加法链是其中被加数中的一个始终是链的前一要素的加法链:
Figure BDA0001140360990000081
对于一些(for some)j<k。
指数d和整数参数(p1、b1、b2)(使得p1≤b1且b2大于加法链的预期长度)可用于使用以下步骤构建随机加法链。用于产生随机加法链300 的方法可开始于步骤305。
用于产生随机加法链300的方法可前进到步骤310。在步骤310中,方法可首先设置第一加法链要素a0=1且计数器i=1。
用于产生随机加法链300的方法可前进到步骤315。在步骤315中,方法可设置布尔值m为0以标记不存在溢出。
用于产生随机加法链300的方法可前进到步骤320,其中方法可从范围[0,b1-1]中挑选均匀随机正整数r1
用于产生随机加法链300的方法可前进到步骤325,其中如果r1≤p1且2·ai-1>d,那么方法可分配m=1。
用于产生随机加法链300的方法可前进到步骤330,其中如果r1≤p1且2·ai-1≤d,那么方法可分配ai=ai-1+ai-1
用于产生随机加法链300的方法可前进到步骤335。如果r1>P1或 m=1,那么加上加法链的随机的先前要素以使得结果小于d。这个可进行如下,首先可从范围[0,b2-1]中挑选均匀随机正整数r2。检查是否ai-1 +aj≤d,其中下标j=r2mod i。如果是,那么可设置ai=ai-1+aj,并继续。如果否,并因此ai-1+aj>d,那么可从加法链中挑选另一先前要素。这可通过挑选另一随机要素或逐一减少下标j直到可发现使得ai=ai-1+aj≤d的加法链要素aj来完成。
用于产生随机加法链300的方法可前进到步骤340。方法可逐一 (i=i+1)增加加法链的长度,并且当ai-1≠d时,方法可行进返回到步骤 310。否则,方法可前进到步骤345,其中它可结束。
已获得星型加法链,其为长度r=i-1的a0=1,a1,...ai-2,ai-1=d,其计算指数d。这个链可使用i-1加法计算,并且所需要的存储取决于用于上文所描述的步骤中的参数(p1、b1、b2)和均匀随机值的选择。举例来说,尽管当其中j<i-1的先前要素aj用于加法时,这个值需要存储以用于后续的再使用,但计算加倍步骤ai=ai-1+ai-1并不需要额外的存储。
图4示出了用于产生源码400的方法的例子。
当随机星型加法链已经生成时,可输出计算所需要的模乘cd mod N 的源码。待生成的实施方案可假设它接收某一值c作为输入(值d是固定的和秘密的,模数N是固定的和公开的)。这意味着代码生成器输出代码,其设置在模幂c0中的第一值为升高到加法链中第一要素(a0=1) 的输入值:c0≡c≡ca0mod N。实施方案使用可为查询表的暂时性存储器以存储中间结果,所述中间结果当计算模幂时可再次使用。查询表的大小取决于所生成的随机星型加法链的特性。针对加法链中的每一步骤,可进行下列操作(开始于i=1直到我们到达最终要素r)。
用于产生源码400的方法可开始于步骤405并前进到步骤410。在步骤420中,方法可从用于产生随机加法链300的方法中检索信息,其允许推导出ai=ai-1+aj,其中0≤j<i。
用于产生源码400的方法接着可前进到步骤415。在步骤420中,方法可输出从由实施方案保存的查询表载入要素
Figure BDA0001140360990000094
Figure BDA0001140360990000092
的代码。
用于产生源码400的方法接着可前进到步骤420。在步骤420中,方法可输出使用这些要素以计算下一要素的代码:
Figure BDA0001140360990000093
用于产生源码400的方法接着可前进到步骤425。在步骤425中,当这个结果ci除了在下一步骤(迭代i+1)之外,还在后续步骤中需要时,那么方法可输出在查询表中存储ci的代码。
实际上,步骤420不需要明确载入要素ci-1=cai-1mod N,因为它在先前步骤中已经计算出,并且因此最可能仍然处于本地寄存器/变量中。
可添加针对攻击者的各种对策。举例来说,为了使白盒攻击者更难以精确地追踪到实施方案进行到什么程度,在步骤420中从查询表载入要素可以不同方式计算。不是对两个指数i-1和i进行硬编码,而是可使用特定针对于迭代i的两个函数fi 1和fi 2,其使用两个硬编码的值αi和βi。函数fi 1和fi 2的功能应是这样的:更难以区分出它在精确计算什么和其它(功能)代码是什么。这些函数可经选择以使得fi 1i)=i-1且 fi 2i)=j(并恢复用于全部其它输入的伪随机值),在不需要第二运算元的情况下(即,当计算模组平方值时),这个可(举例来说)由fi 2的负结果来指示。类似地,其中在步骤425中存储结果(如果需要)的位置可由(另一)函数fi 3(γi)产生。
实施例可允许基于模幂运算具现化白盒非对称密码。其包括广泛的应用,范围从数字权限管理(DRM)到银行应用,以及移动电话、电视机机顶盒等等中的保护密码密钥。
产生这个源码的工具由两部分构成。构建用于指数d的随机加法链的第一部分和给定这个加法链产生内建式源码(具有对抗攻击者的潜在对策)的第二部分。被允许知道秘密指数d的第三方产使用随机加法链实施求幂模数N的源码。这个生成器的参数可调节,并在可生成随机实施方案的速度、代码大小和数量之间存在平衡点。
从前述描述中将显而易见的是,可以硬件形式实施本发明的各种实施例。此外,各种实施例可实施为存储在非暂时性机器可读存储媒体(例如,易失性存储器或非易失性存储器)上的指令,所述指令可由至少一个处理器读取和执行以执行本文中详细描述的操作。机器可读存储媒体可包括用于以机器可读形式存储信息的任何机构,例如,个人计算机或膝上型计算机、服务器或其它计算装置。因此,非暂时性机器可读存储媒体不包括暂时性信号,但可包括易失性存储器和非易失性存储器,其包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快闪存储器装置和类似存储媒体。
本领域的技术人员应了解,本文中的任何框图表示体现本发明的原理的说明性电路的概念视图。类似地,将了解,任何流程图表、流程图、状态迁移图、伪码等等表示可大体上表示在机器可读媒体中可大体上表示并因此由计算机或处理器执行的各种过程,无论此类计算机或处理器是否明确地示出。
虽然已具体参考其某些方面详细地描述了各种实施例,但是应理解,本发明可容纳其它实施例,并且其细节能够在各种显而易见的方面中进行修改。如对本领域的技术人员显而易见的,保持在本发明的精神和范畴内的同时可实现变化和修改。因此,上述公开内容、描述和图式仅出于说明性目的,并且不以任何方式限制本发明,本发明仅由权利要求书限定。

Claims (10)

1.一种用于产生实施模幂运算的代码的装置,其特征在于,所述装置包括:
第一部分,所述第一部分被配置为生成随机加法链;
第二部分,所述第二部分包括:
用于存储查询表的存储器;以及
与所述存储器通信的处理器,所述处理器被配置成:
接收用于所生成的随机加法链的信息;
输出用于基于所述所生成的随机链实施所述模幂运算的代码,所述代码从包括中间结果的所述查询表载入要素,所述中间结果利用用于所生成的随机加法链的所述信息;以及
输出用于实施所述模幂运算的代码,所述代码使用所述所载入的要素以计算下一要素,
其中,所述随机加法链通过以下操作产生:
初始化第一加法链要素a0=1且计数器ⅰ=1,
设置布尔值m为0以标记不存在溢出,
从范围[0,b1-1]中挑选均匀随机正整数r1,其中指数d和整数参数(p1、b1、b2)为输入,使得p1≤b1且b2大于所述加法链的预期长度,所述指数d和所述整数参数(p1、b1、b2)可用于构建所述随机加法链,
如果r1≤p1且2·ai-1>d,那么分配m=1,并且
如果r1≤p1且2·ai-1≤d,那么分配ai=ai-1+ai-1。
2.根据权利要求1所述的装置,其特征在于,所述接收实现确定以使得:
ai=ai-1+aj,其中0≤j<i,其中所有an是所述随机加法链的要素。
3.根据权利要求1所述的装置,其特征在于,所述处理器另外被配置成:
输出从所述查询表载入所述要素
Figure FDA0002948873940000011
mod N和
Figure FDA0002948873940000012
mod N的代码,其中输出源码根据cdmod N计算所述模幂,其中将所述随机加法链的要素an输入到所述模幂运算中,所述值c接收为输入,所述值d是固定的和秘密的,所述模数N是固定的和公开的。
4.根据权利要求1所述的装置,其特征在于,所述处理器另外被配置成:
输出代码以计算下一要素以使得:
ci≡ci-1·cj≡cai-1·caj≡cai-1+ajmod N,其中输出源码根据cdmod N计算所述模幂,其中将所述随机加法链的要素an输入到所述模幂运算中,所述值c接收为输入,所述值d是固定的和秘密的,所述模数N是固定的和公开的。
5.根据权利要求1所述的装置,其特征在于,所述处理器另外被配置成:
如果这个结果ci除了在下一步骤之外,还在后续步骤中需要,那么输出在所述查询表中存储ci的代码。
6.一种用于产生实施模幂运算的代码的方法,其特征在于,所述方法包括:
接收用于所生成的随机加法链的信息;
输出用于基于所述所生成的随机链实施所述模幂运算的代码,所述代码从包括中间结果的查询表载入要素,所述中间结果利用用于所生成的随机加法链的所述信息;以及
输出用于实施所述模幂运算的代码,所述代码使用所述所载入的要素以计算下一要素,
其中,所述随机加法链通过以下操作产生:
初始化第一加法链要素a0=1且计数器ⅰ=1,
设置布尔值m为0以标记不存在溢出,
从范围[0,b1-1]中挑选均匀随机正整数r1,其中指数d和整数参数(p1、b1、b2)为输入,使得p1≤b1且b2大于所述加法链的预期长度,所述指数d和所述整数参数(p1、b1、b2)可用于构建所述随机加法链,
如果r1≤p1且2·ai-1>d,那么分配m=1,并且
如果r1≤p1且2·ai-1≤d,那么分配ai=ai-1+ai-1。
7.根据权利要求6所述的方法,其特征在于,所述接收实现确定以使得:
ai=ai-1+aj,其中0≤j<i,其中所有an是所述随机加法链的要素。
8.根据权利要求6所述的方法,其特征在于,所述方法另外包括:
输出从所述查询表载入所述要素
Figure FDA0002948873940000031
mod N和
Figure FDA0002948873940000032
mod N的代码,其中输出源码根据cdmod N计算所述模幂,其中将所述随机加法链的要素an输入到所述模幂运算中,所述值c接收为输入,所述值d是固定的和秘密的,所述模数N是固定的和公开的。
9.根据权利要求6所述的方法,其特征在于,所述方法另外包括:
输出代码以计算下一要素以使得:
ci≡ci-1·cj≡cai-1·caj≡cai-1+ajmod N,其中输出源码根据cdmod N计算所述模幂,其中将所述随机加法链的要素an输入到所述模幂运算中,所述值c接收为输入,所述值d是固定的和秘密的,所述模数N是固定的和公开的。
10.根据权利要求6所述的方法,其特征在于,所述方法另外包括:
如果这个结果ci除了在下一步骤之外,还在后续步骤中需要,那么输出在所述查询表中存储ci的代码。
CN201610951530.3A 2015-11-04 2016-11-02 一种用于产生实施模幂运算的代码的装置 Active CN107040370B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/932,622 2015-11-04
US14/932,622 US9942038B2 (en) 2015-11-04 2015-11-04 Modular exponentiation using randomized addition chains

Publications (2)

Publication Number Publication Date
CN107040370A CN107040370A (zh) 2017-08-11
CN107040370B true CN107040370B (zh) 2021-07-27

Family

ID=57391750

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610951530.3A Active CN107040370B (zh) 2015-11-04 2016-11-02 一种用于产生实施模幂运算的代码的装置

Country Status (3)

Country Link
US (1) US9942038B2 (zh)
EP (1) EP3166013B1 (zh)
CN (1) CN107040370B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3220306B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
GB202200991D0 (en) * 2022-01-26 2022-03-09 Nchain Licensing Ag Elliptic curve arithmetic in script

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101196964A (zh) * 2006-12-07 2008-06-11 上海安创信息科技有限公司 一种抗旁路攻击算法及其芯片
CN103259523A (zh) * 2012-02-17 2013-08-21 京微雅格(北京)科技有限公司 一种加法链优化的方法和采用该加法链的集成电路
WO2013142979A1 (en) * 2012-03-30 2013-10-03 Irdeto Canada Corporation Securing accessible systems using dynamic data mangling
CN104468100A (zh) * 2014-12-03 2015-03-25 天津大学 改进的滑动窗口模幂计算方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748410B1 (en) * 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
GB0126317D0 (en) 2001-11-02 2002-01-02 Comodo Res Lab Ltd Improvements in and relating to cryptographic methods and apparatus in which an exponentiation is used
US7657029B2 (en) 2005-03-01 2010-02-02 Microsoft Corporation Systems and methods for generating random addition chains
US9244683B2 (en) 2013-02-26 2016-01-26 Nvidia Corporation System, method, and computer program product for implementing large integer operations on a graphics processing unit

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101196964A (zh) * 2006-12-07 2008-06-11 上海安创信息科技有限公司 一种抗旁路攻击算法及其芯片
CN103259523A (zh) * 2012-02-17 2013-08-21 京微雅格(北京)科技有限公司 一种加法链优化的方法和采用该加法链的集成电路
WO2013142979A1 (en) * 2012-03-30 2013-10-03 Irdeto Canada Corporation Securing accessible systems using dynamic data mangling
CN104335219A (zh) * 2012-03-30 2015-02-04 爱迪德加拿大公司 使用变量相关编码来保护可访问的系统
CN104468100A (zh) * 2014-12-03 2015-03-25 天津大学 改进的滑动窗口模幂计算方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Matthieu Rivain.Securing RSA against Fault Analysis by Double Addition Chain Exponentiation.《the cryptographers track at the rsa conference》.2009, *
Securing RSA against Fault Analysis by Double Addition Chain Exponentiation;Matthieu Rivain;《the cryptographers track at the rsa conference》;20090430;第459-480页 *
最短加法链的随机密树方法;江顺亮等;《计算机科学》;20150315;第42卷(第3期);第228-232页 *

Also Published As

Publication number Publication date
US20170126407A1 (en) 2017-05-04
US9942038B2 (en) 2018-04-10
EP3166013B1 (en) 2019-04-24
CN107040370A (zh) 2017-08-11
EP3166013A1 (en) 2017-05-10

Similar Documents

Publication Publication Date Title
CN105892991B (zh) 使用查找表的模乘运算
CN106161034B (zh) 使用乘法秘密共享的rsa解密
US9590807B2 (en) Identity based public key cryptosystem
CA2983163A1 (en) Generating cryptographic function parameters from compact source code
JP4086503B2 (ja) 暗号演算装置及び方法並びにプログラム
US9906368B2 (en) General encoding functions for modular exponentiation encryption schemes
US11316665B2 (en) Generating cryptographic function parameters based on an observed astronomical event
JP7206324B2 (ja) 暗号アルゴリズム向けのワンタイムの中国剰余定理のべき乗のためのシステムおよび方法
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
US20200119918A1 (en) Elliptic curve point multiplication device and method in a white-box context
US10079675B2 (en) Generating cryptographic function parameters from a puzzle
US20200366496A1 (en) Whitebox computation of keyed message authentication codes
CN115549891B (zh) 同态加密方法、同态解密方法、同态计算方法及设备
JP2017526981A5 (zh)
CN107040370B (zh) 一种用于产生实施模幂运算的代码的装置
US8731187B2 (en) Computing genus-2 curves using general isogenies
KR101112570B1 (ko) 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체
CN106059770B (zh) 用于模幂运算的高效平稳编码
CN109688103A (zh) 一种可审计的加密存储方法及系统
US10903975B2 (en) Apparatus and method for performing operation being secure against side channel attack
US20230085577A1 (en) Secured performance of an elliptic curve cryptographic process
CN106059769B (zh) 一种用于执行使用查找表的模幂运算的装置及其方法
KR20130036495A (ko) Rsa 암호 알고리즘 교육을 위한 학습 시스템 및 자가학습 방법

Legal Events

Date Code Title Description
PB01 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