椭圆曲线实例
密码学椭圆曲线的嵌入例题

密码学椭圆曲线的嵌入例题密码学中,椭圆曲线是一种常用的加密算法,它基于椭圆曲线上的离散对数问题,具有高度安全性和效率。
下面是一个关于椭圆曲线的嵌入例题,从多个角度进行全面的回答。
例题,假设我们有一个椭圆曲线E,其方程为y^2 = x^3 + ax + b,其中a和b是曲线的参数。
现给定曲线E的参数为a = 2,b = 3,求曲线E的所有点。
回答:从代数的角度来看,我们可以通过将参数a和b代入椭圆曲线方程来求解曲线E的所有点。
将a = 2,b = 3代入方程y^2 = x^3 + ax + b,得到y^2 = x^3 + 2x + 3。
然后我们可以使用数值计算的方法,例如穷举法或者使用计算机程序,来找到满足该方程的所有整数点或有理数点。
通过计算,我们可以找到曲线E的所有点。
从几何的角度来看,椭圆曲线是一个平面上的曲线,其点的集合形成了一个封闭的曲线。
曲线E的所有点包括无穷远处的一个特殊点O,以及其他有限个点。
这些点具有特定的几何性质,例如曲线上的两个点可以通过曲线的斜率来连接,得到曲线上的另一个点。
通过使用这些几何性质,我们可以逐步确定曲线E的所有点。
从密码学的角度来看,椭圆曲线的嵌入是指将曲线E定义在一个有限域上,以便在密码学中应用。
常用的有限域是有限素数域GF(p),其中p是一个素数。
在密码学中,曲线E的参数a和b以及有限域的素数p被选取为保密的参数,以确保曲线的安全性。
通过在有限域上定义椭圆曲线,我们可以进行各种密码学操作,例如点的加法、倍乘等,从而实现加密和签名等功能。
从计算机科学的角度来看,椭圆曲线的嵌入是指将曲线E的参数和点的坐标表示为计算机可以处理的格式。
通常,我们使用有限域上的二进制表示来表示椭圆曲线的参数和点的坐标。
例如,可以使用二进制位串来表示参数a和b,以及点的坐标x和y。
在计算机中,我们可以使用特定的算法和数据结构来实现椭圆曲线的各种操作,例如点的加法、倍乘等。
这样,我们可以在计算机系统中高效地进行椭圆曲线的计算和应用。
第十一讲-椭圆曲线

1984年,Hendrik Lenstra提出了依靠椭圆曲 线性质分解整数的精妙算法。这一发现激 发了学者进一步研究椭圆曲线在密码和计 算数论的其它应用。
椭圆曲线密码在1985年分别由Neal Koblitz 和Victor Miller提出。椭圆曲线密码方案为 公钥机制,提供如同RSA一样的功能。但是 ,它的安全性依赖不同的困难问题,也就是 椭圆曲线离散对数问题(ECDLP)。
2.3 加法法则(续) 弦和切线法则(续)
2.3 加法法则(续)
No Image
2.3 加法法则(续)
2.3 加法法则(续) 代数公式
2.3 加法法则(续)
3 有限域上的椭圆曲线
3.1 模素数p的椭圆曲线,p≠2,3情形 3.1.1 加法法则
3.1.2 例子
3.1.2 例子(续)
3.2 有限域GF(2n)上的椭圆曲线
我们知道解决分解整数问题需要亚指数时间
复杂度的算法,而目前已知计算ECDLP的
最好方法都需要全指数时间复杂度。这意味
着在椭圆曲线系统中我们只需要使用相对于 RSA 短多的密钥就可以达到与其相同的 安全强度。例如,一般认为160比特的椭圆 曲线密钥提供的安全强度与1024比特RSA密
钥相当。使用短的密钥的好处在于加解密速 度快、节省能源、节省带宽、存储空间。
5.1 椭圆曲线分解算法
5.1 椭圆曲线分解算法(续)
5.1 椭圆曲线分解算法(续)
5.1 椭圆曲线分解算法(续)
5.1 椭圆曲线分解算法(续)
5.1 椭圆曲线分解算法(续)
5.2 退化曲线
5.2 退化曲线(续)
4.1 明文表示(续)
4.2 椭圆曲线ElGamal密码系统
椭圆曲线——精选推荐

椭圆曲线⼀、概述椭圆曲线加密算法依赖于椭圆曲线理论,后者理论涵盖的知识⽐较深⼴,⽽且涉及数论中⽐较深奥的问题。
经过数学家⼏百年的研究积累,已经有很多重要的成果,⼀些很棘⼿的数学难题依赖椭圆曲线理论得以解决(⽐如费马⼤定理)。
本⽂涉及的椭圆曲线知识只是抽取与密码学相关的很⼩的⼀个⾓落,涉及到很浅的理论的知识,同时也是⼀点⽐较肤浅的总结和认识,重点是利⽤椭圆曲线结合数学技巧阐述加密算法的过程和原理。
本⽂特意构造有⽐较多的实例⽅便理解其过程和原理。
⼆、椭圆曲线椭圆曲线⽅程来源于椭圆积分,后者来最初来源于计算椭圆周长的问题,有⼀段时间的历史了,在欧拉时期就开始研究。
椭圆周长没有精确的初等函数的公式表⽰,只有近似的公式表⽰,精确的椭圆周长可以⽤不定积分表⽰。
现在⼀般将形如如下形式的积分定义为椭圆积分:其中R是其两个参数的有理函数,P是⼀个⽆重根的3或4阶多项式,⽽c是⼀个常数。
椭圆曲线⽅程与P(t)表现形式⽐较相像。
数学上的椭圆曲线⼀般由如下形式给出:椭圆曲线都是关于X轴对称的曲线。
典型的椭圆曲线如:,其图像为:更多的椭圆曲线图像:限定Δ不为零有特殊的意义。
如果判别式Δ(E)等于零,由三次⽅程判别式判定理可知,⽅程x3+ax2+bx+c=0存在⼆重根或者三重根,曲线表现为"⾃相交"或者有“尖点”。
两个典型的例⼦是:在密码学中⽤到的椭圆曲线⽅程⼀般限定为:也即是这⾥的⼆次项系数为0。
三、椭圆曲线算术椭圆曲线上可以定义⼀些很有意思的特殊运算规则。
⼀般来说会定义两种运算:加法和数乘运算。
加法运算是点与点之间的运算;数乘运算基于加法运算,重复的加法运算就是数乘。
1、实数域的加法运算1.1、加法运算的⼏何解释已知椭圆曲线上两个不同的点P和Q,则这两个点之和R=P+Q可以通过如下操作得到:过P、Q两点做直线L,与椭圆曲线相交于第三点,该点关于X轴的对称点即是所求的R点。
椭圆曲线的这种加法运算有⽐较明确的⼏何含义。
椭圆曲线算法的基本原理及实现

椭圆曲线算法的基本原理及实现1、基本概念1)椭圆曲线⽅程的⼀般形式:y^2 = x^3 + a*x + b,其中要求满⾜不等式 4*a^3 + 27*b^2 ≠ 0例如:y^2 = x^3 + x + 1 mod 232)椭圆曲线上的点的加法公式(适⽤于 P ≠ Q 的情况):设 P = (x1, y1),Q = (x2, y2),P + Q = R = (x3, y3),t = (y2-y1)/(x2-x1),x3 = t^2 -x1 - x2,y3 = t*(x1 - x3) - y13)椭圆曲线上的点的加法公式(当上⾯的 P = Q 时):P + P = R = (x3, y3),t = (3*x1^2+a)/(2*y1),x3 = t^2 - x1 - x1,y3 = t*(x1 - x3) - y12、准备步骤1)随机⽣成⼀个数 d 做私钥2)选椭圆曲线上的⼀个点 P,计算 Q = d*P 做公钥设 A 要加密 M 送给 B,B 的私钥为 d,公钥为 Q = d*P 3、加密过程1)A 随机⽣成⼀个数 k2)计算 k*P 和 k*Q3)取 k*Q 的横坐标与 M 异或得到密⽂ C4)A 发送 k*P 和密⽂ C 给 B4、解密过程1)B ⽤⾃⼰的私钥 d 计算 d*(k*P)2)B ⽤ d*(k*P) 的横坐标与密⽂ C 异或得到 M5、加密及解密的实现1import java.util.ArrayList;2import java.util.HashMap;34public class Main {5// 选⽤的椭圆曲线为 y^2 = x^3 + x + 1 mod 236private static int a = 1, b = 1;7private static HashMap<Integer, Integer> myPoints = new HashMap<>(); 8private static final int MAX = 255;910public static void main(String[] args) {11// 明⽂和密⽂数组的初始化12char[] myInfo = "1700802067GJQ".toCharArray();13int[] i_mingwen = new int[myInfo.length];14int[] miwen = new int[i_mingwen.length];15char[] c_mingwen = new char[miwen.length];16for (int i = 0; i < myInfo.length; i++) {17 i_mingwen[i] = (int)myInfo[i];18 }1920// 初始化椭圆曲线上的整数点21 initPoints();2223// 显⽰椭圆曲线上的整数点24// showPoints();2526// 获取椭圆曲线上点的横坐标集合27 Object[] objArr = myPoints.keySet().toArray();28 ArrayList<Integer> myList = new ArrayList<>();29for (Object o: objArr) {30 myList.add((Integer) o);31 }3233// 随机取椭圆曲线上⼀个点34int Px = myList.get((int)(Math.random()*myList.size()));35int Py = myPoints.get(Px);36 MyPoint p = new MyPoint(Px, Py);3738// 随机取⼀个 8bit 的数作为私钥39int d = (int)(Math.random()*MAX) + 1;40// 计算Q41 MyPoint Q = new MyPoint(p);42 myECC(Q, 1, d);4344// 随机取⼀个 8bit 的数k45int k = (int)(Math.random()*MAX) + 1;4647// 计算 k*P 和 k*Q48 MyPoint kP = new MyPoint(p);49 myECC(kP, 1, k);50 MyPoint kQ = new MyPoint(Q);51 myECC(kQ, 1, k);5253// 加密54int kQx = kQ.getX();55for (int i = 0; i < i_mingwen.length; i++) {56 miwen[i] = i_mingwen[i] ^ kQx;57 }5859// 计算d*(k*P)60 MyPoint dkP = new MyPoint(kP);61 myECC(dkP, 1, d);6263// 解密64int dkPx = dkP.getX();65for (int i = 0; i < miwen.length; i++) {66 c_mingwen[i] = (char) (miwen[i] ^ dkPx);67 }6869// 输出对密⽂解密后的明⽂70 System.out.println(c_mingwen);71 }7273public static void initPoints() {74double y;75for (int i = 0; i < 23; i++) {76 y = Math.sqrt((Math.pow(i, 3) + i + 1)%23);77if (y == (int)y) myPoints.put(i, (int)y);78 }79 }8081public static void myECC(MyPoint p, int i, int d){82if (i < d) {83int t = (3*(int)Math.pow(p.getX(), 2)+a)/(2*p.getY());84int x = (int)(Math.pow(t, 2)) - 2*p.getX();85int y = t*(p.getX() - x) - p.getY();86 p.setX(x);87 p.setY(y);88 myECC(p, i+1, d);89 }90 }9192public static void showPoints() {93 myPoints.forEach((k, v) -> {94 System.out.println("key: " + k + ", " + "value: " + v);95 });96 }97 }9899class MyPoint {100private int x;101private int y;102 MyPoint() {}103 MyPoint(int x, int y) {104this.x = x;105this.y = y;106 }107 MyPoint(MyPoint P) {108this.x = P.getX();109this.y = P.getY();110 }111public void setX(int x) {112this.x = x;113 }114public void setY(int y) {115this.y = y;116 }117public int getX() {118return this.x;119 }120public int getY() {121return this.y;122 }123 }6、注解:1)A ⽤ k*P 与 B ⽤ d*(k*P) = k*(d*P) = k*Q2)经过两次异或得到原⽂(明⽂)参考⽂档:https:///view/ff42b6610b1c59eef8c7b477.html遇到的疑问(已解决):1)Objct[] 数组不能直接转换为 ArrayList。
椭圆曲线的基本概念

椭圆曲线的基本概念椭圆曲线设F是⼀个域,a,b∈F,则⽅程y2=x3+ax+b称为域F上的椭圆曲线。
上述⽅程称为维尔斯特拉斯⽅程,其判别式为y2+axy+by=x3+cx2+dx+e⽐如,实数域上的椭圆曲线如下:椭圆曲线上的加法:设F是⼀个域,a,b∈F,令E={(x,y)|y2=x3+ax+b}∪{∞},其中{∞}为⽆穷远点,则可以定义椭圆曲线上的加法为:1)设P1,P2∈E,令R为P1,P2两点连线与椭圆曲线的交点关于X轴的对称点,则P1+P2=R2)如果P1,P2两点关于X轴对称,那么规定他们连线与椭圆曲线相交于⽆穷远点,记为O3)任何⼀个点通过上⾯的运算规则与O相加的和都是它本⾝椭圆曲线上的加法的性质:∀P,Q,R∈E,如果P,Q,R在⼀条直线上,那么P+Q+R=O定理:若规定O+O=O,则(E,+)构成⼀个阿贝尔群(交换群),其中∞为单位元,记为O,P=(x,y)的逆元为Q=(x,-y)实例:设y2=x3+x+6是F11上的椭圆曲线,求(3,6)+(5,2)k=6−23−5=9y-6=k(x-3)y=9x+1将上式代⼊y2=x3+x+6中得:(9x+1)2=x3+x+6=x3+7x2+5x+5(x-3)(x-5)(x-7)=0∴ x=7y=9x+1=9∴(3,6)+(5,2)=(7,-9)=(7,2)椭圆曲线密码以下三类公钥系统被认为是安全有效的:1. 基于⼤整数分解问题的RSA型公钥密码;2. 基于有限域上离散对数问题的ElGamal型公钥密码;3. 基于椭圆曲线离散对数问题的椭圆曲线公钥密码。
椭圆曲线公钥密码优势:对于椭圆曲线离散对数问题,⽬前不存在亚指数时间算法,从⽽为达到相同安全性所需的密钥尺⼨更⼩:– RSA 密码体制:模长1024 ⽐特;– 椭圆曲线密码体制:模长160 ⽐特。
椭圆曲线密码体制适⽤于计算、存储、带宽受限,但⼜要求⾼速实现的应⽤领域,例如智能卡、⽆线通讯等。
El'Gamal密码⽅案的椭圆曲线形式:Gen:设E为F q上的椭圆曲线,⼀般记为E(F q),设P = (x p,y p)∈E(F q),且P的次数⾜够⼤,任取1 < s < ord(P),令Q = sP = (x q,y q),则E(F q),P,Q为公钥,s为私钥Enc:消息m满⾜0 ≤ m < F q,任取1 < r < F q,计算(x1,y1) = rP,(x2,y2) = rQ,c = m·x2,则密⽂为(x1,y1,c)Dec:计算(x',y') = s(x1,y1),再计算m'=c·x′−1正确性验证:(x',y') = s(x1,y1) = srP = rsP = rQ = (x2,y2),所以x' = x2,m' = c·x′−1 = c·x−12 = m·x2·x−12 = mProcessing math: 100%。
椭圆曲线y^2x^3135x278的整数点

29
是 (3)的 正 整 数 解 )的 最 小 数 ,则 (3)式 的 一 切 正 整 数 解 可 由 下 式 确 定
u +v 槡D = (u1 +v1 槡D )k,k=1,2,….
引理2[8] 若 D 是一个非平方的正整数,则方程
X2 -DY4 =1,X ,Y ∈ N+
(恰有2组解的充要条件是 D ∈ {1 785,28 560}或者2u1 和v1 都是平方数,
椭圆曲线y2=x3+135x-278的整数点
崔保军
(甘肃民族师范学院 数学系,甘肃 合作 747000)
摘 要:运用同余、递归序列等初等方法讨论了椭圆 曲 线 y2=x3+135x-278 上 整 数 点 的 问 题,证 明 该 曲 线 仅 有 整 数 点 (x,y)= (2,0),(14,±66),(284 594,±151 823 364). 关 键 词 :椭 圆 曲 线 ;同 余 ;整 数 点 ;递 推 序 列 中 图 分 类 号 :O156 文 献 标 志 码 :A 文 章 编 号 :1000-2162(2019)02-0028-05
a2 =7vn +un -1
(6)
或
a2 =7vn -un -1.
(7)
易验证下列关系式成立
un+m =unum +3vnvm ,
vn+m =umvn +vmun ,
u2n =un2 +3vn2 =2un2 -1=6vn2 +1,
v2n =2unvn ,
un+2rt ≡ (-1)tun(modur),
其中 (u1,v1)是(3)式的最小解.
引理3[10] 当 D =12时,方程y2 =Dx4 +1无正整数解.
引理4[11] 方程3x4 -y2 =2仅有正整数解 (x,y)= (1,1).
椭圆组合曲线和图形

椭圆组合曲线和图形1椭圆曲线性质线形两焦点椭圆是规范标准的闭合曲线图形,曲线上的曲率呈现有规律的变化。
不同椭圆的曲线弧段,通过相切连接形成独特的组合曲线和图形。
把与椭圆曲线和图形类似,不含有收缩和扩张弧段的协调、匀称的椭圆组合曲线和图形,称为规范标准的曲线和图形。
其主要特征:(1)两条椭圆曲线相切连接形成的组合曲线是光滑曲线,见图3。
图3 椭圆组合曲线示意图NT是以D、A为焦点的椭圆弧、TG是以C、B为焦点的椭圆弧,两个椭圆内切于T点,形成NTG组合曲线;椭圆曲线是连续可导的,切点的导数相等。
因此NTG组合曲线是光滑曲线。
(2)两条对称相等的椭圆弧,对称内切于另一个椭圆形成的三段弧组合曲线,是对称、规范标准的光滑曲线,见图4。
图4 椭圆组合曲线示意图TG、PN弧段是以B、V和C、U为焦点,对称相等的两个椭圆弧,对称内切于以D、A为焦点的椭圆,切点为T、P,形成的GTPN 组合曲线是对称、协调、规范标准的光滑曲线。
(与右边的以D、A、为焦点椭圆的TP弧相比,图形的形状不同,但曲线的图形特征是相同的,即都是对称、规范标准光的滑曲线图形。
)三段弧曲线的中间弧段称为主弧段,两头称为端弧段。
两头弧段与中间弧段相切连接且对称相等,是组合曲线图形的基本单位。
三段弧曲线之间通过两端重合连接形成的闭合曲线图形是规范标准的光滑曲线;相切连接形成的是光滑曲线则不是规范标准的光滑曲线。
2椭圆组合曲线图形(3)两个椭圆对称内切连接形成的组合曲线,是具有一条对称轴规范标准的闭合光滑曲线。
图形是由两个椭圆的两条对称椭圆弧组成,且符合卵圆图形特征,故称为两段弧卵圆,见图5。
图5 椭圆组合曲线示意图由B、C和D、A为焦点的两个椭圆,对称内切于P、T两点,形成的组合曲线是对称、协调、规范光滑曲线图形。
当切点为椭圆的对称轴时,卵形曲线由两个不同椭圆的各自半条对称曲线组成,形成特定的两段弧卵圆。
(4)两条不同的三段弧曲线,两端弧段重合连接,形成具有一条对称轴的规范、标准闭合曲线图形是由四个椭圆的四条弧组成的卵形曲线,且符合卵圆图形特征,故称为四段弧卵圆,见图6。
椭圆曲线常用的三次结论专题练习

椭圆曲线常用的三次结论专题练习椭圆曲线是密码学中常用的数学工具,它具有许多有趣的性质和结论。
本文将介绍椭圆曲线常用的三次结论,并提供相关的练题。
1. 结论一:三次点倍乘法三次点倍乘法是椭圆曲线中的基本操作,用于计算两个点之间的乘积。
其算法如下:输入:椭圆曲线上的点P和一个整数k。
输出:点Q,满足Q = kP。
算法步骤:1. 初始化点Q为O(标识元素)。
2. 将点P复制为R。
3. 将整数k转换为二进制形式,从高位到低位依次遍历。
4. 若遍历位为1,则执行点加法:Q = Q + R。
5. 执行点加法:R = R + R。
6. 若遍历位为0,则继续遍历下一位。
7. 若仍有未遍历的位,则返回步骤4。
8. 返回点Q。
2. 结论二:三次点的加法椭圆曲线上的点加法是指将两个点相加得到另一个点的操作。
其算法如下:输入:椭圆曲线上的两个点P和Q。
输出:点R,满足R = P + Q。
算法步骤:1. 若P = O,则返回Q;若Q = O,则返回P。
2. 计算斜率s:- 若P = Q,则计算斜率s = (3 * P.x^2 + a) / (2 * P.y)。
- 若P ≠ Q,则计算斜率s = (Q.y - P.y) / (Q.x - P.x)。
3. 计算点R的x坐标:R.x = s^2 - P.x - Q.x。
4. 计算点R的y坐标:R.y = s * (P.x - R.x) - P.y。
5. 返回点R。
3. 结论三:三次点的减法椭圆曲线上的点减法是指将两个点相减得到另一个点的操作。
其算法如下:输入:椭圆曲线上的两个点P和Q。
输出:点R,满足R = P - Q。
算法步骤:1. 若Q = O,则返回P。
2. 计算点Q的相反数:Q.negate()。
3. 执行点加法操作:R = P + (-Q)。
练题:1. 给定椭圆曲线 y^2 = x^3 + ax + b 和点P(x1, y1),计算2P,3P,4P的坐标。
2. 给定椭圆曲线 y^2 = x^3 + ax + b 和点P(x1, y1),计算P + Q 的坐标,其中Q为另一个任意点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 基于椭圆曲线上的离散对数问题—ECC
实例:(多项式基于有限域GF(2^m)上的椭圆曲线) :
考虑多项式 f(x) = x4 + x + 1定义的域GF(2^4). 元素g = (0010)是生成元.用多项式表示 为 g=x , g的幂分别为:
g0 = (0001) g1 = (0010) g2 = (0100) g3 = (1000) g4 = (0011) g5 = (0110) g6 = (1100) g7 = (1011) g8 = (0101) g9 = (1010) g10 = (0111) g11 = (1110) g12 = (1111) g13 = (1101) g14 = (1001) g15 = (0001) g2 = x2 = (0100) , g4 = x4 = x4 mod(x4 + x + 1) = x + 1=(0011) ,其余可类似求得。
离散对数为k = 9.
(0, 1) (1, g13) (g3, g13) (g5, g11)
(g6, g8) (g9, g10) (g10, g) (g12, 0)
(g6, g14) (g9, g13) (g10, g8) (g12, g12)
上表表明了互逆点,除(0,1)的互逆点使其本身外,如p= (1, g6) ,它的互逆点: -p= (1,1+g6)=(1,(0001)+(1101))=(1,(1101)) = (1, g13)
yR = λ (xP + xR) + xR + yP
求2P :若 P = (x P , y P) 若 y P 不为 0,
2P = R 按如下方法计算: λ = (xP 2 + yP )/ xP xR = λ 2+ λ + a yR = xP2 + (λ + 1) xR
2. 基于椭圆曲线上的离散对数问题—ECC
λ = (y P – y Q) / (x P – x Q) mod p x R = λ2 – x P – x Q mod p y R = -y P + λ(x P – x R) mod p
求2P :若 P = (x P , y P) 若 y P 不为 0,
2P = R 按如下方法计算: λ = (3xP2 + a) / (2yP ) mod p x R = λ2 - 2xP mod p y R = -y P + λ(x P – x R) mod p
(16,8) (17,10) (18,10) (19,1) (20,4) (21,6)
(16,15) (17,13) (18,13) (19,22) (20,19) (21,17)
椭圆曲E23线上共有24个点(包括无穷远点O)。 除了(0,0)外,每一个x都对应两个点,它们是互 逆的,如p=(1,5)和-p=(1,-5)=(1.-5 mod 23)=(1,18), 实际上(0,0)的逆是它本身。
例题:
椭圆曲线T=(m=4,f(x)=x4+x+1,g=0010,a=g4,b=g0) 点P=(g6,g8),点Q=(g3,g13),求点R=P+Q以及R=2P
1.
λ=(g8+ g13 )/(g6+ g3)=g
X=g^2+g+g6+ g3 +g4=1
Y=g(g6+1)+1+ g8 =g13
所以 R=P+Q=(1,g13)
(1100) + (0101) = (0001) + (1001) + (0001)
(1001) = (1001满足方程y2 + xy = x3 + g4x2 + 1. 其中 a = g4 ,b = g0 =1.的15个点 是:
(0, 1) (1, g6) (g3, g8) (g5, g3)
椭圆曲线密码体制的依据就是利用定义在椭圆曲线点群上的离散对数 问题的难解性。
➢例如: 对于椭圆曲线F23:y2 = x3 + 9x + 17,
求点Q = (4,5) 基于点 P = (16,5)的离散对数k 解: 计算k P, 直到Q为止
P = (16,5) 2P = (20,20) 3P = (14,14) 4P = (19,20) 5P = (13,10) 6P = (7,3) 7P = (8,7) 8P = (12,17) 9P = (4,5)
2. 基于椭圆曲线上的离散对数问题—ECC
例题:仍以E23(1,1)为例,设P=(3,10),Q=(9,7),求P+Q,2P
1. 7 10 3 1 11mod 23
93 6 2 x3 112 3 9 109 17 mod 23 y3 11(3 17) 10 164 20 mod 23
2.
λ =[(g6 )^2 +g8]/g6=g3
X=(g3 )^2 +g3+g4=g10
Y=g12+(g3+1)g10=g8
所以 R=2P=(g10 ,g8)
2. 基于椭圆曲线上的离散对数问题—ECC
<4>椭圆曲线的离散对数问题 :
➢ 给定椭圆曲线上的点 P 和点 Q , 寻找数 k 使得 k P = Q, 其中k 称为Q基于P的离散对数。(当给定P和Q时计算K相对困难)
考虑椭圆曲线:
y2 + xy = x3 + g4x2 + 1. 其中 a = g4 ,b = g0 =1.
点 (g5, g3) 满足椭圆曲线方程 :
y2 + x y = x3 + g4x2 + 1
(g3)2 + g5g3 = (g5)3 + g4g10 + 1
g6 + g8 = g15 + g14
+1
2. 基于椭圆曲线上的离散对数问题—ECC
实例: 椭圆曲线E23(1,0) 的点的构造
即y2 = x3 + x在有限域F23上的点的构造(其中a=1,b=0)
满足条件的23个点是:
(0,0) (1,5) (9,5) (11,10) (13,5) (15,3)
(0,0) (1,18) (9,18) (11,13) (13,18) (15,20)
所以P+Q=(17,20),仍为E23(1,1)中的点。
2. 3 32 1 5 1 6 mod 23
2 10 20 4 x3 62 3 3 30 7 mod 23 y3 6(3 7) 10 34 12 mod 23
所以2P=(7,12)。
2. 基于椭圆曲线上的离散对数问题—ECC
GF(2^m)上两点运算(用代数方法表示):
逆元:P = (x P, y P)的逆元 :-P = (x P, x P + y P)
加法:若 P = (x P , y P),Q = (x Q , y Q)。
若 P 和 Q 是不同的点且 Q 不是 -P, P + Q = R 按如下方
法计算:
λ = (yP +yQ) / (xP + xQ) xR = λ 2 + λ + xP + xQ + a
2. 基于椭圆曲线上的离散对数问题—ECC
GF(p)上的两点运算(用代数方法表示):
逆元:P = (x P, y P)的逆元: -P = (x P, - y P) 加法:若 P = (x P , y P),Q = (x Q , y Q).
若 P 和 Q 是不同的点且 Q 不是 -P, P + Q = R 按如下方法 计算: