用于模幂运算的高效平稳编码的制作方法

文档序号:10690823阅读:248来源:国知局
用于模幂运算的高效平稳编码的制作方法
【专利摘要】各种实施例涉及一种对数据进行编码的方法和相关装置以及非暂时性机器可读存储媒体,包含:确定待用于对值h进行编码的因子集合S,其中所述因子集合包含与所述值h中的相应的数字位置相关联的多个子集;从所述因子集合S中选择多个因子;以及计算所述多个因子的乘积以产生编码值。各种其它实施例涉及一种对数据进行编码的方法和相关装置以及非暂时性机器可读存储媒体,包含:确定待用于对所述值h进行编码的因子集合S和权重w;从所述因子集合S中选择w个因子的集合T以表示所述值h;以及计算所述集合T的乘积以产生编码值。
【专利说明】用于模幕运算的高效平稳编码
[0001] 相关申请交叉引用
[0002] 本申请案是2014年12月23日递交的第14/580,963号美国专利申请案的部分继续 申请案,所述部分继续申请案的全部掲示内容出于各种目的在此W引用的方式并入本文 中。
技术领域
[0003] 本文所掲示的各种实施例大体上设及数据编码和数字签名,并且更确切地说但非 排他地,设及用于基于RSA的数字签名方案的编码。
【背景技术】
[0004] 数字签名方案通常在对消息进行签名之前将编码过程应用于数据W确保数据符 合预先选择的字母表,所述方案应用于所述预先选择的字母表。举例来说,使用密钥3元组< N,e,d>的标准RSA算法首先将每个符号转换成0和N之间的对应值。其它编码方案可W用于 输入值的不同集合使得签名方案能够采用输入值集合中的值的各种数学特性。
[0005] 在编码之后,编码值用于形成签名W用于发射。例如RSA等一些加密算法利用模幕 函数来形成此类签名。作为一个实例,RSA使用私有密钥对沛,(1〉通过计算bd mod N处理编 码值bnRSA将随后使用公共密钥对沛,6〉通过首先计算s6 mod N验证签名值S。随后将解码 函数应用于所得值W检索原始值。

【发明内容】

[0006] 各种实施例的简要概述在下文呈现。在W下概述中可W做出一些简化和省略,所 述概述意图突出且引入各种实施例的一些方面,但不限制本发明的范围。足W允许本领域 普通技术人员产生且使用发明性概念的优选实施例的详细描述将跟随在稍后的章节中。
[0007] 本文中所描述的各种实施例设及一种用指令编码W用于执行模幕运算的非暂时 性机器可读媒体,所述非暂时性机器可读媒体包含:用于确定待取幕的值b的多个因子的指 令;用于从查找表检索与多个因子相关联的多个查找表项的指令;用于计算多个查找表项 的乘积的指令;W及用于使用加密密钥模数N来计算乘积的留数W产生取幕值S的指令。
[000引本文中所描述的各种实施例设及一种用于执行模幕运算的装置,非暂时性机器可 读媒体包含:存储器,其被配置成存储查找表;W及与存储器通信的处理器,所述处理器被 配置成:确定待取幕的值b的多个因子;从查找表检索与多个因子相关联的多个查找表项; 计算多个查找表项的乘积;W及使用加密密钥模数N来计算乘积的留数,W产生取幕值S。
[0009] 本文中所描述的各种实施例设及一种用于执行模幕运算的方法,包含:确定待取 幕的值b的多个因子;从查找表检索与多个因子相关联的多个查找表项;计算多个查找表项 的乘积;W及使用加密密钥模数N来计算乘积的留数W产生取幕值S。
[0010] 本文中描述各种实施例,其中确定待取幕的值b的多个因子包含:通过从因子集合 S识别多个因子W表示值h来对值h进行编码。
[0011] 本文中描述各种实施例,其中:确定待取幕的值b的多个因子包含:确定对应地与 因子集合S中的多个因子相关联的多个索引;W及检索与多个因子相关联的多个查找表项 包含:从查找表中对应地由多个索引指示的位置检索多个查找表项。
[0012] 各种实施例另外包含:计算将被数字签名的消息m的摘要h;对摘要h进行编码W产 生待取幕的值b;W及将消息m和取幕值S作为数字签名发射到网络装置。
[0013] 各种实施例另外包含:从网络装置接收查找表;W及存储查找表W用于随后通过 检索多个查找表项来获取。
[0014] 本文中描述各种实施例,其中多个因子是属于预先确定的因子集合S的多个质数。
[0015] 各种实施例另外包含对值h进行编码W产生待取幕的值b,包含:迭代值h的位位 置;在设定在值hi中在位置i处的位时,将与在因子的集合S内的位位置i相对应的因子Si包 含在编码值b中。
[0016] 本文中所描述的各种实施例设及一种用于产生用于执行模幕运算的查找表的方 法所述方法包含:确定与编码算法相关联的因子集合S;基于因子集合S的对应的因子、秘密 指数dW及加密密钥模数N来计算多个模幕;将多个模幕存储在查找表中;W及将查找表发 射到至少一个用户装置。
[0017] 本文中所描述的各种实施例设及一种用于产生用于执行模幕运算的查找表的装 置,所述装置包含:网络接口;存储器;W及与网络接口和存储器通信的处理器,所述处理器 被配置成:确定与编码算法相关联的因子集合S;基于因子集合S的对应的因子、秘密指数d W及加密密钥模数N来计算多个模幕;将多个模幕存储在查找表中;W及经由网络接口将查 找表发射到至少一个用户装置。
[0018] 本文中所描述的各种实施例设及一种用于产生用于执行模幕运算的查找表的方 法,所述方法包含:确定与编码算法相关联的因子集合S;基于因子集合S的对应的因子、秘 密指数dW及加密密钥模数N来计算多个模幕;将多个模幕存储在查找表中;W及将查找表 发射到至少一个用户装置。
[0019] 各种实施例另外包含产生加密密钥,所述加密密钥包含秘密指数d、公共指数eW 及加密密钥模数N。
[0020] 本文中描述各种实施例,因子集合S是有序集合,由此因子集合S的个别的因子Si 与对应的索引i相关联;将多个模幕存储在查找表中包含:将多个模幕中的某一模幕存储在 与索引i相关联的查找表中,所述索引与因子si相关联,所述模幕运算基于所述因子。
[0021] 各种实施例另外包含参与数字签名方案,包含:从至少一个用户装置接收消息m和 签名S;使用公共指数e和加密密钥模数N来计算签名S的模幕W产生第一整数b;对第一整数 b进行解码W产生第二整数a;计算消息m的摘要h;W及通过比较摘要h与第二整数a来验证 消息m。
[0022] 本文中描述各种实施例,其中参与数字签名方案包含:验证第一整数b属于编码域 V,所述编码域基于因子集合S而被确定。
[0023] 本文中所描述的各种实施例设及一种用指令编码W用于对值h进行编码的非暂时 性机器可读媒体,所述非暂时性机器可读媒体包含:
[0024] 用于确定将用于对值h进行编码的因子集合S的指令,其中所述因子集合包含与值 h中对应的数字位置相关联的多个子集;
[0025] 用于从因子集合S选择多个因子的指令,包含:
[0026] 用于从与数字位置相关联的多个子集选择子集的指令,W及
[0027] 用于基于值h中在与选定子集相关联的数字位置处的数字值而从选定子集选择因 子的指令;W及
[0028] 用于计算多个因子的乘积W产生编码值的指令。
[0029] 本文中所描述的各种实施例设及一种用于对值h进行编码的装置,包含:存储器; W及与存储器通信的处理器,所述处理器被配置成:
[0030] 确定将用于对值h进行编码的因子集合S,其中所述因子集合包含与值h中对应的 数字位置相关联的多个子集;
[0031] 从因子集合S选择多个因子,包括:
[0032] 从与数字位置相关联的多个子集选择子集,W及
[0033] 基于值h中在与选定子集相关联的数字位置处的数字值而从选定子集选择因子; W及
[0034] 计算多个因子的乘积W产生编码值。
[0035] 本文中所描述的各种实施例设及一种用于对值h进行编码的方法,所述方法包含:
[0036] 确定将用于对值h进行编码的因子集合S,其中所述因子集合包含与值h中对应的 数字位置相关联的多个子集;
[0037] 从因子集合S选择多个因子,包含:
[0038] 从与数字位置相关联的多个子集选择子集,W及
[0039] 基于值h中在与选定子集相关联的数字位置处的数字值而从选定子集选择因子; W及
[0040] 计算多个因子的乘积W产生编码值。
[0041] 各种实施例另外包含进一步包含:用于将值h转换成r进制表示,其中多个子集具 有等于基数r的对应的长度,且数字位置与值h的r进制数相对应。
[0042] 本文中描述各种实施例,其中因子集合S包含质数幕的集合,所述质数幕的集合包 含至少一个非质数。
[0043] 本文中描述各种实施例,其中:因子集合S是有序集合,由此在因子集合S内的因子 对应地与索引相关联;从与数字位置相关联的多个子集选择子集包含:将值h的基数r乘W 与数字位置相对应的第一索引i W获得第二索引j ;且基于值h中在与选定子集相关联的数 字位置处的数字值而从选定子集选择因子包含:将值h中的位于与第一索引i相对应的数字 位置处的数字与第二索引j相加,W及在因子集合S内检索与第二索引j相对应的因子。
[0044] 各种实施例另外包含:计算值hW作为将被数字签名的消息m的摘要;计算签名sW 作为编码值的模幕;W及将消息m和签名S发射到另一装置。
[0045] 各种实施例另外包含执行编码值的模幕运算,包含:从先前存储的查找表检索多 个项,W及计算所述多个项的乘积。
[0046] 各种实施例另外包含从网络服务器接收查找表和存储查找表。
[0047] 本文中所描述的各种实施例设及一种用指令编码W用于对值h进行编码的非暂时 性机器可读媒体,所述非暂时性机器可读媒体包含:用于确定将用于对值h进行编码的因子 集合S和权重W的指令;用于从因子集合S选择W因子的集合TW表示值h的指令;W及用于计 算集合τ的乘积W产生编码值的指令。
[0048] 本文中所描述的各种实施例设及一种用于对值h进行编码的装置,包含:存储器; W及与存储器通信的处理器,所述处理器被配置成:确定将用于对值h进行编码的因子集合 S和权重W;从因子集合S中选择W个因子的集合TW表示值h;W及计算集合T的乘积W产生编 码值。
[0049] 本文中所描述的各种实施例设及一种用于对值h进行编码的方法,包含:确定将用 于对值h进行编码的因子集合S和权重W;从因子集合S选择W因子的集合TW表示值h;W及计 算集合T的乘积W产生编码值。
[0050] 本文中描述各种实施例,其中从因子集合S选择W因子的集合TW表示值h包含:对 值h应用不排名函数W将在因子集合S内位于与值h相对应的排名处的W子集识别为选定集 人下 口 1 〇
[0051] 本文中描述各种实施例,其中应用不排名函数包含:基于值h从多个可能的不排名 函数选择所述不排名函数。
[0052] 本文中描述各种实施例,其中因子集合S包含质数幕的集合。
[0053] 各种实施例另外包含:计算值hW作为将被数字签名的消息m的摘要;计算签名sW 作为编码值的模幕;W及将消息m和签名S发射到另一装置。
[0054] 各种实施例另外包含执行编码值的模幕运算,包含:从先前存储的查找表检索多 个项,W及计算所述多个项的乘积。
[0055] 本文中所描述的各种实施例设及一种用由处理器执行的指令编码W用于产生用 于执行模幕运算的查找表的非暂时性机器可读媒体,所述非暂时性机器可读媒体包含:用 于确定与编码算法相关联的因子集合S的指令;用于确定因子集合S的基础因子集合少^用 于产生查找表的指令;用于基于基础因子集合少的对应的因子、秘密指数dW及加密密钥模 数N来计算多个模幕的指令;用于将多个模幕存储在查找表中的指令;W及用于将查找表发 射到至少一个用户装置的指令。
[0056] 本文中所描述的各种实施例设及一种用于产生用于执行模幕运算的查找表的装 置,所述装置包含:网络接口;存储器;W及与网络接口和存储器通信的处理器,所述处理器 被配置成:确定与编码算法相关联的因子集合S;确定因子集合S的基础因子集合少^用于 产生查找表;基于基础因子集合少的对应的因子、秘密指数dW及加密密钥模数N来计算多 个模幕;将多个模幕存储在查找表中;W及经由网络接口将查找表发射到至少一个用户装 置。
[0057] 本文中所描述的各种实施例设及一种用于产生用于执行模幕的查找表的方法,所 述方法包含:确定与编码算法相关联的因子集合S;确定因子集合S的基础因子集合少W用 于产生查找表;基于基础因子集合少的对应的因子、秘密指数dW及加密密钥模数N来计算 多个模幕;将多个模幕存储在查找表中;W及将查找表发射到至少一个用户装置。
[0058] 本文中描述各种实施例,其中:因子集合S包含质数幕的集合,且基础因子集合少 包含质数的集合,集合S的质数幕由所述质数的集合构造。
[0059] 各种实施例另外包含参与数字签名方案,包含:从至少一个用户装置接收消息m和 签名S;使用公共指数e和加密密钥模数N来计算签名S的模幕W产生第一整数b;对第一整数 b进行解码W产生第二整数a;计算消息m的摘要h;W及通过比较摘要h与第二整数a来验证 消息m。
[0060] 本文中描述各种实施例,其中对第一整数b进行解码W产生第二整数a包含:识别 用于对第一整数b进行编码的因子集合S;从因子集合S识别包含于第一整数b中的多个因 子;识别与多个因子中的对应因子相对应的多个索引;从多个索引得到多个项;W及计算多 个项的总和W产生第二整数曰。
[0061] 本文中描述各种实施例,其中从多个索引得到多个项包含:识别多个索引的多个 序列识别符,由此当对多个索引进行排序时,序列识别符记录相对应的索引在多个索引内 的位置;基于多个索引和基数r计算多个留数;基于将基数r升高到与多个序列识别符相对 应的幕来计算多个幕;W及通过计算多个留数对应地与多个幕的乘积来计算多个项。
[0062] 本文描述各种实施例,其中对第一整数b进行解码W产生第二整数a包含:识别用 于对第一整数b进行编码的因子集合S和权重W;从因子集合S识别包含于第一整数b中的多 个因子T;对多个因子T应用排名函数W将多个因子T在因子集合S内的排名识别为第二整数 过〇
[0063] 本文描述另外各种系统,其中上述方法、装置或非暂时性媒体中的一个或多个彼 此结合而操作。例如,此系统可W包含一种用于产生模幕或对值进行编码的方法、装置或非 暂时性媒体,所述方法、装置或非暂时性媒体结合用于产生查找表、验证模幕或对值进行解 码的一种方法、装置或非暂时性媒体而操作。
【附图说明】
[0064] 为了更好的理解各种实施例,参考附图,其中:
[0065] 图1示出用于实施本文中描述的编码和签名方案的硬件系统的实例;
[0066] 图2示出用于提供用户装置安全内容的系统W及处理所述安全内容的软件应用程 序的实例;
[0067] 图3示出用于对消息进行数字签名的方法的实例;
[0068] 图4示出用于验证数字签名的方法的实例;
[0069] 图5示出用于产生查找表的方法的实例;
[0070] 图6示出编码方法的第一实例;
[0071] 图7示出解码方法的第一实例;
[0072] 图8示出编码方法的第二实例;
[0073] 图9示出解码方法的第二实例;
[0074] 图10示出编码方法的第Ξ实例;W及
[0075] 图11示出解码方法的第Ξ实例。
[0076] 为了便于理解,相同参考标号用于表示具有基本上相同或类似结构或基本上相同 或类似功能的元件。
【具体实施方式】
[0077] 本文中所呈现的描述和图式示出了各种原理。应了解,本领域的技术人员将能够 设计各种布置,尽管本文中未明确地描述或示出所述布置,但所述布置体现运些原理且包 含于本发明的范围内。如本文所使用,术语"或"是指非独占的或(即,和/或),除非另外指明 (例如,"否则"或者"或在替代方案中")。另外,本文所描述的各种实施例未必是相互排斥 的,并且可W组合W产生并入本文中描述的原理的另外实施例。
[0078] 鉴于加密的不断增长的情况和应用,例如在不可信平台上的应用,最近的努力已 致力于"白箱密码术"的概念,其中加密方案被研发成安全的,甚至当加密实施方案遭遇到 攻击者时也是如此。白箱密码术设及通过工程改造 W在不可信平台上执行的加密算法的软 件实施方案的设计和分析。确切地说,运是其中特定装置的用户可W解密消息(通过秘密密 钥)的情境,所述消息通过用户的公共密钥加密,但是无法提取或得到足够的信息来恢复此 秘密密钥。此外,假定在运类实施方案中用户可W是攻击者:例如,攻击者已经完全获取了 软件实施方案,可W在任何时间暂停、更改和恢复软件实施方案的执行。
[0079] 举例来说,在数字权限管理系统中,希望向内容消费者提供容易地认证他们自身 作为被授权获取内容的一方的能力。然而,还希望防止内容消费者出于向其它方提供对仅 授权给原始内容消费者的相同内容的获取的目的与那些其它方分享凭证。
[0080] 此情境的一个白箱方法是向内容消费者提供使用私有密钥d来对消息进行数字签 名的能力,所述私有密钥被分配给内容消费者而不实际上将私有密钥d给予内容消费者。为 此,可实际上基于私有密钥d向内容消费者提供预先计算的取幕值的查找表。在各种系统 中,例如,查找表可W通过例如中屯、数字权限管理服务器提供给内容消费者,所述中屯、数字 权限管理服务器用于向服务于受保护内容的一个或多个媒体服务器认证内容消费者。内容 消费者可随后使用此查找表来计算数字签名,尽管他们并不知晓他们的私有密钥d的值。期 望的是在运些努力之后简化方案并且减少贡献于执行的资源,例如,减小查找表的大小。
[0081] 应了解,虽然本文中描述的各种实例是在数字签名方案的情形下说明的,但是本 文所描述的各种方面可适用于数据加密方案,其中数据用公共密钥加密并且使用私有密钥 检索。
[0082] 图1示出用于实施本文中描述的编码和签名方案或查找表产生方案的硬件系统 100的实例。硬件系统100可实际上对应于可W参与数字签名方案的任何装置,例如,个人计 算机、膝上型计算机、平板计算机、移动通信装置、服务器、刀片、智能卡、近场通信(NFC)装 置,或其它装置。举例来说,硬件系统可对应于用于接收和呈现数字内容的机顶盒,或对应 于用于提供数字内容的服务器。本文中描述的方法的各种应用将是显而易见的,例如,数字 权限管理(DRM)、银行应用W及例如移动电话和电视机机顶盒等装置中的一般保护加密密 钥。
[0083] 如图所示,装置100包含经由一个或多个系统总线110互连的处理器120、存储器 130、用户接口 140、网络接口 150W及存储装置160。应理解,在一些方面中,图1构成抽象图 并且装置100的组件的实际组织可能与所示的相比复杂的多。
[0084] 处理器120可W是能够执行存储在存储器130或存储装置150中的指令的任何硬件 装置。因此,处理器可W包含微处理器、现场可编程口阵列(FPGA)、专用集成电路(ASIC)或 其它类似装置。
[0085] 存储器130可W包含各种存储器,例如,L1、L2或L3高速缓冲存储器或系统存储器。 因此,存储器130可W包含静态随机存取存储器(SRAM)、动态RAM(DRAM)、快闪存储器、只读 存储器(ROM),或其它类似存储器装置。
[0086] 用户接口 140可W包含用于使得能够与例如管理员等用户通信的一个或多个装 置。举例来说,用户接口 140可W包含用于接收用户命令的显示器、鼠标和键盘。在一些实施 例中,用户接口 140可W包含可经由网络接口 150呈现给远端终端的命令行界面或图形用户 界面。
[0087] 网络接口 150可W包含用于使得能够与其它硬件装置通信的一个或多个装置。举 例来说,网络接口 150可W包含网络接口卡(NIC),所述网络接口卡被配置成根据W太网协 议通信。另外,网络接口 150可实施TCP/IP找W用于根据TCP/IP协议通信。用于网络接口 150 的各种替代的或另外的硬件或配置将是显而易见的。
[0088] 存储装置160可W包含一个或多个机器可读存储媒体,例如,只读存储器(ROM)、随 机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快闪存储器装置或类似存储媒体。在各 种实施例中,存储装置160可存储指令W用于由处理器120执行,或者可W存储数据,处理器 120可W对所述数据进行操作。
[0089] 举例来说,在硬件装置100实施用户装置的情况下,存储装置160包含数字签名算 法,所述数字签名算法用于产生用于验证硬件装置或其用户的身份标识的数字签名或用于 验证从其它装置接收的数字签名。为了支持数字签名算法162,存储装置160还包含编码或 解码算法164和模幕算法166。如将在下文中借助于各种实例更详细地理解和说明的,编码 算法164将初始值转换成属于一个集合,模幕算法166在所述集合上操作,而解码算法164将 此编码集合中的值转换回到原始集合(例如,整数的集合等)中的值。模幕算法166使用升高 到秘密指数d或公共指数e(取决于签名是对应地被计算还是被验证)的幕的编码值的加密 密钥模数N来计算相当于留数的模幕。在遵循白箱密码术方法的各种实施例中,模幕算法 166并不获取秘密指数d,并且实际上存储装置160包含查找表168,所述查找表可W由模幕 算法166使用W执行如在W下各种实例中描述的其功能。
[0090] 在硬件装置100实施内容服务器或其它服务器W用于分配查找表的情况下,存储 装置包含查找表产生指令172。运些指令172可利用加密密钥(包含秘密指数,d)和用于形成 编码域V的因子集合SW预先计算因子的模幕,使得装置不获取秘密指数d,然而运些指令可 使用预先计算的模幕来构造属于编码域V的任何编码值的模幕。在一些此类实施例中,装置 100也可W产生加密密钥或因子集合,并且因此,存储装置160可存储加密密钥产生指令174 或因子集合产生指令176。应了解,在一些实施例中,加密密钥或因子集合对于每个用户可 W是唯一的,对于所有用户可W是恒定的,或其某一组合可W是恒定的。另外,在一些实施 例中,内容服务器或其它服务器也可W参与数字签名方案(例如,验证装置的身份标识,查 找表先前发射到所述装置),并且因此还可包含数字签名算法162、编码/解码算法164和模 幕算法166。
[0091] 将显而易见的是,描述为存储在存储装置160中的各种信息可另外地或替代地存 储在存储器130中。在运方面中,存储器130也可W被视为构成"存储装置"并且存储装置160 可被视为"存储器"。各种其它布置将是显而易见的。另外,存储器130和存储装置160可都被 视作"非暂时性机器可读媒体"。如本文所使用,术语"非暂时性'将被理解为不包括暂时信 号但是包含所有形式的存储装置,包含易失性存储器和非易失性存储器运两者。
[0092] 虽然硬件装置100示出为包含每个所描述的组件中的一个组件,但是各种组件可 W在各种实施例中复制。举例来说,处理器120可W包含多个微处理器,所述微处理器被配 置成独立地执行本文中所描述的方法或被配置成执行本文中所描述的方法的步骤或子例 程,使得多个处理器协作w实现本文中描述的功能性。在其它实施例中,例如在其中装置 100在云计算环境中实施的那些实施例中,各种组件可物理地位于不同机器中。举例来说, 处理器120可W包含在第一数据中屯、服务器中的第一微处理器W及在第二数据中屯、服务器 中的第二微处理器。各种其它布置将是显而易见的。
[0093] 图2示出用于将安全内容提供给用户装置且提供处理所述安全内容的软件应用程 序的系统的实例。所述系统包含内容服务器200、应用程序服务器220、用户装置250、252和 数据网络240。用户装置250、252可请求经由数据网络240获取由内容服务器200提供的安全 内容。数据网络可W是提供用户装置250、252与内容服务器200和应用程序服务器220之间 的连接性的任何数据网络。用户装置250、252可W是多个装置中的一个装置,例如,机顶盒、 流媒体播放器、数字视频录像机、平板计算机、移动电话、膝上型计算机、便携式媒体装置、 智能手表、桌面计算机、媒体服务器等。
[0094] 针对获取的用户请求可首先需要下载可用于处理由内容服务器200提供的安全内 容的软件应用程序。软件应用程序可W从应用程序服务器220中下载。软件应用程序可W使 用上文所述的技术隐藏并且如上文所述操作。一旦用户装置250、252安装软件应用程序,用 户装置随后就可从内容服务器200下载安全内容并且使用所下载的软件应用程序获取安全 内容。举例来说,所下载的软件应用程序可执行从内容服务器接收的加密内容的解密。在其 它实施例中,软件应用程序可执行其它安全操作,例如,加密、数字签名产生和验证等。 [00M]内容服务器200可控制对提供给用户装置250、252的安全内容的获取。因此当内容 服务器200接收针对安全内容的请求时,内容服务器200可将安全内容发射到请求用户装 置。类似地,应用程序服务器220可控制对提供给用户装置250、252的软件应用程序的获取。 因此当内容服务器220接收针对软件应用程序的请求时,应用程序服务器220可将软件应用 程序发射到请求用户装置。在将软件应用程序或安全内容提供给用户装置之前,请求软件 应用程序或安全内容的用户装置也可W通过相应的服务器来认证。
[0096] 内容服务器200可W包含经由一个或多个系统总线208互连的处理器202、存储器 204、用户接口206、网络接口210和内容存储装置212。应理解,在一些方面中,图2构成抽象 图并且装置200的组件的实际组织可能与所示的相比复杂的多。
[0097] 处理器202可W是能够执行存储在存储器204或存储装置212中的指令的任何硬件 装置。因此,处理器可W包含微处理器、现场可编程口阵列(FPGA)、专用集成电路(ASIC)或 其它类似装置。
[0098] 存储器204可W包含各种存储器,例如,L1、L2或L3高速缓冲存储器或系统存储器。 因此,存储器204可W包含静态随机存取存储器(SRAM)、动态RAM(DRAM)、快闪存储器、只读 存储器(ROM),或其它类似存储器装置。
[0099] 用户接口 206可W包含用于使得能够与例如管理员等用户通信的一个或多个装 置。举例来说,用户接口 206可W包含用于接收用户命令的显示器、鼠标和键盘。
[0100] 网络接口 210可W包含用于使得能够与其它硬件装置通信的一个或多个装置。举 例来说,网络接口 210可W包含网络接口卡(NIC),所述网络接口卡被配置成根据W太网协 议通信。另外,网络接口 210可实施TCP/IP找W用于根据TCP/IP协议通信。用于网络接口 210 的各种替代的或另外的硬件或配置将是显而易见的。
[0101 ]内容存储装置212可W包含一个或多个机器可读内容存储媒体,例如只读存储器 (ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快闪存储器装置或类似存储 媒体。在各种实施例中,内容存储装置212可存储将提供给用户的内容。
[0102] 应用程序服务器220包含如同在内容服务器200中的那些的元件,并且内容服务器 200中的相同元件的描述适用于应用程序服务器220。并且,内容存储装置722被应用程序存 储装置232代替。另外,应注意内容服务器和应用程序服务器可W在单个服务器上实施。并 且,此类服务器可W在分布式计算机系统上实施W及在上云计算机系统上实施。
[0103] 如将理解,本文中描述的模幕、编码或数字签名方法可W在图2的系统或类似系统 内W各种方式部署和利用。举例来说,用户装置250、252可由制造商或其它卖方提供,所述 用户装置被预配置成将签署的消息发射到内容服务器200W请求内容的提供。替代地,用户 装置250、252可能未完全针对此类操作预配置;实际上,应用程序服务器220可与用户装置 250、252通信W实现此类配置。举例来说,应用程序服务器可发射代码指令W用于实施本文 中所描述的方法或限定一个或多个查找表的数据。
[0104] 图3示出用于对消息进行数字签名的方法300的实例。方法300可对应于图1的数字 签名算法162。举例来说,在装置请求内容传递的实施例中,装置可执行例如方法300等方法 W对请求消息进行数字签名W证明请求者的身份标识。用于执行例如方法300等数字签名 方法的各种替代情况将是显而易见的。
[0105] 方法在步骤305中开始并且前进到步骤310,在步骤310,装置计算待签名的消息m 的摘要h。举例来说,消息可W是请求将内容传递到装置的请求消息。摘要可根据例如将哈 希函数应用到整个消息(*心、υ的任何方法计算。替代地,在一些实施例中,完全的非摘要方 法可W用于数字签名,在此情况下可省略步骤310。
[0106] 接下来,在步骤315中,装置将摘要(或其它值化编码到编码域V中,在所述编码域 内W下模幕步骤被配置成操作。具体来说,根据各种实施例,编码域V是基于预先选择的因 子集合S限定或产生的。因子集合S可W例如是质数的集合、质数幕的集合、相对于彼此互质 的数目的集合或整数的任意集合。鉴于本发明因子集合S的选择之间的各种权衡将是显而 易见的。举例来说,质数的集合可提供与非互质的任意整数的集合相比对"误检"签名验证 的更大的防御,但是也可能需要较大查找表W预先计算和存储。给定此因子集合S,编码域 可被定义为可作为S中的因子的乘积构造的任何整数,
[0107]
[010引其中Ν是加密密钥的模数。举例来说,给定因子集合5={2,3,5},可^示出50£¥, 因为50 = 21巧2。另一方面,70并不落入此实例编码域V内,因为其质数因子中的一个质数因 子,7既,不是S的元素也不是S中的元素的因子。针对步骤315可利用各种编码算法W实现值 h e送到编码值bev的转换。在下文中将相对于图6、8和10更详细地描述各种实例编码方 法。
[0109] 在步骤320中,装置识别编码值b的在因子集合S内的1因子,使得
[0110]
[0111]举例来说,给定编码值b,装置可利用试除法来识别S中的哪些因子是b的因子。在 其它实施例中,例如,其中在步骤315中编码算法在S中选择因子的实施例,因子可能已经提 供于步骤320中。举例来说,编码算法可向前共享选定因子W用于方法300的剩余的步骤中。 替代地,在一些实施例中,编码和模幕算法可组合,使得当因子被选择用于原始值时,它们 被取模幕(例如,完全通过计算或参考查找表)并且随后仅组合成乘积。
[0112]接下来,在步骤325中,装置计算签名S作为编码值的模幕。在装置获取秘密指数d 的情况下,装置可将模幕完全计算为,
[0113:
[0114] 换句话说,所述装置可计算b的因子集合S中的每个因子的模幕并且随后计算运些 所得值的乘积。替代地,在装置不具有秘密指数d的值且实际上具有S中的每个因子的模幕 的预先计算的查找表的情况下,装置可实际上计算对应于编码值b的1因子的查找表项的乘 积。举例来说,给定查找表L和索引函数t(x),所述索引函数针对因子X返回在因子集合S内 的因子的索引(或简单地给定1因子的索引),装置可将模幕计算为
[0115]
[0116] 在已经计算签名S之后,装置随后将签名S连同消息m-起发射到接收方,例如,在 内容请求的情况下,发射到内容服务器。在步骤335中方法300随后前进到结束。
[0117] 在接收消息和签名对之后,接收方装置可前进W验证签名。举例来说,在接收方装 置是内容服务器的情况下,服务器可验证签名并且仅当签名经过验证才开始服务于内容。 用于签名验证的各种其它情况和结果将是显而易见的。
[0118] 图4示出用于验证数字签名的方法400的实例。方法300可对应于图1的数字签名算 法162。方法400可结合方法300(或与其类似的方法)操作,并且为了实现此类互补操作,运 两种方法可用关于因子集合S、编码域V、编码/解码算法对(它们自身可W是互补算法)、哈 希函数或加密密钥的公共元素<e,N〉的先验协定实施。
[0119] 方法400在步骤405中开始并且前进到步骤410,在步骤410中,装置从发送装置接 收消息和签名。举例来说,签名S可通过执行方法300或其类似方法的发送装置产生且发射 到装置。接下来,在步骤415中,装置计算签名的模幕W产生编码值b。如将理解,当通过方法 300计算的签名S再次用于模幕运算但是具有公共指数e而不是私有指数加寸,将恢复原始的 预先模幕值b(只要指数d和e是匹配的对)。在步骤415中模幕可根据任何方法计算,例如,简 单明了的数学计算、签名的质数因子的模幕的计算,或甚至参考基于用于所有小于N的质数 的公共指数e而用模幕预先计算的单独的查找表。
[0120] 在步骤420中,装置确定恢复值b是否属于编码域V。举例来说,装置可使用试除法 确定是否可W使用来自因子集合S的因子构造值b。如果恢复值b并不属于编码域V,那么方 法400前进到步骤445,其中装置确定签名被确定为未验证的。否则的话,方法400前进到步 骤425。
[0121] 在步骤425中,装置使用解码算法对整数b进行解码W产生整数a。如同方法300的 编码步骤315-样,解码步骤425可实际上利用任何方法来将编码值bev转换成未经编码值 a S,所述方法补充用于形成签名S的编码方法使得
[0122]解码(编码(X))=X。
[0123] 在下文中将相对于图7、9和11更详细地描述解码方法的各种实例。
[0124] 在步骤430中,装置计算消息m的摘要W产生值h。如同方法300的摘要步骤310 - 样,摘要函数可实际上是任何函数,例如预先选择且同意的哈希函数。替代地,在不计算摘 要的情况下,消息m可被视为值h。在步骤435中,装置确定恢复值a是否匹配摘要值h。如果不 匹配,那么方法前进到步骤445,其中装置确定签名无法验证。否则的话,方法前进到步骤 440,其中装置确定签名被验证并且接受消息对为真实的(例如,响应于包含于消息中的请 求而前进)。在步骤440或445中作出关于验证的确定之后,在步骤450中方法前进到结束。
[0125] 图5示出用于产生待用于例如方法300等数字签名产生方法中的查找表的方法500 的实例。用于产生用于例如方法400等数字签名验证方法中的查找表的各种修改将是显而 易见的。方法500可对应于图1的查找表产生指令172。在各种实施例中,方法500可基于将由 方法300或400使用的各种值产生查找表。举例来说,方法500可具有加密密钥<6,(1,龄、因子 集合S、编码域V、编码/解码方法对等。
[01%]方法500在步骤505中开始并且前进到步骤510,其中装置确定因子集合S,所述因 子集合将用于数字签名方案中并且查找表基于所述因子集合。在一些实施例中,此步骤可 替代地确定因子集合的子集少,查找表基于所述子集。具体来说,在集合S内的一些因子自 身是集合S中的其它因子的乘积的情况下,运些因子可从查找表中省略,因为它们可W简单 地由较小因子重构。举例来说,在一些实施例中,集合S可包含非质数的因子。考虑S={2,3, 4,5,7}的情况。在构造查找表时,装置可实际上利用子集少二{2,3,5,7},因为4可由2(4 = 22)构造,使得查找表项4潜在地冗余。在其它实施例中,装置仍可在查找表中包含此类冗余 项。应了解移除此类冗余项引起查找表大小与计算效率之间的权衡。
[0127] 在又一替代实施例中,查找表可基于集合少产生,集合少包含不是S的成员的一个 或多个元素。举例来说,考虑5={22,32,24,52,7 2} = {4,9,16,25,49}的情况。虽然查找表可 W基于具有5个元素的S产生,但是查找表可替代地基于少={2,3,5,7}通过4个元素产生。 任一表可用于精确地计算模幕。在运两个实施例中,少可被称为因子集合S的基础因子集 厶 1=1 〇
[0128] 出于简洁起见,如本文参考查找表产生所使用,选择作为查找表的基础的集合将 被称作S,而不管此集合是全因子集合还是其子集。用于实现基于因子的子集的查找表的计 算的各种修改将是显而易见的。
[0129] 在步骤515中,装置通过输入因子集合S中的每个元素来初始化新查找表。随后,在 步骤520中,装置将索引初始化到0的起始值。随后,在步骤525中,装置设定当前查找表项的 值。具体来说,装置使用秘密指数d和加密密钥模数N来计算S中的第i个元素的模幕。装置随 后将查找表的第i项L[i]设定成等于所计算的值。随后,在步骤530中,装置使索引i递增。
[0130] 在步骤535中,装置确定S中的最后一个因子是否已经得到处理,产生完整的查找 表。举例来说,装置可确定i现在是否等于(或在某种程度上大于)S的长度。如果不是,那么 方法500循环回到步骤525,在步骤525中可W计算下一个查找表项。否则的话,方法500前进 到步骤540,其中装置将查找表L发送到一个或多个装置W用于执行模幕运算,作为例如方 法300等数字签名方法的一部分。方法500随后在步骤545中前进到结束。
[0131] 如上文所指出,本文中描述的模幕方案可W结合各种编码和解码方法使用。根据 第一实例,给定X位整数,编码函数可计算B平滑输出(用于适当地选择的最大质数B)。根据 此实例,集合S被选择为至多B个质数的有序子集:
[01创 S={Si}其中Si是质数,Si《B,并且只要1化则Si<Sj
[0133] 第一实例编码函数可随后针对2进制表示的X位整数h定义为
[0134]
[0135] 因此,取决于h的位表示,第一实例编码方法计算至多B个质数的子集的乘积。解码 函数的第一实例可随后被定义为
[0136]
[0137] 因此,第一实例解码方法确定S中的哪些因子包含于编码值中并且基于所识别的 因子设定位。在一些实施例中,可W选择B的值,使得S中的因子的乘积并不超过将结合编码 值的随后的模幕使用的加密模数N。
[0138] 作为第一实例的替代方案,相同编码和解码方法可W用于不同因子集合。举例来 说,集合S可实际上被定义为质数幕的集合:
[0139]
[0140] 集合S可随后受限于由S的前K《|S|个元素 Si组成的子集SkcS,其中SQ<si<...< SK-1。此特定集合将在下文中被称为"质数平方幕"因子集合。
[0141] 图6示出编码方法600的此第一实例的实例实施方案。此方法可对应于图1的编码 算法164并且可W在步骤315中被称作数字签名产生方法300。替代地,编码方法600可W用 于在本文中描述的数字签名或模幕方法之外的各种其它情况。
[0142] 方法在步骤605中开始并且前进到步骤610,在步骤610中,装置将待编码的值h转 换成二进制表示。替代地,在各种实施例中,整数h可能已经W二进制形式表示并且不需要 进一步转换;在此类实施例中,可W省略步骤610。
[0143] 接下来,在步骤615中,装置可确定待用于编码的因子集合S。举例来说,因子集合S 可通过硬编码到方法600中、从存储器检索,或从例如内容服务器等另一装置接收而预先确 定。举例来说,根据例如上文所述的一个方案的质数幕方案,因子集合S可W是前X个质数的 集合或前X个质数幕的集合。用作因子集合S的各种替代的集合将是显而易见的。在步骤620 中,装置随后初始化编码值b和当前索引i。
[0144] 在进入方法600的循环后,装置将一个项并入到工作编码值b中。如图所示,b的当 前值(初始化为1)乘W-个因子,所述因子对应于升高到整数h的在对应于当前索引的位位 置处的二进制数字(即,位)的幕的当前索引。换句话说,当当前位是'1'时,对应于位位置的 S中的因子并入到工作编码值中;否则的话,编码值并不基于当前位位置改变。基于整数h修 改编码值的各种替代方式将是显而易见的。举例来说,通过使S的大小加倍,每个位位置可 与两个可能的因子相关联:当h[i]是0时待并入的因子S21和当h[i]是1时待并入的因子 S2i+l〇
[0145] 在考虑当前位位置和可能地更新编码值b之后,在步骤630中装置使索引递增。接 下来,在步骤635中,装置确定方法600是否已经处理整数h中的最后一个位。举例来说,装置 可确定当前索引现在是否等于(或在某种程度上大于化中的位数。如果不是,那么方法600 循环回到步骤625W考虑下一个位位置。否则的话,方法600前进W在步骤640中将编码值b 返回到请求方法,例如,数字签名产生方法300。方法随后在步骤645中前进到结束。
[0146] 图7示出解码方法700的第一实例的实例实施方案。此方法可对应于图1的解码算 法164并且可W在步骤425中被称作数字签名验证方法400。替代地,解码方法700可W用于 在本文中描述的数字签名或模幕方法之外的各种其它情况。
[0147] 方法700在步骤705中开始并且前进到步骤710,在步骤710中装置确定用于对待解 码的值b进行编码的因子集合S。举例来说,在实施方法700W结合实例编码方法600操作的 情况下,集合S可被预配置W供使用。随后,在步骤715中,装置初始化索引i和工作解码值a。 接下来,在步骤720中,装置确定S的第i个元素是否是编码值b的因子,例如,通过试除法。如 果不是,那么方法先前跳到步骤730。否则的话,方法前进到步骤725,其中装置将工作解码 值a的位设定成对应于S捆子。举例来说,如图所示,装置简单地将21加到工作值。
[0148] 在考虑S的第i个因子之后,在步骤730中装置使i递增。随后,在步骤730中,装置确 定是否已经考虑了 S中的所有因子。举例来说,装置可确定i是否等于(或在某种程度上大 于)S中的因子的数目。如果不是,那么方法循环回到步骤720W考虑下一个因子。否则的话, 解码完成并且在步骤740中方法700将解码值a返回到请求者,例如,方法400等数字签名验 证方法。方法随后在步骤745中前进到结束。
[0149] 根据第二实例,待编码的整数Wr进制表示呈现为
[0150]
[0151] 其中r进制数的数值nr可W从编码宽度η确定为
[0152]
[0153] 第二实例编码方法还选择足够长度的因子集合S,使得编码值的每个r进制数可分 配有对于该数字位置唯一的任何r个因子。举例来说,在能够对32个十六进制数进行编码的 16进制实施方案中,因子集合S被选择为具有至少512个因子(即,16个因子用于32个位中的 每一个位)。给定此集合,第二实例编码方法可被定义为
[0154]
[0155] 因此,因子集合S包含用于每个数字位置并且用于待编码的值中的每个数字位置 的因子的子集、对应于数字值的因子选自适当子集W用于包含在编码乘积中。
[0156] 给定B平滑整数,
[0157]
[0158] 其中0<U〇<. . .<Un[r]-l<K,对应的解码函数可被定义为
[0159]
[0160] 换句话说,为了对a的第一r进制数字进行编码,编码方法挑选序列so,si,. . .,sr-i 中的第ao个元素,随后挑选序列Sr,Sr+l,. . .,S2r-冲的第ai个元素等等。对于待编码的每个 数字,第二实例使用S中的r个额外因子。对η位整数进行编码因此使用K = nrr个因子S。在V 存在于编码域V中的情况下解码是可能的,
[0161]
[0162] 对于上文定义为质数-平方-幕的集合的因子集合SW及给定模数大小和B,最大编 码宽度可通过最大η确定,使得
[0163]
[0164] 举例来说,对于1024位模数Ν,表1示出了针对各种基数r可实现的的最大宽度(限 于2的幕);且随后示出了用于编码宽度η的参数的实例选择,旨在使查找表L中的项k的数目 降到最小。应注意最小k可通过可W对给定宽度进行编码的最小基数获得。 「01 化 1
[0166] 图8示出编码方法800的第二实例的实例实施例。此方法可对应于图1的编码算法 164并且可W在步骤315中被称作数字签名产生方法300。替代地,编码方法800可W用于在 本文中描述的数字签名或模幕方法之外的各种其它情况。
[0167] 方法800在步骤805中开始并且前进到步骤810,在步骤810中装置将待编码整数转 换成r进制表示(其中基数r是待用于编码的预配置基数)。随后,在步骤815中,装置确定待 使用的因子集合S。同样,此集合S可被预配置W用于编码。举例来说,所述基数和因子集合 可从内容服务器接收并且存储W用于稍后使用。在步骤820中,所述装置随后初始化索引i 和工作编码值b。
[0168] 在步骤825中,所述装置将来自S的适当因子并入到工作编码值b中。举例来说,如 图所示,装置首先识别适当索引为ir+hi,并且用对应于此索引的S中的元素乘W工作值。因 此在运个计算出的索引(ir)中的第一项在对应于当前数字位置的S的子集的开始处设定索 引,并且第二项化1)将索引移动到对应于在该数字位置处的h的值的此子集内的位置。各种 修改将是显而易见的。举例来说,在一些实施例中,可针对每个数字位置从S移除一个因子, 并且数字值ο可能导致没有来自对应子集的因子并入到b中,其方式类似于上文相对于方法 600所说明和示出的(其中二进制0导致对应的因子没有并入到工作值中)。实现运种和其它 变化的编码和解码方法的各种修改将是显而易见的。
[0169] 在步骤825中的工作值b的修改之后,在步骤830中装置使索引递增。随后,在步骤 835中,装置确定是否已经考虑h中的所有数字部分。举例来说,装置可确定i是否等于(或在 某种程度上大于化中的r进制数的数目。如果不是,那么方法800循环回到步骤825W考虑下 一个数字位置。否则的话,方法800前进W在步骤840中将编码值b返回到请求方法,例如,数 字签名产生方法300。方法随后在步骤845中前进到结束。
[0170] 图9示出解码方法900的第二实例的实例实施例。此方法可对应于图1的解码算法 164,并且可W在步骤425中被称作数字签名验证方法400。替代地,解码方法900可W用于在 本文中描述的数字签名或模幕方法之外的各种其它情况。
[0171] 方法900在步骤905中开始并且前进到步骤910,在步骤910中装置确定用于对待解 码的值b进行编码的因子集合S。举例来说,在实施方法900W结合实例编码方法800操作的 情况下,集合S(连同基数r一起)可被预配置W供使用。在步骤915中,装置确定作为编码值 的因子的因子SuC=S的集合,例如,通过试除法。在步骤920中,所述装置随后初始化索引i 和工作解码值a。
[0172] 在步骤925中,装置在全因子集合S内确定Su中的第i个因子的索引m。举例来说,对 于因子集合5={2,3,4,5,6,7,8,9,10巧0因子子集5。={4,5,10},当1=0,1^ = 2时第一次执 行步骤925,因为Su[0] = 4且1(4)=2(即,4是0索引集合S中的第二因子)。在确定索引之后, 装置相应地修改工作值曰。具体来说,如图所示,项(m mod r)ri被加到a的当前值。
[0173] 在步骤930中修改工作值之后,在步骤935中,装置使索引i递增。随后,在步骤940 中,装置确定是否已经考虑了Su中的所有因子。举例来说,装置可确定i是否等于(或在某种 程度上大于)Su中的因子的数目。如果不是,那么方法循环回到步骤925W考虑下一个因子。 否则的话,解码完成并且在步骤945中方法900将解码值a返回到请求者,例如,方法400等数 字签名验证方法。方法随后在步骤950中前进到结束。
[0174] 根据第Ξ实例,编码和解码函数仅考虑规定权重W的因子的子集。换句话说,待编 码的每个可能的值h与具有大小W的唯一集合T C S相关联。因此,此第Ξ实例考虑来自Sk 的所有可能的W子集的集合U,即,具有来自Sk的W个元素的所有集合T。解码和编码函数对应 地利用排名和不排名函数。如将理解,对于质数-平方-幕集合,排名函数取:U 一忍皆茂给定 的W子集将返回该子集在集合中的排名,a = R(T)。逆函数,即不排名函数及'1:置/2?一□, 在排名a处返回W子集,T = ri(a)。实际上任何排名和不排名函数可W结合此第Ξ实例使用, 例如在W下各项中所描述的那些函数巧Arndt,用于程序员的算法-构想、算法和源代码 (Algorithms for programmers-ideas , algorithms and source code)? 2004; 民.1.1^乂63古、六.5}131111巧化.六(116111311,用于获得数字签名和公共密匙加密系统的方法(八 method for obtaining digital signatures and public-key cryptosystems),ACM 21 通讯(1978),120 到 126 页;Gordon Royle,组合计数:理论和实践(Combinatorial enumerationjheoi'y and practice) ,2004; 1^及〇61'1';!_〇1^ Stolee,组合和排列的排名和不 封^名(民anking and unranking of combinations and permutations),可在http :// comput曰tion曰Icombin曰torics.wordpress.com/2012/09/lO/r曰nking-曰nd-u nranking- of-combinat ions-and-permutat ions/获得,2012年9月访问的;其全部掲示内容在此出于 各种目的W引用的方式并入本文中。
[0175]根据第Ξ实例,通过选择最大因子值B和设置参数K(当因子集合S是上文所述的质 数-平方-幕因子时)和W来对系统进行初始化,使得
[0183] 解码函数可W被定义为
[0184] 解码(V) =R( {uo, . . .,Uw-i})。
[0185] 此解码可仅在V存在于编码域V中的情况下是可能的,使得
[0186]
[0187]虽然编码宽度η将至少部分取决于选定的排名和不排名函数,但是最大编码宽度 可确定为
[018 引
[0189] 使得参数Κ和W满足在选择运些参数时将满足的上述约束。举例来说,对于1024位 模数,表2示出了针对128或256的编码宽度W的参数Κ和W的实例选择,旨在使查找表L中项k 的数目降到最小。对于运些宽度,大小的增益与第二实例相比大致是2的因子。
[0190]
[0191] 在第Ξ实例的各种替代实施例中,所述方法可通过W下操作来改变:考虑针对满 足选择约束的所有可能的对的参数化j,Wj)的所有可能的排名函数化U],w山,并且将每个排 名函数用于单独的排名区间。第一排名函数用于区间
[0197] 针对1024位模数N,此方法可提供具有仅k-48的128位编码宽度和具有仅k = 238的 256位编码宽度。
[0198] 图10示出编码方法1000的第Ξ实例的实例实施例。此方法可对应于图1的编码算 法164并且可W在步骤315中被称作数字签名产生方法300。替代地,编码方法1000可W用于 在本文中描述的数字签名或模幕方法之外的各种其它情况。
[0199] 方法1000在步骤1005中开始并且前进到步骤1010,在步骤1010中装置确定将用于 对值h进行编码的因子集合T。具体来说,装置将不排名函数应用到值h,W检索集合T。在一 些实施例中,例如如上文所述在多个不排名函数被视作具有参数K和W的不同组合的情况下 的那些实施例中,此步骤还可包含针对所述值h选择适当的不排名函数。
[0200] 在步骤1015中,所述装置随后初始化索引i和工作编码值b。在步骤1020中,装置将 来自T的因子并入到工作编码值中,方法是用T的第i个元素乘W当前值b。在步骤1025中,装 置随后使索引i递增。
[0201] 随后,装置确定是否已经考虑T中的所有因子。举例来说,装置可确定i是否等于 (或在某种程度上大于)T中的元素的数目。如果不是,那么方法1000循环回到步骤1020W并 入下一个因子。否则的话,方法1000前进W在步骤1035中将编码值b返回到请求方法,例如, 数字签名产生方法300。方法随后在步骤1040中前进到结束。
[0202] 图11示出解码方法1100的第Ξ实例的实例实施例。此方法可对应于图1的解码算 法164并且可W在步骤425中被称作数字签名验证方法400。替代地,解码方法1100可W用于 在本文中描述的数字签名或模幕方法之外的各种其它情况。
[0203] 方法在步骤1105中开始并且前进到步骤1110,在步骤1110中装置确定用于对待解 码的值b进行编码的因子集合S。举例来说,在实施方法1100W结合实例编码方法1000操作 的情况下,集合S(连同排名函数一起)可被预配置W供使用。随后,在步骤1115中,装置从S 中识别作为编码值b的因子的W个元素(即,W子集T)。举例来说,装置可使用试除法作出此确 定。
[0204] 在确定集合T之后,装置执行排名函数W识别集合T在集合S内的排名a。在多个排 名/不排名函数对可W取决于原始值使用并且与不同参数K和W相关联的替代实施例中,此 步骤可W包含选择适当的排名函数。举例来说,编码装置可将适当排名函数的识别符转发 到解码装置W基于最初选择的不排名函数而使用。在一些此类实施例中,此信息也可W影 响步骤1110和1115,因为不同值的K可导致使用不同集合S而不同值的W可导致识别不同长 度的集合T。在其它此类实施例中,装置可基于S中的作为b的因子的因子的数目推断所述 值,逐渐增大S的大小直至所有因子被定位(因此产生Κ和w的值)。
[0205] 如上文所指出,由排名函数所返回的排名a也是解码值。因此,在应用排名函数之 后,解码完成并且在步骤1125中方法1100将解码值a返回到请求者,例如,方法400等数字签 名验证方法。在步骤1130中方法随后前进到结束。
[0206] 根据上述内容,各种实施例实现编码和模幕运算(例如,W产生数字签名)而不获 取秘密指数d。举例来说,通过提供包含待取模幕的值的因子的模幕的预先计算的查找表, 白箱实施方案仍然可计算模幕而不获取秘密指数d。另外,本文中描述的各种编码和解码算 法对(及其变化)提供允许例如计算较小查找表的其它改进。鉴于上述内容各种另外的益处 将是显而易见的。
[0207] 从上述描述中应该显而易见的是,本发明的各种实施例可W在硬件中实施。此外, 各种实施例可W实施为存储在非暂时性机器可读存储媒体(例如,易失性存储器或非易失 性存储器)上的指令,所述指令可W由至少一个处理器读取和执行W执行本文中详细地描 述的操作。机器可读存储媒体可W包含用于W机器可读形式存储信息的任何机构,例如,个 人计算机或膝上型计算机、服务器或其它计算装置。因此,非暂时性机器可读存储媒体不包 括暂时信号,但是可W包含易失性存储器和非易失性存储器,包含但不限于只读存储器 (ROM)、随机存取存储器(RAM)、磁盘存储媒体、光学存储媒体、快闪存储器装置和类似存储 媒体。
[0208] 本领域的技术人员应了解,本文中的任何框图表示体现本发明的原理的说明性电 路的概念视图。类似地,应了解,任何流程图表、流程图、状态迁移图、伪码等等表示各种过 程,所述过程可基本上呈现在机器可读媒体中并且因此由计算机或处理器执行,无论此类 计算机或处理器是否明确地示出。
[0209] 虽然已经特定参考各种实施例的某些方面详细地描述了各种实施例,但是应理 解,本发明可容纳其它实施例并且其细节能够在各种显而易见的方面中进行修改。如本领 域的技术人员显而易见的,可W实现变化和修改同时保持在本发明的精神和范围内。因此, 上述掲示内容、描述和图式仅出于说明性目的并且并不W任何方式限制本发明,本发明仅 由权利要求书限定。
【主权项】
1. 一种用于对值h进行编码的方法,其特征在于,所述方法包括: 确定待用于对所述值h进行编码的因子集合S,其中所述因子集合包含与所述值h中的 相应的数字位置相关联的多个子集; 从所述因子集合S中选择多个因子,其包括: 从与数字位置相关联的所述多个子集中选择子集,以及 基于所述值h的在与所述选定子集相关联的所述数字位置处的数字值而从所述选定子 集中选择因子;以及 计算所述多个因子的乘积以产生编码值。2. 根据权利要求1所述的方法,其特征在于,进一步包括: 将所述值h转换成r进制表示, 其中所述多个子集具有等于所述基数r的相应的长度,并且所述数字位置对应于所述 值h的r进制数字。3. 根据权利要求1所述的方法,其特征在于,所述因子集合S包括质数幂的集合,所述质 数幂的集合包含至少一个非质数。4. 根据权利要求1所述的方法,其特征在于: 所述因子集合S是有序集合,由此所述因子集合S内的所述因子对应地与索引相关联; 从与数字位置相关联的所述多个子集中选择子集包括:用对应于所述数字位置的第一 索引i乘以所述值h的基数r以获得第二索引j;以及 基于所述值h的在与所述选定子集相关联的所述数字位置处的所述数字值从所述选定 子集中选择因子包括: 将位于对应于所述第一索引i的所述数字位置处的所述值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的乘积以产生编码值。9. 根据权利要求8所述的方法,其特征在于,从所述因子集合S中选择w个因子的集合T 以表示所述值h包括: 将不排名函数应用到所述值h以识别在所述因子集合S内位于对应于所述值h的排名处 的所述w子集作为所述选定集合T。10. 根据权利要求9所述的方法,其特征在于,应用不排名函数包括:基于所述值h从多 个可能的不排名函数中选择所述不排名函数。11. 根据权利要求8所述的方法,其特征在于,所述因子集合S包括质数幂的集合。12. 根据权利要求8所述的方法,其特征在于,进一步包括: 计算所述值h作为待数字签名的消息m的摘要; 计算签名s作为所述编码值的模幂;以及 将所述消息m和所述签名s发射到另一装置。13. 根据权利要求8所述的方法,其特征在于,进一步包括: 执行所述编码值的模幂运算,其包括: 从先前存储的查找表中检索多个项;以及 计算所述多个项的乘积。14. 一种用于产生用于执行模幂运算的查找表的方法,其特征在于,所述方法包括: 确定与编码算法相关联的因子集合S; 确定用于产生查找表的所述因子集合S的基础因子集合f ; 基于所述基础因子集合f的相应的因子、秘密指数d和加密密钥模数N计算多个模幂; 在查找表中存储所述多个模幂;以及 将所述查找表发射到至少一个用户装置。15. 根据权利要求14所述的方法,其特征在于: 所述因子集合S包括质数幂的集合,以及 所述基础因子集合S'包括质数的集合,集合S的所述质数幂由所述质数的集合构造。16. 根据权利要求14所述的方法,其特征在于,进一步包括参与数字签名方案,包括: 从所述至少一个用户装置接收消息m和签名s; 使用公共指数e和所述加密密钥模数N来计算所述签名s的模幂以产生第一整数b; 对所述第一整数b进行解码以产生第二整数a; 计算所述消息m的摘要h;以及 通过比较所述摘要h与所述第二整数a来验证所述消息m。17. 根据权利要求16所述的方法,其特征在于,对所述第一整数b进行解码以产生第二 整数包括: 识别用于对所述第一整数b进行编码的因子集合S; 从所述因子集合S中识别包含于所述第一整数b中的多个因子; 识别对应于所述多个因子中的对应因子的多个索引; 从所述多个索引得到多个项;以及 计算所述多个项的总和以产生所述第二整数a。18. 根据权利要求17所述的方法,其特征在于,从所述多个索引得到多个项包括: 识别所述多个索引的多个序列识别符,借此当对所述多个索引进行排序时,序列识别 符记录所述多个索引内的对应的索引的位置; 基于所述多个索引和基数r来计算多个留数; 基于将所述基数r升高到与所述多个序列识别符相对应的幂来计算多个幂;以及 通过计算所述多个留数对应地与所述多个幂的乘积来计算所述多个项。19. 根据权利要求16所述的方法,其特征在于,对所述第一整数b进行解码以产生第二 整数包括: 识别用于对所述第一整数b进行编码的因子集合S和权重w; 从所述因子集合S中识别包含于所述第一整数b中的多个因子T; 对多个因子T应用排名函数以将所述多个因子T在所述因子集合S内的排名识别为所述 第二整数a。20. -种用于产生用于执行模幂运算的查找表的装置,其特征在于,所述装置包含:网 络接口;存储器;以及与网络接口和存储器通信的处理器,所述处理器被配置成: 确定与编码算法相关联的因子集合S; 确定因子集合S的基础因子集合f以用于产生查找表; 基于基础因子集合S'的对应的因子、秘密指数d以及加密密钥模数N来计算多个模幂; 将多个模幂存储在查找表中;以及 经由网络接口将查找表发射到至少一个用户装置。21. -种用于对值h进行编码的装置,其特征在于,所述装置包含:存储器;以及与存储 器通信的处理器,所述处理器被配置成: 确定将用于对值h进行编码的因子集合S,其中所述因子集合包含与值h中对应的数字 位置相关联的多个子集; 从因子集合S选择多个因子,包括: 从与数字位置相关联的多个子集选择子集,以及 基于值h中在与选定子集相关联的数字位置处的数字值而从选定子集选择因子;以及 计算多个因子的乘积以产生编码值。22. -种用于对值h进行编码的装置,其特征在于,所述装置包含:存储器;以及与存储 器通信的处理器,所述处理器被配置成: 确定将用于对值h进行编码的因子集合S和权重w; 从因子集合S中选择w个因子的集合T以表示值h;以及 计算集合T的乘积以产生编码值。23. -种系统,其特征在于,包括: 服务器,其包括根据权利要求20所述的装置;以及 包括以下各项中的至少一个的至少一个用户装置: 根据权利要求21所述的装置,以及 根据权利要求22所述的装置。
【文档编号】H04L9/32GK106059770SQ201610213566
【公开日】2016年10月26日
【申请日】2016年4月7日 公开号201610213566.1, CN 106059770 A, CN 106059770A, CN 201610213566, CN-A-106059770, CN106059770 A, CN106059770A, CN201610213566, CN201610213566.1
【发明人】麦克尔·麦克·派德里克·皮德斯, 乔普·威廉·波斯
【申请人】恩智浦有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1