你们中知道公钥密码学的人可能已经听说过ECC, ECDH或ECDSA。第一个是椭圆曲线密码学的首字母缩写,其他是基于它的算法的名称。
今天,我们可以在TLS、PGP和SSH中找到椭圆曲线密码系统,这只是现代网络和IT世界所基于的三种主要技术之一。更不用说比特币和其他加密货币了。
在ECC流行之前,几乎所有的公钥算法都是基于RSA、DSA和DH等基于模块化算法的可替代的密码系统。RSA和它的朋友在今天仍然非常重要,并且经常和ECC一起使用。然而,虽然RSA及其朋友背后的魔力可以很容易地解释,被广泛理解,粗略的实现也可以很容易地编写,但是ECC的基础对大多数人来说仍然是一个谜。
本文通过一系列的博客文章介绍椭圆曲线密码学的世界。本文的目标不是提供一个完整详细的ECC指南(网上有很多关于这个主题的信息),而是提供一个简单的“ECC是什么”和“为什么它被认为是安全”的概述,而不是浪费时间在冗长的数学证明或枯燥的实现细节。我还将提供一些有用的示例,以及可视化交互工具和脚本。
具体来说,以下是我将涉及的主题:
- 实数上的椭圆曲线和群定律(包括在这篇博客中)
- 有限域上的椭圆曲线与离散对数问题
- 密钥对生成和两种ECC算法:ECDH和ECDSA
- 破解ECC安全的算法,并与RSA进行比较
为了理解这里所写的内容,您需要了解集合论、几何和模运算的一些基本知识,并熟悉对称和非对称密码学。最后,您需要清楚地知道什么是“简单”问题,什么是“困难”问题,以及它们在密码学中的作用。
椭圆曲线
首先,什么是椭圆曲线?Wolfram数学世界给出了一个优秀而完整的定义。但对于我们的目标,椭圆曲线是简单的由方程描述的点集:
其中(排除奇异曲线)。上面的方程就是所谓的椭圆曲线的维尔斯特拉斯范式。