Performance measurements › x86_1 › kem-12 · system: x86_1 · arm_1
kem-12 CTL Algorithm — performance on x86-64 (system x86_1)
Independent measurement following the structure of the NICCS x86 self-assessment guide, §3.5 (1)–(7). Not a submitter self-assessment.
1. Basic information
- Category: public-key algorithm; function: key encapsulation
- Algorithm: CTL Algorithm
- Implementation versions measured: reference
- Parameter sets:
CTL-257-512,CTL-769-1024,CTL-3329-2048 - Security evaluation: kem-12 report
- Measurement method: x86_1 method
- Submission: NICCS page
2. Assessment environment
| item | value |
|---|---|
| processor | 12th Gen Intel(R) Core(TM) i7-12700 (CPU 2, one core) |
| clock | max 2.10 GHz, governor performance, turbo off, SMT off |
| memory | 31788 MiB |
| OS / kernel | Debian GNU/Linux 13 (trixie) / 6.12.107+deb13-amd64 |
| compiler / build tool | gcc (Debian 14.2.0-19) 14.2.0 / cmake version 3.31.6 |
| campaign start / end (UTC) | 2026-09-25T10:02:21 / 2026-09-28T10:51:21 |
3. Functional testing (KAT)
Each library was checked against the submitted KAT vectors (SHA-256 manifest kem-12/kat.sha256 in the harness) before timing.
| instance | build flags | KAT |
|---|---|---|
CTL-257-512 |
guide | PASS |
CTL-769-1024 |
guide | PASS |
CTL-3329-2048 |
guide | PASS |
4. Performance
| instance | operation | mean cycles | mean time | ops/s | median trial | n (trials × iters) |
|---|---|---|---|---|---|---|
CTL-257-512 |
keygen | 17.76 M | 8.48 ms | 118 | 8.49 ms | 595 (5 × 119) |
CTL-257-512 |
enc | 61.0 k | 29.1 µs | 3.43e+04 | 29.1 µs | 100000 (5 × 20000) |
CTL-257-512 |
dec | 349.0 k | 167 µs | 6e+03 | 167 µs | 28460 (5 × 5692) |
CTL-769-1024 |
keygen | 79.80 M | 38.2 ms | 26.2 | 38.2 ms | 155 (5 × 31) |
CTL-769-1024 |
enc | 113.7 k | 54.3 µs | 1.84e+04 | 54.3 µs | 80625 (5 × 16125) |
CTL-769-1024 |
dec | 711.3 k | 340 µs | 2.94e+03 | 340 µs | 14345 (5 × 2869) |
CTL-3329-2048 |
keygen | 2.15 G | 1.03 s | 0.967 | 1.04 s | 100 (5 × 20) |
CTL-3329-2048 |
enc | 11.91 M | 5.72 ms | 175 | 5.72 ms | 880 (5 × 176) |
CTL-3329-2048 |
dec | 79.73 M | 38.4 ms | 26 | 38.4 ms | 135 (5 × 27) |
5. Resource consumption
Static memory is approximated by the library's loadable ELF segments; peak memory is the process high-water mark (VmHWM) including the benchmark driver and libc, so both are upper-bound proxies rather than isolated algorithm memory.
| instance | operation | static: ELF image (bytes) | baseline RSS | peak RSS |
|---|---|---|---|---|
CTL-257-512 |
keygen | 391997 | 2496 KiB | 2940 KiB |
CTL-257-512 |
enc | 391997 | 2768 KiB | 2944 KiB |
CTL-257-512 |
dec | 391997 | 2780 KiB | 2952 KiB |
CTL-769-1024 |
keygen | 392261 | 2504 KiB | 3012 KiB |
CTL-769-1024 |
enc | 392261 | 2820 KiB | 3000 KiB |
CTL-769-1024 |
dec | 392261 | 2888 KiB | 3032 KiB |
CTL-3329-2048 |
keygen | 392317 | 2528 KiB | 6432 KiB |
CTL-3329-2048 |
enc | 392317 | 4292 KiB | 4580 KiB |
CTL-3329-2048 |
dec | 392317 | 4324 KiB | 4648 KiB |
6. Transmission and storage overhead
External public-key, ciphertext and signature sizes follow the curated performance/external_sizes.csv catalog; secret-key and shared-secret lengths remain API figures. See the size audit for disagreements.
| instance | public key | secret key | ciphertext | shared secret |
|---|---|---|---|---|
CTL-257-512 |
521 | 2953 | 473 | 16 |
CTL-769-1024 |
1230 | 6030 | 1006 | 32 |
CTL-3329-2048 |
3009 | 15617 | 2353 | 48 |
Symmetric primitives
Survey verdict: ICCS-only — sha3.c shim has no permutation and is unused
Share of each operation spent in the ICCS placeholder hash functions and in the ICCS DRNG (reference build, measured in the same run with link-time wrappers):
| instance | operation | pseudohash/XOF/sm3 | DRNG | calls per operation |
|---|---|---|---|---|
CTL-257-512 |
keygen | 8.4% | 0.0% | drng 1, pseudoXOF 257 |
CTL-257-512 |
enc | 12% | 10% | drng 1, pseudoXOF 3 |
CTL-257-512 |
dec | 6.2% | 0.0% | pseudoXOF 4 |
CTL-769-1024 |
keygen | 2.5% | 0.0% | drng 1, pseudoXOF 337 |
CTL-769-1024 |
enc | 10% | 4.0% | drng 1, pseudoXOF 2, sm3hash 1 |
CTL-769-1024 |
dec | 5.1% | 0.0% | pseudoXOF 3, sm3hash 1 |
CTL-3329-2048 |
keygen | 0.1% | 0.0% | drng 1, pseudoXOF 260 |
CTL-3329-2048 |
enc | 0.4% | 0.1% | drng 1, pseudoXOF 3 |
CTL-3329-2048 |
dec | 0.3% | 0.0% | pseudoXOF 4 |
7. Raw evidence index
Paths are relative to performance/data/x86_1/ in the harness; each JSON file records its commands, environment and trials.
| instance | item | file |
|---|---|---|
CTL-257-512 |
KAT log (sha256 6d4cbf596edd6540…) |
kat/kem-12/CTL-257-512.log |
CTL-257-512 |
timing dec | records/kem-12/CTL-257-512__dec.json |
CTL-257-512 |
timing enc | records/kem-12/CTL-257-512__enc.json |
CTL-257-512 |
timing keygen | records/kem-12/CTL-257-512__keygen.json |
CTL-257-512 |
hash profile dec | profile/kem-12/CTL-257-512__dec.json |
CTL-257-512 |
hash profile enc | profile/kem-12/CTL-257-512__enc.json |
CTL-257-512 |
hash profile keygen | profile/kem-12/CTL-257-512__keygen.json |
CTL-769-1024 |
KAT log (sha256 a90c0b008f11c9dd…) |
kat/kem-12/CTL-769-1024.log |
CTL-769-1024 |
timing dec | records/kem-12/CTL-769-1024__dec.json |
CTL-769-1024 |
timing enc | records/kem-12/CTL-769-1024__enc.json |
CTL-769-1024 |
timing keygen | records/kem-12/CTL-769-1024__keygen.json |
CTL-769-1024 |
hash profile dec | profile/kem-12/CTL-769-1024__dec.json |
CTL-769-1024 |
hash profile enc | profile/kem-12/CTL-769-1024__enc.json |
CTL-769-1024 |
hash profile keygen | profile/kem-12/CTL-769-1024__keygen.json |
CTL-3329-2048 |
KAT log (sha256 d6c583cccfe71aa0…) |
kat/kem-12/CTL-3329-2048.log |
CTL-3329-2048 |
timing dec | records/kem-12/CTL-3329-2048__dec.json |
CTL-3329-2048 |
timing enc | records/kem-12/CTL-3329-2048__enc.json |
CTL-3329-2048 |
timing keygen | records/kem-12/CTL-3329-2048__keygen.json |
CTL-3329-2048 |
hash profile dec | profile/kem-12/CTL-3329-2048__dec.json |
CTL-3329-2048 |
hash profile enc | profile/kem-12/CTL-3329-2048__enc.json |
CTL-3329-2048 |
hash profile keygen | profile/kem-12/CTL-3329-2048__keygen.json |
Scripts: performance/campaign.py, performance/ngcc_perf.c, performance/hashprof/ in the harness.