CN101005350A - 加密处理设备、加密处理方法和计算机程序 - Google Patents

加密处理设备、加密处理方法和计算机程序 Download PDF

Info

Publication number
CN101005350A
CN101005350A CNA2007100017341A CN200710001734A CN101005350A CN 101005350 A CN101005350 A CN 101005350A CN A2007100017341 A CNA2007100017341 A CN A2007100017341A CN 200710001734 A CN200710001734 A CN 200710001734A CN 101005350 A CN101005350 A CN 101005350A
Authority
CN
China
Prior art keywords
scalar
scalar value
carry out
associating
multiplication
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
CNA2007100017341A
Other languages
English (en)
Other versions
CN101005350B (zh
Inventor
秋下彻
坚木雅宣
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Publication of CN101005350A publication Critical patent/CN101005350A/zh
Application granted granted Critical
Publication of CN101005350B publication Critical patent/CN101005350B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • 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/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4824Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices using signed-digit representation

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

一种加密处理设备,用于执行下列计算之一:基于椭圆曲线上的两个点P和Q以及标量值k和l来执行标量乘法kP+lQ,或基于除子D1和D2以及标量值k和l来执行标量乘法kD1+lD2,该加密处理设备包括:标量值控制器,配置为生成联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>,其被如此设置使得标量值k和l的所有位由0,+1或-1来表示,并且在对应于标量值k和l的位置处的位组合(ki,li)被设置为满足(ki,li)=(0,±1)或(±1,0);和计算执行部分,被配置为执行计算标量乘法kP+lQ或kD1+lD2

Description

加密处理设备、加密处理方法和计算机程序
本发明包含涉及于2006年1月16日向日本专利局提交的日本专利申请JP 2006-007105的主题,其全部内容合并在此作为引用。
技术领域
本发明涉及一种加密处理设备、加密处理方法和计算机程序。更具体地,本发明涉及一种加密处理设备,用于实现以椭圆曲线加密法高速计算标量倍点和点加(double-and-add point)kP+lQ并且以超椭圆曲线加密法高速计算标量倍除子和除子加(double-and-adddivisor)kD1+lD2、用于其的加密处理方法和用于其的计算机程序。
背景技术
随着网络通信和电子商务都在最近几年有所发展,确保通信中的安全性已经成为了重要的问题。安全确保方法的一个例子是加密技术。目前,已经实施了利用各种加密技术的通信。
例如已经将一种系统付诸特定的用途,其中加密处理模块被嵌入在小设备中,比如IC卡,在IC卡和用作为数据读取/写入设备的读取器/写入器之间来执行数据发送/接收,并且执行发送/接收数据的验证过程或加密和解密。
例如,执行加密过程所用的IC卡已经日益用在各种大门,比如车站或购物中心的售票大门。已经存在对小型化和高处理速度的迫切需求。
加密广义地被分类为公用密钥加密方法和公共密钥加密方法。公用密钥加密方法也称为对称加密方法,并且发送方和接受方都拥有公用密钥。公用密钥加密方法的例子包括根据DES(数据加密标准)的公用密钥加密方法。DES算法的特征在于,加密和解密几乎都由相同的算法执行。
与公用密钥加密方法相对,发送方的密钥与接收方的密钥不同的结构是公共密钥加密方法或非对称加密方法。在公共密钥加密方法中,与对于加密和解密使用公用密钥的公用密钥加密方法不同,秘密密钥只应当由一个人拥有,并且因此其优点在于密钥的管理。但是,公共密钥加密方法的数据处理速度要比公用密钥加密方法慢,并且通常公共密钥加密方法经常用于具有少量数据的对象,比如传递秘密密钥和数字签名。作为公共密钥加密方法的例子,已知的是RSA(Rivest-Shamir-Adleman)加密法和椭圆曲线加密法(ECC)。
椭圆曲线加密法是使用在椭圆曲线求解离散对数问题的难度的加密法,并且据说其在160个位具有等效于1024位RSA加密的安全性。通常,在椭圆曲线加密法中,使用在素域的椭圆曲线:y2=x3+ax+b(4a3+27b2≠0)、两个扩展域上的椭圆曲线:y2+xy=x3+ax2+b(b≠0)等等。将在无穷大(O)处的点加到这些曲线上的点的集合形成与该相加有关的有限群,并且在无穷大(O)处的点形成其单位元素。此后,有限群中的点的相加由+来表示。
有限群中的两个不同的点P和Q的该相加P+Q被称为“点加”,并且点P和点P的相加P+P=2P被称为“倍点”。
此外,确定点P相加k次的点P+P+…+P=kP的计算被称为“标量点乘”。在椭圆曲线加密法中的计算例如在D.Hankerson,J.L.Hernandez,and A.Menezes,″Software Implementation ofElliptic Curve Cryptography over Binary Fields″,Cryptographic Hardware and Embedded Systems-CHES 2000,LNCS1965,pp.1-24,Springer-Verlag,2000中描述。
此外,用于高速计算两个不同点P和Q在椭圆曲线上的标量倍点和点加kP+lQ的“同步标量点乘算法”是已知的。k和l都由标量给出。同步标量点乘算法通过利用其每个标量值k和l都按如下二进制表示法中表达的算法来执行
k=(kn…k0)2
l=(ln…l0)2
“同步标量点乘算法”
输入:椭圆曲线上的点P和Q
标量值k和l
输出:kP+lQ
1.Compute P+Q
2.T←(knP+lnQ)
3.For i=n-1 downto 0 do
  T←2T
  If(ki,li)≠(0,0)then
    T←T+(kiP+liQ)
4.Return T
“同步标量点乘算法”是一种这样的技术,其中作为每个点P和Q单独的标量加倍的kP和lQ不被分别计算,而基于二进制表示标量的对应位(ki,li)的条件而同时计算kP+lQ。在该技术中,执行点倍的次数可减少到大约计算每个点P或Q的标量乘法kP或lQ的情况的一半,且此后kP+lQ作为点加过程被执行,由此实现更高的速度。
尽管存在使用在椭圆曲线求解离散对数问题的难度的加密,但称为功率分析攻击的攻击方法被提出,该攻击方法在椭圆曲线加密法过程的中间通过测量设备中的功耗来显露存储在设备中的秘密信息。功率分析攻击主要包括利用一个功耗波形的简单功率分析(SPA)和利用功耗波形之间差异的差分功率分析(DPA)。椭圆曲线加密法上的功率分析攻击在例如J.-S.Coron,″Resistanceagainst Differential Power Analysis for Elliptic CurveCryptosystems″,Cryptographic Hardware and EmbeddedSystem-CHES′99,LNCS 1965,pp.292-302,Springer-Verlag,1999中描述。通常,在椭圆曲线加密法中针对DPA的防范措施是通过将随机化技术与针对SPA的防范措施相结合来实现的。
但是,“同步标量点乘算法”对于SPA不安全。因为,倍点和点加的计算作为不同的过程来执行,因此在计算中功耗的特征不同。因此,对于攻击者来说可能通过观看功耗波形区别出正在执行倍点还是正在执行点加。
在上述“同步标量点乘算法”的步骤3中,虽然对所有i执行倍点T←2T,但仅在(ki,li)≠(0,0)时执行点加T←T+(kiP+liQ)。因此,对于攻击者来说可能通过观看功耗波形来区别是否(ki,li)=(0,0)。在上述“同步标量点乘算法”中,执行步骤1中的P+Q的点加的预先计算是必要的。
发明内容
所期望的是,提供一种加密处理设备,用于实现以椭圆曲线加密法高速计算标量倍点和点加kP+lQ并且以超椭圆曲线加密法高速计算标量倍除子和除子加kD1+lD2,超椭圆曲线加密法是一种概括了椭圆曲线加密法的方法,并且用于实现抵抗诸如简单功率攻击(SPA)的攻击的标量倍点和点加的计算、用于其的加密处理方法和用于其的计算机程序。
根据本发明的一个实施例,提供了一种加密处理设备,用于执行下列计算之一:基于由椭圆曲线加密法定义的椭圆曲线上的两个点P和Q以及标量值k和l来执行标量乘法kP+lQ,和基于由超椭圆曲线加密法定义的除子D1和D2以及标量值k和l来执行标量乘法kD1+lD2,该加密处理设备包括:
标量值控制器,配置为生成联合正则形式(k,l)
k=<kn,…k0>和l=<ln,…l0>,其被如此设置使得标量值k和l的所有位由0,+1或-1来表示,并且在对应于标量值k和l的位置处的位组合(ki,li)被设置为满足(ki,li)=(0,±1)或(±1,0);和
计算执行部分,被配置为用由标量值控制器生成的联合正则形式(k,l)来执行标量乘法kP+lQ或kD1+lD2
在本发明的加密处理设备的一个实施例中,当标量值k和l都是偶数或奇数时,标量值控制器可改变标量值之一,以便设置为偶数和奇数的组合,并可生成联合正则形式(k,l)
k=<kn,…k0>和l=<ln,…l0>
其中在对应于改变的标量值k和l的位置处的位组合(ki,li)满足(ki,li)=(0,±1)或(±1,0),并且
计算执行部分可基于改变的标量值来执行标量乘法kP+lQ或kD1+lD2,执行校正计算,并且通过在标量值改变之前应用标量值来计算标量加倍和相加结果。
在本发明的加密处理设备的一个实施例中,计算执行部分可选择联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>的对应位(ki,li),并且可执行应用了同步计算标量乘法kP+lQ或kD1+lD2的同步计算技术的计算过程。
在本发明的加密处理设备的一个实施例中,计算执行部分可对联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>的所有对应位(ki,li)执行应用了相同计算序列的计算过程。
在本发明的加密处理设备的一个实施例中,在计算过程中,计算执行部分可在不计算点加P+Q或除子加D1+D2的情况下执行标量乘法kP+lQ或kD1+lD2
根据本发明的另一个实施例,提供一种供加密处理设备使用的加密处理方法,用于执行下列计算之一:基于由椭圆曲线加密法定义的椭圆曲线上的两个点P和Q以及标量值k和l来执行标量乘法kP+lQ,和基于由超椭圆曲线加密法定义的除子D1和D2以及标量值k和l来执行标量乘法kD1+lD2,该加密处理方法包括步骤:
生成联合正则形式(k,l)
k=<kn,…k0>和l=<ln,…l0>,其被如此设置使得标量值k和l的所有位由0,+1或-1来表示,并且在对应于标量值k和l的位置处的位组合(ki,li)被设置为满足(ki,li)=(0,±1)或(±1,0);和
用在标量值控制中生成的联合正则形式(k,l)来执行标量乘法kP+lQ或kD1+lD2的计算过程。
在本发明的加密处理方法的一个实施例中,当标量值k和l都是偶数或奇数时,在标量值控制中可改变标量值之一,以便设置为偶数和奇数的组合,并可生成联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>,其中在对应于改变的标量值k和l的位置处的位组合(ki,li)满足(ki,li)=(0,±1)或(±1,0),并且
在计算执行中,可基于改变的标量值来执行标量乘法kP+lQ或kD1+lD2的计算过程,执行校正计算,并且通过在标量值改变之前应用标量值来计算标量加倍和相加结果。
在本发明的加密处理方法的一个实施例中,在计算执行中,选择联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>的对应位(ki,li),并且可执行应用了同步计算标量乘法kP+lQ或kD1+lD2的同步计算技术的计算过程。
在本发明的加密处理方法的一个实施例中,在计算执行中,可对联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>的所有对应位(ki,li)执行应用了相同计算序列的计算过程。
在本发明的加密处理方法的一个实施例中,在计算过程中,可在不计算点加P+Q或除子加D1+D2的情况下执行标量乘法kP+lQ或kD1+lD2
根据本发明的另一个实施例,提供一种使加密处理设备能够执行下列计算之一的计算机程序:基于由椭圆曲线加密法定义的椭圆曲线上的两个点P和Q以及标量值k和l来执行标量乘法kP+lQ,和基于由超椭圆曲线加密法定义的除子D1和D2以及标量值k和l来执行标量乘法kD1+lD2,该计算机程序包括步骤:
生成联合正则形式(k,l)
k=<kn,…k0>和l=<ln,…l0>,其被如此设置使得标量值k和l的所有位由0,+1或-1来表示,并且在对应于标量值k和l的位置处的位组合(ki,li)被设置为满足(ki,li)=(0,±1)或(±1,0);和
用在标量值控制中生成的联合正则形式(k,l)来执行标量乘法kP+lQ或kD1+lD2的计算过程。
本发明的计算机程序例如是可借助存储介质或通信介质提供给能够执行各种计算机代码的计算机系统的计算机程序,存储介质或通信介质用于提供以计算机可读格式的程序代码,例如有诸如CD、FD、或MO的记录介质,或诸如网络的通信介质。由于提供这种以计算机可读格式的程序,所以对应于程序的处理在计算机系统实现。
从稍后描述的本发明的实施例和附图中可以对本发明的其它目的、特征和优点更加清楚。在该说明书中,系统指定了多个设备的逻辑组件。事实上设备没有被布置在同一外壳中。
根据本发明的结构,在基于由椭圆曲线加密法定义的椭圆曲线上的两个点P和Q以及标量值k和l来执行标量乘法kP+lQ,和基于由超椭圆曲线加密法定义的除子D1和D2以及标量值k和l来执行标量乘法kD1+lD2的计算过程中,生成联合正则形式(k,l)
k=<kn,…k0>和l=<ln,…l0>,其被如此设置使得标量值k和l的所有位由0,+1或-1来表示,并且在对应于标量值k和l的位置处的位组合(ki,li)被设置为满足(ki,li)=(0,±1)或(±1,0);并且用联合正则形式(k,l)来执行计算标量乘法kP+lQ或kD1+lD2的过程。因此,在所有组合(ki,li)中可执行相同的计算处理序列。对应于位组合的处理中的差异不会发生,且提高了抵抗功率分析。可省略预先计算P+Q和D1+D2,并实现高速计算过程。
附图说明
图1说明用于在根据本发明的实施例的加密处理设备中计算标量点乘的加密处理器的结构的例子;
图2示出总结了将标量值k和l的二进制表示变换为JRF表示的过程的表;
图3是说明了算法1的流程图,算法1是用于生成标量值k和l的JRF表示的算法的例子,其由标量值控制器来执行;
图4是说明了算法2的流程图,算法2是用于生成标量值k和l的JRF表示的算法的例子,其由标量值控制器来执行;
图5示出说明了算法3的流程图,算法3作为由加密处理器执行的处理的整体算法;
图6示出说明了算法4的流程图,算法4作为由加密处理器执行的处理的整体算法;和
图7示出IC模块的结构的例子,作为根据本发明的实施例用于执行加密计算的加密执行设备的例子。
优选实施方式
将在下面描述根据本发明的实施例的加密处理设备、加密处理方法和计算机程序的细节。根据下面的项来给出该描述。
(1)椭圆曲线加密法和超椭圆曲线加密法的概要。
(2)本发明的加密处理设备的处理的特定结构和例子
(3)加密处理设备的结构的例子
(1)椭圆曲线加密法和超椭圆曲线加密法的概要
本发明实现以椭圆曲线加密法和超椭圆曲线加密法高速计算标量倍点和点加kP+lQ,超椭圆曲线加密法已知为一种概括了椭圆曲线加密法的方法,并且还实现了计算抵抗诸如简单功率分析(SPA)的攻击的标量倍点和点加。现在将给出椭圆曲线加密法和超椭圆曲线加密法的概要。
如上所述,超椭圆曲线加密法是使用在椭圆曲线求解离散对数问题的难度的加密法,并且据说其在160个位具有等效于1024位RSA加密的安全性。通常,在椭圆曲线加密法中,使用在素域的椭圆曲线:y2=x3+ax+b(4a3+27b2≠0)、两个扩展域上的椭圆曲线:y2+xy=x3+ax2+b(b≠0)等等。
另一方面,其中概括了椭圆曲线加密法的超椭圆曲线加密法(HECC)是由Koblitz和Cantor提出的方法。在有限域被表示为Fq的椭圆曲线加密法(ECC)中,当在有限域Fq上定义的椭圆曲线上的点(其中q=pn,p是素数)被表示为P,并且对其执行标量乘法的点kP(k∈Z)被表示为Q时,从Q确定k的问题基本上是一个离散对数问题。另一方面,在超椭圆曲线加密法(HECC)中,当作为点的形式和的除子被表示为D1并且由标量乘法kD1定义的除子被表示为D2时,从D2确定k的问题变为超椭圆曲线上雅可比簇上的离散对数问题,并且数学解的困难存在。以上述的方式,超椭圆曲线加密法(HECC)被确认具有数学解密的困难并且被期望作为用于公共密钥加密的有效加密法。
在超椭圆曲线上,表征曲线的值为种类g。此时,在有限域Fq中定义的种类g的超椭圆曲线C由下面的等式定义,
Y2+h(x)y=f(x),
其中h(x),f(x)∈Fq[x],f(x)是只有g次的多项式(当p是奇素数,h=0时),并且f(x)是2g+1次的首数系数为一的多项式。
当假设了等效于椭圆曲线加密法的安全性时,相比于基于Hasse定理的椭圆曲线所定义域的计算尺寸,超椭圆曲线加密法所定义域的计算尺寸(位长)被缩减为1/g。小的计算尺寸可依据实现来利用,并且可引用作为超椭圆曲线加密法的优点之一。
在本发明中,作为抵抗诸如简单功率分析(SPA)的攻击的高速计算,在上述的椭圆曲线加密法中,实现对椭圆曲线上的点P和Q计算标量倍点和点加kP+lQ,并且在上述的超椭圆曲线加密法中,实现与D1和D2有关的标量倍除子的除子加kD1+lD2的计算,D1和D2是点形式和的除子。
(2)本发明的加密处理设备的处理的特定结构和例子
现在将描述由本发明的加密处理设备执行的处理的特定结构和例子。参考图1,描述了本发明的加密处理设备中的加密处理器100的结构的例子,用于以椭圆曲线加密法计算标量倍点和点加kP+lQ,并且以超椭圆曲线加密法计算与除子D1和D2有关的标量倍除子的除子加kD1+lD2
P和Q是椭圆曲线上的两个点,
D1和D2是除子,其每一个是超椭圆曲线上点的形式和,并且
k和l由标量给出。
如图1所示,在本发明的加密处理设备中,用于以椭圆曲线加密法计算标量倍点和点加kP+lQ并且以超椭圆曲线加密法计算标量倍除子的除子加kD1+lD2的加密处理器100包括标量值控制器101和计算执行部分102。下面,以椭圆曲线加密法计算标量倍点和点加kP+lQ的例子将作为实施例来描述。以超椭圆曲线加密法计算标量倍除子的除子加kD1+lD2也可类似于kP+lQ的计算过程来执行。
标量值控制器101接收标量值k和l,用来计算标量倍点和点加kP+lQ,并且确定标量值k和l是奇数还是偶数。当标量值k和l的奇数性和偶数性彼此不同时,标量值k和l被表达为0,1,和-1的级数k=<kn…k0>和l=<ln…l0>,其满足(ki,li)=(0,±1)或(±1,0)。
在上述相关技术的“同步标量点乘算法”中,按照下面描述的算法,通过将标量值k和l设置为如下的二进制表示来计算kP+lQ:
k=(kn…k0)2
l=(ln…l0)2
“同步标量点乘算法”
输入:椭圆曲线上的点P和Q
标量值k和l
输出:kP+lQ
1.Compute P+Q
2.T←(knP+lnQ)
3.For i=n-1 down to 0 do
  T←2T
  If(ki,li)≠(0,0)then
    T←T+(kiP+liQ)
4.Return T
即是,在相关技术的结构中,通过设置与标量值k和l的每一个有关的二进制表示来执行“同步标量点乘算法”,对于所述二进制表示k=(kn…k0)2且l=(ln…l0)2,即通过设置(ki,li)=(0,0)或(0,1),(1,0),或(1,1)的二进制表示。
在本发明的加密过程中,标量值控制器101接收标量值k和l,用来计算标量倍点和点加kP+lQ,并确定标量值k和l是奇数还是偶数。当标量值k和l的奇数性和偶数性彼此不同时,标量值k和l被变换为扩展二进制表示,其中标量值k和l的每一个是0,1,和-1的级数,以便满足(ki,li)=(0,±1)或(±1,0)。扩展二进制表示被表达为
k=<kn…k0>和
l=<ln…l0>。
在标量值k和l的扩展二进制表示中,对应的位,即(ki,li)被设置为满足条件
(ki,li)=(0,±1)或(±1,0)。
满足上面条件的k和l的表达式此后将被称为联合正则形式(joint regular form JRF)。
在本发明的加密过程中,标量值控制器101确定标量值k和l是奇数还是偶数。当标量值k和l的奇数性和偶数性彼此不同时,即当下列之一时:
(a)标量值k是偶数并且标量值1是奇数,以及
(b)当标量值k是奇数并且标量值1是偶数成立时,标量值k和l被表达为0,1,和-1的级数k=<kn…k0>和l=<ln…l0>,其满足(ki,li)=(0,±1)或(±1,0)。标量值控制器101接着将级数输入到如图1所示的计算执行部分102。计算执行部分102根据上述的“同步标量点乘算法”来计算点的标量倍点和点加kP+lQ。
计算执行部分102执行如下描述的“同步标量点乘算法”。
“同步标量点乘算法”
输入:椭圆曲线上的点P和Q
标量值k和l
输出:kP+lQ
1.Compute P+Q
2.T←(knP+lnQ)
3.For i=n-1 downto 0 do
  T←2T
  If(ki,li)≠(0,0)then
  T←T+(kiP+liQ)
4.Return T
但是,由于设置了(ki,li)=(0,±1)或(±1,0),在上述算法的步骤3的过程中,(ki,li)=(0,0)不成立,且在步骤3中,对于所有(ki,li),执行下面的过程:
T←2T和
T←T+(kiP+liQ)。即是,对所有(i)执行相同的处理,即是对表达为扩展的二进制表示的k和l的每个位执行相同的处理。
结果,即使执行功率分析,与取决于(ki,li)=(0,0)是否成立而处理不同的有关领域的序列不同,对所有(ki,li)集合执行相同的处理,对通过诸如SPA的功率分析的处理进行确定是困难的,并且实现了高度抵抗功率分析的加密处理。
此外,在步骤3执行的过程中的计算过程T←T+(kiP+liQ),设置了(ki,li)=(0,±1)或(±1,0)。因此,在计算T←T+(kiP+liQ)中的(kiP+liQ)中,只有四种下面描述的计算发生:
(0*P)+((+1)*Q)=Q,
(0*P)+((-1)*Q)=-Q,
((+1)*P)+(0*Q)=P,和
((-1)*P)+(0*Q)=-P。
结果,只需要计算-P,Q,-Q,和P的四个值。
这意味着可省略“同步标量点乘算法”中步骤1的预先计算过程,即计算1.Compute P+Q的下面步骤。
步骤1中计算[P+Q]的过程是用于允许所计算的值在其变为步骤3中通过提前计算[P+Q]的值来计算P+Q所需要时而被使用。在相关领域的序列中,在步骤3的过程中,即在计算过程T←T+(kiP+liQ)中,可出现组合(ki,li)=(1,1)。当该组合出现时,其被如此设置使得在步骤1中提前计算的值被使用。
但是,在处理的例子中,由于设置了(ki,li)=(0,±1)或(±1,0),所以在T←T+(kiP+liQ)中的计算(kiP+liQ)中,只出现四个值P,-P,Q和-Q,并且不出现用于计算P+Q的过程所需的位组合(ki,li)=(1,1)。结果,在步骤1中用于提前计算[P+Q]的过程变得不必要,处理步骤的数量也减少了一,并且实现了高速计算。
如上所述,当根据本发明的处理例子来执行“同步标量点乘算法”时,当输入标量值是偶数和奇数的组合时,标量值被设置为联合正则形式(ki,li)=(0,±1)或(±1,0),并且执行“同步标量点乘算法”。结果,在“同步标量点乘算法”中,实现下面的(a)和(b):
(a)按照相同的过程在所有组合(ki,li)中执行步骤3的过程,和
(b)步骤1的过程可被省略。
由于实现了上面(a)和(b),提高了抵抗功率分析,并且实现了高速计算。
在本发明的处理例子中,当输入标量值是偶数和奇数的组合时,如图1所示的标量值控制器101将其表达设置为下面的联合正则形式
(ki,li)=(0,±1)或(±1,0)
并输出标量值到计算执行部分102,由此上述“同步标量点乘算法”被执行。
如图1所示的标量值控制器101中的过程,即用于设置联合正则形式的过程将按如下描述。例如,当输入标量值k和l为(k,l)=(52,39),并且k和l被设置为(0,+1,和-1)的扩展二进制表示且还被设置为k和l在关系(ki,li)=(0,±1)或(±1,0)中所用的联合正则形式,下面得出:
k=52=<1,0,-1,0,1,0,0>和
l=39=<0,1,0,1,0,-1,1>。
下面描述用于生成标量值k和l的联合正则形式的方法,标量值k和l的偶数性或奇数性从诸如(k0,l0),…,(kn,ln)的低位起彼此不同。
如图1所示的标量值控制器101接收标量值k和l并确定这些标量值是偶数还是奇数。当k和l是偶数和奇数的组合时,标量值控制器101根据k和l的二进制表示来生成标量值k和l的联合正则形式。
标量值k和l的二进制表示按如下设置:
k=(kn…k0)2
l=(ln…l0)2
在该二进制表示的基础上,标量值控制器101生成标量值k和l的联合正则形式。
首先,k和l是偶数性和奇数性彼此不同的数据。自然地,标量值k和l的二进制表示的最小有效位的组合(k0,l0)是:
(k0,l0)=(0,1)或
(k0,l0)=(1,0)。
标量值控制器101将从标量值k和l的二进制表示的最低位起的第二位,即(k1,l1)作为目标,并以(k1,l1)的值为基础执行变换过程。当(k1,l1)=(0,1)或(1,0)时,不执行变换。即,由于联合正则形式的条件(k1,l1)=(0,±1)或(±1,0)满足,因此将二进制表示的(k1,l1)当作JRF中的(k1,l1)。
另一方面,当二进制表示的(k1,l1)是(0,0)时,由于联合正则形式的条件(ki,li)=(0,±1)或(±1,0)不满足,因此表示发生变化。在该情况下,标量值控制器101根据标量值k的二进制表示的最低有效位k0的值来按如下所述转换标量值k和l的二进制表示的最低有效位和从最低位起的第二位[k1,k0]和[l1,l0]并设置JRF中的(k1,l0)和(k0,l0)。
当k0=1时,即当(k1,l1)=(0,0)和(k0,l0)=(1,0)时,执行下面的变换过程:
二进制表示[k1,k0]=[0,1]→JRF表示[k1,k0]=[1,-1],并且
二进制表示[l1,l0]=[0,0]→JRF表示[l1,l0]=[0,0],并且设置k和l的JRF表示。
当k0=0时,即当(k1,l1)=(0,0)和(k0,l0)=(0,1)时,执行下面的变换过程:
二进制表示[k1,k0]=[0,0]→JRF表示[k1,k0]=[0,0],并且
二进制表示[l1,l0]=[0,1]→JRF表示[l1,l0]=[1,-1],并且设置k和l的JRF表示。
并且,当二进制表示的(k1,l1)是(1,1)时,由于联合正则形式的条件(ki,li)=(0,±1)或(±1,0)不满足,因此表示发生变化。
在该情况下,根据标量值k的二进制表示的最低有效位k0,标量值控制器101按如下所述转换标量值k和l的二进制表示的最低有效位和从最低位起的第二位[k1,k0]和[l1,l0]并设置JRF中的(k1,l1)和(k0,l0)。
当k0=1时,即当(k1,l1)=(1,1)和(k0,l0)=(1,0)时,执行下面的变换过程:
二进制表示[k1,k0]=[1,1]→JRF表示[k1,k0]=[0,-1],并且
二进制表示[l1,l0]=[1,0]→JRF表示[l1,l0]=[1,0]。此外,把(+1)移到k的二进制表示的高位k2。执行该变换过程以设置k和l的JRF表示。
当k0=0时,即当(k1,l1)=(1,1)和(k0,l0)=(0,1)时,执行下面的变换过程:
二进制表示[k1,k0]=[1,0]→JRF表示[k1,k0]=[1,0],并且
二进制表示[l1,l0]=[1,1]→JRF表示[l1,l0]=[0,-1]。此外,把(+1)移到1的二进制表示的高位的位l2。执行该变换过程以设置k和l的JRF表示。
由于执行了上面的处理,在(k1,l1)=(0,0),(0,1),(1,0),和(1,1)的所有情况下,将标量值k和l设置为
(k0,l0)=(0,±1)或(±1,0),和
(k1,l1)=(0,1)或(1,0)的组合。
因此,变得有可能满足作为联合正则形式的条件的(ki,li)=(0,±1)或(±1,0)条件。
接下来,还对于(k2,l2),当(k2,l2)=(0,0)或(1,1)时,以对于(k1,l1)相同的方式来执行上述的相同变换。
从标量值k和l的二进制表示即k=(kn…k0)2和l=(ln…l0)2的低位到高位顺序执行该过程。由于执行了该过程,标量值k和l可表达为满足(ki,li)=(0,±1)或(±1,0)的0,1,和-1的级数,k=<kn…k0>和l=<ln…l0>。
图2示出了总结了将标量值k和l的二进制表示变换为JRF表示的过程的表。
当标量值k和l的二进制表示被设置为k=(kn…k0)2和l=(ln…l0)2时,根据该二进制表示,标量值控制器101从k和l的二进制表示的低位起顺序生成标量值k和l的联合正则形式。
如图2所示,标量值控制器101执行下面变换过程,以便在k和l的对应位组合(ki,li)的基础上将标量值k和l改变为JRF表示。
(1)当(ki,li)=(1,0)时,
所使用的(ki,li)在不变的情况下被用作为JRF表示。
(2)当(ki,li)=(0,1)时,
所使用的(ki,li)在不变的情况下被用作为JRF表示。
(3)当(ki,li)=(0,0)时,
(3a)当(ki-1,li-1)=(1,0)时,标量值k和l被改变成下面的表达
(ki,ki-1)=[0,1]→JRF<1,-1>和
(li,li-1)=[0,0]→JRF<0,0>
并且设置JRF表示。
(3b)当(ki-1,li-1)=(0,1)时,标量值k和l被改变成下面的表达
(ki,ki-1)=[0,0]→JRF<0,0>,和
(li,li-1)=[0,1]→JRF<1,-1>
并且设置JRF表示。
(4)当(ki,li)=(1,1)时,
(4a)当(ki-1,li-1)=(1,0)时,标量值k和l被改变成下面的表达
(ki,ki-1)=[1,1]→JRF<0,-1>和
(li,li-1)=[1,0]→JRF<1,0>
并且设置JRF表示。
(4b)当(ki-1,li-1)=(0,1)时,标量值k和l被改变成下面的表达
(ki,ki-1)=[1,0]→JRF<1,0>,和
(li,li-1)=[1,1]→JRF<0,-1>
并且设置JRF表示。
下面参考图3中所示的流程图来描述算法1,算法1是要由标量值控制器101执行的用于生成标量值k和l的JRF表示的过程的例子。
初始地,在步骤S101,标量值k和l用于计算椭圆曲线上两个不同的点P和Q的标量倍点和点加kP+lQ,所述标量值k和l作为输入。接着,在步骤S102,初始化标量值k和l。即,进行下面的初始化:
执行i←0,si←k,和ti←1,其中i对应于将位的位置指示为k和l的二进制表示的变量i(i=0到n)。
接着,在步骤S103,各自标量值k和l的si和ti的最低有效位ki和li被计算。ki和li是根据下面公式来计算的:
ki←simod2和
li←timod2。
接着,在步骤S104,确定标量值k和l对应的位组合(ki,li)的条件。即首先确定是否(ki,li)=(0,0)。
当在步骤S104中确定(ki,li)=(0,0)时,过程接着进行到步骤S105,其中确定是否ki-1=1。
当在步骤S105中确定ki-1=1时,过程进行到步骤S106,其中设置ki←1和ki-1←-1。即是,作为二进制表示的标量值[ki,ki-1]被设置为作为JRF表示的<1,-1>。该过程对应于图2中的(3a)过程。
当在步骤S105中确定ki-1≠1时,过程进行到步骤S107,其中设置了li←1和li-1←-1。即是,作为二进制表示的标量值[li,li-1]被设置为作为JRF表示的<1,-1>。该过程对应于图2中的(3b)过程。
在步骤S106或S107的过程之后,过程进行到步骤S108,并且执行用于更新对应于标量值k和l的si和ti的下列过程:
si+1←si/2和
ti+1←ti/2。
这些过程对应于丢弃被设置为JRF表示的低位和只提取还没有被处理的高位的过程。
当在步骤S104中确定(ki,li)≠(0,0)时,过程接着进行到步骤S109,其中确定是否(ki,li)=(1,1)。
当在步骤S109中确定(ki,li)=(1,1)时,过程接着进行到步骤S110,其中确定是否ki-1=1。
当在步骤S110中确定ki-1=1时,过程进行到步骤S111,其中设置ki←0和ki-1←-1。即是,作为二进制表示的标量值[ki,ki-1]被设置为作为JRF表示的<0,-1>。此外,分别执行用于更新对应于标量值k和l的si和ti的下列过程:
Si+1←(Si+1)/2和
ti+1←(ti-1)/2。
这些过程对应于把(+1)移到k的二进制表示的高位ki+1、丢弃被设置为JRF表示的低位和只提取还没有被处理的高位的过程。这些过程对应于图2中的(4a)过程。
当在步骤S110中确定ki-1≠1时,过程进行到步骤S112,其中设置li←0和li-1←-1。即是,作为二进制表示的标量值[li,li-1]被设置为作为JRF表示的<0,-1>。此外,分别执行用于更新对应于标量值k和l的si和ti的下列过程:
si+1←(si-1)/2和
ti+1←(ti+1)/2。
这些过程对应于把(+1)移到l的二进制表示的高位li+1、丢弃被设置为JRF表示的低位和只提取还没有被处理的高位的过程。这些过程对应于图2中的(4b)过程。
当在步骤S109中确定了(ki,li)≠(1,1),过程接着进行到步骤S113,其中分别执行用于更新对应于标量值k和l的si和ti的下列过程:
si+1←(si-ki)/2和
ti+1←(ti-li)/2。
这些过程对应于用于将作为二进制表示的(ki,li)用作为JRF表示、丢弃被设置为JRF表示的低位和只提取还没有被处理的高位的过程。这些过程对应于图2中的(1)和(2)过程。
接着,在步骤S114中确定是否si+1>0成立或者ti+1>0成立。即是用于确定还没有变换到JRF表示的二进制表示的高位是否存在的过程。当在步骤S114中确定si+1>0成立或者ti+1>0成立时,这意味着还没有变换到JRF表示的二进制表示的高位存在。因此,在步骤S115,更新变量i,即执行i←i+1。该过程接着返回到步骤S103,并且重复执行相同的处理。
当在步骤S114中确定si+1>0不成立或者ti+1>0不成立时,这意味着还没有变换到JRF表示的二进制表示的高位不存在。因此,步骤继续到步骤S116,其中执行用于设置最后所设置的变量i到n的过程,即n←i的更新过程。在步骤S117,作为标量值k和l的JRF表示,下面是输出:
k=<kn,…k0>和
l=<ln,…l0>。
由于上面的处理,图1所示的标量值控制器101通过扩展的二进制表示来表示标量值k和l的二进制表示k=(kn…k0)2和l=(ln…l0)2,即是,用0,+1,或-1表示所有的位,并且还生成作为JRF表示的满足(ki,li)=(0,±1)或(±1,0)的k=<kn,…k0>和l=<ln,…l0>,其是联合正则形式的条件,并且将它们输出到计算执行部分102。该计算执行部分102根据下面的标量值来执行前述的“同步标量点乘算法”:
k=<kn,…k0>和
l=<ln,…l0>,
上述的标量值作为从标量值控制器101输入的标量值1和l的JRF表示。作为处理的结果,在“同步标量点乘算法”中,
(a)在所有组合(ki,li)中执行相同的计算过程,并且
(b)可省略P+Q的计算过程。
由于实现了上述(a)和(b),抵抗功率分析得到提高,并且实现了高速计算。
参考图3所述的作为用于生成JRF表示的算法的算法1可按如下描述概括。
算法1
1.按如下进行输入:i←0,si←k,和ti←l。
2.si和ti的最低有效位被分别设置为ki和li
3.当(ki,li)=(0,0)时,执行下面内容。
当ki-1=1时,按下面执行变换:
ki←1和ki-1←-1。
当ki-1=0时,按下面执行变换:
li←1和li-1←-1。
si+1←si/2和ti+1←ti/2.
4.当(ki,li)=(1,1),执行下面内容。
当ki-1=1时,按下面执行变换:
ki←0,ki-1←-1,和
si+1←(si+1)/2,ti+1←(ti-1)/2.
当ki-1=0时,按下面执行变换:
li←0,li-1←-1,和
si+1←(si-1)/2和ti+1←(ti+1)/2。
5.当除了上述3和4以外的情况,即当(ki,li)=(0,1)或(1,0)时,
si+1←(si-ki)/2和ti+1←(ti-li)/2。
6.当si+1>0或ti+1>0时,
设置i←i+1并且过程返回到2。当在其它情况下,设置n←i,并且输出<kn…k0>和<ln…l0>。
接着,参考图4中所示的流程图描述算法2,其中优化算法1而使得分支数降低。算法2也是用于生成标量值k和l的JRF表示的算法的例子,并且由图1所示的加密处理器100中的标量值控制器101来执行。
步骤S201到S203的过程是与算法1中步骤S101到S103的过程几乎相同的过程。即初始地,在步骤S201,输入用来计算椭圆曲线上两个不同点P和Q的标量倍点和点加kP+lQ的标量值k和l。接着,在步骤S202,初始化标量值k和l。即是,执行下列初始化:
i←0,s←k,和t←l
其中i对应于将位的位置指示为k和l的二进制表示的变量i(i=0到n)。
接着,在步骤S203,对应于标量值k和l的s和t的每个的最低有效位ki和li被分别计算。ki和li是根据下面公式来计算的:
ki←smod2和
li←tmod2。
接着,在步骤S204,确定标量值k和l对应的位组合的状态。即首先确定是否(ki,li)=(0,0)。
当在步骤S204中确定(ki,li)=(0,0)时,过程接着进行到步骤S205,其中执行下列设置:
ki←ki-1
ki-1←-ki-1
li←li-1,和
li-1←-li-1
即是,基于二进制表示的标量值[ki,ki-1]被设置为作为JRF表示的<ki-1,-ki-1>,并且[li,li-1]被设置为作为JRF表示的<li-1,-li-1>。
这些过程对应于图2中的过程(3a)和(3b)。
在步骤S205中,分别执行下列过程,以作为用于更新对应于标量值k和l的s和t的过程:
s←s/2和
t←t/2。
这些过程对应于丢弃被设置为JRF表示的低位和只提取还没有被处理的高位的过程。
当在步骤S204中确定(ki,li)≠(0,0)时,过程接着进行到步骤S206,其中确定是否(ki,li)=(1,1)。
当在步骤S206中确定(ki,li)=(1,1)时,过程接着进行到步骤S207,其中执行下面设置:
ki←1-ki-1
ki-1←-ki-1,和
li-1←-li-1
基于二进制表示的标量值[ki,ki-1]被设置为作为JRF表示的<1-ki-1,-ki-1>,并且[li,li-1]被设置为作为JRF表示的<1-li-1,-li-1>。这些过程对应于图2中的过程(4a)和(4b)。
在步骤207中,分别执行下列过程,以作为用于更新对应于标量值k和l的s和t的过程:
s←(s-2ki+1)/2和
t←(t-li)/2。
这些过程对应于丢弃被设置为JRF表示的低位和只提取还没有被处理的高位的过程。
当在步骤S206中确定(ki,li)≠(1,1)时,过程接着进行到步骤S208,其中分别执行用于更新对应于标量值k和l的s和t的下列过程:
S←(s-ki)/2和
T←(t-li)/2。
这些过程对应于用于将作为二进制表示的(ki,li)用作为JRF表示、丢弃被设置为JRF表示的低位和只提取还没有被处理的高位的过程。这些过程对应于图2中的过程(1)和(2)。
接着,在步骤S209中确定是否s>0成立或者t>0成立。即是用于确定还没有变换到JRF表示的二进制表示的高位是否存在的过程。当在步骤S209中确定s>0成立或者t>0成立时,这意味着还没有变换到JRF表示的二进制表示的高位存在。因此,在步骤S210,执行用于更新变量i的过程,即i←i+1。该过程接着返回到步骤S203,并且重复执行相同的处理。
当在步骤S209中确定s>0不成立或者t>0不成立时,这意味着还没有变换到JRF表示的二进制表示的高位不存在。因此,步骤继续到步骤S211,其中执行用于设置最后所设置的变量i到n的过程,即n←i的更新过程。在步骤S212,作为标量值k和l的JRF表示,输出k=<kn,…k0>和l=<ln,…l0>。
由于上面的处理,图1所示加密处理器100的标量值控制器101将标量值k和l的二进制表示k=(kn…k0)2和l=(ln…l0)2表达为扩展的二进制表示,即是,用0,+1,或-1表示所有的位,生成作为JRF表示的满足(ki,li)=(0,±1)或(±1,0)的k=<kn,…k0>和l=<ln,…l0>,其是联合正则形式的条件,并且将它们输出到计算执行部分102。该计算执行部分102根据标量值k=<kn,…k0>和l=<ln,…l0>来执行前述的“同步标量点乘算法”,上述的标量值作为从标量值控制器101输入的标量值k和l的JRF表示。作为上述处理的结果,在“同步标量点乘算法”中,
(a)在所有组合(ki,li)中执行相同的计算过程,并且
(b)可省略p+Q的计算过程。
由于实现了上述(a)和(b),抵抗功率分析得到提高,并且实现了高速计算。
参考图4所述的作为用于生成JRF表示的算法的算法2可按如下概括。
算法2
1.按如下进行输入:i←0,s←k,和t←l。
2.s和t的最低有效位被分别设置为ki和li
3.当(ki,li)=(0,0)时,设置如下:
ki←ki-1,ki-1←-ki-1
li←li-1,li-1←-li-1
s←s/2,和
t←t/2。
4.当(ki,li)=(0,0)时,设置如下:
ki←1-ki-1,ki-1←-ki-1
li←l-li-1,li-1←-li-1
s←(s-2ki+1)/2,和
t←(t-2li+1)/2。
5.当除了上述3和4的情况外,设置如下:
s←(s-ki)/2和t ←(t-li)/2。
6.当s>0或t>0时,
设置i←i+1,并且过程返回到2。否则,执行n←i,并且输出<kn…k0>和<ln…l0>。
接着,参考图5中的流程图描述“同步标量点乘算法”的整体处理,该算法由图1所示的加密处理器100来执行,即是标量值控制器101和计算执行部分102要执行的处理的整体算法。以后该算法称为算法3。
图1所示的加密处理器100的计算执行部分102接收标量值<kn…k0>和<ln…l0>,作为从标量值控制器101输入的标量值k和l的JRF表示,并计算各点的标量倍点和点加[kP+lQ]。基本上,执行前述的“同步标量点乘算法”。如前所述,
(a)在所有组合(ki,li)中执行相同的计算过程,并且
(b)可省略P+Q的计算过程。
实现了上述(a)和(b),并且执行与有关领域的计算算法不同的算法。现在参考图5所示的流程图,描述本发明的“同步标量点乘算法”。
初始地,在步骤S301,加密处理器接收椭圆曲线上的标量值k和l以及点P和Q,作为计算各点的标量倍点和点加[kP+lQ]所需的参数。
接着,在步骤S302,标量值k和l被变换为作为JRF表示的k=<kn…k0>和l=<ln…l0>。该过程是由图1所示的标量值控制器101执行的过程,并且参考图3根据前述算法1来执行或者参考图4根据前述算法2来执行。
步骤S303和随后步骤的处理是由图1所示的计算执行部分102执行的“同步标量点乘算法”。该过程基本上是基于作为前述相关领域的技术的如下所示的“同步标量点乘算法”并具有多个变化的点。
“同步标量点乘算法”
输入:椭圆曲线上的点P和Q
标量值k和l
输出:kP+lQ
1.Compute P+Q
2.T←(knP+lnQ)
3.For i=n-1 down to 0 do
T←2T
If(ki,li)≠(0,0)then
T←T+(kiP+liQ)
4.Return T。
初始地,在步骤S303,设置下面:
T←(knP+lnQ)和i←n-1。
该过程作为对应于相关领域的“同步标量点乘算法”中的步骤2的过程来执行。i用作为指示作为JRF表示的k=<kn…k0>和l=<ln…l0>的位的位置的变量。
在本发明的算法中,省略了在相关领域的“同步标量点乘算法”中步骤1“Compute P+Q”的计算过程。
接着,在步骤S304,确定i≥0是否成立。当i≥0不成立时,这意味着kP+lQ的计算过程已经完成。
当i≥0成立时,这意味着kP+lQ的计算过程还没有完成。该过程接着进行到步骤S305,其中设置T←2T。此外在步骤S306中,执行T←T+(kiP+liQ)。该过程作为对应于相关领域的“同步标量点乘算法”中的步骤3的过程来执行。
在相关领域的“同步标量点乘算法”中的步骤3中,在根据本发明的实施例的处理中,在所有(ki,li)的组合中执行作为基于(ki,li)的值的选择性过程执行的过程,即是执行
If(ki,li)≠(0,0)then
T←T+(kiP+liQ)。
作为该处理的结果,使分析功率分析位的值困难变得可能。
接着,在步骤S307,作为用于更新变量i的过程,执行i←i+1。步骤S304及后续步骤被重复执行。
最后,当在步骤S304中确定i≥0不成立时,确定kP+lQ的计算过程已经完成。接着,在步骤S308中,输出T=kP+lQ,并且处理完成。
如上所述,在本发明的同步标量点乘算法中,省略了在前述相关领域的“同步标量点乘算法”中步骤1“Compute P+Q”的计算过程,且如与(ki,li)所有组合相同的过程来执行步骤3的过程。结果,抵抗功率分析得到提高,并且可执行高速计算。
作为前述参考图5的本发明的同步标量点乘算法的算法3按如下描述被概括。
算法3
1.使用JRF来表示k和l,并且输出
<kn…k0>和<ln…l0>。
2.设置T←(knP+lnQ)和i←n-1。
3.如果i≥0不成立,输出T并且结束处理。
4.利用倍点来计算T←2T。
5.利用点加来计算T←T+(kiP+liQ)。
6.设置i←n-1,并且返回到3。
上述参考图5的处理流程是用于计算kP+lQ的同步标量点乘算法。假设在标量值k和l是偶数和奇数的组合的情况下进行该处理,即在k是偶数而l是奇数以及k是奇数而l是偶数的情况之一下。对此的原因在于,这是满足(ki,li)=(0,±1)或(±1,0)的必要条件,其是联合正则形式的条件。
但是,在各点的标量倍点和点加[kP+lQ]中,输入的标量值k和l不总是偶数和奇数的组合,这应当由图1的加密处理器100来计算。
参考图6中所示的流程图,描述能够处理如下情况的处理序列算法4,在该情况中,标量值k和l是偶数和奇数的组合以及都是偶数或奇数,并且算法4提高对功率分析的抵抗并实现高速计算处理。
由图1所示的加密处理器100来执行根据图6所示的流程图的算法4。初始地,在步骤S401中,加密处理器接收标量值k和l和椭圆曲线上的点P和Q,作为计算各点的标量倍点和点加[kP+lQ]所需的参数。
由图1所示的标量值控制器101来执行步骤S402到S406的过程。初始地,在步骤S402中,确定标量值k和l是偶数还是奇数。即,确定k和l是否都是偶数或奇数。
当在步骤S402中确定都是偶数或奇数时,如果输入的k和l按其本身来维护,则设置满足作为联合正则形式的条件的(ki,li)=(0,±1)或(±1,0)的JRF表示是困难的。为此,在步骤S404和S405中,设置标志,并且调整标量值。即是,在步骤S404中,指示将调整标量值的标志[1]被设置。例如,这被设置为与在加密处理器100的可访问存储器中的处理数据kP+lQ对应的标志。
接着,在步骤S405中,执行用于改变标量值k到k+1的过程。作为该过程的结果,更新的k和l都变化为偶数和奇数的组合,并因此设置满足作为联合正则形式的条件的(ki,li)=(0,±1)或(±1,0)的JRF表示。
另一方面,当在步骤S402中确定k和l不是偶数或奇数的组合,而是偶数和奇数的组合时,即使输入k和l没有变化,也可设置满足作为联合正则形式的条件的(ki,li)=(0,±1)或(±1,0)的JRF表示。在步骤S403,设置指示标量值还没有被调整的标志[0]。
在步骤S403或S405的过程后,在步骤S406,将标量值k和l变换为作为JRF表示的k=<kn,…k0>和l=<ln,…l0>。该过程是图1所示的标量值控制器101执行的过程并且根据前述参考图3的算法1或根据前述参考图4的算法2来执行。
步骤S407和后续步骤的处理是由图1所示的计算执行部分102执行的“同步标量点乘算法”。类似于参考图5所描述的,该过程是基于作为前述相关领域的“同步标量点乘算法”并具有多个变化的点。
初始地,在步骤S407,设置下面:
T←(knP+lnQ)和i←n-1。
该过程作为对应于相关领域的“同步标量点乘算法”中的步骤2的过程来执行。i用作为指示作为JRF表示的k=<kn…k0>和l=<ln…l0>的位的位置的变量。并且,在本算法中,省略了在相关领域的“同步标量点乘算法”中步骤1“Compute P+Q”的计算过程。
接着,在步骤S408,确定i≥0是否成立。当i≥0不成立时,这意味着kP+lQ的计算过程已经完成。
当i≥0成立时,这意味着kP+lQ的计算过程还没有完成。该过程接着进行到步骤S409,其中执行T←2T。此外在步骤S410中,执行用于更新T←T+(kiP+liQ)的过程。该过程作为对应于相关领域的“同步标量点乘算法”中的步骤3的过程来执行。并且,在该过程的例子中,类似于前述参考图5描述的算法3,在相关领域的“同步标量点乘算法”中的步骤3中,在算法4中所有(ki,li)的组合中执行作为基于(ki,li)的值的选择性过程而执行的过程,即是执行
If(ki,li)≠(0,0)then
T←T+(kiP+liQ)。
作为该处理的结果,使分析功率分析位的值的困难变得可能。
接着,在步骤S411,执行用于更新变量i←i+1的过程,且步骤S408及后续步骤的处理被重复执行。
最后,当在步骤S408中确定i≥0不成立时,确定kP+lQ的计算过程已经完成,并且在步骤S412中确定对标志的设置。当标志已经被设置到[l]时,确定由计算执行部分计算的用于计算T=kP+lQ的标量值[k]不是输入的标量值而是在步骤S405中的过程k←k+l中更新的标量值。接着,在步骤S413中,执行校正计算T←T-P。在这个校正计算之后,在步骤S414,输出T=kP+lQ作为计算结果,并且处理完成。
当在步骤S412中确定标志还没有被设置到[l]时,由计算执行部分计算的用于计算T=kP+lQ的标量值[k]是输入的标量值,并因此省略步骤S405的校正过程。在步骤S414中,作为计算结果,输出T=kP+lQ,并且处理完成。
如上所述,在参考图6所述的算法4中,可能处理输入的标量值k和l的任何组合。当输入的标量值k和l是偶数和奇数的组合时并且还当输入的标量值k和l都是偶数或奇数时,抵抗功率分析得到提高,并且可执行高速计算。
即是,省略了在前述相关领域的“同步标量点乘算法”中步骤1“Compute P+Q”的计算过程。此外,如在所有(ki,li)的组合中的相同过程来执行步骤3的过程。结果,抵抗功率分析得到提高,并且高速计算变得可能。
作为前述参考图6描述的本发明的“同步标量点乘算法”的算法4按如下所述被概括。
算法4
1.当k和l的偶数性和奇数性相同时,设置k←k+1,以及标志←1。在其它情况下,设置标志←0。
2.使用JRF来表示k和l,并且输出<kn…k0>和<ln…k0>。
3.设置T←(knP+lnQ),和i←n-1。
4.如果i≥0不成立,过程进行到8。
5.利用倍点来计算T←2T。
6.利用点加来计算T←T+(kiP+liQ)。
7.设置i←n-1,并且返回到3。
8.如果标志=1,设置T←T-P,并且输出T。
根据该处理的例子,用于任何标量值k和l的处理是可能的,并且在不展现k和l的偶数性和奇数性以外的信息的情况下就可执行同步标量乘法kP+lQ。上述的实施例以如此方式设置使得输入的标量值通过将+1加到标量值k而被改变。当输入的标量值都是偶数或奇数时,这些值只需要变化为偶数和奇数的组合。在不限制到处理(k←k+1)的上述例子的情况下以不同方式改变标量值k和l。但是,在使用了变化的标量值进行计算后,需要执行用于将变化返回到原始的校正计算。
在参考图3到6所述的每个算法中,以椭圆曲线加密法计算标量倍点和点加kP+lQ的例子已经作为一个实施例描述。如前所述,类似于kP+lQ的计算过程,可执行以超椭圆曲线加密法计算标量倍除子的除子加kD1+lD2。即是,本发明的加密处理设备是用于执行对应于椭圆曲线加密法或超椭圆曲线加密法的加密处理计算的加密处理设备。该加密处理设备基于由椭圆曲线加密法定义的在椭圆曲线上的两个点P和Q以及标量值k和l来执行kP+lQ的标量乘法,并且基于由超椭圆曲线加密法定义的两个除子D1和D2以及标量值k和l来执行kD1+lD2的标量乘法。
图1所示的标量值控制器101是用于生成(k,l),k=<kn,…k0>和l=<ln,…l0>的联合正则形式的标量值控制器,该联合正则形式被如此设置使得标量值k和l的所有位都由0,+1或-1来表示,并且在对应于标量值k和l的位置处的位组合(ki,li)被设置为满足(ki,li)=(0,±1)或(±1,0)。如图1所示的计算执行部分102用由标量值控制器101生成的联合正则形式(k,l)来执行标量乘法kP+lQ或kD1+lD2
此外,当标量值k和l都是偶数或奇数时,标量值控制器101被配置为改变所述标量值,以便设置为偶数和奇数的组合,并执行用于生成(k,l),(ki,li)=(0,±1)和(±1,0)的联合正则形式的过程,其中对于变化的标量值k和l,在对应于改变的标量值k和l的位置处的位组合(ki,li)满足(ki,li)=(0,±1)或(±1,0)。计算执行部分102被配置为基于改变的标量值来执行标量乘法kP+lQ或kD1+lD2、执行校正计算、并通过在标量值改变之前应用标量值来计算标量加倍和相加结果。
此外,计算执行部分102被配置为执行选择JRF表示标量值k=<kn,…k0>和l=<ln,…l0>的对应位(ki,li)和同步计算标量乘法kP+lQ或kD1+lD2的同步计算技术中所应用的计算。计算执行部分102对JRF表示标量值k=<kn,…k0>和l=<ln,…l0>的所有对应位(ki,li)执行使用了相同计算序列的计算过程,并且在计算过程中,在不计算点加P+Q或除子加D1+D2的情况下执行标量乘法kP+lQ或kD1+lD2
作为上面处理的结果,实现高速计算,并且对于SPA具有高抵抗力的安全加密处理变得可能。
(3)加密处理设备的结构的例子
最后,作为执行上述加密过程的设备的IC模块200的例子如图7所示。上述处理是例如通过PC、IC卡、读取器/写入器和其它各种加密处理设备来执行的。图7所示的IC模块200作为各种设备之一来配置。
图7中所示的CPU(中央处理单元)201是用于执行各种程序的处理器,比如开始和结束加密处理、控制数据的发送和接收、部件部分之间的数据传输控制、和其它。存储器202由ROM(只读存储器)和RAM(随机访问存储器)等构成,其中ROM(只读存储器)用于将要由CPU执行的程序或固定的数据存储为计算参数,而RAM(随机访问存储器)用作为存储由CPU201执行的程序、在程序处理中适当变化的参数和标志的区域,以及工作区域。
要存储在存储器202中的计算执行程序的例子包括包含上述标量倍点和点加过程的计算序列的程序。数据存储区域优选地形成为具有防篡改结构的存储器。
加密处理器203执行加密处理、解码处理等,包括上述标量乘法过程。这里,已经描述了加密处理装置由各个模块形成的例子。可替换地,还可用如此方式形成结构,使得不提供这些独立的加密处理模块,并且CPU201读取存储在ROM中的加密处理程序,并执行加密处理程序。
随机数生成器204执行用于生成随机数的过程,该随机数是生成加密处理所需的密钥所需要的。
发射器-接收器205是用于执行与外部数据通信的数据通信处理器,其执行与诸如读取器-写入器的IC模块的数据通信,输出在IC模块中生成的加密文本、输入来自诸如外部读取器-写入器的设备的数据。
在前面,尽管参考了特定的实施例已经详细了描述了本发明。但是,本领域技术人员能在本发明的范围和精神内作出实施例的修改和替换是显而易见的。即是,本发明已经以例子的形式描述并且不应当被理解为是限制性的。为了确定本发明的主旨,应当考虑权利要求。
在说明书中描述的过程系列可用硬件、软件或它们的组合结构来执行。当该处理系列要由软件来执行时,记录处理序列的程序被安装在合并到专门硬件中的计算机存储器中,由此来执行程序,或者将程序安装到能够执行各种过程的通用计算机中,由此来执行程序。
例如,可提前在作为记录媒体的硬盘和ROM(只读存储器)中记录程序。可替换地,程序可临时或永久存储(记录)在可移除记录介质上,比如软盘、CD-ROM(压缩盘只读存储器)、MO(磁光)盘、DVD(数字通用盘)、磁盘或半导体存储器。这种可移除记录介质可作为打包的软件提供。
除了从上述可移除记录介质安装到计算机中外,可将程序从下载站点无线传输或可经由比如LAN(局域网)或互联网的网络有线传输到计算机。对于计算机可能的是,接收以如此方式传输的程序,并将该程序安装到记录介质中,比如包含于其中的硬盘。
在说明书中描述的各种过程不仅根据描述以时间顺序执行,而且还可并行地或各自地按照执行处理的设备的处理性能或按需要地来执行。在本说明书中,系统指定了多个设备的逻辑组件。设备布置在同一外壳中不是必要的。
本领域技术人员应当理解,各种修改、组合、再组合和替换可根据设计需求和其它因素出现,只要这些方式都包含在所附权利要求或其等效物的范围内。

Claims (11)

1.一种加密处理设备,用于执行下列计算之一:基于由椭圆曲线加密法定义的椭圆曲线上的两个点P和Q以及标量值k和l来执行标量乘法kP+lQ,和基于由超椭圆曲线加密法定义的除子D1和D2以及标量值k和l来执行标量乘法kD1+lD2,该加密处理设备包括:
标量值控制器,配置为生成联合正则形式(k,l)
k=<kn,…k0>和l=<ln,…l0>,其被如此设置使得标量值k和l的所有位由0,+1或-1来表示,并且在对应于标量值k和l的位置处的位组合(ki,li)被设置为满足(ki,li)=(0,±1)或(±1,0);和
计算执行部分,被配置为用由标量值控制器生成的联合正则形式(k,l)来执行标量乘法kP+lQ或kD1+lD2
2.根据权利要求1的加密处理设备,其中,当标量值k和l都是偶数或奇数时,标量值控制器改变标量值之一,以便设置为偶数和奇数的组合,并生成联合正则形式(k,l)
k=<kn,…k0>和l=<ln,…l0>
其中在对应于改变的标量值k和l的位置处的位组合(ki,li)满足(ki,li)=(0,±1)或(±1,0),并且
计算执行部分基于改变的标量值来执行标量乘法kP+lQ或kD1+lD2,执行校正计算,并且通过在标量值改变之前应用标量值来计算标量加倍和相加结果。
3.根据权利要求1的加密处理设备,其中,计算执行部分选择联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>的对应位(ki,li),并且执行应用了同步计算标量乘法kP+lQ或kD1+lD2的同步计算技术的计算过程。
4.根据权利要求3的加密处理设备,其中,计算执行部分对联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>的所有对应位(ki,li)执行应用了相同计算序列的计算过程。
5.根据权利要求3的加密处理设备,其中,在计算过程中,计算执行部分在不计算点加P+Q或除子加D1+D2的情况下执行标量乘法kP+lQ或kD1+lD2
6.一种供加密处理设备使用的加密处理方法,用于执行下列计算之一:基于由椭圆曲线加密法定义的椭圆曲线上的两个点P和Q以及标量值k和l来执行标量乘法kP+lQ,和基于由超椭圆曲线加密法定义的除子D1和D2以及标量值k和l来执行标量乘法kD1+lD2,该加密处理方法包括步骤:
生成联合正则形式(k,l)
k=<kn,…k0>和l=<ln,…l0>,其被如此设置使得标量值k和l的所有位由0,+1或-1来表示,并且在对应于标量值k和l的位置处的位组合(ki,li)被设置为满足(ki,li)=(0,±1)或(±1,0);和
用在标量值控制中生成的联合正则形式(k,l)来执行标量乘法kP+lQ或kD1+lD2的计算过程。
7.根据权利要求6的加密处理方法,其中,当标量值k和l都是偶数或奇数时,在标量值控制中改变标量值之一,以便设置为偶数和奇数的组合,并生成联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>,其中在对应于改变的标量值k和l的位置处的位组合(ki,li)满足(ki,li)=(0,±1)或(±1,0),并且
在计算执行中,基于改变的标量值来执行标量乘法kP+lQ或kD1+lD2的计算过程,执行校正计算,并且通过在标量值改变之前应用标量值来计算标量加倍和相加结果。
8.根据权利要求6的加密处理方法,其中,在计算执行中,选择联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>的对应位(ki,li),并且执行应用了同步计算标量乘法kP+lQ或kD1+lD2的同步计算技术的计算过程。
9.根据权利要求8的加密处理方法,其中,在计算执行中,对联合正则形式(k,l),k=<kn,…k0>和l=<ln,…l0>的所有对应位(ki,li)执行应用了相同计算序列的计算过程。
10.根据权利要求8的加密处理方法,其中,在计算过程中,在不计算点加P+Q或除子加D1+D2的情况下执行标量乘法kP+lQ或kD1+lD2
11.一种使加密处理设备能够执行下列计算之一的计算机程序:基于由椭圆曲线加密法定义的椭圆曲线上的两个点P和Q以及标量值k和l来执行标量乘法kP+lQ,和基于由超椭圆曲线加密法定义的除子D1和D2以及标量值k和l来执行标量乘法kD1+lD2,该计算机程序包括步骤:
生成联合正则形式(k,l)
k=<kn,…k0>和l=<ln,…l0>,其被如此设置使得标量值k和l的所有位由0,+1或-1来表示,并且在对应于标量值k和l的位置处的位组合(ki,li)被设置为满足(ki,li)=(0,±1)或(±1,0);和
用在标量值控制中生成的联合正则形式(k,l)来执行标量乘法kP+lQ或kD1+lD2的计算过程。
CN2007100017341A 2006-01-16 2007-01-16 加密处理设备和加密处理方法 Expired - Fee Related CN101005350B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006-007105 2006-01-16
JP2006007105 2006-01-16
JP2006007105A JP4682852B2 (ja) 2006-01-16 2006-01-16 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Publications (2)

Publication Number Publication Date
CN101005350A true CN101005350A (zh) 2007-07-25
CN101005350B CN101005350B (zh) 2011-04-06

Family

ID=38002237

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007100017341A Expired - Fee Related CN101005350B (zh) 2006-01-16 2007-01-16 加密处理设备和加密处理方法

Country Status (6)

Country Link
US (1) US7835517B2 (zh)
EP (1) EP1808762B1 (zh)
JP (1) JP4682852B2 (zh)
KR (1) KR101269737B1 (zh)
CN (1) CN101005350B (zh)
DE (1) DE602007001538D1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102638341A (zh) * 2011-02-11 2012-08-15 英飞凌科技股份有限公司 用于计算标量乘法的结果的设备和方法
CN104486074A (zh) * 2014-12-12 2015-04-01 湘潭大学 用于嵌入式设备的椭圆曲线加密方法和解密方法
CN105337734A (zh) * 2014-08-05 2016-02-17 英赛瑟库尔公司 包括错误检测的椭圆曲线加密方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7961872B2 (en) * 2006-12-04 2011-06-14 Lsi Corporation Flexible hardware architecture for ECC/HECC based cryptography
CA2593723C (en) * 2007-06-27 2016-04-19 Certicom Corp. Multi-dimensional montgomery ladders for elliptic curves
KR100965813B1 (ko) * 2007-12-28 2010-06-24 경원대학교 산학협력단 유비쿼터스 환경에서 안전한 메시지 전송을 위한타원곡선기반의 rfid 암호 방법
US8401179B2 (en) * 2008-01-18 2013-03-19 Mitsubishi Electric Corporation Encryption parameter setting apparatus, key generation apparatus, cryptographic system, program, encryption parameter setting method, and key generation method
JP5446678B2 (ja) * 2009-09-29 2014-03-19 富士通株式会社 楕円曲線暗号演算装置及び方法
CN104786986A (zh) * 2015-03-25 2015-07-22 王方圆 新型滚码汽车防盗器
WO2018145191A1 (en) * 2017-02-13 2018-08-16 Infosec Global Inc. System and method for optimized elliptic curve cryptography operations
CN107241198A (zh) * 2017-08-01 2017-10-10 北京智慧云测科技有限公司 一种椭圆曲线算法的安全性评估方法及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2791497B1 (fr) * 1999-03-26 2001-05-18 Gemplus Card Int Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique
JP2003098962A (ja) * 2001-09-20 2003-04-04 Hitachi Ltd 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
FR2811168B1 (fr) * 2000-06-30 2002-11-15 Gemplus Card Int Procede de conversion de la representation binaire d'un nombre dans une representation binaire signee
JP3820909B2 (ja) * 2001-04-24 2006-09-13 ソニー株式会社 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム
JP4034585B2 (ja) * 2002-01-28 2008-01-16 松下電器産業株式会社 楕円曲線演算装置及び楕円曲線演算方法
JP2003263110A (ja) * 2002-03-08 2003-09-19 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線上の有理点群の部分群の元生成装置、そのプログラム及び記録媒体
ATE352830T1 (de) * 2002-10-26 2007-02-15 Additional Director Ipr Defenc Verfahren zur elliptische-kurven-verschlüsselung
US7555122B2 (en) * 2002-12-04 2009-06-30 Wired Communications LLC Method for elliptic curve point multiplication
EP1548687B1 (en) * 2002-12-18 2013-01-09 Fujitsu Limited Tamper-resistant elliptical curve encryption using secret key
JP2004205870A (ja) * 2002-12-26 2004-07-22 Hitachi Ltd 超楕円曲線スカラー倍演算方法及び装置
JP4599859B2 (ja) * 2004-03-12 2010-12-15 ソニー株式会社 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
JP2006145945A (ja) * 2004-11-22 2006-06-08 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
US7602907B2 (en) * 2005-07-01 2009-10-13 Microsoft Corporation Elliptic curve point multiplication
ATE464599T1 (de) * 2005-10-18 2010-04-15 Telecom Italia Spa Verfahren zur skalarmultiplikation in gruppen elliptischer kurven über primkörpern für nebenkanal-attacken-beständige kryptosysteme
ATE466329T1 (de) * 2005-10-28 2010-05-15 Telecom Italia Spa Verfahren zur skalarmultiplikation in gruppen elliptischer kurven über binäre polynomische körper für nebenkanalattacken-beständige kryptosysteme

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102638341A (zh) * 2011-02-11 2012-08-15 英飞凌科技股份有限公司 用于计算标量乘法的结果的设备和方法
US9400636B2 (en) 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
CN102638341B (zh) * 2011-02-11 2016-08-03 英飞凌科技股份有限公司 用于计算标量乘法的结果的设备和方法
CN105337734A (zh) * 2014-08-05 2016-02-17 英赛瑟库尔公司 包括错误检测的椭圆曲线加密方法
CN104486074A (zh) * 2014-12-12 2015-04-01 湘潭大学 用于嵌入式设备的椭圆曲线加密方法和解密方法
CN104486074B (zh) * 2014-12-12 2017-06-23 湘潭大学 用于嵌入式设备的椭圆曲线加密方法和解密方法

Also Published As

Publication number Publication date
US7835517B2 (en) 2010-11-16
JP2007187958A (ja) 2007-07-26
CN101005350B (zh) 2011-04-06
US20070211894A1 (en) 2007-09-13
EP1808762A1 (en) 2007-07-18
KR101269737B1 (ko) 2013-05-30
KR20070076440A (ko) 2007-07-24
EP1808762B1 (en) 2009-07-15
DE602007001538D1 (de) 2009-08-27
JP4682852B2 (ja) 2011-05-11

Similar Documents

Publication Publication Date Title
CN101005350B (zh) 加密处理设备和加密处理方法
US7308096B2 (en) Elliptic scalar multiplication system
US7162033B1 (en) Countermeasure procedures in an electronic component implementing an elliptical curve type public key encryption algorithm
US20080260143A1 (en) Xz-elliptic curve cryptography with secret key embedding
US11323255B2 (en) Methods and systems for encryption and homomorphic encryption systems using Geometric Algebra and Hensel codes
JP4137385B2 (ja) 公開鍵および秘密鍵による暗号化方法
WO2001024439A1 (fr) Dispositif, programme ou systeme de traitement d&#39;informations secretes
CA2369540A1 (en) Method and apparatus for computing a shared secret key
CN109039640A (zh) 一种基于rsa密码算法的加解密硬件系统及方法
US8102998B2 (en) Method for elliptic curve scalar multiplication using parameterized projective coordinates
JP6974461B2 (ja) 幾何代数を用いた高度データ中心型暗号化システムのための方法およびシステム
JP4513752B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR101233682B1 (ko) 타원곡선암호를 위한 연산 장치 및 방법
US7286666B1 (en) Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
Dawahdeh et al. A new modification for menezes-vanstone elliptic curve cryptosystem
JP2003098962A (ja) 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
US7177422B2 (en) Elliptic curve encryption processing method, elliptic curve encryption processing apparatus, and program
US20160149704A1 (en) Method and apparatus for parallel scalar multiplication
KR20220079522A (ko) 기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들
JP3797808B2 (ja) スカラー倍算方法およびその装置
KR20010067016A (ko) 알에스에이 공개키 암호 고속화 장치 및 방법
JP3615405B2 (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP3183670B2 (ja) 演算装置、演算方法並びにその演算方法を記録した記録媒体
US20070121935A1 (en) Method for countermeasuring in an electronic component
WO2018187604A1 (en) Methods and systems for enhanced data-centric scalar multiplicative homomorphic encryption systems using geometric algebra

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110406

Termination date: 20160116

EXPY Termination of patent right or utility model