在网络世界中,计算机以数据包的形式传输信息,为防止信息被中途窃取,通常会通过加密的方式将信息变成一些不规则的数据,只有通过正确的密钥才可以恢复。而用来加密的两种方式分别为单密钥加密和公开密钥加密,后者是现如今常用的加密方式。
公开密钥加密又叫非对称加密,其算法可以说是一个数学上的难题。RSA可以说是第一个较为成熟的公开密钥算法,但其运算速度较慢,因此一般被用来分发密钥,而不直接用来加密数据。
1985年,N. Koblitz和V. Miller分别独立提出了椭圆曲线密码系统(ECC),其依据就是定义在椭圆曲线点群上的离散对数问题的难解性。换句话说,将ECC中的加法运算、乘法运算,分别与RSA中的模乘运算、模幂运算相对应,就可以建立基于椭圆曲线的对应密码体制。
在区块链网络中,ECC通常被应用在数字签名等环节。今天,我们就来简单了解一下这个神奇的加密算法。
一、什么是ECC?
ECC利用了某种特殊形式的椭圆曲线,即定义在有限域上的椭圆曲线。其方程如下:

这里p是素数,a和b为两个小于p的非负整数,它们满足:
其中,x,y,a,b∈Fp,则满足式2的点(x,y)和一个无穷点O就组成了椭圆曲线E。
ECC的加密原理基于椭圆曲线离散对数问题(ECDLP)而构建,ECDLP定义如下:给定素数P和椭圆曲线E,对Q=kP,在已知P,Q的情况下求出小于P的正整数k。可以证明,已知k和P计算Q比较容易,而由Q和P计算k则比较困难,至今没有有效的方法来解决这个问题,这就是ECC的原理所在。
从上述简单的原理分析来看,ECC既可以用于数据加密,也可以用于数字签名。作为公开密钥算法的一种,其体制要用到点乘、点加、模乘、模加、模逆、模幂这些基本运算,前两个属于椭圆曲线群上的运算,它们的执行速度直接决定着椭圆曲线的加密速度。为了提高速度,可从采用高速算法或实现并行性两方面解决。
二、ECC的优势
从某种意义上来说,ECC是目前安全性最高的公钥密码系统,且具备计算量小、储存空间占用小、处理速度快、带宽要求低等优势,因此尤其适合资源和存储资源受限的设备。
如今,ECC已被广泛应用于保密通信、网络安全、电子商务等领域的无线通信安全协议中,可以进行身份和消息的完整性验证,同时进行密钥协商随机生成密钥对和域内元素,保证密钥的新鲜性,提供双方身份认证、密钥确认、安全性,并能防止中间人攻击和重放攻击。
三、ECC与RSA的比较
ECC是RSA的强有力竞争者,其与RSA相比有以下优点:
1. 安全性能更高:如160位ECC与1024位RSA有相同的安全强度;
2. 计算量小、处理速度快:在私钥的处理速度上(解密和签名),ECC远比RSA快得多;
3. 存储空间占用小:ECC的密钥尺寸和系统参数与RSA相比要小得多,所以占用的存储空间也小得多;
4. 带宽要求低:这一优势使ECC具有更广泛的应用前景。
ECC的这些优点使其必将取代RSA,成为通用的公开密钥算法。目前,SET协议(安全电子交易协议)的制定者已把它作为下一代SET协议中不可缺少的公开密钥算法。
尽管ECC有以上优势,但仍存在两大技术难题:第一,怎么选取合适曲线;第二,怎么快速实现椭圆曲线密码。所以,在严谨的密码学体制下还需进一步研究,以攻克更多技术难题,最终保障用户信息安全。