土法炼钢兴趣小组的算法知识备份

【密码学百科】密码学标准化:NIST、IETF 与 ISO 的标准制定流程

文章导航

分类入口
cryptography
标签入口
#standardization#NIST#IETF#ISO#FIPS#RFC#AES-competition#SHA-3-competition#PQC-standardization#TC260

目录

一套密码算法从学术论文中的数学构造走向全球数十亿设备上的实际部署,中间必须经历一段漫长却至关重要的旅程——标准化。在这段旅程里,算法不仅要接受密码分析者日以继夜的攻击检验,还要在性能、实现复杂度、专利自由度、侧信道抵抗力等多个维度上经受反复权衡。标准化的成功与否,往往决定了一套优秀算法能否真正惠及产业界与普通用户。本文将系统梳理当今世界最重要的几大密码学标准化体系——美国国家标准与技术研究院(NIST)、互联网工程任务组(IETF)、国际标准化组织(ISO/IEC)以及中国密码标准体系,回顾若干里程碑式标准的诞生历程,并展望后量子时代的标准化前景。

密码学标准化流程:从学术研究到 NIST/IETF 标准

一、为什么密码学需要标准化

先看一张图,把这一节的关键关系串起来。

graph TD
    A[学术候选] --> B[标准流程]
    B --> C[NIST ISO 国密]
    C --> D[合规认证]
    D --> E[产业部署]

初学者有时会产生一个疑问:既然密码算法的安全性来自数学证明与密码分析,为什么还需要一个看似繁琐的标准化过程?答案至少可以从三个层面来理解。

互操作性(interoperability)是第一要务。 现代通信网络本质上是全球性的:一封电子邮件从北京发出,经过多个中继节点到达纽约,发送方和接收方的软件可能来自不同厂商、运行在不同操作系统上。如果双方各自选用不同的加密算法或密钥协商协议,通信就无法建立。标准化为所有参与者提供了一份共同的”技术契约”:只要双方都遵循同一份标准文档实现,就一定能顺利互通。传输层安全协议(TLS)就是最好的例子——全球数以百万计的网站和浏览器之所以能在几毫秒内完成安全握手,正是因为它们共同遵守了同一套 RFC 文档中规定的密码套件与握手流程。

笔者认为,NIST 与 IETF 的标准化路径代表了关于「信任如何运作」的两种截然不同的哲学。NIST 模式本质上是权威认证型——由一个具有公信力的国家机构组织评审、作出选择、发布标准,信任的来源是机构的专业声誉和评审过程的严谨性。IETF 模式则是社区共识型——没有任何单一机构拥有最终决定权,标准的合法性来源于「在公开辩论中幸存下来」这一事实本身。这两种模式各有优劣:NIST 模式效率更高、权威性更强,但容易受到政治干预(Dual_EC_DRBG 事件是最刺痛的例证);IETF 模式更抗审查、更难被少数人操控,但决策过程冗长,且「粗略共识」有时会被强势参与者所左右。理解这一哲学差异,有助于我们在选择标准时做出更明智的判断——不存在一种万能的标准化模式,关键是在具体场景下选择信任模型最匹配的标准体系。

合规性(regulatory compliance)是第二驱动力。 许多行业和政府部门在法律或监管层面要求使用经过标准化认可的密码算法。例如,美国联邦政府要求其信息系统使用 NIST 发布的联邦信息处理标准(FIPS)中认可的算法;中国的《密码法》则要求商用密码产品使用经国家密码管理局批准的密码算法。未经标准化的算法,无论其学术评价多高,都可能因合规问题而无法在关键领域部署。标准化在某种意义上充当了”质量认证”的角色——通过长期的公开评审,为算法的安全性提供了一层额外的社会信任。

避免私有算法(proprietary algorithms)的陷阱是第三个重要原因。 密码学界有一条广为人知的原则——柯克霍夫原则(Kerckhoffs’ principle):系统的安全性不应依赖于算法的保密。历史上,不少厂商曾试图通过自行设计并保密的专有算法来实现”安全”,结果一旦算法被逆向工程,往往被发现漏洞百出。标准化流程天然地要求算法公开,接受全世界密码学家的审视,这正是柯克霍夫原则在制度层面的体现。公开的标准化竞赛更是把”千锤百炼”发挥到了极致:候选算法在数年的评审期内暴露在上百位研究者的放大镜下,只有经受住考验的方案才能最终胜出。

二、NIST 标准化流程

美国国家标准与技术研究院(National Institute of Standards and Technology, NIST)是全球密码学标准化领域影响力最大的机构之一。NIST 发布的密码学标准主要通过两类文件载体:联邦信息处理标准(Federal Information Processing Standards, FIPS)和特别出版物(Special Publications, SP)。FIPS 具有强制性——美国联邦政府机构在处理非机密但敏感的信息时,必须使用 FIPS 认证的算法和模块。SP 800 系列则提供推荐性指南,但在实践中同样被全球工业界广泛采纳。

NIST 的标准化流程通常包含以下几个阶段。首先是需求识别:当现有标准即将到期、出现新的安全威胁或技术发展催生新需求时,NIST 会启动新一轮标准化工作。随后是公开征集(Call for Proposals)阶段:NIST 向全球密码学界发出邀请,任何个人或团队均可提交候选算法。接下来进入评审(Evaluation)阶段:NIST 组织多轮评审会议,候选算法接受安全性分析、性能测试和实现评估。最后是标准发布:NIST 选出获胜方案,将其写入 FIPS 或 SP 文档,并经过公开评论期后正式发布。

这一”公开竞赛”模式自 1997 年 AES 征集以来已成为 NIST 的标志性做法,并被 SHA-3 竞赛和后量子密码(PQC)标准化所延续。竞赛模式的核心价值在于透明性和开放性:所有候选算法的设计文档、安全性证明、参考实现均向公众公开;评审过程通过研讨会和公开评论进行;最终选择的理由以详细报告的形式公布。这种做法有效地防止了暗箱操作,也最大限度地汇聚了全球密码学界的智慧。

NIST 还通过密码算法验证计划(Cryptographic Algorithm Validation Program, CAVP)和密码模块验证计划(Cryptographic Module Validation Program, CMVP)为标准的实施提供测试与认证。任何商用密码产品在声称符合 FIPS 140-2(现已更新为 FIPS 140-3)之前,必须通过第三方实验室的严格测试。

三、AES 竞赛回顾

高级加密标准(Advanced Encryption Standard, AES)的诞生是密码学标准化史上最具代表性的事件之一。1997 年 1 月,NIST 宣布启动征集 DES(Data Encryption Standard)的替代算法。彼时 DES 已服役二十余年,其 56 比特密钥在日益增长的计算能力面前已不堪一击——1998 年电子前沿基金会(EFF)制造的”DES Cracker”专用硬件仅用不到三天就完成了暴力破解。

NIST 对候选算法提出了明确要求:必须是分组密码(block cipher),支持 128 比特分组长度和 128、192、256 三种密钥长度;算法必须免费、无专利限制地向全世界公开使用。这些要求既保证了标准的实用性,也确保了其可及性。

截至 1998 年 6 月,NIST 共收到 15 个候选方案,来自全球多个国家的研究团队。候选算法的多样性令人瞩目:有基于 Feistel 结构的传统设计(如 MARS、Twofish),有基于替换-置换网络(Substitution-Permutation Network, SPN)的新颖方案(如 Rijndael、Serpent),也有独辟蹊径的设计(如 DEAL、HPC)。

第一轮评审历时一年。NIST 在 1999 年 8 月的第二次 AES 候选算法会议上宣布了进入决赛的 5 个方案:MARS(由 IBM 提交)、RC6(由 RSA 实验室提交)、Rijndael(由比利时密码学家 Joan Daemen 和 Vincent Rijmen 提交)、Serpent(由 Ross Anderson、Eli Biham 和 Lars Knudsen 提交)以及 Twofish(由 Bruce Schneier 等人提交)。这 5 个方案均未被发现严重的安全缺陷,评审的焦点因此转向了性能、实现灵活性和算法结构的优雅性。

2000 年 10 月 2 日,NIST 宣布 Rijndael 为 AES 的获胜算法。选择 Rijndael 的主要理由包括:在软件和硬件实现中均展现出优异的性能;结构清晰简洁,有利于安全性分析;在各种平台(从 8 比特智能卡到 64 比特服务器)上都能高效运行;密钥调度(key schedule)简单且可逆。2001 年 11 月,AES 以 FIPS 197 的编号正式发布。

AES 竞赛留下了宝贵的经验。第一,公开竞赛模式被证明行之有效——它不仅产出了一个优秀的标准,还极大地推动了分组密码的学术研究。第二,评审标准的多维性至关重要:安全性是必要条件,但性能、实现复杂度和知识产权状况同样影响最终决策。第三,透明的评审过程赢得了国际社会的广泛信任,使 AES 迅速成为全球通用的加密标准。时至今日,AES 仍然是应用最广泛的对称加密算法,每天保护着数以万亿计的网络通信。

四、SHA-3 竞赛回顾

如果说 AES 竞赛奠定了公开征集模式的基础,那么 SHA-3 竞赛则将其推向了更大的规模和更深的技术纵深。

2004 年至 2005 年间,中国密码学家王小云等人对 SHA-1 和 MD5 发表了具有里程碑意义的碰撞攻击成果,使整个 SHA 系列的长期安全性受到质疑。虽然 SHA-2 系列(SHA-256、SHA-512 等)在结构上与 SHA-1 有所不同且当时仍被认为安全,但 NIST 出于前瞻性考虑,决定启动新一轮哈希函数标准化竞赛,以备万一。

2007 年 11 月,NIST 正式发布 SHA-3 竞赛的征集公告。与 AES 竞赛相比,SHA-3 竞赛的规模显著扩大:截至 2008 年 10 月的截止日期,共收到 64 份有效提交。这些方案覆盖了几乎所有已知的哈希函数设计范式——从经典的 Merkle-Damgard 结构到创新的海绵结构(sponge construction)、树形哈希(tree hashing)乃至基于分组密码的构造。

竞赛历经三轮筛选。第一轮(2009 年)将 64 个候选缩减为 14 个;第二轮(2010 年)进一步缩减为 5 个决赛方案:BLAKE、Grostl、JH、Keccak 和 Skein。这 5 个方案在安全性上均经受住了密集的密码分析,决赛阶段的比较更多集中在性能特征、结构新颖性和安全裕度(security margin)等方面。

2012 年 10 月,NIST 宣布 Keccak 为 SHA-3 标准。Keccak 的核心是海绵结构——一种与 Merkle-Damgard 截然不同的设计范式。海绵结构通过”吸收”(absorbing)和”挤出”(squeezing)两个阶段处理输入和输出,其内部状态宽达 1600 比特,由一个简洁的置换函数 Keccak-f 反复迭代。选择 Keccak 的理由中,一个特别重要的考量是多样性:SHA-2 基于 Merkle-Damgard 结构且使用 Davies-Meyer 压缩函数,如果 SHA-3 也采用类似的内部结构,那么当某种攻击方法同时威胁两者时,系统将失去冗余保护。Keccak 的海绵结构在设计理念上与 SHA-2 完全正交,从而为标准体系提供了真正的算法多样性。

SHA-3 于 2015 年以 FIPS 202 的编号正式发布,定义了 SHA3-224、SHA3-256、SHA3-384、SHA3-512 四种固定输出长度的哈希函数以及 SHAKE128、SHAKE256 两种可扩展输出函数(extendable-output function, XOF)。海绵结构的影响远不止 SHA-3 本身:它催生了一系列基于海绵的认证加密方案和轻量级密码算法,深刻改变了密码学设计的思维方式。

五、IETF 与 RFC 流程

互联网工程任务组(Internet Engineering Task Force, IETF)是互联网协议标准化的核心机构。与 NIST 关注单个算法的标准化不同,IETF 更侧重于将密码算法整合进网络协议中,其产出的请求评论文档(Request for Comments, RFC)定义了互联网世界运行的基本规则。

IETF 的工作以工作组(Working Group, WG)为单位进行。在密码学领域,密码论坛研究组(Crypto Forum Research Group, CFRG)扮演着特殊角色:它隶属于互联网研究任务组(IRTF)而非 IETF 本身,但负责为 IETF 工作组提供密码学方面的技术建议。当 IETF 需要选择新的椭圆曲线或认证加密方案时,通常会先由 CFRG 进行技术评估,再将推荐结果传递给相应的工作组。Curve25519 和 Curve448 的选定就是 CFRG 工作的典型成果。

一份 RFC 的诞生通常遵循以下路径。首先,个人或小组撰写互联网草案(Internet-Draft, I-D)并提交给相关工作组。草案在工作组邮件列表和会议上经历反复讨论和修改。当工作组达成”粗略共识”(rough consensus)——IETF 标志性的决策方式——后,草案进入工作组最终征求意见(Working Group Last Call, WGLC)阶段。通过后,草案被提交给负责该领域的区域主管(Area Director)进行审查,再经过 IETF 全体最终征求意见(IETF Last Call)。最终由互联网工程指导组(IESG)投票决定是否批准发布为 RFC。整个流程强调开放参与和粗略共识,任何人都可以通过订阅邮件列表参与讨论。

TLS 1.3(RFC 8446)的开发历程是 IETF 密码学标准化的经典案例。从 2014 年 TLS 工作组开始讨论到 2018 年 8 月正式发布,历时四年,经历了 28 个草案版本。TLS 1.3 的设计目标明确:削减握手延迟(引入 1-RTT 和 0-RTT 模式)、移除不安全的遗留特性(如 RSA 密钥传输、CBC 模式密码套件、压缩)、简化协议状态机。在此过程中,CFRG 为 TLS 1.3 推荐了 X25519 密钥交换和 ChaCha20-Poly1305 认证加密等现代密码原语。值得一提的是,TLS 1.3 在标准化过程中曾遭遇来自企业网络安全厂商的阻力——这些厂商希望保留 RSA 密钥传输以便进行合法的网络监控,但 IETF 社区最终坚持了前向保密(forward secrecy)原则,拒绝在安全性上妥协。这一决定体现了 IETF 标准化过程中技术社区共识对商业诉求的平衡能力。

六、ISO/IEC JTC 1/SC 27

国际标准化组织(International Organization for Standardization, ISO)与国际电工委员会(International Electrotechnical Commission, IEC)联合成立的第一联合技术委员会(JTC 1)下设的第 27 分委员会(SC 27)是国际层面密码学标准化的重要力量。SC 27 的正式名称为”信息安全、网络安全和隐私保护”,其工作涵盖密码算法、安全机制、安全评估等多个领域。

与 NIST 和 IETF 不同,ISO/IEC 的标准制定遵循一套严格的投票驱动流程。标准提案首先经过新工作项目(New Work Item Proposal, NWIP)投票,需要获得足够多成员国的支持才能立项。此后,标准草案经历工作草案(Working Draft, WD)、委员会草案(Committee Draft, CD)、国际标准草案(Draft International Standard, DIS)和最终国际标准草案(Final Draft International Standard, FDIS)等多个阶段,每个阶段都需要成员国的投票和评论。整个流程通常需要三到五年,有时更长。

在密码算法标准化方面,ISO/IEC 的做法与 NIST 的竞赛模式有显著不同。ISO/IEC 通常不自行征集新算法,而是对已在其他标准体系(如 NIST FIPS、各国国家标准)中得到认可的算法进行国际标准化整合。例如,ISO/IEC 18033 系列标准涵盖了多种加密算法,包括 AES(同时也是 FIPS 197)、Camellia(日本标准算法)和 SM4(中国标准算法)。ISO/IEC 19772 标准则定义了认证加密(Authenticated Encryption with Associated Data, AEAD)的通用框架和六种具体方案。这种做法使 ISO/IEC 标准在国际贸易和跨国合规场景中发挥着独特的桥梁作用——各国可以将本国标准算法纳入 ISO 框架,从而在国际上获得更广泛的认可。

ISO/IEC 与各国标准之间存在复杂的相互关系。一方面,各国标准化机构(如中国的 SAC、美国的 ANSI、德国的 DIN)作为 ISO 的成员体(member body)参与投票和提案;另一方面,国际标准发布后,各国往往将其等同采用(identical adoption)为本国标准。这种双向互动既促进了标准的全球协调,也为各国在标准制定中争取话语权提供了舞台。

七、中国密码标准体系

中国拥有独立且日益完善的密码标准体系。2019 年颁布的《中华人民共和国密码法》将密码分为核心密码、普通密码和商用密码三类,其中商用密码的标准化由国家密码管理局(现为国家密码管理总局)和全国信息安全标准化技术委员会(TC260)及其下设的密码技术工作组共同推动。

中国密码标准的编号体系分为两个主要层级。GM/T 标准是密码行业标准,由国家密码管理局发布,“GM”代表”国密”;GB/T 标准则是推荐性国家标准,由国家标准化管理委员会(SAC)发布,具有更高的法律效力和更广泛的适用范围。近年来,越来越多的 GM/T 标准被提升为 GB/T 标准,反映了密码标准在国家标准体系中地位的上升。

中国自主设计的密码算法构成了标准体系的核心。SM2 是基于椭圆曲线的公钥密码算法,涵盖数字签名、密钥交换和公钥加密三项功能,于 2010 年发布为行业标准(GM/T 0003),后提升为国家标准(GB/T 32918)。SM3 是密码杂凑算法,输出 256 比特摘要,其设计吸收了 SHA-2 的若干构造思想但在压缩函数细节上有独创之处,于 2010 年发布后同样提升为国家标准(GB/T 32905)。SM4 是分组密码算法,128 比特密钥和分组长度,最初作为无线局域网(WLAN)安全标准的加密组件而设计,后扩展为通用分组密码标准(GB/T 32907)。SM9 是基于标识的密码算法(Identity-Based Cryptography, IBC),利用双线性配对(bilinear pairing)实现了无需证书管理的加密和签名方案。

中国密码标准与国际标准的对接工作持续推进。SM2、SM3、SM4、SM9 等算法已被纳入多项 ISO/IEC 标准——例如 SM4 被纳入 ISO/IEC 18033-3:2010/Amd 1:2021,SM2 和 SM9 的相关技术被纳入 ISO/IEC 14888 系列和 ISO/IEC 11770 系列。在 IETF 层面,SM2、SM3、SM4 在 TLS 1.3 中的使用也已通过 RFC 8998 等文档进行了标准化。这些国际化努力使得中国密码算法能够在全球互操作环境中得到支持。

笔者认为,中国的国密标准体系是「主权密码学」(sovereign cryptography)最重要的当代案例研究。所谓主权密码学,是指一个国家出于安全自主可控的考量,自主设计、标准化并强制部署一套独立于国际主流标准的密码算法体系。这种做法的合理性显而易见——对于关系国家安全的信息系统,依赖他国设计和控制的密码算法存在不可接受的供应链风险。Dual_EC_DRBG 事件已经证明,即使是最受尊重的国际标准化机构也可能被情报机构渗透。但主权密码学也面临独特的挑战:算法设计过程的公开性和国际审查的深度往往不如 NIST 竞赛模式,这使得国际密码学界对其安全性的信心建立较慢。从长远来看,中国密码标准通过 ISO 国际化和 IETF RFC 化的双轨策略,正在逐步弥合这一信任差距。这一过程本身就是密码学标准化领域最有价值的社会学实验之一。

以下示例展示了如何通过 openssl 命令行查看 FIPS 模式状态及可用的标准算法,以及使用 GmSSL 工具进行国密算法操作:

# 检查 OpenSSL 是否启用了 FIPS 模式
openssl version -a | grep FIPS

# 列出 OpenSSL 支持的所有对称加密算法(含 AES、ChaCha20 等标准算法)
openssl list -cipher-algorithms

# 列出所有摘要算法(含 SHA-2、SHA-3 系列)
openssl list -digest-algorithms

# 使用 GmSSL 进行 SM3 哈希计算
echo -n "hello" | gmssl sm3

# 使用 GmSSL 进行 SM4-CBC 加密
gmssl sm4_encrypt -key 0123456789abcdef0123456789abcdef -iv 00000000000000000000000000000000 -in plain.txt -out cipher.bin

八、后量子密码标准化

后量子密码(Post-Quantum Cryptography, PQC)标准化是当前密码学标准化领域最为紧迫和备受瞩目的议题。量子计算机一旦达到足够的规模,将能利用肖尔算法(Shor’s algorithm)在多项式时间内破解 RSA、椭圆曲线密码(ECC)等当前广泛使用的公钥算法。虽然大规模容错量子计算机尚未出现,但考虑到标准化和迁移所需的漫长时间(通常需要十年以上),以及”现在收集、将来解密”(harvest now, decrypt later)攻击的现实威胁,提前启动标准化工作势在必行。

NIST 于 2016 年正式启动后量子密码标准化进程,向全球征集抗量子攻击的公钥加密和数字签名方案。截至 2017 年 11 月的截止日期,共收到 82 份有效提交(其中 69 份通过完整性审查进入第一轮)。这些方案基于多种数学难题:格(lattice)问题、编码(code-based)问题、多变量多项式(multivariate)问题、哈希函数(hash-based)签名以及同源(isogeny)问题等。

经过三轮严格筛选,NIST 于 2022 年 7 月宣布了首批标准化算法。在密钥封装机制(Key Encapsulation Mechanism, KEM)方面,CRYSTALS-Kyber(现更名为 ML-KEM,基于模块格上的学习含误差问题)被选为主要标准。在数字签名方面,CRYSTALS-Dilithium(现更名为 ML-DSA,同样基于模块格)和 FALCON(基于 NTRU 格上的快速傅里叶采样)被选为基于格的签名标准,而 SPHINCS+(现更名为 SLH-DSA,基于无状态哈希签名)则作为基于保守数学假设的备选签名标准入选。

2024 年 8 月,NIST 正式发布了三项后量子密码标准:FIPS 203(ML-KEM)、FIPS 204(ML-DSA)和 FIPS 205(SLH-DSA)。FALCON 的标准化(预计编号为 FIPS 206)也在推进中。与此同时,NIST 还在进行第四轮评审和额外的签名方案征集,以确保标准体系具有足够的算法多样性。

在深入分析 NIST PQC 的具体技术取舍之前,有必要将本文所涉及的四大标准化体系作一个横向对比,以便读者在后续章节中理解各体系差异时有一个整体参照:

标准化机构 代表性文件 决策机制 开放程度 典型周期 密码学代表成果 适用范围
NIST FIPS、SP 800 公开竞赛 + 专家评审 高:任何人可提交候选方案 3-7 年 AES (FIPS 197)、SHA-3 (FIPS 202)、ML-KEM (FIPS 203) 美国联邦(事实全球标准)
IETF RFC 粗略共识 + 工作组讨论 极高:任何人可参与邮件列表 2-5 年 TLS 1.3 (RFC 8446)、X25519 (RFC 7748) 互联网协议,全球适用
ISO/IEC SC 27 ISO/IEC 标准 成员国投票,多阶段审查 中等:需通过国家标准机构 3-5 年 ISO/IEC 18033(加密)、ISO/IEC 14888(签名) 国际贸易与跨国合规
中国密标委/TC260 GM/T、GB/T 主管部门主导 + 专家评审 较低:算法由指定机构设计 2-4 年 SM2 (GB/T 32918)、SM3 (GB/T 32905)、SM4 (GB/T 32907) 中国境内商用密码

九、NIST PQC 方案选择的技术取舍

NIST 的最终选择远非”选最安全的方案”那么简单——它是在安全性、性能、实现复杂度和假设多样性之间进行的系统性权衡。理解这些权衡,有助于工程师在实际部署中做出更有据可依的决策,而非盲目跟随标准编号。

KEM 赛道:ML-KEM(原 Kyber)为何胜出

第三轮 KEM 候选包括 Kyber(格基)、NTRU(格基)、SABER(格基)和 Classic McEliece(编码基)。四者各有优势,但最终 Kyber 以综合表现胜出:

维度 ML-KEM(Kyber) NTRU SABER Classic McEliece
公钥大小(安全级别 1) 800 字节 699 字节 672 字节 261,120 字节
密文大小 768 字节 699 字节 736 字节 128 字节
密钥生成速度 中等 极慢
底层困难问题 Module-LWE NTRU Module-LWR Goppa 码译码
解密失败概率 2^{-139} 0(精确解密) 2^{-120} 0
实现恒定时间难度 中等 高(多项式逆运算) 中等 中等

Kyber 对 NTRU 的核心优势在于实现层面。 NTRU 的密钥生成需要对多项式环中的元素求逆,这一操作本身难以在恒定时间内完成——任何基于扩展欧几里得算法的多项式求逆都存在数据依赖的分支和循环次数,构成侧信道泄漏的风险。虽然存在恒定时间的变体实现,但其复杂度显著高于 Kyber 中直接使用的数论变换(NTT)乘法。Kyber 基于 Module-LWE 问题,其核心运算是多项式矩阵-向量乘法,可以通过 NTT 高效实现,且 NTT 操作天然适合恒定时间编程——每一步蝶形运算的访问模式与输入数据无关。

Kyber 对 SABER 的优势在于安全性假设的成熟度。 SABER 基于 Module-LWR(Learning with Rounding)问题,可以看作 LWE 的”去噪声”变体——将显式添加的高斯噪声替换为确定性的舍入操作。虽然存在从 LWE 到 LWR 的归约,但该归约并非紧致(tight),密码分析社区对 LWR 的独立研究也远少于对 LWE 的研究。NIST 在评审报告中明确指出,LWE 拥有更深厚的安全性分析基础,这一判断在标准化语境中至关重要——标准算法的安全性信心需要经受住未来数十年的考验。此外,SABER 的解密失败概率(约 2^{-120})高于 Kyber(约 2^{-139}),在多用户多目标攻击场景下这一差异可能被放大。

Classic McEliece 的处境最为特殊。 它基于 Goppa 码的译码问题,拥有超过四十年的安全审查历史,是所有候选方案中假设最保守的。但其公钥大小(安全级别 1 下超过 260 KB)使其在 TLS 握手、证书链等带宽敏感场景中几乎不可部署。NIST 将其保留在第四轮继续评审,视其为”安全避风港”——如果格密码的安全假设遭到重大突破,Classic McEliece 可以作为紧急替代方案。

签名赛道:三重选择的逻辑

签名方案的应用场景比 KEM 更加多样——从 TLS 握手中的服务器认证到代码签名、证书链、固件验证,不同场景对签名大小、验证速度、密钥大小的权重截然不同。这是 NIST 选择三个方案而非一个的根本原因。

ML-DSA(原 Dilithium)之所以成为通用首选,核心原因是其恒定时间实现的工程友好性。 Dilithium 使用 Fiat-Shamir with Aborts 范式:签名者先采样一个掩蔽向量,计算承诺,然后根据挑战和密钥生成响应——如果响应的范数超过阈值,则丢弃并重新开始。这种”拒绝采样”策略在实现上非常直接:每次迭代的计算路径完全相同,仅在最后做一次范数比较决定接受或拒绝,天然适合恒定时间编程。

# ML-DSA 签名的简化流程(伪代码)
def sign(sk, message):
    A, t, s1, s2 = expand(sk)
    while True:
        y = sample_uniform_bounded(gamma1)   # 采样掩蔽向量
        w = A @ y
        w1 = high_bits(w)
        c_tilde = H(message || w1)
        c = sample_in_ball(c_tilde)
        z = y + c * s1                       # 计算响应
        if norm_inf(z) >= gamma1 - beta:      # 拒绝采样检查
            continue
        r0 = low_bits(w - c * s2)
        if norm_inf(r0) >= gamma2 - beta:
            continue
        return (c_tilde, z, hints)            # 签名成功

FN-DSA(原 FALCON)的签名最为紧凑(安全级别 1 下约 666 字节,Dilithium 约 2420 字节),但实现难度也最高。 FALCON 基于 NTRU 格上的 GPV 框架,其签名过程需要对格上的目标向量进行离散高斯采样。这一采样步骤依赖树形快速傅里叶采样(ffSampling),需要在对数精度(53 位或更高)的浮点运算下完成。浮点运算在不同硬件平台上的行为差异、非规格化数(denormalized numbers)的处理、以及浮点比较中的数据依赖分支,使得 FALCON 的恒定时间实现成为一项严峻的工程挑战。NIST 在评审报告中坦言,“正确实现 FALCON 的门槛显著高于 Dilithium”,并因此推迟了 FALCON 的标准化进度(FIPS 206 预计晚于 FIPS 204 发布)。对于大多数不具备高级密码工程能力的开发团队,NIST 建议优先采用 ML-DSA。

SLH-DSA(原 SPHINCS+)是所有入选方案中假设最少的。 它是一种基于哈希的无状态签名方案,安全性仅依赖于底层哈希函数(SHA-256 或 SHAKE256)的抗碰撞性和抗第二原像性——这些是密码学中研究最充分、信心最高的假设。SLH-DSA 使用 FORS(Forest of Random Subsets)进行一次性签名,再通过超树(hypertree)结构将多个 WOTS+(Winternitz One-Time Signature)实例组织起来以实现多次签名能力,且无需维护状态(与 XMSS/LMS 等有状态哈希签名不同)。代价是签名较大:快速参数集(SLH-DSA-SHA2-128f)签名约 17 KB,紧凑参数集(SLH-DSA-SHA2-128s)约 7.9 KB。NIST 选择 SLH-DSA 的核心理由是假设多样性——如果未来格上的 LWE/SIS 假设被量子算法或经典算法攻破,仅依赖哈希安全性的 SLH-DSA 仍然可以作为最后的信任锚。

第四轮与后续征集:编码密码路线的崛起

NIST 在宣布首批标准的同时,启动了两条并行的后续路线。

第一,KEM 的第四轮评审保留了四个候选方案:BIKE、Classic McEliece、HQC 和 SIKE。然而 2022 年 7 月,比利时鲁汶大学的 Wouter Castryck 和 Thomas Decru 发表了对 SIKE 的毁灭性攻击——利用超奇异椭圆曲线的额外代数结构信息,仅需单核 CPU 约一小时即可完全恢复密钥。这一攻击不仅终结了 SIKE 的标准化之路,也使整个同源密码学(isogeny-based cryptography)领域的安全假设遭到根本性质疑。剩余的 BIKE 和 HQC 均基于编码密码学(纠错码上的困难问题),Classic McEliece 同样如此。2024 年 NIST 宣布 HQC 进入标准化阶段,编码密码路线由此获得官方认可,为格密码体系提供了重要的算法多样性补充。SIKE 的失败和 HQC 的入选构成了一组具有教育意义的对照:前者表明即使通过了多轮标准化评审,一个方案的安全性仍可能被全新的数学方法一举击溃;后者则证实了经典编码密码学(尽管密钥较大)的持久生命力。

第二,NIST 于 2022 年启动了额外的数字签名方案征集,目标是寻找签名尺寸更小或基于不同假设的方案。这一征集吸引了包括基于多变量多项式、格上短签名、对称密码构造(如基于 AES/SHA 的 MPC-in-the-Head 方案)在内的多种提交。这条路线的推进表明 NIST 清楚地认识到:后量子签名的性能瓶颈(特别是签名大小对证书链和嵌入式场景的影响)尚未被首批标准完全解决。

十、标准体系之间的实质性分歧

密码学标准化从来不仅仅是技术问题——它同时是地缘政治、产业利益和安全哲学的角力场。NIST、ISO/IEC 和中国密标委在算法选择上的分歧不是学术争论,而是直接影响跨境系统架构和工程成本的现实约束。

分组密码:SM4 与 AES 的角力

AES 是事实上的全球标准,拥有无可比拟的生态优势:Intel/AMD 的 AES-NI 指令集使其在 x86 平台上的吞吐量可达数 GB/s;ARM 的 CE(Cryptography Extensions)提供了等效的硬件加速。SM4 在安全强度上与 AES-128 相当(均为 128 位密钥、128 位分组),但存在三个结构性劣势:

在跨境金融系统等场景中,这一分歧直接导致实现必须维护双算法栈。例如,一个连接中国和欧洲银行的支付网关需要同时支持 SM4-GCM 和 AES-256-GCM,密钥管理系统需要维护两套密钥层级,密码模块需要通过 FIPS 140-3 和中国商用密码产品检测双重认证,工程复杂度和审计成本因此翻倍。

椭圆曲线:三种信任模型的碰撞

椭圆曲线的选择是三大标准体系分歧最尖锐的领域,因为它直接反映了不同的信任哲学:

NIST P-256 的种子参数据称来自 SHA-1 对某个未公开输入的哈希输出。这一”未公开输入”的存在长期困扰密码学界——虽然没有证据表明参数被故意弱化,但 Dual_EC_DRBG 事件后,任何参数生成过程中的不透明环节都会引发合理怀疑。P-256 采用短 Weierstrass 形式,完整的加法公式需要区分点加(point addition)和倍点(point doubling)两种情况,增加了恒定时间实现的工程负担。

Curve25519 由 Daniel Bernstein 设计,其参数选择过程完全透明且可验证(rigid 参数生成):基域素数 p = 2^255 - 19 是最接近 2^255 的素数,系数 a = 486662 是满足安全性要求的最小正整数。Montgomery 形式使得 x 坐标标量乘法(Montgomery ladder)天然以恒定时间运行,无需区分加法和倍点操作。这些设计决策使 Curve25519 在学术界和工程界获得了极高的信任度,IETF 通过 RFC 7748 将其标准化后迅速被 TLS 1.3、Signal 协议、WireGuard 等主流系统采用。

SM2 曲线 的参数由国家密码管理局指定,采用与 NIST P-256 类似的短 Weierstrass 形式。参数的具体生成过程未公开发表。从纯技术角度看,SM2 曲线在安全性上并无已知缺陷,但其封闭的参数生成过程与 Curve25519 的完全透明形成了鲜明对比。

参数透明性光谱:

Curve25519  ──────────────────  P-256  ──────  SM2 曲线
  │                               │              │
完全可验证                    种子来源不透明      生成过程未公开
(rigid 参数)                 (部分可验证)      (政府授信)

这一差异并非单纯的技术优劣问题,而是反映了”数学可验证信任”模型与”机构授信”模型之间的根本哲学分歧。三者在侧信道防护上的差异同样值得注意:Curve25519 的 Montgomery 形式天然恒定时间;P-256 和 SM2 的 Weierstrass 形式需要依赖完全加法公式(如 Renes-Costello-Batina 公式)或特殊的窗口化标量乘法技术来实现恒定时间,工程成本更高。

哈希函数:设计范式的分歧

SM3 与 SHA-2 在设计范式上高度相似——两者均采用 Merkle-Damgard 结构,使用 Davies-Meyer 压缩函数,输出 256 位摘要。SM3 的压缩函数在消息扩展和布尔函数选择上与 SHA-256 有所不同,但整体设计哲学一脉相承。这意味着 SM3 继承了 Merkle-Damgard 结构的固有局限,包括长度扩展攻击(length extension attack)的脆弱性。

SHA-3(Keccak)则采用了完全不同的海绵结构,天然免疫长度扩展攻击,且其内部状态宽度(1600 位)为安全裕度提供了充足的空间。从设计多样性角度看,SHA-3 与 SHA-2 构成了真正的正交备份,而 SM3 与 SHA-2 在结构上的相似性意味着——如果 Merkle-Damgard 范式遭遇系统性攻击(例如对 Davies-Meyer 压缩函数的通用攻击),SM3 和 SHA-2 可能同时受到威胁。

这一差异在实际系统中的影响不容忽视。当一个跨国系统需要同时满足中国密评和 NIST 合规要求时,工程师面临一个非显然的选择:是使用 SM3 + SHA-256(两者结构相似,多样性有限但实现成本低)还是使用 SM3 + SHA-3(真正的结构多样性但实现复杂度更高)?在大多数实际工程中,成本压力使得前者成为事实上的选择,但这在安全架构层面放弃了算法多样性的冗余保护。

互操作性代价的总结

下表从工程视角总结了三大标准体系的核心差异及其互操作性影响:

维度 NIST/IETF 体系 ISO/IEC 体系 中国密码体系 互操作性代价
对称加密 AES-128/256 AES + Camellia + SM4 SM4 双算法栈 + 双密钥管理
公钥/密钥交换 P-256, X25519 多曲线并列 SM2 双证书链 + 双握手逻辑
哈希函数 SHA-2, SHA-3 SHA-2, SHA-3, SM3 等 SM3 签名验证需支持多种摘要
签名方案 ECDSA, EdDSA 多方案并列 SM2 签名 证书解析和验证路径分叉
TLS 实现 RFC 8446 RFC 8998 (SM 套件) 密码套件协商复杂化

十一、FIPS 验证与 Common Criteria 的落地角色

标准文档定义了”应该用什么算法”,而 FIPS 140-3 验证和 Common Criteria 评估则回答了一个更现实的问题——“你的实现是否正确且可信”。对于向政府和受监管行业销售密码产品的企业而言,这两项认证是不可绕过的市场准入门槛。

FIPS 140-3:密码模块的四级安全体系

FIPS 140-3(2019 年发布,取代 FIPS 140-2)定义了密码模块的安全要求,适用于硬件模块、软件模块和固件模块。四个安全级别构成了递进的防护体系:

级别 1 是基线要求:密码模块必须使用经 CAVP(密码算法验证计划)测试通过的算法实现;模块边界必须明确定义;至少一个经批准的安全功能必须被使用。纯软件模块即可满足级别 1——OpenSSL FIPS Provider、AWS-LC 等开源库均在此级别获得验证。

级别 2 增加了物理安全要求:模块必须具有篡改证据(tamper-evidence)机制,如防拆封条或防拆涂层;操作员必须通过基于角色的身份认证。级别 2 是美国联邦政府采购中最常见的合规要求。

级别 3 要求物理篡改响应(tamper-response):当检测到物理入侵时,模块必须主动归零关键安全参数(CSP)。此外,级别 3 要求基于身份(而非角色)的认证,并要求关键安全参数的输入/输出通过物理或逻辑隔离的端口进行。硬件安全模块(HSM)通常以级别 3 为设计目标。

级别 4 是最高级别,增加了完整的物理安全包覆(envelope of protection)和环境故障防护(EFP/EFT)——模块必须能检测并响应电压、温度等超出正常范围的环境条件。级别 4 验证在实践中极为罕见,主要面向军事和情报机构的高安全需求场景。

CMVP 验证流程与时间成本

验证流程由 CMVP(密码模块验证计划,由 NIST 和加拿大 CCCS 联合运营)管理,具体步骤如下:

  1. 选择 CST 实验室:厂商选择一个经 NVLAP 认可的第三方测试实验室(目前全球约 20 家)。
  2. 提交 IUT(待测实现):厂商向实验室提交密码模块及其文档——包括安全策略、有限状态模型、源代码(级别 3 及以上)。
  3. 测试与评估:实验室依据 ISO/IEC 19790(FIPS 140-3 的基础国际标准)和 ISO/IEC 24759(测试要求)执行测试。
  4. 报告提交:实验室将测试报告提交给 CMVP。
  5. CMVP 审查与颁证:CMVP 审查报告并决定是否颁发验证证书、将模块列入验证清单。
厂商 --> CST 实验室 --> 测试 (3-6 个月) --> 报告提交 --> CMVP 审查队列
                                                            |
                                                     (6-12 个月等待)
                                                            |
                                                       颁发验证证书
                                                       列入验证清单

整个流程的平均耗时为 12-18 个月,其中 CMVP 的审查队列等待时间往往占据大半。费用通常在 15 万至 50 万美元之间,取决于模块复杂度和目标安全级别。更为关键的是,任何对已验证模块的修改——包括算法更新、操作系统补丁、甚至编译器版本升级——都可能触发重新验证。这一规则在后量子迁移背景下尤为棘手:当组织需要向已验证的密码模块中添加 ML-KEM 或 ML-DSA 支持时,整个验证流程可能需要重新走一遍。NIST 近年来推进的 ACVP(自动化密码验证协议)旨在加速算法层面的测试自动化,但模块级别的验证周期仍然是企业产品上市的重大瓶颈。

Common Criteria:IT 产品的安全评估框架

Common Criteria(CC,ISO/IEC 15408)是一个比 FIPS 更广泛的安全评估框架,覆盖密码模块之外的整个 IT 产品——从防火墙、操作系统到智能卡。CC 的核心概念包括:

保护剖面(Protection Profile, PP) 定义了某一类产品的安全功能要求和保障要求。例如,美国 NIAP 发布的网络设备协作保护剖面(NDcPP)规定了网络设备必须支持的密码算法、密钥管理功能和审计机制。PP 是买方(通常是政府机构)定义安全需求的标准化工具——厂商按照 PP 进行评估,买方按照 PP 验收产品。

评估保障级别(EAL 1-7) 描述了评估的深度和严格程度:

级别 名称 关键要求 典型应用
EAL 1 功能测试 确认产品按文档运行 低风险商业产品
EAL 2 结构测试 增加开发者文档与架构审查 一般商业产品
EAL 3 系统测试与检查 增加开发环境安全控制 企业级产品
EAL 4 系统设计、测试与审查 增加源代码/详细设计审查 政府采购常见要求
EAL 5 半形式化设计与测试 要求半形式化安全模型 高安全军事/金融系统
EAL 6 半形式化验证的设计 结构化表示与独立分析 极高安全需求
EAL 7 形式化验证的设计 完整数学形式化验证 极罕见,仅实验性产品

在密码学维度上,CC 评估通常引用 FIPS 标准来指定算法要求——即 CC 不独立定义密码算法标准,而是”委托”给 NIST FIPS 或对应的国家标准。这意味着 FIPS 验证和 CC 评估在实践中构成互补关系:FIPS 确保”密码算法和模块实现正确”,CC 确保”整个产品的安全架构合理”。

CC 评估通过 CCRA(Common Criteria 互认协定)在签署国之间实现互认——一个产品在法国通过 CC 评估后,其他签署国原则上承认其评估结果。但互认存在实际限制:CCRA 自 2014 年改革后,互认范围被限定在 cPP(协作保护剖面)和 EAL 2 以内;更高级别的评估往往需要目标国家的机构重新评审。

认证对采购决策和上市时间的影响

维度 FIPS 140-3 Common Criteria 中国密评(GM/T 0028)
聚焦范围 密码模块 整个 IT 产品 商用密码产品
算法要求 NIST 批准的算法清单 引用 FIPS 或国家标准 SM 系列算法
评估周期 12-18 个月 6-24 个月 3-12 个月
典型成本 15-50 万美元 5-100 万美元 视产品规模而定
国际互认 有限——主要美加 CCRA 成员国(cPP/EAL 2) 仅中国境内有效
后量子就绪 2024 年已纳入 ML-KEM/ML-DSA 尚无 PQC 保护剖面 尚在研究中

在实际商业环境中,这些认证对产品策略的影响不亚于技术本身。美国联邦市场要求处理 CUI 的系统使用 FIPS 140-3 验证的密码模块;FedRAMP 要求云服务提供商满足同样的标准;NSA 的 CNSA 2.0 要求在 2030 年前完成向后量子算法的迁移。在中国市场,商用密码产品必须通过国家密码管理局的检测认证,核心要求是使用 SM 系列算法。金融行业的 PCI DSS 要求使用”强密码学”,审计实践中通常被解释为 NIST 批准的算法。

对于需要在多个司法管辖区部署密码产品的企业,一个经过实践验证的策略是将密码模块抽象为独立组件,同时维护一个 FIPS 验证版本和一个国密验证版本,通过编译时或运行时的配置切换来满足不同区域的合规要求。选择已获 FIPS 验证的开源密码库(如 OpenSSL FIPS Provider、AWS-LC FIPS 模块)作为底层组件,可以将验证时间从 18 个月压缩到 6-8 个月;自主开发密码模块再申请验证,则需要为 12-24 个月的周期做预算。

后量子标准化的迁移时间线已成为各国政府和企业关注的焦点。美国白宫于 2022 年发布备忘录,要求联邦机构制定向后量子密码迁移的计划。NIST 建议到 2035 年前逐步淘汰传统公钥算法。这一迁移涉及的范围之广、复杂度之高前所未有——从 TLS、SSH、IPsec 等网络协议到代码签名、数字证书、安全芯片,几乎所有使用公钥密码的系统都需要更新。实际迁移中,混合模式(hybrid mode)被普遍推荐作为过渡方案:在同一个协议握手中同时运行传统算法和后量子算法,只有两者同时被攻破时安全性才会丧失。

十二、标准化的挑战与争议

密码学标准化并非总是一帆风顺的。历史上最严重的标准化丑闻当属 Dual_EC_DRBG 事件。Dual_EC_DRBG 是 NIST 于 2006 年在 SP 800-90A 中发布的一种基于椭圆曲线的伪随机数生成器。早在标准发布后不久,微软研究员 Dan Shumow 和 Niels Ferguson 就在 2007 年的 CRYPTO 学术会议上指出,Dual_EC_DRBG 中的某些预设参数可能隐藏了后门:如果参数的生成者知道两个椭圆曲线基点之间的离散对数关系,就能从输出中恢复内部状态,从而预测所有后续的随机数。

2013 年,斯诺登泄露的文件表明美国国家安全局(NSA)确实参与了 Dual_EC_DRBG 的设计,且该后门可能是有意为之。这一事件对 NIST 的公信力造成了严重打击。NIST 随后启动了对其密码标准流程的全面审查,并于 2014 年从 SP 800-90A 中移除了 Dual_EC_DRBG。RSA Security 公司此前曾将 Dual_EC_DRBG 设为其 BSAFE 密码库的默认随机数生成器(据报道与 NSA 的一项价值 1000 万美元的合同有关),此事曝光后也引发了广泛的信任危机。

笔者认为,Dual_EC_DRBG 丑闻是密码学标准化历史上最重要的一课,其影响远超事件本身。它揭示了一个深层悖论:密码学标准化的全部价值建立在信任之上——用户信任标准制定机构的中立性和专业性,因此愿意将自己的安全性「外包」给标准。而 Dual_EC_DRBG 事件证明,这种信任一旦被滥用,其破坏力远大于任何技术层面的攻击。从密码工程的角度看,这一事件催生了三条持久的教训:第一,任何密码学标准中的「看似随意的常数」都必须附有可验证的生成过程(nothing-up-my-sleeve numbers);第二,标准化流程必须建立对情报机构影响的制度性防火墙;第三,也是最根本的——密码学社区的健康依赖于一种「有建设性的偏执」文化,既不盲信权威,也不陷入阴谋论,而是通过持续的公开审查来维持信任的动态平衡。

Dual_EC_DRBG 事件的教训是深刻的:标准化流程的开放性和透明性不仅是一种价值理念,更是防止恶意行为者渗透的制度保障。具体而言,算法中任何看似”随意”的常数(nothing-up-my-sleeve numbers)都应附有可验证的生成过程;公开评审的深度和广度应足以发现可疑的设计选择;标准化机构应建立对政府情报机构影响的制度性防火墙。

算法敏捷性(algorithm agility)与简洁性之间的张力是标准化面临的另一个持续挑战。所谓算法敏捷性,是指协议能够灵活切换底层密码算法的能力——当某个算法被发现存在缺陷时,系统可以迅速迁移到替代算法。TLS 协议的密码套件协商机制就是算法敏捷性的典型体现。然而,过度的算法敏捷性也有代价:它增加了协议的复杂性,扩大了攻击面(降级攻击就利用了协议支持多种算法这一特性),也使得安全性分析和形式化验证变得更加困难。TLS 1.3 在设计中大刀阔斧地削减了支持的密码套件数量(从 TLS 1.2 时代的数百种减少到仅五种),正是对这一张力的回应。

标准化过程中的知识产权问题同样棘手。理想情况下,标准化的密码算法应当不受专利限制,以便全球自由实现。AES 竞赛明确要求候选算法免费许可,这一做法被后续竞赛所继承。然而在实践中,某些算法的底层技术可能涉及第三方专利,这使得专利审查成为标准化评审的重要环节。ISO/IEC 标准对专利的处理更为复杂——其政策允许包含受专利保护的技术,但要求专利持有者承诺以”合理且非歧视性”(Reasonable and Non-Discriminatory, RAND)的条款进行许可。这一政策虽然灵活,但也可能在实际部署中造成成本和法律上的不确定性。

标准化流程的时间跨度也常常引发讨论。从 AES 竞赛的四年到后量子标准化的八年以上,严谨的评审需要时间,但技术演进和安全威胁不等人。在量子计算威胁日益逼近的当下,如何在充分评审与及时部署之间找到平衡,是标准化社区面临的现实考验。

展望未来,密码学标准化将面对更多新挑战:后量子迁移的全球协调、轻量级密码(lightweight cryptography)在物联网场景中的标准化、同态加密(homomorphic encryption)和安全多方计算(secure multi-party computation)等高级密码原语的实用化标准、以及人工智能辅助密码分析对标准安全裕度评估的影响。无论技术如何演变,标准化的核心原则不会改变——公开、透明、充分评审,让密码学的力量以可信赖的方式守护数字世界的安全。


密码学百科系列 · 第 54 篇

← 上一篇:协议安全性分析 | 系列目录 | 下一篇:量子计算基础

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。


By .