Performance measurements › arm_1 › kem-33 · system: x86_1 · arm_1

kem-33 QUBE — 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

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-33/kat.sha256 in the harness) before timing.

instance build flags KAT
qube-128 harness-default MISMATCH [1]
qube-192 harness-default NOKAT [1]
qube-256 harness-default MISMATCH [1]
qube-384 harness-default MISMATCH [1]
qube-512 harness-default MISMATCH [1]

[1] The reference sources reproduce their own in-tree KAT files byte for byte, but the top-level Test_Vectors carry the optimized implementation's key and ciphertext sizes at four levels, and no top-level qube-192 vector was submitted (kem-33/README.md, pseudocode.md). These instances are timed anyway; their output is not validated.

4. Performance

instance operation mean cycles mean time ops/s median trial n (trials × iters)
qube-128 keygen 551.6 k 205 µs 4.89e+03 205 µs 14535 (5 × 2907)
qube-128 enc 600.8 k 223 µs 4.49e+03 223 µs 13560 (5 × 2712)
qube-128 dec 1.03 M 381 µs 2.62e+03 379 µs 8255 (5 × 1651)
qube-192 keygen 1.25 M 466 µs 2.15e+03 462 µs 6410 (5 × 1282)
qube-192 enc 1.32 M 489 µs 2.04e+03 489 µs 6340 (5 × 1268)
qube-192 dec 2.36 M 877 µs 1.14e+03 876 µs 3585 (5 × 717)
qube-256 keygen 2.55 M 947 µs 1.06e+03 947 µs 3250 (5 × 650)
qube-256 enc 2.60 M 965 µs 1.04e+03 962 µs 3340 (5 × 668)
qube-256 dec 4.78 M 1.77 ms 563 1.78 ms 1785 (5 × 357)
qube-384 keygen 6.15 M 2.28 ms 438 2.28 ms 1355 (5 × 271)
qube-384 enc 6.26 M 2.32 ms 430 2.31 ms 1340 (5 × 268)
qube-384 dec 11.10 M 4.12 ms 243 4.11 ms 760 (5 × 152)
qube-512 keygen 16.78 M 6.23 ms 161 6.22 ms 490 (5 × 98)
qube-512 enc 16.76 M 6.22 ms 161 6.21 ms 510 (5 × 102)
qube-512 dec 25.27 M 9.38 ms 107 9.37 ms 340 (5 × 68)

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
qube-128 keygen 37348 1436 KiB 3552 KiB
qube-128 enc 37348 1460 KiB 1536 KiB
qube-128 dec 37348 1468 KiB 1548 KiB
qube-192 keygen 38996 1448 KiB 1572 KiB
qube-192 enc 38996 3508 KiB 3572 KiB
qube-192 dec 38996 1516 KiB 1604 KiB
qube-256 keygen 39132 1460 KiB 1604 KiB
qube-256 enc 39132 1552 KiB 1636 KiB
qube-256 dec 39132 1572 KiB 1648 KiB
qube-384 keygen 39020 1492 KiB 1712 KiB
qube-384 enc 39020 3716 KiB 3780 KiB
qube-384 dec 39020 1740 KiB 1824 KiB
qube-512 keygen 39420 3468 KiB 3680 KiB
qube-512 enc 39420 1872 KiB 1940 KiB
qube-512 dec 39420 3848 KiB 3912 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
qube-128 3294 3326 3287 16
qube-192 6364 6412 6362 24
qube-256 10446 10510 10423 32
qube-384 20738 20834 20633 48
qube-512 34028 34156 33846 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
qube-128 keygen 57% 1.6% drng 2, pseudoXOF 7.07, sm3hash 1
qube-128 enc 62% 1.4% drng 2, pseudoXOF 7, sm3hash 2
qube-128 dec 52% 0.0% pseudoXOF 11, sm3hash 4
qube-192 keygen 50% 0.7% drng 2, pseudoXOF 8, pseudohash 1
qube-192 enc 57% 0.7% drng 2, pseudoXOF 8, pseudohash 1, sm3hash 1
qube-192 dec 45% 0.0% pseudoXOF 13, pseudohash 1, sm3hash 3
qube-256 keygen 49% 0.3% drng 2, pseudoXOF 9, pseudohash 1
qube-256 enc 55% 0.3% drng 2, pseudoXOF 8.57, pseudohash 1, sm3hash 1
qube-256 dec 40% 0.0% pseudoXOF 14, pseudohash 1, sm3hash 3
qube-384 keygen 41% 0.2% drng 2, pseudoXOF 10, pseudohash 1
qube-384 enc 51% 0.2% drng 2, pseudoXOF 9, pseudohash 2
qube-384 dec 44% 0.0% pseudoXOF 15, pseudohash 4
qube-512 keygen 54% 0.1% drng 2, pseudoXOF 10, pseudohash 1
qube-512 enc 63% 0.1% drng 2, pseudoXOF 10, pseudohash 2
qube-512 dec 53% 0.0% pseudoXOF 17, pseudohash 4

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
qube-128 KAT log (sha256 430d6f37988fdac0…) kat/kem-33/qube-128.log
qube-128 timing dec records/kem-33/qube-128__dec.json
qube-128 timing enc records/kem-33/qube-128__enc.json
qube-128 timing keygen records/kem-33/qube-128__keygen.json
qube-128 hash profile dec profile/kem-33/qube-128__dec.json
qube-128 hash profile enc profile/kem-33/qube-128__enc.json
qube-128 hash profile keygen profile/kem-33/qube-128__keygen.json
qube-192 KAT log (sha256 8e39d7098e70e062…) kat/kem-33/qube-192.log
qube-192 timing dec records/kem-33/qube-192__dec.json
qube-192 timing enc records/kem-33/qube-192__enc.json
qube-192 timing keygen records/kem-33/qube-192__keygen.json
qube-192 hash profile dec profile/kem-33/qube-192__dec.json
qube-192 hash profile enc profile/kem-33/qube-192__enc.json
qube-192 hash profile keygen profile/kem-33/qube-192__keygen.json
qube-256 KAT log (sha256 8572024e2a5eee13…) kat/kem-33/qube-256.log
qube-256 timing dec records/kem-33/qube-256__dec.json
qube-256 timing enc records/kem-33/qube-256__enc.json
qube-256 timing keygen records/kem-33/qube-256__keygen.json
qube-256 hash profile dec profile/kem-33/qube-256__dec.json
qube-256 hash profile enc profile/kem-33/qube-256__enc.json
qube-256 hash profile keygen profile/kem-33/qube-256__keygen.json
qube-384 KAT log (sha256 f55f27e3a733b7ae…) kat/kem-33/qube-384.log
qube-384 timing dec records/kem-33/qube-384__dec.json
qube-384 timing enc records/kem-33/qube-384__enc.json
qube-384 timing keygen records/kem-33/qube-384__keygen.json
qube-384 hash profile dec profile/kem-33/qube-384__dec.json
qube-384 hash profile enc profile/kem-33/qube-384__enc.json
qube-384 hash profile keygen profile/kem-33/qube-384__keygen.json
qube-512 KAT log (sha256 8447864d076f8758…) kat/kem-33/qube-512.log
qube-512 timing dec records/kem-33/qube-512__dec.json
qube-512 timing enc records/kem-33/qube-512__enc.json
qube-512 timing keygen records/kem-33/qube-512__keygen.json
qube-512 hash profile dec profile/kem-33/qube-512__dec.json
qube-512 hash profile enc profile/kem-33/qube-512__enc.json
qube-512 hash profile keygen profile/kem-33/qube-512__keygen.json

Scripts: performance/campaign.py, performance/ngcc_perf.c, performance/hashprof/ in the harness.