密码学 - 椭圆曲线 ECC ED25519

椭圆曲线是一系列满足如下方程的点:
y^2 = x^3 + ax + b
并且
4a^3 + 27b^2 != 0

特性

  1. 封闭性:因为椭圆曲线上的点相加,还是椭圆曲线上的点。
  2. 结合律:P+(Q+R) = (P+Q)+R = 0
  3. 单位元: 单位元是0, 即 P+0 = P
  4. 逆元: 一个椭圆曲线上的点P的逆元,是相对x坐标的对称点
  5. 交换律:P+Q = Q+P

标量乘法

nP = P + P + P + ... +P

  • 计算标量乘法,最简单的方法是一个个P点相加
  • 有个快速的计算方法:double后相加. "Double"主要是依次获得某个位对应的变量的结果。如果该位是1,就加到最后的结果中:

生成一个公钥

通常使用椭圆曲线算法,先选择曲线,计算椭圆曲线的阶,然后在这条曲线上找到最大的子群。找子群,就是寻找子群对应的生成元(G)。

从一个密钥(形式上是一个随机生成的数字k)开始,我们将它与曲线上预定义的点相乘,可以得到曲线上的另一个点,这就是相应的公钥K,而这个预定义的点叫作生成点G。生成点是作为secp256k1标准的一部分定义的,对于比特币而言,其所有密钥均使用相同G点

K=kG

k是密钥,G是生成点,K是生成的公钥,也是椭圆曲线上的一个点

找到生成点G的倍数kG。也就是G相加k次

在椭圆曲线中,一个点与其自身相加等同于在这个点上画一条切线,找到切斜与曲线相交的点,相交点相对x轴对称的点就是我们要找的点

演示G在椭圆曲线上被整数k相乘

两大系列

  • NIST系列曲线

    • 美国国家标准与技术研究院(National Institute of Standards and Technology, NIST)
    • 目前广泛使用
    • 代表: secp256k1
  • 25519系列曲线
    • 著名密码学家Daniel J. Bernstein在2006年独立设计的椭圆曲线加密/签名/密钥交换算法
    • 目前最快
    • 代表: ed25519

ED25519曲线

Curve25519/Ed25519/X25519 是著名密码学家Daniel J. Bernstein在2006年独立设计的椭圆曲线加密/签名/密钥交换算法,与现有的任何椭圆曲线算法完全独立,其中Ed25519用于签名。

25519系列曲线自2006年发表以来,除了学术界无人问津,2013年爱德华·斯诺登曝光棱镜计划后,该算法突然大火,OpenSSH迅速增加了对25519系列的支持,RFC增加了SSL/TLS对X25519密钥交换协议的支持。

ed25519的椭圆曲线方程如下:
y^2=x^3+486662x^2+x,modulop=2^255-19

25519算法的特点如下

  • 完全开放设计。算法各参数非常明确,没有任何可疑之处,而目前广泛使用的椭圆曲线是NIST,系数有来历不明的随机种子, 如: secp256k1
  • 安全性高。 实践上最安全的加密算法
  • 速度快。25519系列曲线是目前最快的椭圆曲线加密算法,性能远远超过NIST系列

参考:
https://mp.weixin.qq.com/s/-Pws7J_9DOvwxXJ-Ma9mig
http://mathworld.wolfram.com/EllipticCurve.html


往期精彩回顾:
区块链知识系列
密码学系列
共识系列
公链调研系列
以太坊系列
EOS系列
智能合约系列
Token系列

密码学系列 - 椭圆曲线 ECC - ED25519相关推荐

  1. 密码学系列 - 椭圆曲线签名的基本原理

    ECDSA 涉及到三个重要的概念 第一个是私钥,私钥是一个只有我自己知道的数字,我可以用私钥去生成签名,比特币使用的私钥是一个256 bit 的整数. 第二个是公钥,公钥是跟私钥配对的一个数,是根据私 ...

  2. 现代密码学之椭圆曲线ECC

    Elliptic Curve ECC介绍 Elliptic curves 椭圆曲线加法 加法的代数公式 椭圆曲线乘法 椭圆曲线结合 ElGamal cryptosystem计算例子展示(手算带步骤) ...

  3. 密码学系列 - 国密算法

    国密即国家密码局认定的国产密码算法.主要有SM1,SM2,SM3,SM4,SM9.密钥长度和分组长度均为128位. 国密算法种类 SM1 为对称加密.其加密强度与AES相当.该算法不公开,调用该算法时 ...

  4. 密码学系列 - 棱镜门

    prime256v1 (即 secp256r1) NSA对SECP256r1曲线安置了后门陷阱, 被美国情报人员破解可能性非常大 2013年发生了震惊世界的棱镜门事件.这一年,前中情局(CIA)职员爱 ...

  5. 密码学系列之:SAFER

    简介 分组密码是一个非常优秀的加密结构,很多常用加的加密算法使用的都是分组算法,比如DES.SAFER表示的也是一种分组密码算法.一起来看看吧. SAFER简介 SAFER的全称是Secure And ...

  6. 密码学系列(一):密码行业、政策介绍

    密码学系列(一):密码行业.政策介绍 管理部门 <密码法>(19年) <密码法>具体章节 第3章 商用密码 第4章 法律责任 相关零散知识 管理部门 国家密码管理局--商密办- ...

  7. 密码学系列 - 默克尔路径

    默克尔树 (merkle tree) 默克尔树,也称为哈希二叉树,是一种用于有效地汇总和验证大型数据集完整性的数据结构. 默克尔路径 可用于证明在一个很大字节数的区块中上千笔交易中的具体某一笔交易的存 ...

  8. 密码学系列(三):区块链+密码学基础知识

    密码学系列(三):区块链+密码学基础知识 一.区块链的概念 区块链概述 区块链的特点 区块链变化 市场现状 二.区块链政策与标准 区块链的特点与发展 三.区块链的定义 区块链的价值 四.区块链开发语言 ...

  9. 密码学系列 - 国密算法SM1/SSF33

    国密分组密码 SM1分组密码和SSF33分组密码均为国密分组密码标标准,SM1和SSF33的密钥长度和分组长度均为128比特. 目前这两个分组密码标准的算法尚未公开,其实现仅可以通过硬件芯片的方式获得 ...

最新文章

  1. python使用imbalanced-learn的SMOTENC方法进行上采样处理数据不平衡问题
  2. python numpy安装-Numpy安装
  3. 突发!央行确认支付宝3种违法违规行为,处罚18万元!
  4. 简单实现KeyChain实例
  5. 获取计算机内存镜像文件,计算机取证中的内存镜像获取的研究与实现
  6. 网页爬虫,HttpClient+Jericho HTML Parser 实现网页的抓取
  7. 关于es6中新增的一些方法----数组篇
  8. 关于if...else语句的小注意
  9. ubuntu升级tensorflow版本
  10. 手枪射击不准,远超想象,5米就完全没准头
  11. 百度地图JavaScript 选择 省份 显示 出省份的区域以及省份下的信息标点
  12. xp系统关于无线网络连接服务器,八步骤搞定XP系统无线网络设置问题
  13. 【萧蕊冰】ui设计和交互设计的区别是什么?
  14. 用php做滚动,用PHP+java实现自动新闻滚动窗口
  15. 阿里安全研究员路全:如何运用AI对抗“数据污染”?
  16. [科技] 假装是ETT的ETT
  17. Spring Boot 微信-验证服务器有效性
  18. while 循环进入死循环?
  19. 硬件:详细讲解台式电脑上的常用的几个接口!
  20. Python 矩阵顺时针逆时针旋转90度

热门文章

  1. 利用OpencvSharp计算工件移动后,机器人旋转中心(抓取位置)
  2. python小白到大牛pdf_清华大学出版《python小白到大牛》PDF版分享
  3. 教资计算机报高中害死初中,教师资格证报名入口必须电脑登录吗_中小学教师资格考试网...
  4. 我的世界基岩版好还是java版好_【Minecraft/我的世界】Java版和基岩版的区别(1)...
  5. 国足0-2日本 出线仅存理论可能
  6. 20个数据分析师必会的营销模型,赶紧收藏
  7. 相亲时, 如何向 TA 解释区块链? | 春哥区块链创业记
  8. 新媒体运营教程:策划一场成功漂亮的活动策划
  9. oracle v backup,睿备份oracle下载
  10. 保姆级人工智能学习成长路径