Symmetric cryptography survey

The NGCC public-key submissions were asked to use the ICCS placeholder functions pseudohash (SM3/HMAC-SM3), pseudoXOF (KDF-SM3) and sm3hash for hashing, and the ICCS SM3 DRNG for randomness, so that the selected NGCC hash can later be substituted. This survey records which reference implementations do so, which bypass the helpers with their own primitives, and how much of each operation the helpers take.

Totals: 67 ICCS-only, 7 bypass, 6 mixed, 4 instance-dependent.

Evidence: call-graph reachability from the exported API in the harness-built libraries, object-level constant scans (Keccak, SHA-2, SM3, AES, SM4, ChaCha), and source reading for candidates without a harness build. A primitive that is compiled but unreachable is not counted.

The last column is measured on system x86_1 (Intel Core i7-12700 (Alder Lake), one performance core, turbo off, fixed 2.1 GHz, SMT off); see its summary.

id algorithm verdict notes largest hash share on x86_1 (op)
kem-01 Aigis-Enc+ ICCS-only own fips202.c compiled but unreachable from the API 39% (Aigis-enc3 enc)
kem-02 Amoeba ICCS-only 74% (Amoeba128 keygen)
kem-03 BAG-Loong ICCS-only loong_hash_tagged_sm3_256 wraps sm3hash 79% (BAG-Loong-128 enc)
kem-04 BAG-Piglet ICCS-only *_using_shake names parse pseudoXOF output; AES-256-CTR dead; DRNG only with -DBAG_PIGLET_KAT 56% (bag_piglet_512 keygen)
kem-05 BIKE-MLThre mixed hash/XOF via ICCS; seeds from NIST AES-256-CTR-DRBG (OpenSSL) only with -DNIST_RAND, otherwise libc rand() 1.2% (BIKE_v2_128 enc)
kem-06 BRA ICCS-only pseudohash for G/H; seed expansion via per-seed ICCS DRNG instances; XKCP Keccak dead 4.5% (BRA-128 enc)
kem-07 BRQC ICCS-only pseudohash for G/H; seed expansion via per-seed ICCS DRNG instances; XKCP Keccak dead 5.3% (BRQC-128 enc)
kem-08 BW-KEM ICCS-only optimized AVX2 auxfunc.c adds an SM3 counter-block fast path 78% (BW_KEM_C512 enc)
kem-09 CheetahKEM ICCS-only 83% (Cheetah512 keygen)
kem-10 C-Multi-UR-AG ICCS-only own fips202.c compiled but unreachable from the API 2.9% (CMultiURAG-256 enc)
kem-11 COMPASS-KEM ICCS-only shake* names are shims over pseudoXOF 97% (COMPASS-KEM-256 keygen)
kem-12 CTL Algorithm ICCS-only sha3.c shim has no permutation and is unused 12% (CTL-257-512 enc)
kem-13 DKEM (Ding Key Encapsulation) ICCS-only default DKE_HASH=0; own SM3/HMAC compiled but unreachable; DKE_HASH=2 would switch to SHAKE 82% (DKEM-512 keygen)
kem-14 DTRU ICCS-only 33% (DTRU-768 enc)
kem-15 FLIT ICCS-only 52% (FLIT128_REF enc)
kem-16 HARE ICCS-only pseudoXOF only (recomputes prefix per call); lives under _shared/ 3.0% (HARE-128-kr keygen)
kem-17 Hybrid Equivalent Punctured and Quasi-Cyclic ICCS-only never calls the DRNG: zero-initialised PRNG (known kem-17-1/-3) 89% (hep-qc-1 dec)
kem-18 LoongKEM ICCS-only 87% (Loong512 keygen)
kem-19 Lore instance-dependent Lore-SM3: ICCS-only; Lore-SHAKE: own FIPS 202 (bypass); AVX2/NEON SIMD SM3 in auxfunc 73% (Lore-SM3-L1 keygen)
kem-20 MAMBA-Frost mixed all SHAKE calls are pseudoXOF shims; matrix A via own AES-128 with -D_AES128_FOR_A_ 3.8% (MAMBA-Frost-128 dec)
kem-21 MAMBA-Viper ICCS-only shake* names are shims over pseudoXOF 48% (MAMBA-Viper-128 enc)
kem-22 Mithril ICCS-only 40% (Mithril-128 keygen)
kem-23 Mito ICCS-only 1.7% (Mito-2-E-128 dec)
kem-24 MORNING-Scabbard ICCS-only 70% (scabbard128 keygen)
kem-25 NEV ICCS-only with -DUSE_ICCS (SHA3 build selectable) 69% (NEV_2048_3329_ICCS enc)
kem-26 NSS-HQC bypass own inline Keccak (SHA3-512, SHAKE256) for everything; DRNG for randomness 0.0% (HQC-128 dec)
kem-27 NTRE Key Encapsulation Mechanism ICCS-only 49% (NTRE-128 enc)
kem-28 OAEP-NTRU ICCS-only 66% (OAEP-NTRU-2592 enc)
kem-29 Polar-KEM ICCS-only 98% (PolarKEM-512 keygen)
kem-30 PolarLAC ICCS-only default BIT_USE_SHAKE=0 73% (POLARLAC-512 enc)
kem-31 QIMEN-PIKE bypass own SM3 + counter XOF (pike_hash.c) for G, KDF and streams; DRNG only 0.0% (NGCC-1 dec)
kem-32 Quasi-Cyclic Twisted McEliece Key Encapsulation Mechanism bypass own SHAKE256 for session key/keygen expansion; OpenSSL AES-256-CTR-DRBG seeded by the ICCS DRNG; auxfunc not linked 0.0% (QCTM128 dec)
kem-33 QUBE ICCS-only 62% (qube-128 enc)
kem-34 Rudraksh2 ICCS-only 96% (lwekem512 enc)
kem-35 Scloud+ instance-dependent SM3 sets: private modified copy of auxfunc (official not linked); AES/SHAKE sets: own AES/Keccak (bypass); benchmark pilot uses SHAKE 93% (Scloudplus-192-SM3-packed10 keygen)
kem-36 TRIKE ICCS-only 4.7% (TRIKE-2 enc)
kem-37 TriQ-KEM ICCS-only 12% (TriQ-KEM-128 keygen)
kem-38 UVW Key Encapsulation Mechanism ICCS-only 14% (UVW-KEM-128 enc)
kem-39 Weaver ICCS-only grep hits for AES/Keccak/OpenSSL are not reachable in the built library 82% (WeaverKEM-128 keygen)
kem-40 YuanYang.KEM ICCS-only 42% (yuanyang-512 enc)
kem-41 ZEN ICCS-only 67% (ZEN_128 enc)
kex-01 ADKEX (Authenticated Ding Key Exchange) ICCS-only default DKE_HASH=0; own SM3/HMAC compiled but unreachable; DKE_HASH=2 would switch to SHAKE 81% (ADKEX-512 exchange)
kex-02 AFS-KEX ICCS-only optimized AVX2 auxfunc.c adds an SM3 counter-block fast path 76% (AFS_KEX_C512 exchange)
kex-03 CreTAKE ICCS-only PolarLAC/ZEN/BiT components; Keccak only if BIT_USE_SHAKE=1 78% (CreTAKE-S2S-BiT512-ePLAC512 exchange)
kex-04 DKEX (Ding Key Exchange) mixed KEX core via ICCS; embedded ML-DSA uses its own SHAKE 36% (DKEX-512 exchange)
kex-05 Loom ICCS-only grep hits for AES/Keccak/OpenSSL are not reachable in the built library 6.2% (LoomKEX-512 exchange)
kex-06 MAMBA-NIKE bypass SHAKE128/256 + ChaCha20; DRNG only with -DKAT_BUILD, otherwise /dev/urandom 0.0% (MAMBA-NIKE-128 exchange)
kex-07 NEV-AKE ICCS-only own fips202.c compiled but unreachable 55% (NEV_AKE_2048_769 exchange)
kex-08 NIIKE bypass no hash or KDF at all: raw j-invariant (known kex-08-1) 0.0% (NIIKE-lv128 exchange)
kex-09 TriQ-KEX ICCS-only 7.0% (TriQ-KEX-128 exchange)
sign-01 Aigis-Sig+ ICCS-only own fips202.c compiled but unreachable from the API 64% (Aigis-sig1 sign)
sign-02 BIT: Bimodal Triangular distribution based lattice signatures ICCS-only own fips202.c compiled but unreachable (BIT_USE_SHAKE=0) 88% (BiT-512 keygen)
sign-03 CEDRUS+C ICCS-only 99% (CEDRUSC-384s keygen)
sign-04 CEDRUSÉ‘ ICCS-only 99% (CEDRUSALPHA-384f keygen)
sign-05 Chinith mixed random oracles via ICCS; seed-tree/VOLE PRG via SM4 / Ballet / Vistrutah 36% (sm4th_em_d2_128s_tight sign)
sign-06 COMPASS-SIG ICCS-only shake* names are shims over pseudoXOF 95% (COMPASS-SIG-256 keygen)
sign-07 CS ICCS-only 62% (CS-512 sign)
sign-08 DARTS ICCS-only x4 shake names loop over the ICCS XOF 88% (DARTS128 sign)
sign-09 DOVE ICCS-only 63% (dove_pkc_skc_512 verify)
sign-10 Facto-DSA ICCS-only 88% (Facto-DSA-512 verify)
sign-11 FlexTree ICCS-only 99% (Flextree-384f keygen)
sign-12 Galas Signature Scheme ICCS-only 46% (Galas-256S verify)
sign-13 GreatWall Signature Algorithm bypass own XKCP Keccak + AES-CTR PRGs; no auxfunc.c shipped 0.0% (GreatWall128f keygen)
sign-14 Lynxer mixed with -DXOF_PSEUDO (as the KATs need): oracles via pseudoXOF, PRG via AES/Rijndael/SHACAL-2; source default is own Keccak (bypass) 99% (Lynxer-512f keygen)
sign-15 MORNING-ATLAS ICCS-only 83% (lwrdsa192 keygen)
sign-16 Octarine ICCS-only 60% (Octarine-128 keygen)
sign-17 OPS Digital Signature Algorithm ICCS-only optimized AVX2 auxfunc.c adds sm3x4 / pseudoXOF_4x 92% (OPSsig-512 keygen)
sign-18 Origami ICCS-only shake* names are shims over pseudoXOF 100% (Origami-512 keygen)
sign-19 Phoenix instance-dependent SM3 sets mixed (own SM3 for all tree hashing/PRF, pseudoXOF for digest/indices); SHAKE sets bypass with a SHAKE-based drng.c 12% (Phoenix-SM3-256s sign)
sign-20 Qing Luan ICCS-only builds wide hash and counter XOF on sm3hash, not pseudohash/pseudoXOF 88% (QingLuan-512 keygen)
sign-21 ReSolveD-É‘ bypass Keccak oracles + AES/Rijndael/SHACAL-2 PRGs; pseudoXOF only with -DXOF_PSEUDO (undefined) 72% (ReSolveD-alpha-512f keygen)
sign-22 Rhyme instance-dependent SM3 sets: counter XOF on sm3hash; SHAKE sets: own FIPS 202 (bypass) 77% (Rhyme-SM3-256 sign)
sign-23 Shuttle ICCS-only uses the ICCS SM3 DRBG (init/get_random_number) as its XOF; AVX2/AVX-512 SM3 DRBG in optimized 0.0% (SHUTTLE-128 keygen)
sign-24 Sigurd ICCS-only 62% (Sigurd-512 sign)
sign-25 SQIsign2D2 ICCS-only 17% (SQISign2Dsquare-Level2-eff_uncompressed verify)
sign-26 SQIsign2D-push1/2 ICCS-only iccs/xof_iccs.c glue; NIST SHAKE/AES leftovers unused 0.0% (SQIsign2D-lvl1 verify)
sign-27 SQIsignTriangle ICCS-only shake* names are shims over pseudoXOF 83% (SQIsignTriangle_lvl6 verify)
sign-28 SYDO mixed hashing via pseudoXOF; PRGs via own AES/Rijndael and a BLAKE2s-round cipher 26% (sydo_512s sign)
sign-29 Tins ICCS-only 55% (Tins512 verify)
sign-30 TRINE ICCS-only with -DUSE_ICCS (SHA3 build selectable) 64% (TRINE-128-Balanced keygen)
sign-31 TSUOV ICCS-only 79% (TSUOV_512 sign)
sign-32 UVW signature ICCS-only grep hits for AES/Keccak/OpenSSL are not reachable in the built library 1.0% (UVW-128 verify)
sign-33 VDOO: Vinegar-Diagonal-Oil-Oil ICCS-only 0.3% (vdoo_128 verify)
sign-34 YuanYang.DSA ICCS-only 59% (yuanyang-512 verify)