從NSA發布CNSA2.0看美國商密變化
一、前言
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算法,改為基于格的簽名、驗證非對稱算法,為全面進入量子計算時代做好安全準備。