简单椭圆曲线密码学方法

Simple Elliptic Curve Cryptography Method

我正在做一个项目,目的是学习 ECC 加密算法,我正在 OCaml 中实现它。我在网上找不到这个问题的答案:

是否有使用ECC而不是对称密钥协议(即通过ECC Diffie-Hellman)的非对称加密算法方法(类似于Elgamal和RSA)?一个简单的方法就可以满足我们的目的。

是的。例如,Elliptic Curve Elgamal 和其他几个使用 Elliptic Curves 的非对称密码系统。

Elgamal 和 Diffie-Hellman 都基于 "discrete logarithm problem":给定整数 {1, 2, ... , p-1},生成器 g,很容易计算 g^k。然而,给定 {1,2, ... ,p-1} 中的某个元素 x,(据说)很难找到满足 g^k=x.

的 k

对于椭圆曲线,我们有类似的东西:给定椭圆曲线和生成点 P,很容易将一个点乘以整数 k。但我们认为,给定一个点 Q,很难找到满足 Q=kP 的 k。

此问题已在 crypto.stackexchange 中提出。

椭圆曲线密码学(包括 ECElgamal)也有很好的描述by Martin Leslie of U. of Arizona

一些评论,以防您要实施 Elgamal:

  • 正如评论中有人提到的,Elgamal 是同态的。如果你不想要同态 属性,请使用一些致盲技术。
  • Elgamal 将使加密文本比纯文本大很多。
  • "Textbook implementation" 的加密方法通常是有缺陷的。见毛文博的书,Modern Cryptography: Theory and Practice.