椭圆曲线加密的点乘方法、装置及计算机可读存储介质与流程

文档序号:15394475发布日期:2018-09-08 01:51阅读:241来源:国知局

本发明涉及信息安全技术领域,尤其涉及一种椭圆曲线加密的点乘方法、椭圆曲线加密的点乘装置及计算机可读存储介质。



背景技术:

椭圆曲线密码体制(ellipticcurvecryptosystems,ecc)是迄今被实践证明安全有效的三类公钥密码体制之一,以高效著称。1985年,美国密码学家nealkoblitz和victormiller分别独立提出ecc,并在近些年开始越来越得到重视。ecc与rsa密码体制在加解密功能上是类似的。相对于rsa,ecc可以使用更短的密钥来达到期望的安全级别,通常拥有160位比特长密钥的ecc便能提供相当于拥有1024位比特长密钥的rsa的安全强度。由于密钥可以做到更短,所以ecc的优点是既能提高加解密速度,又能节省计算资源。因此,ecc尤其适用于计算资源非常有限的密码设备,比如信用卡、可信计算模块、usbkey等。

在ecc算法的实现中,点乘是最核心而又最耗时的操作。二进制方法是计算点乘最常用的方法:给定一个点d和一个椭圆曲线上的点p,点乘dp的计算是由一系列取决于d的比特序列的点加(add)和点倍(dbl)来完成,也称它们为椭圆曲线操作,其中d是ecc的私钥。然而,这样的ecc密码设备则很容易受到简单功耗分析(simplepoweranalysis,spa)攻击,通过采集分析二进制方法实现的ecc密码设备的一条或几条功耗曲线,便很容易推算出点乘的内部工作机理,从而破解私钥。为防御这种攻击,一些安全的点乘方法已经提出。但它们不能抵御更强级别的差分功耗分析(differentialpoweranalysis,dpa)攻击。dpa是通过采集密码设备工作时所泄露的数千条或更多的功耗曲线,利用概率统计的方法将需要的功耗信息差异放大,将无关信息过滤掉,找到功耗信息与密钥数据的相关性,从而破解私钥。为抵御这种更强大的dpa,一些安全的ecc算法已经提出,这些算法都是通过增加点乘运算在椭圆曲线群或域的操作来达到防御dpa攻击的目的。不幸的是,这些方法大约增加了15~30%的ecc计算开销,这影响了ecc在计算资源非常有限的密码设备上的使用。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

本发明的主要目的在于提供一种椭圆曲线加密的点乘方法、椭圆曲线加密的点乘装置和计算机可读存储介质,旨在解决现有技术中缺乏可高效防御差分功耗分析攻击的椭圆曲线密码方法的技术问题。

为实现上述目的,本发明提供一种椭圆曲线加密的点乘方法,所述椭圆曲线加密的点乘方法包括如下步骤:

获取椭圆曲线点和椭圆曲线的加密密钥;

根据所述椭圆曲线的同种映射函数计算所述椭圆曲线点的同种映射点;

获取所述加密密钥的同种变换值;

根据所述同种映射点和所述同种变换值计算第一点乘结果;

根据所述椭圆曲线的同种逆映射函数和所述第一点乘结果计算所述椭圆曲线点和所述加密密钥的第二点乘结果,其中所述同种逆映射函数是所述同种映射函数的对偶同种映射函数。

优选地,所述根据所述椭圆曲线的同种逆映射函数和所述第一点乘结果计算所述椭圆曲线点和所述加密密钥的第二点乘结果的步骤之后还包括:

返回获取椭圆曲线点和椭圆曲线的加密密钥,其中本次获取的所述加密密钥和上次获取的加密密钥不同。

优选地,所述根据所述椭圆曲线的同种逆映射函数和所述第一点乘结果计算所述椭圆曲线点和所述加密密钥的第二点乘结果的步骤之后还包括:

返回获取椭圆曲线点和椭圆曲线的加密密钥,其中本次获取的所述椭圆曲线点和上次获取的椭圆曲线点不同。

优选地,所述获取椭圆曲线点和椭圆曲线的加密密钥步骤之前还包括:

获取同种次数;

获取和所述同种次数对应的所述椭圆曲线的同种映射函数和同种逆映射函数。

优选地,所述获取椭圆曲线点和椭圆曲线的加密密钥的步骤之后还包括:

获取同种次数,其中本次获取的所述同种次数和上一次获取的同种次数不同;

获取和所述本次获取的同种次数对应的所述椭圆曲线的同种映射函数和同种逆映射函数。

优选地,所述根据所述同种映射点和所述同种变换值计算第一点乘结果的步骤包括:

获取所述同种变换值的二进制展开式;

根据所述同种映射点和所述二进制展开式执行所述椭圆曲线的点加和点倍操作,以获取所述同种映射点和所述同种变换值的第一点乘结果。

此外,为实现上述目的,本发明还提供所述椭圆曲线加密的点乘装置,该装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的椭圆曲线加密的点乘处理程序,所述椭圆曲线加密的点乘处理程序被所述处理器执行时实现如上所述的椭圆曲线加密的点乘方法的步骤。

此外,为实现上述目的,本发明还提出一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有椭圆曲线加密的点乘处理程序,所述椭圆曲线加密的点乘处理程序被处理器执行时实现如上所述的椭圆曲线加密的点乘方法的步骤。

本发明实施例提出的一种椭圆曲线加密的点乘方法、装置和可读计算机存储介质,获取椭圆曲线点和椭圆曲线的加密密钥;根据所述椭圆曲线的同种映射函数计算所述椭圆曲线点的同种映射点;获取所述加密密钥的同种变换值;根据所述同种映射点和所述同种变换值计算第一点乘结果;根据所述椭圆曲线的同种逆映射函数和所述第一点乘结果计算所述椭圆曲线点和所述加密密钥的第二点乘结果。

本发明通过椭圆曲线加密点乘中的同种映射操作及对偶同种逆映射操作,隐藏了椭圆曲线点和加密密钥的点乘中间值,消除了密码设备的功耗泄露与椭圆曲线加密方法的点乘中间值的关联,从而使椭圆曲线加密方法可以防御差分功耗分析攻击。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图;

图2为本发明椭圆曲线加密的点乘方法第一实施例的流程示意图;

图3为本发明椭圆曲线加密的点乘方法第二实施例的流程示意图;

图4为本发明椭圆曲线加密的点乘方法第三实施例的流程示意图;

图5为本发明椭圆曲线加密的点乘方法第四实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例的主要解决方案是:获取椭圆曲线点和椭圆曲线的加密密钥;根据所述椭圆曲线的同种映射函数计算所述椭圆曲线点的同种映射点;获取所述加密密钥的同种变换值;根据所述同种映射点和所述同种变换值计算第一点乘结果;根据所述椭圆曲线的同种逆映射函数和所述第一点乘结果计算所述椭圆曲线点和所述加密密钥的第二点乘结果。

由于现有技术中,防御差分功耗分析攻击的椭圆加密点乘方法都是通过增加点乘运算在椭圆曲线群或域的操作来达到防御dpa攻击的目的,这些方法大约增加了15~30%的ecc计算开销,这影响了ecc在计算资源非常有限的密码设备上的使用。

本发明提供一种解决方案,通过椭圆曲线加密点乘中的同种映射操作及对偶同种逆映射操作,隐藏了椭圆曲线点和加密密钥的点乘中间值,消除了密码设备的功耗泄露与椭圆曲线加密方法的点乘中间值的关联,从而使椭圆曲线加密方法可以防御差分功耗分析攻击。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。

本发明实施例终端为椭圆曲线加密的点乘装置。

如图1所示,该椭圆曲线加密的点乘装置可以包括:处理器1001,例如cpu,通信总线1002,存储器1003。其中,通信总线1002用于实现这些组件之间的连接通信。存储器1003可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1003可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1003中可以包括操作系统和椭圆曲线加密的点乘处理程序。

在图1所示的装置中,处理器1001可以用于调用存储器1003中存储的椭圆曲线加密的点乘处理程序,并执行以下操作:

获取椭圆曲线点和椭圆曲线的加密密钥;

根据所述椭圆曲线的同种映射函数计算所述椭圆曲线点的同种映射点;

获取所述加密密钥的同种变换值;

根据所述同种映射点和所述同种变换值计算第一点乘结果;

根据所述椭圆曲线的同种逆映射函数和所述第一点乘结果计算所述椭圆曲线点和所述加密密钥的第二点乘结果,其中所述同种逆映射函数是所述同种映射函数的对偶同种映射函数。

进一步地,处理器1001可以调用存储器1003中存储的椭圆曲线加密的点乘处理程序,还执行以下操作:

返回获取椭圆曲线点和椭圆曲线的加密密钥,其中本次获取的所述加密密钥和上次获取的加密密钥不同。

进一步地,处理器1001可以调用存储器1003中存储的椭圆曲线加密的点乘处理程序,还执行以下操作:

返回获取椭圆曲线点和椭圆曲线的加密密钥,其中本次获取的所述椭圆曲线点和上次获取的椭圆曲线点不同。

进一步地,处理器1001可以调用存储器1003中存储的椭圆曲线加密的点乘处理程序,还执行以下操作:

获取同种次数;

获取和所述同种次数对应的所述椭圆曲线的同种映射函数和同种逆映射函数。

进一步地,处理器1001可以调用存储器1003中存储的椭圆曲线加密的点乘处理程序,还执行以下操作:

获取同种次数,其中本次获取的所述同种次数和上一次获取的同种次数不同;

获取和所述本次获取的同种次数对应的所述椭圆曲线的同种映射函数和同种逆映射函数。

进一步地,处理器1001可以调用存储器1003中存储的椭圆曲线加密的点乘处理程序,还执行以下操作:

获取所述同种变换值的二进制展开式;

根据所述同种映射点和所述二进制展开式执行所述椭圆曲线的点加和点倍操作,以获取所述同种映射点和所述同种变换值的第一点乘结果。

参照图2,本发明第一实施例提供一种椭圆曲线加密的点乘方法,所述方法包括:

步骤s10,获取椭圆曲线点和椭圆曲线的加密密钥。

在椭圆曲线加密算法的步骤中,先选定一条椭圆曲线,并取椭圆曲线上一点作为基点g,再获取私有的加密密钥k,根据k和g生成公开密钥。

步骤s20,根据所述椭圆曲线的同种映射函数计算所述椭圆曲线点的同种映射点。

椭圆曲线同种的定义为:若e1和e2都是椭圆曲线,则e1到e2的同种是一个同态,即:φ:e1→e2满足φ(o)=o,其中o为无穷远点。

如果存在从e1到e2的一个同种且φ(o)≠{o},那么两个椭圆曲线e1和e2称为同种。同种是不同椭圆曲线之间的一个有限映射。因此,有函数域上的单映射:φ*:k′(e2)→k′(e1)。

根据同种的定义可以得到用于加密的椭圆曲线的对应的同种椭圆曲线,并且进一步得到同种映射函数,该映射函数用于将加密的椭圆曲线上的点映射到对应的同种椭圆曲线上。将上一步骤选取的椭圆曲线上的基点g作为同种映射函数的输入参数,映射函数的运算结果即为基点g的同种映射点。

步骤s30,获取所述加密密钥的同种变换值。

同样的,在得到基点g所在的椭圆曲线的同种后,可以获取加密密钥的同种变换值。

步骤s40,根据所述同种映射点和所述同种变换值计算第一点乘结果。

获取同种变换值的二进制展开式,根据同种映射点和同种变换值的二进制展开式执行椭圆曲线的点加和点倍操作,以获取同种映射点和同种变换值的第一点乘结果。

步骤s50,根据所述椭圆曲线的同种逆映射函数和所述第一点乘结果计算所述椭圆曲线点和所述加密密钥的第二点乘结果,其中所述同种逆映射函数是所述同种映射函数的对偶同种映射函数。

根据同种的定义可以得到用于加密的椭圆曲线的对应的同种椭圆曲线,并且进一步得到同种映射函数,同时存在唯一的同种逆映射函数,可将同种椭圆曲线上的点逆映射到加密的椭圆曲线上,此同种逆映射函数称为同种映射函数的对偶同种映射函数。

因此在得到同种映射点和同种变换值的第一点乘结果后,将第一点乘结果作为同种逆映射函数的输入参数,同种逆映射函数的运算结果即为基点g和加密密钥的点乘结果。

在本实施例中,通过在椭圆曲线加密的点乘过程中增加了加密椭圆曲线的同种映射及对应的对偶同种逆映射等步骤,隐藏了椭圆曲线点和加密密钥的点乘的中间值,消除了密码设备的功耗泄露与椭圆曲线加密方法的点乘中间值的关联,从而使椭圆曲线加密方法可以防御差分功耗分析攻击。

进一步的,参照图3,本发明第二实施例基于第一实施例提供一种椭圆曲线加密的点乘方法,本实施例在步骤s50之后还包括:

步骤s60,返回获取椭圆曲线点和椭圆曲线的加密密钥,其中本次获取的所述加密密钥和上次获取的加密密钥不同。

在椭圆曲线加密方法步骤中,当基点g固定时,多个加密密钥不同,在处理完当前加密密钥和基点g的点乘之后,需要返回获取新的加密密钥,重新执行同种映射和同种逆映射的相关操作,以获取新的加密密钥和基点g的点乘结果。

在椭圆曲线加密方法步骤中,当同一个加密密钥需要产生和多个不同基点的点乘结果时,在处理完当前基点和加密密钥的点乘之后,需要返回获取新的基点,重新执行同种映射和同种逆映射的相关操作,以获取新的基点和加密密钥的点乘结果

在本实施例中,通过返回获取椭圆曲线点和椭圆曲线的加密密钥,并重新执行同种映射和同种逆映射的相关操作,以产生不同加密密钥对应的公开密钥。

进一步的,参照图4,本发明第三实施例基于第二实施例提供一种椭圆曲线加密的点乘方法,本实施例在步骤s10之前还包括:

步骤s70,获取同种次数。

根据椭圆曲线同种的定义,若e1和e2都是椭圆曲线,则e1到e2的同种是一个同态,即:φ:e1→e2,其中e1的有限域的代数闭合域是e2的有限域的代数闭合域的有限扩张域,把这里的有限扩张的次数称为同种次数,同种次数为正整数。

获取同种次数的方式包括预设同种次数、从同种次数的数值范围内随机选取同种次数。

步骤s80,获取和所述同种次数对应的所述椭圆曲线的同种映射函数和同种逆映射函数。

由于不同的同种映射的同种次数不同,在获取了同种次数之后,获取和该同种次数对应的椭圆曲线的同种映射函数和同种逆映射函数。

进一步地,在获取了同种次数后,还可以根据同种次数获取加密密钥的同种变换值,一种获取的方法为将加密密钥以同种次数求模得到同种变换值。

在本实施例中,通过获取同种次数,并获取和该同种次数对应的椭圆曲线的同种映射函数和同种逆映射函数,实现了由不同的椭圆曲线同种映射灵活获取点乘结果。

进一步的,参照图5,本发明第四实施例基于第二实施例提供一种椭圆曲线加密的点乘方法,本实施例在步骤s10之后还包括:

步骤s90,获取同种次数,其中本次获取的所述同种次数和上一次获取的同种次数不同。

由于不同的同种映射的同种次数不同,在每次获取了位于椭圆曲线上的基点g和加密密钥后,应当获取同种次数,并获取和同种次数对应的椭圆曲线的同种映射函数和同种逆映射函数,以进行后续的处理。

在椭圆曲线加密方法步骤中,在处理完当前加密密钥和当前基点g的点乘之后,返回获取新的加密密钥或新的基点g,重新执行同种映射和同种逆映射的相关操作,以获取新的点乘结果。在返回获取新的加密密钥或新的基点g时,与之相对应的可以重新获取同种次数,并且保证本次获取的同种次数和上一次获取的同种次数不同。

步骤s100,获取和所述本次获取的同种次数对应的所述椭圆曲线的同种映射函数和同种逆映射函数。

在获取了新的同种次数后,需要获取和该同种次数对应的椭圆曲线的同种映射函数和同种逆映射函数,以完成后续的处理。

在本实施例中,通过在每次获取了椭圆曲线点和加密密钥后获取同种次数,并保证本次获取的同种次数和上一次获取的同种次数不同,增强了该椭圆曲线加密的点乘方法的防御性。

本发明还提供一种椭圆曲线加密的点乘装置,该装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的椭圆曲线加密的点乘处理程序,所述椭圆曲线加密的点乘处理程序被所述处理器执行时实现所述的椭圆曲线加密的点乘方法的步骤。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有椭圆曲线加密的点乘处理程序,所述序被处理器执行时实现所述的椭圆曲线加密的点乘方法的步骤。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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