具有旁道攻击对策的模幂运算的制作方法

文档序号:16995076发布日期:2019-03-02 01:17阅读:206来源:国知局
具有旁道攻击对策的模幂运算的制作方法

本申请案主张2016年7月22日在美国专利商标局建议申请的第15/217,760号美国非临时专利申请案的优先权和权益,所述非临时专利申请案的整个内容以引用的方式并入本文中。

一或多个特征涉及机密性保护、认证、加密密钥产生,且更具体地说,涉及针对试图曝露加密密钥的旁道攻击或可用于曝露加密密钥的信息的对策。



背景技术:

公用密钥密码学,或非对称密码术,是一种加密系统,其使用两个类别的密钥:可能广泛地分发的公共密钥,而私用密钥仅对拥有者已知。在公用密钥加密系统中,消息可使用公共密钥(例如,分配给任何人)加密,但这种消息仅可使用对应的私用密钥解密。

许多这种加密系统,例如维斯特-沙米尔-阿德勒曼(rivest-shamir-adleman;rsa)和迪菲-赫尔曼密钥协议算法,使用模幂运算作为基本运算。在模幂运算中,对模数执行一种幂运算。在一个实例中,模幂运算计算上升到e次幂(指数)的整数b(底数),be,除以正整数m(模数)时的余数。一般来说,加密系统采用(a)公用指数(亦称为公用密钥),(b)私用指数(亦称为私用密钥),和(c)共模(与私用和公共密钥一起使用)。这些密码中使用的私用指数(私用密钥)通常对于例如功率分析和时点分析的旁道分析是脆弱的。旁道攻击允许攻击者通过测量除算法结果的其它信息,例如功率消耗、计算时间或装置的射频发射来恢复关于密码操作输入的信息。这种旁道分析试图曝露例如私用指数(私用密钥),借此允许攻击者接入使用对应公用密钥加密的内容。

挫败简单功率分析(simplepoweranalysis;spa)的一个典型方法是蒙哥马利阶梯。为挫败差分功率分析(differentialpoweranalysis;dpa),通常需要盲发来遮盖功率信息泄露。全部这些对策以一种攻击者难以利用的方式减慢了幂运算性能。然而,模幂运算函数的整体速度受到影响(即,操作耗费更长时间)。旁道攻击的近期进展触发了在需要时盲发底数和/或模数作为额外保护的需要。

另一方面密码系统中的公用指数不需要对策。因此,密码系统通常作出特殊布置,来仅在寻求私用指数时添加对策。逐个改变每个私用密钥的密码用法成为逐个处理的工作。

许多安全性软件模块和/或库对于公用和私用密码(加密/解密)使用相同的基本模幂运算函数调用。为区别公共密钥或密码与私用密钥或密码,在一个实例中,加密库可能使用密码内容中的标签以指示对策需求(例如,用于私用密码的对策)。在模幂运算函数调用之前,调用另一个功能,以接通或断开对策标签(例如,对于私用密码接通,对于公用密码断开)。标签通常需要在再次调用模幂运算函数调用之前被复位。因此,调用模幂运算函数的人需要了解这种标签,以确保实现对策,这一点是不能够始终假设的。

使用单一模幂运算函数的另一种简单但昂贵的方法是在执行或调用模幂运算函数时,始终允许低层应用软件编程接口(applicationprogramminginterface;api)中的对策。然而,对公用密钥使用的惩罚是减速而没有任何安全性增益。由于公用密钥假定为由包含攻击者的每个人所知,因此在产生公用指数或公用密钥允许对策什么都无法获得。

因此,当使用单一模幂运算函数时,需要一种方法来保护私用密钥产生和/或用法,但避免公用密钥产生和/或用法方面的性能损失。



技术实现要素:

提供一种用于在加密运算的模幂运算函数中实现安全性的方法。相同的模幂运算函数可执行加密和解密运算,但是是利用不同的密钥。当调用模幂运算函数时,可获取作为参数。密钥可能是加密密钥对的公用密钥或私用密钥。在所述模幂运算函数内,所述方法查明所述密钥的长度是否大于l位,其中l为正整数。举例来说,l=3字节或24位。如果密钥的长度大于l位,那么实施对付攻击的对策。对策可包含阻止或防止通过分析查明关于密钥的信息的一或多种技术。或者,如果密钥的长度小于或等于l位,那么可绕过对策。可随后使用密钥执行一或多个幂运算。

在不同实例中,对策可包含基于硬件和/或基于软件的对策。举例来说,对策可包含密钥的加密盲发。在其它例子中,实施对策可包含以下各项中的至少一个:(a)切换到功率均衡电路,其独立于所述密钥的值而利用大致相同的功率量进行所述一或多个幂运算,(b)切换到时间均衡电路,其独立于所述密钥的所述值而耗费大致相同的时间量进行所述一或多个幂运算,或(c)切换到功率均衡和时间均衡电路,其独立于所述密钥的所述值而利用大致相同的功率和时间量进行所述一或多个幂运算。

在使用模幂运算函数进行加密的实例中,可获取数据m和模数n,其中一或多个幂运算对数据m进行加密以获取密文c,其中c=mkpubmodulon,且kpub=密钥。

在使用模幂运算函数进行解密的实例中,可获取数据c和模数n,其中一或多个幂运算对数据c进行解密以获取数据m,其中c=mkpubmodulon,且kpub=密钥。

在使用模幂运算函数进行加密签名的实例中,获取消息m和模数n,且一或多个幂运算使用私用密钥kpriv对消息m进行签名以获取签名s,其中s=mkprivmodulon,且kpriv=密钥。

在使用模幂运算函数进行加密认证的实例中,可获取签名s和模数n,且一或多个幂运算使用公用密钥kpub认证签名s以获取消息m,其中m=skpubmodulon,且kpub=密钥。

提供模幂运算电路,其包括寄存器和耦合到寄存器的处理电路。寄存器可用于在调用模幂运算时获取密钥作为参数。

处理电路经配置以进行以下操作:(a)查明所述密钥的长度是否大于l位,其中l为正整数,(b)如果所述密钥的长度大于l位,那么实施对付攻击的对策,和/或(c)使用所述密钥执行一或多个幂运算。如果密钥的长度大于l位,那么处理电路可实施所述对策,否则所述一或多个幂运算绕过所述对策。

在一个实例中,处理电路可经配置以通过对所述密钥应用加密盲发来实施所述对策。

在另一个实例中,所述处理电路可包含以下各项中的至少一个:(a)功率均衡电路,其独立于所述密钥的值而利用大致相同的功率量进行所述一或多个幂运算,(b)时间均衡电路,其独立于所述密钥的所述值而耗费大致相同的时间量进行所述一或多个幂运算,和/或(c)功率均衡和时间均衡电路,其独立于所述密钥的所述值而利用大致相同的功率和时间量进行所述一或多个幂运算。

附图说明

图1为说明一般方法的框图,其在执行幂运算时,可由模幂运算函数实施以决定是否应用对策。

图2说明用于在加密运算的模幂运算函数中实现安全性的方法。

图3说明可实施的硬件对策操作的实例。

图4说明可实施的软件对策操作的实例。

图5说明可使用自动选择的对策进行的幂运算的各种实例。

图6说明经配置以实施对付旁道攻击的对策的示范性的模幂运算电路的框图。

具体实施方式

在以下描述中,给出具体细节以提供对描述的实施方案的透彻理解。然而,所属领域的一般技术人员将理解,可在没有这些具体细节的情况下实践所述实施方案。例如,可以框图展示电路以便不以不必要的细节混淆实施方案。在其它情况下,可依次详细展示众所周知的电路、结构和技术以便不混淆实施方案。

词语“示范性”在本文中用于意味着“充当实例、例子或说明”。本文中描述为“示范性”的任何实施方案或实施例未必应解释为比其它实施例优选或有利。同样,术语“实施例”并不要求所有实施例均包含所论述特征、优势或操作模式。

概述

定义一种模幂运算函数,其依据使用公用指数(公用密钥)或私用指数(私用密钥),自动、明显和/或隐含地应用攻击对策(例如,旁道攻击对策)。模幂运算函数可自动检测使用的输入(即,公用指数/密钥或私用指数/密钥)的长度是否小于或等于l位(例如,8位或1字节,16位或2字节,24位或3字节等),其中l为正整数。在这一方法中暗示公用指数/密钥始终短于(或等于)l位,且私用指数/密钥始终大于l位。在rsa中的惯例为使用较小的公用指数(例如,公用密钥),其对于加速解密和认证具有相当大的益处。第二,如果所检测到的输入(即,指数/密钥)的长度小于或等于l位,那么不实施对策(即,它是公用密钥,所以安全性不是关注点)。否则,如果输入大于l,那么假设其为私用指数/密钥,且实施一或多个对策。即,当使用具有大于l位的输入(即,指数/密钥调用模幂运算函数时,对策可被接通,以保护这种私用指数(私用密钥)免遭曝露。藉此,任何大于l位的密钥(指数)将默认地受保护。不需要在密码等级添加分离的对策参数/指示符/寄存器/标签(即,其使用模幂运算函数内部地实现)。

示范性模幂运算

在密码密钥(例如,公用和私用密钥对)的产生中利用模幂运算的一个实例。举例来说,在产生rsa加密密钥时,通过获取两个不同质数p和q,产生公用密钥和对应的私用密钥。随后计算数字n为n=p·q,其中n是用于公共密钥和私用密钥的rsa模数。还计算功能f(n),其中f(n)=(p-1)(q-1),且功能f可以是例如欧拉功能或欧拉功能。随后选择整数e(即,被称为公用指数或公用密钥),以使得1<e<f(n),且e与f(n)互质(即,e和(f(n)不共享1以外的因数)。整数e可能被任意选择,或可能选择为较小,以使得e=216+1或e=3或e=17。计算唯一整数d(即,被称为私用指数或私用密钥),以使得1<d<f(n),且d·e=1模f(n)。模数n和公用指数e(即,公用密钥)是公用的,而质数p和q以及私用指数d(即,私用密钥)保持为机密/私用。

类似地,使用迪菲-赫尔曼演算法产生的加密密钥使用公用指数和私用指数。

在一个实例中,公共密钥(即,整数e)和私用密钥(即,整数d)可用于对信息进行加密和解密。举例来说,对于模数n,为了使用公用密钥kpub对消息m进行加密(其中m<n),密文c=mkpubmodulon。此处,取模运算查找mkpub除以n的余数。类似地,对于模数n,为使用私用密钥kpriv对密文c进行解密,消息m=ckprivmodulon。此处,取模运算查找ckpriv除以n的余数。

在另一个实例中,对于模数n,为了使用私用密钥kpriv对消息m进行签名(其中m<n),签名s=mkprivmodn。类似地,为使用公用密钥kpub验证签名s,消息m=skpubmodn。

以此方式,公共密钥kpub和私用密钥kpriv可充当基于模幂运算的这些密码中的指数。

具有自动选择对策的示范性模幂运算函数

根据一个方面,定义模幂运算函数,其隐含地检测其是否被公用密钥或私用密钥调用,且依据其被公用密钥调用还是被私用密钥调用而自动实施对策。在这一方法中,如果被调用以获取公用指数(即,对于公用密钥),那么模幂运算函数的输入短于(或等于)l位,且当被调用以获取私用指数(即,对于私用密钥)时它们大于l位,其中l为正整数值(例如,1、2、…16、…24、…32、…48、…64)。

在上文给出的实例中,对于公用指数的输入为整数e,且对于私用指数的输入为整数d。这些整数可能经选择以使得1<d<f(n),且d·e=1模f(n)。一个使用rsa的优势为它的公用指数(公用密钥)可被优化成极小,而实际大小的私用密钥在安全性所在的位置。rsa密码的许多商业版本使用长度不大于3个字节(即,24位)的rsa公共密钥,以实现良好/快速性能。实际实施方案中使用的两个最常见公用指数是0x3和0x10001。

图1为说明一般方法的框图,其在执行幂运算时,可由模幂运算函数实施以决定是否应用对策。这一模幂运算函数可以是由其它软件调用来执行幂运算的软件库或操作系统的部分。举例来说,模幂运算函数可能被公用密钥或私用密钥102调用来执行密码操作,例如对数据加密、对数据解密、对数据进行签名,或认证数据。在由密钥102调用时,模幂运算函数可能(内部地)查明密钥的长度是否大于l位104。在这个实施方案中,假定公共密钥(例如,无安全性或较低安全性)的长度将不超过l位,且私用密钥(例如,安全)的长度将长于l位。因此,如果,那么密钥大于l位,那么它是私用密钥,且将应用对付旁道攻击的对策(或其它对策)106。否则,如果,那么密钥不长于l位,那么它是公用密钥,且不应用对策。以此方式,模幂运算函数可确定是否应用旁道攻击对策。

在旁道攻击中,通过例如查明执行操作的功率或时点,可能曝露或查明密钥值。通过运行具有不同密钥值的多个测试来查明所测试的每个密钥值的这种操作中使用时点和/或功率,随后确定不同幂运算所使用的另一个密钥是可行的。因此,对策106可包含另外操作、电路路径等,其阻止或防止通过功率分析和/或时点分析公开密钥。举例来说,对策106可确保在调用模幂运算函数时,对于使用的全部密钥消耗大致相同量的功率(例如,电路路径可被匹配为具有相同数目的晶体管等,这样它们消耗大致相同量的功率且耗费大致相同的时间)。替代地,对策可能添加盲发来随机化模幂运算的计算消耗。即,通过随机化用于不同密钥(或其它输入)的计算资源(例如,功率或时间),其防止攻击者获得有用的旁道信息。

随后使用密钥执行幂运算108,例如对数据加密、对数据解密、对数据进行签名,和/或认证数据,来获取输出110。

图2说明用于在加密运算的模幂运算函数中实现安全性的方法。当调用模幂运算函数时,获取密钥作为参数202。在一个实例中,所述密钥可能是加密密钥对的公用密钥或私用密钥。在所述模幂运算函数内,随后查明所述密钥的长度是否大于l位,其中l为正整数204。举例来说,在一实例中,l可能等于3字节(即,24位)。

如果密钥的长度大于l位,那么可实施对付攻击的对策(例如,一或多个对策)206。因此,密钥的长度隐含地指示应实施的对策的等级/量/程度。在一个实例中,公共密钥不长于l位,而私用密钥始终长于l位。对策可包含语言阻止或防止通过分析(例如,功率分析和/或时点分析)而查明关于密钥的信息的一或多种技术。对策可包含软件对策、硬件对策和/或软件/硬件对策的组合。

图3说明可实施的硬件对策操作的实例。在决定实施或允许硬件对策302时,一或多个可选304硬件对策可用。在对策的第一实例中,方法可能切换到(或允许)功率均衡电路,其独立于密钥值而利用大致相同的功率量进行一或多个幂运算306。在第二实例中,方法可能切换到(或允许)时间均衡电路,其独立于密钥值而耗费大致相同的时间量进行一或多个幂运算308。在第三实例中,方法可能切换到(或允许)功率均衡和时间均衡电路,其独立于密钥值而利用大致相同的功率和时间量进行一或多个幂运算310。可随后执行幂运算312。在一个实例中,这种功率均衡电路和/或时间均衡电路可能对计算路径增加电路路径长度、延迟和/或晶体管,因此使用不同密钥值的计算/操作耗费大致相同的功率和/或时间。然而,如果密钥的长度小于或等于l位,那么绕过对策。

图4说明可实施的软件对策操作的实例。在决定允许软件对策402时,可通过将随机整数引入到幂运算中以获取输出,来实施密钥(和/或其它输入/参数)的加密盲发404。随后,在输出上执行反向加密盲发,以获取未盲发输出406。

这种用于rsa的加密盲发的一个实例涉及计算盲发运算e(x)=(xr)emodn,其中r为1与n之间的随机整数,且相对于n为素数(亦即gcd(r,n)=1),x为明文,kpub为公用rsa指数/密钥,且n为rsa模数。由此应用解密功能f(z)=zdmodn,提供f(e(x))=(xr)edmodn=xrmodn。最后,其使用功能d(z)=zr-1modn反盲发。将xrmodn乘以r-1modn产生x,作为需要的输出。当以此方式解密时,能够测量此操作耗费时间的攻击者将不能利用这一信息(例如,通过应用已知为rsa弱点的时点攻击),这是因为攻击者并不知晓随机整数r,且从而不了解馈入到rsa基元的真正输入。

再次参考图2,可随后使用密钥执行一或多个幂运算212。

在一些实施方案中,可共同实施或启用硬件和软件对策。

图5说明可使用自动选择的对策进行的幂运算的各种实例。

在一个实例中,相同的模幂运算函数可执行加密和解密运算,但是是利用不同的密钥。举例来说,可获取数据m和模数n,且幂运算加密数据m以获取密文c,其中c=mkpubmodulon,且kpub=密钥502。在另一个实例中,可获取数据c和模数n,其中幂运算解密数据c以获取数据m,其中c=mkpubmodulon,且kpub=密钥504。

类似地,相同模幂运算函数可能执行加密签名和认证。举例来说,可获取消息m和模数n,并且所述一或多个幂运算使用私用密钥kpriv对所述消息m进行签名,以获取签名s,其中s=mkprivmodulon,且kpriv=密钥506。在另一个实例中,获取签名s和模数n,且所述一或多个幂运算使用公用密钥kpub认证所述签名s来获取消息m,其中m=skpubmodulon,且kpub=密钥508。

以此方式,当模幂运算函数被长于l位的密钥调用时,对策接通,以保护这种私用密钥或指数。藉此,任何大于l位的密钥(或指数)将默认地受保护。不需要在密码层面增加分离的对策参数/指示符,这是因为其由模幂运算函数内部地实现。因为模幂运算是软件库中的基本数学运算,所以通过实施具有自动选择对策的幂运算功能(例如,当输入密钥的长度大于l位时,自动实施对策),不同密码的遗留代码将明显受保护。

在一个实例中,这一方法避免rsa公用密钥用途方面的不必要的性能退化,这是因为rsa公用密钥通常不长于3字节(即,24位)。另一方面,如果任何加密系统不希望优化公共密钥以获得性能(即,使用大于3字节或24位的公用密钥或指数),那么对策引起的额外等待时间无论如何都将不明显。

这一方法尤其适用于修补现存或遗留加密库,其中难以修改密码特定代码。更新软件库中的模幂运算函数提供明显修补方法。除rsa以外,迪菲-赫尔曼密钥协议和数字签名算法(digitalsignaturealgorithm;dsa)签名的签名可通过此相同方法受保护。

图6说明经配置以实施对付旁道攻击的对策的示范性的模幂运算电路的框图。模幂运算电路602可包含一或多个寄存器606和处理电路607。处理电路607可包含比较器电路608、硬件对策电路610和/或计算电路612。寄存器606可包含输入寄存器以接收/获取一或多个输入604(例如,参数),例如输入密钥614、模数n616、数据/消息m618,和/或密文c620。在一个实例中,寄存器606可用以在调用模幂运算时传递密钥614作为参数。比较器电路608可用以确认密钥的长度是否大于l位,其中l为正整数。硬件对策电路610可经配置以当密钥的长度大于l位时,实施对付攻击的对策(例如,一或多个对策)。在一个实例中,对策电路610可包含功率均衡电路622和/或时间均衡电路624。此外,处理电路607还可以经配置以实施软件对策,例如密钥的加密盲发630。计算电路612可经配置以使用密钥执行一或多个幂运算626,以提供输出628。

实例中,如果密钥的长度大于l,那么计算电路612可使用对策电路610,否则一或多个幂运算绕过对策电路610。

在一些实施方案中,功率均衡电路622可独立于密钥的值而利用大致相同的功率量进行所述一或多个幂运算。类似地,时间均衡电路624可独立于密钥的值而耗费大致相同的时间量进行所述一或多个幂运算。在其它实施方案中,功率均衡和时间均衡电路可独立于密钥的值而利用大致相同的功率和时间量进行一或多个幂运算。

图式中所说明的组件、步骤、特征和/或功能中的一或多个可以重新布置和/或组合到单个组件、步骤、特征或功能中或在若干组件、步骤或功能中实施。在不脱离本发明的情况下,还可添加额外的元件、组件、步骤和/或功能。图6中说明的设备、装置和/或组件可经配置以执行图1和/或2中描述的方法、特征或步骤中的一或多个。本文中描述的新颖算法还可有效地实施于软件中和/或嵌入于硬件中。

而且应注意,至少一些实施方案已经描述为过程,所述过程经描绘为流程图、流图、结构图或框图。尽管流程图可将操作描述为连续过程,但许多操作可并行或同时执行。另外,可以重新安排操作的顺序。当过程的操作完成时,所述过程终止。过程可与方法、函数、规程、子例程、子程序等相对应。当过程与函数相对应时,其终止与所述函数返回到调用函数或主函数相对应。

此外,可由硬件、软件、固件、中间件、微码或其任何组合来实施实施例。当以软件、固件、中间件或微码实施时,用以执行必要任务的程序代码或代码段可存储在机器可读媒体中,例如,存储媒体或其它存储装置。处理器可以执行必要任务。代码段可表示步骤、功能、子程序、程序、例程、子例程、模块、软件包、类,或指令、数据结构或程序语句的任何组合。一个代码段可通过传递及/或接收信息、数据、自变量、参数或存储器内容耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可经由包含存储器共享、消息传递、权标传递、网络传输等任何合适的手段传递、转发或传输。

术语“机器可读媒体”、“计算机可读媒体”和/或“处理器可读媒体”可包含但不限于便携式或固定存储装置、光学存储装置,和能够存储、含有或携载指令和/或数据的各种其它非暂时性媒体。因此,本文中描述的各种方法可以完全或部分地由可以存储在“机器可读媒体”、“计算机可读媒体”及/或“处理器可读媒体”中且由一或多个处理器、机器及/或装置执行的指令及/或数据来实施。

结合本文中所公开的实例描述的方法或算法可以处理单元、编程指令或其它方向的形式直接体现在硬件、可由处理器执行的软件模块或两者的组合中,且可包含于单个装置中或跨越多个装置而分布。软件模块可以驻留在ram存储器、快闪存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom,或所属领域中已知的任何其它形式的存储媒体中。存储媒体可联接到处理器,使得处理器可从存储媒体读取信息以及将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成整体。

所属领域的技术人员将进一步了解,结合本文中公开的实施例而描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为清晰地说明硬件与软件的此可互换性,上文已大体就其功能性描述了各种说明性组件、块、模块、电路和步骤。此类功能性是实施为硬件还是软件取决于特定应用及强加于整个系统的设计约束。

本文所描述的本发明的各种特征可在不脱离本发明的情况下实施于不同系统中。应注意,前述实施例仅为实例,且不应解释为限制本发明。实施例的描述意图为说明性的,且不限制权利要求书的范畴。因而,本发明的教示可易于应用于其它类型的设备,且许多替代方案、修改和变化对于所属领域的技术人员将显而易见。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1