10、ECC算法

 推荐:

ECC椭圆曲线加解密原理详解(配图)_SiteBus的博客-CSDN博客_ecc加密

信息安全数学:1.1 群的基本概念_哔哩哔哩_bilibili


ECC算法

ECC算法数学基础

ECC算法安全原理

ECC算法流程

ECC算法相关


ECC算法

椭圆曲线加密(ECC,Elliptic Curves Cryptography)也属于非对称加密公钥算法,与主流的RSA算法相比,ECC算法可以使用较短的密钥达到相同的安全程度。ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点G,并选取一个整数k,求解K=kG很容易(注意根据kG求解出来的K也是椭圆曲线上的一个点);反过来,在椭圆曲线上给定两个点K和G,若使K=kG,求整数k是一个难题。ECC就是建立在此数学难题之上,这一数学难题称为椭圆曲线离散对数问题。近年来,ECC逐步进入实际应用,如国家密码管理局颁布的SM2算法就是基于ECC算法的。

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加法群构造的离散对数的计算困难性。

ECC算法安全原理

K=kG,其中K,G为Ep(a,b)上的点,k为小于n的整数,n是点G的阶,给定k和G,计算K容易,但是给定K和G,求k就很难了!

因此:K为公钥,k为私钥,G为基点

ECC算法流程

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:

加密:

  1. 用户A去查公钥库PKDB,查询到用户B 的公钥Q;
  2. 用户A随机选择一个随机数k,且k属于[1,n-1];
  3. 用户A计算点X1:(x1,y1)=kG;
  4. 用户A计算点X2:(x2,y2)=kG;如果x2=O,则转2;
  5. 用户A计算C=mx2 mod n;
  6. 用户A发送加密数据(X1,C)给用户B。

解密:

  1. 用户B用自己的私钥求出X2:dX1=d(kG)=k(dG)=kQ=X2:(x2,y2);
  2. 求出分量x2的逆:x2^(-1);
  3. 对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间传送的信息安全。

ECC算法相关

1、特点

基于椭圆曲线理论的公钥加密技术(1985),与传统的基于大质数因子分解困难性的加密方法不同,ECC通过椭圆曲线方程式的性质产生密钥。

优点:ECC和其他几种公钥系统相比,其抗攻击性具有绝对的优势,ECC160位的密钥相当于RSA 、DSA1024位密钥提供的保密强度,210位ECC则与2048位RSA、DSA具有相同的安全强度;计算量较小,处理速度更快;ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多存储空间和传输带宽占用较少。

缺点:设计复杂,实现困难;如果序列号设计过短,那么安全性并没有想象中的完善。

2、应用

目前我国居民二代身份证正在使用 256 位的椭圆曲线密码;虚拟货币比特币也选择ECC作为加密算法;IC卡、电子商务、Web服务器、移动电话和便携终端、航空航天领域。

注:

如有错误、侵权,请联系笔者更改删除!!!

  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三九笔墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值