【问题标题】:What makes the trapdoor function in elliptic curve cryptography hard to reverse?是什么让椭圆曲线密码学中的陷门函数难以逆转?
【发布时间】:2025-12-28 11:50:12
【问题描述】:

我一直在阅读这篇关于椭圆曲线加密及其工作原理的文章: http://arstechnica.com/security/2013/10/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/

在文章中,他们说:

事实证明,如果你有两个点[在一条椭圆曲线上],一个初始点用它自己“点”n次到达[曲线上]的一个终点,当你只知道最终的时候找出n点,第一点很难。

它继续指出,找出 n 的唯一方法(如果你只有第一个和最后一个点,并且你知道曲线 eqn),就是重复点初始点,直到你最终得到匹配的最终点.

我想我明白这一切——但让我感到困惑的是——如果 n 是私钥,并且最后一点对应于公钥(我认为是这种情况),那么它不是完全相同吗从私人计算公钥的工作量,就像从公共计算私人密钥一样(两者都只需要递归地在曲线上点一个点)?我是不是对这篇文章的内容有误解?

【问题讨论】:

  • Cryptography 更适合这类问题。这对于 * 来说尤其离题,因为它不直接涉及编程。
  • 我投票结束这个问题,因为它属于crypto.stackexchange.com
  • 如果你天真地计算 B+B+B+... n 次,那确实太贵了。但是你可以计算 2B=B+B 然后 4B=2B+2B 等等。减少点加法到指数对数的数量。见en.wikipedia.org/wiki/Exponentiation_by_squaring
  • @ArtjomB - 抱歉 - 我不知道有基于加密的堆栈交换!我可以搜索,也许在那里重新询问。谢谢 - 我的错。

标签: cryptography elliptic-curve


【解决方案1】:

编辑: 我之前说过 n 不是私钥。在您的示例中,n 服务器或客户端私钥。

它的工作原理是有一个任何人都知道的起点。

  • 您选择随机整数 k 并执行“打点操作”k-次。然后将这个新点发送到服务器。 (k 是您的私钥)
  • 服务器对起始点执行相同的操作,但 q 次并将其发送给您。 (q 是服务器的私钥)
  • 您将从服务器获得的点数“点”k 次。最后一点将是起点“点”k*q-次。
  • 服务器对它从你那里得到的点做同样的事情。同样,它的最后一点将是起点“点缀”q*k-次。

这意味着终点(=起点“dotted”k*q-次)是共享秘密,因为任何攻击者都知道的都是起点,起点是 k -times 和起点点缀 q-times。并且仅给出这些数据,实际上不可能找到作为 k*q 乘积的最终点,除非其中任何一个已知。

编辑: 不,在已知 G 值(发送点)和 P(起点)。更多评论区和:

【讨论】:

  • 这听起来像 Elliptic-Curve Diffie-Hellman - 还有椭圆曲线非对称密钥加密算法吗? - 另外,也许我没有完全清楚地表达我的问题 - 但我想我的意思是:在你的例子中 - 什么是防止攻击者简单地监听从我到服务器的第一次传输,然后只是点缀已知的起点,直到他们到达正确的终点?不还是只需要k次操作吗?
  • 1) 没有纯粹的 ECC 算法(至少我知道是这样),因为要解密任何消息,都需要进行“逆打点”,但请看ElGamal ES。跨度>
  • @user1971524 2) 想象 k 的大小与点本身的大小相似。鉴于当今计算机的计算能力(每秒大约 10^9 次操作),在已知 G(发送点)和 P(起点)的已知值的情况下,尝试从 G = kP 确定 k 将花费比生命周期更多的时间地球的;这称为椭圆曲线离散对数问题。如果你知道你想要提升的权力(你的私钥),你可以使用2P=P+P; 4P=2P+2P...