引言
大多数使用公钥密码进行加密和数字签名的产品都使用的是RSA算法。为了保证RSA的安全性,密钥的位数一定会增加,这对使用RSA的应用有着很重的负担。
而椭圆曲线密码(elliptic curve cryptography)的出现代表:可以使用比RSA短的多的密钥得到相同的安全性,因此可以减少处理负荷。
但是ECC真的很难阐述,下面我简单整理一下基本原理,以求读者看后能有一个大概的了解就ok。

椭圆曲线方程
我们多多少少都学过一些椭圆的数学知识,但是其实椭圆曲线并不是椭圆,称为椭圆曲线知识因为它们与计算椭圆周长的方程相似,也是用3次方程2个变量来表示的,可以简单表示为

椭圆曲线的定义中还包含一个称为无穷远点或者零点的元素,极为O,我们先不讨论这个。
从这个方程中我们可以知道一点:椭圆曲线关于x轴对称,这很重要。
这条曲线大概是这样子的:


同时,在上图中还要说明的很重要的一点是P+Q= -R,可以这么理解:这条曲线上的所有点构成了一个Abel群,群的性质中有一条,任意两点之和还在这个这个群里面,在曲线图形上的体现就是,任意两点的连线与曲线的另一个交点的镜像是这两个点的和。(先记住,后面都是围绕这一点推导的)
此时可以利用斜率和某些代数运算计算出r的坐标

λ是P和Q的斜率
举一个例子:

这样来看是不是就很容易理解了呢?
ok,那么继续,我们从椭圆曲线开始向密码延伸,密码应用中我们只简单将一个素曲线
素曲线的形式可以简单理解为在椭圆方程的两边同时取模mod p,然后再找符合条件的点
例如这是一个取模11例子

那么根据上面Abel群的性质,取模后同样是一个群,所以符合
的k个点的和同样也满足这个方程,这是椭圆密码的前提。
例如,这个方程上的点两个(2,7)相加

得到的点是(5,2),同样满足方程。
进一步,我们一直累加这个点,就可以逐渐得到所有满足方程的点

那么最后我们就进入到椭圆曲线密码学了
我们将ECC中的加法运算与RSA中的模乘运算对应,将ECC中的乘法运算与RSA的模幂运算对应,要建立基于椭圆曲线的密码体制,需要类似因子分解两个素数之积或求离散对数这样的难题。
考虑方程Q=kP,其中Q,P给给定曲线上的点,对给定的k,P计算Q比较容易,而对给定的Q和P计算k则比较困难,这就是椭圆密码的形成机制。实际应用中k的值非常大,从而使穷举攻击方法不可行
下面举例与椭圆曲线形成的私钥和公钥

用椭圆曲线面貌实现Diffie-Hellman的交换
两个用户A和B
(1)选择Eq(a,b)(素曲线方程)和一个基点G(x,y)(阶为n),这两个是全局公开量
(2)用户A闲杂一个小于n的整数n1作为私钥,然后产生公钥p1=n1G;改公钥是E中的一个点
(3)用户B可累死的选择私钥n2并计算公钥p2
(4)A产生秘密钥K=n1
p2,B产生秘密要K=n2*p1
容易证明,两个人的K是相同的
要破译这种体制,攻击者必须由G和kG计算k,这被认为是非常难的

椭圆曲线加解密
(1)将要发送的明文信息编码为形式(x,y)的点Pm,具体编码过程这里不讲了。。。
(2)每个用户A选择一个私钥n1,产生公钥p1=n1*G
(3)若A要将消息Pm加密后发送给B,则A随机选择1个正整数k,并产生密文Cm,该密文是一个点对
Cm={kG,Pm+kp2}
p2是B的公钥,B要对密文进行解密,则需要用第二个点减去第一个点与B的私钥之积
Pm+kp2-n2(kG)=Pm
例:


这一段 我知道很难理解,所以需要多看几遍还能慢慢有所体会。

椭圆曲线密码算术(ECC)原理相关推荐

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

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

  2. ECC(椭圆曲线密码编码学)简介

    参考:ECC加密算法入门介绍 ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)属于公开密钥算法. 一.平行线 假设平行线相交于无穷远点P∞,那么所有直线都相交,且 ...

  3. 椭圆曲线密码学(ECC)原理

    1.椭圆曲线的定义 满足以下形式二元三次方程的点集 y2+axy+by=x3+cx2+dx+e(其中a,b,c,d是实数)y^2+axy+by=x^3+cx^2+dx+e (其中a,b,c,d是实数) ...

  4. 画验证曲线_椭圆曲线加密算法(ECC)

    椭圆曲线加密算法,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法.相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全,RSA加密算法也是一种非对称加密算法,在公开密 ...

  5. 椭圆曲线密码算法概述

    椭圆曲线密码算法 椭圆曲线密码算法(Elliptic Curve Cryptography,ECC)是基于椭圆曲线数学的一种公钥密码算法,其安全性依赖于椭圆曲线离散对数问题的困难性. 椭圆曲线密码算法 ...

  6. 椭圆曲线算法(ECC)学习(二)之Secp256k1

    椭圆曲线算法(ECC)学习(二)之Secp256k1 018-03-23共621880人围观 ,发现 7 个不明物体数据安全 上一篇椭圆曲线算法(ECC)学习(一)中我们讲述了椭圆曲线算法的基本数学常 ...

  7. golang中椭圆曲线密码

    简介 椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为 ECC),一种建立公开密钥加密的算法,基于椭圆曲线数学.椭圆曲线在密码学中的使用是在1985年由Neal K ...

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

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

  9. 【密码学-2】什么是椭圆曲线密码

    文章目录 前言 一.椭圆曲线是什么? 二.ECC加密算法 1.简化的加密过程 2.数学相关知识 总结 本文共2042字,阅读全文约需10分钟. 前言 上回书我们说到,在常见的三种公钥密码学算法中,椭圆 ...

最新文章

  1. 注意力机制的两种形式
  2. go执行二进制文件的方法:通过shell脚本来调用二进制文件,直接执行go的二进制文件会存在参数传递问题
  3. 织梦点击数或者其他数值过【千】过【万】过【亿】的写法
  4. ExtJs2.0学习系列(3)--Ext.Window
  5. AsyncTask 异步任务基本使用-下载视频
  6. [转] @JoinColumn 详解 (javax.persistence.JoinColumn)
  7. VS项目属性的一些配置项的总结(important)
  8. 【ZZ】ubuntu9.10桌面版使用(一)基础安装配置
  9. 从0到1打造自己的网络电话系统
  10. 十八个经典问答,讲透了RS485接口!-小白收藏
  11. 新手如何建立网站,网站建设的几个步骤
  12. 通过log查看camera sensor型号
  13. 图像语义分割python_图像语义分割 —利用Deeplab v3+训练VOC2012数据集
  14. 深度学习——keras教程系列基础知识
  15. 如何做好微信朋友圈推广?
  16. zz:Android APP Monkey信息自动收集脚本
  17. 一篇博客学会了坦克大战
  18. .net refit post请求body 无法序列化[JsonProperty(“A“)]大写
  19. Docker-- 提高下载速度的方法
  20. 马克思基本原理概论 单元综合测试(二)

热门文章

  1. 【GaussDB】初始GaussDB和GaussDB版本介绍
  2. 小程序基础篇-视图与逻辑
  3. M1芯片实现Kail虚拟机(无Parallels)
  4. java线程中断 interrupt
  5. http-invoker插件原理解析
  6. mysql:增删改查语句大全
  7. 等值连接、自然连接和内连接之间的区别
  8. python设计麻将_Python写打麻将程序
  9. [极客大挑战 2019]Buy Flag1(BUUCTF)
  10. Java Spring中同时访问多种不同数据库