参考:ECC加密算法入门介绍

ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)属于公开密钥算法。

一、平行线

假设平行线相交于无穷远点P∞,那么所有直线都相交,且只有一个交点。为与无穷远点相区别把原来平面上的点叫做平常点。无穷远点的性质:

  1. 直线上的无穷远点只能有一个。
  2. 平面上一组相互平行的直线有公共的无穷远点。
  3. 平面上任何相交的两直线有不同的无穷远点。
  4. 平面上全体无穷远点构成一条无穷远直线
  5. 平面上全体无穷远点与全体平常点构成射影平面

二、射影平面坐标系

射影平面坐标系是对普通平面直角坐标系的扩展,可以表示无穷远点。

对普通平面直角坐标系上的点A的坐标(x,y)做如下改造:

令x=X/Z ,y=Y/Z(Z≠0),则A点可以表示为(X:Y:Z)。比如点(1,2)在新坐标系下可表示为(1,2,1)等如(Z:2Z:Z)的点。

也可以得到直线的方程aX+bY+cZ=0。平行直线的方程是:
aX+bY+c1Z =0; aX+bY+c2Z =0  (c1≠c2);

将二方程联立,求解。有c2Z= c1Z= -(aX+bY),∵c1≠c2 ∴Z=0  ∴aX+bY=0;
所以无穷远点就是这种形式(X:Y:0)表示。注意,平常点Z≠0,无穷远点Z=0,因此无穷远直线对应的方程是Z=0。

这个新的坐标体系能够表示射影平面上所有的点,被叫做射影平面坐标系

三、椭圆曲线

椭圆曲线的定义:一条椭圆曲线是在射影平面上满足方程
                               ----------------[3-1]
的所有点的集合,且曲线上的每个点都是非奇异(或光滑)的。

是Weierstrass方程(维尔斯特拉斯,Karl Theodor Wilhelm Weierstrass,1815-1897),是一个齐次方程。

看椭圆曲线是什么样的:

 

所谓“非奇异”或“光滑”的,在数学中是指曲线上任意一点的偏导数Fx(x,y,z),Fy(x,y,z),Fz(x,y,z)不能同时为0。

椭圆曲线上有一个无穷远点O∞(0:1:0),因为这个点满足方程[3-1]。

设x=X/Z ,y=Y/Z代入方程[3-1]得到:

-------------------[3-2]

也就是说满足方程[3-2]的光滑曲线加上一个无穷远点O∞,组成了椭圆曲线。

平常点A(x,y)的切线的斜率k

 ------------------------[3-3]

四、椭圆曲线上的加法

运算法则:任意取椭圆曲线上两点P、Q (若P、Q两点重合,则做P点的切线)做直线交于椭圆曲线的另一点R’,过R’做y轴的平行线交于R。我们规定P+Q=R。

1.根据这个法则,可以知道椭圆曲线无穷远点O∞与椭圆曲线上一点P的连线交于P’,过P’作y轴的平行线交于P,所以有 无穷远点 O∞+ P = P 。这样,无穷远点 O∞的作用与普通加法中零的作用相当(0+2=2),我们把无穷远点 O∞ 称为 零元。同时我们把P’称为P的负元(简称,负P;记作,-P)。

2.根据这个法则,可以得到如下结论 :如果椭圆曲线上的三个点A、B、C,处于同一条直线上,那么他们的和等于零元,即A+B+C= O∞

3.k个相同的点P相加,我们记作kP。如下图:P+P+P = 2P+P = 3P。

五、密码学中的椭圆曲线

前面学到的椭圆曲线是连续的,并不适合用于加密;所以,要把椭圆曲线变成离散的点。把椭圆曲线定义在有限域上。

下面,我们给出一个有限域Fp,这个域只有有限个元素。
   Fp中只有p(p为素数)个元素0,1,2 …… p-2,p-1;
   Fp 的加法(a+b)法则是 a+b≡c (mod p);即,(a+c)÷p的余数 和c÷p的余数相同。
   Fp 的乘法(a×b)法则是  a×b≡c (mod p);
   Fp 的除法(a÷b)法则是  a/b≡c (mod p);即 a×b-1≡c  (mod p);(b-1也是一个0到p-1之间的整数,但满足b×b-1≡1 (mod p);
   Fp 的单位元是1,零元是 0。

同时,并不是所有的椭圆曲线都适合加密。y2=x3+ax+b是一类可以用来加密的椭圆曲线,也是最为简单的一类。下面我们就把y2=x3+ax+b 这条曲线定义在Fp上:
   选择两个满足下列条件的小于p(p为素数)的非负整数a、b
      4a3+27b2≠0 (mod p)
   则满足下列方程的所有点(x,y),再加上 无穷远点O∞ ,构成一条椭圆曲线。
     y2=x3+ax+b  (mod p)
   其中 x,y属于0到p-1间的整数,并将这条椭圆曲线记为Ep(a,b)。

我们看一下y2=x3+x+1  (mod 23)的图像

Fp上的椭圆曲线同样有加法,但已经不能给以几何意义的解释。不过,加法法则和实数域上的差不多。
   1 无穷远点 O∞是零元,有O∞+ O∞= O∞,O∞+P=P
   2 P(x,y)的负元是 (x,-y),有P+(-P)= O∞
   3 P(x1,y1),Q(x2,y2)的和R(x3,y3) 有如下关系:
     x3≡k2-x1-x2(mod p)
     y3≡k(x1-x3)-y1(mod p)
     其中若P=Q 则 k=(3x2+a)/2y1  若P≠Q,则k=(y2-y1)/(x2-x1)

最后,我们讲一下椭圆曲线上的点的阶。
      如果椭圆曲线上一点P,存在最小的正整数n,使得数乘nP=O∞,则将n称为P的 ,若n不存在,我们说P是无限阶的。事实上,在有限域上定义的椭圆曲线上所有的点的阶n都是存在的。

六、椭圆曲线上简单的加密/解密

考虑如下等式:
       K=kG  [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数]
       不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。
       这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),k(k<n,n为基点G的阶)称为私有密钥(privte key),K称为公开密钥(public key)。

现在我们描述一个利用椭圆曲线进行加密通信的过程:
   1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。
   2、用户A选择一个私有密钥k,并生成公开密钥K=kG。
   3、用户A将Ep(a,b)和点K,G传给用户B。
   4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M(编码方法很多,这里不作讨论),并产生一个随机整数r(r<n)。
   5、用户B计算点C1=M+rK;C2=rG。
   6、用户B将C1、C2传给用户A。
   7、用户A接到信息后,计算C1-kC2,结果就是点M。因为
          C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
      再对点M进行解码就可以得到明文。

在这个加密通信中,如果有一个偷窥者H ,他只能看到Ep(a,b)、K、G、C1、C2 而通过K、G 求k 或通过C2、G求r 都是相对困难的。因此,H无法得到A、B间传送的明文信息。

密码学中,描述一条Fp上的椭圆曲线,常用到六个参量:
       T=(p,a,b,G,n,h)。
   (p 、a 、b 用来确定一条椭圆曲线,
   G为基点,
   n为点G的阶,
   h 是椭圆曲线上所有点的个数m与n相除的整数部分)

这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:

1、p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;
   2、p≠n×h;
   3、pt≠1 (mod n),1≤t<20;
   4、4a3+27b2≠0 (mod p);
   5、n 为素数;
   6、h≤4。

ECC(椭圆曲线密码编码学)简介相关推荐

  1. ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学

    ECC ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学,是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制.在软件注册保护方面起到很大的作用,一般的序列 ...

  2. ECC椭圆密码算法c语言实现,深入浅出椭圆加密算法ECC

    前言 同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开 ...

  3. ECC(Elliptic Curve Cryptography)椭圆曲线密码详解

    椭圆曲线密码基于离散对数难题 公钥密码 ECC 非对称密钥功能:加密.签名.密钥交换 ECC是RSA的后继更短的密钥长度.更快的签名.更快的密钥协商 私钥长度为256bits, 32字节.大小在曲线的 ...

  4. 椭圆曲线密码算术(ECC)原理

    引言 大多数使用公钥密码进行加密和数字签名的产品都使用的是RSA算法.为了保证RSA的安全性,密钥的位数一定会增加,这对使用RSA的应用有着很重的负担. 而椭圆曲线密码(elliptic curve ...

  5. 【密码算法 之十四】非对称算法,ECC椭圆曲线算法 之 ECDSA、ECDH、SM2、SM9等

    文章目录 1. ECC椭圆曲线 1.1 曲线类型 1.2 曲线标准 1.3 表示方法 1.4 曲线运算 1.4.1 点加(Point Addition) 1.4.2 点乘(Point Multipli ...

  6. 【密码学Sage代码】椭圆曲线加密/解密(基于《密码编码学与网络安全——原理与实践(第七版)》)

    [密码学Sage代码]椭圆曲线加密/解密(基于<密码编码学与网络安全--原理与实践(第七版)>) 教材内容: 实践的Sage代码: #[静水流深Sage代码]使用椭圆曲线密码体制进行加密/ ...

  7. 《密码编码学与网络安全》William Stalling著---学习笔记(二)【知识点速过】【数字签名+密钥管理分发+用户认证】

    提示:博文有点长,请保持耐心哦~ 前一篇文章: <密码编码学与网络安全>William Stalling著-学习笔记(一)[知识点速过][传统密码+经典对称加密算法+经典公钥密码算法+密码 ...

  8. 密码学(一)—— 背景、常用的密码算法简介,单向散列简介、数字签名简介

    背景 密码,最初的目的就是用于对信息的加密,计算机领域的密码技术种类繁多,但随着密码学的运用,密码还用于身份认证,防止否认等功能上.最基本的,是信息加密解密分为对称加密和非对称加密,这两者的区别在于是 ...

  9. iOS - ECC椭圆曲线、ECDSA签名验签和ECIES加解密本文来源

    内容简介:ECC椭圆曲线详解前言ECC英文全称"Ellipse Curve Cryptography",与传统的基于大质数因子分解困难性的加密方法不同,ECC通过椭圆曲线方程式的性 ...

最新文章

  1. vue中的v-on事件监听机制
  2. windows下primer3-py安装
  3. 【Python CheckiO 题解】Largest Rectangle in a Histogram
  4. python实践项目(三)
  5. php7异常抛出的好处,PHP7的错误与异常
  6. linux系统删除openjdk并安装oracle jdk
  7. ATITIT db perf enhs 数据库性能优化 目录 第一章 Cache类 1 第一节 查询cache 1 第二节 Update cache 2 第三节 内存表机制 零时表 2 第四节 雾
  8. HTTP错误状态码详解
  9. 矩阵键盘消抖 c语言,按键消抖,矩阵键盘原理和矩阵键盘的仿真模型
  10. 虚拟机内linux网络连接,vmware中redhat5虚拟机无法连接网络
  11. 期权与期货有哪些不同?
  12. 国内做三维GIS的公司总结-cesium和threejs
  13. Android 指纹验证
  14. Scope参数错误或没有Scope权限
  15. in not 效率太慢_[笔记] SQL性能优化 - 避免使用 IN 和 NOT IN
  16. 机器学习(六):特征降维和主成分分析法
  17. 宝塔linux面板和centOS的区别,关于 Linux Centos7 宝塔面板的问题
  18. 那个软件可以直接复制PDF文件的文本?复制PDF文字教程
  19. PTA-厘米换算英尺英寸
  20. jcs-基本概念和使用

热门文章

  1. [幻灯]9.2-9.5日晚-剔除“伪创新”和“无领域”的领域驱动设计-网课
  2. SpringBootc出现Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.clo
  3. BUCK型开关电源中的损耗与效率的计算
  4. 瑜伽的起源和种类划分
  5. 【ssh出错】Unable to negotiate with XXX: Their offer: ssh-rsa
  6. 案例 | 看某国有大行如何构建内部数据安全风险管控核心能力
  7. 复旦大学2018--2019学年第二学期高等代数II期末考试情况分析
  8. 在Twitch,YouTube和其他地方流式传输游戏的最佳方法
  9. 【JAVA】 容纳对象 数组
  10. Codeforces Round #143 (Div. 2)-D. Magic Box