55、椭圆曲线密码学:Suite B 中的明星算法

椭圆曲线密码学:Suite B 中的明星算法

1. 引言

2005 年,美国国家安全局(NSA)公布了一份推荐的加密算法和协议列表,即“Suite B”,被认为是那个时代未分类方案中的佼佼者。本文将介绍其中的椭圆曲线密码学(ECC)。

2. 椭圆曲线密码学基础

1985 年,Neal Koblitz 和 Victor S. Miller 独立发现了椭圆曲线密码学。与 RSA 相比,它的一个显著优势是在使用更小密钥的情况下,能达到与 RSA 相当的安全级别。例如,一个 313 位的椭圆曲线密钥与一个 4096 位的 RSA 密钥具有相同的安全性。

2.1 椭圆曲线的定义

椭圆曲线是方程 $y^2 = x^3 + ax + b$ 的解的集合,以及一个无穷远点 $\infty$,这类方程被称为 Weierstrass 方程。椭圆曲线的历史悠久,其“弦和切线”的点加法方法可以追溯到公元三世纪的 Diophantus。

椭圆曲线的解的图形有两种基本形式,取决于曲线是有三个实根还是只有一个实根。为了简化后续工作,我们避免使用具有重根的椭圆曲线,并且不使用特征为 2 或 3 的域。

椭圆曲线并不像椭圆,其名称源于与椭圆积分的联系。19 世纪,数学家在尝试寻找椭圆弧长公式时引入了椭圆积分,例如 $\int\frac{dx}{x^3 + ax + b + c + d}$ 和 $\int\frac{x dx}{x^3 + ax + b + c + d}$。将上述积分式的分母设为 $y$,就得到了椭圆曲线方程 $y^2 = x^3 + ax + b$。

2.2 椭圆曲线上的点加法

椭圆曲线上点的加法定义较为奇特。要计算两点 $P_1$ 和 $P_2$ 的和,我们通过这两点画一条直线,该直线会与曲线相交于第三点 $I$,但 $I$ 并非和点,我们将 $I$ 关于 $x$ 轴反射得到新点 $P_3$,则 $P_1 + P_2 = P_3$。

如果要将一个点与自身相加,我们在该点处画曲线的切线,然后按照上述方法继续操作。当两个点在垂直直线上(或曲线在某点处有垂直切线)时,引入额外的无穷远点 $\infty$ 来解决问题。在这些定义下,椭圆曲线上的点(包括 $\infty$)构成一个交换群,其中 $\infty$ 是单位元,因为对于任何点 $P$,都有 $P + \infty = P$。

点加法也可以通过代数方法实现。设 $P_1 = (x_1, y_1)$ 和 $P_2 = (x_2, y_2)$,则 $P_1 + P_2 = (m^2 - x_1 - x_2, m(2x_1 - (m^2 - x_2)) - y_1)$,其中:
- 当 $P_1 \neq P_2$ 时,$m = \frac{y_2 - y_1}{x_2 - x_1}$;
- 当 $P_1 = P_2$ 时,$m = \frac{3x_1^2 + a}{2y_1}$。

2.3 椭圆曲线的模运算

前面的图形展示的是实数解的椭圆曲线,我们也可以对相同的方程进行模 $n$ 运算。例如,考虑方程 $y^2 = x^3 + 4 \pmod{7}$,通过代入 $x$ 的值 $0, 1, 2, 3, 4, 5, 6$,并检查哪些值在模 7 下是完全平方数,我们可以快速得到完整的解集合:$(0,4), (0,5), (1,1), (1,6), (2,2), (2,5), (5,2), (5,5), (6,0), \infty$。

除了 0 以外,每个代入 $x$ 值得到的完全平方数都会对应两个 $y$ 值。有趣的是,如果我们寻找椭圆曲线上 $x$ 和 $y$ 都是有理数的点,解的数量可能是无限的或有限的,但如果是有限的,最多不超过 16 个。另一方面,通过对素数进行模运算,我们可以得到任意大但仍然有限的解集合。

对于给定的椭圆曲线模 $p$,大约有一半的 $x$ 值代入后能得到模 $p$ 的平方根(即曲线上的点)。每个非零平方根有两个解,所以大约有 $p$ 个点,再加上无穷远点 $\infty$,总共约有 $p + 1$ 个点,但实际数量可能会有所偏差。德国数学家 Helmut Hasse 在 1930 年左右找到了这个偏差的界限:$|N - (p + 1)| \leq 2\sqrt{p}$,其中 $N$ 是实际的点数。例如,当 $p = 101$ 时,估计有 102 个点,Hasse 定理保证实际数量在 82 到 122 之间。

3. 椭圆曲线 Diffie - Hellman 密钥交换

椭圆曲线可以用于在不安全的信道上协商密钥,这是 Diffie - Hellman 密钥交换的椭圆曲线版本。为了向 Koblitz 致敬,这里的密钥交换由 Aïda 和 Bernardo 完成,具体步骤如下:
1. Aïda 和 Bernardo 商定一条椭圆曲线 $E \pmod{p}$,其中 $p$ 是素数。
2. 他们商定曲线上的一个点 $B$(这也是公开进行的)。
3. Aïda 选择一个随机(秘密)整数 $a$,并计算 $aB$,然后将其发送给 Bernardo。
4. Bernardo 选择一个随机(秘密)整数 $b$,并计算 $bB$,然后将其发送给 Aïda。
5. Aïda 和 Bernardo 都可以计算 $abB$,其 $x$ 坐标可以用作对称系统的秘密密钥。

在椭圆曲线上,给定两点 $P$ 和 $B$,寻找整数 $x$ 使得 $xB = P$ 是离散对数问题的椭圆曲线版本。当数值较大时,目前还没有已知的有效解决方法。虽然窃听者可能知道 $aB$ 和 $bB$,但无法有效地找到 $a$ 或 $b$,从而保证了密钥交换的安全性。

在计算一个点的大倍数时,可以采用重复平方技术来避免多次相加的繁琐。例如,要计算 $100P$,可以表示为 $2(2(P + 2(2(2(P + 2P)))))$,这样只需要 2 次加法和 6 次加倍操作,而不是 99 次加法。

4. 消息加密

要使用椭圆曲线对消息进行加密,需要将明文转换为曲线上的点。Hasse 定理表明,对于足够大的模数,曲线上有足够的点,但目前还没有快速的确定性方法将字符分配到点上。Koblitz 描述了一种将字符和点配对的方法:
1. 将消息表示为一个数字 $m$。
2. 只有当 $m$ 是模 $p$ 的完全平方数时,曲线上才会有 $(m, y)$ 点。
3. 在 $m$ 后面添加一些位,使得新数字 $x$ 是模 $p$ 的完全平方数。这可能需要尝试几次,每次尝试有大约 50% 的机会得到完全平方数,添加的位数越多,成功的机会就越大。

5. Elgamal 椭圆曲线加密

Diffie - Hellman 有椭圆曲线版本,Elgamal 也有。下面通过一个例子说明 Bisahalani 如何在这个系统中向 Aditsan 发送加密消息。

Aditsan 选择椭圆曲线 $y^2 = x^3 - 2x + 3 \pmod{29}$ 和曲线上的点 $B = (8, 21)$,并选择一个随机(秘密)数 $s = 3$,计算 $sB = 3(8, 21)$。计算过程如下:
1. 加倍操作 :因为将一个点乘以 2 等同于将其自身相加,使用公式 $2B = (m^2 - 2x_B, m(3x_B - m^2) - y_B)$,其中 $m = \frac{3x_B^2 + a}{2y_B}$。对于该曲线,$a = -2$,计算 $m = \frac{(3)(8)^2 - 2}{2\times21} = \frac{190}{42} = \frac{16}{13} \pmod{29}$。在模运算中,除法意味着将分子乘以分母的逆元,13 模 29 的逆元是 9,所以 $m = (16)(9) = 144 = 28 \pmod{29}$,可表示为 $-1 \pmod{29}$。将 $m$ 代入公式得到 $2B = ((-1)^2 - 2(8), (-1)(3(8) - (-1)^2) - 21) = (14, 14)$。
2. 求和操作 :计算 $B + 2B$,使用公式 $P_1 + P_2 = (m^2 - x_1 - x_2, m(2x_1 - (m^2 - x_2)) - y_1)$,其中 $m = \frac{y_2 - y_1}{x_2 - x_1}$。计算 $m = \frac{14 - 21}{14 - 8} = -\frac{7}{6} = (-7)(5) = -35 = 23 \pmod{29}$,代入公式得到 $B + 2B = ((23)^2 - 8 - 14, 23(2(8) - ((23)^2 - 14)) - 21) = (507, -11498) = (14, 15)$。

Aditsan 公开其公钥:椭圆曲线 $y^2 = x^3 - 2x + 3 \pmod{29}$,点 $B = (8, 21)$ 和 $sB = (14, 15)$,并保留 $s$ 为秘密。

Bisahalani 准备消息,将其转换为 $x$ 值,并在末尾添加位以确保 $x^3 - 2x + 3$ 是模 29 的完全平方数。为了简化,假设他的消息表示为 12,得到曲线上的点 $M = (12, 5)$。他选择一个随机数 $k = 5$,计算 $kB = 5(8, 21) = (14, 15)$ 和 $M + k(sB) = (12, 5) + 5(14, 15) = (12, 5) + (8, 5) = (15, 19)$。

Aditsan 收到 Bisahalani 的两部分消息后,计算 $s(kB) = 3(14, 15) = (8, 8)$,然后计算 $[M + k(sB)] - s(kB) = (15, 19) - (8, 8)$。在椭圆曲线上,减法通过反射点来实现,$-(8, 8) = (8, -8) = (8, 21) \pmod{29}$,所以 $(15, 19) - (8, 8) = (15, 19) + (8, 21) = (12, 5) = M$,从而恢复了原始消息。

下面是椭圆曲线 Diffie - Hellman 密钥交换的流程图:

graph LR
    A[Aïda 和 Bernardo 商定椭圆曲线 E (mod p) 和点 B] --> B[Aïda 选择随机整数 a 并计算 aB 发送给 Bernardo]
    A --> C[Bernardo 选择随机整数 b 并计算 bB 发送给 Aïda]
    B --> D[Aïda 计算 abB]
    C --> D[Bernardo 计算 abB]
    D --> E[使用 abB 的 x 坐标作为秘密密钥]

综上所述,椭圆曲线密码学在密钥交换和消息加密方面具有重要的应用,并且具有较高的安全性和效率。

6. 椭圆曲线密码学的个性人物

椭圆曲线密码学(ECC)的创造者们似乎并非受利益驱动。Neal Koblitz 起初并未立即意识到椭圆曲线密码学的商业潜力,他认为这只是一个值得研究的理论结构。而 ECC 的共同发现者 Victor Miller 虽然认识到了其实际价值,但当时他所在的 IBM 官僚机构只对 DES 加密系统感兴趣,因此两人都没有为这项新技术寻求专利。

Scott Vanstone 是第一个将椭圆曲线密码学商业化的人。他通过现在名为 Certicom 公司开展相关业务。1997 年 3 月,他邀请 Koblitz 担任顾问,每月支付 1000 美元,Koblitz 接受并将这笔钱捐赠给了华盛顿大学,但后来发现资金被滥用,便将其重新定向到 Kovalevskaia 基金。Certicom 是一家加拿大公司,是 RSA 的竞争对手,美国国家安全局(NSA)是其最大的客户。2003 年,NSA 向 Certicom 支付了 2500 万美元的许可费,用于 26 项与 ECC 相关的专利。NSA 在其“Suite B”推荐列表中纳入了基于 ECC 的密钥协商和签名方案,鼓励更多人使用该系统。

以下是相关人物及其贡献的表格:
|人物|贡献|
| ---- | ---- |
|Neal Koblitz|独立发现椭圆曲线密码学,起初未重视商业潜力|
|Victor S. Miller|独立发现椭圆曲线密码学,认识到实际价值但未推动专利|
|Scott Vanstone|将椭圆曲线密码学商业化,成立 Certicom 公司|

7. ECC 的安全性与争议

ECC 经受住了时间的考验和大量的同行评审,赢得了 NSA 的认可。除了一小部分容易避免的椭圆曲线外,即使在 ECC 发明二十多年后的今天,也没有已知的算法能在少于 $10^{n/2}$ 次操作内找到离散对数,其中 $n$ 是椭圆曲线组大小的十进制位数。

然而,ECC 也面临着一些争议。1997 年 6 月,RSA 官方网站发布了一篇对 ECC 持怀疑态度的文章,其中包括 RSA 共同创造者 Ron Rivest 的评论。他认为基于椭圆曲线的密码系统的安全性不太容易理解,主要是因为椭圆曲线的深奥性质,很少有密码学家真正理解椭圆曲线,因此评估椭圆曲线密码系统的安全性就像评估最近发现的迦勒底诗歌一样困难。

8. 椭圆曲线密码学的未来展望

椭圆曲线密码学凭借其在密钥交换和消息加密方面的高效性和安全性,已经在现代密码学中占据了重要地位。随着信息技术的不断发展,对数据安全的需求也在不断增加,ECC 有望在更多领域得到应用,如物联网、区块链等。

在物联网中,设备资源有限,ECC 较小的密钥尺寸可以减少存储和计算开销,同时提供足够的安全性。在区块链中,ECC 可以用于数字签名,确保交易的真实性和不可篡改性。

以下是 ECC 可能应用领域的列表:
1. 物联网:减少设备资源消耗,保障数据安全。
2. 区块链:用于数字签名,维护交易安全。
3. 移动支付:确保支付信息的保密性和完整性。
4. 云计算:保护云存储和云计算中的数据安全。

虽然 ECC 目前面临着一些争议,但随着研究的深入和技术的发展,相信其安全性和应用范围将得到进一步的提升和拓展。未来,椭圆曲线密码学有望成为密码学领域的主流技术之一。

下面是 ECC 在不同领域应用的流程图:

graph LR
    A[椭圆曲线密码学] --> B[物联网]
    A --> C[区块链]
    A --> D[移动支付]
    A --> E[云计算]
    B --> F[减少资源消耗保障安全]
    C --> G[数字签名维护交易安全]
    D --> H[确保支付信息安全]
    E --> I[保护云数据安全]

总之,椭圆曲线密码学作为 Suite B 中的明星算法,以其独特的优势和广泛的应用前景,为现代信息安全提供了强有力的支持。尽管面临挑战,但它的未来充满了希望。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值