# CNSA 2.0
## 介紹概述
CNSA(Commercial National Security Algorithm Suite)是美國 NSA 為「國家安全系統(NSS)」指定的密碼演算法套件與安全等級基線。它的作用是:
* 指定「可用的演算法/安全等級/金鑰長度」與「適用情境」,當作政府採購與承包商的統一標準。
* 規劃從傳統公鑰(RSA/ECC)向「後量子密碼(PQC)」的漸進式遷移,確保長期保密性與相容性。
* 與 NIST/FIPS 140-3 生態配合,要求模組與實作走合規路線(FIPS 驗證)。
## 時程演化總覽:
| Year | version | Description |
| -------- | -------- | -------- |
| 2005 | Suite B | 加入包含 AES、ECDH/ECDSA(P‑256 / P‑384)、SHA‑256/SHA‑384 |
| 2016 | CNSA 1.0 | 移除 AES‑256、ECDH‑P‑384、ECDSA‑P‑384、SHA‑384 ,並恢復支援 RSA‑3072 和 DH‑3072 作為「暫時」選項 |
| 2022 | CNSA 2.0 | NSA 已表示 ECC 面臨量子攻擊風險,加入 PQC 演算法建議,ML-KEM-1024、ML-DSA-87,另支援 SHA-384/512、XMSS、LMS 等,同時明言 RSA/ECC/ECDH/ECDSA 將逐步淘汰 |
## 軟體與韌體簽章演算法
| Algorithm | Function | Specification | Parameters |
| -------- | -------- | -------- | -------- |
| LMS(Leighton-Micali Signature) | 用於韌體與軟體的非對稱數位簽章 | NIST SP 800-208| 全部核准參數皆可用於所有機密等級,建議用 SHA-256/192 |
| XMSS(Xtended Merkle Signature Scheme) | 用於韌體與軟體的非對稱數位簽章 | NIST SP 800-208| 全部核准參數皆可用於所有機密等級 |
## 對稱式加密演算法
| Algorithm | Function | Specification | Parameters |
| -------- | -------- | -------- | -------- |
| Advanced Encryption Standard (AES) | 對稱式分組加密,用於資訊保護 | FIPS PUB 197 | 256-bit 金鑰(適用於所有機密等級) |
| Secure Hash Algorithm (SHA) | 計算資料的雜湊(摘要) | FIPS PUB 180-4 | SHA-384 或 SHA-512(適用於所有機密等級) |
## 一般用途的耐量子公鑰演算法
當這些演算法正式成為標準並被要求使用時,RSA、Diffie-Hellman(DH)、橢圓曲線加密(ECDH、ECDSA)將會被淘汰,在正式過渡前,仍需遵守 CNSA 1.0 的現行規範。
| Algorithm | Function | Specification | Parameters |
| -------- | -------- | -------- | -------- |
| CRYSTALS-Kyber | 非對稱金鑰交換(key establishment) | TBD | Level V 參數(適用於所有機密等級) |
| CRYSTALS-Dilithium | 非對稱數位簽章 | TBD | Level V 參數(適用於所有機密等級) |