与椭圆曲线操作相关的信息泄漏减轻的制作方法

文档序号:32942553发布日期:2023-01-14 09:32阅读:42来源:国知局
与椭圆曲线操作相关的信息泄漏减轻的制作方法
与椭圆曲线操作相关的信息泄漏减轻
1.相关申请的交叉引用
2.本专利申请要求于2020年4月6日提交的题为“mitigation for information leakage during elliptic curve scalar multiplication operations”的美国临时专利申请第63/006,010号的利益和优先权,其通过引用全文并入本文。
技术领域
3.本发明总体上涉及数据安全,更具体地,涉及与椭圆曲线操作相关联的信息泄漏减轻(information leakage mitigation)。


背景技术:

4.通过内部网络和互联网络(如因特网)提供数据的安全传输变得越来越重要。在某些情况下,消息的接收者可以使用与消息相关联的签名来验证消息是否可信,以及在签名之后消息是否被篡改。
附图说明
5.图1示出了根据本公开的一个或多个实施例的示例网络环境,可在该环境中实现数据签名、数据加密/解密和数据通信。
6.图2示出了可由对手收集的信息。
7.图3提供了根据本公开的实施例的用于促进数字签名信息泄漏缓解的伪码。
8.图4示出了当根据本公开的实施例实现图3的伪码时,可由作为攻击的一部分的对手收集的信息。
9.图5示出了根据本公开的一个实施例的可由对手收集的信息,其中真实泄漏被圈出。
10.图6示出了根据本公开的一个实施例的可由对手收集的信息,其中真实泄漏被圈出。
11.图7提供了根据本公开的实施例的用于促进与椭圆曲线解密相关联的信息泄漏减轻的伪码。
12.图8示出了根据本公开的实施例的用于促进与椭圆曲线操作相关联的信息泄漏减轻的示例处理的流程图。
13.图9示出了根据本公开的一个或多个实施例的示例计算装置,其中可以实现数据签名、数据加密/解密和数据通信。
14.通过参考下面的详细描述,可以最好地理解本公开的实施例及其优点。应当理解,相同的参考数字用于标识在一个或多个图中示出的相同元件。
具体实施方式
15.提供各种技术以促进与执行椭圆曲线(ec)运算相关联的信息泄漏地减轻。在某些
方面,这些椭圆曲线操作包括椭圆曲线数字签名算法(ecdsa)操作和椭圆曲线集成加密方案(ecies)操作。ecdsa和ecies操作包括椭圆曲线标量乘法(ecsm)运算。例如,装置可以执行ecsm操作以将随机数与椭圆曲线基点相乘,作为ecdsa的一部分,如本文进一步描述的。该随机数与该装置的密钥(例如,私钥)相关联,该随机数和该密钥都由该装置保密。在一些攻击中,当装置正在执行ecsm操作时,对手(例如,也称为对抗性装置、攻击者或黑客)可以收集由装置泄漏的与随机数相关联的信息。与随机数相关联的这种泄漏信息也可以转换为关于密钥的信息。因此,这样的泄漏信息,如果不被减轻,可能允许对手确定随机数,而随机数又可用于确定受攻击装置的密钥。
16.在一些实施例中,执行多个ecsm操作以减轻/模糊与ecsm操作相关联的泄漏信息。在一个方面,这种方法被用于ecdsa签名操作。在ecdsa中,由于对随机数和曲线点的ecsm操作,可能会发生关于随机数的信息泄漏。为了减轻ecdsa中的信息泄漏,可以对要签名的给定消息m执行多个ecdsa签名操作,其中仅有签名操作中的一个签名操作与签名(r,s)(例如,也称为真签名)和随机数k(例如,也称为真随机数)相关联。其余的签名操作与诱导签名(例如,也称为假签名或欺骗签名)和提供与诱导随机数(例如,也称为假随机数或欺骗随机数)相关联的信息的泄露信息相关联。就这一点而言,不防止与每一签名操作(例如,每一签名操作具有相应的消息m、返回的签名(r,s)和关于k的泄漏信息)泄漏的真随机数和诱导随机数相关联的信息,而是利用这些信息来减轻/模糊密钥的确定。这样的方法与可能寻求诸如通过计算或物理机制来阻止关于随机数k的信息泄漏的其他方法形成对比。在一个实施例中,利用多个ecsm操作(例如,对于ecdsa中的每个消息)的方法可以单独使用或与其他方法(例如旨在阻止信息泄漏的方法)一起使用。
17.多个ecsm操作以随机顺序执行。随机顺序可以由一个或多个随机值指示。(例如,由随机数生成器)可以生成具有依赖于应用(例如,给定应用的期望/必要安全级别)的变化熵级别的随机值。较高的熵/随机值通常与较高的安全性相关联。例如,真正的随机值可以基于物理或自然现象(例如,量子过程)的测量或自然熵的来源。这些源或来自这些源的真随机值提取可以提供真随机值生成,但是相对于与较低熵相关联的随机值(例如,称为伪随机值)的生成,可能是速率有限的或速度较慢的。在一个方面,根据一个或多个实施例,真随机值或伪随机值可用于指示执行多个ecsm操作的随机顺序。
18.使用一些实施例,可以实现减轻以解决诸如格型攻击的侧信道攻击。侧信道攻击可指由对手发起的攻击,其不直接涉及试图恢复或访问受攻击装置的密钥本身,而是依赖于收集信息泄漏(例如,在ecdsa的情况下,关于随机数)并基于收集的信息泄漏确定密钥。在一些情况下,当装置正在执行ecsm操作时,可以基于监视装置的功率简档来确定这种泄漏。在一些方面中,这样的减轻可以在固件或软件层中实现(例如,在适当的情况下采取其他保障措施),而不是实现物理或硬件改变。该减轻还可应用于可执行的其他缓解和/或对策之上/之外。
19.现在参考附图,图1示出了根据本公开的一个或多个实施例的示例网络环境100,其中可以实现数据签名、数据加密/解密和数据通信(例如,发送、接收)。然而,并非所有所示的组件都是必需的,并且一个或多个实施例可以包括图中未示出的附加组件。在不脱离本文所述权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。可以提供附加组件、不同组件和/或更少组件。
20.网络环境100包括计算装置105、110和115以及网络120。计算装置105、110和115可以向彼此传输数据(例如,消息)和/或从彼此接收数据。例如,计算装置105、110和115可以加密数据、签名数据、传输加密数据、解密已加密的数据以及验证签名。在一个实施例中,计算装置105、110和/或115可以执行签名操作(例如,使用ecdsa)和/或加密/解密操作(例如,使用ecies)。计算装置105、110和115可以经由网络120进行通信。在图1中,计算装置105、110和115经由各自的连接125、130和135连接到网络120。
21.计算装置105、110和120中的每一个可以包括能够建立一个或多个连接(例如,有线和/或无线连接)以与另一个系统和/或装置通信的任何系统和/或装置。作为非限制性示例,计算装置105、110和115可以包括服务器、web服务器、基于云的服务器、台式计算机、销售点装置、膝上型计算机、手持计算机、移动电话(例如,智能电话)、计算机集群、个人数字助理、平板装置等。在一个实施例中,计算装置105、110和115中的任何一个可以执行本文描述的处理,例如图3、图7和图8中提供的示例处理。
22.连接125、130和135可用于传输和接收数据。在一些情况下,连接125、130和135可用于密钥交换,以便于通信数据的加密和解密。例如,为了便于计算装置105和115之间的安全通信,计算装置105和115可以执行密钥交换以便于加密和解密在计算装置105和115之间通信的数据。与密钥交换相关联的通信可以通过连接125和135以及网络120进行。
23.连接125、130和135中的每一个可以表示用于促进计算装置105、110和115之间的通信的一个或多个有线和/或一个或无线连接。网络120可以是网络,或者完全或部分协同操作的不同网络的任何集合,以提供到计算装置105、110和115的连接并允许计算装置105、110和115之间的数据通信。例如,计算装置105、110和115通过其进行通信的网络120可以包括(作为非限制性示例)互联网、电话网络、蜂窝网络、光纤网络、无线网络、基于云的网络、销售点网络、专用网络(例如,内部网)、局域网(lan)、广域网(wan)、个人局域网(pan)或其组合。
24.在实施例中,计算装置105、110和/或115中的一个或多个可以是客户端装置,计算装置105、110和/或115中的一个或多个可以是服务器装置(例如,主机服务器)。例如,计算装置105和115可以是客户端装置,并且计算装置110可以是服务器装置。在该示例中,计算装置110可以托管服务于计算装置105和115的网络资源。网络资源可以包括基于web的服务(例如,新闻网站)、基于云的服务(例如,数据存储服务)、销售点服务、应用服务和/或其他服务。通过网络120的通信可以是客户端到客户端、客户端到服务器、服务器到客户端和/或服务器到服务器。
25.提供了各种技术以促进与椭圆曲线操作相关联的信息泄漏减轻。信息泄漏可能与在ecdsa和ecies中执行的ecsm操作相关联。ecsm可以使用私钥用于加密和ecdsa。例如,装置可以执行ecsm操作以将随机数与椭圆曲线基点相乘,作为ecdsa的一部分,如本文进一步描述的。该随机数与私钥相关联,该随机数和私钥通常由装置保密。当装置正在执行ecsm操作时,对手可以收集由与随机数相关联的装置泄漏的信息。例如,在图1中,计算装置105可以是对手,并且计算装置115可以是受攻击装置。与随机数相关联的这种泄漏信息也转换为关于私钥的信息。因此,这种泄露的信息,如果不减轻,可能允许对手确定随机数,而随机数又可用于确定受攻击装置的私钥。
26.在一些实施例中,信息泄漏减轻可应用于ecdsa。为了促进在内部网络和/或诸如
因特网的互联网络上的安全数据传输,可以使用数字签名算法(dsa)用数字签名对在网络上传输的数据进行签名。在发送者侧,发送者可以使用dsa对将要由发送者传输的消息应用签名。在接收者侧,消息的接收者可以使用dsa来验证来自预期的起源者/发送者的消息,并且验证消息在被签名之后没有被篡改。消息的预期来源/发送者是与所应用的签名相对应的私钥(例如,用于生成与消息相关联的签名的私钥)的持有者。认证可以基于接收者对消息发送者应用的签名的验证。接收者可以通过使用与私钥相对应的公钥来认证消息(例如,验证其签名)并验证消息的内容。
27.ecdsa是使用椭圆曲线密码术(ecc)的dsa的一个版本或类型。例如,比特币使用ecdsa。关于ecdsa,ecc涉及标量乘法操作,称为ecsm操作或椭圆曲线密码术标量乘法操作。ecc使用由私钥x和公钥q形成的密钥对。公钥q由私钥x和有限域上椭圆曲线上的基点p(例如,也称为椭圆曲线基点)的ecsm提供。公钥q的这种关系可以写成q=[x]p。私钥x在域中是随机的,其中是所有整数的集合,n是基点p的顺序。在某些情况下,私钥x可以被称为秘密密钥,因为私钥x将由使用私钥进行ecdsa签名的装置保密。
[0028]
对于消息m(例如,明文消息),ecdsa可用于生成用于对消息m签名的签名(r,s)。就这一点而言,ecdsa的每次运行可与签名相应消息m相关联。edcsa的每次运行都涉及在域这一点而言,ecdsa的每次运行可与签名相应消息m相关联。edcsa的每次运行都涉及在域中选择/生成随机数k。选择可以被表示为其中指示从域的随机抽样中给随机数k分配值。在一方面,这种随机抽样可以包括依赖于应用(例如,针对给定应用的期望/必要安全级别)的变化熵的随机抽样。就这一点而言,随机抽样可以基于真随机抽样或伪随机抽样。利用随机数k,可以用以下方法确定曲线点(u,v):
[0029]
((u,v)

[k]p
ꢀꢀꢀꢀꢀꢀ
(1)
[0030]
就这一点而言,确定曲线点(u,v)涉及随机数k和基点p的ecsm。
[0031]
由对(r,s)提供的ecdsa签名可以通过以下方法确定:
[0032]r←
u mod n
ꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0033]s←
k-1
(h(m)+rx)mod n
ꢀꢀꢀꢀꢀ
(3)
[0034]
其中h是哈希函数(例如,安全哈希算法(sha),例如sha-1或sha-2),h(m)是哈希消息,并且

表示赋值操作符(例如,r被赋值为u mod n)。注意到公式(3)是一个线性方程。
[0035]
公式(2)和(3)提供了ecdsa签名所满足的关系。公式(3)可以改写来求解随机数k:
[0036]
k=(h(m)s-1
+rs-1
x)mod n
ꢀꢀꢀꢀ
(4)
[0037]
通过设置h=h(m)s-1
和c=rs-1
,公式(4)可以被改写为h+cx=k mod n。如果关于随机数k的信息泄漏或可以被确定,则该信息也泄漏关于私钥x的信息(例如,转换为信息)。在一些情况下,与随机数k相关联的信息泄漏可能由在公式(1)中执行的ecsm操作导致。如果对手要收集关于随机数k的信息以确定关于随机数k的至少部分信息,例如随机数k的一个或多个最高有效位(msb),则对手可以利用h、c和关于随机数k的信息来确定随机数k,进而确定私钥x。在一些情况下,关于私钥x的信息可以通过求解具有由公式(4)提供的形式的线性方程组来确定。
[0038]
对手可以攻击使用ecdsa的装置,以使该装置泄露用于ecdsa签名的装置的私钥x。在知道私钥的情况下对手可以使用私钥进行ecdsa签名(例如,伪造签名),并因此能够模拟
受攻击的装置(即,私钥的真实持有者)。在一些情况下,为了使装置泄露与私钥相关联的信息,对手可能会使用称为侧信道攻击的一类攻击进行攻击。侧信道攻击之所以如此是因为它们不直接涉及试图恢复或访问密钥本身,而是依赖于收集信息泄漏并基于收集的信息泄漏来确定密钥。在一些情况下,在公式(1)中执行的ecsm操作可能泄漏与在侧信道攻击期间可能由对手收集的随机数k相关联的信息。
[0039]
侧信道攻击的示例是使用第一位值为1的位置的格型(lattice attack)攻击。在格型攻击中,除非采取对策,否则有关随机数k的最重要位的信息将被泄露。在这样的格型攻击中,对手可以测量ecdsa的每个迭代的功率简档(例如,也称为功率迹线或功率签名),以获得关于用于该迭代的随机数k的第一个(例如,msb)的信息。例如,对于要签名的给定消息m,签名实体(例如,消息的发送者/签名者)使用私钥x来确定/生成签名(r,s),并返回签名。在该示例中,对于一系列消息m1、m2、

、mn,使用签名(r1、s1)对消息m1进行签名,使用签名(r2、s2)对消息m2进行签名,使用签名(rn、sn)对消息mn进行签名,等等。通过在每个消息的相应签名(r,s)的每次计算期间监视(例如,作为格型攻击的一部分)签名实体的功率简档,对手可以确定关于随机数k的信息(例如,关于随机数k的msb的信息)。从该信息中,对手可以基于公式(4)和对手对消息m1、m2、

、mn、签名(r1、s1)、(r2、s2)、

、(rn、sn)和关于随机数k的泄漏信息的知识,来生成一系列线性方程。就这一点而言,对手需要收集与签名消息相关的足够多的信息来收集足够多的泄漏和相应的方程来试图确定私钥x。
[0040]
图2示出了作为攻击(例如,格型攻击)的一部分由对手收集的信息。对手收集由{mi,ri,si,leaki}组成的一组数据,其中对于整数i,1≤i≤n。就这一点而言,对于给定的i值,可以由对手收集消息mi、消息mi的签名(ri,si),以及与随机数k相关联的泄漏信息leaki。在一个方面,当签名实体对消息mi执行签名操作(例如,ecdsa签名操作)以确定消息mi的签名(ri,si)时,对手可以通过对签名实体执行功率分析以获得功率简档来确定leaki。可以基于功率简档来确定leaki。在一些情况下,功率简档可以与公式(1)中执行的ecsm操作相关联。对于每一组数据{mi,ri,si,leaki}可以建立公式(4)形式的线性方程。对手可以收集适合于建立相应数量的线性方程的多个数据集,以试图求解私钥x。
[0041]
在一些实施例中,为了减轻与ecdsa签名操作(例如,ecdsa签名操作的ecsm操作)相关联的泄漏信息,可以对要签名的给定消息m执行多个签名操作,其中只有签名操作中的一个签名操作与真签名(r,s)相关联,并因此与真随机数k相关联。其余的签名操作与诱导签名和提供与诱导随机数相关联的信息的泄漏信息相关联。就这一点而言,与在每个签名操作(例如,每个签名操作具有相应的消息m、返回的签名(r,s)和关于k的泄漏信息)中泄漏的真随机数和诱导随机数相关联的信息不被阻止,而是可以用来减轻/模糊私钥x的确定。如下文所进一步描述的,这种方法使得对手建立适当的线性方程以确定私钥x比不采取反措施的情况成指数地更加困难。这样的方法与通过阻止关于随机数k的信息泄漏(例如通过计算或物理机制)来解决格型攻击的其他方法形成对比。在一个实施例中,对每个消息利用多个ecdsa签名操作的方法可以单独使用或与旨在阻止信息泄漏的方法一起使用。
[0042]
图3提供了根据本公开的实施例的用于促进数字签名信息泄漏减轻的伪码。伪码提供响应于用于签名消息m和使用私钥x的ecdsa生成请求而执行的操作。在一些方面,伪码可以通过固定功能硬件、通过在硬件资源上执行的代码、和/或通过固定功能硬件和可编程硬件的组合来实现。在实施例中,计算装置105、110和/或115中的任何一个可以通过实现伪
码来促进数字签名信息泄漏减轻。正在执行签名操作(例如,ecdsa签名操作)的计算装置可以被称为签名实体。
[0043]
可以确定/生成(例如,由签名实体的随机数生成器)表示为“顺序”的随机数。在一个方面,随机数可以是真随机数或伪随机数。“顺序”表示执行两个ecdsa签名操作的顺序。诱导消息m'(例如,也称为假消息或欺骗消息)可以通过在消息m上应用哈希函数来生成,如由m'=hash(m)所表示的。诱导私钥x'(例如,也称为假私钥或欺骗私钥)可以通过在私钥x上应用哈希函数来生成,如由x'=hash(x)所表示的。x'和m'中的每一个分别具有与x和m相同的位数。
[0044]
执行两个ecdsa签名操作。一个ecdsa签名操作用(x,m)执行,另一个用(x

,m

)执行。签名操作以随机顺序执行,例如根据随机调用顺序执行。这个随机顺序由表示为“顺序”的生成的随机数指示。在图3中,如果“order”的值为0,则基于私钥x和消息m执行第一ecdsa签名操作以获得签名(r,s)(例如,也称为真签名)。在执行第一ecdsa签名操作之后,基于诱导私钥x'和诱导消息m'执行第二ecdsa签名操作,以获得签名(r',s')(例如,也称为诱导签名)。如果“order”的值为1,则基于诱导私钥x'和诱导消息m'执行第一ecdsa签名操作,以获得诱导签名(r',s')。在执行第一ecdsa签名操作之后,基于私钥x和消息m执行第二ecdsa签名操作,以获得真签名(r,s)。在执行两个ecdsa签名操作之后,响应于ecdsa生成请求返回真签名(r,s)。
[0045]
在一些方面,诱导私钥x'的生成是可选的。当没有使用诱导私钥x'时,图3中x'的每个实例都可以用x替换。例如,装置可以在唯一装置秘密(uds)模式下操作(例如,有选择地操作或固定地操作)。在uds模式中,私钥x是装置唯一的固定值,可以称为uds密钥。在uds模式下,ecdsa函数使用唯一装置密钥,不接受其他密钥(如诱导私钥)作为有效输入。在其他模式中,可以(例如,但在一些实现中不需要)为ecdsa生成/使用诱导私钥x'。
[0046]
图4示出了当根据本公开的实施例实现图3的伪码时,作为攻击(例如,格型攻击)的一部分可由对手收集的信息。对手收集由{mi,ri,si,leak
i1
,leak
i2
}组成的一组数据,其中1≤i≤n,i为整数。参照图3,对于给定的i值,对手可以收集消息mi、消息mi的签名(ri,si)、与第一ecdsa签名操作相关联的泄漏信息leak
i1
、以及与在第一签名操作之后执行的第二ecdsa签名操作相关联的泄漏信息leak
i2
。在一些情况下,对手可以基于与第一ecdsa签名操作相关联的功率简档来确定leak
i1
,并且基于与第二ecdsa签名操作相关联的功率简档来确定leak
i2
。这些功率简档可以与签名实体在ecdsa签名操作期间执行的ecsm操作相关联。根据图3中的“order”,泄漏信息leak
i1
或leak
i2
中的一个是关于随机数k(例如,也称为真随机数)的泄漏信息,而leak
i1
或leak
i2
中的其余部分是关于诱导随机数k'(例如,也称为假随机数)的泄漏信息。就这一点而言,根据“order”,leak
i1
或leak
i2
中的一个是与随机数k相关联的真泄漏,而另一个是与诱导随机数k'相关联的诱导泄漏。
[0047]
这种利用两个ecdsa签名操作的方法使对手为提交的每个消息生成一对公式,这将导致两个泄漏,这两个泄漏彼此无法区分,因为哪一个是用于计算(r,s)的,哪一个是用于计算(r',s')的。就这一点而言,对于每一组数据{mi,ri,si,leak
i1
,leak
i2
},可以建立两个采用公式(4)形式的线性公式。对于任意一对给定的线性公式,对手无法确定leak
i1
或leak
i2
中哪一个是真泄漏,哪一个是诱导泄漏。为了使对手成功地求解正确的随机数k,对手需要在n个试验(例如,每个试验涉及两个签名操作)的每次尝试/迭代中选择正确的公式
(例如,与真泄漏相关联的公式),这具有2n个复杂度。就这一点而言,为了执行格型攻击,对手需要在可能的2n个可能路径中识别出仅由真泄漏组成的一个路径。图5示出了根据本公开的实施例的可由对手收集的信息,作为攻击(例如,格型攻击)的一部分,其中真泄漏被圈出。未圈出的泄漏是诱导泄漏。图6示出了根据本公开的实施例的可由对手收集的信息,作为攻击(例如,格型攻击)的一部分,其中真泄漏被圈出。就这一点而言,图5和图6各自示出了2n个可能路径中的一个(一部分)。例如,对于n=1000,对手必须选择正确的1000个公式来求解私钥x。在每次试验中选择正确公式的概率为1/2。选择1000个正确公式的概率是1/2
1000

[0048]
因此,对每个消息执行两个ecdsa签名操作可以使ecdsa抵御格型攻击。此外,就这一点而言,尽管前述描述了其中对每个消息执行两个签名操作的实施例,但在其他实施例中,可以对每个消息执行多于两个签名操作(例如,使用相应数量的诱导消息、诱导私钥和/或其他诱导值),以进一步增加抵御力(例如,通过进一步降低对手能够仅识别真泄漏的概率,以构建用于求解私钥x的正确线性方程组)。例如,对于第三签名操作,真消息可用于确定(例如,确定地导出)第二诱导消息(例如,可表示为m”),并且当要使用假私钥(例如,在非uds模式下)时,真私钥x可用于确定(例如,确定地导出)第二诱导私钥(例如,可表示为x”)。在这些实施例中,可以生成一个或多个随机数以确定执行两个以上签名操作的顺序。
[0049]
在一些方面,诱导消息m'和诱导私钥x'(当使用时)是确定性的而不是随机的。诱导消息m'和诱导私钥x'可以基于(例如,从其导出)真消息m和真私钥x是确定性的。在图3中,通过非限制性的示例,诱导消息m'通过对消息m应用哈希函数是确定性的,并且诱导私钥x'通过对私钥x应用哈希函数是确定性的。可以使用确定地(例如,从真消息)获得诱导消息m'和确定地(例如,从私钥x)获得诱导私钥x'的其他方式(例如,除了应用哈希函数)。注意,对m和x进行改变以获得m'和x'不能是简单的比特位置移位(例如,对m的移位以获得m'或对x的移位以获得x'),因为移位的比特模式可能提供与真功率分布(例如,真泄漏)太多的相关性,并且因此仍然提供有用的泄漏。
[0050]
参考如图6中所标识的真泄漏和诱导泄漏,使用从m和x导出的确定性m'和x',如果m1=m2=m3,则诱导泄漏不是随机的,而是一个值。就这一点而言,如果m1=m2=m3,则真泄漏leak
12
=leak
22
=leak
32
和诱导泄漏leak
11
=leak
21
=leak
31
。换句话说,在对手进行的功率分析中,每次提交相同的消息时,每个真功率签名都是彼此相同的,并且每个诱导签名都是彼此相同的。
[0051]
用于确定诱导私钥x'和诱导消息m'的这种确定性方法与使用随机数来确定诱导私钥x'和/或诱导消息m'相反。如果要使用随机数来确定诱导消息m'和诱导私钥x',则对手可以通过使签名实体使用相同的私钥x对相同的消息m进行多次签名来将问题分解为线性问题。每次对真消息m进行签名时,与对真消息m进行签名相关联的功率简档保持一致,而使用不同的(随机生成的)诱导私钥x'对不同的(随机生成的)诱导消息m'进行签名产生不同的功率简档。因此,通过执行功率分析,对手能够识别与使用真私钥签名真消息m相关联的功率简档。然后,对手可以选择正确的线性方程以用于评估真正的私钥x。例如,参考如图6所标识的真泄漏和诱导泄漏,对于随机生成的诱导私钥x'和/或诱导消息m',如果m1=m2=m3,则真泄漏leak12=leak
22
=leak
32
,而诱导泄漏leak
11
、leak
21
、leak31不相等(例如,具有通常可以忽略的相等概率)。
[0052]
在一些实施例中,可以将信息泄漏缓解应用于ecies。与关于ecdsa的信息泄漏减轻有关的前述描述通常适用于ecies,这里提供了差异和其他描述的示例。例如,密钥可以通过椭圆曲线diffie-hellman(ecdh)交换(例如,一次ecdh)。由于消息的加密可以由发送者使用公钥执行,已加密的消息的解密可以由接收者使用相应的私钥执行,因此如果对手知道受攻击装置的秘密密钥,则对手可以解密由受攻击装置发送的加密消息。
[0053]
在一个方面中,信息泄漏减轻可用于解决ecie上的侧信道攻击,例如差分功率分析(dpa)攻击。对手可以在许多协议运行中对固定d和许多不同的p值执行应用于ecsm操作q=dp的dpa。例如,对手可能希望从装置恢复秘密/私钥x,并且可能知道与秘密密钥x相对应的公钥y。对手可以使用ecie和公钥y来生成消息m,并将消息m提供给装置,装置可以对该消息m进行解密(例如,使用也由对手提供的短暂公钥)。对手可以在装置解密期间观察功率简档,并在多次协议运行中编译泄漏的信息。
[0054]
图7提供了根据本公开的实施例的用于促进ecies的信息泄漏减轻的伪码。伪码提供响应于ecies解密请求而执行的操作,用于使用私钥x和短暂公钥r来解密已加密的消息以获得消息m。在一些方面,伪码可以通过固定功能硬件、通过在硬件资源上执行的代码、和/或通过固定功能硬件和可编程硬件的组合来实现。(例如,由随机数生成器)确定/生成表示为“order”的随机数。“order”表示执行两个ecies解密操作的顺序。诱导私钥x'可以通过在私钥x上应用哈希函数来生成,如x'=hash(x)所示。可基于短暂公钥r生成诱导短暂公钥r'。在一些方面,如图8所示,诱导私钥m'和诱导短暂公钥r'是确定性的,而不是随机的。
[0055]
执行两个ecies解密操作。一个ecies解密操作用(x,r)执行,另一个用(x',r')执行。解密操作以随机顺序执行,例如根据随机调用顺序。这个随机顺序由表示为“order”的生成随机数指示。在一个方面,随机数可以是真随机数或伪随机数。在图7中,如果“order”的值为0,则基于私钥x和短暂公钥r执行第一ecies解密操作以获得消息m。在执行第一ecies解密操作之后,基于诱导私钥x'和诱导短暂公钥r'执行第二ecies解密操作,以获得诱导签名m'。如果“order”的值为1,则基于诱导私钥x'和诱导短暂公钥r'执行第一ecies解密操作,以获得诱导消息m'。在执行第一ecies解密操作之后,基于私钥x'和短暂公钥r执行第二ecies解密操作以获得消息m。在一些情况下,诱导短暂公钥r'可能不是有效点。在执行两个ecies解密操作之后,响应于ecies解密请求返回消息m。
[0056]
在一些方面,诱导私钥x'的生成是可选的。当没有使用诱导私钥x'时,图7中的x'的每个实例都可以用x替换。例如,装置可以在uds模式下操作(例如,有选择地操作或固定地操作)。在uds模式下,ecies函数使用唯一装置密钥,不接受其他密钥(如诱导私钥)作为有效输入。在其他模式中,可以(例如,但在一些实现中不需要)为ecies生成/使用诱导私钥x'。
[0057]
对于给定的ecies解密请求,对手可以为两个ecies解密操作中的每一个获得一个功率简档。就这一点而言,对手为每个协议运行捕获两个功率简档,这两个功率简档不能相互区分哪个是真的,哪个是诱导。这些功率简档可以与受攻击装置在ecies解密操作期间执行的ecsm操作相关联。根据图7中的“order”,与ecies解密操作中的一个相关联的泄漏信息与私钥x和短暂公钥r相关联,而剩余的泄漏信息与ecies解密操作中的另一个相关联,与诱导私钥x'(当使用时)和诱导短暂公钥r'相关联。这会导致对手为每个ecies解密请求生成一对公式。如上面关于ecdsa所描述的,对手只需要选择那些与真泄漏相关联的公式,以便
确定私钥x。
[0058]
图8示出了根据本公开的实施例的用于促进与椭圆曲线操作相关联的信息泄漏减轻的示例过程800的流程图。应注意一个或多个操作可以根据需要组合、省略和/或以不同的顺序执行。在一个实施例中,过程800可以由图1的计算装置105、110和/或115中的任何一个执行。
[0059]
在框805,生成随机数。随机数设置执行两个椭圆曲线操作的顺序。在一个方面,两个操作可以包括两个椭圆曲线乘法操作,例如两个ecsm操作。ecsm操作可以作为签名操作(例如,ecdsa签名操作)或编码操作(例如,ecies解密操作)的一部分来执行。例如,如公式(1)所示,ecdsa操作可以包括ecsm操作以计算曲线点(u,v)

[k]p,其中k是随机数,而p是椭圆曲线基点。曲线点(u,v)依次用于确定ecdsa签名(r,s)(例如,根据上面提供的公式(2)和(3))。
[0060]
在框810,基于数据生成诱导数据。在一个方面,基于(例如,确定地从其导出)数据确定地生成诱导数据。例如,可以通过对数据应用哈希函数来生成诱导数据。在ecdsa中,数据可以包括消息m和私钥x,诱导数据可以包括诱导消息m'和诱导私钥x'(例如,在uds模式以外的模式下)。作为非限制性示例,诱导消息m'可以基于消息m确定地生成,并且诱导私钥x'(当使用时)可以基于私钥x确定地生成。在ecies中,数据可以包括私钥x和短暂公钥r,诱导数据可以包括诱导私钥x'(当使用时)和诱导短暂公钥r'。
[0061]
在框815,基于数据执行第一操作。在框820,基于诱导数据执行第二操作。在一些情况下,还可以基于数据的一部分来执行第二操作。例如,在ecdsa中,第一操作可以基于消息m和私钥x'执行。第二操作可以基于诱导消息m'和私钥x'(例如,真数据的一部分)来执行。执行第一操作和第二操作的顺序基于在框805中生成的随机数。在一个方面,随机数可以是真随机数或伪随机数。随机数可能有50%的概率为0和50%的概率为1。在一种情况下,如果随机数为0,则在第二次操作之前执行第一次操作。如果随机数为1,则在第一次操作之前执行第二次操作。
[0062]
在一个实施例中,过程800可用于促进ecdsa的信息泄漏减轻。所述操作可以是作为ecdsa操作的一部分执行的椭圆曲线乘法操作(例如,ecsm操作)。参照框810,数据包括消息m,诱导数据包括基于消息m生成的诱导消息m'。在一些情况下,数据还可以包括私钥x,诱导数据还可以包括诱导私钥x'。在一个方面,可以将哈希函数应用于消息m以获得诱导消息m',和/或可以将哈希函数应用于私钥x以获得诱导私钥x'。在框815,可以执行与第一ecdsa签名操作相关联的第一椭圆曲线乘法操作。可以基于消息m和私钥x来执行第一ecdsa签名操作,以对消息m进行签名。在框820,可执行与第二ecdsa签名操作相关联的第二椭圆曲线乘法操作。可以基于诱导消息m'和诱导私钥x'执行第二签名操作,以对诱导消息m'进行签名。例如,ecdsa签名操作中的ecsm操作可以是将随机数(例如,真随机数或假随机数)与椭圆曲线基点相乘。在一个实施例中,过程800可以根据图3中提供的伪码来实现。
[0063]
在一个实施例中,过程800可用于促进ecies的信息泄漏减轻。所述操作可以是作为ecies操作的一部分执行的椭圆曲线乘法操作(例如,ecsm操作)。参照框810,数据包括私钥x和/或短暂公钥r,诱导数据包括基于私钥x生成的诱导私钥x'和/或基于短暂公钥r生成的诱导短暂公钥r'。在框815,可以执行与第一解密操作相关联的第一椭圆曲线乘法操作。可以执行第一解密操作以基于私钥x和短暂公钥r进行解密以获得消息m。在框820,可执行
与第二解密操作相关联的第二椭圆曲线乘法操作。可以执行第二解密操作,以基于诱导私钥x'和诱导短暂公钥r'进行解密,以获得诱导消息m'。例如,ecies操作中的ecsm操作可以是将私钥(例如,真私钥或诱导私钥)和短暂公钥(例如,真短暂公钥或诱导短暂公钥)相乘。在一个实施例中,过程800可以根据图7中提供的伪码来实现。
[0064]
图9示出了根据本公开的一个或多个实施例的示例计算装置900,其中可以实现数据签名、数据加密/解密和数据通信。然而,并非所有所示的组件都是必需的,并且一个或多个实施例可以包括图中未示出的附加组件。在不脱离本文所述权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。可以提供附加组件、不同组件和/或更少组件。在一个实施例中,计算装置900可以是图1的计算装置105、110或115中的任何一个,可以包括图1的计算装置105、110或115中的任何一个,或者可以是图1的计算装置105、110或115中的任何一个的一部分。在一个方面,图9中的虚线框可以表示计算装置900的外壳。
[0065]
计算装置900包括处理电路905、通信电路910、一个或多个装置接口915、存储器920和总线925。总线925可用于促进计算装置900的各种组件之间的数据通信。
[0066]
处理电路905可以执行存储在存储器920中的机器可读指令(例如,软件、固件或其他指令)。在一个实施例中,处理电路905可以执行指令以执行本文描述的处理,例如图3、图7和图8中提供的示例处理。处理电路905可以是、可以包括计算装置900中的一个或多个逻辑电路,或者可以是计算装置900中的一个或多个逻辑电路的一部分。这样的逻辑电路可用于执行签名逻辑(例如,ecdsa签名操作)和加密/解密逻辑(例如,ecies解密操作)。作为非限制性示例,处理电路905可以应用哈希函数,生成真随机数和/或伪随机数(例如,选择随机数,确定执行椭圆曲线操作的顺序等),并执行椭圆曲线操作。处理电路905可以实现为一个或多个微处理器、微控制器、专用集成电路(asic)、可编程逻辑器件(pld)(例如,现场可编程门阵列(fpga)、现场可编程芯片系统(fpsc)或其他类型的可编程器件)、编解码器和/或其他处理装置。
[0067]
通信电路910可以被配置为处理、管理或以其他方式促进计算装置900的各种组件之间以及计算装置900与另一计算装置之间的有线和/或无线通信。通信电路910可以包括无线通信电路(例如,基于ieee 802.11标准、bluetooth
tm
标准或其他无线通信标准)、蜂窝电路或其他适当的通信电路。在一些情况下,通信电路910可以被配置用于专有无线通信协议和接口。通信电路910可以包括用于无线通信的天线,或者可以与用于无线通信的天线通信。在一个实施例中,通信电路910可以通过建立到手持装置、基站、无线路由器、集线器或其他无线联网装置的无线链路来处理、管理或以其他方式促进无线通信。
[0068]
通信电路910可以被配置为与有线网络接口,例如经由以太网接口、电力线调制解调器、数字用户线(dsl)调制解调器、公共交换电话网络(pstn)调制解调器、电缆调制解调器和/或用于有线通信的其他适当组件。可替代地或另外,通信电路910可以支持专有的有线通信协议和接口。通信电路910可以被配置为通过有线链路(例如,通过网络路由器、交换机、集线器或其他网络装置)进行通信,以实现有线通信的目的。有线链路可以用电力线电缆、同轴电缆、光纤电缆或支持相应有线网络技术的其他电缆或电线来实现。
[0069]
装置接口915可以包括一个或多个输出装置接口和/或一个或多个输入装置接口。输出装置接口可以包括图形和/或音频驱动卡、图形和/或音频驱动芯片、和/或图形和/或音频驱动处理器。输出装置可以使计算装置900能够向用户提供输出信息。例如,输出装置
可以包括一个或多个显示装置。显示装置可用于向用户显示信息,例如在计算装置900上运行的web浏览器应用程序中的web内容。例如,这样的web内容可以由服务器装置加密并传输到计算装置900。计算装置900可以解密已加密的web内容并在显示装置上显示解密的web内容以供用户观看。
[0070]
输入装置接口可以将计算装置900耦接到一个或多个输入装置。输入装置可以使用户能够向计算装置900提供(例如,输入)数据和命令。例如,输入装置可以包括音频传感器、麦克风、照相机、键盘(例如,物理或虚拟键盘)、光标控制装置(例如,鼠标)、触摸屏和/或用于向计算装置900提供用户输入的其他装置。在一些情况下,输入装置可以与显示器集成并且也可以是显示器的一部分,例如在触摸屏显示器中。
[0071]
存储器920可用于存储用于促进计算装置900的操作的信息。通过非限制性示例的方式,存储器920可以包括非易失性存储器,例如只读存储器(rom)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程(eeprom)、闪存、非易失性随机存取存储器(nvram)等。存储器920可以包括易失性存储器,例如随机存取存储器(ram)、动态ram(dram)、静态ram(sram)等。存储器920可以存储信息,例如要由计算装置900的各种组件(例如,处理电路905)执行的指令,要传输的缓冲信息(例如,由通信电路910)传输的缓冲信息,例如加密数据和/或其他信息。
[0072]
存储器920可以存储各种资源(例如,软件包),诸如操作系统、用户应用程序和安全相关应用程序。操作系统可以管理计算装置900的资源(例如,硬件资源),并为其他程序(例如,用户应用程序和/或安全相关应用程序)提供公共服务。通过非限制性示例,用户应用程序可以包括web浏览应用程序、字处理应用程序、电子邮件应用程序、销售点应用程序和/或其他应用程序。安全相关应用程序可以包括数字签名应用程序(例如,用于生成数字签名,例如根据一个或多个实施例使用ecdsa)和加密/解密应用程序(例如,用于加密/解密数据,例如根据一个或多个实施例使用ecies)。作为非限制性示例,安全相关应用程序可以包括用于促进数据的加密和解密、应用哈希函数(例如sha-1)、公钥/私钥对生成、ecdsa认证、真随机数生成和/或其他安全服务的指令。
[0073]
因此,在一个或多个实施例中,根据本公开的方法和系统可以与依赖于ecsm的椭圆曲线操作一起使用。方法和系统可以使用从操作中使用的其他值(例如,密钥和消息)确定地导出的值来执行诱导计算。诱导和真/实计算以随机顺序执行。因此,对于监视计算的对手,计算可以返回彼此不同的功率简档,并且不能区分哪个是诱导哪个是真的。
[0074]
在一个或多个实施例中,提供了一种执行涉及ecsm的椭圆曲线操作的装置。该装置可以包括控制逻辑(例如,作为处理电路905的一部分),其提供与真密钥(例如,真私钥)相关联的确定性诱导密钥和与真消息相关联的确定性诱导消息。该装置还可以包括椭圆曲线逻辑(例如,作为处理电路905的一部分),其执行椭圆曲线操作(例如,ecdsa签名,ecies解密)。控制逻辑使椭圆曲线逻辑以随机顺序执行真椭圆曲线操作和诱导椭圆曲线操作,并返回真椭圆曲线操作的结果。椭圆曲线逻辑使用真密钥和真消息执行真椭圆曲线操作,并且使用诱导密钥和诱导消息执行诱导椭圆曲线操作。
[0075]
在一个或多个实施例中,提供了一种用于执行涉及ecsm的椭圆曲线操作的方法。该方法可以包括提供与真密钥相关联的确定性诱导密钥和与真消息相关联的确定性秘密消息。该方法还可以包括以随机顺序执行使用真密钥和真消息的真椭圆曲线操作和使用诱
导秘密消息的诱导椭圆曲线操作。该方法还可以包括返回真椭圆曲线操作的结果。
[0076]
在一个或多个实施例中,提供了一种非暂态介质,其存储用于使机器执行上述方法的计算机可执行代码。
[0077]
在一个或多个实施例中,系统包括上述装置和存储用于使机器执行上述方法的计算机可执行代码的非暂态介质。
[0078]
在适用的情况下,本公开提供的各种实施例可以使用硬件、软件或硬件和软件的组合来实现。同样,在适用的情况下,在不脱离本公开的精神的情况下,本文所述的各种硬件组件和/或软件组件可以组合成包括软件、硬件和/或两者的复合组件。在适用的情况下,在不脱离本公开的精神的情况下,本文所述的各种硬件组件和/或软件组件可以被分离成包括软件、硬件或两者的子组件。此外,在适用的情况下,设想软件组件可以实现为硬件组件,反之亦然。
[0079]
根据本公开的软件,例如程序代码和/或数据,可以存储在一个或多个非暂态机器可读介质上。还可以设想,本文所标识的软件可以使用一个或多个通用或专用计算机和/或计算机系统、联网和/或以其他方式来实现。在适用的情况下,可以改变本文描述的各种步骤的顺序,将其组合成复合步骤,和/或将其分离成子步骤,以提供本文描述的特征。
[0080]
上面描述的实施例说明但不限制本发明。还应理解,根据本发明的原理,许多修改和变化是可行的。因此,本发明的范围仅由所附权利要求限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1