ECC-ElGamal
EC(Elliptic Curve)椭圆曲线
三种椭圆曲线
一般资料会以维尔斯特拉斯曲线(Weierstrass Curve)为例介绍椭圆曲线的基本概念和运算原理,这是因为任意椭圆曲线都可以写为维尔斯特拉斯曲线形式。实际上,椭圆曲线还包括多种其他的类型,如蒙哥马利曲线(Montgomery Curve)、扭曲爱德华曲线(Twisted Edwards Curve)等。Curve25519就是在蒙哥马利曲线上定义的椭圆曲线,而Ed25519是在扭曲爱德华曲线上定义的椭圆曲线。
1.维尔斯特拉斯曲线
椭圆曲线的一般形式可表示为:
其中
2.蒙哥马利曲线
蒙哥马利形式的椭圆曲线方程定义为:
3.扭曲爱德华曲线
扭曲爱德华形式的椭圆曲线方程定义为:
椭圆曲线间的转换
维尔斯特拉斯曲线、蒙哥马利曲线、扭曲爱德华曲线这三类椭圆曲线之间可以相互转换。
蒙哥马利曲线 ⇔ 维尔斯特拉斯曲线
任何椭圆曲线都可以写为维尔斯特拉斯形式。反之,当满足特定条件时,维尔斯特拉斯椭圆曲线可以转换为蒙哥马利椭圆曲线。具体转换条件参见《Montgomery Curve》的Equivalence with Weierstrass curves部分。
蒙哥马利曲线
蒙哥马利曲线点
反之,维尔斯特拉斯曲线点
蒙哥马利曲线 ⇔ 维尔斯特拉斯曲线
所有扭曲爱德华曲线都与蒙哥马利曲线双向有理等价(Birationally Equivalent),反之亦然。所谓双向有理等价,可以理解为除了个别点外,扭曲爱德华曲线的点和蒙哥马利曲线的点存在相互映射关系。
扭曲爱德华曲线
扭曲爱德华曲线点
蒙哥马利曲线点
当
椭圆曲线上的运算
1.有限域的负元
2.有限域的加法
3.斜率计算
ECC-ElGamal公钥加密算法
- 设
是一个大素数, 是有限域 上的椭圆曲线, 是椭圆曲线上的一个点,并且 的阶足够大。 和 以及 都公开。 - 随机选取整数
, ,其中 表示以基点 在曲线 上生成群的阶。计算 。 是公开的加密密钥(公钥), 是保密的解密密钥(私钥)。 - 加密变换:明文消息映射到椭圆曲线上的点
,随机选取一个整数 ,满足 ,密文为 ,其中 , 。 - 解密变换:对任意密文
,明文为 。
证明:
根据加密变换有
证毕。
例:
设
因选择的私钥为
计算过程示例:
首先计算
所以
然后计算
所以
类似计算可得
假设随机选取
因此,明文
对于解密过程而言,已知私钥
至此,ECC-ElGamal公钥加密算法加解密过程完毕。
参考
ISO/IEC 18033-2:2006 Information technology – Security techniques – Encryption algorithms – Part 2: Asymmetric ciphers
RFC 7748 Elliptic Curves for Security
曹天杰. 密码学引论[M].
Ed25519与Curve25519:概念与相互转换 - 知乎 (zhihu.com)
椭圆曲线加密算法(ECC) - 知乎 (zhihu.com)
辅因子(cofactor)解释:揭开椭圆曲线不为人知的秘密 - 知乎 (zhihu.com)
信息论与编码:有限域 - gxzzz - 博客园 (cnblogs.com)
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C#实现语音预处理:降噪、静音检测、自动增益(附Demo源码)
· 记一次 .NET 某无语的电商采集系统 CPU爆高分析
· Java团队Cursor最佳实践:3分钟构建「零泄漏」AI开发环境
· 从“看懂世界”到“改造世界”:AI发展的四个阶段你了解了吗?
· dotnetty 新的篇章- 开源