基于智能卡的素数域椭圆曲线密码的快速实现

合集下载

椭圆曲线加密算法及实例分析

椭圆曲线加密算法及实例分析

果有,就有两个满足平方根运算的y值(除非这个值是单个的y值 零)。这些(x,y)值就是E (a,b)中的点。

(2)椭圆曲线上点的周期计算 ①选取椭圆上一点q(x ,y );
00
②计算 q+q+…+q,使得 nq=0 成立的最小值 n,若 y =0,则 0
此点无周期。 (3)检测 n 是否是素数,如果不是,再回到第(2)步。 采用Miller-Rabin随机性素数测试算法:
56
2004.11
加 密 技 术
2.1 椭圆曲线密码体制思想
选取基域 F ,选择一条椭圆曲线(a,b,p值给定),在E(F )中


选一个周期很大的点,如选了一个点 G=(x , y ),它的周期为一


个很大的素数 n,记为∏(p)=n(n 为素数)。在椭圆曲线密码体制
①将 n-1 表示为二进制形式 b b …b ;
④依据 Bob 的公钥计算点(x , y )=kG(k 个 G 相加);


⑤计算点(x , y )=kQ,如果 x =0,则回到第③步;



⑥计算 C=m*x ; 2
⑦传送加密数据(x , y ,C)给Bob。


(2)Bob的解密过程
(阶)。经过计算得 n=223。 经过上面算法的验证,得知 n=223 是一个素数,所以点 v 可
在用序列密码对媒体流加密时,网络数据包的大小可以根据 网络的需要来设定,与分组加密不同,这里需要考虑的仅仅是网 络传输的需求。
整个加密过程是:播放过程一旦开始,密钥流生成器就不断 地产生出密码序列,服务器也周期性地发送网络数据包。在数据 流化的过程中,将随机数序列与数据包中的明文序列进行逐位

椭圆曲线密码学算法原理与实现

椭圆曲线密码学算法原理与实现

椭圆曲线密码学算法原理与实现椭圆曲线密码学算法是当前计算机安全领域中广泛使用的一种加密算法。

与传统的RSA算法相比,椭圆曲线密码学算法具有较高的安全性和更短的密钥长度,同时也更加适用于小型设备和无线通信领域。

本文将对椭圆曲线密码学算法的原理、优势以及实现进行介绍。

一、椭圆曲线密码学算法原理椭圆曲线密码学算法是基于椭圆曲线运算的一种加密算法。

在椭圆曲线上,可以定义加法和乘法等运算操作,从而构建出密钥系统。

具体来讲,椭圆曲线密码学算法使用的是离散对数问题,即找到一个整数k,使得G=kP,其中G和P是椭圆曲线上的点,k是密钥。

在使用椭圆曲线密码学算法时,有两个关键要素,分别是公钥和私钥。

公钥是任何人都可以获得的,而私钥只有信息发送者才能获得。

当信息发送者需要发送加密信息时,会使用接收者的公钥对信息进行加密,接收者收到信息后再使用自己的私钥进行解密。

这种方法可以保证信息在传输过程中不被他人窃取。

二、椭圆曲线密码学算法的优势椭圆曲线密码学算法相对于传统的RSA算法,有以下的优势:1. 更高的安全性。

使用椭圆曲线密码学算法时,需要使用的密钥长度较短,但是却具有比较高的安全性。

这是因为椭圆曲线操作比传统的大数因子分解更难以破解。

2. 适用于小型设备和无线通信领域。

使用传统的RSA算法时,需要较长的密钥,这在小型设备和无线通信领域会造成很大的问题。

而椭圆曲线密码学算法可以使用更短的密钥长度,可以在小尺寸的设备上使用,如智能卡和移动设备等。

3. 更高的运算速度。

相比传统的RSA算法,使用椭圆曲线密码学算法进行加密和解密的运算速度更快,可以更加高效地完成加密解密操作。

三、椭圆曲线密码学算法的实现椭圆曲线密码学算法的实现涉及到一系列的数学运算,包括椭圆曲线上的点的加法、乘法、求逆以及扩域操作等。

下面简单介绍一下椭圆曲线密码学算法的实现过程。

1. 密钥的生成。

在使用椭圆曲线密码学算法时,需要生成一对公钥和私钥。

生成公钥时,需要选择一个椭圆曲线和基点,然后随机选取一个整数作为私钥。

2022年职业考证-软考-信息安全工程师考试全真模拟易错、难点剖析B卷(带答案)第64期

2022年职业考证-软考-信息安全工程师考试全真模拟易错、难点剖析B卷(带答案)第64期

2022年职业考证-软考-信息安全工程师考试全真模拟易错、难点剖析B卷(带答案)一.综合题(共15题)1.单选题PKI中撤销证书是通过维护一个证书撤销列表CRL来实现的。

以下不会导致证书被撤销的是()。

问题1选项A.密钥泄漏B.系统升级C.证书到期D.从属变更【答案】B【解析】本题考查PKI相关知识。

每个证书都有一个有效使用期限,有效使用期限的长短由 CA 的政策决定。

有效使用期限到期的证书应当撤销。

证书的公钥所对应的私钥泄露,或证书的持证人死亡,证书的持证人严重违反证书管理的规章制度等情况下也要撤销证书。

故本题选B。

点播:公钥基础设施(PKI)是一种遵循既定标准的密钥管理平台,它提供了一种系统化的、可扩展的、统一的、可控制的公钥分发方法。

和证书的签发一样,证书的撤销也是一个复杂的过程。

证书的撤销要经过申请、批准、撤销三个过程。

2.案例题阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】密码学的基本目标是在有攻击者存在的环境下,保证通信双方(A和B)之间能够使用不安全的通信信道实现安全通信。

密码技术能够实现信息的保密性、完整性、可用性和不可否认性等安全目标。

一种实用的保密通信模型往往涉及对称加密、公钥密码、Hash函数、数字签名等多种密码技术。

在以下描述中,M表示消息,H表示Hash函数,E表示加密算法,D表示解密算法,K表示密钥,SKA表示A的私钥,PKA表示A的公钥,SKB表示B的私钥,PKB表示B的公钥,||表示连接操作。

【问题1】(6分)用户AB双方采用的保密通信的基本过程如图2-1所示。

请问图2-1所设计的保密通信模型能实现信息的哪些安全目标?图2-1中的用户A侧的H和E能否互换计算顺序?如果不能互换请说明原因:如果能互换请说明对安全目标的影响。

【问题2】(4分)图2-2给出了另一种保密通信的基本过程:请问图2-2设计的保密通信模型能实现信息安全的哪些特性?【问题3】(5分)为了在传输过程中能够保障信息的保密性、完整性和不可否认性,设计了一个安全通信模型结构如图2-3所示:请问图2-3中(1),(2)分别应该填什么内容?【答案】【问题1】实现完整性。

椭圆曲线在密码学中的应用

椭圆曲线在密码学中的应用

椭圆曲线密码学(Elliptic Curve Cryptography,ECC)是一种在现代密码学中广泛应用的公钥密码学算法。

它通过椭圆曲线的数学性质和运算法则,提供了一种高效、安全的加密和数字签名方案。

本文将从椭圆曲线密码学的基本原理、应用领域以及其优势等方面进行详细介绍。

首先,我们来了解一下椭圆曲线密码学的基本原理。

椭圆曲线密码学以椭圆曲线上的离散对数难题为基础,这个难题在当前的计算能力下是不可能被解决的。

利用这个难题,椭圆曲线密码学能够实现两个重要的功能:加密和数字签名。

在加密方面,椭圆曲线密码学可以用来构建公钥密码体制中的加密算法,如RSA算法的替代方案。

椭圆曲线公钥密码体制中,每个用户都有一对密钥:一个公钥和一个私钥。

公钥可公开,私钥需要保密。

发送者使用接收者的公钥对消息进行加密,接收者使用私钥解密。

由于离散对数难题的存在,即使获取到公钥也很难破解私钥从而获得消息内容。

在数字签名方面,椭圆曲线密码学可以用来构建公钥密码体制中的签名算法,如DSA算法的替代方案。

数字签名是用来确认数字信息的完整性和可信性的一种机制。

发送者使用自己的私钥对消息进行签名,接收者使用发送者的公钥验证签名的有效性。

利用离散对数难题,即使获取到签名和公钥也很难伪造有效的签名。

除了加密和数字签名,椭圆曲线密码学还有许多其他的应用。

例如,它可以用来构建密钥交换协议,如椭圆曲线Diffie-Hellman协议。

该协议可以在未经安全传输信道的情况下,使通信双方协商并建立一个共享密钥,从而实现安全通信。

此外,椭圆曲线密码学还可用于构建零知识证明、身份认证等密码学协议。

与其他公钥密码学算法相比,椭圆曲线密码学具有许多优势。

首先,椭圆曲线密码学的密钥长度相对较短,这意味着它在资源受限的环境中更加高效。

其次,椭圆曲线密码学提供了更强的安全性,相同安全强度的椭圆曲线密钥长度要短于RSA密钥长度,从而减少了计算和存储成本。

此外,椭圆曲线密码学还能够提供更高的性能和较小的带宽占用,适合于移动设备和无线通信等场景。

ECC算法和加密应用大全

ECC算法和加密应用大全

ECC算法和加密应用大全椭圆曲线密码算法(ECC)是一种基于椭圆曲线数学的公钥加密算法。

相比于其他公钥加密算法,ECC在相同的安全级别下,使用的密钥长度更短,计算速度更快,对资源的要求更低。

因此,ECC被广泛应用于移动设备、物联网和无线通信等领域。

ECC算法的优势在于它可以提供与RSA和DSA等其他公钥加密算法相同的安全性,但使用更短的密钥长度。

这使得ECC特别适合于资源有限的环境,如智能卡、传感器节点和无线传感器网络。

此外,由于ECC算法的运算速度较快,对于移动设备和网络通信来说,能够提供更好的性能和效率。

1.TLS/SSL:ECC算法在传输层安全协议(TLS)和安全套接层(SSL)协议中被广泛使用。

TLS和SSL用于保护互联网通信的安全性,通过使用ECC算法实现身份验证、密钥交换和数据加密。

2. 数字货币:ECC算法在许多加密货币中被用于生成公钥和私钥,以保证交易的安全性和隐私性。

比特币(Bitcoin)和以太坊(Ethereum)等主要的加密货币都使用了ECC算法。

3.移动设备安全:由于ECC算法对资源的要求较低,因此它在移动设备的安全性中得到了广泛应用。

包括手机、平板电脑和智能手表等移动设备都使用ECC算法来实现身份验证、数据加密和数字签名。

4.物联网安全:ECC算法在物联网中的应用也越来越广泛。

物联网设备通常具有较低的计算能力和存储容量,因此使用ECC算法能够满足物联网设备的要求,并提供足够的安全性。

5.数字签名:ECC算法可以用于生成和验证数字签名,以实现数据的完整性和身份验证。

数字签名在电子商务、电子合同和电子文件等领域中发挥着重要作用。

6.密码学教育:ECC算法也在密码学教育中被广泛应用。

作为一种高效且安全的公钥加密算法,ECC算法成为密码学课程中的重要内容。

总结:ECC算法是一种基于椭圆曲线数学的公钥加密算法,具有较短的密钥长度、较快的计算速度和较低的资源要求。

ECC算法在TLS/SSL、数字货币、移动设备安全、物联网安全、数字签名和密码学教育等领域得到了广泛应用。

椭圆曲线加密 类型

椭圆曲线加密 类型

椭圆曲线加密类型椭圆曲线加密算法是一种基于椭圆曲线数学理论实现的一种非对称加密算法。

它的优势是可以使用更短的密钥,来实现与RSA等其他非对称加密算法相当或更高的安全性。

椭圆曲线加密算法的类型主要有以下几种:- 椭圆曲线迪菲-赫尔曼密钥交换(ECDH):这是一种用于建立共享秘密的密钥交换协议,它利用了椭圆曲线上的离散对数问题的困难性,使得第三方很难从公开的椭圆曲线点中推导出私钥。

- 椭圆曲线数字签名算法(ECDSA):这是一种用于生成和验证数字签名的算法,它基于ElGamal签名算法,使用了椭圆曲线上的点乘运算和模逆运算。

它可以保证签名的完整性、真实性和不可否认性。

- 椭圆曲线ElGamal加密算法(ECElGamal):这是一种用于加密和解密消息的算法,它基于ElGamal加密算法,使用了椭圆曲线上的点加运算和点乘运算。

它可以保证消息的机密性和不可篡改性。

- 椭圆曲线Menezes-Qu-Vanstone密钥交换(ECMQV):这是一种用于建立共享秘密的密钥交换协议,它是对ECDH的改进,使用了两次椭圆曲线点乘运算,增加了安全性和效率。

它是美国国家安全局推荐的一种算法。

椭圆曲线加密算法的历史可以概括为以下几个阶段:- 1985年,Neal Koblitz和Victor Miller分别独立地提出了利用椭圆曲线数学理论实现公钥加密的思想,开创了椭圆曲线密码学的研究领域。

- 1994年,Daniel J. Bernstein提出了椭圆曲线的速度记录挑战,激励了许多密码学家对椭圆曲线加密算法的优化和实现。

- 1997年,David Kohel首次将椭圆曲线同源应用到密码学中,提出了一种基于同源的公钥加密方案。

- 2004年至2005年,椭圆曲线密码学的算法开始广泛应用于各种领域,如移动通信、智能卡、电子签名等。

- 2005年,美国国家安全局(NSA)宣布采用椭圆曲线密码的战略作为美国政府标准的一部分,推荐了一组包括椭圆曲线迪菲-赫尔曼密钥交换(ECDH)、椭圆曲线Menezes-Qu-Vanstone密钥交换(ECMQV)和椭圆曲线数字签名算法(ECDSA)等算法的套件。

基于智能卡的素数域椭圆曲线密码的快速实现

基于智能卡的素数域椭圆曲线密码的快速实现
文献 标 识 码 A 中 图分 类 号 T 3 9 P 0
文 章 编 号 1 0 — 3 1 ( 0 6)7 01 7 0 0 2 Ef c e c m p e e t to fP i ed ECC n S h g f in y I lm n a i n o rme Fil i o ma t Ca d r r
Ab t a t C mp r d i o h r p b i - e cy tg a h e , l p i C r e r p o r p y a t e h r c e si f s o t s r c : o a e w t t e u l k y rp o r p is E l t h c i c u v C y t ga h h s h c aa t r t o h r i c l n t e .h r f r t i t e o e mo t s i b e fr c n tan n io me t ,u h s s r c r . i p p r f s r s n s e gh k yT ee o e i s h n s u t l o o sr i t e v r n n s s c a ma a dT s a e r t p e e t a t h i t e e s n w y h o e r f l a h b s f l i t e mp e n ai n f l p i C r e r p o a h o s r h r a o s h c o s p me i d s t e a e i d n h i lme t t o E l t i e e o i c u v C y tg p y n ma r t c r .Th n t p f t e CC mp e n ain,n l d n d l r mut l a in n on d i gd u l g n a e f l ad e s s o h E i l me tt e o i cu i g mo ua l p i t a d p i t a d n / o b i a d b s e d i c o n i o e ain , r n l z d i e al e o t l meh d f e c s p r i e . i al h mp e n ai n e p rme t t n p rt s a e a ay e n d t iT pi to s o a h t a e g v dF n l t e i l me t t x e o . h ma e y o i n ai o r s l o p me fed EC d gtl sg au e ag r h eut f r i l i C ii in t r l o t m o s r c r i p e e t dT e r s l p v s t a t e a i n ma a d s r s n e . e u t r e h t h t h o

椭圆曲线加密算法实现

椭圆曲线加密算法实现

椭圆曲线加密算法实现椭圆曲线加密算法(ECDSA)的实现涉及到椭圆曲线的参数选择、密钥生成、签名和验证等过程。

1. 参数选择:要实现椭圆曲线加密算法,首先需要选择合适的椭圆曲线参数。

常用的椭圆曲线参数有两种类型:素数域曲线和二进制域曲线。

参数选择需要考虑安全性和效率。

常见的参数选择有NIST提供的曲线参数。

2. 密钥生成:椭圆曲线加密算法使用椭圆曲线上的点作为密钥。

生成密钥的步骤如下:- 随机选择一个私钥k,私钥范围在[1, n-1]之间,n为椭圆曲线的阶。

- 计算公钥P = kG,其中G为椭圆曲线上的基点。

- 公钥P和私钥k即为加密算法的密钥对。

3. 签名:签名的过程包括选择消息的哈希算法、生成签名的随机数、计算签名值等步骤。

- 随机选择一个正整数r,使得1<=r<n。

- 计算椭圆曲线上的点R = rG。

- 计算r对于素数n的模反元素s,即s = r^(-1) (mod n)。

- 计算签名值sig = (R, s),其中R为点,s为整数。

4. 验证:验证签名的过程包括计算验证签名的哈希值、计算验证点和比较验证点与签名值中的点的情况。

- 计算消息的哈希值。

- 计算签名值sig中的s的模反元素w,即w = s^(-1) (mod n)。

- 计算u1 = hash(m)w (mod n)和u2 = Rw (mod n)。

- 计算验证点X = u1G + u2P。

- 如果X的x坐标和签名的R的x坐标相等,验证成功;否则,验证失败。

上述是椭圆曲线加密算法(ECDSA)的基本实现步骤,具体实现过程需要参考具体的编程语言和密码学库的文档和示例代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1引言随着智能卡在电子商务、身份认证等许多领域越来越广泛的应用,它不仅被用来实现数据加密传输,还用来实现数字签名、密钥交换等功能。

人们对其安全性能的要求越来越高,不仅要求它能实现对称密码算法,还要求它实现非对称密码算法(也称公钥密码算法)。

智能卡中常用的公钥算法有RSA算法和椭圆曲线密码(ECC,EllipticCurveCryptography)算法。

RSA算法提出时间较早,应用非常广泛。

它的基础是大数因式分解的困难问题。

随着数学和计算机科学的发展,在RSA密码系统中,人们不得不采用越来越长的密钥来保障系统安全。

现广泛使用的密钥长度为1024bit,很快会用到2048bit的密钥。

更长的密钥意味着需要更大的存储空间,更强的计算能力。

ECC是由Koblitz和Miller在1985年分别提出的,其安全基础是有限域椭圆曲线阿贝尔(Abel)点群上离散对数困难问题。

在相同安全等级下,使用椭圆曲线密码体制要求的密钥长度更短[1]。

例如密钥长度为1024bit的RSA算法与密钥长度为160bit的ECC算法的安全等级相同,密钥二进制长度比约为7∶1。

短密钥使得ECC更适合在资源受限的环境下应用,例如智能卡、手机、PDA等。

本文选择在智能卡平台上实现素数域ECC快速算法,提出了一种在保证算法效率的条件下节约资源的ECC实现方案。

文章组织如下:第2节论述选择素数域实现ECC算法的理由;第3节分析椭圆曲线阿贝尔点群上的快速算法;第4节给出基域上算术运算的实现方法;第5节给出实验结论。

2基域的选择有限域F上的椭圆曲线方程可以表示为(1)式。

y2+a1xy+a3y=x3+a2x2+a4x+a6(1)其中a1,a2,a3,a4,a6∈F。

方程在域F上的所有解加上一个无穷远点构成的集合称为有限域F上的椭圆曲线,记为E/F。

在该集合上定义适当的加法规则,使之构成阿贝尔群。

于是,在有限域椭圆曲线阿贝尔点群上,也有类似于有限域乘法群上的离散对数问题:设p是E/F上的一个点,#E/F表示集合中点的个数,也称为椭圆曲线的阶。

存在整数k∈[1,#E/F(q)],使Q=kP,则椭圆曲线离散对数问题就是由给定的P,Q求出k,这也是一个困难问题,是椭圆曲线密码的基础。

在ECC系统的实现过程中,有限域F(基域)的选择很重要,选择不同的基域很大程度上决定了整个系统的效率。

目前常用的有限域有两类:二元扩域GF(2m)和大素数域GF(q)。

NIST规范及其它相关国际规范都是基于这两种域。

其中前者的域算术运算非常适合用专门的ECC硬件加速器实现,在实际中得到广泛应用。

后者的优势在于它的运算与RSA算法非常类似(在后面的分析中可以明显看到)。

RSA算法因为提出时间较长,应用非常广泛,在许多硬件平台上已有用于RSA算法的算术协处理器和软件快速算法,这些都可以用来方便地实现素数域椭圆曲线密码算法,不基于智能卡的素数域椭圆曲线密码的快速实现刘淳1张凤元2张其善11(北京航空航天大学电子工程学院,北京100083)2(北京化工大学信息科学与技术学院,北京100029)摘要椭圆曲线密码相比其它公钥密码,有密钥短的特点,尤其适合在智能卡等资源受限的条件下使用。

文章指出了在智能卡平台上选择素数域为基域实现椭圆曲线密码的原因。

并详细分析了椭圆曲线密码实现过程中的各个环节,包括标量乘法运算、点加/倍点运算和基域运算,指出了各个环节的优化措施。

最后给出了素数域椭圆曲线签名算法在智能卡上实现的实验数据,实验结果证明文中采用的实现方法是高效的。

关键词智能卡素数域椭圆曲线密码文章编号1002-8331-(2006)27-0137-03文献标识码A中图分类号TP309TheHighEfficiencyImplementationofPrimeFieldECConSmartCardLIUChun1ZHANGFeng-yuan2ZHANGQi-shan11(CollegeofElectronicEngineering,BeijingUniversityofAeronauticsandAstronautics,Beijing100083)2(CollegeofInformationScienceandTechnology,BeijingUniversityofChemicalTechnology,Beijing100029)Abstract:Comparedwithotherpublic-keycryptographies,EllipticCurveCryptographyhasthecharacteristicofshortlengthkey.Thereforeitistheonemostsuitableforconstraintenvironments,suchassmartcard.ThispaperfirstpresentsthereasonswhychooseprimefieldasthebasefieldintheimplementationofEllipticCurveCryptographyonsmartcard.ThenstepsoftheECCimplementation,includingmodularmultiplicationandpointadding/doublingandbasefieldoperations,areanalyzedindetail.Theoptimalmethodsofeachsteparegived.FinallytheimplementationexperimentationresultofprimefieldECCdigitalsignaturealgorithmonsmartcardispresented.Theresultprovesthattheimplementationmethodsusedishighefficiency.Keywords:smartcard,primefield,EllipticCurveCryptography(ECC)137计算机工程与应用2006.27表1不同坐标系下点加和倍点的计算量比较仿射坐标标准射影坐标雅克比射影坐标点加I+2M+S12M+2S12M+4S倍点I+2M+2S7M+5S4M+6S需要增加专门的ECC加速器硬件。

因此对于许多已有系统从RSA公钥算法转换到ECC算法而言,素数域GF(q)是一个有利的选择。

所以本文选择在素数域GF(q)上,利用RSA的算术协处理器实现ECC算法。

3椭圆曲线点群上的运算椭圆曲线点群上的运算被称为标量乘法运算,即计算:Q=kP。

以下分两部分分析如何高效地实现标量乘法运算。

3.1计算标量乘法标量乘法运算与RSA中的核心运算———模幂运算(C=Memodn)是相当的,一切用于计算模幂的快速算法都可以用来计算ECC中的标量乘法。

例如采用二进制方法可以计算模幂:假定公钥为(e,n),e可以表示为e=k-1i=0!ei2i,其中ei∈{0,1},k是e的二进制位长,且ek-1=1。

Me={…[(M2ek-1×Mek-2)2×Mek-3]2×…×Me1}×Me0(2)M的e次幂运算被分解为平方运算和乘法运算。

同样地,二进制方法也可计算标量乘法r=k-1i=0!ri2i,其中ri∈{0,1},k是r的二进制位长,且rk-1=1。

rP=(2k-1+rk-22k-2+rk-32k-3+…+r121+r0)P=2{…2[2(2P+rk-2P)+rk-3P]+…+r1P}+r0P(3)依照(3)式,标量乘法被分解为相同的点相加(简称倍点)和不同的点相加(简称点加)运算。

需要进行k-1次倍点运算,H(r)-1次点加运算,H(r)为系数r的Hamming重量。

在二进制方法基础上,围绕着寻找最短加法链的方向[2],m进制方法、定长窗口方法、变长窗口方法等等被提出来计算模幂和标量乘法。

在定长窗口和变长窗口方法中,预计算只需要计算点P的奇数倍,相比m进制方法计算量减少近一半,存储空间也相应减少。

三种方法的倍点计算次数基本相同,平均而言,变长滑动窗口方法中点加的计算次数要少,所以计算量最小。

理论证明平均计算量的大小关系是:m进制方法>定长窗口方法>变长窗口方法[2]。

本文选择了变长窗口方法来计算标量乘法。

下面给出算法描述。

算法1VariableLengthSlidingWindowsAlgorithm输入:r,P。

输出:Q=rP。

1.预计算并保存!P,!=3,5,7,…,2d-1,d为最大非零窗口的宽度。

2.将r分割为s个窗口,包括零窗口和非零窗口。

任一窗口中的值记为Fi,窗口宽度记为L(Fi),i=0,…,s-1,最大非零窗口的宽度为d,最小零窗口的宽度为q。

3.Q:=Fs-1P4.fori=s-2downto04a.Q:=2L(Fi)Q4b.ifFi≠0thenQ:=Q+FiP5.returnQ本文实现中d=4,q=1。

3.2计算点加和倍点由上述标量乘法运算的分析可以看到标量乘法运算Q=kP被分解为倍点运算(如4a)和点加运算(如4b)。

点加和倍点运算的公式是根据在椭圆曲线点集上定义的加法规则得出的。

令q>3是一个素数,a,b∈GF(q),满足4a2+27b2≠0,仿射坐标系下,GF(q)上一个椭圆曲线的方程为[3]:E:y2=x3+ax+b(4)设P(x1,y1),Q(x2,y2)是曲线上两个满足x1≠x2的点,R(x3,y3)=P+Q(点加),则:x3="2-x1-x2;y3="(x1-x3)-y1(5)其中"=(y2-y1)/(x2-x1)。

设P(x1,y1)∈E/F(q),y1≠0,R(x3,y3)=2P(倍点),则:x3="2-2x1;y3="(x1-x3)-y1(6)上两式中的加、减、乘、除(求逆)都是有限域GF(q)上的算术运算。

相对于乘法运算和求逆运算,加、减法的运算量可以忽略不计,因此我们在以下对算法计算量的比较中,只考虑进行乘法、平方和求逆运算的次数。

由(5)、(6)两式可见点加计算包含了两次乘法(以M表示)、一次平方(以S表示)和一次求逆(以I表示)。

倍点计算包含了2次乘法、2次平方和1次求逆。

在不同的坐标系下,椭圆曲线方程的形式不同,点加和倍点的表达式不同,计算的效率也不同。

在仿射坐标系下,表达式为(5)、(6)。

若令x=X/Z,y=Y/Z,代入(4)式中可得标准射影坐标下素数域椭圆曲线方程,代入(5)、(6)式中可得点加和倍点公式。

令x=X/Z2,y=Y/Z3,代入(4)式中还可以得到雅克比射影坐标系(JacobianProjective)下素数域椭圆曲线方程,代入(5)、(6)式可得点加和倍点公式。

相关文档
最新文档