Performance measurements › arm_1 › kem-27 · system: x86_1 · arm_1
kem-27 NTRE Key Encapsulation Mechanism — performance on AArch64 (system arm_1)
Independent measurement following the structure of the NICCS ARM self-assessment guide, §3.5 (1)–(7). Not a submitter self-assessment.
1. Basic information
- Category: public-key algorithm; function: key encapsulation
- Algorithm: NTRE Key Encapsulation Mechanism
- Implementation versions measured: reference
- Parameter sets:
NTRE-128,NTRE-256,NTRE-512 - Security evaluation: kem-27 report
- Measurement method: arm_1 method
- Submission: NICCS page
2. Assessment environment
| item | value |
|---|---|
| processor | Qualcomm Oryon (CPU 2, one core) |
| machine | ASUS Vivobook S 15 |
| clock | fixed 2.71 GHz (governor performance, minimum = maximum), boost off, SMT none |
| memory | 30562 MiB |
| OS / kernel | Ubuntu 26.04.1 LTS / 7.0.0-34-generic |
| compiler / build tool | gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 / cmake version 4.2.3 |
| campaign start / end (UTC) | 2026-09-28T15:05:46 / 2026-09-29T08:43:52 |
3. Functional testing (KAT)
Each library was checked against the submitted KAT vectors (SHA-256 manifest kem-27/kat.sha256 in the harness) before timing.
| instance | build flags | KAT |
|---|---|---|
NTRE-128 |
guide | PASS |
NTRE-256 |
guide | PASS |
NTRE-512 |
guide | PASS |
4. Performance
| instance | operation | mean cycles | mean time | ops/s | median trial | n (trials × iters) |
|---|---|---|---|---|---|---|
NTRE-128 |
keygen | 109.4 k | 40.6 µs | 2.46e+04 | 40.6 µs | 62665 (5 × 12533) |
NTRE-128 |
enc | 82.1 k | 30.5 µs | 3.28e+04 | 30.4 µs | 96385 (5 × 19277) |
NTRE-128 |
dec | 73.4 k | 27.2 µs | 3.67e+04 | 27.2 µs | 100000 (5 × 20000) |
NTRE-256 |
keygen | 188.4 k | 69.9 µs | 1.43e+04 | 69.6 µs | 38930 (5 × 7786) |
NTRE-256 |
enc | 150.4 k | 55.9 µs | 1.79e+04 | 55.9 µs | 54860 (5 × 10972) |
NTRE-256 |
dec | 136.9 k | 50.8 µs | 1.97e+04 | 50.8 µs | 59260 (5 × 11852) |
NTRE-512 |
keygen | 374.5 k | 139 µs | 7.2e+03 | 138 µs | 21685 (5 × 4337) |
NTRE-512 |
enc | 339.0 k | 126 µs | 7.95e+03 | 126 µs | 24810 (5 × 4962) |
NTRE-512 |
dec | 326.6 k | 121 µs | 8.25e+03 | 121 µs | 25670 (5 × 5134) |
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 |
|---|---|---|---|---|
NTRE-128 |
keygen | 23548 | 1416 KiB | 1480 KiB |
NTRE-128 |
enc | 23548 | 1420 KiB | 1484 KiB |
NTRE-128 |
dec | 23548 | 1424 KiB | 1488 KiB |
NTRE-256 |
keygen | 24020 | 1420 KiB | 1492 KiB |
NTRE-256 |
enc | 24020 | 1432 KiB | 1496 KiB |
NTRE-256 |
dec | 24020 | 1440 KiB | 1504 KiB |
NTRE-512 |
keygen | 24964 | 1428 KiB | 1508 KiB |
NTRE-512 |
enc | 24964 | 1444 KiB | 1508 KiB |
NTRE-512 |
dec | 24964 | 1460 KiB | 1524 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 |
|---|---|---|---|---|
NTRE-128 |
972 | 1976 | 972 | 64 |
NTRE-256 |
1944 | 3920 | 1944 | 64 |
NTRE-512 |
3456 | 6944 | 3456 | 64 |
Symmetric primitives
Survey verdict: ICCS-only
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 |
|---|---|---|---|---|
NTRE-128 |
keygen | 34% | 7.8% | drng 2, pseudoXOF 2, sm3hash 1 |
NTRE-128 |
enc | 65% | 6.8% | drng 1, pseudoXOF 2, sm3hash 1 |
NTRE-128 |
dec | 44% | 0.0% | pseudoXOF 2 |
NTRE-256 |
keygen | 37% | 4.5% | drng 2, pseudoXOF 2, sm3hash 1 |
NTRE-256 |
enc | 67% | 4.7% | drng 1, pseudoXOF 2, sm3hash 1 |
NTRE-256 |
dec | 45% | 0.0% | pseudoXOF 2 |
NTRE-512 |
keygen | 32% | 2.3% | drng 2, pseudoXOF 2, sm3hash 1 |
NTRE-512 |
enc | 66% | 2.9% | drng 1, pseudoXOF 2, sm3hash 1 |
NTRE-512 |
dec | 47% | 0.0% | pseudoXOF 2 |
7. Raw evidence index
Paths are relative to performance/data/arm_1/ in the harness; each JSON file records its commands, environment and trials.
| instance | item | file |
|---|---|---|
NTRE-128 |
KAT log (sha256 5c01aec457cb0a2b…) |
kat/kem-27/NTRE-128.log |
NTRE-128 |
timing dec | records/kem-27/NTRE-128__dec.json |
NTRE-128 |
timing enc | records/kem-27/NTRE-128__enc.json |
NTRE-128 |
timing keygen | records/kem-27/NTRE-128__keygen.json |
NTRE-128 |
hash profile dec | profile/kem-27/NTRE-128__dec.json |
NTRE-128 |
hash profile enc | profile/kem-27/NTRE-128__enc.json |
NTRE-128 |
hash profile keygen | profile/kem-27/NTRE-128__keygen.json |
NTRE-256 |
KAT log (sha256 50a6d0699b3eaf08…) |
kat/kem-27/NTRE-256.log |
NTRE-256 |
timing dec | records/kem-27/NTRE-256__dec.json |
NTRE-256 |
timing enc | records/kem-27/NTRE-256__enc.json |
NTRE-256 |
timing keygen | records/kem-27/NTRE-256__keygen.json |
NTRE-256 |
hash profile dec | profile/kem-27/NTRE-256__dec.json |
NTRE-256 |
hash profile enc | profile/kem-27/NTRE-256__enc.json |
NTRE-256 |
hash profile keygen | profile/kem-27/NTRE-256__keygen.json |
NTRE-512 |
KAT log (sha256 9550a28fa1c2998d…) |
kat/kem-27/NTRE-512.log |
NTRE-512 |
timing dec | records/kem-27/NTRE-512__dec.json |
NTRE-512 |
timing enc | records/kem-27/NTRE-512__enc.json |
NTRE-512 |
timing keygen | records/kem-27/NTRE-512__keygen.json |
NTRE-512 |
hash profile dec | profile/kem-27/NTRE-512__dec.json |
NTRE-512 |
hash profile enc | profile/kem-27/NTRE-512__enc.json |
NTRE-512 |
hash profile keygen | profile/kem-27/NTRE-512__keygen.json |
Scripts: performance/campaign.py, performance/ngcc_perf.c, performance/hashprof/ in the harness.