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

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

果有,就有两个满足平方根运算的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 可
在用序列密码对媒体流加密时,网络数据包的大小可以根据 网络的需要来设定,与分组加密不同,这里需要考虑的仅仅是网 络传输的需求。
整个加密过程是:播放过程一旦开始,密钥流生成器就不断 地产生出密码序列,服务器也周期性地发送网络数据包。在数据 流化的过程中,将随机数序列与数据包中的明文序列进行逐位
本文分析了如何将常规加密技术运用在流媒体的传输过程 中,以达到保密传输的目的,我们在流媒体应用系统中运用了这 种加密方式,达到了较好的效果。 参考文献: [1] 方勇,刘嘉勇,信息系统安全导论,电子工业出版社. [2] Bruce Schneier, Applied Cryptography-Protocol, Algorithms and Source Code in C, John Wiley & Sons, Inc., New York, Second Edition, 1996 [3] Borko Furht, Darko Kirovski, Multimedia Security Handbook, http:/ /www.ee.cityu.edu.hk/ ̄gchen/pdf/chapter4.pdf , 2004.2. [4] Joan Daemen, Vincent Rijmen, AES Proposal:Rijndael,Available: http://csrc.nist.gov/cryptoToolkit/AES/Rijndael /Rijndael.PDF.
②将 m 表示成一个域元素 m ∈ F ,这里将 m 表示成 190; p
③在区间[1,n-1]内选取一个随机数 k,这里选取 k=57;
(1)椭圆曲线上点的计算 ①对于每个满足 0 ≤ x<p 的 x,计算 x3+ax+b(modp); ②对于上一步骤得到的每个结果确定它是否有一个模p的平 方根,如果没有,在 E (a,b)中就没有一个具有这个 x 值的点。如
设 x=X/Z,y=Y/Z,于是原方程转化为:
y2+a xy+a y=x3+a x2+a x+a …… (1)





此时,椭圆曲线 E 就是方程(1)在摄影平面 P2(K)上的全部
解,外加一个无穷远点 0 组成的集合。
常用的椭圆曲线方程为:当特征值为大于 3的素数时,椭圆
使用序列密码加密首先要把明文信息如文本图像声音等排成明文序列再将它与密钥序列逐字节位进行异或运算生成密文序列接收者用相同的密钥序列对密文序列进行异或运算来恢复明文
加 密 技 术
椭圆曲线加密算法 及实例分析
李俊芳 崔建双 北京科技大学管理学院 北京 100083
摘要:椭圆曲线密码体制的研究与实现已逐渐成为公钥密码体制研究的主流,其数学基础是利用椭圆 曲线上的有理点构成的Abelian加法群构造的离散对数的计算困难性。在本文中,详细阐述了椭圆曲线 的加法运算规则、椭圆曲线的密码体制,并列出了一个具体的实例来实现椭圆曲线密码体制。 关键词:椭圆曲线密码体制;基点;阶
一个有限域上,可以有非常多的椭圆曲线适合建立密码系统。
(1)0 为加法单位元,即对椭圆曲线上任一点 P,有 P+0=P。
在椭圆曲线构成的Abelian群E (a,b)上考虑方程Q=xp, 已知 p
(2)设 P=(x,y)是椭圆曲线上的一点,它的加法逆元定义为
Q、p 属于 E (a,b)。若知 x,p,求 Q,非常容易。若知 Q、p 求 x, Q=-P=(x,-y)。 p
E:Y2Z+a XYZ+a YZ2=X3+a X2Z+a XZ2+a Z3 其中:a ∈ K。






注:
x = λ 2- x - x (modp)



y = λ(x - x )- y (modp)




其中:λ =(y - y )/( x - x ) P ≠ Q




λ =(3x 2+a)/(2y ) P=Q
④依据 Bob 的公钥计算点(x , y )=kG(,86)=(36,189);


⑤计算点(x , y )=kQ,得(x , y )=kQ=57(32,27)=(94,129),


22
如果 x =0,则回到第③步; 2
⑥计算 C=m*x =190*94=136; 2
椭圆曲线方程 E (1,1):y2 =x3 +x+1,p=211,G=(2,86),n=223。 211
E(F ),G,n,为公开消息。 p
(1)密钥的生成
Bob(使用者)执行了下列计算:
定义椭圆曲线的参数 a=b=1;选取素数域 Fp,令 p=211,则
①在区间[1,222]中随机选取一个整数 d,这里选取 d=112;
0 引言
穷远点 0。
椭圆曲线密码体制与其他公钥密码体制相比,研究表明,对 1.2椭圆曲线的运算规则
于椭圆曲线密码160bit 长的密钥所具有的安全性与RSA或DSA中
椭圆曲线上的加法运算如下:如果其上的三个点位于同一直
1024bit 长的密钥所具有的安全性相当,抗攻击性强。并且,在 线上 ,那么它们的和为 0。
曲线的方程表示为:
E: y2=x3+ax+b
其中,a,b ∈F ,且 4a3+27b2≠ 0,则 F 上的椭圆曲线 E被定义


为由参数 a 和 b 决定的点 q=(x,y)的集合,此外,E 还包括一个无
图 1 y2 =x3-x
本文由教育部科学技术研究重点项目“关于企业信息安全体系的研究”资助(01021)。作者简介:李俊芳(1978-),女,北京科技大学管理学院硕 士研究生,研究方向:安全电子商务。崔建双(1961-),男,北京科技大学管理学院副教授,研究方向:管理信息系统、安全电子商务。
椭圆曲线方程为E (1,1):y2=x3+x+1。在文献[6]里讲述了基点的 211
选取算法,但并非所有的椭圆曲线上的点都可以做基点,还需要 验证该点的周期是不是一个素数。在这篇文章里,先计算椭圆曲
②计算点 Q=dG(d 个 G 相加),通过计算得 Q=(32,27); ③Bob公开自己的公开密钥——(E(F ),G,n,Q);
The Application of Cryptographic Techniques in Secure Transmission of Streaming Media Chen Daomin1 Zhou Jinquan2 1PLA University ofForeign Languages, Henan 471003 2Kunming Military Academy, Yunnan 650207 Abstract:In this paper, after analyzing the encrypting features of streaming media, we deeply research on how to encrypt the streaming media data by using block cipher and stream cipher respectively. Keywords:Streaming Media;Encryption;Block Cipher;Stream Cipher
却是困难的,这就是椭圆曲线的离散对数问题,可以应用于公钥
(3)设 P 和 Q 是椭圆曲线上 x 坐标不同的点。Q+P 的定义如
密码体制。本文,给出了一个具体的实例来说明椭圆曲线的密码 下:画一条通过 Q,P 的直线与椭圆曲线交于 R’。由 Q+P+ R’=0
体制。
得 Q+P=- R’即 Q+P=R。如图 1 所示。
Alice 要发送消息 m 给 Bob,Alice 执行:
①查找 Bob 的公钥(E(F ),G,n,Q); q
②将 m 表示成一个域元素 m ∈ F ; q
③在区间[1,n-1]内选取一个随机数 k;
比如:椭圆曲线方程 E (1,1):y2 =x3+x+1 椭圆曲线的点 211
群阶为 223,椭圆曲线上整数点有 222 个,还有一个无穷远点 0。 任取一点v(2,86), 然后计算椭圆该点的周期。其基本思想为:利 用前面介绍的加法运算规律,计算使 nv=0的 n值即为点 v的周期
以看作是基点 G。
2.2.2针对具体的椭圆曲线按照上面提到的密码体制思 想进行加密
Bob 收到 Alice 的密文(x , y ,C)后,执行:


①使用私钥d,计算点(x , y )=d(x , y ),在计算F 中x -1=?






②通过计算 m=Cx -1,恢复出明文数据 m 。 2
2.2举例实现椭圆曲线的密码体制
期足够长,随机性和不可预测性足够好,便可近似地实现理想的 5 结束语
保密体制。 下面就来研究如何用序列密码对流媒体进行加密。 使用序列密码加密,首先要把明文信息如文本、图像、声音
等排成明文序列,再将它与密钥序列逐字节(位)进行“异或”运 算生成密文序列,接收者用相同的密钥序列对密文序列进行“异 或”运算来恢复明文。

④ Bob 的私钥为整数 d=112。
线的阶(椭圆曲线上的整数点数),该过程略过,直接给出结果;
Alice 要发送消息 m 给 Bob,Alice 执行:
然后再去寻找基点,验证基点的阶(周期)是不是一个大的素数; 接下来进行椭圆曲线的加密解密。
2.2.1基点的选取
①查找 Bob 的公钥(E(F ),G,n,Q); p
⑦传送加密数据(x , y ,C)=(36,189,136)给Bob。


(2)Bob的解密过程
Bob 收到 Alice 的密文(36,189,136)后,执行:
①使用私钥d=112,计算点(x , y )=d(x , y )=112(36,189)




=(94,129),在 F 中计算 x -1=110。


(4)点 Q的倍数定义如下:在Q点作椭圆曲线的一条切线,设
切线与椭圆曲线交于点 S,定义 2Q=Q+Q=-S,类似的可定义 3Q=
(1)在椭圆曲线 E 上恰有一个点,称之为无穷远点。即(0: Q + Q + Q +,…,等。
1:0)用 0 表示。
2 椭圆曲线密码体制
(2)可用非齐次坐标的形式来表示椭圆曲线的Weierstrass方程:
k k-1

②d←1
for i=k downto 0 do {
x ← d;
当中,具体的曲线及点 G 和它的阶 n 都是公开信息。
d ←(d × d)mod n;
(1)密钥的生成
if d=1 and (x≠1)and(x≠n-1) then return true;
Bob(使用者)执行了下列计算: ①在区间[1,n-1]中随机选取一个整数 d;


②通过计算 m = C x -1= 1 3 6 * 1 1 0 = 1 9 0 ,恢复出明文数据 2
m=190。
WITNESS(a,n)
[下转55页]
2004.11
57
加 密 技 术
性最好。因此,序列密码适用于数据量大且实时性要求高的流媒 (字节)的异或运算后,再按照网络协议进行打包。解密端从网络 体加密,它也是目前军事、外交领域应用的一种主流密码体制。序 上收到数据包后,先进行解封装得到密文数据流,然后再与密钥 列密码是仿效“一次一密”的密码系统,只要产生的密码序列周 流进行异或运算得到明文。
1 椭圆曲线
设 P=(x ,y ),Q=( x , y ),P ≠ Q,则 P+Q=( x , y )由以下
11




规则确定:
1.1 椭圆曲线定义
椭圆曲线E是一个光滑的Weierstrass方程在P2(K)中的全部解
(x,y)的集合。K 为域,K 上的摄影平面 P2(K)是一些等价类的集
合{(X:Y:Z)}。
if b =1 then d←(d×a)modn } i
if d≠1 then return true ;
②计算点 Q=dG(d 个 G 相加);
return false;
③Bob公开自己的公开密钥——(E(F ),G,n,Q); q
④ Bob 的私钥为整数 d。
n是待检验的数,a是小于n的整数。如果返回值是false,则 n 有可能是素数。如果返回值是 true,则 n肯定不是素数。
相关文档
最新文档