compare_table now reads the orthogonal jammed cell from sec_jam_cmp.csv,
which stage_L measures, instead of leaving the nan from stage_E. All
nineteen generated rows now appear verbatim in the manuscript.
Give the orthogonal-access jammer its own Rayleigh channel in
oma_ser_jammed, matching the convention every simulated scheme already
used. Without it the closed-form curve faced a jammer at full power in
every frame while the Monte Carlo curves faced a fading one, which
inverted the ordering of the comparison.
Measure the outsider error rate for the fixed-key and naive-refresh
cases as well, and emit the two refresh tables from make_tables.py, so
no cell of the paper is hand-typed.
Derives each block key from the transformations that leave the decision
statistic invariant: a global sign per frame entry, a relabeling of the
frame entries applied to keys and codebook together, and a permutation
of which user holds which row. The legitimate error rate is unchanged
at 0.257 across 24 blocks while a refresh that installs fresh
orthogonal keys reaches 0.710, and a key recovered by known plaintext
returns to the random-guess level one block later.
- exclude the all-ones Walsh-Hadamard row and test every key family
against the all-ones guess
- pass the model dimension to the noise scaling so the key-length sweep
runs at a fixed per-dimension SNR
- known-plaintext attack with nested accumulation and common random
numbers, averaged over 40 collections
- key sensitivity and brute-force search extended to the permutation
key and the index cipher
- make_tables regenerates all three result tables from the CSVs
Reproducibility package for the TIFS submission: transmit and receive
core, security stages (eavesdropper, jamming, key families, attack
difficulty, known-plaintext), real BERT token streams, closed-form
verification, and the scripts that regenerate every figure and table
from the released CSVs.