椭圆曲线密码算法

合集下载

椭圆曲线加密算法

椭圆曲线加密算法

椭圆曲线加密算法椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为 ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学。

椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。

ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA 加密算法——提供相当的或更高等级的安全。

ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。

不过一个缺点是加密和解密操作的实现比其他机制花费的时间长1.椭圆曲线在数学上,椭圆曲线(英语:Elliptic curve,缩写为EC)为一代数曲线,被下列式子所定义y2=x3+ax+b其是无奇点的;亦即,其图形没有尖点或自相交。

满足此条件的a b满足:4a3+27b2≠0图1在基础上需要定义一个无穷远的点,将此点作为零点:此时椭圆曲线定义为:{(x,y)∈ℝ2|y2=x3+ax+b,4a3+27b2≠0}∪{0}在椭圆曲线中的群的运算律:1. 所有的点都在椭圆曲线上2. 0点作为群上的单元点即P+0=P3. P点关于X轴的对称点为P点的逆即P+(−P)=04.对于位于同一条直线上的三个点P,Q,R.则有P+Q+R=0图2P+Q+R=0(无限远点P Q R三个点的位置是任意的,他们满足加法的结合律,因为这个群是一个阿贝尔群。

2.椭圆曲线加法当P和Q不相等时(x P≠x Q)由于是在阿贝尔群上可以将P+Q+R=0改写为P+Q=−R所以在椭圆曲线上的加法定义为P Q 两点加法为P,Q两点连线与曲线的交点R的关于X轴对称点−R图2-3P+Q=-RP Q两点的直线的斜率为:m=y P−y Q x P−x Q这条线与曲线的交点为:R=(x R,y R)x R=m2−x P−x Qy R=y P+m(x R−x P)因此(x P,y P)+(x Q,y Q)=(x R,−y R)如果在图上表示即为上述的P+Q=−R当P 和Q 不相等时(x P =x Q )( y P =−y q )因为p +(−p )=0图 3 P Q 两点相同时直线的斜率为m =3x P 2+a 2y P 经计算的m =3x P 2+a 2y P x R =m 2−x P −x Q y R =y P +m(x R −x P )图 43.椭圆曲线标量乘法通过上面的加法运算我们可以得出其标量乘法运算可以得出nP=P+P+⋯+P⏟n times从上式可以看出当我们计算nP的时候需要做n次加法,如果n有k位那么的计算时间复杂度变为O(2k),这显然不是快捷的方式。

量子算法破解椭圆曲线离散对数问题

量子算法破解椭圆曲线离散对数问题

量子算法破解椭圆曲线离散对数问题传统密码学中,椭圆曲线密码算法(ECC)是一种常见且强大的加密技术,其安全性取决于椭圆曲线离散对数问题(ECDLP)的难解性。

然而,近年来量子计算机的发展引起了密码学界的关注,因为量子算法可能导致传统密码系统的破解。

本文将探讨量子算法如何破解椭圆曲线离散对数问题,并分析对密码学的潜在威胁。

1. 椭圆曲线密码算法简介椭圆曲线密码算法是一种基于数论的非对称加密算法,它利用椭圆曲线上的点运算来实现加密和解密操作。

与传统的RSA算法相比,ECC具有更强的安全性和更小的密钥长度。

其安全性依赖于椭圆曲线上的离散对数问题的难解性。

2. 量子计算机的威胁量子计算机利用量子位(qubit)的并行计算能力,可以在相对较短的时间内破解传统密码系统。

经典计算机对于大整数的因式分解和离散对数问题的解决需要花费很长时间,而量子计算机则能够在较短时间内找到这些问题的解。

Shor算法是一种著名的量子算法,可以用来破解RSA算法和椭圆曲线密码算法。

3. 量子算法破解ECDLP问题在经典计算机上,破解ECDLP问题的最佳算法是基于数域筛选的椭圆曲线参数搜索攻击,其时间复杂度为O(2^n/2)。

然而,Grover的量子搜索算法可以将这个时间复杂度减少到O(2^n/2)。

这意味着,量子计算机用较短的时间就能够找到椭圆曲线上的秘密密钥,从而破解ECC加密。

4. 加强安全性的方法为了防止量子计算机对椭圆曲线密码算法造成的破解威胁,可以采取以下一些方法:4.1 增加密钥长度:通过增加密钥的长度,可以增加破解ECC密码的难度。

然而,密钥长度的增加会导致计算和通信的开销增加,因此需要权衡安全性和性能之间的平衡。

4.2 使用量子安全的密码:量子安全密码是指在量子计算机的攻击下依然安全的密码算法。

例如,基于代码的密码和量子密钥分发协议都可以抵抗量子攻击。

4.3 密钥更新:定期更新密钥可以增加密码系统的安全性。

一旦量子计算机破解了某个密钥,及时更换新的密钥可以防止被攻击者进一步利用。

信息安全技术SM2椭圆曲线公钥密码算法

信息安全技术SM2椭圆曲线公钥密码算法

信息安全技术SM2椭圆曲线公钥密码算法1 范围GB/T XXXXX 的本部分规定了SM2椭圆曲线公钥密码算法涉及的必要数学基础知识与相关密码技术,以帮助实现其它各部分所规定的密码机制。

本部分适用于基域为素域和二元扩域的椭圆曲线公钥密码算法的设计、开发、使用。

2 符号和缩略语B MOV 阈。

正数B ,使得求取B q F 上的离散对数至少与求取q F 上的椭圆曲线离散对数一样困难。

deg ( f ) 多项式f (x )的次数。

E 有限域上由a 和b 定义的一条椭圆曲线。

E (F q ) q F 上椭圆曲线E 的所有有理点(包括无穷远点O )组成的集合。

ECDLP 椭圆曲线离散对数问题。

F p 包含p 个元素的素域。

F q 包含q 个元素的有限域。

F q * 由F q 中所有非零元构成的乘法群。

m 2F 包含m 2个元素的二元扩域。

G 椭圆曲线的一个基点,其阶为素数。

gcd(x , y ) x 和y 的最大公因子。

h 余因子,h=#E (F q )/n ,其中n 是基点G 的阶。

LeftRotate ( ) 循环左移运算。

l max 余因子h 的最大素因子的上界。

m 二元扩域F 2m 关于F 2的扩张次数。

mod f (x ) 模多项式f (x )的运算。

若f (x )是二元域上的多项式,则所有系数执行模2运算。

mod n 模n 运算。

例如,23 mod 7=2。

n 基点G 的阶(n 是#E (F q )的素因子)。

O 椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元。

P P = (x P , y P ) 是椭圆曲线上除O 之外的一个点,其坐标x P ,y P 满足椭圆曲线方程。

P 1+P 2 椭圆曲线E 上两个点P 1与P 2的和。

p 大于3的素数。

q 有限域F q 中元素的数目。

a, b q F 中的元素,它们定义q F 上的一条椭圆曲线E 。

r min 基点G 的阶n 的下界。

ecdsa算法原理

ecdsa算法原理

ecdsa算法原理ECDSA(Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名算法)是一种基于椭圆曲线的公钥密码学算法,用于生成和验证数字签名。

它在安全性、效率和资源需求方面具有很大优势,被广泛应用于现代密码体系中。

ECDSA的原理可以概括为以下步骤:1.选择椭圆曲线:首先需要选择一个合适的椭圆曲线,这个曲线通常由一个有限域上的方程定义。

常用的椭圆曲线有NIST、SECG等。

2.生成公钥和私钥:接下来,需要生成一个随机的私钥,并使用椭圆曲线上的离散对数运算生成对应的公钥。

私钥是用户保密的,而公钥是公开的。

3.签名生成:当需要对一些消息进行签名时,首先需要计算消息的哈希值。

然后,随机选择一个整数k,并计算椭圆曲线上的乘法k*G,其中G是椭圆曲线的基点。

将乘法运算结果中的x坐标记为r。

计算私钥和哈希值的乘积,并与r相加,然后对椭圆曲线阶数取余得到s。

4.签名验证:对于接收到的签名,需要验证签名的有效性。

首先,需要计算消息的哈希值。

然后,计算s的逆元r'。

计算两个椭圆曲线上的点r*G和s*Q,并将它们相加得到一个点P。

将P的x坐标与r进行比较,如果相等,则签名有效。

ECDSA的安全性基于椭圆曲线离散对数问题的困难性,即在有限域上寻找椭圆曲线上的点的离散对数是困难的。

这意味着,即使知道公钥和签名,也很难找到对应的私钥,从而泄露签名者的身份。

此外,ECDSA还具有较短的密钥长度和高效的运算速度,使其成为一种理想的数字签名算法。

ECDSA的应用非常广泛,例如在区块链技术中用于比特币和以太坊等加密货币的交易验证,确保交易的真实性和完整性。

此外,ECDSA还可用于安全通信协议中的数字签名认证、身份验证和密钥交换等场景。

尽管ECDSA具有许多优点,但也存在一些潜在的安全风险。

例如,使用弱曲线可能会导致私钥被轻松猜测出来。

因此,在使用ECDSA时,选择合适的椭圆曲线参数和密钥长度非常重要。

椭圆曲线离散对数类公钥密码算法

椭圆曲线离散对数类公钥密码算法

椭圆曲线离散对数类公钥密码算法
椭圆曲线离散对数类公钥密码算法是一种基于椭圆曲线离散对数问题的公钥密码算法。

它利用椭圆曲线上的点构成的群结构,设计出一种安全的公钥密码系统。

椭圆曲线离散对数问题是一个数学难题,其定义如下:给定椭圆曲线上的两个点P和Q,找到一个整数k,使得kP=Q(mod n)。

其中n是一个大素数,P和Q是椭圆曲线上的点,且P≠±Q。

这是一个非常困难的问题,因此在公钥密码学中有广泛的应用。

基于椭圆曲线离散对数问题的公钥密码算法有多种,其中最著名的可能是ElGamal算法和DSA(Digital Signature Algorithm)算法。

这些算法利用椭圆曲线上的点构成的群结构,设计出一种安全的公钥密码系统,可以实现加密、解密、数字签名等功能。

相比于传统的RSA算法等基于大整数分解问题的公钥密码算法,基于椭圆曲线离散对数问题的公钥密码算法具有更高的安全性和更小的密钥长度。

因此,它在许多领域都有广泛的应用,如网络安全、电子支付、电子政务等。

椭圆曲线加密算法(一)

椭圆曲线加密算法(一)

椭圆曲线加密算法(⼀)椭圆曲线加密和签名算法简述椭圆曲线密码学,简称ECC。

是⼀种建⽴公开加密的算法,也就是⾮对称加密。

和RSA类似。

被公认在给定密钥长度下最安全的加密算法。

应⽤范围很⼴,主要的三个技术TLS、PGP、SSH都在使⽤它,特别是以BTC为代表的数字货币。

椭圆曲线椭圆曲线并不是我们⾼中时学习的椭圆形状,其名字的由来是应为椭圆曲线的描述⽅程,类似于计算⼀个椭圆周长的⽅程。

这⾥⽤来加密的椭圆曲线的定义是⼀个特殊情况。

椭圆曲线暂时可以简单的理解为:其中:a和b决定了曲线在坐标系的不同形状。

举个例⼦:当b=1,a的取值从2到-3时,曲线的形状如下:特殊曲线:当a=b=0时(左),或a=-3,b=2时(右),这两条都不是符合标准的曲线。

阿贝尔群数学上,群是指定义了⼆元操作运算并且⽤符号“+”表⽰的⼀个集合。

则必须满⾜以下要求:封闭性:如果a和b都是群成员,那么a+b也是群成员。

组合性:(a+b)+c=a+(b+c)单位元:存在确切的⼀个值可以保证 a+0=0+a=a成⽴,我们称之为单位元逆元:每个成员都有⼀个相反数:对于任意值a必定存在b使得a+b=0这样的群我们称之为阿贝尔群。

另外阿贝尔群还应该满⾜交换律a+b=b+a我们所熟知的在整数范围内的加法运算(Z,+)就是阿贝尔群封闭性:a、b属于整数,a+b也属于整数组合性:(a+b)+c=a+(b+c)单位元:0值就是单位元逆元:a的逆元就是-a所以(Z,+)是⼀个阿贝尔群。

椭圆曲线的加法假设我们有这样⼀条椭圆曲线y2=x3-x,曲线上有两点P、Q,过P和Q做⼀条直线,交椭圆曲线于R'点,再过R'点做垂直于X轴的直线,交椭圆曲线于另⼀点R,我们定义P+Q=R。

当P=Q时候,则是过P点的切线交于椭圆曲线于R',此时R=2P,如图所⽰:当有k个相同的点P相加时,记做kP,如:P+P+P=2P+P=3P,如图:椭圆曲线密码利⽤上述“运算”中的“椭圆曲线上的离散多数问题”,就像RSA利⽤“⼤数质因数分解”⼀样。

椭圆曲线加密算法java实现

椭圆曲线加密算法Java实现椭圆曲线加密算法(Elliptic Curve Cryptography,ECC)是一种公钥加密算法,基于椭圆曲线的数学性质。

ECC的安全性基于解决椭圆曲线离散对数问题(ECDLP)的难度,该问题被认为是难以解决的。

ECC具有密钥长度短、计算效率高、安全性强等优点,因此被广泛应用于各种密码学应用中,如电子商务、数字签名、密钥交换等。

Java实现Java中有多种ECC库可供使用,其中最受欢迎的库之一是Bouncy Castle。

Bouncy Castle是一个开源的密码学库,提供了各种加密算法的实现,包括ECC。

要使用Bouncy Castle实现ECC,首先需要将Bouncy Castle库添加到项目的依赖项中。

可以在项目的pom.xml文件中添加如下依赖项:xml<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.70</version></dependency>添加依赖项后,就可以在Java代码中使用Bouncy Castle库实现ECC了。

下面是一个简单的Java程序,演示如何使用Bouncy Castle库生成ECC密钥对:javaimport org.bouncycastle.jce.provider.BouncyCastleProvider;import org.bouncycastle.math.ec.ECCurve;import org.bouncycastle.math.ec.ECPoint;import java.security.;public class EccKeyGeneration {public static void main(String[] args) throws Exception {// 添加Bouncy Castle提供者Security.addProvider(new BouncyCastleProvider());// 创建椭圆曲线ECCurve curve = ECCurve.Fp.getByName("secp256k1");// 生成密钥对KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC", "BC");keyPairGenerator.initialize(curve, new SecureRandom());KeyPair keyPair = keyPairGenerator.generateKeyPair();// 获取公钥PublicKey publicKey = keyPair.getPublic();// 获取私钥PrivateKey privateKey = keyPair.getPrivate();// 打印公钥和私钥System.out.println("Public Key: " + publicKey);System.out.println("Private Key: " + privateKey);}}运行该程序,将会输出生成的ECC密钥对。

ecc256椭圆曲线密钥生成算法

椭圆曲线密码算法(ECC)是一种非对称加密算法,它通过椭圆曲线上的点来实现密钥的生成与交换。

ECC的安全性与RSA等传统非对称加密算法相当,但它所需的密钥长度较短,使得它在移动设备等资源受限环境下具有明显的优势。

而椭圆曲线密钥生成算法就是ECC中用来生成密钥对的重要算法之一。

椭圆曲线密码算法的安全性建立在椭圆曲线离散对数问题的困难性上。

也就是说,在已知一个点P和整数kP的情况下,要很难计算出整数k。

这一性质使得椭圆曲线密码算法成为一种非常有前景的加密算法,因为相较于RSA等算法,可以用更短的密钥长度实现同等级的安全性。

椭圆曲线密钥生成算法的过程可以分为如下几个步骤:1. 选择椭圆曲线参数首先需要选择一个合适的椭圆曲线来作为公开参数。

这个椭圆曲线的选择直接影响到了密钥对的生成过程以及算法的安全性。

一般来说,椭圆曲线的安全性和性能是一对矛盾体,需要在其中寻找一个平衡点。

2. 生成私钥选择一个随机数作为私钥,私钥的大小通常是根据椭圆曲线的位数来确定的。

在ECC中,私钥通常是一个整数,它是生成公钥的重要参数。

3. 计算公钥利用椭圆曲线参数和私钥,可以通过一系列计算得到对应的公钥。

公钥通常是一个椭圆曲线上的点,它将被用于加密和数字签名等操作中。

4. 密钥对生成完成私钥和公钥组成了一个完整的密钥对,可以用于加密通信和身份认证等操作。

椭圆曲线密钥生成算法的实现涉及到大量数论和代数运算,其中包括模运算、点乘、椭圆曲线点加等复杂运算。

如何高效地实现这些运算对于算法的性能和安全性都有很大的影响。

椭圆曲线密钥生成算法是一种重要的非对称加密算法,它在移动设备、物联网设备等资源受限环境下具有明显的优势。

加之它在相同安全级别下所需的密钥长度较短,因此在当前信息安全领域有着广泛的应用前景。

椭圆曲线密钥生成算法(ECC)是当今信息安全领域中备受瞩目的一种加密算法。

其独特的数学原理和高效的计算性能使得它成为了许多安全通信协议和应用中不可或缺的一部分。

椭圆曲线加密算法研究及其在即时通讯系统中的应用的开题报告

椭圆曲线加密算法研究及其在即时通讯系统中的应用的开题报告一、选题背景随着互联网技术的迅猛发展,即时通讯系统(Instant Messaging System,IMS)已成为人们日常生活的重要组成部分,它为人们提供了实时在线交流的服务,而在这种服务中,信息的安全性显得尤为重要。

为了保障信息的安全,目前最常用的加密算法是RSA加密算法和Diffie-Hellman密钥交换算法。

但RSA算法在实际应用中存在许多问题,如加密速度慢、不足以满足多方通讯的需求等。

为了解决这些问题,一种新的加密算法——椭圆曲线加密算法(Elliptic Curve Cryptography,ECC)被提出,它同样具有较高的安全性,但在速度和存储空间上却优于RSA算法,因此在IMS中被广泛应用。

二、选题目的本文旨在通过对ECC的研究,探究其在即时通讯系统中的应用,主要达成以下目的:1.深入研究ECC算法的基本原理;2.分析ECC算法在安全性、速度和存储空间方面的优劣;3.设计并实现基于ECC的即时通讯系统,并与传统的加密算法进行比较,验证ECC的适用性和优越性。

三、论文内容与组织结构本文主要分为以下几个部分:第一部分:绪论介绍选题背景和选题目的,阐述本文的研究意义和价值。

第二部分:椭圆曲线密码算法的理论基础对ECC算法的基本概念和原理进行阐述,包括椭圆曲线的定义、离散对数问题以及ECC的加密过程等。

第三部分:椭圆曲线密码算法的应用研究探究ECC算法在安全性、速度和存储空间方面的优劣,与传统的加密算法进行比较,证明ECC的优越性。

第四部分:基于椭圆曲线密码算法的即时通讯系统设计与实现设计并实现基于ECC的即时通讯系统,分别从安全性、速度和存储空间三个方面进行测试和分析,与传统的加密算法进行比较,验证ECC的适用性和优越性。

第五部分:总结和展望总结本文的研究成果,回顾本文的研究意义和价值,并对ECC在即时通讯系统中的未来发展作出展望。

密钥算法】1椭圆曲线算法ECC

密钥算法】 1 椭圆曲线算法ECC椭圆曲线指的是由韦尔斯特拉斯(Weierstrass)方程y2+a1xy+a3y=x3+a2x2+a4x+a6所确定的平面曲线。

若F是一个域,ai∈F,i=1,2,…,6。

满足式1的数偶(x,y)称为F域上的椭圆曲线E的点。

F域可以式有理数域,还可以式有限域GF(Pr)。

椭圆曲线通常用E表示。

除了曲线E的所有点外,尚需加上一个叫做无穷远点的特殊O。

在椭圆曲线加密(ECC)中,利用了某种特殊形式的椭圆曲线,即定义在有限域上的椭圆曲线。

其方程如下:y2=x3+ax+b(mod p)这里p是素数,a和b为两个小于p的非负整数,它们满足:4a3+27b2(mod p)≠0其中,x,y,a,b∈Fp,则满足式(2)的点(x,y)和一个无穷点O就组成了椭圆曲线E。

椭圆曲线离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q的情况下求出小于p的正整数k。

可以证明,已知k和P计算Q比较容易,而由Q和P计算k则比较困难,至今没有有效的方法来解决这个问题,这就是椭圆曲线加密算法原理之所在。

椭圆曲线算法与RSA算法的比较椭圆曲线公钥系统是代替RSA的强有力的竞争者。

椭圆曲线加密方法与RSA方法相比,有以下的优点:(1)安全性能更高如160位ECC与1024位RSA、DSA有相同的安全强度。

(2)计算量小,处理速度快在私钥的处理速度上(解密和签名),ECC远比RSA、DSA快得多。

(3)存储空间占用小ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,所以占用的存储空间小得多。

(4)带宽要求低使得ECC具有广泛得应用前景。

ECC的这些特点使它必将取代RSA,成为通用的公钥加密算法。

比如SET协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法。

椭圆曲线ECC加密算法入门介绍(作者:ZMWorm[CCG]来源:)前言同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开密钥算法。

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

基本椭圆曲线解密
输入:椭圆曲线参数组(p,E,P,n),私钥d ,密文(C1,C2) 输出:明文m 1. 计算M=?,并从点M取出明文m 2. 返回(m)
椭圆曲线在软件注册保护的应用
将简介一种利用Fp(a,b)椭圆曲线进行软件注册的方法。
s(tP) (st ) P
如果椭圆曲线上一点P,存在最小的正整数n,使得数乘nP =O,则将n称为P的阶,若n不存在,我们说P是无限阶的. 事实上,在有限域上定义的椭圆曲线上所有的点的阶n都 是存在的.

例1:有限域F23之下,点P (0, 1) 是椭圆曲线 E: y 2 x 3 12 x 1 的生成数。求nP
(iii)
如果
s, t Z p
,则对所有的点 P E(F2 ) 而言 ( s t ) P sP tP
n

例子4:在有限域 F2 之下,取椭圆曲线
4
y2+xy=x3+g8x2+g2 上的两点P=(g3,g9) 及Q=(g,g5) ,其中 g=(0010) 为F 4的 2 生成数,且不可约多项式为f(x)=x4+x+1 若 P+Q=R=(x3,y3) 则R = ?


密钥对生成
输入:椭圆曲线参数组(p,E,P,n) 输出:公钥Q和私钥d 选择d[1,n] 计算Q=dP 返回(Q,d)
1.
2.
3.
基本椭圆曲线加密
输入:椭圆曲线参数组(p,E,P,n),公钥Q,明文m 输出:密文(C1,C2) 1. 将明文m表示为E(FP)上的点M 2. 选择k[1,n] 3. 计算C1=kP 4. 计算C2=M+kQ 5. 返回(C1,C2)
P = (0, 1) 2P = (13, 13) 3P = (5, 5) 4P = (3, 15) 5P = (6, 17) 6P = (19, 2) 7P = (17, 9) 8P = (18, 0)
注:
9P = (17, 14) 10P = (19, 21) 11P = (6, 6) 12P = (3, 8) 13P = (5, 18) 14P = (13, 10) 15P = (0, 22)
R (22,19)

例3:条件同例2,若 P P 2P R ( x3 , y3 ) ,则R ?
x3 x1 x2 mod p
2
81 18 18 mod 23 22 y3 ( x1 x3 ) y1 mod p
P P 2 P R (22,19)
g 9 g5 3 (g g9 ) g9 g9 3 g g g 13
注:g的乘幂如下
g8 (0101), g 9 (1010), g10 (0111), g11 (1110), g12 (1111), g13 (1101), g14 (1001), g15 (0001)
n n
y y 2 y y 2 1 2 1 x1 x2 a if P Q x1 x2 x1 x2 x3 x 2 b if P Q 1 x2 1
y1 y2 ( x1 x3 ) x3 y1 if P Q x x 1 2 y3 x 2 x y1 x x if P Q 3 1 3 1 x1
椭圆曲线密码算法(ECC)
Content
1 2
• 简单背景介绍
• 单击此处添加内容文本
3 4
5 6
• 单击此处添加内容文本
• 单击此处添加内容文本
• 单击此处添加内容文本
• 单击此处添加内容文本

椭圆曲线是由Neil Koblitz和Victor Miller两位学者分别 于1985年首先独立提出。

例5 条件同例4,若 P P 2P R ( x3 , y3 ) ,则R = ?
x 3 x1 g g
3 2 6
2
b x12
2 3 2 11
y y 3 x12 x1 1 x 3 x 3 x1 =g 32 g 3 g 9 g 3 g g g6 g3 g g5
3x12 a 3 182 16 mod p mod 23 9 2 y1 2 14
x3 2 x1 x2 mod p 81 18 18mod 23 22 y3 ( x1 x3 ) y1 mod p 9(18 22) 14mod 23 19
y1 y2 y1 y2 x3 x1 x2 a x1 x2 x1 x2 g 9 g5 g 9 g5 3 8 g g g 3 g3 g g g g9
2 2
y1 y 2 y3 ( x1 x 3 ) x 3 y1 x1 x 2
9(18 22) 14 mod 23 19
椭圆曲线在
(i) (ii)
n
下的运算规则
加法规则: 对所有的点 P E(F2 ) 则 P O O P P ,P ( P) O 令 P ( x1, y1 ) E(F2 ) 及 Q ( x2 , y2 ) E(F2 ) ,P Q ( x3 , y3 ) 且 P Q ,则x3,y3分别为
椭圆曲线具有的性质: 有限域上椭圆曲线在点加运算下构成有限交换群,且 其阶与基域规模相近; 类似于有限域乘法群中的乘幂运算,椭圆曲线多倍点 运算构成一个单向函数

RSA 与 ElGamal 系统中需要使用长度为 1024 位的模数, 才能达到足够的安全等级。而 ECC 只需使用长度为 160 位的模数即可,且传送密文或签章所需宽较少,并已 正式列入IEEE 1363标准
在实数域中,椭圆曲线可定义成 若方程式没有重复的因式或 4a 3 27b2 0 ,E(a,b)是 一条非奇异椭圆曲线。 否则, E ( a,b )是一条奇异椭圆曲线(某些数的逆元素 (inverse)将不存在)。

E: y x 7 x 3
2
3
E : y 2 x3 73
E : y 2 x3 x2
E : y 2 x3
满足方程的任意一点是否都存在切线
加法运算

两异点相加:假设 P 和 Q 是椭圆曲线上两个相异的点, 而且P不等于-Q 。若P +Q=R ,则点R是经过P、Q两点 的直线与椭圆曲线相交之唯一交点的负点。

双倍的点:令P +P=2P ,则点2P是经过P的切线与椭圆 曲线相交之唯一交点的负点。
g g


g g
2 P R ( g, g 5)
椭圆曲线密钥生成


令E是FP上的椭圆曲线,P是E(FP)上的点,设P的阶是 素数n,则集合<P>={∞,P,2P,3P,…,(n-1)P}是由P生成的 椭圆曲线循环子群。 素数p,椭圆曲线方程E,点P和阶n构成公开参数组。
私钥在区间[1,n-1]内随机选择的正整数d,相应的公钥 是Q=dP。 由公开参数组和公钥Q求私钥d的问题是椭圆曲线离散 对数问题(ECDLP)
使ECC成为构造公开密钥密码体制一个有力的工具。
椭圆曲线并非椭圆,之所以称为椭圆曲线是因为它的曲线 方程与计算椭圆周长的方程类似。 2 3 2 y axy by x cx dx e 其中a, b, c, 椭圆曲线的方程: d, e是满足某些简单条件的实数。 椭圆曲线有一个特殊的点,记为 O ,它并不在椭圆曲线 E 上,此点称为无穷远点。 一条椭圆曲线 E(x,y) 是由全体解 (x,y) 再加上一个无穷远点 构成的集合。(椭圆曲线上的是有限的) E {( x, y) | Y 2 aXY bY X 3 cX 2 dX e} {O}

2 3x1 a if P Q 2 y1
y3 ( x1 x3 ) y1

如果 s, t Fp,则对所有的点 P E( Fp ) 而言,
( s t ) P sP tP


乘法规则: 如果 k Fp ,则对所有的点 P E( Fp ) 而言, kP=P+P+…+ P (k个P相加) 如果 s, t Fp ,则对所有的点 P E( Fp ) 而 言,
椭圆曲线运算规则

椭圆曲线在模p下的运算规则
加法规则: 对所有的点 PE(Fp),则P+O=O+P ,P+(-P)=O 令P ( x1, y1 ), Q ( x2 , y2 ) E(Fp ) 及 P Q ( x3 , y3 ) 且 P Q ,则 y2 y1 if P Q 2 x x1 x2 x x 3 2 1
E( F23 ) 15 其实还要加上一个无穷远点,故E上的点共有16个,点P的秩n
= 16。
在坐标上画出,并观察 图像特点

例2:在有限域F23之下,取椭圆曲线
E : y 2 x3 16x 10 上的两点 P (18, 14)及 Q (5, 10) 若 P Q R ( x3 , y3 ) 则R=?
相关文档
最新文档