掌桥专利:专业的专利平台
掌桥专利
首页

恒定时间的安全的算术到布尔掩码转换

文献发布时间:2023-06-19 11:21:00


恒定时间的安全的算术到布尔掩码转换

附图说明

本公开将从下面给出的详细描述以及本公开的各种实施方式的附图来更加完整地理解。

图1图示了根据一些实施例的使用掩码值转换组件以用于密码操作的示例设备。

图2是根据一些实施例的掩码值转换组件的框图,掩码值转换组件用于分别提供从布尔掩码值到算术掩码值的转换、以及从算术掩码值到布尔掩码值的转换,以用于密码操作。

图3是根据本公开的一些实施例的示例方法的流程图,示例方法用于执行算术掩码值到布尔掩码值的转换,以用于密码操作。

图4图示了根据本公开的一些实施例的运算的系列,用于以加法方式执行算术掩码值到布尔掩码值的转换,以用于密码操作。

图5图示了根据本公开的一些实施例的运算的另一系列,用于以减法方式执行算术掩码值到布尔掩码值的转换,以用于密码操作。

图6图示了在其中本公开的一些实施例可以操作的计算机系统的实施例的框图。

具体实施方式

本公开的各方面针对将算术掩码值(也被称为初始密码值)安全地转换为布尔掩码值(也被称为经修改的密码值)以用于密码操作。集成电路可以执行密码操作,该密码操作可能导致集成电路容易受到边信道攻击,在边信道攻击中,攻击者(例如,未授权实体)在密码操作被执行时可以获得信息。边信道攻击的示例包括但不限于差分功率分析(DPA),在差分功率分析(DPA)中,试图获得密码操作中使用的秘密密钥的攻击者在密码操作被执行时,可以研究功率资料(power profile)中的差异(即,功率消耗模式)。攻击者可以是未授权实体,其可以通过分析集成电路在一段时间内的功率谱测量结果,来获得对密码操作的输入(例如,秘密密钥)。因此,当发送方通过经由密码操作对明文进行加密,来将密文传送给接收方时,在密码操作被执行以将明文加密为密文时,攻击者可以能够通过观察集成电路的功率资料,来取回秘密密钥,秘密密钥被用于将明文加密为密文。例如,在密码操作由集成电路执行时,攻击者可以发现被用来加密明文的密码(例如,秘密或私有)密钥。

掩码处理可以被使用,以利用随机数据来模糊或隐藏对密码操作的输入,然后密码操作可以利用经掩码的输入来被执行。当集成电路的攻击者在执行密码操作时观察集成电路的功率资料时,这种掩码处理可以使得密码操作的中间状态或值与随机数据不可区分(即,通过掩码而“蒙蔽”)。例如,在密码操作将明文编码为密文之前,明文可以经受利用随机数的布尔运算(诸如,异或(XOR)运算),该随机数表示掩码。备选地,在密码操作将明文编码为密文之前,明文可以经受利用数字的算术运算(诸如加法运算),该数字表示掩码。作为示例,对于输入x,与输入x相对应的布尔掩码值可以是表示

在利用掩码值执行密码操作期间,某些密码操作可以使用布尔运算(例如XOR、AND、OR等)和算术运算(例如加法、减法等)两者。密码操作可以基于算术掩码值来执行第一运算(或第一组运算),并且后续可以基于布尔掩码值来执行第二运算(或第二组运算)。因此,为了执行布尔运算,算术掩码值可能需要被转换为布尔掩码值。算术掩码值到布尔掩码值之间的转换(“A2B”掩码转换)可能需要是安全的,以便转换不会导致某种DPA泄漏(例如,攻击者从集成电路的功率资料中的可观察差异标识信息)。DPA泄漏可以导致攻击者在执行A2B掩码转换时,能够获得密码操作中使用的秘密密钥(或依赖于秘密密钥的数据)。

存在许多将布尔掩码转换为算术掩码的解决方案,但存在相对较少的将算术掩码转换为布尔掩码的解决方案。具体地,存在一种用于以恒定时间运行的布尔到算术(B2A)掩码转换的方法,即,该方法需要固定数目的指令,因此该方法独立于输入位大小。但是,基于递归方法的现有算术到布尔(A2B)掩码转换途径取决于输入位大小。如此,A2B掩码转换的效率和安全性不独立于输入字的位长度。

本公开的各方面通过提供安全的A2B掩码转换方法,来解决上述和其他缺陷,该A2B掩码转换方法以恒定时间运行,并且独立于如下处理设备的输入位大小,该处理设备处理用于A2B掩码转换的固定数目的指令。该转换可以被执行并且可以在集成电路中被实现,以防止DPA泄漏,DPA泄漏允许攻击者取回对密码操作的与秘密密钥有关的输入(例如,未经掩码的值)。此外,转换可以利用较少数目的运算而被执行。因此,在算术掩码值要被转换为布尔掩码值时,本公开的各方面向执行密码操作的集成电路提供了附加的安全性,以及在密码操作的性能上的增加的效率(例如,较少的计算时间)。

术语“安全”掩码转换在这里涵盖相对于单变量攻击和多变量攻击的安全操作。利用功率资料中的单个采样点的攻击被称为单变量攻击。另一方面,例如通过将两个以上的采样点相加或相乘在一起而组合两个以上的采样点的攻击被称为多变量攻击。

如本领域技术人员将理解的,在较低阶的统计矩不泄漏信息的“安全”操作在较高阶的统计矩被攻击时可能变得不安全,即脆弱。本文公开的A2B掩码转换方法被证明,至少相对于单变量一阶统计矩攻击是安全的。该方法还可以被扩展以用于多变量和/或较高阶的安全实现。本领域技术人员应当理解,许多实践实例要求以仅较低阶(例如,一阶)的安全性,因为由于噪声水平增加,对较高阶统计矩的采用对于攻击者来说是困难的。

本文公开的方法的附加优点是该方法不要求“预先计算”,并且因此不要求附加存储器来存储预先计算的中间值。该特征使所公开的方法与现有的基于“查找表”的方法不同。该方法可以按软件或硬件和软件的组合来被实现。本领域技术人员应当理解,在理想的计算机上实现本文描述的算法确保了解决方案是防泄漏的,即,解决方案的每个中间值在统计上独立于秘密(未经掩码的)数据。当在真实计算机上被实现时,信息泄漏的可能性理论上会增加。如此,计算机中可能需要附加硬件来应对泄漏。

所公开的方法还按更少的计算步骤或运算来实现A2B转换。下表将本公开与当前现有的A2B转换方法进行了比较,其中列3至列6中的数字表示针对某些输入位长度,A2B转换所要求的运算的数目。

表1

如上面可以看到,本公开的方法以比现有方法更少的计算运算,来实现A2B转换。因此,本公开的方法本质上更高效。

图1图示了根据本公开的一些方面的包括掩码值转换组件的示例设备。设备100可以包括集成电路,该集成电路与掩码值转换组件111、存储器112和密码组件113相关联。集成电路的掩码值转换组件111可以接收算术掩码输入值,并且可以将算术掩码输入值转换为布尔掩码输入值,以在由密码组件113执行的密码操作中使用。

如图1中所示,设备100可以包括掩码值转换组件111,掩码值转换组件111可以执行A2B掩码转换或B2A掩码转换。掩码值组件111可以进一步接收随机生成的数字。例如,在一些实施例中,存储器112可以被用来存储由随机数生成组件所生成的随机生成数,并且所存储的随机数可以由掩码值转换组件111取回。在相同或备选实施例中,掩码值转换组件111可以从随机数生成组件接收随机数,而无需将随机数存储在存储器112中。密码组件113随后可以在密码操作中使用掩码输入值。这样的密码操作的示例包括但不限于:生成数字签名来认证设备100或设备100的组件,加密或解密数据,对消息进行哈希操作等。此外,密码组件113可以基于掩码输入值执行密码操作。这样的密码操作的示例可以基于但不限于:安全哈希算法(SHA)-1、SHA-2、流密码族Salsa和ChaCha、国际数据加密算法(IDEA)、RivestCipher 6(RC6)、扩展微型加密算法(XTEA)等。

密码组件113可以执行密码操作。密码操作可以在某个点处从算术运算转换为布尔运算。由于基于算术运算的密码操作的部分产生算术掩码值,因此该掩码值可能首先需要被转换为布尔掩码值,使得另外的布尔运算随后可以被执行。关于将算术掩码输入值转换成布尔掩码输入值的另外细节将结合图3来描述。

图2是根据本公开的一些方面的掩码值转换组件200的框图,其用于将算术掩码输入值转换成布尔掩码输入值。掩码值转换组件200可以对应于图1的掩码值转换组件111。此外,掩码值转换组件200可以由处理逻辑实现或在处理逻辑中被实现,处理逻辑包括硬件(例如,处理设备、电路装置、专用逻辑、可编程逻辑、微代码、集成电路、设备的硬件等)、软件(例如,在处理设备上运行或执行的指令)或其组合。在一些实施例中,掩码值转换组件200可以包括份额接收器子组件210、转换指示器子组件220、随机数生成器子组件230、转换器子组件240、组合子组件250,以及输出掩码值子组件260。在备选实施例中,子组件中的一个或多个子组件的功能可以被组合或被划分。

如图2中所示,掩码值转换组件200可以包括份额接收器子组件210,份额接收器子组件210可以接收与掩码输入值相对应的份额(share)。对于算术运算,份额为算术份额。对于布尔运算,份额为布尔份额。份额可以是输入份额、针对中间值的份额和/或输出份额。掩码值转换组件200可以接收与掩码输入值相对应的两个或更多个份额。例如,通过将值“x”与掩码值“r”组合,基础秘密值“x”可以进行掩码处理。值“x”与掩码值的组合可以是第一份额。掩码值本身可以是第二份额。附加的随机数可以被添加到已利用第一掩码值“r”进行掩码处理的原始值中。

掩码值转换组件200还可以包括转换指示器子组件220,转换指示器子组件220可以接收密码组件正执行或将要执行基于布尔运算的密码操作的指示,该密码组件已基于算术运算执行了密码操作。响应于接收到该指示,份额接收器子组件210可以从包括掩码值转换组件200的设备的存储器或另一组件接收输入份额。随机数生成器子组件230可以生成用于在A2B转换中使用的随机数。

此外,转换器子组件240可以通过转换所接收的份额中的一个或多个份额,来执行算术到布尔运算。组合子组件250可以组合多个值(例如,处于其原始算术形式的输入份额、A2B转换之后的输入份额、以及随机生成的数字)以生成输出份额。作为非限制性说明性示例,组合子组件250可以执行算术加法运算、布尔XOR运算和/或算术减法运算,以在运算的序列的末端处,最后生成至少两个布尔输出份额。注意的是,针对中间值的份额可以处于算术形式或布尔形式。输出掩码值子组件260从组合子组件250接收最终布尔输出份额,并且使用那些最终布尔输出份额,来生成输出掩码值(布尔)。最终输出掩码值可以被提供给在最终输出掩码值上执行另外的密码操作的密码组件。

图3是示例方法300的流程图,示例方法300用于执行算术掩码值到布尔掩码值的转换,以用于密码操作。方法300可以由处理逻辑执行,处理逻辑包括硬件(例如,处理设备、电路装置、专用逻辑、可编程逻辑、微代码、设备的硬件、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或其组合。在一些实施例中,方法300可以由图1的掩码值转换组件111或图2的掩码值转换组件200执行。

再次参考图3,方法300在框310处开始,其中以下指示(例如,在转换指示器子组件220处)被接收到:使用算术运算而被创建的初始密码值(即,经掩码的基础秘密值)要被转换为经修改的密码值,经修改的密码值与布尔运算兼容。这通常是规程的一部分,并且因此,子函数被称为更大运算的一部分。也就是说,当取决于基础密码原语,我们需要从使用算术运算改变为使用布尔运算时,子函数A2B被调用。例如,初始密码值可以是x”=(x+r),其中经修改的密码值可以是

在框320处,例如,在正在进行的密码操作期间的某个点处,第一算术输入份额和第二算术输入份额在份额接收器子组件210处被接收。注意的是,第一算术输入份额和第二算术输入份额的组合生成初始密码值。第一算术输入份额和第二算术输入份额中的每项具有与初始密码值的位长度相同的位长度。

在框330处,随机数(例如,在随机数生成器230处)生成,其位长度与第一算术输入份额和第二算术输入份额的位长度相同。

在框340处,运算的序列使用算术输入份额和随机数来执行。第一布尔输出份额和第二布尔输出份额在框340处执行的运算的序列的末端处被生成。这些运算可以在转换器子组件240以及组合子组件250中被执行。运算的示例序列在图4和图5中被示出。运算的序列中的当前运算生成对应中间值(如图4和图5中所示),该对应中间值在运算的序列的后续运算中被使用。在本文公开的运算的序列期间,中间值中的每个中间值或中间值的任何组合在统计上独立于与基础秘密值。因此,预期没有直接值泄漏。

在框350处,布尔运算(诸如,XOR运算)对第一布尔输出份额和第二布尔输出份额(从框340接收)独立地执行,以创建经修改的密码值。例如,经修改的密码值可以是

在一些实施例中,A2B掩码转换可以通过如关于图4所图示的运算的序列,而以加法的方式来执行。例如,运算的序列可以包括22个计算运算。在备选实施例中,A2B掩码转换可以通过如关于图5所图示的运算的序列,而以减法的方式来执行。如图5中所看到的,最快的算法需要仅21个指令,即输出布尔份额在21个步骤中被生成。如上面的表1中所示,所有现有的A2B转换方法都要求远远多于21个步骤。

如上所述,本公开的各方面支持在恒定时间内进行A2B掩码转换,即,A2B掩码转换使用固定数目的指令来完成。恒定时间操作的优点是A2B转换独立于输入位长度。输入位长度可以是任意的。取决于所使用的微处理器,输入位长度的非限制性示例是一个字或几个字,例如32位或64位。

如本领域技术人员将理解的,用于B2A掩码转换的高效方式是利用以下通用仿射函数

通常,B2A转换如下工作:

这里,γ是用以对B2A转换进行掩码处理的附加随机值。该附加随机值可以例如在方法300中的框330处被生成。

该转换可以被如下逆变换:

这里,

然而,上述等式的两个内部项揭示了关于基础秘密值‘x’的信息,即,在A2B转换期间去往攻击者的泄漏信息。例如,考虑第一内部项:

这里,c

如果x=0,则第一内部项变为零。这被称为零值问题,针对x=0,这存在泄漏信息的风险,因为涉及x=0的某些运算的结果将始终为零,并且零的传播对于潜在的攻击者是可见的。如果x≠0,则x至少在一阶统计矩不泄漏信息。在运算的序列之前和之后的附加运算被执行,以使转换相对于零值问题一阶安全。例如,当算术掩码值是(x+r)时,x可以被选取为奇数,并且当算术掩码值是(x-r)时,x可以被选择为偶数。

针对x=0的在一阶处的零值问题可以通过保证x仅是奇数来解决。为了确保x为奇数,x”的最低有效位(LSB)被固定为1,而无需改变掩码“r”的值。这可以通过计算以下来完成:

掩码然后通过以下来校正:执行安全的B2A运算,以将x的LSB的补码添加到x”

在掩码校正之后,安全的A2B转换通过(如图4和图5中所示的)运算的序列来执行。通过利用x”的LSB来替换最终运算的输出的LSB(注意,x’和x”的LSB相同),A2B转换的结果被进一步校正。通过完成掩码校正的这些附加步骤,本公开的A2B掩码转换方法被确保相对于第一阶单变量攻击是安全的。

图6图示了计算机系统600的示例机器,在该系统内可以执行用于使机器执行本文讨论的任何一种或多种方法的一组指令。在备选实现方式中,机器可以连接至(例如,联网至)LAN、内联网、外联网和/或互联网中的其他机器。机器可以在客户端-服务器网络环境中的服务器或客户端机器的容量中进行操作,作为对等网络(或分布式)网络环境中的对等机器进行操作,或者作为云计算架构或环境中的服务器或客户端机器进行操作。

机器可以是个人计算机(PC)、桌上型PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络应用、服务器、网络路由器、交换机或网桥,或者能够(顺序或以其他方式)执行一组指令的任何机器,该一组指令指定将由该机器进行的动作。此外,虽然示出了单个机器,但术语“机器”还应该包括任何机器的集合,其单独或联合地执行一组(或多组)指令,来执行本文讨论的任何一种或多种方法学。

示例计算机系统600包括处理设备602、主存储器604(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM),诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器606(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备618,它们经由总线630相互通信。

处理设备602表示一个或多个通用处理设备,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超出指令字(VLIW)微处理器、或者实现其他指令集的处理器、或者实现指令集的组合的处理器。处理设备602还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备602可以被配置为执行指令626,以用于执行本文讨论的操作和步骤。

计算机系统600可以还包括网络接口设备608,以通过网络620进行通信。计算机系统600还可以包括视频显示单元610(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备612(例如,键盘)、光标控制设备614(例如,鼠标)、图形处理单元622、信号生成设备616(例如,扬声器)、图形处理单元622、视频处理单元628和音频处理单元632。

数据存储设备618可以包括机器可读存储介质624,(还被称为计算机可读介质),在其上存储有一组或多组指令或软件626,其实现为文描述的方法学或功能中的任何一种或多种。指令626还可以在通过计算机系统600执行期间,完全或至少部分地驻留在主存储器604内和/或处理设备602内,主存储器604和处理设备602还组成机器可读存储介质。

在一个实现方式中,指令626包括实现对应于掩码值转换组件(例如,图1的掩码值转换组件111或图2的掩码值转换组件200)的功能性的指令。虽然机器可读存储介质624在一个示例实现方式中被示为单个介质,但术语“机器可读存储介质”应该包括单个介质或多个介质(例如,中央或分布式数据库,和/或相关联的高速缓存和服务器),其存储一组或多组指令。术语“机器可读存储介质”还应该包括能够存储或编码一组指令的任何介质,该一组指令用于由机器执行,并且使机器执行本公开的方法学的任何一种或多种。术语“机器可读存储介质”应该相应地包括但不限于固态存储器、光学介质和磁性介质。

先前的具体实施方式的一些部分已按照对计算机存储器内的数据位的运算的算法和符号表示而呈现。这些算法描述和表示是数据处理领域技术人员所使用的方式,以最有效地将它们的工作的实质传达给本领域其他技术人员。算法是在这里以及在通常情况下理解为生成期望结果的操作的前后一致的序列。操作是要求对物理量的物理操纵的那些操作。通常,尽管不是必须的,但这些量采用能够被存储、组合、比较和以其他方式进行处理的电信号或磁信号的形式。已被证明有时便利的是,主要由于公共使用的原因,将这些信号称为位、值、元素、符号、字符、项、数等。

然而,应该意识到,所有这些和类似术语将与适当的物理量相关联,并且仅是应用于这些量的便利标签。从上文讨论明显看出,除非另有明确指定,否则应该理解,在整个说明书中,利用诸如“标识”或“确定”或“执行”或“进行”或“收集”或“创建”或“发送”等的术语的讨论表示计算机系统或类似电子计算设备的动作和处理,它们将计算机系统的寄存器和存储器内表示为物理(电子)量的数据处理和转换成其他数据,其他数据类似地被表示为计算机系统存储器或寄存器或其他这些信息存储设备内的物理量。

本公开还涉及用于执行本文的操作的装置。该装置可以专门构建为用于期望的目的,或者其可以包括通用计算机,该通用计算机通过存储在计算机中的计算机程序而被选择性激活或重配置。这种计算机程序可以存储在计算机可读存储介质中,诸如但不限于任何类型的盘(包括软盘、光盘、CD-ROM和磁-光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROMM、磁卡或光学卡,或者适合于存储电子指令的任何类型的介质,上述每项均耦合至计算机系统总线。

本文呈现的算法和显示不是固有地与任何特定的计算机或其他装置相关。根据本文的教导,各种通用系统可以被程序被使用,或者可以证明便利的是构建较专用化的装置来执行方法。用于各种这些系统的结构将在以下的描述中明显地阐述。此外,本公开不参考任何特定的编程语言来描述。应当理解,各种编程语言可用于实现本文描述的公开的教导。

本公开可以被提供为计算机程序产品或软件,其可以包括机器可读介质,机器可读介质具有存储于其上的指令,指令可用于对计算机系统(或其他电子设备)进行编程来执行根据本公开的处理。机器可读介质包括用于按由机器(例如,计算机)可读取的形式来存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、闪存设备等。

在前面的描述中,本公开的实施方式参考本公开的特定示例实施方式来描述。将明显地,在不背离所附权利要求书阐述的本公开的实施方式的最宽精神和范围的情况,可以进行各种修改。因此,说明书和附图被认为是说明性的而非限制性的。

相关技术
  • 恒定时间的安全的算术到布尔掩码转换
  • 一种算术加法掩码转布尔异或掩码的防护电路
技术分类

06120112893750