CN106059770B - 用于模幂运算的高效平稳编码 - Google Patents
用于模幂运算的高效平稳编码 Download PDFInfo
- Publication number
- CN106059770B CN106059770B CN201610213566.1A CN201610213566A CN106059770B CN 106059770 B CN106059770 B CN 106059770B CN 201610213566 A CN201610213566 A CN 201610213566A CN 106059770 B CN106059770 B CN 106059770B
- Authority
- CN
- China
- Prior art keywords
- factors
- value
- encoding
- calculating
- integer
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/723—Modular exponentiation
Abstract
各种实施例涉及一种对数据进行编码的方法和相关装置以及非暂时性机器可读存储媒体,包含:确定待用于对值h进行编码的因子集合S,其中所述因子集合包含与所述值h中的相应的数字位置相关联的多个子集;从所述因子集合S中选择多个因子;以及计算所述多个因子的乘积以产生编码值。各种其它实施例涉及一种对数据进行编码的方法和相关装置以及非暂时性机器可读存储媒体,包含:确定待用于对所述值h进行编码的因子集合S和权重w;从所述因子集合S中选择w个因子的集合T以表示所述值h;以及计算所述集合T的乘积以产生编码值。
Description
相关申请交叉引用
本申请案是2014年12月23日递交的第14/580,963号美国专利申请案的部分继续申请案,所述部分继续申请案的全部揭示内容出于各种目的在此以引用的方式并入本文中。
技术领域
本文所揭示的各种实施例大体上涉及数据编码和数字签名,并且更确切地说但非排他地,涉及用于基于RSA的数字签名方案的编码。
背景技术
数字签名方案通常在对消息进行签名之前将编码过程应用于数据以确保数据符合预先选择的字母表,所述方案应用于所述预先选择的字母表。举例来说,使用密钥3元组<N,e,d>的标准RSA算法首先将每个符号转换成0和N之间的对应值。其它编码方案可以用于输入值的不同集合使得签名方案能够采用输入值集合中的值的各种数学特性。
在编码之后,编码值用于形成签名以用于发射。例如RSA等一些加密算法利用模幂函数来形成此类签名。作为一个实例,RSA使用私有密钥对<N,d>通过计算bd mod N处理编码值b。RSA将随后使用公共密钥对<N,e>通过首先计算se mod N验证签名值s。随后将解码函数应用于所得值以检索原始值。
发明内容
各种实施例的简要概述在下文呈现。在以下概述中可以做出一些简化和省略,所述概述意图突出且引入各种实施例的一些方面,但不限制本发明的范围。足以允许本领域普通技术人员产生且使用发明性概念的优选实施例的详细描述将跟随在稍后的章节中。
本文中所描述的各种实施例涉及一种用指令编码以用于执行模幂运算的非暂时性机器可读媒体,所述非暂时性机器可读媒体包含:用于确定待取幂的值b的多个因子的指令;用于从查找表检索与多个因子相关联的多个查找表项的指令;用于计算多个查找表项的乘积的指令;以及用于使用加密密钥模数N来计算乘积的留数以产生取幂值s的指令。
本文中所描述的各种实施例涉及一种用于执行模幂运算的装置,非暂时性机器可读媒体包含:存储器,其被配置成存储查找表;以及与存储器通信的处理器,所述处理器被配置成:确定待取幂的值b的多个因子;从查找表检索与多个因子相关联的多个查找表项;计算多个查找表项的乘积;以及使用加密密钥模数N来计算乘积的留数,以产生取幂值s。
本文中所描述的各种实施例涉及一种用于执行模幂运算的方法,包含:确定待取幂的值b的多个因子;从查找表检索与多个因子相关联的多个查找表项;计算多个查找表项的乘积;以及使用加密密钥模数N来计算乘积的留数以产生取幂值s。
本文中描述各种实施例,其中确定待取幂的值b的多个因子包含:通过从因子集合S识别多个因子以表示值h来对值h进行编码。
本文中描述各种实施例,其中:确定待取幂的值b的多个因子包含:确定对应地与因子集合S中的多个因子相关联的多个索引;以及检索与多个因子相关联的多个查找表项包含:从查找表中对应地由多个索引指示的位置检索多个查找表项。
各种实施例另外包含:计算将被数字签名的消息m的摘要h;对摘要h进行编码以产生待取幂的值b;以及将消息m和取幂值s作为数字签名发射到网络装置。
各种实施例另外包含:从网络装置接收查找表;以及存储查找表以用于随后通过检索多个查找表项来获取。
本文中描述各种实施例,其中多个因子是属于预先确定的因子集合S的多个质数。
各种实施例另外包含对值h进行编码以产生待取幂的值b,包含:迭代值h的位位置;在设定在值hi中在位置i处的位时,将与在因子的集合S内的位位置i相对应的因子si包含在编码值b中。
本文中所描述的各种实施例涉及一种用于产生用于执行模幂运算的查找表的方法所述方法包含:确定与编码算法相关联的因子集合S;基于因子集合S的对应的因子、秘密指数d以及加密密钥模数N来计算多个模幂;将多个模幂存储在查找表中;以及将查找表发射到至少一个用户装置。
本文中所描述的各种实施例涉及一种用于产生用于执行模幂运算的查找表的装置,所述装置包含:网络接口;存储器;以及与网络接口和存储器通信的处理器,所述处理器被配置成:确定与编码算法相关联的因子集合S;基于因子集合S的对应的因子、秘密指数d以及加密密钥模数N来计算多个模幂;将多个模幂存储在查找表中;以及经由网络接口将查找表发射到至少一个用户装置。
本文中所描述的各种实施例涉及一种用于产生用于执行模幂运算的查找表的方法,所述方法包含:确定与编码算法相关联的因子集合S;基于因子集合S的对应的因子、秘密指数d以及加密密钥模数N来计算多个模幂;将多个模幂存储在查找表中;以及将查找表发射到至少一个用户装置。
各种实施例另外包含产生加密密钥,所述加密密钥包含秘密指数d、公共指数e以及加密密钥模数N。
本文中描述各种实施例,因子集合S是有序集合,由此因子集合S的个别的因子si与对应的索引i相关联;将多个模幂存储在查找表中包含:将多个模幂中的某一模幂存储在与索引i相关联的查找表中,所述索引与因子si相关联,所述模幂运算基于所述因子。
各种实施例另外包含参与数字签名方案,包含:从至少一个用户装置接收消息m和签名s;使用公共指数e和加密密钥模数N来计算签名s的模幂以产生第一整数b;对第一整数b进行解码以产生第二整数a;计算消息m的摘要h;以及通过比较摘要h与第二整数a来验证消息m。
本文中描述各种实施例,其中参与数字签名方案包含:验证第一整数b属于编码域V,所述编码域基于因子集合S而被确定。
本文中所描述的各种实施例涉及一种用指令编码以用于对值h进行编码的非暂时性机器可读媒体,所述非暂时性机器可读媒体包含:
用于确定将用于对值h进行编码的因子集合S的指令,其中所述因子集合包含与值h中对应的数字位置相关联的多个子集;
用于从因子集合S选择多个因子的指令,包含:
用于从与数字位置相关联的多个子集选择子集的指令,以及
用于基于值h中在与选定子集相关联的数字位置处的数字值而从选定子集选择因子的指令;以及
用于计算多个因子的乘积以产生编码值的指令。
本文中所描述的各种实施例涉及一种用于对值h进行编码的装置,包含:存储器;以及与存储器通信的处理器,所述处理器被配置成:
确定将用于对值h进行编码的因子集合S,其中所述因子集合包含与值h中对应的数字位置相关联的多个子集;
从因子集合S选择多个因子,包括:
从与数字位置相关联的多个子集选择子集,以及
基于值h中在与选定子集相关联的数字位置处的数字值而从选定子集选择因子;以及
计算多个因子的乘积以产生编码值。
本文中所描述的各种实施例涉及一种用于对值h进行编码的方法,所述方法包含:
确定将用于对值h进行编码的因子集合S,其中所述因子集合包含与值h中对应的数字位置相关联的多个子集;
从因子集合S选择多个因子,包含:
从与数字位置相关联的多个子集选择子集,以及
基于值h中在与选定子集相关联的数字位置处的数字值而从选定子集选择因子;以及
计算多个因子的乘积以产生编码值。
各种实施例另外包含进一步包含:用于将值h转换成r进制表示,其中多个子集具有等于基数r的对应的长度,且数字位置与值h的r进制数相对应。
本文中描述各种实施例,其中因子集合S包含质数幂的集合,所述质数幂的集合包含至少一个非质数。
本文中描述各种实施例,其中:因子集合S是有序集合,由此在因子集合S内的因子对应地与索引相关联;从与数字位置相关联的多个子集选择子集包含:将值h的基数r乘以与数字位置相对应的第一索引i以获得第二索引j;且基于值h中在与选定子集相关联的数字位置处的数字值而从选定子集选择因子包含:将值h中的位于与第一索引i相对应的数字位置处的数字与第二索引j相加,以及在因子集合S内检索与第二索引j相对应的因子。
各种实施例另外包含:计算值h以作为将被数字签名的消息m的摘要;计算签名s以作为编码值的模幂;以及将消息m和签名s发射到另一装置。
各种实施例另外包含执行编码值的模幂运算,包含:从先前存储的查找表检索多个项,以及计算所述多个项的乘积。
各种实施例另外包含从网络服务器接收查找表和存储查找表。
本文中所描述的各种实施例涉及一种用指令编码以用于对值h进行编码的非暂时性机器可读媒体,所述非暂时性机器可读媒体包含:用于确定将用于对值h进行编码的因子集合S和权重w的指令;用于从因子集合S选择w因子的集合T以表示值h的指令;以及用于计算集合T的乘积以产生编码值的指令。
本文中所描述的各种实施例涉及一种用于对值h进行编码的装置,包含:存储器;以及与存储器通信的处理器,所述处理器被配置成:确定将用于对值h进行编码的因子集合S和权重w;从因子集合S中选择w个因子的集合T以表示值h;以及计算集合T的乘积以产生编码值。
本文中所描述的各种实施例涉及一种用于对值h进行编码的方法,包含:确定将用于对值h进行编码的因子集合S和权重w;从因子集合S选择w因子的集合T以表示值h;以及计算集合T的乘积以产生编码值。
本文中描述各种实施例,其中从因子集合S选择w因子的集合T以表示值h包含:对值h应用不排名函数以将在因子集合S内位于与值h相对应的排名处的w子集识别为选定集合T。
本文中描述各种实施例,其中应用不排名函数包含:基于值h从多个可能的不排名函数选择所述不排名函数。
本文中描述各种实施例,其中因子集合S包含质数幂的集合。
各种实施例另外包含:计算值h以作为将被数字签名的消息m的摘要;计算签名s以作为编码值的模幂;以及将消息m和签名s发射到另一装置。
各种实施例另外包含执行编码值的模幂运算,包含:从先前存储的查找表检索多个项,以及计算所述多个项的乘积。
本文中所描述的各种实施例涉及一种用由处理器执行的指令编码以用于产生用于执行模幂运算的查找表的非暂时性机器可读媒体,所述非暂时性机器可读媒体包含:用于确定与编码算法相关联的因子集合S的指令;用于确定因子集合S的基础因子集合S′以用于产生查找表的指令;用于基于基础因子集合S′的对应的因子、秘密指数d以及加密密钥模数N来计算多个模幂的指令;用于将多个模幂存储在查找表中的指令;以及用于将查找表发射到至少一个用户装置的指令。
本文中所描述的各种实施例涉及一种用于产生用于执行模幂运算的查找表的装置,所述装置包含:网络接口;存储器;以及与网络接口和存储器通信的处理器,所述处理器被配置成:确定与编码算法相关联的因子集合S;确定因子集合S的基础因子集合S′以用于产生查找表;基于基础因子集合S′的对应的因子、秘密指数d以及加密密钥模数N来计算多个模幂;将多个模幂存储在查找表中;以及经由网络接口将查找表发射到至少一个用户装置。
本文中所描述的各种实施例涉及一种用于产生用于执行模幂的查找表的方法,所述方法包含:确定与编码算法相关联的因子集合S;确定因子集合S的基础因子集合S′以用于产生查找表;基于基础因子集合S′的对应的因子、秘密指数d以及加密密钥模数N来计算多个模幂;将多个模幂存储在查找表中;以及将查找表发射到至少一个用户装置。
本文中描述各种实施例,其中:因子集合S包含质数幂的集合,且基础因子集合S′包含质数的集合,集合S的质数幂由所述质数的集合构造。
各种实施例另外包含参与数字签名方案,包含:从至少一个用户装置接收消息m和签名s;使用公共指数e和加密密钥模数N来计算签名s的模幂以产生第一整数b;对第一整数b进行解码以产生第二整数a;计算消息m的摘要h;以及通过比较摘要h与第二整数a来验证消息m。
本文中描述各种实施例,其中对第一整数b进行解码以产生第二整数a包含:识别用于对第一整数b进行编码的因子集合S;从因子集合S识别包含于第一整数b中的多个因子;识别与多个因子中的对应因子相对应的多个索引;从多个索引得到多个项;以及计算多个项的总和以产生第二整数a。
本文中描述各种实施例,其中从多个索引得到多个项包含:识别多个索引的多个序列识别符,由此当对多个索引进行排序时,序列识别符记录相对应的索引在多个索引内的位置;基于多个索引和基数r计算多个留数;基于将基数r升高到与多个序列识别符相对应的幂来计算多个幂;以及通过计算多个留数对应地与多个幂的乘积来计算多个项。
本文描述各种实施例,其中对第一整数b进行解码以产生第二整数a包含:识别用于对第一整数b进行编码的因子集合S和权重w;从因子集合S识别包含于第一整数b中的多个因子T;对多个因子T应用排名函数以将多个因子T在因子集合S内的排名识别为第二整数a。
本文描述另外各种系统,其中上述方法、装置或非暂时性媒体中的一个或多个彼此结合而操作。例如,此系统可以包含一种用于产生模幂或对值进行编码的方法、装置或非暂时性媒体,所述方法、装置或非暂时性媒体结合用于产生查找表、验证模幂或对值进行解码的一种方法、装置或非暂时性媒体而操作。
附图说明
为了更好的理解各种实施例,参考附图,其中:
图1示出用于实施本文中描述的编码和签名方案的硬件系统的实例;
图2示出用于提供用户装置安全内容的系统以及处理所述安全内容的软件应用程序的实例;
图3示出用于对消息进行数字签名的方法的实例;
图4示出用于验证数字签名的方法的实例;
图5示出用于产生查找表的方法的实例;
图6示出编码方法的第一实例;
图7示出解码方法的第一实例;
图8示出编码方法的第二实例;
图9示出解码方法的第二实例;
图10示出编码方法的第三实例;以及
图11示出解码方法的第三实例。
为了便于理解,相同参考标号用于表示具有基本上相同或类似结构或基本上相同或类似功能的元件。
具体实施方式
本文中所呈现的描述和图式示出了各种原理。应了解,本领域的技术人员将能够设计各种布置,尽管本文中未明确地描述或示出所述布置,但所述布置体现这些原理且包含于本发明的范围内。如本文所使用,术语“或”是指非独占的或(即,和/或),除非另外指明(例如,“否则”或者“或在替代方案中”)。另外,本文所描述的各种实施例未必是相互排斥的,并且可以组合以产生并入本文中描述的原理的另外实施例。
鉴于加密的不断增长的情况和应用,例如在不可信平台上的应用,最近的努力已致力于“白箱密码术”的概念,其中加密方案被研发成安全的,甚至当加密实施方案遭遇到攻击者时也是如此。白箱密码术涉及通过工程改造以在不可信平台上执行的加密算法的软件实施方案的设计和分析。确切地说,这是其中特定装置的用户可以解密消息(通过秘密密钥)的情境,所述消息通过用户的公共密钥加密,但是无法提取或得到足够的信息来恢复此秘密密钥。此外,假定在这类实施方案中用户可以是攻击者:例如,攻击者已经完全获取了软件实施方案,可以在任何时间暂停、更改和恢复软件实施方案的执行。
举例来说,在数字权限管理系统中,希望向内容消费者提供容易地认证他们自身作为被授权获取内容的一方的能力。然而,还希望防止内容消费者出于向其它方提供对仅授权给原始内容消费者的相同内容的获取的目的与那些其它方分享凭证。
此情境的一个白箱方法是向内容消费者提供使用私有密钥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包含数字签名算法,所述数字签名算法用于产生用于验证硬件装置或其用户的身份标识的数字签名或用于验证从其它装置接收的数字签名。为了支持数字签名算法162,存储装置160还包含编码或解码算法164和模幂算法166。如将在下文中借助于各种实例更详细地理解和说明的,编码算法164将初始值转换成属于一个集合,模幂算法166在所述集合上操作,而解码算法164将此编码集合中的值转换回到原始集合(例如,整数的集合等)中的值。模幂算法166使用升高到秘密指数d或公共指数e(取决于签名是对应地被计算还是被验证)的幂的编码值的加密密钥模数N来计算相当于留数的模幂。在遵循白箱密码术方法的各种实施例中,模幂算法166并不获取秘密指数d,并且实际上存储装置160包含查找表168,所述查找表可以由模幂算法166使用以执行如在以下各种实例中描述的其功能。
在硬件装置100实施内容服务器或其它服务器以用于分配查找表的情况下,存储装置包含查找表产生指令172。这些指令172可利用加密密钥(包含秘密指数,d)和用于形成编码域V的因子集合S以预先计算因子的模幂,使得装置不获取秘密指数d,然而这些指令可使用预先计算的模幂来构造属于编码域V的任何编码值的模幂。在一些此类实施例中,装置100也可以产生加密密钥或因子集合,并且因此,存储装置160可存储加密密钥产生指令174或因子集合产生指令176。应了解,在一些实施例中,加密密钥或因子集合对于每个用户可以是唯一的,对于所有用户可以是恒定的,或其某一组合可以是恒定的。另外,在一些实施例中,内容服务器或其它服务器也可以参与数字签名方案(例如,验证装置的身份标识,查找表先前发射到所述装置),并且因此还可包含数字签名算法162、编码/解码算法164和模幂算法166。
将显而易见的是,描述为存储在存储装置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。并且,内容存储装置722被应用程序存储装置232代替。另外,应注意内容服务器和应用程序服务器可以在单个服务器上实施。并且,此类服务器可以在分布式计算机系统上实施以及在上云计算机系统上实施。
如将理解,本文中描述的模幂、编码或数字签名方法可以在图2的系统或类似系统内以各种方式部署和利用。举例来说,用户装置250、252可由制造商或其它卖方提供,所述用户装置被预配置成将签署的消息发射到内容服务器200以请求内容的提供。替代地,用户装置250、252可能未完全针对此类操作预配置;实际上,应用程序服务器220可与用户装置250、252通信以实现此类配置。举例来说,应用程序服务器可发射代码指令以用于实施本文中所描述的方法或限定一个或多个查找表的数据。
图3示出用于对消息进行数字签名的方法300的实例。方法300可对应于图1的数字签名算法162。举例来说,在装置请求内容传递的实施例中,装置可执行例如方法300等方法以对请求消息进行数字签名以证明请求者的身份标识。用于执行例如方法300等数字签名方法的各种替代情况将是显而易见的。
方法在步骤305中开始并且前进到步骤310,在步骤310,装置计算待签名的消息m的摘要h。举例来说,消息可以是请求将内容传递到装置的请求消息。摘要可根据例如将哈希函数应用到整个消息的任何方法计算。替代地,在一些实施例中,完全的非摘要方法可以用于数字签名,在此情况下可省略步骤310。
接下来,在步骤315中,装置将摘要(或其它值)h编码到编码域V中,在所述编码域内以下模幂步骤被配置成操作。具体来说,根据各种实施例,编码域V是基于预先选择的因子集合S限定或产生的。因子集合S可以例如是质数的集合、质数幂的集合、相对于彼此互质的数目的集合或整数的任意集合。鉴于本发明因子集合S的选择之间的各种权衡将是显而易见的。举例来说,质数的集合可提供与非互质的任意整数的集合相比对“误检”签名验证的更大的防御,但是也可能需要较大查找表以预先计算和存储。给定此因子集合S,编码域可被定义为可作为S中的因子的乘积构造的任何整数,
其中N是加密密钥的模数。举例来说,给定因子集合S={2,3,5},可以示出50∈V,因为50=21*52。另一方面,70并不落入此实例编码域V内,因为其质数因子中的一个质数因子,7既,不是S的元素也不是S中的元素的因子。针对步骤315可利用各种编码算法以实现值 到编码值b∈V的转换。在下文中将相对于图6、8和10更详细地描述各种实例编码方法。
在步骤320中,装置识别编码值b的在因子集合S内的l因子,使得
举例来说,给定编码值b,装置可利用试除法来识别S中的哪些因子是b的因子。在其它实施例中,例如,其中在步骤315中编码算法在S中选择因子的实施例,因子可能已经提供于步骤320中。举例来说,编码算法可向前共享选定因子以用于方法300的剩余的步骤中。替代地,在一些实施例中,编码和模幂算法可组合,使得当因子被选择用于原始值时,它们被取模幂(例如,完全通过计算或参考查找表)并且随后仅组合成乘积。
接下来,在步骤325中,装置计算签名s作为编码值的模幂。在装置获取秘密指数d的情况下,装置可将模幂完全计算为,
换句话说,所述装置可计算b的因子集合S中的每个因子的模幂并且随后计算这些所得值的乘积。替代地,在装置不具有秘密指数d的值且实际上具有S中的每个因子的模幂的预先计算的查找表的情况下,装置可实际上计算对应于编码值b的l因子的查找表项的乘积。举例来说,给定查找表L和索引函数ι(x),所述索引函数针对因子x返回在因子集合S内的因子的索引(或简单地给定l因子的索引),装置可将模幂计算为
在已经计算签名s之后,装置随后将签名s连同消息m一起发射到接收方,例如,在内容请求的情况下,发射到内容服务器。在步骤335中方法300随后前进到结束。
在接收消息和签名对之后,接收方装置可前进以验证签名。举例来说,在接收方装置是内容服务器的情况下,服务器可验证签名并且仅当签名经过验证才开始服务于内容。用于签名验证的各种其它情况和结果将是显而易见的。
图4示出用于验证数字签名的方法400的实例。方法300可对应于图1的数字签名算法162。方法400可结合方法300(或与其类似的方法)操作,并且为了实现此类互补操作,这两种方法可用关于因子集合S、编码域V、编码/解码算法对(它们自身可以是互补算法)、哈希函数或加密密钥的公共元素<e,N>的先验协定实施。
方法400在步骤405中开始并且前进到步骤410,在步骤410中,装置从发送装置接收消息和签名。举例来说,签名s可通过执行方法300或其类似方法的发送装置产生且发射到装置。接下来,在步骤415中,装置计算签名的模幂以产生编码值b。如将理解,当通过方法300计算的签名s再次用于模幂运算但是具有公共指数e而不是私有指数d时,将恢复原始的预先模幂值b(只要指数d和e是匹配的对)。在步骤415中模幂可根据任何方法计算,例如,简单明了的数学计算、签名的质数因子的模幂的计算,或甚至参考基于用于所有小于N的质数的公共指数e而用模幂预先计算的单独的查找表。
在步骤420中,装置确定恢复值b是否属于编码域V。举例来说,装置可使用试除法确定是否可以使用来自因子集合S的因子构造值b。如果恢复值b并不属于编码域V,那么方法400前进到步骤445,其中装置确定签名被确定为未验证的。否则的话,方法400前进到步骤425。
在步骤425中,装置使用解码算法对整数b进行解码以产生整数a。如同方法300的编码步骤315一样,解码步骤425可实际上利用任何方法来将编码值b∈V转换成未经编码值所述方法补充用于形成签名s的编码方法使得
解码(编码(x))=x。
在下文中将相对于图7、9和11更详细地描述解码方法的各种实例。
在步骤430中,装置计算消息m的摘要以产生值h。如同方法300的摘要步骤310一样,摘要函数可实际上是任何函数,例如预先选择且同意的哈希函数。替代地,在不计算摘要的情况下,消息m可被视为值h。在步骤435中,装置确定恢复值a是否匹配摘要值h。如果不匹配,那么方法前进到步骤445,其中装置确定签名无法验证。否则的话,方法前进到步骤440,其中装置确定签名被验证并且接受消息对为真实的(例如,响应于包含于消息中的请求而前进)。在步骤440或445中作出关于验证的确定之后,在步骤450中方法前进到结束。
图5示出用于产生待用于例如方法300等数字签名产生方法中的查找表的方法500的实例。用于产生用于例如方法400等数字签名验证方法中的查找表的各种修改将是显而易见的。方法500可对应于图1的查找表产生指令172。在各种实施例中,方法500可基于将由方法300或400使用的各种值产生查找表。举例来说,方法500可具有加密密钥<e,d,N>、因子集合S、编码域V、编码/解码方法对等。
方法500在步骤505中开始并且前进到步骤510,其中装置确定因子集合S,所述因子集合将用于数字签名方案中并且查找表基于所述因子集合。在一些实施例中,此步骤可替代地确定因子集合的子集S′,查找表基于所述子集。具体来说,在集合S内的一些因子自身是集合S中的其它因子的乘积的情况下,这些因子可从查找表中省略,因为它们可以简单地由较小因子重构。举例来说,在一些实施例中,集合S可包含非质数的因子。考虑S={2,3,4,5,7}的情况。在构造查找表时,装置可实际上利用子集S′={2,3,5,7},因为4可由2(4=22)构造,使得查找表项4潜在地冗余。在其它实施例中,装置仍可在查找表中包含此类冗余项。应了解移除此类冗余项引起查找表大小与计算效率之间的权衡。
在又一替代实施例中,查找表可基于集合S′产生,集合S′包含不是S的成员的一个或多个元素。举例来说,考虑S={22,32,24,52,72}={4,9,16,25,49}的情况。虽然查找表可以基于具有5个元素的S产生,但是查找表可替代地基于S′={2,3,5,7}通过4个元素产生。任一表可用于精确地计算模幂。在这两个实施例中,S′可被称为因子集合S的基础因子集合。
出于简洁起见,如本文参考查找表产生所使用,选择作为查找表的基础的集合将被称作S,而不管此集合是全因子集合还是其子集。用于实现基于因子的子集的查找表的计算的各种修改将是显而易见的。
在步骤515中,装置通过输入因子集合S中的每个元素来初始化新查找表。随后,在步骤520中,装置将索引初始化到0的起始值。随后,在步骤525中,装置设定当前查找表项的值。具体来说,装置使用秘密指数d和加密密钥模数N来计算S中的第i个元素的模幂。装置随后将查找表的第i项L[i]设定成等于所计算的值。随后,在步骤530中,装置使索引i递增。
在步骤535中,装置确定S中的最后一个因子是否已经得到处理,产生完整的查找表。举例来说,装置可确定i现在是否等于(或在某种程度上大于)S的长度。如果不是,那么方法500循环回到步骤525,在步骤525中可以计算下一个查找表项。否则的话,方法500前进到步骤540,其中装置将查找表L发送到一个或多个装置以用于执行模幂运算,作为例如方法300等数字签名方法的一部分。方法500随后在步骤545中前进到结束。
如上文所指出,本文中描述的模幂方案可以结合各种编码和解码方法使用。根据第一实例,给定x位整数,编码函数可计算B平滑输出(用于适当地选择的最大质数B)。根据此实例,集合S被选择为至多B个质数的有序子集:
S={si}其中si是质数,si≤B,并且只要i<j,则si<sj
第一实例编码函数可随后针对2进制表示的x位整数h定义为
因此,取决于h的位表示,第一实例编码方法计算至多B个质数的子集的乘积。解码函数的第一实例可随后被定义为
因此,第一实例解码方法确定S中的哪些因子包含于编码值中并且基于所识别的因子设定位。在一些实施例中,可以选择B的值,使得S中的因子的乘积并不超过将结合编码值的随后的模幂使用的加密模数N。
作为第一实例的替代方案,相同编码和解码方法可以用于不同因子集合。举例来说,集合S可实际上被定义为质数幂的集合:
图6示出编码方法600的此第一实例的实例实施方案。此方法可对应于图1的编码算法164并且可以在步骤315中被称作数字签名产生方法300。替代地,编码方法600可以用于在本文中描述的数字签名或模幂方法之外的各种其它情况。
方法在步骤605中开始并且前进到步骤610,在步骤610中,装置将待编码的值h转换成二进制表示。替代地,在各种实施例中,整数h可能已经以二进制形式表示并且不需要进一步转换;在此类实施例中,可以省略步骤610。
接下来,在步骤615中,装置可确定待用于编码的因子集合S。举例来说,因子集合S可通过硬编码到方法600中、从存储器检索,或从例如内容服务器等另一装置接收而预先确定。举例来说,根据例如上文所述的一个方案的质数幂方案,因子集合S可以是前x个质数的集合或前x个质数幂的集合。用作因子集合S的各种替代的集合将是显而易见的。在步骤620中,装置随后初始化编码值b和当前索引i。
在进入方法600的循环后,装置将一个项并入到工作编码值b中。如图所示,b的当前值(初始化为1)乘以一个因子,所述因子对应于升高到整数h的在对应于当前索引的位位置处的二进制数字(即,位)的幂的当前索引。换句话说,当当前位是‘1’时,对应于位位置的S中的因子并入到工作编码值中;否则的话,编码值并不基于当前位位置改变。基于整数h修改编码值的各种替代方式将是显而易见的。举例来说,通过使S的大小加倍,每个位位置可与两个可能的因子相关联:当h[i]是0时待并入的因子s2i和当h[i]是1时待并入的因子s2i+1。
在考虑当前位位置和可能地更新编码值b之后,在步骤630中装置使索引递增。接下来,在步骤635中,装置确定方法600是否已经处理整数h中的最后一个位。举例来说,装置可确定当前索引现在是否等于(或在某种程度上大于)h中的位数。如果不是,那么方法600循环回到步骤625以考虑下一个位位置。否则的话,方法600前进以在步骤640中将编码值b返回到请求方法,例如,数字签名产生方法300。方法随后在步骤645中前进到结束。
图7示出解码方法700的第一实例的实例实施方案。此方法可对应于图1的解码算法164并且可以在步骤425中被称作数字签名验证方法400。替代地,解码方法700可以用于在本文中描述的数字签名或模幂方法之外的各种其它情况。
方法700在步骤705中开始并且前进到步骤710,在步骤710中装置确定用于对待解码的值b进行编码的因子集合S。举例来说,在实施方法700以结合实例编码方法600操作的情况下,集合S可被预配置以供使用。随后,在步骤715中,装置初始化索引i和工作解码值a。接下来,在步骤720中,装置确定S的第i个元素是否是编码值b的因子,例如,通过试除法。如果不是,那么方法先前跳到步骤730。否则的话,方法前进到步骤725,其中装置将工作解码值a的位设定成对应于Si因子。举例来说,如图所示,装置简单地将2i加到工作值。
在考虑S的第i个因子之后,在步骤730中装置使ⅰ递增。随后,在步骤730中,装置确定是否已经考虑了S中的所有因子。举例来说,装置可确定ⅰ是否等于(或在某种程度上大于)S中的因子的数目。如果不是,那么方法循环回到步骤720以考虑下一个因子。否则的话,解码完成并且在步骤740中方法700将解码值a返回到请求者,例如,方法400等数字签名验证方法。方法随后在步骤745中前进到结束。
根据第二实例,待编码的整数以r进制表示呈现为
其中r进制数的数值nr可以从编码宽度n确定为
第二实例编码方法还选择足够长度的因子集合S,使得编码值的每个r进制数可分配有对于该数字位置唯一的任何r个因子。举例来说,在能够对32个十六进制数进行编码的16进制实施方案中,因子集合S被选择为具有至少512个因子(即,16个因子用于32个位中的每一个位)。给定此集合,第二实例编码方法可被定义为
因此,因子集合S包含用于每个数字位置并且用于待编码的值中的每个数字位置的因子的子集、对应于数字值的因子选自适当子集以用于包含在编码乘积中。
给定B平滑整数,
其中0<u0<...<un[r]-1<K,对应的解码函数可被定义为
换句话说,为了对a的第一r进制数字进行编码,编码方法挑选序列s0,s1,...,sr-1中的第a0个元素,随后挑选序列sr,sr+1,...,s2r-1中的第a1个元素等等。对于待编码的每个数字,第二实例使用S中的r个额外因子。对n位整数进行编码因此使用K=nrr个因子s。在v存在于编码域V中的情况下解码是可能的,
对于上文定义为质数-平方-幂的集合的因子集合S以及给定模数大小和B,最大编码宽度可通过最大n确定,使得
举例来说,对于1024位模数N,表1示出了针对各种基数r可实现的的最大宽度(限于2的幂);且随后示出了用于编码宽度n的参数的实例选择,旨在使查找表L中的项k的数目降到最小。应注意最小k可通过可以对给定宽度进行编码的最小基数获得。
图8示出编码方法800的第二实例的实例实施例。此方法可对应于图1的编码算法164并且可以在步骤315中被称作数字签名产生方法300。替代地,编码方法800可以用于在本文中描述的数字签名或模幂方法之外的各种其它情况。
方法800在步骤805中开始并且前进到步骤810,在步骤810中装置将待编码整数转换成r进制表示(其中基数r是待用于编码的预配置基数)。随后,在步骤815中,装置确定待使用的因子集合S。同样,此集合S可被预配置以用于编码。举例来说,所述基数和因子集合可从内容服务器接收并且存储以用于稍后使用。在步骤820中,所述装置随后初始化索引ⅰ和工作编码值b。
在步骤825中,所述装置将来自S的适当因子并入到工作编码值b中。举例来说,如图所示,装置首先识别适当索引为ir+hi,并且用对应于此索引的S中的元素乘以工作值。因此在这个计算出的索引(ir)中的第一项在对应于当前数字位置的S的子集的开始处设定索引,并且第二项(hi)将索引移动到对应于在该数字位置处的h的值的此子集内的位置。各种修改将是显而易见的。举例来说,在一些实施例中,可针对每个数字位置从S移除一个因子,并且数字值0可能导致没有来自对应子集的因子并入到b中,其方式类似于上文相对于方法600所说明和示出的(其中二进制0导致对应的因子没有并入到工作值中)。实现这种和其它变化的编码和解码方法的各种修改将是显而易见的。
在步骤825中的工作值b的修改之后,在步骤830中装置使索引递增。随后,在步骤835中,装置确定是否已经考虑h中的所有数字部分。举例来说,装置可确定ⅰ是否等于(或在某种程度上大于)h中的r进制数的数目。如果不是,那么方法800循环回到步骤825以考虑下一个数字位置。否则的话,方法800前进以在步骤840中将编码值b返回到请求方法,例如,数字签名产生方法300。方法随后在步骤845中前进到结束。
图9示出解码方法900的第二实例的实例实施例。此方法可对应于图1的解码算法164,并且可以在步骤425中被称作数字签名验证方法400。替代地,解码方法900可以用于在本文中描述的数字签名或模幂方法之外的各种其它情况。
方法900在步骤905中开始并且前进到步骤910,在步骤910中装置确定用于对待解码的值b进行编码的因子集合S。举例来说,在实施方法900以结合实例编码方法800操作的情况下,集合S(连同基数r一起)可被预配置以供使用。在步骤915中,装置确定作为编码值的因子的因子的集合,例如,通过试除法。在步骤920中,所述装置随后初始化索引ⅰ和工作解码值a。
在步骤925中,装置在全因子集合S内确定Su中的第i个因子的索引ui。举例来说,对于因子集合S={2,3,4,5,6,7,8,9,10}和因子子集Su={4,5,10},当ⅰ=0,ui=2时第一次执行步骤925,因为Su[0]=4且ι(4)=2(即,4是0索引集合S中的第二因子)。在确定索引之后,装置相应地修改工作值a。具体来说,如图所示,项(ui mod r)ri被加到a的当前值。
在步骤930中修改工作值之后,在步骤935中,装置使索引i递增。随后,在步骤940中,装置确定是否已经考虑了Su中的所有因子。举例来说,装置可确定i是否等于(或在某种程度上大于)Su中的因子的数目。如果不是,那么方法循环回到步骤925以考虑下一个因子。否则的话,解码完成并且在步骤945中方法900将解码值a返回到请求者,例如,方法400等数字签名验证方法。方法随后在步骤950中前进到结束。
根据第三实例,编码和解码函数仅考虑规定权重w的因子的子集。换句话说,待编码的每个可能的值h与具有大小w的唯一集合相关联。因此,此第三实例考虑来自Sk的所有可能的w子集的集合U,即,具有来自Sk的w个元素的所有集合T。解码和编码函数对应地利用排名和不排名函数。如将理解,对于质数-平方-幂集合,排名函数给定的w子集将返回该子集在集合中的排名,a=R(T)。逆函数,即不排名函数在排名a处返回w子集,T=R-1(a)。实际上任何排名和不排名函数可以结合此第三实例使用,例如在以下各项中所描述的那些函数:Arndt,用于程序员的算法-构想、算法和源代码(Algorithms for programmers-ideas,algorithms and source code),2004;R.L.Rivest、A.Shamir和L.Adleman,用于获得数字签名和公共密匙加密系统的方法(Amethod for obtaining digital signatures and public-key cryptosystems),ACM 21通讯(1978),120到126页;Gordon Royle,组合计数:理论和实践(Combinatorialenumeration:Theory and practice),2004;以及Derrick Stolee,组合和排列的排名和不排名(Ranking and unranking of combinations and permutations),可在http://computationalcombinatorics.wordpress.com/2012/09/10/ranking-and-u nranking-of-combinations-and-permutations/获得,2012年9月访问的;其全部揭示内容在此出于各种目的以引用的方式并入本文中。
根据第三实例,通过选择最大因子值B和设置参数K(当因子集合S是上文所述的质数-平方-幂因子时)和w来对系统进行初始化,使得
此约束在以下条件时满足且仅在以下条件时满足
在建立基础参数之后,编码函数可被定义为
另外,给定B平滑整数,
解码函数可以被定义为
解码(v)=R({u0,...,uw-1})。
此解码可仅在v存在于编码域V中的情况下是可能的,使得
虽然编码宽度n将至少部分取决于选定的排名和不排名函数,但是最大编码宽度可确定为
使得参数K和w满足在选择这些参数时将满足的上述约束。举例来说,对于1024位模数,表2示出了针对128或256的编码宽度w的参数K和w的实例选择,旨在使查找表L中项k的数目降到最小。对于这些宽度,大小的增益与第二实例相比大致是2的因子。
在第三实例的各种替代实施例中,所述方法可通过以下操作来改变:考虑针对满足选择约束的所有可能的对的参数(Kj,Wj)的所有可能的排名函数RK[j],w[j],并且将每个排名函数用于单独的排名区间。第一排名函数用于区间
第二函数用于区间
等等。这允许总编码宽度
针对1024位模数N,此方法可提供具有仅k-48的128位编码宽度和具有仅k=238的256位编码宽度。
图10示出编码方法1000的第三实例的实例实施例。此方法可对应于图1的编码算法164并且可以在步骤315中被称作数字签名产生方法300。替代地,编码方法1000可以用于在本文中描述的数字签名或模幂方法之外的各种其它情况。
方法1000在步骤1005中开始并且前进到步骤1010,在步骤1010中装置确定将用于对值h进行编码的因子集合T。具体来说,装置将不排名函数应用到值h,以检索集合T。在一些实施例中,例如如上文所述在多个不排名函数被视作具有参数K和w的不同组合的情况下的那些实施例中,此步骤还可包含针对所述值h选择适当的不排名函数。
在步骤1015中,所述装置随后初始化索引i和工作编码值b。在步骤1020中,装置将来自T的因子并入到工作编码值中,方法是用T的第i个元素乘以当前值b。在步骤1025中,装置随后使索引i递增。
随后,装置确定是否已经考虑T中的所有因子。举例来说,装置可确定i是否等于(或在某种程度上大于)T中的元素的数目。如果不是,那么方法1000循环回到步骤1020以并入下一个因子。否则的话,方法1000前进以在步骤1035中将编码值b返回到请求方法,例如,数字签名产生方法300。方法随后在步骤1040中前进到结束。
图11示出解码方法1100的第三实例的实例实施例。此方法可对应于图1的解码算法164并且可以在步骤425中被称作数字签名验证方法400。替代地,解码方法1100可以用于在本文中描述的数字签名或模幂方法之外的各种其它情况。
方法在步骤1105中开始并且前进到步骤1110,在步骤1110中装置确定用于对待解码的值b进行编码的因子集合S。举例来说,在实施方法1100以结合实例编码方法1000操作的情况下,集合S(连同排名函数一起)可被预配置以供使用。随后,在步骤1115中,装置从S中识别作为编码值b的因子的w个元素(即,w子集T)。举例来说,装置可使用试除法作出此确定。
在确定集合T之后,装置执行排名函数以识别集合T在集合S内的排名a。在多个排名/不排名函数对可以取决于原始值使用并且与不同参数K和w相关联的替代实施例中,此步骤可以包含选择适当的排名函数。举例来说,编码装置可将适当排名函数的识别符转发到解码装置以基于最初选择的不排名函数而使用。在一些此类实施例中,此信息也可以影响步骤1110和1115,因为不同值的K可导致使用不同集合S而不同值的w可导致识别不同长度的集合T。在其它此类实施例中,装置可基于S中的作为b的因子的因子的数目推断所述值,逐渐增大S的大小直至所有因子被定位(因此产生K和w的值)。
如上文所指出,由排名函数所返回的排名a也是解码值。因此,在应用排名函数之后,解码完成并且在步骤1125中方法1100将解码值a返回到请求者,例如,方法400等数字签名验证方法。在步骤1130中方法随后前进到结束。
根据上述内容,各种实施例实现编码和模幂运算(例如,以产生数字签名)而不获取秘密指数d。举例来说,通过提供包含待取模幂的值的因子的模幂的预先计算的查找表,白箱实施方案仍然可计算模幂而不获取秘密指数d。另外,本文中描述的各种编码和解码算法对(及其变化)提供允许例如计算较小查找表的其它改进。鉴于上述内容各种另外的益处将是显而易见的。
从上述描述中应该显而易见的是,本发明的各种实施例可以在硬件中实施。此外,各种实施例可以实施为存储在非暂时性机器可读存储媒体(例如,易失性存储器或非易失性存储器)上的指令,所述指令可以由至少一个处理器读取和执行以执行本文中详细地描述的操作。机器可读存储媒体可以包含用于以机器可读形式存储信息的任何机构,例如,个人计算机或膝上型计算机、服务器或其它计算装置。因此,非暂时性机器可读存储媒体不包括暂时信号,但是可以包含易失性存储器和非易失性存储器,包含但不限于只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快闪存储器装置和类似存储媒体。
本领域的技术人员应了解,本文中的任何框图表示体现本发明的原理的说明性电路的概念视图。类似地,应了解,任何流程图表、流程图、状态迁移图、伪码等等表示各种过程,所述过程可基本上呈现在机器可读媒体中并且因此由计算机或处理器执行,无论此类计算机或处理器是否明确地示出。
虽然已经特定参考各种实施例的某些方面详细地描述了各种实施例,但是应理解,本发明可容纳其它实施例并且其细节能够在各种显而易见的方面中进行修改。如本领域的技术人员显而易见的,可以实现变化和修改同时保持在本发明的精神和范围内。因此,上述揭示内容、描述和图式仅出于说明性目的并且并不以任何方式限制本发明,本发明仅由权利要求书限定。
Claims (21)
1.一种用于对值h进行编码的方法,其特征在于,所述方法包括:
确定待用于对所述值h进行编码的因子集合S,其中所述因子集合包含与所述值h中的相应的数字位置相关联的多个子集;
从所述因子集合S中选择多个因子,其包括:
从与数字位置相关联的所述多个子集中选择子集,以及
基于所述值h的在与选定子集相关联的所述数字位置处的数字值而从所述选定子集中选择因子;以及
计算所述多个因子的乘积以产生编码值。
2.根据权利要求1所述的方法,其特征在于,进一步包括:
将所述值h转换成r进制表示,
其中所述多个子集具有等于基数r的相应的长度,并且所述数字位置对应于所述值h的r进制数字。
3.根据权利要求1所述的方法,其特征在于,所述因子集合S包括质数幂的集合,所述质数幂的集合包含至少一个非质数。
4.根据权利要求1所述的方法,其特征在于:
所述因子集合S是有序集合,由此所述因子集合S内的所述因子对应地与索引相关联;
从与数字位置相关联的所述多个子集中选择子集包括:用对应于所述数字位置的第一索引ⅰ乘以所述值h的基数r以获得第二索引j;以及
基于所述值h的在与所述选定子集相关联的所述数字位置处的所述数字值从所述选定子集中选择因子包括:
将位于对应于所述第一索引ⅰ的所述数字位置处的所述值h的所述数字加到所述第二索引j,以及
在所述因子集合S内检索对应于所述第二索引j的因子。
5.根据权利要求1所述的方法,其特征在于,进一步包括:
计算所述值h作为待数字签名的消息m的摘要;
计算签名s作为所述编码值的模幂;以及
将所述消息m和所述签名s发射到另一装置。
6.根据权利要求1所述的方法,其特征在于,进一步包括:
执行所述编码值的模幂运算,其包括:
从先前存储的查找表中检索多个项,以及
计算所述多个项的乘积。
7.根据权利要求6所述的方法,其特征在于,进一步包括接收和存储来自网络服务器的所述查找表。
8.一种用于对值h进行编码的方法,其特征在于,所述方法包括:
确定待用于对所述值h进行编码的因子集合S和权重w;
从所述因子集合S中选择w个因子的集合T以表示所述值h;以及
计算所述集合T的乘积以产生编码值,
其中,从所述因子集合S中选择w个因子的集合T以表示所述值h包括:
将不排名函数应用到所述值h以识别在所述因子集合S内位于对应于所述值h的排名处的w子集作为选定集合T。
9.根据权利要求8所述的方法,其特征在于,应用不排名函数包括:基于所述值h从多个可能的不排名函数中选择所述不排名函数。
10.根据权利要求8所述的方法,其特征在于,所述因子集合S包括质数幂的集合。
11.根据权利要求8所述的方法,其特征在于,进一步包括:
计算所述值h作为待数字签名的消息m的摘要;
计算签名s作为所述编码值的模幂;以及
将所述消息m和所述签名s发射到另一装置。
12.根据权利要求8所述的方法,其特征在于,进一步包括:
执行所述编码值的模幂运算,其包括:
从先前存储的查找表中检索多个项;以及
计算所述多个项的乘积。
13.一种用于产生用于执行模幂运算的查找表的方法,其特征在于,所述方法包括:
确定与编码算法相关联的因子集合S;
确定用于产生查找表的所述因子集合S的基础因子集合S';
基于所述基础因子集合S'的相应的因子、秘密指数d和加密密钥模数N计算多个模幂;
在查找表中存储所述多个模幂;以及
将所述查找表发射到至少一个用户装置,
所述因子集合S包括质数幂的集合,以及
所述基础因子集合S'包括质数的集合,集合S的所述质数幂由所述质数的集合构造。
14.根据权利要求13所述的方法,其特征在于,进一步包括参与数字签名方案,包括:
从所述至少一个用户装置接收消息m和签名s;
使用公共指数e和所述加密密钥模数N来计算所述签名s的模幂以产生第一整数b;
对所述第一整数b进行解码以产生第二整数a;
计算所述消息m的摘要h;以及
通过比较所述摘要h与所述第二整数a来验证所述消息m。
15.根据权利要求14所述的方法,其特征在于,对所述第一整数b进行解码以产生第二整数包括:
识别用于对所述第一整数b进行编码的因子集合S;
从所述因子集合S中识别包含于所述第一整数b中的多个因子;
识别对应于所述多个因子中的对应因子的多个索引;
从所述多个索引得到多个项;以及
计算所述多个项的总和以产生所述第二整数a。
16.根据权利要求15所述的方法,其特征在于,从所述多个索引得到多个项包括:
识别所述多个索引的多个序列识别符,借此当对所述多个索引进行排序时,序列识别符记录所述多个索引内的对应的索引的位置;
基于所述多个索引和基数r来计算多个留数;
基于将所述基数r升高到与所述多个序列识别符相对应的幂来计算多个幂;以及
通过计算所述多个留数对应地与所述多个幂的乘积来计算所述多个项。
17.根据权利要求14所述的方法,其特征在于,对所述第一整数b进行解码以产生第二整数包括:
识别用于对所述第一整数b进行编码的因子集合S和权重w;
从所述因子集合S中识别包含于所述第一整数b中的多个因子T;
对多个因子T应用排名函数以将所述多个因子T在所述因子集合S内的排名识别为所述第二整数a。
18.一种用于产生用于执行模幂运算的查找表的装置,其特征在于,所述装置包含:网络接口;存储器;以及与网络接口和存储器通信的处理器,所述处理器被配置成:
确定与编码算法相关联的因子集合S;
确定因子集合S的基础因子集合S'以用于产生查找表;
基于基础因子集合S'的对应的因子、秘密指数d以及加密密钥模数N来计算多个模幂;将多个模幂存储在查找表中;以及
经由网络接口将查找表发射到至少一个用户装置。
19.一种用于对值h进行编码的装置,其特征在于,所述装置包含:存储器;以及与存储器通信的处理器,所述处理器被配置成:
确定将用于对值h进行编码的因子集合S,其中所述因子集合包含与值h中对应的数字位置相关联的多个子集;
从因子集合S选择多个因子,包括:
从与数字位置相关联的多个子集选择子集,以及
基于值h中在与选定子集相关联的数字位置处的数字值而从选定子集选择因子;以及
计算多个因子的乘积以产生编码值。
20.一种用于对值h进行编码的装置,其特征在于,所述装置包含:存储器;以及与存储器通信的处理器,所述处理器被配置成:
确定将用于对值h进行编码的因子集合S和权重w;
从因子集合S中选择w个因子的集合T以表示值h;以及
计算集合T的乘积以产生编码值,
其中,从所述因子集合S中选择w个因子的集合T以表示所述值h包括:
将不排名函数应用到所述值h以识别在所述因子集合S内位于对应于所述值h的排名处的w子集作为选定集合T。
21.一种安全内容提供系统,其特征在于,包括:
服务器,其包括根据权利要求18所述的装置;以及
包括以下各项中的至少一个的至少一个用户装置:
根据权利要求19所述的装置,以及
根据权利要求20所述的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/689,139 | 2015-04-17 | ||
US14/689,139 US9985784B2 (en) | 2014-12-23 | 2015-04-17 | Efficient smooth encodings for modular exponentiation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106059770A CN106059770A (zh) | 2016-10-26 |
CN106059770B true CN106059770B (zh) | 2020-11-03 |
Family
ID=57484321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610213566.1A Active CN106059770B (zh) | 2015-04-17 | 2016-04-07 | 用于模幂运算的高效平稳编码 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106059770B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106059770B (zh) * | 2015-04-17 | 2020-11-03 | 恩智浦有限公司 | 用于模幂运算的高效平稳编码 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5297206A (en) * | 1992-03-19 | 1994-03-22 | Orton Glenn A | Cryptographic method for communication and electronic signatures |
CN102957536A (zh) * | 2011-08-29 | 2013-03-06 | 陈华平 | 基于标识的证书认证体制cfl |
CN103095459A (zh) * | 2013-01-17 | 2013-05-08 | 广东数字证书认证中心有限公司 | 公钥密码体制中模幂运算方法、设备和服务器 |
CN103221917A (zh) * | 2010-09-29 | 2013-07-24 | 纳格拉影像股份有限公司 | 加密运算中模幂的保护 |
CN105721156A (zh) * | 2014-12-23 | 2016-06-29 | 恩智浦有限公司 | 用于模幂加密方案的通用编码函数 |
CN106059770A (zh) * | 2015-04-17 | 2016-10-26 | 恩智浦有限公司 | 用于模幂运算的高效平稳编码 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7185039B2 (en) * | 2003-05-19 | 2007-02-27 | Lsi Logic Corporation | Multiplier for modular exponentiation |
-
2016
- 2016-04-07 CN CN201610213566.1A patent/CN106059770B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5297206A (en) * | 1992-03-19 | 1994-03-22 | Orton Glenn A | Cryptographic method for communication and electronic signatures |
CN103221917A (zh) * | 2010-09-29 | 2013-07-24 | 纳格拉影像股份有限公司 | 加密运算中模幂的保护 |
CN102957536A (zh) * | 2011-08-29 | 2013-03-06 | 陈华平 | 基于标识的证书认证体制cfl |
CN103095459A (zh) * | 2013-01-17 | 2013-05-08 | 广东数字证书认证中心有限公司 | 公钥密码体制中模幂运算方法、设备和服务器 |
CN105721156A (zh) * | 2014-12-23 | 2016-06-29 | 恩智浦有限公司 | 用于模幂加密方案的通用编码函数 |
CN106059770A (zh) * | 2015-04-17 | 2016-10-26 | 恩智浦有限公司 | 用于模幂运算的高效平稳编码 |
Also Published As
Publication number | Publication date |
---|---|
CN106059770A (zh) | 2016-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6720424B1 (ja) | 鍵共有デバイス及び方法 | |
EP3793127B1 (en) | Terminal device performing homomorphic encryption, server device processing cipher text thereof, and methods thereof | |
US11882218B2 (en) | Matching system, method, apparatus, and program | |
CN105892991B (zh) | 使用查找表的模乘运算 | |
US9531540B2 (en) | Secure token-based signature schemes using look-up tables | |
JP2020508021A (ja) | キー交換デバイス及び方法 | |
US9906368B2 (en) | General encoding functions for modular exponentiation encryption schemes | |
US9172530B2 (en) | Apparatus and method for generating secret key for ID-based encryption system and recording medium having program recorded thereon for causing computer to execute the method | |
JP7091322B2 (ja) | 複合デジタル署名 | |
JP6974461B2 (ja) | 幾何代数を用いた高度データ中心型暗号化システムのための方法およびシステム | |
US9904516B2 (en) | Modular exponentiation using look-up tables | |
EP3020157A1 (en) | System for sharing a cryptographic key | |
WO2019110399A1 (en) | Two-party signature device and method | |
CN110719172B (zh) | 区块链系统中的签名方法、签名系统以及相关设备 | |
KR100989185B1 (ko) | Rsa기반 패스워드 인증을 통한 세션키 분배방법 | |
KR20210063378A (ko) | 공통 비밀을 공유하는 컴퓨터 구현 시스템 및 방법 | |
US9985784B2 (en) | Efficient smooth encodings for modular exponentiation | |
CN106059770B (zh) | 用于模幂运算的高效平稳编码 | |
CN107040370B (zh) | 一种用于产生实施模幂运算的代码的装置 | |
CN106059769B (zh) | 一种用于执行使用查找表的模幂运算的装置及其方法 | |
Sim et al. | A cloud authentication protocol using one-time pad | |
Kanagamani et al. | Zero knowledge based data deduplication using in-line Block Matching protocolfor secure cloud storage | |
JP5392741B2 (ja) | Rsaをベースとしたパスワード認証方式及びその応用 | |
JP2005321719A (ja) | 通信システム、復号装置、復元装置、鍵生成装置及び通信方法 | |
Vimmadisetti et al. | Data security on cloud: A survey, research issues and challenges |
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 |