Nộp phòng thử nghiệm được công nhận
Số chứng nhận CAVP và thẩm định mô-đun CMVP/FIPS 140-3 cần phòng thử nghiệm CST được NIST công nhận. Các thuật toán tiên quyết (SHA-3, SHAKE, SHA-2, HMAC, AES-ECB) chưa đăng ký trong wrapper ACVP của chúng tôi.
Engine p-pqc 0.2.0 (commit d41bbe1, 23/10/2026). Lần chạy kiểm thử ngày 14/11/2026: rustc 1.95.0, Apple M3 Pro, profile release.
| Thuật toán | Bộ kiểm | Phạm vi | Kết quả |
|---|---|---|---|
| ML-KEM-768 FIPS 203 | NIST ACVP | keyGen (d,z → ek,dk) · đóng gói · giải đóng gói gồm bản mã bị sửa · kiểm khoá đóng gói · kiểm khoá giải đóng gói | PASS |
| ML-KEM-768 | C2SP/CCTV | 780 khoá đóng gói sai chuẩn bị từ chối · lỗi so sánh kiểu strcmp · SampleNTT kém may (> 575 byte XOF) · luồng RNG tích luỹ (10.000) | PASS |
| ML-KEM-768 | Go stdlib crypto/mlkem | vector tích luỹ, 100 và 10.000 ca mỗi lần dựng; 1.000.000 ca theo yêu cầu | PASS |
| ML-DSA-65 FIPS 204 | NIST ACVP | keyGen · sigGen tất định + hedged × external (có ngữ cảnh) / internal / external-μ · sigVer gồm sửa thông điệp, c̃, z và gợi ý | PASS |
| ML-DSA-65 | RustCrypto ml-dsa 0.1.1 | so từng byte: khoá, chữ ký, kết quả, phản ứng khi lật một bit — 300 ca mỗi lần chạy | PASS |
| AES-256-GCM SP 800-38D | NIST CAVP | 375 ca mã hoá + 375 ca giải mã (khoá 256, IV 96, tag 128); 191 ca FAIL đều bị từ chối | PASS |
| HMAC_DRBG SP 800-90A | NIST CAVP | 480 ca SHA-512: 240 không reseed, 240 có reseed | PASS |
| Thời gian | tests/ct/no-div.sh | không có lệnh chia/lấy dư trong hàm p_pqc nào xử lý dữ liệu bí mật (WASM release + native debug) | PASS |
Thư viện được bọc cho acvptool của BoringSSL và từng ca được so với đáp án của NIST. Kết quả ghi ngày 23/10/2026: khớp 212/212, trong đó 115 ca ML-DSA-65. Các bản cố ý làm hỏng (kiểm khoá luôn đạt, đảo đầu vào reseed của DRBG, GCM open luôn đạt, bỏ bước Update cuối của DRBG) đều làm kết quả đỏ.
| Bộ kiểm | Số ca | Kết quả |
|---|---|---|
| ML-KEM-768 keyGen | 25 | MATCH |
| ML-KEM-768 encapDecap | 55 | MATCH |
| ML-DSA-65 keyGen | 25 | MATCH |
| ML-DSA-65 sigGen (internal + external μ) | 60 | MATCH |
| ML-DSA-65 sigVer | 30 | MATCH |
| hmacDRBG SHA2-512 | 15 | MATCH |
| ACVP-AES-256-GCM | 2 | MATCH |
| Tổng | 212 | 212 / 212 |
Phát nguyên trạng từ trang này. Vector NIST là tài liệu công của Chính phủ Hoa Kỳ; vector C2SP/CCTV theo CC0 1.0. Số ca và checksum được tính từ chính các byte trong tệp nhị phân của máy chủ này, không gõ tay. Tải ngày 8/10/2026 (ML-KEM), 15/10 (CAVP), 23/10 (ML-DSA) từ usnistgov/ACVP-Server @ ad33b3d9 và C2SP/CCTV @ f086168f.
| Tệp | Thuật toán | Nguồn | Số ca | Dung lượng | SHA-256 |
|---|---|---|---|---|---|
| acvp_mlkem768_keygen.json | ML-KEM-768 FIPS 203 | NIST ACVP-Server · ML-KEM-keyGen-FIPS203 | 25 | 181 KB | e6287329c59d9c15…07912129 |
| acvp_mlkem768_encapdecap.json | ML-KEM-768 FIPS 203 | NIST ACVP-Server · ML-KEM-encapDecap-FIPS203 | 55 | 471 KB | d618f903c2f4a78e…c3d80917 |
| cctv_mlkem768_modulus.txt.gz | ML-KEM-768 FIPS 203 §7.2 | C2SP/CCTV · modulus (malformed encapsulation keys) | 780 | 17 KB | 22308df988866e27…1a526af7 |
| cctv_mlkem768_strcmp.txt | ML-KEM-768 FIPS 203 | C2SP/CCTV · strcmp (implicit-rejection compare) | 1 | 7 KB | 2b09aa46d8b1c7b9…0079e4fa |
| cctv_mlkem768_unluckysample.txt | ML-KEM-768 FIPS 203 | C2SP/CCTV · unlucky SampleNTT (>575 XOF bytes) | 1 | 9 KB | fede6f787581dc70…5ad0ba90 |
| acvp_mldsa65_keygen.json | ML-DSA-65 FIPS 204 | NIST ACVP-Server · ML-DSA-keyGen-FIPS204 | 25 | 296 KB | 1ada1753be37ad1c…679d910d |
| acvp_mldsa65_siggen.json | ML-DSA-65 FIPS 204 | NIST ACVP-Server · ML-DSA-sigGen-FIPS204 | 90 | 2.1 MB | 2de2974ac48aac12…0493726f |
| acvp_mldsa65_sigver.json | ML-DSA-65 FIPS 204 | NIST ACVP-Server · ML-DSA-sigVer-FIPS204 | 45 | 1.0 MB | 9d739151c8a95cc8…3c4caf85 |
| cavp_gcmEncryptExtIV256.rsp | AES-256-GCM SP 800-38D | NIST CAVP · gcmEncryptExtIV256 (IV 96 · tag 128) | 375 | 122 KB | cd8a650547395705…b79ec932 |
| cavp_gcmDecrypt256.rsp | AES-256-GCM SP 800-38D | NIST CAVP · gcmDecrypt256 (191 FAIL cases must be rejected) | 375 | 114 KB | c8a930fc764549ac…02e71e3f |
| cavp_hmac_drbg_sha512_no_reseed.rsp | HMAC_DRBG SHA-512 SP 800-90A | NIST CAVP · drbgvectors_no_reseed | 240 | 195 KB | 5acecc271a74f753…a8e330f8 |
| cavp_hmac_drbg_sha512_pr_false.rsp | HMAC_DRBG SHA-512 SP 800-90A | NIST CAVP · drbgvectors_pr_false (with reseed) | 240 | 228 KB | deb68ec5f17362f4…40595bfc |
Kiểm tra tệp bạn đã tải:
curl -O https://ppqc.psystem.cloud/vectors/SHA256SUMS curl -O https://ppqc.psystem.cloud/vectors/acvp_mldsa65_keygen.json shasum -a 256 -c SHA256SUMS --ignore-missing
Ca đầu của mỗi tệp, dạng hex, cắt bớt để hiển thị — lấy thẳng từ vector nhúng sẵn.
d (32 B) E582B7D75E6C80B05AE392A1FC9F7153B12390FD99930368CC67A768BAEBC8A0 z (32 B) 1CDACB8740C0B87C4A379575F187B367CBFA3B300BF591B109F79816E9CBE8F0 ek (1184 B) 28C793778741B80B02B4339F2AA4347255B099F17264E1B8CC0A2C7C2A1A79F7997B907FD0496C6E6C8AD7714F5F339D 75F11F625591A869BE1175AE47F05FD4313468232BA6957D7807B824F445AC99A0D568AB1AD54DCA8249D1482E61275F 52248C77F61A4248753188CD1794CD0A465EC0DC4B025985C461B74E76286E4C37E77405695CC9FD0654374B427A2034 …
ξ seed (32 B) A991FD42B071D49C48AE3E75C647459E0DAAD1E1BA356A04801912D3294BCFF8 pk (1952 B) 36DB0B5DCE98BD190CB139E80B71B49C7D7040B71C5A1F3412C46BDE939192B1B57CCB88AC2714C1240CB0EB62C689E0 31AEA3D9F3EB3ED7BFA45931D288DCAE3413199B31A7032560DCE8A61E195D13A1440615C2F3AA7DD28C5B1B742BFA40 0052186721F13D3DF9DCFAEE348B10D66913C7148913E085E1A4A03C659398DADC6A8E0E0C1A7F9F44D30436DB90FD65 …
testPassed false reason modified message message 6885 B context 1EA2A2DDC0C2352D5F50835314720BD773D744B2E3321A signature 3309 B
Kết quả cargo test --release, chỉ sắp xếp theo thứ tự chữ cái, không sửa gì khác.
# p-pqc 0.2.0 — cargo test --release # run: 2026-11-14 · rustc 1.95.0 (59807616e 2026-04-14) · Darwin arm64 · Apple M3 Pro test fips203_tests::fips203_acvp_decapsulation ... ok test fips203_tests::fips203_acvp_decapsulation_key_check ... ok test fips203_tests::fips203_acvp_encapsulation ... ok test fips203_tests::fips203_acvp_encapsulation_key_check ... ok test fips203_tests::fips203_acvp_keygen ... ok test fips203_tests::fips203_cctv_accumulated_10k ... ok test fips203_tests::fips203_cctv_accumulated_1m ... ignored (on demand) test fips203_tests::fips203_cctv_accumulated_rng_stream_start ... ok test fips203_tests::fips203_cctv_modulus_bad_encapsulation_keys ... ok test fips203_tests::fips203_cctv_strcmp ... ok test fips203_tests::fips203_cctv_unlucky_sample_ntt ... ok test fips203_tests::fips203_go_accumulated_100 ... ok test fips203_tests::fips203_go_accumulated_10k ... ok test fips203_tests::fips203_go_accumulated_1m ... ignored (on demand) test fips204_tests::fips204_acvp_keygen ... ok test fips204_tests::fips204_acvp_siggen ... ok test fips204_tests::fips204_acvp_sigver ... ok test fips204_tests::fips204_rustcrypto_cross_check ... ok test fips204_tests::fips204_rustcrypto_cross_check_10k ... ignored (on demand) test kyber768::tests::compress_nhan_dich_bang_cong_thuc_chia ... ok test kyber768::tests::poly_compress10_dong_goi_dung ... ok test kyber768::tests::qmod_bang_rem_euclid ... ok test mldsa65::bench::mldsa65_bench ... ignored (on demand) test mldsa65::mldsa65_export_for_cross_check ... ignored (on demand) test mldsa65::tests::decompose_matches_definition ... ok test mldsa65::tests::make_hint_matches_fips_definition ... ok test mldsa65::tests::ntt_roundtrip ... ok test mldsa65::tests::power2round_matches_definition ... ok test mldsa65::tests::rejects_non_canonical_hints ... ok test mldsa65::tests::sign_verify_roundtrip_and_tamper ... ok test nist_cavp_tests::cavp_aes256gcm_decrypt ... ok test nist_cavp_tests::cavp_aes256gcm_encrypt ... ok test nist_cavp_tests::cavp_hmac_drbg_sha512_no_reseed ... ok test nist_cavp_tests::cavp_hmac_drbg_sha512_reseed ... ok test nist_cavp_tests::drbg_fill_large_request ... ok test nist_cavp_tests::drbg_refuses_past_reseed_interval ... ok test nist_cavp_tests::drbg_reseeds_after_fork ... ok test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 52 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 1.79s test tests::test_aesgcm_blob_layout ... ok test tests::test_aesgcm_blob_matches_spec ... ok test tests::test_aesgcm_header_is_authenticated ... ok test tests::test_chacha_blob_still_decrypts ... ok test tests::test_crafted_kem_len_large ... ok test tests::test_crafted_kem_len_small ... ok test tests::test_crafted_kem_len_zero ... ok test tests::test_encrypt_decrypt_roundtrip ... ok test tests::test_encrypt_is_randomized ... ok test tests::test_fips203_kat_vs_reference ... ok test tests::test_kem_roundtrip ... ok test tests::test_keygen_sizes ... ok test tests::test_legacy_r3_blob_still_decrypts ... ok test tests::test_legacy_r3_kem_differs_from_mlkem ... ok test tests::test_mldsa_c_abi ... ok test tests::test_reject_dk_hash_mismatch ... ok test tests::test_reject_ek_coeff_out_of_range ... ok test tests::test_tamper_detection ... ok test tests::test_unknown_blob_version_rejected ... ok test tests::test_wrong_key ... ok test result: ok. 52 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 1.79s
# unit + NIST vectors + cross-checks cargo test --release # 1,000,000-case accumulated runs (minutes) cargo test --release -- --ignored fips203 # 10,000-case independent ML-DSA comparison cargo test --release -- --ignored fips204 # no-division check on secret-handling code tests/ct/no-div.sh # NIST ACVP via BoringSSL acvptool ACVPTOOL=/path/to/acvptool tests/acvp/run-offline.sh
Số chứng nhận CAVP và thẩm định mô-đun CMVP/FIPS 140-3 cần phòng thử nghiệm CST được NIST công nhận. Các thuật toán tiên quyết (SHA-3, SHAKE, SHA-2, HMAC, AES-ECB) chưa đăng ký trong wrapper ACVP của chúng tôi.
Rà soát nội bộ đã dẫn tới sửa lỗi (phép chia trên dữ liệu bí mật, reseed DRBG sau fork). Kiểm toán độc lập bởi bên thứ ba đã lên kế hoạch, chưa hoàn tất.