Performance measurements › x86_1 › kem-19 · system: x86_1 · arm_1
kem-19 Lore — 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: Lore
- Implementation versions measured: reference
- Parameter sets:
Lore-SHAKE-L1,Lore-SHAKE-L2,Lore-SHAKE-L3,Lore-SHAKE-L4,Lore-SM3-L1,Lore-SM3-L2,Lore-SM3-L3,Lore-SM3-L4 - Security evaluation: kem-19 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-19/kat.sha256 in the harness) before timing.
| instance | build flags | KAT |
|---|---|---|
Lore-SHAKE-L1 |
guide | PASS |
Lore-SHAKE-L2 |
guide | PASS |
Lore-SHAKE-L3 |
guide | PASS |
Lore-SHAKE-L4 |
guide | PASS |
Lore-SM3-L1 |
guide | PASS |
Lore-SM3-L2 |
guide | PASS |
Lore-SM3-L3 |
guide | PASS |
Lore-SM3-L4 |
guide | PASS |
4. Performance
| instance | operation | mean cycles | mean time | ops/s | median trial | n (trials × iters) |
|---|---|---|---|---|---|---|
Lore-SHAKE-L1 |
keygen | 173.0 k | 82.7 µs | 1.21e+04 | 82.7 µs | 52885 (5 × 10577) |
Lore-SHAKE-L1 |
enc | 333.7 k | 159 µs | 6.27e+03 | 159 µs | 30425 (5 × 6085) |
Lore-SHAKE-L1 |
dec | 392.1 k | 187 µs | 5.34e+03 | 187 µs | 25495 (5 × 5099) |
Lore-SHAKE-L2 |
keygen | 717.4 k | 343 µs | 2.92e+03 | 343 µs | 13620 (5 × 2724) |
Lore-SHAKE-L2 |
enc | 1.07 M | 510 µs | 1.96e+03 | 510 µs | 8910 (5 × 1782) |
Lore-SHAKE-L2 |
dec | 1.35 M | 644 µs | 1.55e+03 | 644 µs | 7740 (5 × 1548) |
Lore-SHAKE-L3 |
keygen | 1.58 M | 756 µs | 1.32e+03 | 761 µs | 6325 (5 × 1265) |
Lore-SHAKE-L3 |
enc | 2.06 M | 986 µs | 1.01e+03 | 982 µs | 5195 (5 × 1039) |
Lore-SHAKE-L3 |
dec | 2.35 M | 1.12 ms | 892 | 1.12 ms | 4400 (5 × 880) |
Lore-SHAKE-L4 |
keygen | 2.71 M | 1.29 ms | 774 | 1.29 ms | 3745 (5 × 749) |
Lore-SHAKE-L4 |
enc | 3.58 M | 1.71 ms | 585 | 1.71 ms | 2815 (5 × 563) |
Lore-SHAKE-L4 |
dec | 4.28 M | 2.05 ms | 489 | 2.05 ms | 2415 (5 × 483) |
Lore-SM3-L1 |
keygen | 240.3 k | 115 µs | 8.71e+03 | 115 µs | 37895 (5 × 7579) |
Lore-SM3-L1 |
enc | 363.5 k | 174 µs | 5.76e+03 | 173 µs | 27255 (5 × 5451) |
Lore-SM3-L1 |
dec | 416.7 k | 199 µs | 5.02e+03 | 199 µs | 24205 (5 × 4841) |
Lore-SM3-L2 |
keygen | 1.06 M | 506 µs | 1.98e+03 | 506 µs | 9440 (5 × 1888) |
Lore-SM3-L2 |
enc | 1.35 M | 646 µs | 1.55e+03 | 646 µs | 7660 (5 × 1532) |
Lore-SM3-L2 |
dec | 1.62 M | 775 µs | 1.29e+03 | 775 µs | 6345 (5 × 1269) |
Lore-SM3-L3 |
keygen | 2.38 M | 1.14 ms | 880 | 1.14 ms | 4370 (5 × 874) |
Lore-SM3-L3 |
enc | 2.78 M | 1.33 ms | 753 | 1.33 ms | 3765 (5 × 753) |
Lore-SM3-L3 |
dec | 3.05 M | 1.46 ms | 686 | 1.46 ms | 3300 (5 × 660) |
Lore-SM3-L4 |
keygen | 5.19 M | 2.48 ms | 403 | 2.48 ms | 1980 (5 × 396) |
Lore-SM3-L4 |
enc | 5.95 M | 2.84 ms | 352 | 2.84 ms | 1735 (5 × 347) |
Lore-SM3-L4 |
dec | 6.65 M | 3.17 ms | 315 | 3.17 ms | 1555 (5 × 311) |
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 |
|---|---|---|---|---|
Lore-SHAKE-L1 |
keygen | 49869 | 1728 KiB | 1800 KiB |
Lore-SHAKE-L1 |
enc | 49869 | 1720 KiB | 1824 KiB |
Lore-SHAKE-L1 |
dec | 49869 | 1724 KiB | 1788 KiB |
Lore-SHAKE-L2 |
keygen | 52245 | 1704 KiB | 1796 KiB |
Lore-SHAKE-L2 |
enc | 52245 | 1860 KiB | 1932 KiB |
Lore-SHAKE-L2 |
dec | 52245 | 1864 KiB | 1928 KiB |
Lore-SHAKE-L3 |
keygen | 54293 | 1708 KiB | 1856 KiB |
Lore-SHAKE-L3 |
enc | 54293 | 1864 KiB | 1928 KiB |
Lore-SHAKE-L3 |
dec | 54293 | 1836 KiB | 1960 KiB |
Lore-SHAKE-L4 |
keygen | 54357 | 1748 KiB | 1884 KiB |
Lore-SHAKE-L4 |
enc | 54357 | 1920 KiB | 1984 KiB |
Lore-SHAKE-L4 |
dec | 54357 | 1924 KiB | 2020 KiB |
Lore-SM3-L1 |
keygen | 46541 | 1708 KiB | 1784 KiB |
Lore-SM3-L1 |
enc | 46541 | 1724 KiB | 1812 KiB |
Lore-SM3-L1 |
dec | 46541 | 1744 KiB | 1808 KiB |
Lore-SM3-L2 |
keygen | 48885 | 1732 KiB | 1832 KiB |
Lore-SM3-L2 |
enc | 48885 | 1848 KiB | 1916 KiB |
Lore-SM3-L2 |
dec | 48885 | 1868 KiB | 1960 KiB |
Lore-SM3-L3 |
keygen | 50901 | 1732 KiB | 1876 KiB |
Lore-SM3-L3 |
enc | 50901 | 1880 KiB | 1944 KiB |
Lore-SM3-L3 |
dec | 50901 | 1872 KiB | 1936 KiB |
Lore-SM3-L4 |
keygen | 50965 | 1732 KiB | 1888 KiB |
Lore-SM3-L4 |
enc | 50965 | 1904 KiB | 2024 KiB |
Lore-SM3-L4 |
dec | 50965 | 1912 KiB | 1980 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 |
|---|---|---|---|---|
Lore-SHAKE-L1 |
610 | 2108 | 706 | 32 |
Lore-SHAKE-L2 |
1186 | 4518 | 1282 | 32 |
Lore-SHAKE-L3 |
1954 | 7736 | 2114 | 32 |
Lore-SHAKE-L4 |
2914 | 11432 | 3170 | 32 |
Lore-SM3-L1 |
610 | 2108 | 706 | 32 |
Lore-SM3-L2 |
1186 | 4518 | 1282 | 32 |
Lore-SM3-L3 |
1954 | 7736 | 2114 | 32 |
Lore-SM3-L4 |
2914 | 11432 | 3170 | 32 |
Symmetric primitives
Survey verdict: instance-dependent — Lore-SM3: ICCS-only; Lore-SHAKE: own FIPS 202 (bypass); AVX2/NEON SIMD SM3 in auxfunc
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 |
|---|---|---|---|---|
Lore-SHAKE-L1 |
keygen | 0.0% | 3.6% | drng 1 |
Lore-SHAKE-L1 |
enc | 0.0% | 1.4% | drng 1 |
Lore-SHAKE-L1 |
dec | 0.0% | 0.0% | – |
Lore-SHAKE-L2 |
keygen | 0.0% | 0.9% | drng 1 |
Lore-SHAKE-L2 |
enc | 0.0% | 0.4% | drng 1 |
Lore-SHAKE-L2 |
dec | 0.0% | 0.0% | – |
Lore-SHAKE-L3 |
keygen | 0.0% | 0.4% | drng 1 |
Lore-SHAKE-L3 |
enc | 0.0% | 0.3% | drng 1 |
Lore-SHAKE-L3 |
dec | 0.0% | 0.0% | – |
Lore-SHAKE-L4 |
keygen | 0.0% | 0.2% | drng 1 |
Lore-SHAKE-L4 |
enc | 0.0% | 0.2% | drng 1 |
Lore-SHAKE-L4 |
dec | 0.0% | 0.0% | – |
Lore-SM3-L1 |
keygen | 73% | 2.6% | drng 1, pseudoXOF 5, sm3hash 1 |
Lore-SM3-L1 |
enc | 68% | 1.3% | drng 1, pseudoXOF 7, sm3hash 3 |
Lore-SM3-L1 |
dec | 60% | 0.0% | pseudoXOF 8, sm3hash 3 |
Lore-SM3-L2 |
keygen | 60% | 0.6% | drng 1, pseudoXOF 14, sm3hash 1 |
Lore-SM3-L2 |
enc | 53% | 0.4% | drng 1, pseudoXOF 16, sm3hash 3 |
Lore-SM3-L2 |
dec | 44% | 0.0% | pseudoXOF 17, sm3hash 3 |
Lore-SM3-L3 |
keygen | 58% | 0.3% | drng 1, pseudoXOF 29, sm3hash 1 |
Lore-SM3-L3 |
enc | 53% | 0.2% | drng 1, pseudoXOF 31, sm3hash 3 |
Lore-SM3-L3 |
dec | 48% | 0.0% | pseudoXOF 32, sm3hash 3 |
Lore-SM3-L4 |
keygen | 64% | 0.1% | drng 1, pseudoXOF 56, sm3hash 1 |
Lore-SM3-L4 |
enc | 59% | 0.1% | drng 1, pseudoXOF 58, sm3hash 3 |
Lore-SM3-L4 |
dec | 52% | 0.0% | pseudoXOF 59, sm3hash 3 |
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 |
|---|---|---|
Lore-SHAKE-L1 |
KAT log (sha256 1afaf20ea8b4ac0d…) |
kat/kem-19/Lore-SHAKE-L1.log |
Lore-SHAKE-L1 |
timing dec | records/kem-19/Lore-SHAKE-L1__dec.json |
Lore-SHAKE-L1 |
timing enc | records/kem-19/Lore-SHAKE-L1__enc.json |
Lore-SHAKE-L1 |
timing keygen | records/kem-19/Lore-SHAKE-L1__keygen.json |
Lore-SHAKE-L1 |
hash profile dec | profile/kem-19/Lore-SHAKE-L1__dec.json |
Lore-SHAKE-L1 |
hash profile enc | profile/kem-19/Lore-SHAKE-L1__enc.json |
Lore-SHAKE-L1 |
hash profile keygen | profile/kem-19/Lore-SHAKE-L1__keygen.json |
Lore-SHAKE-L2 |
KAT log (sha256 3eaaaf36c0d363fa…) |
kat/kem-19/Lore-SHAKE-L2.log |
Lore-SHAKE-L2 |
timing dec | records/kem-19/Lore-SHAKE-L2__dec.json |
Lore-SHAKE-L2 |
timing enc | records/kem-19/Lore-SHAKE-L2__enc.json |
Lore-SHAKE-L2 |
timing keygen | records/kem-19/Lore-SHAKE-L2__keygen.json |
Lore-SHAKE-L2 |
hash profile dec | profile/kem-19/Lore-SHAKE-L2__dec.json |
Lore-SHAKE-L2 |
hash profile enc | profile/kem-19/Lore-SHAKE-L2__enc.json |
Lore-SHAKE-L2 |
hash profile keygen | profile/kem-19/Lore-SHAKE-L2__keygen.json |
Lore-SHAKE-L3 |
KAT log (sha256 c488a2c03d92ad20…) |
kat/kem-19/Lore-SHAKE-L3.log |
Lore-SHAKE-L3 |
timing dec | records/kem-19/Lore-SHAKE-L3__dec.json |
Lore-SHAKE-L3 |
timing enc | records/kem-19/Lore-SHAKE-L3__enc.json |
Lore-SHAKE-L3 |
timing keygen | records/kem-19/Lore-SHAKE-L3__keygen.json |
Lore-SHAKE-L3 |
hash profile dec | profile/kem-19/Lore-SHAKE-L3__dec.json |
Lore-SHAKE-L3 |
hash profile enc | profile/kem-19/Lore-SHAKE-L3__enc.json |
Lore-SHAKE-L3 |
hash profile keygen | profile/kem-19/Lore-SHAKE-L3__keygen.json |
Lore-SHAKE-L4 |
KAT log (sha256 8a84de8aa4f99485…) |
kat/kem-19/Lore-SHAKE-L4.log |
Lore-SHAKE-L4 |
timing dec | records/kem-19/Lore-SHAKE-L4__dec.json |
Lore-SHAKE-L4 |
timing enc | records/kem-19/Lore-SHAKE-L4__enc.json |
Lore-SHAKE-L4 |
timing keygen | records/kem-19/Lore-SHAKE-L4__keygen.json |
Lore-SHAKE-L4 |
hash profile dec | profile/kem-19/Lore-SHAKE-L4__dec.json |
Lore-SHAKE-L4 |
hash profile enc | profile/kem-19/Lore-SHAKE-L4__enc.json |
Lore-SHAKE-L4 |
hash profile keygen | profile/kem-19/Lore-SHAKE-L4__keygen.json |
Lore-SM3-L1 |
KAT log (sha256 71de39651150d414…) |
kat/kem-19/Lore-SM3-L1.log |
Lore-SM3-L1 |
timing dec | records/kem-19/Lore-SM3-L1__dec.json |
Lore-SM3-L1 |
timing enc | records/kem-19/Lore-SM3-L1__enc.json |
Lore-SM3-L1 |
timing keygen | records/kem-19/Lore-SM3-L1__keygen.json |
Lore-SM3-L1 |
hash profile dec | profile/kem-19/Lore-SM3-L1__dec.json |
Lore-SM3-L1 |
hash profile enc | profile/kem-19/Lore-SM3-L1__enc.json |
Lore-SM3-L1 |
hash profile keygen | profile/kem-19/Lore-SM3-L1__keygen.json |
Lore-SM3-L2 |
KAT log (sha256 0682f77c99ee068e…) |
kat/kem-19/Lore-SM3-L2.log |
Lore-SM3-L2 |
timing dec | records/kem-19/Lore-SM3-L2__dec.json |
Lore-SM3-L2 |
timing enc | records/kem-19/Lore-SM3-L2__enc.json |
Lore-SM3-L2 |
timing keygen | records/kem-19/Lore-SM3-L2__keygen.json |
Lore-SM3-L2 |
hash profile dec | profile/kem-19/Lore-SM3-L2__dec.json |
Lore-SM3-L2 |
hash profile enc | profile/kem-19/Lore-SM3-L2__enc.json |
Lore-SM3-L2 |
hash profile keygen | profile/kem-19/Lore-SM3-L2__keygen.json |
Lore-SM3-L3 |
KAT log (sha256 da373ac026a9efb4…) |
kat/kem-19/Lore-SM3-L3.log |
Lore-SM3-L3 |
timing dec | records/kem-19/Lore-SM3-L3__dec.json |
Lore-SM3-L3 |
timing enc | records/kem-19/Lore-SM3-L3__enc.json |
Lore-SM3-L3 |
timing keygen | records/kem-19/Lore-SM3-L3__keygen.json |
Lore-SM3-L3 |
hash profile dec | profile/kem-19/Lore-SM3-L3__dec.json |
Lore-SM3-L3 |
hash profile enc | profile/kem-19/Lore-SM3-L3__enc.json |
Lore-SM3-L3 |
hash profile keygen | profile/kem-19/Lore-SM3-L3__keygen.json |
Lore-SM3-L4 |
KAT log (sha256 eb19dc0dc4844f16…) |
kat/kem-19/Lore-SM3-L4.log |
Lore-SM3-L4 |
timing dec | records/kem-19/Lore-SM3-L4__dec.json |
Lore-SM3-L4 |
timing enc | records/kem-19/Lore-SM3-L4__enc.json |
Lore-SM3-L4 |
timing keygen | records/kem-19/Lore-SM3-L4__keygen.json |
Lore-SM3-L4 |
hash profile dec | profile/kem-19/Lore-SM3-L4__dec.json |
Lore-SM3-L4 |
hash profile enc | profile/kem-19/Lore-SM3-L4__enc.json |
Lore-SM3-L4 |
hash profile keygen | profile/kem-19/Lore-SM3-L4__keygen.json |
Scripts: performance/campaign.py, performance/ngcc_perf.c, performance/hashprof/ in the harness.