CN107437998A - 使用不安全和安全环境计算安全椭圆曲线标量乘法 - Google Patents

使用不安全和安全环境计算安全椭圆曲线标量乘法 Download PDF

Info

Publication number
CN107437998A
CN107437998A CN201710323679.1A CN201710323679A CN107437998A CN 107437998 A CN107437998 A CN 107437998A CN 201710323679 A CN201710323679 A CN 201710323679A CN 107437998 A CN107437998 A CN 107437998A
Authority
CN
China
Prior art keywords
mrow
individual
elliptic curve
point
msub
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.)
Granted
Application number
CN201710323679.1A
Other languages
English (en)
Other versions
CN107437998B (zh
Inventor
乔普·威廉·波斯
阿蒂尔·塔德乌什·伯查德
简·胡格布鲁格
威赫穆斯·P·A·J·米歇尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP BV
Original Assignee
NXP BV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NXP BV filed Critical NXP BV
Publication of CN107437998A publication Critical patent/CN107437998A/zh
Application granted granted Critical
Publication of CN107437998B publication Critical patent/CN107437998B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7242Exponent masking, i.e. key masking, e.g. A**(e+r) mod n; (k+r).P
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7252Randomisation as countermeasure against side channel attacks of operation order, e.g. starting to treat the exponent at a random place, or in a randomly chosen direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种用于在不安全环境中安全地计算椭圆曲线标量乘法的系统,所述系统包括:包括安全存储器的安全处理器,所述安全处理器被配置成:将安全标量K分解成m2个随机值ki,其中i是整数下标;针对下标m2<i≤m1而随机选择m1‑m2个值ki;选择m1个掩码值δi;基于随机留数ai和kπ(i)来计算m1个留数ci,其中π(i)是随机排列;基于随机留数ai和将被乘的椭圆点来计算m1个椭圆曲线点Gi;接收m1个椭圆曲线点;以及通过组合所述接收的椭圆曲线点的一部分并从所述接收的椭圆曲线点的所述部分去掉所述掩码值δi来计算所述椭圆曲线标量乘法;存储器装置;以及与所述存储器装置通信的处理器,所述处理器被配置成:接收m1个留数ci和椭圆曲线点Gi;基于所述m1个留数ci和椭圆曲线点Gi计算m1个椭圆曲线点Pi;将所述m1个椭圆曲线点Pi发送到所述安全处理器。

Description

使用不安全和安全环境计算安全椭圆曲线标量乘法
技术领域
本文中所公开的各种示例性实施例大体上涉及使用不安全和安全环境安全地计算椭圆曲线标量乘法。
背景技术
当今软件应用程序广泛用于向用户提供各种服务。这些软件应用程序可托管于多种不同装置上,例如,移动电话、个人计算机、手提电脑、平板电脑、机顶盒等。软件应用程序存在于由消费者使用的许多系统中,或存在于工业系统中。软件应用程序还存在于智能卡和信用卡中。此外,软件应用程序可跨越网络(例如因特网)而实施,其中所述软件应用程序在服务器上运行并且使用各种用户装置存取。这些软件应用程序中的许多者需要使用安全协议来保护内容、信息、交易和私密性。许多软件应用程序运行在攻击者完全控制所述软件应用程序的操作的环境中,且攻击者可能尝试对所述软件应用程序的代码进行逆向工程设计以便获得对安全信息的存取权或甚至理解所述软件的操作以便再现或修改所述软件应用程序的功能性。攻击者可能使用各种逆向工程设计工具(例如,代码分析器和调试器)来获得与所述软件应用程序相关的信息。
发明内容
下文呈现对各种示例性实施例的简要概述。以下概述中可能做出一些简化和省略,这意在突出并且介绍各种示例性实施例的一些方面,但不限制本发明的范围。足以允许本领域的一般技术人员做出并且使用发明性概念的示例性实施例的详细描述将在稍后章节呈现。
各种示例性实施例涉及一种用于在不安全环境中安全地计算椭圆曲线标量乘法的系统,所述系统包括:包括安全存储器的安全处理器,所述安全处理器被配置成:将安全标量K分解成m2个随机值ki,其中i是整数下标;针对下标m2<i≤m1而随机选择m1-m2个值ki;选择m1个掩码值δi;基于随机留数ai和kπ(i)来计算m1个留数ci,其中π(i)是随机排列;基于随机留数ai和将被乘的椭圆点来计算m1个椭圆曲线点Gi;接收m1个椭圆曲线点;以及通过组合所接收的椭圆曲线点的一部分并从所接收的椭圆曲线点的所述部分去掉掩码值δi来计算所述椭圆曲线标量乘法;存储器装置;以及与所述存储器装置通信的处理器,所述处理器被配置成:接收m1个留数ci和椭圆曲线点Gi;基于所述m1个留数ci和椭圆曲线点Gi计算m1个椭圆曲线点Pi;将所述m1个椭圆曲线点Pi发送到所述安全处理器。
此外,各种示例性实施例涉及一种用于使用安全处理器和不安全处理器安全地计算椭圆曲线标量乘法的方法,所述方法包括:通过所述安全处理器:将安全标量K分解成m2个随机值ki,其中i是整数下标;针对下标m2<i≤m1随机选择m1-m2个值ki;选择m1个掩码值δi;基于随机留数ai和kπ(i)计算m1个留数ci,其中π(i)是随机排列;基于随机留数ai和将被乘的椭圆点来计算m1个椭圆曲线点Gi;接收m1个椭圆曲线点;以及通过组合所接收的椭圆曲线点的一部分并从所接收的椭圆曲线点的所述部分去掉掩码值δi来计算所述椭圆曲线标量乘法;以及通过所述不安全处理器:接收m1个留数ci和椭圆曲线点Gi;基于m1个留数ci和椭圆曲线点Gi计算m1个椭圆曲线点Pi;将m1个椭圆曲线点Pi发送到所述安全处理器。
此外,各种示例性实施例涉及一种编码有用于使用安全处理器和不安全处理器安全地计算椭圆曲线标量乘法的指令的非暂时性机器可读存储媒体,所述非暂时性机器可读存储媒体包括:用于由所述安全处理器执行的指令,包括:用于将安全标量K分解成m2个随机值ki的指令,其中i是整数下标;用于针对下标m2<i≤m1随机选择m1-m2个值ki的指令;用于选择m1个掩码值δi的指令;用于基于随机留数ai和kπ(i)计算m1个留数ci的指令,其中π(i)是随机排列;用于基于随机留数ai和将被乘的椭圆点来计算m1个椭圆曲线点Gi的指令;用于接收m1个椭圆曲线点的指令;以及用于通过组合所接收的椭圆曲线点的一部分并从所接收的椭圆曲线点的所述部分去掉掩码值δi来计算所述椭圆曲线标量乘法的指令;以及用于由所述不安全处理器执行的指令,包括:用于接收m1个留数ci和椭圆曲线点Gi的指令;用于基于m1个留数ci和椭圆曲线点Gi计算m1个椭圆曲线点Pi的指令;用于将m1个椭圆曲线点Pi发送到所述安全处理器的指令。
描述各种实施例,其中所述安全处理器进一步:随机选择m1个留数ai;以及将所述m1个留数ai存储在安全存储器中。
描述各种实施例,其中m1个掩码值δi选自存储在安全存储器中的预先计算的随机值集合。
描述各种实施例,其中基于随机留数ai和将被乘的椭圆点计算m1个椭圆曲线点Gi对于1≤i≤m1被计算成:其中G是椭圆曲线的将被乘的椭圆点,n是所述椭圆点G的乘法阶。
描述各种实施例,其中将安全标量K分解成m2个随机值ki包括针对1≤i<m2-1选择m2-1个随机值ki并且计算其中n是所述椭圆点的乘法阶。
描述各种实施例,其中计算m1个留数cI被计算成kπ(i)mod n,其中n是所述椭圆点的乘法阶。
描述各种实施例,其中计算m1个椭圆曲线点Pi被计算成Pi=ci·Gi
描述各种实施例,其中通过组合所接收的椭圆曲线点的一部分并从所接收的椭圆曲线点的所述部分去掉掩码值δi计算所述椭圆曲线标量乘法被计算成:其中G是所述椭圆曲线的将被乘的椭圆点。
附图说明
为了更好地理解各种示例性实施例,可参看附图,其中:
图1示出用于实施椭圆曲线点乘的硬件图。
为了促进理解,相同附图标号用于指代具有大体上相同或类似结构和/或大体上相同或类似功能的元件。
具体实施方式
描述和图式示出了本发明的原理。因此应了解,本领域的技术人员将能够设计虽然未在本文中明确地描述或示出但体现本发明的原理且包括在本发明原理的范围内的各种布置。此外,本文中所述的所有例子主要明确地意在用于教学目的以辅助读者理解本发明的原理和由本发明人所提供的用于深化本领域的概念,且所有例子应解释为不限于此些具体叙述的例子和条件。此外,除非另外指明(例如,“或另外”或“或在替代方案中”),否则本文所使用的术语“或”是指非排斥性或(即,和/或)。而且,本文所描述的各种实施例未必相互排斥,因为一些实施例可以与一个或多个其它实施例组合以形成新的实施例。
提供安全功能的装置可使用安全处理器装置来提供安全功能。此类装置还可以包括不安全处理器装置。归因于产生安全处理器的成本和复杂度,不安全处理器装置的计算能力与安全处理装置相比可能大很多。在安全处理器装置上运行的密码编译例程因此受限于该安全处理器装置的计算能力,且可能具有较长执行时间。
本文中描述了诸多实施例,其中密码编译算法的大部分计算密集的步骤可被分担到更有力的不安全处理器装置,使得安全处理器装置可稍后仅正确地重建所要结果。
现将描述使用安全处理器和不安全处理器两者来计算椭圆曲线标量乘法的方法。然后将示出该方法可以怎样用于实例化椭圆曲线数字签名算法。此描述采用可视为安全的安全处理器装置(例如,安全元件)和攻击者具有完全存取权的不安全处理器装置。在许多系统中,不安全处理器装置可具有显著好于安全处理器装置的计算能力和性能。
在本文所描述的实施例中,最为耗时的步骤可在不安全处理器装置上执行。然而,为了保持安全,该不安全处理器装置将作用于被模糊或掩蔽的数据,使得观测密码编译操作的攻击者得不到足够信息来计算该计算中所涉及的机密标量。
现将提供椭圆曲线密码术(ECC)的简要描述。令Fp表示素数基数p>3的有限域。任何满足4a3+27b2≠0的a,b∈Fp定义经过Fp的椭圆曲线Ea,b。经过Fp的Ea,b的点群组Ea,b(Fp)被定义为零点∞以及满足短魏尔斯特拉斯(Weierstrass)方程
y2=x3+ax+b (1)
以及以下写成为相加性的分组定律的数对集合(x,y)∈Fp×Fp。对于P∈Ea,b(Fp),定义P+∞=∞+P=P。对于非零P=(x1,y1)和Q=(x2,y2)∈Ea,b(Fp),在x1=x2和y1=-y2的情况下,定义P+Q=∞。否则,P+Q=(x,y)且x=λ2-x1-x2和y=λ(x1-x)-y1,其中
因此,使用这些仿射魏尔斯特拉斯坐标来表示群组元素,倍增(即,P=Q)不同于常规相加(即,P≠Q)。
基于经过有限域的椭圆曲线的该代数结构,可建置公钥密码编译原语。与例如基于RSA的不对称密码编译系统相比,ECC的关键特征中的一者是显著更小的密钥大小。许多ECC协议中最耗时的操作是针对整数k和点P∈E(Fp)的椭圆曲线标量乘法kP。该标量乘法可定义为将该点P自身相加(k-1)次。举例来说,参看下文针对数字签名算法的椭圆曲线变型的算法1,所述算法1由美国国家标准与技术研究所标准化,其中第5步包括椭圆点P的标量乘法。
从20世纪90年代末开始,众所周知,在执行密码编译原语时所获得的功率轨迹的统计分析可能与所使用的机密密钥材料相关,且因此揭示关于该机密密钥材料的信息。此类差分功率分析和更多后续工作是破坏密码编译算法的实施安全性的强大工具。存在许多技术来对抗此类攻击。这些技术可通过提供另外的安全属性来在算法级或者硬件级上起作用。此类旁信道攻击不能够提取机密密钥材料的环境可表示为安全环境。此类专用硬件平台的代价是此类专用硬件平台以比不安全硬件平台低得多的时钟频率执行。
在以下描述中,假设使用被定义经过有限域E(Fp)的椭圆曲线以及素数阶n的生成元G∈E(Fp)。
为了成功地执行计算,安全处理器装置将具有对一些预先计算的数据的存取权,所述数据可被计算成初始化阶段的部分。此数据可按规则间隔刷新,但为本文的描述起见,采用固定的参数集合。
此初始化阶段可采用整数m1>2和t≥m1作为输入,所述整数m1>2和t≥m1控制预先计算的值的数目并且限定稍后在安全与不安全处理器装置之间传输的数据量。给定整数m1和t,可计算随后的值。
●选择m1个随机留数ai∈(Z/nZ)*,使得对于1≤i≤m1,0≤ai<n,并且将所述m1个随机留数ai存储在与所述安全处理器装置相关联的安全环境中。
●选择t个随机留数λi∈(Z/nZ)*,使得对于1≤i≤t,0≤λi<n。定义集合
Λ={λ1,λ2,...,λt}
并且将此集合存储在所述安全环境中。
●针对1≤i≤m1,计算m1个椭圆曲线点
其中所有Gi,G∈E(Fp)和G是所述椭圆曲线标准中指定的生成元。将这些椭圆曲线点Gi发送到不安全处理器。
当ai、λj和Gi(对于1≤i≤n和1≤j≤t)已被预先计算并且存储在安全处理器装置上时,可开始对椭圆曲线标量乘法的计算。安全处理器装置对来自初始化阶段的输入数据和标量k(所述标量k需要保密)执行以下步骤。
●选择随机整数k∈(Z/nZ)*
●选择随机整数m2∈[1,2,...,m1]。
●将k分解为m2个随机部分。举例来说,所述分解可通过针对1≤i<m2-1选择m2-1个随机值ki∈(Z/nZ)*并且将最后的值计算为来实现。这些分解值可进行再组合以确定值k。此外,对分解值的计算还可稍后被组合,因此结果是对所述值k的计算。
●针对下标m2<i≤m1,选择m1-m2个随机值ki∈(Z/nZ)*。另外的随机值用于进一步掩蔽与k相关联的实际值,如下文所见。
●选择随机排列π:
●选择m1个(不必不同的)值δi∈Λ(来自(Z/nZ)*的预先计算的随机元素的集合)。这些值用于创建m1元组(例如,有限有序列表)
●针对1≤i≤m1,将m1个留数ci∈Z/nZ计算为 使用随机排列选择使用δi和ki值的阶进一步对攻击者掩盖各种计算,并且这种用法将不同于点乘的每一迭代。
●将这些m1个留数ci和椭圆曲线点Gi发送到不安全处理器装置。
在接收到所述m1个留数ci(1≤i≤m1)之后,所述不安全处理器装置利用预先计算的点Gi∈E(Fp)计算m1个椭圆曲线标量乘法
对于1≤i≤m1,Pi=ci·Gi
由于值ci和Gi是较大值,因此比起由所述安全处理器装置执行,此计算将由所述不安全处理器装置更高效且快速地执行。所述不安全处理器装置将所得点Pi∈E(Fp)传送回到所述安全处理器装置。
所述安全处理器装置接收这些m1个点,所述点对应于
接下来,所述安全处理器装置组合合适的点并且去掉最终模糊处理(掩码)以将所需的椭圆曲线标量乘法计算为
因为对手可观测传输于安全与不安全处理器装置之间的m1个留数,恢复随机值k的难度依赖于解决子集求和问题的例子的难度。
上文所描述的实施例示出怎样在两个计算装置之间划分椭圆曲线标量乘法的工作负载的技术。这些计算装置中的一者可视为安全的(例如,安全元件),而另一装置可为不安全的但被假设具有显著较好的计算能力。此工作的分配是以如下方式执行:使得所述计算的计算密集部分在不安全(但更快的)装置上执行,同时仍保证安全性。此混合方法可用于(例如)提高基于密码编译方案的椭圆曲线的性能。
图1示出用于实施椭圆曲线点乘的硬件图100。如所示出,装置100包括经由一个或多个系统总线110互连的不安全处理器装置120、安全处理器装置125、存储器130、用户接口140、网络接口150和存储装置160。应理解,在一些方面中,图1构成抽象图,而装置100的组件的实际组织可能比所示更加复杂。
不安全处理器装置120可以是能够执行存储在存储器130或存储装置160中的指令或以其它方式处理数据的任何硬件装置。由此,处理器可包括微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其它类似装置。
安全处理器装置120可以是能够执行存储在安全存储器或为所述安全处理器装置的部分的存储装置上的指令或以其它方式处理数据的任何硬件装置。由此,处理器可包括微处理器、现场可编程门阵列(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操作的数据。举例来说,存储装置160可存储用于控制硬件100的各种基本操作的基本操作系统161。此外,存储装置160可包括通过上文所描述的不安全处理器装置120执行点乘步骤的不安全点乘指令162。
将显而易见的是,描述为存储在存储装置160中的各种信息可另外或替代地存储在存储器130中。就此而言,存储器130也可被视为构成“存储装置”,并且存储装置160可被视为“存储器”。各种其它布置将是显而易见的。此外,存储器130和存储装置160都可被视作“非暂时性机器可读媒体”。如本文中所使用,术语“非暂时性”应被理解为不包括暂时信号但包括所有形式的存储装置,包含易失性存储器和非易失性存储器两者。
虽然主机装置100示出为包括每个所描述的组件中的一个组件,但是在各种实施例中,各种组件可以重复。举例来说,不安全处理器装置120可包括多个微处理器,所述多个微处理器被配置成独立地执行本文中所描述的方法,或被配置成执行本文中所描述的方法的步骤或子例程,使得多个处理器协作以实现本文中描述的功能性。同样,安全处理器装置125可包括多个微处理器,所述多个微处理器被配置成独立地执行本文中所描述的方法,或被配置成执行本文中所描述的方法的步骤或子例程,使得多个处理器协作以实现本文中描述的功能性。
根据本发明的实施例的方法可在计算机系统上实施成计算机实施的方法。用于根据本发明的方法的可执行代码可存储在计算机程序媒体上。计算机程序媒体的例子包括存储器装置、光学存储装置、集成电路、服务器、在线软件等。此类计算机系统还可包括其它硬件元件,包括存储装置、用于利用外部系统以及在所述计算机系统的元件之间传输数据的网络接口。
在本发明的实施例中,计算机程序可包括适用于在所述计算机程序运行于计算机上时执行根据本发明的方法的所有步骤的计算机程序代码。优选地,所述计算机程序被实施在非暂时性计算机可读媒体上。
根据本发明的创建白盒实施方案的掩盖代码的方法可在计算机上实施为计算机实施的方法。用于根据所述实施例的方法的可执行代码可存储在计算机程序媒体上。在此类方法中,计算机程序可包括适于当所述计算机程序在计算机上运行时执行所述方法的所有步骤的计算机程序代码。所述计算机程序在非暂时性计算机可读媒体上实施。
在处理器上运行以实施本发明的实施例的特定软件的任何组合构成特定专用机器。
如本文中所使用,术语“非暂时性机器可读存储媒体”应理解为不包括暂时传播信号,但包括所有形式的易失性和非易失性存储器。此外,如本文中所使用,术语“处理器”应理解为涵盖多种装置,例如微处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)和其它类似处理装置。当软件在处理器上实施时,所述组合变为单个特定机器。
虽然已特定参考各种示例性实施例的某些示例性方面来详细地描述各种示例性实施例,但应理解,本发明能够容许其它实施例,且本发明的细节能够容许在各种显而易见的方面的修改。如对于本领域的技术人员而言显而易见,变化和修改可被实现,同时保持在本发明的精神和范围内。因此,前文公开内容、描述和图式仅出于说明性目的,并且不以任何方式限制本发明,本发明仅由权利要求书限定。

Claims (16)

1.一种用于在不安全环境中安全地计算椭圆曲线标量乘法的系统,其特征在于,包括:
包括安全存储器的安全处理器,所述安全处理器被配置成:
将安全标量K分解为m2个随机值ki,其中i是整数下标;
针对所述下标m2<i≤m1,随机选择m1-m2个值ki
选择m1个掩码值δi
基于随机留数ai和kπ(i)计算m1个留数ci,其中π(i)是随机排列;
基于随机留数ai和将被乘的椭圆点来计算m1个椭圆曲线点Gi
接收m1个椭圆曲线点;以及
通过组合所述接收的椭圆曲线点的一部分并从所述接收的椭圆曲线点的所述部分去掉所述掩码值δi来计算所述椭圆曲线标量乘法;
存储器装置;以及
与所述存储器装置通信的不安全处理器,所述处理器被配置成:
接收m1个留数ci和椭圆曲线点Gi
基于所述m1个随机留数ci和椭圆点Gi来计算m1个椭圆曲线点Pi
将所述m1个椭圆曲线点Pi发送到所述安全处理器。
2.根据权利要求1所述的系统,其特征在于,所述处理器进一步被配置成:
随机选择m1个留数ai;以及
将所述m1个留数ai存储在所述安全存储器中。
3.根据权利要求1所述的系统,其特征在于,所述m1个掩码值δi选自存储在所述安全存储器中的预先计算的随机值集合。
4.根据权利要求1所述的系统,其特征在于,基于随机留数ai和将被乘的椭圆点计算m1个椭圆曲线点Gi对于1≤i≤m1被计算成:
<mrow> <msub> <mi>G</mi> <mi>i</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mi>mod</mi> <mi> </mi> <mi>n</mi> <mo>)</mo> </mrow> <mo>&amp;CenterDot;</mo> <mi>G</mi> <mo>,</mo> </mrow>
其中G是所述椭圆曲线的将被乘的椭圆点,且n是所述椭圆点G的乘法阶。
5.根据权利要求1所述的系统,其特征在于,将安全标量K分解成m2个随机值ki包括针对1≤i<m2-1选择m2-1个随机值ki并且计算其中n是所述椭圆点的所述乘法阶。
6.根据权利要求1所述的系统,其特征在于,计算m1个留数cI被计算成:
<mrow> <msub> <mi>c</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>a</mi> <mi>i</mi> </msub> <mo>&amp;CenterDot;</mo> <msubsup> <mi>&amp;delta;</mi> <mrow> <mi>&amp;pi;</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>&amp;CenterDot;</mo> <msub> <mi>k</mi> <mrow> <mi>&amp;pi;</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </msub> <mi>mod</mi> <mi> </mi> <mi>n</mi> <mo>,</mo> </mrow>
其中n是所述椭圆点的所述乘法阶。
7.根据权利要求1所述的系统,其特征在于,计算m1个椭圆曲线点Pi被计算成:
Pi=ci·Gi
8.根据权利要求1所述的系统,其特征在于,通过组合所述接收的椭圆曲线点的一部分并从所述接收的椭圆曲线点的所述部分去掉所述掩码值δi来计算所述椭圆曲线标量乘法被计算成:
<mrow> <mi>k</mi> <mo>&amp;CenterDot;</mo> <mi>G</mi> <mo>=</mo> <msubsup> <mi>&amp;Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>m</mi> <mn>2</mn> </msub> </msubsup> <msub> <mi>&amp;delta;</mi> <mi>i</mi> </msub> <mo>&amp;CenterDot;</mo> <msub> <mi>P</mi> <mrow> <msup> <mi>&amp;pi;</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </msub> <mo>,</mo> </mrow>
其中G是所述椭圆曲线的将被乘的椭圆点。
9.一种用于使用安全处理器和不安全处理器安全地计算椭圆曲线标量乘法的方法,其特征在于,包括:
通过所述安全处理器:
将安全标量K分解为m2个随机值ki,其中i是整数下标;
针对所述下标m2<i≤m1,随机选择m1-m2个值ki
选择m1个掩码值δi
基于随机留数ai和kπ(i)计算m1个留数ci,其中π(i)是随机排列;
基于随机留数ai和将被乘的椭圆点来计算m1个椭圆曲线点Gi
接收m1个椭圆曲线点;以及
通过组合所述接收的椭圆曲线点的一部分并从所述接收的椭圆曲线点的所述部分去掉所述掩码值δi来计算所述椭圆曲线标量乘法;以及
通过所述不安全处理器:
接收m1个留数ci和椭圆曲线点Gi
基于所述m1个随机留数ci和椭圆点Gi来计算m1个椭圆曲线点Pi
将所述m1个椭圆曲线点Pi发送到所述安全处理器。
10.根据权利要求1所述的系统,其特征在于,所述安全处理器进一步:
随机选择m1个留数ai;以及
将所述m1个留数ai存储在安全存储器中。
11.根据权利要求9所述的方法,其特征在于,所述m1个掩码值δi选自存储在安全存储器中的预先计算的随机值集合。
12.根据权利要求9所述的方法,其特征在于,基于随机留数ai和将被乘的椭圆点来计算m1个椭圆曲线点Gi对于1≤i≤m1被计算成:
<mrow> <msub> <mi>G</mi> <mi>i</mi> </msub> <mo>=</mo> <mrow> <mo>(</mo> <msubsup> <mi>a</mi> <mi>i</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mi>mod</mi> <mi> </mi> <mi>n</mi> <mo>)</mo> </mrow> <mo>&amp;CenterDot;</mo> <mi>G</mi> <mo>,</mo> </mrow>
其中G是所述椭圆曲线的将被乘的椭圆点,且n是所述椭圆点G的乘法阶。
13.根据权利要求9所述的方法,其特征在于,将安全标量K分解成m2个随机值ki包括针对1≤i<m2-1选择m2-1个随机值ki并且计算其中n是所述椭圆点的所述乘法阶。
14.根据权利要求9所述的方法,其特征在于,计算m1个留数cI被计算成:
<mrow> <msub> <mi>c</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>a</mi> <mi>i</mi> </msub> <mo>&amp;CenterDot;</mo> <msubsup> <mi>&amp;delta;</mi> <mrow> <mi>&amp;pi;</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>&amp;CenterDot;</mo> <msub> <mi>k</mi> <mrow> <mi>&amp;pi;</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </msub> <mi>mod</mi> <mi> </mi> <mi>n</mi> <mo>,</mo> </mrow>
其中n是所述椭圆点的所述乘法阶。
15.根据权利要求9所述的方法,其特征在于,计算m1个椭圆曲线点Pi被计算成:
Pi=ci·Gi
16.根据权利要求9所述的方法,其特征在于,通过组合所述接收的椭圆曲线点的一部分并从所述接收的椭圆曲线点的所述部分去掉所述掩码值δi来计算所述椭圆曲线标量乘法被计算成:
<mrow> <mi>k</mi> <mo>&amp;CenterDot;</mo> <mi>G</mi> <mo>=</mo> <msubsup> <mi>&amp;Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <msub> <mi>m</mi> <mn>2</mn> </msub> </msubsup> <msub> <mi>&amp;delta;</mi> <mi>i</mi> </msub> <mo>&amp;CenterDot;</mo> <msub> <mi>P</mi> <mrow> <msup> <mi>&amp;pi;</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </msub> <mo>,</mo> </mrow>
其中G是所述椭圆曲线的将被乘的椭圆点。
CN201710323679.1A 2016-05-27 2017-05-09 使用不安全和安全环境计算安全椭圆曲线标量乘法 Active CN107437998B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/166,925 2016-05-27
US15/166,925 US10361855B2 (en) 2016-05-27 2016-05-27 Computing a secure elliptic curve scalar multiplication using an unsecured and secure environment

Publications (2)

Publication Number Publication Date
CN107437998A true CN107437998A (zh) 2017-12-05
CN107437998B CN107437998B (zh) 2022-05-10

Family

ID=58428181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710323679.1A Active CN107437998B (zh) 2016-05-27 2017-05-09 使用不安全和安全环境计算安全椭圆曲线标量乘法

Country Status (3)

Country Link
US (1) US10361855B2 (zh)
EP (1) EP3249520B1 (zh)
CN (1) CN107437998B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018146766A (ja) * 2017-03-06 2018-09-20 キヤノン株式会社 スカラー倍演算装置、スカラー倍演算方法及びプログラム
EP3713148B1 (en) 2019-03-22 2022-08-03 Giesecke+Devrient Mobile Security GmbH White-box ecc implementation

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1425231A (zh) * 2000-04-18 2003-06-18 格姆普拉斯公司 椭圆曲线上的密码学方法
US20080025500A1 (en) * 2005-01-24 2008-01-31 Fujitsu Limited Cryptographic device having tamper resistance to power analysis attack
US20080301458A1 (en) * 2007-03-07 2008-12-04 Nevine Maurice Nassif Ebeid Power Analysis Attack Countermeasure for the ECDSA
US20090214023A1 (en) * 2008-02-26 2009-08-27 Al-Somani Turki F Method for elliptic curve scalar multiplication
CN102446088A (zh) * 2011-09-20 2012-05-09 中国科学院深圳先进技术研究院 椭圆曲线标量乘的并行处理方法及系统
CN103024006A (zh) * 2012-11-23 2013-04-03 西安电子科技大学 一种云计算环境下双线性对的安全外包的方法
CN103903047A (zh) * 2014-03-27 2014-07-02 华中科技大学 一种适用于rfid安全通信的椭圆曲线加密协处理器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062044B1 (en) 2002-06-28 2006-06-13 The United States Of America As Represented By The National Security Agency Method of elliptic curve cryptographic key agreement using coefficient splitting
US8160245B2 (en) 2007-03-07 2012-04-17 Research In Motion Limited Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting
US8296559B2 (en) * 2007-05-31 2012-10-23 Red Hat, Inc. Peer-to-peer SMIME mechanism
US7978846B2 (en) * 2007-06-30 2011-07-12 Intel Corporation Scale-invariant barrett reduction for elliptic-curve cyrptography
US20100011047A1 (en) * 2008-07-09 2010-01-14 Viasat, Inc. Hardware-Based Cryptographic Accelerator
US8484486B2 (en) * 2008-08-06 2013-07-09 Silver Spring Networks, Inc. Integrated cryptographic security module for a network node
US8345864B1 (en) * 2008-12-12 2013-01-01 Emc Corporation Elliptic curve cryptography scalar multiplication with on demand acceleration table generation
FR2971872B1 (fr) * 2011-02-18 2014-06-20 Bull Sas Circuit integre programmable de cryptographie
US9967098B2 (en) * 2015-12-23 2018-05-08 Intel Corporation Elliptic curve hardware integrated circuit

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1425231A (zh) * 2000-04-18 2003-06-18 格姆普拉斯公司 椭圆曲线上的密码学方法
US20080025500A1 (en) * 2005-01-24 2008-01-31 Fujitsu Limited Cryptographic device having tamper resistance to power analysis attack
US20080301458A1 (en) * 2007-03-07 2008-12-04 Nevine Maurice Nassif Ebeid Power Analysis Attack Countermeasure for the ECDSA
US20090214023A1 (en) * 2008-02-26 2009-08-27 Al-Somani Turki F Method for elliptic curve scalar multiplication
CN102446088A (zh) * 2011-09-20 2012-05-09 中国科学院深圳先进技术研究院 椭圆曲线标量乘的并行处理方法及系统
CN103024006A (zh) * 2012-11-23 2013-04-03 西安电子科技大学 一种云计算环境下双线性对的安全外包的方法
CN103903047A (zh) * 2014-03-27 2014-07-02 华中科技大学 一种适用于rfid安全通信的椭圆曲线加密协处理器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
刘淳等: "基于智能卡的素数域椭圆曲线密码的快速实现", 《计算机工程与应用》 *
李成霞等: "一种ECC快速数字签名技术的硬件实现", 《武汉理工大学学报》 *
杨邓奇等: "ECC点乘运算在网络并行实现中的装箱问题", 《大理学院学报》 *

Also Published As

Publication number Publication date
US20170346633A1 (en) 2017-11-30
EP3249520B1 (en) 2019-03-06
CN107437998B (zh) 2022-05-10
US10361855B2 (en) 2019-07-23
EP3249520A1 (en) 2017-11-29

Similar Documents

Publication Publication Date Title
CN109474423B (zh) 数据加解密方法、服务器及存储介质
CN107683502B (zh) 根据紧凑源代码生成加密函数参数
US10726108B2 (en) Protecting the input/output of modular encoded white-box RSA
Meneses et al. RSA encryption algorithm optimization to improve performance and security level of network messages
CN105049400A (zh) 在白盒实现方案中拆分s盒以防止攻击
US10721056B2 (en) Key processing method and device
US10235506B2 (en) White-box modular exponentiation
JP2020510879A (ja) 楕円曲線点乗算デバイス及び方法
Amiet Blockchain vulnerabilities in practice
US10140437B2 (en) Array indexing with modular encoded values
EP3125145B1 (en) White-box elliptic curve point multiplication
CN107437998A (zh) 使用不安全和安全环境计算安全椭圆曲线标量乘法
EP3098743A1 (en) Obscuring software code with split variables
CN111262707B (zh) 数字签名方法及验证方法、设备、存储介质
US10068070B2 (en) White-box elliptic curve point multiplication
Vincent et al. A Novel and efficient public key encryption algorithm
EP3166013B1 (en) Modular exponentiation using randomized addition chains
Gorbenko et al. Methods of building general parameters and keys for NTRU Prime Ukraine of 5 th–7 th levels of stability. Product form
Zaman et al. Hash vine: A new hash structure for scalable generation of hierarchical hash codes
CN104298897A (zh) 基于混沌技术的嵌入式版权认证方法及专用处理器
Borges et al. Small private keys for systems of multivariate quadratic equations using symmetric cryptography
EP3125144B1 (en) Array indexing with modular encoded values
CN107104800B (zh) 基于单台云服务器的双线性对安全外包方法
JP2021502743A (ja) 計算デバイス及び方法
Dhiviyal et al. Enhanced Cloud Security Implementation using Modified ECC Algorithm

Legal Events

Date Code Title Description
PB01 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