上一期我们提到,由西方主导的 SHA-1 和 MD5 等 Hash 算法,已被中国科学家发现了严重漏洞,被证明不再安全。在常见的漏洞扫描系统中,使用这两种算法已被列为高危漏洞,处置建议是替换为更安全的算法。
这印证了一个道理:仅仅发现和破坏旧体系是不够的。中国的科学家与工程师们并未止步于此,他们致力于构建一套更优秀、更安全的密码算法体系,以期在密码学领域取得领先地位。这套体系就是我们常说的“国密”算法。
在深入之前,我们先回顾一下密码算法的三大类别:
- 对称加密算法:加密与解密使用同一把密钥。
- 非对称加密算法:使用公钥加密,私钥解密;也可用于数字签名(私钥签名,公钥验签)。
- 散列(Hash)算法:也称摘要算法,为一段信息生成唯一的“指纹”,用于验证数据完整性,防止篡改。
在国密算法体系中,对称加密算法的代表包括 SM1、SM4 和 SM7,其中 SM4 的算法细节是公开的。

SM4 算法的加密流程如上图所示。它使用 128 位(16 字节)的密钥,将 128 位的明文输入,经过 32 轮复杂的迭代运算和交叉混淆,最终输出 128 位的密文。
此外,SM4 支持密码分组链接(CBC)模式。这种模式由 IBM 在 1976 年提出,其核心思想是将当前待加密的明文块与前一个密文块进行异或运算后,再进行加密。这样做的好处是,即使攻击者截获了部分密文段并知晓密钥,也无法独立解密出对应的明文,极大地增强了安全性。
然而,对称加密一直存在一个“阿喀琉斯之踵”:密钥如何安全地分发?这正是非对称加密算法大显身手的地方。
国密算法中的 SM2 就是一种典型的非对称加密算法。它与我们熟知的 RSA 算法最大不同在于其数学基础:SM2 基于椭圆曲线(Elliptic Curve)。RSA 的安全性建立在“对大整数进行质因数分解极其困难”这一数学难题上,而椭圆曲线加密(ECC)的困难性则来源于另一类更有趣的数学问题。
那么,什么是椭圆曲线呢?
千万别被它的名字误导,它可不是画一个椭圆形。在密码学中,我们讨论的椭圆曲线是由韦尔斯特拉斯方程 $y^2 = x^3 + ax + b$ 在平面直角坐标系上所描绘的图形。

如上图所示,椭圆曲线通常呈现出这样独特而优美的形态。椭圆曲线密码算法的安全性,正是基于这些曲线的一些美妙数学特性。首先,从数学上可以证明:任意一条直线与一条椭圆曲线的交点,不可能超过三个。

如上图,我们将直线与曲线的三个交点分别记为 P,Q 和 R。椭圆曲线密码学的核心难题之一是:已知曲线上一个点 P 和一个常数 k,想要在曲线上找到另一个点 Q,使得 $Q = kP$(即 P 点连续“加”自己 k 次),当 k 足够大时,其计算复杂度会高到令人望而却步。
我们在之前的讨论中提到过,由于对大数进行质因数分解异常困难,RSA 算法曾被认为是安全的基石。但量子计算机的出现,带来了快速分解大整数的理论可能(如秀尔算法),这直接动摇了 RSA 的安全根本。此外,计算复杂性理论中“NP=P”的证明探索,也像一柄达摩克利斯之剑悬在空中——如果该猜想被证明成立,理论上就可能找到在多项式时间内从 RSA 公钥推导出私钥的方法!
正是在这些潜在的威胁下,椭圆曲线加密算法的优越性才愈发凸显。与基于大数分解的 RSA 相比,在同等安全强度下,ECC 所需的密钥长度要短得多(例如,256 位的 ECC 密钥安全性堪比 3072 位的 RSA 密钥)。这意味着更小的存储空间、更快的计算速度和更低的带宽消耗。更重要的是,目前已知的量子算法对基于椭圆曲线离散对数问题的攻击,远没有对质因数分解问题那样有效。
因此,从长远的安全性和效率角度看,基于椭圆曲线的国密 SM2 算法展现出了更强的生命力和适应性。想要深入了解密码学的基础原理与更多算法细节,可以到 云栈社区 的计算机基础板块进行系统性学习。对于关注前沿安全技术,特别是椭圆曲线加密等现代密码学的朋友,安全与密码学专题 提供了丰富的讨论和资源。
|