椭圆曲线密码算法详解
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由公开参数组和公钥Q求私钥d的问题是 椭圆曲线离散对数问题(ECDLP)
密钥对生成
输入:椭圆曲线参数组(p,E,P,n) 输出:公钥Q和私钥d 1. 选择d[1,n] 2. 计算Q=dP 3. 返回(Q,d)
基本椭圆曲线加密
输入:椭圆曲线参数组(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)
例5 条件同例4,若 P P 2P R (x3, y3) 则R = ?
解:
x3
x12
b x12
g 32 g 2 g 32
g 6 g11
g
y3
x12
x1
y1
x1
x3
x3
=g32 g3 g9 g 3 g g
g6 g3 g g5
2P R (g,g5)
E: y2 x3 ax b
其中4a3 27b2 0 模F2n下定义为椭圆曲线
E: y2 xy x3 ax2 b
其中b 0 ,此曲线称为nonsuper-singular。
椭圆曲线有一个特殊的点,记为O,它并 不在椭圆曲线E上,此点称为无穷远点
(the point at infinity)
基本椭圆曲线解密
输入:椭圆曲线参数组(p,E,P,n),私钥d ,
密文(C1,C2) 输出:明文m 1. 计算M=?,并从点M取出明文m 2. 返回(m)
g3
g
g8
g9
y3
y1 x1
y2 x2
(x1
x3 )
x3
y1
g9 g5 g3 g
(g3
g
9
)
g9
g9
g13
P Q R (g9 , g13)
注: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)
上的两点P=(g3,g9) 及Q=(g,g5) ,其中
g=(0010) 为 F24的生成数,且不可约多项式 为 f(x)=x4+x+1 。若 P+Q=R=(x3,y3)
则R = ?
解:
x3
y1 x1
y2
2
x2
y1 x1
y2 x2
x1
x2
a
g9 g5 g3 g
2
g9 g5 g3 g
即在有限域K之下,给定椭圆曲线E上的两相 异点P及Q,其中当点P的秩(order)若够大时 (大于160位),要找出一整数l使得Q=lP是很 难的计算难题。
在实数域中,椭圆曲线可定义成所有满 足方程式
的点(x,y)所构成的集合。若方程式没有 重复的因式或 4a3 27b2 0 ,则
E: y2 x3 ax b
9P = (17, 14) 10P = (19, 21) 11P = (6, 6) 12P = (3, 8) 13P = (5, 18) 14P = (13, 10) 15P = (0, 22)
请在坐标上画出各个点,并观察图像特点
注:E(F23) 15其实还要加上一个无穷远点, 故E上的点共有16个,点P的秩n = 16。
椭圆曲线密码算法(ECC)
椭圆曲线是由Neil Koblitz(Koblitz, 1985) 和Victor Miller(Miller, 1985)两位学者分 别于1985年首先提出
大多数的椭圆曲线密码系统是在模p或F2n 下运算。此密码系统仍是存有RSA或 ElGamal常见的弱点(e.g. 同模数攻击、 低指数攻击)。
P (P) O
(ii) 令 P (x1, y1) E(F2n )及Q (x2 , y2 ) E(F2n ) , 且 P Q 。则 P Q (x3, y3) ,其x3,y3分别 为:
x3
y1 x1
y2
2
x2
y1 x1
y2 x2
x1
x2
a
if
P
Q
x12
b x12
if P Q
2 14 9
x3 2 x1 x2 mod p
81 18 18 mod 23
22
y3 (x1 x3) y1 mod p
9(18 22) 14 mod 23
19
P P 2P R (22,19)
椭圆曲线在 下的运算规则
加法规则: (i) 对所有的点P E(F2n ) 则 P O O P P,
能成为群(group)。
例如,椭圆曲线 E: y2 x3 7x 3 的 图形如图1-1所示。若4a3 27b2 0 , 则此曲线将会形成退化(某些数的逆元 素(inverse)将不存在)。
椭圆曲线E: y2 x3 7x 3 的图形如图1-1 所示。
椭圆曲线密码系统在模p(或Fp)下定义为椭圆 曲线
x1 a
2 y1
if P Q if P Q
x3 2 x1 x2
y3 (x1 x3 ) y1
(iii) 如果 s, t Fp,则对所有的点P E(Fp )而言,
(s t)P sP tP
乘法规则:
➢ 如果 k Fp ,则对所有的点P E(Fp ) 而 言,kP=P+P+…+ P (k个P相加)
例2:在有限域F23之下,取椭圆曲线
E : y2 x3 16x 10
上的两点 P (18, 14) 及 Q (5,10) 若
P Q R (x3, y3 )
则R=?
解: y2 y1 mod p
x2 x1 4 mod 23
13 = 18
x3 2 x1 x2 mod p
两个相异的点相加:假设P和Q是椭圆曲 线上两个相异的点,而且P不等于-Q 。 若P +Q=R ,则点R是经过P、Q两点的直 线与椭圆曲线相交之唯一交点的负点。 如图1-2所示。
双倍的点:令P +P=2P ,则点2P是经过P 的切线与椭圆曲线相交之唯一交点的负 点。如图1-3所示。
椭圆曲线运算规则
y3
y1 x1
y2 x2
(
x1
x12
x1
y1
x1
x3) x3 x3 x3
if
y1 P
if
P Q
Q
(iii) 如果s, t Z p,则对所有的点 P E(F2n )而 言, (s t)P sP tP
例子4:在有限域 F24 之下,取椭圆曲线
y2+xy=x3+g8x2+g2
RSA与ElGamal系统中需要使用长度为 1024位的模数,才能达到足够的安全等 级
而ECC只需使用长度为160位的模数即可, 且传送密文或签章所需频宽较少,并已正 式列入IEEE 1363标准
椭圆曲线密码系统基于椭圆曲线离散对数 问题(Elliptic Curve Discrete Logarithm Problem, ECDLP)。
椭圆曲线密钥生成
令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。
椭圆曲线在模p下的运算规则 加法规则:
(i) 对所有的点 PE(Fp),则P+O=O+P , P+(-P)=O
(ii) 令 P (x1, y1) E(Fp )及 Q (x2 , y2 ) E(Fp ) 且 P Q ,则 P Q (x3, y3),其中y2 y1x2 3x12
182 18 5mod 23
2
y3 (x1 x3) y1 mod p
18(18 2) 14 mod 23
21
P Q R (2,21)
例3:条件同例2,若 P P 2P R (x3, y3), 则R = ?
解: 3x12 a mod p
2 y1 3 182 16 mod 23
➢ 如果 s, t Fp,则对所有的点 P E(Fp )而 言,s(tP) (st)P
例子1:有限域F23之下,点 P (0, 1)是椭圆曲 线 E: y2 x3 12x 1 的生成数。
请计算2P和3P的值
P = (0, 1) 2P = (13, 13) 3P = (5, 5) 4P = (3, 15) 5P = (6, 17) 6P = (19, 2) 7P = (17, 9) 8P = (18, 0)
密钥对生成
输入:椭圆曲线参数组(p,E,P,n) 输出:公钥Q和私钥d 1. 选择d[1,n] 2. 计算Q=dP 3. 返回(Q,d)
基本椭圆曲线加密
输入:椭圆曲线参数组(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)
例5 条件同例4,若 P P 2P R (x3, y3) 则R = ?
解:
x3
x12
b x12
g 32 g 2 g 32
g 6 g11
g
y3
x12
x1
y1
x1
x3
x3
=g32 g3 g9 g 3 g g
g6 g3 g g5
2P R (g,g5)
E: y2 x3 ax b
其中4a3 27b2 0 模F2n下定义为椭圆曲线
E: y2 xy x3 ax2 b
其中b 0 ,此曲线称为nonsuper-singular。
椭圆曲线有一个特殊的点,记为O,它并 不在椭圆曲线E上,此点称为无穷远点
(the point at infinity)
基本椭圆曲线解密
输入:椭圆曲线参数组(p,E,P,n),私钥d ,
密文(C1,C2) 输出:明文m 1. 计算M=?,并从点M取出明文m 2. 返回(m)
g3
g
g8
g9
y3
y1 x1
y2 x2
(x1
x3 )
x3
y1
g9 g5 g3 g
(g3
g
9
)
g9
g9
g13
P Q R (g9 , g13)
注: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)
上的两点P=(g3,g9) 及Q=(g,g5) ,其中
g=(0010) 为 F24的生成数,且不可约多项式 为 f(x)=x4+x+1 。若 P+Q=R=(x3,y3)
则R = ?
解:
x3
y1 x1
y2
2
x2
y1 x1
y2 x2
x1
x2
a
g9 g5 g3 g
2
g9 g5 g3 g
即在有限域K之下,给定椭圆曲线E上的两相 异点P及Q,其中当点P的秩(order)若够大时 (大于160位),要找出一整数l使得Q=lP是很 难的计算难题。
在实数域中,椭圆曲线可定义成所有满 足方程式
的点(x,y)所构成的集合。若方程式没有 重复的因式或 4a3 27b2 0 ,则
E: y2 x3 ax b
9P = (17, 14) 10P = (19, 21) 11P = (6, 6) 12P = (3, 8) 13P = (5, 18) 14P = (13, 10) 15P = (0, 22)
请在坐标上画出各个点,并观察图像特点
注:E(F23) 15其实还要加上一个无穷远点, 故E上的点共有16个,点P的秩n = 16。
椭圆曲线密码算法(ECC)
椭圆曲线是由Neil Koblitz(Koblitz, 1985) 和Victor Miller(Miller, 1985)两位学者分 别于1985年首先提出
大多数的椭圆曲线密码系统是在模p或F2n 下运算。此密码系统仍是存有RSA或 ElGamal常见的弱点(e.g. 同模数攻击、 低指数攻击)。
P (P) O
(ii) 令 P (x1, y1) E(F2n )及Q (x2 , y2 ) E(F2n ) , 且 P Q 。则 P Q (x3, y3) ,其x3,y3分别 为:
x3
y1 x1
y2
2
x2
y1 x1
y2 x2
x1
x2
a
if
P
Q
x12
b x12
if P Q
2 14 9
x3 2 x1 x2 mod p
81 18 18 mod 23
22
y3 (x1 x3) y1 mod p
9(18 22) 14 mod 23
19
P P 2P R (22,19)
椭圆曲线在 下的运算规则
加法规则: (i) 对所有的点P E(F2n ) 则 P O O P P,
能成为群(group)。
例如,椭圆曲线 E: y2 x3 7x 3 的 图形如图1-1所示。若4a3 27b2 0 , 则此曲线将会形成退化(某些数的逆元 素(inverse)将不存在)。
椭圆曲线E: y2 x3 7x 3 的图形如图1-1 所示。
椭圆曲线密码系统在模p(或Fp)下定义为椭圆 曲线
x1 a
2 y1
if P Q if P Q
x3 2 x1 x2
y3 (x1 x3 ) y1
(iii) 如果 s, t Fp,则对所有的点P E(Fp )而言,
(s t)P sP tP
乘法规则:
➢ 如果 k Fp ,则对所有的点P E(Fp ) 而 言,kP=P+P+…+ P (k个P相加)
例2:在有限域F23之下,取椭圆曲线
E : y2 x3 16x 10
上的两点 P (18, 14) 及 Q (5,10) 若
P Q R (x3, y3 )
则R=?
解: y2 y1 mod p
x2 x1 4 mod 23
13 = 18
x3 2 x1 x2 mod p
两个相异的点相加:假设P和Q是椭圆曲 线上两个相异的点,而且P不等于-Q 。 若P +Q=R ,则点R是经过P、Q两点的直 线与椭圆曲线相交之唯一交点的负点。 如图1-2所示。
双倍的点:令P +P=2P ,则点2P是经过P 的切线与椭圆曲线相交之唯一交点的负 点。如图1-3所示。
椭圆曲线运算规则
y3
y1 x1
y2 x2
(
x1
x12
x1
y1
x1
x3) x3 x3 x3
if
y1 P
if
P Q
Q
(iii) 如果s, t Z p,则对所有的点 P E(F2n )而 言, (s t)P sP tP
例子4:在有限域 F24 之下,取椭圆曲线
y2+xy=x3+g8x2+g2
RSA与ElGamal系统中需要使用长度为 1024位的模数,才能达到足够的安全等 级
而ECC只需使用长度为160位的模数即可, 且传送密文或签章所需频宽较少,并已正 式列入IEEE 1363标准
椭圆曲线密码系统基于椭圆曲线离散对数 问题(Elliptic Curve Discrete Logarithm Problem, ECDLP)。
椭圆曲线密钥生成
令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。
椭圆曲线在模p下的运算规则 加法规则:
(i) 对所有的点 PE(Fp),则P+O=O+P , P+(-P)=O
(ii) 令 P (x1, y1) E(Fp )及 Q (x2 , y2 ) E(Fp ) 且 P Q ,则 P Q (x3, y3),其中y2 y1x2 3x12
182 18 5mod 23
2
y3 (x1 x3) y1 mod p
18(18 2) 14 mod 23
21
P Q R (2,21)
例3:条件同例2,若 P P 2P R (x3, y3), 则R = ?
解: 3x12 a mod p
2 y1 3 182 16 mod 23
➢ 如果 s, t Fp,则对所有的点 P E(Fp )而 言,s(tP) (st)P
例子1:有限域F23之下,点 P (0, 1)是椭圆曲 线 E: y2 x3 12x 1 的生成数。
请计算2P和3P的值
P = (0, 1) 2P = (13, 13) 3P = (5, 5) 4P = (3, 15) 5P = (6, 17) 6P = (19, 2) 7P = (17, 9) 8P = (18, 0)