赞
踩
推荐:
ECC椭圆曲线加解密原理详解(配图)_SiteBus的博客-CSDN博客_ecc加密
信息安全数学:1.1 群的基本概念_哔哩哔哩_bilibili
椭圆曲线加密(ECC,Elliptic Curves Cryptography)也属于非对称加密公钥算法,与主流的RSA算法相比,ECC算法可以使用较短的密钥达到相同的安全程度。ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点G,并选取一个整数k,求解K=kG很容易(注意根据kG求解出来的K也是椭圆曲线上的一个点);反过来,在椭圆曲线上给定两个点K和G,若使K=kG,求整数k是一个难题。ECC就是建立在此数学难题之上,这一数学难题称为椭圆曲线离散对数问题。近年来,ECC逐步进入实际应用,如国家密码管理局颁布的SM2算法就是基于ECC算法的。
群:设三元组(G,.,1)中G为集合,.为集G上的二元运算,1为G中的一个元,若(G, .,1)满足:
- G1(乘法集合率):a.(b.c)=(a.b) .c,a,b,c∈G;
- G2(单位元):1.a=a.1=a,a∈G;
- G3(逆元):对a∈G,有a‘∈G使得a.a’=a’ .a=1;
则称(G, .,1)为群,简称群G,1为群G的单位元,a’称为a的逆元。
群:群;交换群,半群,交换半群;子群;循环群;对称群等
域:设五元组(F,+, .,0,1)中,F为集合,+与 .为集R上二元运算,0与1为F中元,若(F,+, .,0,1)满足:
- F1(加法交换群):(F,+, 0)是交换群;
- F2(乘法交换群):(F,.,1)是交换群,这里F*=F-0;
- F3(乘法对加法的分配率):a.(b+c)=a.b+a.c,a,b,c∈F;
则称(F,+, .,0,1)为域,简称域F。
域:域上多项式,既约多项式,同余,剩余类,子域,扩域等。
有限域:有限域亦称伽罗瓦域,是仅含有限个元素的域,它是伽罗瓦于18世纪30年代研究代数方程根式求解问题时引出的。有限域中元素的个数称为有限域的阶。每个有限域的阶必为素数的幂,即有限域的阶可表示为pⁿ(p是素数、n是正整数,若F是特征为p的有限域,则F中元素的个数为pⁿ),元素个数相同的有限域是同构的。因此,通常用GF(pⁿ)表示pⁿ元的有限域。
椭圆曲线:椭圆曲线是指由维尔斯特拉斯方程
所确定的平面曲线,其中系数ai(i=1,2,…,6)定义在某个域上。椭圆曲线密码是基于有限域上椭圆曲线有理点群的一种密码系统,其数学基础是利用椭圆曲线上的点构成的Abelian加法群构造的离散对数的计算困难性。
K=kG,其中K,G为Ep(a,b)上的点,k为小于n的整数,n是点G的阶,给定k和G,计算K容易,但是给定K和G,求k就很难了!
因此:K为公钥,k为私钥,G为基点。
1、参数生成
通常将Fp上的一条椭圆曲线描述为T=(p,a,b,G,n,h),p、a、b确定一条椭圆曲线(p为质数,(mod p)运算)G为基点,n为点G的阶,h是椭圆曲线上所有点的个数m与n相除的商的整数部分。
- 选择一个素数p,从而确定有限域GF(p);
- 选择元素a,b属于GF(p),从而确定一条GF(p)上的椭圆曲线;
- 选择一个大素数n,并确定一个阶为n的基点;(基础参数p,a,b,G,n,h是公开的)
- 随机的选择一个整数d属于[1,n-1],作为私钥;
- 根据Q=dG;计算出用户的公钥Q;
参量选择要求:
- p越大安全性越好,但会导致计算速度变慢;
- 200位左右可满足一般安全要求;
- n应为质数 h≤4;p≠n×h ;pt≠1(mod n) (1≤t<20)
2、加、解密
实际应用中,设要加密的明文数据m,0<=m<n,用户A要将数据m发送给用户B:
加密:
- 用户A去查公钥库PKDB,查询到用户B 的公钥Q;
- 用户A随机选择一个随机数k,且k属于[1,n-1];
- 用户A计算点X1:(x1,y1)=kG;
- 用户A计算点X2:(x2,y2)=kG;如果x2=O,则转2;
- 用户A计算C=mx2 mod n;
- 用户A发送加密数据(X1,C)给用户B。
解密:
- 用户B用自己的私钥求出X2:dX1=d(kG)=k(dG)=kQ=X2:(x2,y2);
- 求出分量x2的逆:x2^(-1);
- 对C解密,得到明文数据m=Cx2^(-1) mod n。
3、签名、验签
签名:
- A选定一条椭圆曲线Ep(a,b),并取曲线上一点作为基点G
- A选择一个私钥k,并生成公钥K=kG
- A产生一个随机数r,计算R(x,y)=rG
- A计算Hash=SHA(M),M‘=M(modp)
- A计算S=(Hash+M'k)/r(modp)
验签:
- B获得S和M',Ep(a,b),K,R(x,y)
- B计算Hash=SHA(M),M'=M(modp)
- B计算R'=(Hash*G+M'*K)/S=(Hash*G+M'*kG)*r/(Hash+M'k)=rG=R(x,y),若R'=R,则验签成功。
以上加解密和签名验签流程只是一个例子,具体应用时可以利用K=kG这一特性变幻出多种加解密方式。
举例说明如下:
B传送明文M给A:仅为例:也可以构成其他椭圆曲线密码。
参数:
- A选定一条椭圆曲线Ep(a,b),并取曲线上一点作为基点G
- A选择一个私钥k,并生成公钥K=kG
- A将Ep(a,b)和k,G发送给B
加密:
- B收到后将明文编码到Ep(a,b)上一点M,并产生一个随机数r
- B计算点C1=M+rK,C2=rG
- B将C1,C2传给A
解密:
- A计算C1-kC2=M+rkG-krG=M
- A对M解码得到明文
在这个加密通信中,如果有一个偷窥者H ,他只能看到Ep(a,b)、K、G、C1、C2,而通过K、G 求k 或通过C2、G求r 都是相对困难的H无法得到,因此,A、B间传送的信息安全。
1、特点
基于椭圆曲线理论的公钥加密技术(1985),与传统的基于大质数因子分解困难性的加密方法不同,ECC通过椭圆曲线方程式的性质产生密钥。
优点:ECC和其他几种公钥系统相比,其抗攻击性具有绝对的优势,ECC160位的密钥相当于RSA 、DSA1024位密钥提供的保密强度,210位ECC则与2048位RSA、DSA具有相同的安全强度;计算量较小,处理速度更快;ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多存储空间和传输带宽占用较少。
缺点:设计复杂,实现困难;如果序列号设计过短,那么安全性并没有想象中的完善。
2、应用
目前我国居民二代身份证正在使用 256 位的椭圆曲线密码;虚拟货币比特币也选择ECC作为加密算法;IC卡、电子商务、Web服务器、移动电话和便携终端、航空航天领域。
注:
如有错误、侵权,请联系笔者更改删除!!!
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。