一、前言

2022年9月7日,美国国家安全局(National Security Agency简称NSA)发布了CNSA2.0(Commercial National Security Algorithm Suite 2.0),内容涵盖对称加密、公钥加密和相关软件与固件的调整,目的是全面应对当前飞速发展的量子计算对保护国家安全的密码算法带来的威胁,透过发布的CNSA2.0,我们可以一定程度地看到美国商密的发展走向,为我国该领域的相关工作带来启迪。

二、报告发布背景

近年来,随着世界各国相继发布了国家层面的量子发展战略,多家科技巨头也公布了各自的量子计算发展路线图,大家都想占领这个科技制高点,对量子计算的投入已经形成军备竞赛的局面,无论顶级期刊上发表的论文还是相关进展报道,均轻松登顶各国科技头条热点,同时也推动和表明量子计算正在飞速取得多项重大突破。

在量子计算机飞速发展的冲击下,现有最可靠用于保护数据安全的密码算法面临巨大威胁,特别是广泛用于互联网的公钥密码体制(如RSA、ECC及DH密钥交换技术)都被证明不安全,对称密码算法(如AES、SHA1、SHA2等)的安全性也有一定程度降低,进而对国家安全造成严重威胁。

为此,美国国家标准与技术研究院(NIST)早在2016年12月就正式面向全球征集具备抗击量子计算机攻击能力的新一代密码算法,并经过三轮评比和筛选, 于 2022 年 7 月 5 宣布了第三轮密码算法竞赛决赛结果, 选定了 4 种算法作为应对未来量子计算的标准加密算法。

标准算法确定下来后, NSA 认为为了有效地从现有密码算法过渡到抗量子(QR)密码算法,以确保使用的算法能继续有效保护国家安全系统(NSS)和相关资产,必须从现在就开始计划、预算并准备。NSA 根据 NSS 所有者、运营商和供应商未来对 NSS 的 QR 算法的需求,推荐这一系列经分析为对经典计算机和量子计算机都是安全的算法,它们是对国家商用安全算法套件 (称为 CNSA  1.0) 的更新,NSA 将此更新命名为 CNSA 2.0,以后的任何更新都将修改版本号。

NSA 依据 NSD-42、NSM- 8、NSM- 10、CNSSP 11 和 CNSSP 15 向有关部门提供 CNSA2.0,它适用于所有非机密和机密 NSS 使用的公用密码算法(相对于 NSA 开发的专用算法而言),严禁使用任何未经 NSA 批准的密码算法(包括算法、实现和应用)。根据 CNSSP 11 的规定, 所有提供密码服务的软件和硬件需要通过 NIAP(National Information Assurance Partnership)或 NSA 认证其满足 CNSA 的适当版本的要求。

三、报告主要内容

CNSA2.0大致包括以下方面,关于软件和固件签名的算法,NIST前一段时间对这些算法进行了标准化,但是在CNSA2.0中使用新的算法来处理特殊的用例;关于对称密钥算法,与CNSA1.0相比仅作了适度的修改,给了更多的灵活性;关于通用抗量子公钥算法,它们是大多数应用所需的主要公钥算法,由于他们还没有完成标准化,因此属于前瞻性的;关于时间安排,探讨了向CNSA2.0过渡的时间;关于强制执行,汇总了与强制执行NSS算法要求相关的需求;此外,提供了额外指导,为IETF RFCs(InternetEngineering Task Force Requests for Comment)提供用于实现CNSA1.0的有用链接。最后,给出了对比参考表,分别列出了CNSA2.0和CNSA1.0的算法特性。

1、软件和固件签名算法

分开来选择软件和固件签名算法的原因有三个:

(1)NIST已经标准化了这些算法,而其他抗量子签名算法还没有

(2)签名应用更紧迫

(3)选择将分析得最透彻的算法(指新的签名算法)放在对性能可能影响最小的应用中(签名),特别吻合对状态保持跟踪的需求,因为能够十分精确地得知指定的公钥算法在软件或固件签名中具体使用了多少次等等。

软件和固件签名所选择的算法已在NIST特别出版物800-208中指定,NSA推荐用采用SHA-256/192的Leighton-Micali(尽管所有NIST SP800-208算法都被批准可以用于此)。为了避免削弱这些签名的安全性,必须满足SP 800-208的所有要求,包括状态管理和在硬件中实现签名等。

美国国家安全局鼓励供应商立即开始采用NIST SP 800-208签名(有关时间进度的更多信息,请参见时间安排部分)。

CNSA2.0 用于软件和固件更新的算法

2、对称密钥算法

对称密钥算法方面不像数字签名算法那样彻底改变,依然采用传统的AES和SHA算法来分别进行数据信息保护和信息压缩,仅仅添加了SHA-512。

CNSA2.0 对称密钥算法

3、通用抗量子公钥算法

NIST最近才宣布了后量子密码的标准化选择,因此,目前既没有最终标准也没有现实有效的联邦信息处理标准(FIPS)。NSA此时发布这种公钥算法,是为满足未来的NSS需求,使供应商可以立刻开始着手,而官员、NSS所有者和运营商也了解和知道后续有哪些要求。

特别值得关注的是,一旦下达命令,就可立即有效地禁用RSA、Diffie-Hellman(DH)和椭圆曲线密码(ECDH和ECDSA)。NSA敦促NSS所有者和经营者特别需要注意这要求,在此期间仍需遵守CNSA1.0。

CNSA2.0 的公钥密码算法

4、时间安排过渡

时间的长短取决于实现标准的工作量,由于不同的技术采用QR算法的节奏不同,因此NSA提供了一个总过渡结束日期和过渡进程安排。

NSA预计,符合NSM-10的NSS过渡到QR算法将在2035年完成,NSA敦促供应商、NSS业主和运营商尽一切努力,在这一最后期限前完工。在可行的情况下,在过渡期间配置系统时NSS所有者和运营商将被要求尽可能采用CNSA2.0算法。在适当的情况下,CNSA2.0算法将在NSS的商业产品类中强制使用,同时保留允许在特殊情况下使用其他算法的选项。

向CNSA2.0算法过渡的一般方法:

对于软件签名和固件签名的时间安排,NSA建议:

1.软件和固件签名立即开始转换

2.到2025年,新的软件和固件均使用CNSA2.0签名算法

3.到2025年,将全部部署的不符合CNSA1.0的软件和固件算法转换到符合CNSA2.0

4.到2030年,将所有部署的软件和固件签名转换为符合CNSA2.0标准的

对NSS,NSA的时间进度要求是:

软件和固件签名:立即开始过渡,到2025年支持和倾向于CNSA2.0,并在2030年前完全使用CNSA2.0

Web浏览器/服务器和云服务:在2025年前支持和倾向于CNSA2.0,到2033年完全使用CNSA2.0

传统网络设备(如虚拟专用网、路由器):在2026年之前支持和倾向CNSA2.0,并在2030年前完全使用CNSA2.0

操作系统:到2027年支持并倾向CNSA2.0,并在2033年前完全使用CNSA2.0

专用设备(例如受限制的装置、大型公钥基础设施系统):到2030年支持和倾向CNSA2.0,到2033年完全使用CNSA2.0

定制应用程序和遗留设备:到2033年更新或替换。

5、强制执行

NSS所有者和运营商必须向NSA报告其根据NSM-8和NSM-10的要求向CNSA1.0和CNSA2.0更新进展情况,审批官员(AOs)在评估安全控制12(SC-12)时,应把遵守情况作为风险管理框架(RMF)进程的一部分来衡量。此外,审批官员还需要验证其系统上软件和固件是否符合CNSA2.0的要求。

NSS在RMF评估过程中不能违反“FIPS-validated”;相反,解决方案必须得到NSA的批准。在受理的申请审批的商业产品中,NSA通常批准符合CNSSP 11的产品(即NIAP-根据是否根据已批准的保护配置文件进行了认证验证),和它们要按照CNSSP 15和其他特定的要求被正确地配置好一样。

四、给我们带来的启示

透过NSA发布的CNSA2.0,我们可以清晰地看到美国在面对量子计算机带来的对传统密码算法的威胁方面的应对方式方法,在商用密码领域的布局与走向,有以下几个方面给人印象深刻,值得我们学习和借鉴。

1、顶层规划设计详细周到

细读CNSA2.0全文,首先给我们的感受是作为统管全美军民密码安全的领导机构--NSA,位高权重却十分谦卑讲理,并不以老大的地位发号施令,而是充分尊重各机构(如商务部的NIST)、行业协会(如FIPS),信任它们的专业能力,比如在算法方面完全采用NIST面向全球征集评估的算法、评估中要求不能违背FIPS的标准、时间进度安排上充分考虑业主、供应商、运营商等实现的技术难度与开销...,从而使CNSA2.0全面切实可行。

最能体现NSA顶层设计详细周到的几点有:

(1)CNSA2.0部署与实现先后有序

CNSA2.0部署与实现中并不是一下子全面同时铺开,而是优先把软件和固件的数字签名排在前面,之所以把它们放在首位,是综合考虑了NIST标准化、需求急迫、研究深入、影响小、好跟踪...。这种安排非常实事求是,真正体现了一切从实际出发。

此外,率先从商业应用开始部署实施,而不是全社会全面升级更换到新算法,这也是综合考虑了需求、影响、实施难度的结果。从目前最新报道看到,2022年7月27日IBM的Z16大型机已经可以采用NIST的新标准算法来创建数字签名,这也间接验证了NSA的CNSA2.0中把数字签名放在首位的可行性和合理性。

(2)CNSA2.0实现灵活有度

CNSA2.0尽管是一个强制性很强的文件,但它丝毫没有一刀切,给与了业主、供应商、运营商灵活实施的空间,比如在实现时间的进度安排上给与了3-5年的过渡期、特殊情形可以采用特批的算法、无法按期升级更新到新标准算法的给与特殊豁免的机会等。

(3)体系完整

CNSA2.0不仅从算法角度包含了对称算法、签名算法、公钥算法,展现了算法的全面完整性,更提供了全面完整的支撑系列文件来推动实施,这些文档全面完整地指定如何配置解决方案以符合CNSA的要求,比如有:RFC-8603 CNSA成套证书和证书吊销列表(CRL)配置文件、RFC-8755在安全/多用途因特网邮件扩展中使用CNSA算法、RFC 8756 CNSA证书管理套件简介(CMS)、RFC 9151 CNSA传输层安全协议(TLS)和数据包传输层安全性协议(DTLS)1.2和1.3的成套配置文件、RFC 9206 CNSA互联网安全协议(IPSEC)、RFC 9212 CNSA安全外壳协议(SSH)等等。

2、商密算法走向思路清晰

在从CNSA1.0过渡到CNSA2.0的过程中,展现了NSA的商用密码算法发展技术思路,具体而言是:

(1)签名算法全面更换

根据CNSA1.0可见,数字签名分别采用的是椭圆曲线数字签名算法和RSA数学签名算法,其中椭圆曲线数字签名算法采用符合FIPS PUB 186-4标准的ECDSA,用P元域曲线,密钥长度为384比特;RSA数字签名算法采用符合FIPS PUB 186-4标准的RSA,用大于3072比特长度的密钥。而CNSA2.0中,数字签名分别采用Leighton-Micali签名(LMS)、XCMM签名方案(XMSS)、CRYSTALS-Dilithium三种数字签名算法,这三种算法均为NIST批准的标准算法。

从这个变化可见,符合美国家安全局网络安全局(NSA CSD)关于基于格的加密方案是当前最高效的抗量子计算算法的前期研究结论,并将基于NIST筛选的格密码算法批准用于NSS。

(2)对称算法变化不大

根据CNSA1.0和CNSA2.0可见,用于信息保护的对称分组密码算法并未改变,依然采用的是目前广泛使用的AES,密钥长度依然是256比特;用于计算信息压缩表示的安全哈希算法(SHA),则只是增加了SHA-512。这完全符合NSA CSD前期针对量子计算对分组密码算法带来的威胁不大的研究结论,之所以增加SHA-512,估计是因为在HASH算法方面近年来发现了一些小瑕疵之故。

(3)更换密钥交换算法

根据CNSA1.0可见,非对称密钥建立算法分别采用的是椭圆曲线Diffie-Hellman(ECDH)密钥交换、Diffie-Hellman(DH)密钥交换、RSA,其中椭圆曲线Diffie-Hellman(ECDH)密钥交换满足NIST SP 800-56A的要求,用P元域曲线,密钥长度为384比特;Diffie-Hellman(DH)密钥交换满足IETF RFC 3526的要求,用大于3072比特长度的密钥;RSA采用符合FIPS SP 800-56B标准的RSA,用大于3072比特长度的密钥。而CNSA2.0中,非对称密钥建立算法采用CRYSTALS-Kyber,它是NIST批准的标准算法,符合NSA CSD前期关于格的研究结论,并正式推广应用于NSS。

五、结语

商用密码领域具备涉及面广、系统和产品链条长、实现技术类别多、产品形态复杂、保护的产品和系统累计价值高、社会影响面大等等等特点,美国商密整体发展并不是完全由纯商业的应用需求推动,而是由密码统领单位NSA来规划布局后有序发展,通过从现在起大约十三年的时间(少于业界对量子计算机成熟商业应用的乐观估计的20-30年时间),逐步完成全部设备及系统的抗量子计算更新换代。

在NSA的统领下,这种更新并不是全面铺开进行,而是紧密围绕NSS进行,目标聚焦、重点突出,通过规定采用NIST标准化的公开透明的算法,让相关机构迅速上手并明确需求,具体实施路径是从算法标准化开始,实现难度、成本最低的软件、固件更新先行,涉及面更广、成本、复杂度更高的设备、系统更新殿后的有序安排,技术上最终全面淘汰与离散对数变换密切相关的RSA、ECC、DH算法,改为基于格的签名、验证非对称算法,为全面进入量子计算时代做好安全准备。