From 3d5a7fc6f33466a688bbbaaaa9f521ac1bb791e7 Mon Sep 17 00:00:00 2001 From: KiHoLee Date: Mon, 17 Aug 2026 20:02:27 +0900 Subject: [PATCH] Structured key family as the main configuration Unconstrained key training converged to disjoint sparse supports: 99 percent of each users key energy sat on three or four of the sixteen entries, with pairwise disjoint supports and one numerically dead codebook column. That is an orthogonal slot allocation, so the superposition collapsed into OMA and the key space was far smaller than the dense direction the brute-force study assumes. The main configuration is now the structured Walsh-Hadamard family, which is dense, exactly orthogonal, unit modulus, and already the best family in the key-family table. base_keys generalizes to any key length by truncating the next power-of-two Sylvester order, and the key-length sweep keeps only lengths where the truncated rows stay exactly orthogonal, verified numerically. Also fixes the M-PAM energy normalization in oma_ser_keylen, which used sqrt(6g/(M^2-1)) where unit average symbol energy gives A^2=3/(M^2-1); the closed form was 3 dB optimistic and now reproduces a direct Monte Carlo to 1e-5. Results move accordingly: the proposal now stays below OMA at every SNR and reaches 1.52x at key length 64, while the jamming margin falls to 5.5-6.3 dB and the brute-force curve to 0.59 at a million guesses. --- code/check_consistency.py | 99 +++++++--- code/exp_full.py | 62 +++++- code/exp_kpa.py | 4 +- code/exp_permkpa.py | 16 +- code/exp_real_sec.py | 4 +- code/exp_refresh.py | 10 +- code/replot_security.py | 70 +++++-- code/run_remaining.py | 28 +++ data/kpa.csv | 84 ++++---- data/pkpa.csv | 30 +-- data/real_sec_stats.json | 6 +- data/real_sec_ter.csv | 16 +- data/sec_brute_cmp.csv | 28 +-- data/sec_compare.csv | 8 +- data/sec_jam.csv | 14 +- data/sec_jam_cmp.csv | 32 +-- data/sec_jam_gap.csv | 400 +++++++++++++++++++------------------- data/sec_keylen.csv | 20 +- data/sec_sens_cmp.csv | 26 +-- data/sec_snr.csv | 22 +-- fig/fig_sec_brute.pdf | Bin 35035 -> 35052 bytes fig/fig_sec_jam.pdf | Bin 40641 -> 40646 bytes fig/fig_sec_keylen.pdf | Bin 31548 -> 31370 bytes fig/fig_sec_kpa.pdf | Bin 35891 -> 35547 bytes fig/fig_sec_real.pdf | Bin 37673 -> 37589 bytes fig/fig_sec_sens.pdf | Bin 31065 -> 30205 bytes fig/fig_sec_snr.pdf | Bin 39738 -> 39552 bytes 27 files changed, 561 insertions(+), 418 deletions(-) create mode 100644 code/run_remaining.py diff --git a/code/check_consistency.py b/code/check_consistency.py index d03417b..23ea793 100644 --- a/code/check_consistency.py +++ b/code/check_consistency.py @@ -1,14 +1,17 @@ # -*- coding: utf-8 -*- -"""Final consistency check: every headline number vs its raw CSV.""" +"""Final consistency check: every headline number vs its raw CSV. + +A quoted value that goes stale during a revision is the failure mode this +guards against, so each assertion recomputes from data/ rather than from +another quoted value. The manuscript-side assertions are skipped when +main.tex is absent, which is the case in the reproducibility package. +""" import csv import math import re from pathlib import Path base = Path(__file__).resolve().parents[1] -# The manuscript is not part of the reproducibility package, so the -# tex-side assertions are skipped when it is absent and the data-side -# assertions still run. _tex_path = base / "main.tex" HAVE_TEX = _tex_path.exists() tex = _tex_path.read_text(encoding="utf-8") if HAVE_TEX else "" @@ -38,56 +41,100 @@ def chk(label, cond, detail, needs_tex=False): print("headline numbers vs raw data") -# 1.27x key-length ratio +# --- Fig. 2: the proposal is below OMA ------------------------------- +sn = rows("sec_snr.csv") +lg = [float(x["legit"]) for x in sn] +om = [float(x["oma"]) for x in sn] +rel = [(a - b) / b * 100 for a, b in zip(lg, om)] +chk("legit below OMA at every SNR", max(rel) < 0, "max relative %+.2f%%" % max(rel)) +chk("gain 1.3 to 7.9 percent", + round(-max(rel), 1) == 1.3 and round(-min(rel), 1) == 7.9, + "%.2f to %.2f percent" % (-max(rel), -min(rel))) +chk("1.3 and 7.9 in tex", "$1.3$ to\n$7.9$~percent" in tex or "$1.3$ to $7.9$~percent" in tex, + "searched tex", needs_tex=True) +ew = [float(x["eve_wrong"]) for x in sn] +ch = float(sn[0]["chance"]) +chk("outsider at chance to 2e-5", max(abs(x - ch) for x in ew) < 2e-5, + "max deviation %.2e" % max(abs(x - ch) for x in ew)) + +# --- Fig. 3: key-length ratio ---------------------------------------- k = rows("sec_keylen.csv") r64 = [x for x in k if int(x["L"]) == 64][0] ratio = float(r64["oma"]) / float(r64["legit_ser"]) -chk("key-length ratio 1.27", round(ratio, 2) == 1.27, "%.4f" % ratio) -chk("1.27 in tex", tex.count("1.27") >= 2, "%d occurrences" % tex.count("1.27"), needs_tex=True) +chk("key-length ratio 1.52", round(ratio, 2) == 1.52, "%.4f" % ratio) +chk("1.52 in tex", tex.count("1.52") >= 2, "%d occurrences" % tex.count("1.52"), + needs_tex=True) +chk("keys exactly orthogonal in the sweep", + max(float(x["mask_xcorr"]) for x in k) < 1e-6, + "max xcorr %.2e" % max(float(x["mask_xcorr"]) for x in k)) -# blind-jammer gap +# --- Fig. 4: jamming -------------------------------------------------- g = col("sec_jam_gap.csv", "gap_db") -chk("gap 7.4-8.1 dB", round(min(g), 1) == 7.4 and round(max(g), 1) == 8.1, +chk("gap 5.5-6.3 dB", round(min(g), 1) == 5.5 and round(max(g), 1) == 6.3, "%.3f to %.3f" % (min(g), max(g))) -chk("no stale 8.5 dB", "8.5$~dB" not in tex, "searched tex", needs_tex=True) lin = (10 ** (min(g) / 10), 10 ** (max(g) / 10)) -chk("about six times power", lin[0] < 6.5 and lin[1] > 5.5, +chk("about four times power", lin[0] < 4.5 and lin[1] > 3.4, "%.2f to %.2f" % lin) - -# blind vs permutation j = rows("sec_jam_cmp.csv") dmax = max(abs(float(r["blind"]) - float(r["perm_blind"])) for r in j) chk("within 0.002", dmax <= 0.002, "%.5f" % dmax) -chk("no stale 0.0015 in jamming", "$0.0015$ of the proposed" not in tex, "ok", needs_tex=True) +chk("no stale 8.1 dB", "$8.1$~dB" not in tex, "searched tex", needs_tex=True) -# brute force +# --- Fig. 6: brute force --------------------------------------------- b = rows("sec_brute_cmp.csv") sm = float(b[-1]["ser_mask"]) -chk("brute 0.76 both places", tex.count("$0.76$") >= 2, "%.4f measured" % sm, needs_tex=True) -chk("no stale 0.75 in summary", - "$0.75$ after $10^{6}$" not in tex, "summary row", needs_tex=True) +chk("brute 0.59 at 1e6", round(sm, 2) == 0.59, "%.4f" % sm) +chk("0.59 in tex", "$0.59$" in tex, "searched tex", needs_tex=True) +pad0 = next((x["K"] for x in b if float(x["ser_pad"]) < 0.27), None) +chk("index cipher collapses at 65536", pad0 == "65536", str(pad0)) -# refresh -rs = {r["scheme"]: r for r in rows("refresh_summary.csv")} +# --- Fig. 7: known plaintext ----------------------------------------- +kp = rows("kpa.csv") +legit = float([x for x in k if int(x["L"]) == 16][0]["legit_ser"]) +thr = legit * 1.02 +first20 = next((x["n_frames"] for x in kp + if int(x["snr_db"]) == 20 and float(x["eve_ser"]) <= thr), None) +first10 = next((x["n_frames"] for x in kp + if int(x["snr_db"]) == 10 and float(x["eve_ser"]) <= thr), None) +chk("KPA five frames at 20 dB", first20 == "5", "first N = %s" % first20) +chk("KPA twenty-four frames at 10 dB", first10 == "24", "first N = %s" % first10) +pk = rows("pkpa.csv") +p6 = float([x for x in pk if x["n_frames"] == "6"][0]["eve_ser"]) +chk("perm KPA at N=6 near its own 0.258", abs(p6 - 0.258) < 0.005, "%.4f" % p6) + +# --- refresh ---------------------------------------------------------- +rs = {x["scheme"]: x for x in rows("refresh_summary.csv")} chk("refresh 64.8 bits", round(float(rs["Invariant"]["entropy_bits"]), 1) == 64.8, "%.3f" % float(rs["Invariant"]["entropy_bits"])) chk("fixed key 15.0 bits", round(float(rs["None (fixed key)"]["entropy_bits"]), 1) == 15.0, "%.4f" % float(rs["None (fixed key)"]["entropy_bits"])) +chk("invariant refresh free", + abs(float(rs["Invariant"]["legit"]) - float(rs["None (fixed key)"]["legit"])) + < 0.001, "%.4f vs %.4f" % (float(rs["Invariant"]["legit"]), + float(rs["None (fixed key)"]["legit"]))) -# permutation KPA -pk = rows("pkpa.csv") -p6 = float([r for r in pk if r["n_frames"] == "6"][0]["eve_ser"]) -chk("perm KPA at N=6 near 0.303", abs(p6 - 0.303) < 0.005, "%.4f" % p6) +# --- real tokens ------------------------------------------------------ +import json +st = json.loads((base / "data" / "real_sec_stats.json").read_text()) +rec = st["recovery"]["28"] +chk("headline recovery 78 vs 76 percent", + round(rec["legit"] * 100) == 78 and round(rec["oma"] * 100) == 76, + "%.1f vs %.1f" % (rec["legit"] * 100, rec["oma"] * 100)) +chk("legit leads OMA at every point", + all(st["recovery"][s]["legit"] > st["recovery"][s]["oma"] + for s in st["recovery"]), + "checked %d points" % len(st["recovery"])) -# abstract +# --- abstract --------------------------------------------------------- a = (tex.split(r"\begin{abstract}")[1].split(r"\end{abstract}")[0].strip() if HAVE_TEX else "") w = len(re.split(r"\s+", a)) if a else 0 chk("abstract <= 250 words", w <= 250, "%d words" % w, needs_tex=True) chk("abstract has no abbreviations", - not re.findall(r"\b[A-Z]{2,}\b", a), str(re.findall(r"\b[A-Z]{2,}\b", a)), needs_tex=True) + not re.findall(r"\b[A-Z]{2,}\b", a), str(re.findall(r"\b[A-Z]{2,}\b", a)), + needs_tex=True) print() print("ALL CONSISTENT" if ok else "INCONSISTENCIES FOUND") diff --git a/code/exp_full.py b/code/exp_full.py index 11a6c19..f307a04 100644 --- a/code/exp_full.py +++ b/code/exp_full.py @@ -149,9 +149,43 @@ def get_model(P=4, vu=16, d=64, U=4, iters=4000, seed=1, freeze_W=None, tag=""): return m +def base_keys(U: int, Lp: int) -> torch.Tensor: + """The structured key family: U non-constant rows of a Walsh-Hadamard + matrix, truncated to Lp entries. + + Row 0 of the Sylvester construction is the all-ones vector, which any + adversary can write down without searching, so the users take rows + 1..U. The construction exists at power-of-two orders, so for other + key lengths the next power-of-two order is truncated to Lp entries. + That truncation keeps the entries unit modulus and, at every length + the evaluation uses, keeps the rows exactly orthogonal as well; the + measured cross-correlation is reported alongside every sweep point. + Requires U <= Lp - 1 non-constant rows to exist.""" + n = 1 << max(math.ceil(math.log2(max(Lp, U + 1))), 1) + H = hadamard(n) + if H.shape[0] - 1 < U: + raise ValueError(f"key length {Lp} admits only {H.shape[0]-1} " + f"non-constant rows, fewer than U={U}") + return torch.tensor(H[1:U + 1, :Lp].copy(), dtype=torch.float32) + + +def main_model(iters=4000, P=4, vu=16, d=64, U=4): + """The main configuration used by every stage below. + + The keys are frozen to the structured Walsh-Hadamard family rather + than learned. Unconstrained mask training converges to disjoint + sparse supports, that is, to an orthogonal slot allocation, which + collapses the superposition into OMA and leaves the key space far + smaller than a dense direction in R^L. The structured family is + dense, exactly orthogonal, and unit modulus, which is also the + condition the key-refresh invariance argument requires.""" + return get_model(P=P, vu=vu, d=d, U=U, iters=iters, + freeze_W=base_keys(U, d // P)) + + def stage_A(): print("[A] security vs SNR (V=65536) ...") - m = get_model(iters=4000) + m = main_model() snr = [float(v) for v in range(0, 21, 2)] frames = 800_000 legit = eval_ser_sse(m, snr, frames=frames) @@ -226,10 +260,14 @@ def oma_ser_keylen(L, snr_db, bits=16, n_grid=200_000): if bits % L: return float("nan") M = 2 ** (bits // L) + # M-PAM levels +-A, +-3A, ..., +-(M-1)A with unit AVERAGE symbol energy + # give A^2 = 3/(M^2-1), so the distance to the decision boundary is A + # and the Q-function argument is h*sqrt(3*g/(M^2-1)). Using 6 instead + # of 3 would assume an average energy of two per dimension. x = (np.arange(n_grid) + 0.5) / n_grid h = np.sqrt(-np.log(1.0 - x)) g = 10.0 ** (snr_db / 10.0) - arg = np.clip(h * math.sqrt(6.0 * g / (M * M - 1.0)), 0, 38) + arg = np.clip(h * math.sqrt(3.0 * g / (M * M - 1.0)), 0, 38) q = (1.0 - 1.0 / M) * np.array([math.erfc(v / math.sqrt(2.0)) for v in arg]) q = np.clip(q, 0.0, 1.0) @@ -239,8 +277,12 @@ def oma_ser_keylen(L, snr_db, bits=16, n_grid=200_000): def stage_B(): print("[B] key length (dense grid so the curve is smooth) ...") rows = [] - for d in [16, 24, 32, 40, 48, 56, 64, 80, 96, 128, 192, 256]: - m = get_model(d=d, iters=4000) + # L = d/P. Lengths 6, 10 and 14 are dropped because the + # truncated Walsh-Hadamard rows are not exactly orthogonal + # there, and L=4 admits only three non-constant rows for + # U=4 users. + for d in [32, 48, 64, 80, 96, 128, 192, 256]: + m = main_model(d=d) # same structured family as Fig. 2 lg = eval_ser_sse(m, [10.0], frames=500_000)[0] ew = eve_wrong_mask(m.users, m.L, seed=20260813).to(DEVICE) ev = eval_ser_eve(m, ew, [10.0], frames=500_000)[0] @@ -255,7 +297,7 @@ def stage_B(): def stage_C(): print("[C] jamming vs JSR ...") - m = get_model(iters=4000) + m = main_model() jsr = [-10.0, -5.0, 0.0, 5.0, 10.0, 15.0, 20.0] blind = eval_ser_jam(m, 10.0, jsr, frames=500_000, mode="blind", target=0) matched = eval_ser_jam(m, 10.0, jsr, frames=500_000, mode="matched", target=0) @@ -280,7 +322,7 @@ def stage_D(): # Walsh-Hadamard rows (orthogonal). Row 0 of the Sylvester # construction is the all-ones vector, which any adversary can write # down, so it is excluded and the users take rows 1 to U. - Hd = torch.tensor(hadamard(Lp)[1:U + 1], dtype=torch.float32) + Hd = base_keys(U, Lp) # the main configuration's key family fams["hadamard"] = Hd ones = torch.ones(U, Lp) # the cheapest possible guess rows = [] @@ -395,7 +437,7 @@ def stage_E(): attacker can BUILD from public knowledge at JSR 0 dB (matched if the masks are public, blind if the PHY structure is secret).""" print("[E] scheme comparison ...") - m = get_model(iters=4000) + m = main_model() F = 400_000 d = m.P * m.L set_seed(20260813) @@ -506,7 +548,7 @@ def stage_F(): rho_max(K, L) is sampled by Monte Carlo and mapped through the measured sensitivity curve of (i).""" print("[F] attack difficulty ...") - m = get_model(iters=4000) + m = main_model() F = 200_000 true_m = m.masks().detach().cpu() gen = torch.Generator().manual_seed(31) @@ -582,7 +624,7 @@ def stage_I(): unknown pad bits, which stay uniform, are all guessed right. """ print("[I] key sensitivity across schemes ...") - m = get_model(iters=4000) + m = main_model() F = 600_000 # more frames per point for a smooth curve TRIALS_MASK = 12 # independent substitute keys per point d = m.P * m.L @@ -726,7 +768,7 @@ def stage_L(): slot assignment is public and needs no key """ print("[L] jamming across schemes ...") - m = get_model(iters=4000) + m = main_model() F = 300_000 d = m.P * m.L gp = torch.Generator().manual_seed(11) diff --git a/code/exp_kpa.py b/code/exp_kpa.py index dd538c3..9788af0 100644 --- a/code/exp_kpa.py +++ b/code/exp_kpa.py @@ -25,7 +25,7 @@ import torch from sse_lib import (DATA, DEVICE, SSE, rayleigh_gain, snr_to_sigma2, set_seed, write_csv, eval_ser_sse) -from exp_full import get_model, eval_ser_eve +from exp_full import main_model, eval_ser_eve SNRS = [0.0, 10.0, 20.0] NFRAMES = [1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 24, 32, 48, 64] @@ -110,7 +110,7 @@ def key_correlation(est: torch.Tensor, true: torch.Tensor) -> float: def main(): set_seed(SEED) - model = get_model(iters=4000) + model = main_model() model.eval() true_m = model.masks().detach() legit = eval_ser_sse(model, [10.0], frames=200_000)[0] diff --git a/code/exp_permkpa.py b/code/exp_permkpa.py index 0c0d13a..cac6907 100644 --- a/code/exp_permkpa.py +++ b/code/exp_permkpa.py @@ -24,7 +24,7 @@ import numpy as np import torch from sse_lib import write_csv, set_seed, DATA, DEVICE -from exp_full import get_model, eval_scheme_permuted_eve, rayleigh_gain +from exp_full import main_model, eval_scheme_permuted_eve, rayleigh_gain try: from scipy.optimize import linear_sum_assignment @@ -44,12 +44,18 @@ except ImportError: # greedy fallback COLLECT_DB = 20.0 DECODE_DB = 10.0 -TRIALS = 20 -EVAL_FRAMES = 100_000 +# The curve's variance is dominated by WHICH positions the recovered +# permutation gets wrong, not by the SER estimate inside one trial: the +# within-trial standard deviation at 50k frames is 2e-3 while the +# trial-to-trial spread is ~1.6e-2. Averaging over many independent +# collections is therefore what smooths the curve, so trials are raised +# and per-trial frames lowered at roughly constant total cost. +TRIALS = 120 +EVAL_FRAMES = 50_000 def main(): - m = get_model(iters=4000) # training needs grad + m = main_model() # training needs grad m.eval() _run(m) @@ -68,7 +74,7 @@ def _run(m): print(f"[P] permutation known-plaintext, collect {COLLECT_DB:.0f} dB, " f"decode {DECODE_DB:.0f} dB ...") rows = [] - for nf in [1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 24, 32, 48, 64]: + for nf in [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 16, 20, 24, 32, 48, 64]: fr, sr = [], [] for t in range(TRIALS): g = torch.Generator().manual_seed(909 + 1000 * t + nf) diff --git a/code/exp_real_sec.py b/code/exp_real_sec.py index be33794..d95e424 100644 --- a/code/exp_real_sec.py +++ b/code/exp_real_sec.py @@ -29,7 +29,7 @@ import torch import sse_lib as L from sse_lib import (DATA, DEVICE, SSE, rayleigh_gain, snr_to_sigma2, set_seed, write_csv) -from exp_full import get_model, eve_wrong_mask +from exp_full import main_model, eve_wrong_mask SNR_GRID = [0, 4, 8, 12, 16, 20, 24, 28] # headline recovery is meaningful only where the legitimate user clears @@ -136,7 +136,7 @@ def main(): f"distinct tokens, max id {int(ids_all.max())}") # keys and codebook trained on uniform indices, reused unchanged - model = get_model(P=P_MAX, vu=VU, d=64, U=U, iters=4000) + model = main_model(P=P_MAX, vu=VU, d=64, U=U) model.eval() eve_m = eve_wrong_mask(U, model.L, seed=20260813) # outsider diff --git a/code/exp_refresh.py b/code/exp_refresh.py index c508e8e..e817744 100644 --- a/code/exp_refresh.py +++ b/code/exp_refresh.py @@ -45,7 +45,8 @@ import numpy as np import torch from sse_lib import DATA, DEVICE, SSE, write_csv, eval_ser_sse -from exp_full import hadamard, get_model, eval_ser_eve, eve_wrong_mask +from exp_full import (hadamard, get_model, base_keys, eval_ser_eve, + eve_wrong_mask) from exp_kpa import collect_known_plaintext, solve_keys SEED = 5150 @@ -53,13 +54,6 @@ BLOCKS = 24 FRAMES = 300_000 -def base_keys(U: int, Lp: int) -> torch.Tensor: - """The fixed orthogonal key set the codebook is trained around. Row 0 - of the Sylvester construction is the all-ones vector, which any - adversary can write down, so the users take rows 1 to U.""" - return torch.tensor(hadamard(Lp)[1:U + 1], dtype=torch.float32) - - def kdf_invariant(seed: int, block: int, U: int, Lp: int): """Derive one block's key material from the invariance group.""" rng = np.random.default_rng([seed, block]) diff --git a/code/replot_security.py b/code/replot_security.py index edced97..34f6e51 100644 --- a/code/replot_security.py +++ b/code/replot_security.py @@ -11,9 +11,11 @@ Label dictionary is fixed here and copied verbatim into tables and prose. fig_sec_kpa.pdf : eavesdropper SER vs known-plaintext frames (Fig. 7) fig_sec_real.pdf : token error rate on real streams (Fig. 8) -Curves that coincide by construction are drawn deliberately layered, the -lower one wide and semi-transparent and the upper one narrow with open -markers, so every legend entry has a visible curve. +Curves that coincide by construction are drawn deliberately layered: the +lower one wide and semi-transparent, the upper one narrow with open +markers, and their markers staggered to different sample points through +markevery offsets. Marker size is uniform across every figure, so the +stagger, not the size, is what keeps each legend entry visible. """ from __future__ import annotations from pathlib import Path @@ -34,7 +36,7 @@ plt.rcParams.update({ "font.serif": ["DejaVu Serif", "Times New Roman"], "font.size": 9, "axes.labelsize": 9, - "legend.fontsize": 7.4, + "legend.fontsize": 6.6, "xtick.labelsize": 8, "ytick.labelsize": 8, "axes.grid": True, @@ -42,7 +44,7 @@ plt.rcParams.update({ "grid.linewidth": 0.4, "grid.alpha": 0.6, "lines.linewidth": 1.3, - "lines.markersize": 3.4, + "lines.markersize": 4.5, "figure.figsize": (3.15, 2.36), "pdf.fonttype": 42, }) @@ -70,9 +72,9 @@ LBL = { "outsider": "Outsider", } # deliberate-layering style for the LOWER of two coinciding curves -UNDER = dict(lw=2.6, ms=7, alpha=0.85) +UNDER = dict(lw=2.6, alpha=0.85) # thick filled line, layered under # and for the curve riding on top of it -OVER = dict(lw=1.2, ms=4.5, mfc="none") +OVER = dict(lw=1.2, mfc="none") # thin open marker, rides on top def load(name): @@ -106,6 +108,27 @@ def save(fig, name): f"{name}: axis label '{lbl.get_text()}' is clipped " f"(label {b} outside figure {fbox}); shorten the " f"label or widen the margin") + # No curve may pass under the legend box. Reading the code cannot + # reveal this, so the check is made on the rendered geometry, the + # same discipline as the clipping guard above. + leg = ax.get_legend() + if leg is not None: + lb = leg.get_window_extent() + for line in ax.get_lines(): + # full-span reference lines (axhline/axvline) carry axes- + # fraction endpoints [0,1]; they are not data curves and, + # spanning the whole axis, would forbid any bottom legend + xd = list(line.get_xdata()) + if xd == [0, 1] or list(line.get_ydata()) == [0, 1]: + continue + xy = line.get_xydata() + if len(xy) == 0: + continue + for px, py in ax.transData.transform(xy): + if lb.x0 <= px <= lb.x1 and lb.y0 <= py <= lb.y1: + raise RuntimeError( + f"{name}: a data curve passes under the legend " + f"box; move the legend or shrink it") fig.savefig(FIG / f"{name}.pdf") plt.close(fig) print("[OK]", name) @@ -117,11 +140,11 @@ def fig_snr(): fig, ax = plt.subplots() # legitimate and OMA coincide by construction; layered deliberately ax.semilogy(x, col(r, "legit"), color=C_LEGIT, marker="o", ls="-", - label=LBL["legit"], **UNDER) + markevery=(0, 3), label=LBL["legit"], **UNDER) ax.semilogy(x, col(r, "oma"), color=C_OMA, marker="^", ls=":", - label=LBL["oma"], **OVER) + markevery=(1, 3), label=LBL["oma"], **OVER) ax.semilogy(x, col(r, "eve_public"), color=C_PUB, marker="v", - ls="none", markersize=5.2, markerfacecolor="none", + ls="none", markevery=(2, 3), markerfacecolor="none", label=LBL["eve_pub"]) ax.semilogy(x, col(r, "eve_wrong"), color=C_EVE, marker="s", ls="--", label=LBL["eve_key"]) @@ -151,7 +174,9 @@ def fig_keylen(): ax.set_xlabel("Key length $L$") ax.set_ylabel("SER") ax.set_xscale("log", base=2) - ax.legend(loc="center right", bbox_to_anchor=(0.98, 0.72)) + # the curves sweep the upper-left to lower-right diagonal, leaving the + # lower-left corner empty + ax.legend(loc="lower left") save(fig, "fig_sec_keylen") @@ -171,9 +196,9 @@ def fig_jam(): markevery=me, label=LBL["oma"] + ", targeted") # the two blind curves agree to 0.002; deliberate layering ax.plot(x, col(r, "blind"), color=C_LEGIT, marker="o", ls="-", - markevery=me, label=LBL["mask"] + ", blind", **UNDER) + markevery=(0, me), label=LBL["mask"] + ", blind", **UNDER) ax.plot(x, col(r, "perm_blind"), color=C_EVE, marker="s", ls="-.", - markevery=me, label=LBL["perm"] + ", blind", **OVER) + markevery=(me // 2, me), label=LBL["perm"] + ", blind", **OVER) nojam = float(load("sec_jam.csv")[0]["nojam"]) ax.axhline(nojam, color=C_OMA, ls=(0, (1, 3)), lw=0.9) ax.text(max(x) - 0.6, nojam + 0.02, LBL["nojam"], ha="right", @@ -194,11 +219,11 @@ def fig_sens(): x = col(r, "frac") fig, ax = plt.subplots() ax.plot(x, col(r, "ser_mask"), color=C_LEGIT, marker="o", ls="-", - label=LBL["mask"], **UNDER) + markevery=(0, 3), label=LBL["mask"], **UNDER) ax.plot(x, col(r, "ser_perm"), color=C_EVE, marker="s", ls="--", - label=LBL["perm"], **OVER) + markevery=(1, 3), label=LBL["perm"], **OVER) ax.plot(x, col(r, "ser_pad"), color=C_PUB, marker="v", ls="-.", - lw=1.2, ms=4.5, mfc="none", label=LBL["pad"]) + markevery=(2, 3), lw=1.2, mfc="none", label=LBL["pad"]) chance = 1.0 - (1.0 / 16.0) ** 4 ax.axhline(chance, color=C_CH, ls=":", lw=0.9, label=LBL["chance"]) ax.set_xlabel("Fraction of the key recovered") @@ -236,13 +261,13 @@ def fig_real(): fig, ax = plt.subplots() # legitimate/OMA and insider/outsider coincide pairwise; layered ax.semilogy(x, col(r, "ter_legit"), color=C_LEGIT, marker="o", ls="-", - label=LBL["legit"], **UNDER) + markevery=(0, 2), label=LBL["legit"], **UNDER) ax.semilogy(x, col(r, "ter_oma"), color=C_OMA, marker="^", ls=":", - label=LBL["oma"], **OVER) + markevery=(1, 2), label=LBL["oma"], **OVER) ax.semilogy(x, col(r, "ter_insider"), color=C_PUB, marker="v", ls="-.", - lw=2.6, alpha=0.85, ms=7, label=LBL["insider"]) + markevery=(0, 2), lw=2.6, alpha=0.85, label=LBL["insider"]) ax.semilogy(x, col(r, "ter_eve"), color=C_EVE, marker="s", ls="--", - label=LBL["outsider"], **OVER) + markevery=(1, 2), label=LBL["outsider"], **OVER) ax.set_xlabel("SNR (dB)") ax.set_ylabel("TER") ax.set_xlim(min(x), max(x)) @@ -280,7 +305,10 @@ def fig_kpa(): ax.set_xlabel("Known-plaintext frames $N$") ax.set_ylabel("Eavesdropper SER") ax.set_xscale("log", base=2) - ax.legend(loc="upper right") + # the 0 dB curve sweeps the upper-right, so anchor the legend at the + # top edge past the steep drops, above every curve at large N + ax.set_ylim(top=1.18) + ax.legend(loc="upper right", bbox_to_anchor=(1.0, 1.04)) save(fig, "fig_sec_kpa") diff --git a/code/run_remaining.py b/code/run_remaining.py new file mode 100644 index 0000000..ba8dec0 --- /dev/null +++ b/code/run_remaining.py @@ -0,0 +1,28 @@ +"""Run the stages that live outside exp_full, after the main sweep. + +Order matters: exp_refresh trains its own model around the same base keys, +exp_kpa and exp_permkpa attack the main configuration, and exp_real_sec +reuses the main configuration on real token streams. Each writes only CSV. +""" +import runpy +import sys +import time + +STAGES = [ + ("known-plaintext attack", "exp_kpa.py"), + ("permutation known-plaintext attack", "exp_permkpa.py"), + ("key-refresh layer", "exp_refresh.py"), + ("real token streams", "exp_real_sec.py"), +] + +for label, script in STAGES: + print(f"\n{'=' * 60}\n== {label} ({script})\n{'=' * 60}", flush=True) + t0 = time.time() + try: + runpy.run_path(script, run_name="__main__") + except Exception as exc: # keep going, report at end + print(f"[FAIL] {script}: {type(exc).__name__}: {exc}", flush=True) + sys.exit(1) + print(f"[done] {label} in {time.time() - t0:.0f} s", flush=True) + +print("\nall remaining stages complete") diff --git a/data/kpa.csv b/data/kpa.csv index 9a4bdf1..50adcdb 100644 --- a/data/kpa.csv +++ b/data/kpa.csv @@ -1,43 +1,43 @@ snr_db,n_frames,kappa,eve_ser -0,1,0.2374871574,0.99874975 -0,2,0.6126027606,0.96312825 -0,3,0.7285515711,0.921628875 -0,4,0.8244251639,0.85221925 -0,5,0.868628718,0.797125 -0,6,0.8920436099,0.745713875 -0,8,0.9208301157,0.67688775 -0,10,0.9429872826,0.592138625 -0,12,0.9557282105,0.534421875 -0,16,0.9700051412,0.44833975 -0,24,0.9802580416,0.38197025 -0,32,0.9852379695,0.351050875 -0,48,0.9904022858,0.32166525 -0,64,0.993118532,0.307348 -10,1,0.3489475794,0.989224875 -10,2,0.8794977516,0.704872 -10,3,0.9473693997,0.547376875 -10,4,0.9682661489,0.455776875 -10,5,0.9782963678,0.3962285 -10,6,0.9843041778,0.359232 -10,8,0.9900029436,0.326613375 -10,10,0.9934537426,0.306601375 -10,12,0.9949941516,0.2992645 -10,16,0.9965374678,0.291205125 -10,24,0.9978871465,0.285018125 -10,32,0.9984912023,0.28255425 -10,48,0.9990138412,0.280105125 -10,64,0.9992718786,0.279036875 -20,1,0.596763967,0.861350125 -20,2,0.984469898,0.34732075 -20,3,0.9948319912,0.300176375 -20,4,0.9975389287,0.286598125 -20,5,0.9984581739,0.282405125 -20,6,0.9988854468,0.2803655 -20,8,0.9992000297,0.279362875 -20,10,0.9994319767,0.278179625 -20,12,0.9995499209,0.277694875 -20,16,0.9996712342,0.277181875 -20,24,0.9997934118,0.276410875 -20,32,0.999845539,0.2763615 -20,48,0.9999018267,0.276363875 -20,64,0.9999270439,0.276194125 +0,1,0.2506237943,0.998554125 +0,2,0.591645799,0.9303495 +0,3,0.7079962283,0.8537115 +0,4,0.7998725504,0.767802875 +0,5,0.850597313,0.684796 +0,6,0.8767687038,0.6361745 +0,8,0.9171553269,0.520736875 +0,10,0.936547631,0.455442125 +0,12,0.9516445503,0.400028875 +0,16,0.9666089579,0.344806875 +0,24,0.9785378739,0.3075 +0,32,0.9843035683,0.29181625 +0,48,0.989774394,0.27860675 +0,64,0.9924546674,0.272548625 +10,1,0.3695881277,0.986553125 +10,2,0.880338943,0.55928725 +10,3,0.9474378824,0.4139 +10,4,0.9692240357,0.339236625 +10,5,0.9786081538,0.3095635 +10,6,0.9846392065,0.292632375 +10,8,0.9900667578,0.278431375 +10,10,0.9934557095,0.270305 +10,12,0.9948186457,0.267862125 +10,16,0.9963249952,0.264728875 +10,24,0.9976470947,0.26182575 +10,32,0.998370938,0.260598625 +10,48,0.9989489555,0.259409125 +10,64,0.9992221802,0.258898125 +20,1,0.6164694946,0.807168125 +20,2,0.9846389949,0.29904075 +20,3,0.9948147267,0.268233 +20,4,0.9972566783,0.262752625 +20,5,0.9983854383,0.260594375 +20,6,0.9988236457,0.259794 +20,8,0.9991258562,0.259128625 +20,10,0.9993467629,0.258526 +20,12,0.9994955555,0.25809525 +20,16,0.9996308014,0.258118625 +20,24,0.9997742459,0.25761825 +20,32,0.9998249143,0.25777975 +20,48,0.9998879731,0.257699625 +20,64,0.9999218643,0.257602125 diff --git a/data/pkpa.csv b/data/pkpa.csv index 8b67480..238d796 100644 --- a/data/pkpa.csv +++ b/data/pkpa.csv @@ -1,15 +1,17 @@ n_frames,perm_frac,eve_ser -1,0.20234375,0.998977 -2,0.7140625,0.7107255 -3,0.91484375,0.4172725 -4,0.94921875,0.324415 -5,0.9515625,0.340107 -6,0.94765625,0.3034795 -8,0.95625,0.303056 -10,0.95546875,0.3027505 -12,0.94921875,0.3028 -16,0.9546875,0.3036285 -24,0.94921875,0.303151 -32,0.95234375,0.302631 -48,0.95,0.3030415 -64,0.9515625,0.3025125 +1,0.2545572917,0.9990345 +2,0.7299479167,0.8108416667 +3,0.9266927083,0.4801366667 +4,0.9885416667,0.3021165 +5,0.9955729167,0.2737706667 +6,0.9997395833,0.2587145 +7,1,0.2575458333 +8,1,0.2575538333 +10,1,0.2575 +12,1,0.2576706667 +16,1,0.2577931667 +20,1,0.2578143333 +24,1,0.2574975 +32,1,0.2576283333 +48,1,0.2576288333 +64,1,0.2575123333 diff --git a/data/real_sec_stats.json b/data/real_sec_stats.json index 68db78e..136583a 100644 --- a/data/real_sec_stats.json +++ b/data/real_sec_stats.json @@ -10,19 +10,19 @@ "headline_runs": 4, "recovery": { "20": { - "legit": 0.1985369609856263, + "legit": 0.22112422997946612, "eve": 0.0, "insider": 0.0, "oma": 0.19815195071868583 }, "24": { - "legit": 0.5103952772073922, + "legit": 0.5395277207392197, "eve": 0.0, "insider": 0.0, "oma": 0.5160420944558521 }, "28": { - "legit": 0.7630903490759754, + "legit": 0.7804158110882957, "eve": 0.0, "insider": 0.0, "oma": 0.7583418891170431 diff --git a/data/real_sec_ter.csv b/data/real_sec_ter.csv index d40b202..9f02a43 100644 --- a/data/real_sec_ter.csv +++ b/data/real_sec_ter.csv @@ -1,9 +1,9 @@ snr_db,ter_legit,ter_eve,ter_insider,ter_oma -0,0.8937765021,0.9999699976,0.999212437,0.8927576706 -4,0.6685672354,0.9999337447,0.9977085667,0.6680284423 -8,0.3903512281,0.9999224938,0.9958434175,0.3898399372 -12,0.1875025002,0.9999362449,0.9946258201,0.1874349948 -16,0.08110023802,0.9999349948,0.9938970118,0.08109648772 -20,0.03404147332,0.9999337447,0.9936357409,0.03380395432 -24,0.01362108969,0.9999274942,0.9934882291,0.01364484159 -28,0.005464187135,0.9999312445,0.993449476,0.005405432435 +0,0.8789390651,0.9999649972,0.9990586747,0.8927576706 +4,0.6421088687,0.9999537463,0.9975273022,0.6680284423 +8,0.3651042083,0.9999649972,0.9957384091,0.3898399372 +12,0.1726488119,0.9999537463,0.9944920594,0.1874349948 +16,0.07386590927,0.9999337447,0.9938557585,0.08109648772 +20,0.0309237239,0.9999362449,0.9936069886,0.03380395432 +24,0.01248849908,0.9999324946,0.9934769782,0.01364484159 +28,0.004962897032,0.999924994,0.9934394752,0.005405432435 diff --git a/data/sec_brute_cmp.csv b/data/sec_brute_cmp.csv index 033cf91..ed6d503 100644 --- a/data/sec_brute_cmp.csv +++ b/data/sec_brute_cmp.csv @@ -1,15 +1,15 @@ K,ser_mask,ser_perm,ser_pad,best_kappa,best_frac -1,0.9993527855,0.9999542171,0.9999893771,0.1909643153,0.0160546875 -3,0.9977393447,0.9999284847,0.9999681312,0.3326517476,0.0281640625 -10,0.9952796283,0.9998968587,0.9998937706,0.450762326,0.043046875 -30,0.9895360243,0.9998741146,0.9996813118,0.5560672497,0.05375 -100,0.9834025595,0.9998495442,0.998937706,0.6290900875,0.0653125 -300,0.9728417994,0.9998307015,0.996813118,0.688703621,0.0741796875 -1000,0.9568452325,0.9998081233,0.9893770599,0.7427389508,0.0848046875 -3000,0.9366731394,0.9997877864,0.9681311798,0.7822538913,0.094375 -10000,0.9075372546,0.9997705208,0.8937705994,0.8169040678,0.1025 -30000,0.8818766363,0.9997525081,0.6813117981,0.8434367197,0.1109765625 -65536,0.8592861449,0.9997413851,0.303815,0.8592030095,0.1162109375 -100000,0.8443657504,0.9997355745,0.303815,0.8678447033,0.1189453125 -300000,0.802269081,0.9997181429,0.303815,0.8874619916,0.1271484375 -1000000,0.7622180175,0.9997021224,0.303815,0.9034448904,0.1346875 +1,0.9993544844,0.9999768274,0.9999886992,0.1909643153,0.0160546875 +3,0.997243306,0.9999681491,0.9999660976,0.3326517476,0.0281640625 +10,0.9938504211,0.999957483,0.9998869919,0.450762326,0.043046875 +30,0.9845428901,0.9999498125,0.9996609756,0.5560672497,0.05375 +100,0.9739208985,0.999941526,0.9988699188,0.6290900875,0.0653125 +300,0.9540369033,0.9999351712,0.9966097565,0.688703621,0.0741796875 +1000,0.9234069553,0.9999275566,0.9886991882,0.7427389508,0.0848046875 +3000,0.884658701,0.9999206979,0.9660975647,0.7822538913,0.094375 +10000,0.8305012761,0.999914875,0.8869918823,0.8169040678,0.1025 +30000,0.7833179277,0.9999088001,0.660975647,0.8434367197,0.1109765625 +65536,0.7451236968,0.9999050488,0.25939,0.8592030095,0.1162109375 +100000,0.7206406422,0.9999030892,0.25939,0.8678447033,0.1189453125 +300000,0.6546171753,0.9998972103,0.25939,0.8874619916,0.1271484375 +1000000,0.5948033388,0.9998918073,0.25939,0.9034448904,0.1346875 diff --git a/data/sec_compare.csv b/data/sec_compare.csv index d762ce3..212edc8 100644 --- a/data/sec_compare.csv +++ b/data/sec_compare.csv @@ -1,6 +1,6 @@ scheme,legit_ser,eve_out,eve_in,jam0_ser -proposed,0.303585,0.99983,0.99998,0.80612 -public_mask,0.303585,0.303585,0.303585,0.95359 -perm_key,0.303435,0.9999775,0.303435,0.8065225 -index_cipher,0.303585,0.9999847412,0.9999847412,0.95359 +proposed,0.257845,1,0.9999775,0.7719425 +public_mask,0.257845,0.257845,0.257845,0.91675 +perm_key,0.2580675,0.99999,0.2580675,0.7721175 +index_cipher,0.257845,0.9999847412,0.9999847412,0.91675 oma_plain,0.2747696909,0.2747696909,0.2747696909,nan diff --git a/data/sec_jam.csv b/data/sec_jam.csv index 8ab7cfa..eadf12c 100644 --- a/data/sec_jam.csv +++ b/data/sec_jam.csv @@ -1,8 +1,8 @@ jsr_db,blind,matched,nojam --10,0.468186,0.720358,0.302716 --5,0.633112,0.874476,0.302716 -0,0.806548,0.9534,0.302716 -5,0.918778,0.984432,0.302716 -10,0.970874,0.994914,0.302716 -15,0.989928,0.9984,0.302716 -20,0.996858,0.999468,0.302716 +-10,0.41313,0.602758,0.257308 +-5,0.583948,0.79449,0.257308 +0,0.772444,0.917424,0.257308 +5,0.902872,0.97136,0.257308 +10,0.964788,0.990494,0.257308 +15,0.988114,0.99704,0.257308 +20,0.99617,0.999024,0.257308 diff --git a/data/sec_jam_cmp.csv b/data/sec_jam_cmp.csv index ba77a3c..33689b5 100644 --- a/data/sec_jam_cmp.csv +++ b/data/sec_jam_cmp.csv @@ -1,17 +1,17 @@ jsr_db,blind,matched,perm_blind,oma_targeted --10,0.4691233333,0.7203966667,0.4694833333,0.6401244609 --8,0.52954,0.7906333333,0.5275833333,0.7152454705 --6,0.5965433333,0.8503566667,0.59758,0.7840240868 --4,0.6703433333,0.8956333333,0.6699733333,0.8424432091 --2,0.7420833333,0.9283666667,0.7431533333,0.8888838836 -0,0.8070433333,0.9532066667,0.8059933333,0.9237966241 -2,0.8593066667,0.96942,0.85862,0.9488822017 -4,0.9014266667,0.9805533333,0.9025733333,0.9662811712 -6,0.9327633333,0.9872533333,0.9318466667,0.9780307416 -8,0.9549433333,0.9917766667,0.9550866667,0.9858109157 -10,0.9699833333,0.99508,0.9707366667,0.9908905586 -12,0.98118,0.9966966667,0.9804366667,0.9941743502 -14,0.9872866667,0.9979833333,0.9879066667,0.9962827887 -16,0.9922966667,0.99871,0.9921133333,0.9976304229 -18,0.9948766667,0.9992,0.99484,0.9984893291 -20,0.99685,0.9994833333,0.9969366667,0.9990359654 +-10,0.4144466667,0.6026633333,0.4142366667,0.6401244609 +-8,0.47322,0.6827466667,0.4749333333,0.7152454705 +-6,0.5445766667,0.7588666667,0.54569,0.7840240868 +-4,0.6223533333,0.8241966667,0.6225633333,0.8424432091 +-2,0.7009733333,0.8757933333,0.7011833333,0.8888838836 +0,0.7724933333,0.9165966667,0.7720633333,0.9237966241 +2,0.8337533333,0.9441633333,0.8322966667,0.9488822017 +4,0.88268,0.9645966667,0.88304,0.9662811712 +6,0.9196833333,0.97682,0.9193566667,0.9780307416 +8,0.9457333333,0.9852033333,0.9457433333,0.9858109157 +10,0.96429,0.9906933333,0.96467,0.9908905586 +12,0.97734,0.9942133333,0.9765066667,0.9941743502 +14,0.98498,0.9962466667,0.9854933333,0.9962827887 +16,0.9904633333,0.9975066667,0.99042,0.9976304229 +18,0.99391,0.99848,0.99382,0.9984893291 +20,0.99619,0.9990566667,0.9963433333,0.9990359654 diff --git a/data/sec_jam_gap.csv b/data/sec_jam_gap.csv index 971cb50..a30636e 100644 --- a/data/sec_jam_gap.csv +++ b/data/sec_jam_gap.csv @@ -1,201 +1,201 @@ ser,gap_db -0.7203966667,7.395409349 -0.7217858794,7.394580398 -0.7231750921,7.393751447 -0.7245643049,7.392922496 -0.7259535176,7.392093545 -0.7273427303,7.391264594 -0.728731943,7.390435644 -0.7301211558,7.389606693 -0.7315103685,7.388777742 -0.7328995812,7.387948791 -0.734288794,7.38711984 -0.7356780067,7.386290889 -0.7370672194,7.385461939 -0.7384564322,7.384632988 -0.7398456449,7.383804037 -0.7412348576,7.382975086 -0.7426240704,7.383719533 -0.7440132831,7.386932812 -0.7454024958,7.390146092 -0.7467917085,7.393359371 -0.7481809213,7.39657265 -0.749570134,7.39978593 -0.7509593467,7.402999209 -0.7523485595,7.406212489 -0.7537377722,7.409425768 -0.7551269849,7.412639048 -0.7565161977,7.415852327 -0.7579054104,7.419065607 -0.7592946231,7.422278886 -0.7606838358,7.425492166 -0.7620730486,7.428705445 -0.7634622613,7.431918725 -0.764851474,7.435132004 -0.7662406868,7.438345284 -0.7676298995,7.441558563 -0.7690191122,7.444771843 -0.770408325,7.447985122 -0.7717975377,7.451198402 -0.7731867504,7.454411681 -0.7745759631,7.457624961 -0.7759651759,7.46083824 -0.7773543886,7.46405152 -0.7787436013,7.467264799 -0.7801328141,7.470478079 -0.7815220268,7.473691358 -0.7829112395,7.476904638 -0.7843004523,7.480117917 -0.785689665,7.483331197 -0.7870788777,7.486544476 -0.7884680905,7.489757756 -0.7898573032,7.492971035 -0.7912465159,7.493110679 -0.7926357286,7.4893604 -0.7940249414,7.485610121 -0.7954141541,7.481859841 -0.7968033668,7.478109562 -0.7981925796,7.474359282 -0.7995817923,7.470609003 -0.800971005,7.466858724 -0.8023602178,7.463108444 -0.8037494305,7.459358165 -0.8051386432,7.455607885 -0.8065278559,7.451857606 -0.8079170687,7.454642491 -0.8093062814,7.461282924 -0.8106954941,7.467923358 -0.8120847069,7.474563791 -0.8134739196,7.481204225 -0.8148631323,7.487844658 -0.8162523451,7.494485092 -0.8176415578,7.501125525 -0.8190307705,7.507765959 -0.8204199832,7.514406392 -0.821809196,7.521046826 -0.8231984087,7.527687259 -0.8245876214,7.534327693 -0.8259768342,7.540968126 -0.8273660469,7.54760856 -0.8287552596,7.554248993 -0.8301444724,7.560889427 -0.8315336851,7.567529861 -0.8329228978,7.574170294 -0.8343121106,7.580810728 -0.8357013233,7.587451161 -0.837090536,7.594091595 -0.8384797487,7.600732028 -0.8398689615,7.607372462 -0.8412581742,7.614012895 -0.8426473869,7.620653329 -0.8440365997,7.627293762 -0.8454258124,7.633934196 -0.8468150251,7.640574629 -0.8482042379,7.647215063 -0.8495934506,7.653855496 -0.8509826633,7.653807084 -0.852371876,7.645603621 -0.8537610888,7.637400158 -0.8551503015,7.629196695 -0.8565395142,7.620993232 -0.857928727,7.612789769 -0.8593179397,7.604690194 -0.8607071524,7.609289208 -0.8620963652,7.613888221 -0.8634855779,7.618487234 -0.8648747906,7.623086248 -0.8662640034,7.627685261 -0.8676532161,7.632284274 -0.8690424288,7.636883288 -0.8704316415,7.641482301 -0.8718208543,7.646081314 -0.873210067,7.650680328 -0.8745992797,7.655279341 -0.8759884925,7.659878354 -0.8773777052,7.664477367 -0.8787669179,7.669076381 -0.8801561307,7.673675394 -0.8815453434,7.678274407 -0.8829345561,7.682873421 -0.8843237688,7.687472434 -0.8857129816,7.692071447 -0.8871021943,7.696670461 -0.888491407,7.701269474 -0.8898806198,7.705868487 -0.8912698325,7.7104675 -0.8926590452,7.715066514 -0.894048258,7.719665527 -0.8954374707,7.72426454 -0.8968266834,7.708663797 -0.8982158961,7.689747699 -0.8996051089,7.670831601 -0.9009943216,7.651915503 -0.9023835343,7.648634256 -0.9037727471,7.652417362 -0.9051619598,7.656200468 -0.9065511725,7.659983574 -0.9079403853,7.66376668 -0.909329598,7.667549785 -0.9107188107,7.671332891 -0.9121080235,7.675115997 -0.9134972362,7.678899103 -0.9148864489,7.682682209 -0.9162756616,7.686465314 -0.9176648744,7.69024842 -0.9190540871,7.694031526 -0.9204432998,7.697814632 -0.9218325126,7.701597738 -0.9232217253,7.705380843 -0.924610938,7.709163949 -0.9260001508,7.712947055 -0.9273893635,7.716730161 -0.9287785762,7.712515836 -0.9301677889,7.68932668 -0.9315570017,7.666137524 -0.9329462144,7.647766978 -0.9343354271,7.661181255 -0.9357246399,7.674595531 -0.9371138526,7.688009808 -0.9385030653,7.701424084 -0.9398922781,7.714838361 -0.9412814908,7.728252637 -0.9426707035,7.741666914 -0.9440599162,7.75508119 -0.945449129,7.768495467 -0.9468383417,7.781909743 -0.9482275544,7.79532402 -0.9496167672,7.808738296 -0.9510059799,7.822152572 -0.9523951926,7.835566849 -0.9537844054,7.82423082 -0.9551736181,7.787989163 -0.9565628308,7.801358196 -0.9579520436,7.814727229 -0.9593412563,7.828096263 -0.960730469,7.841465296 -0.9621196817,7.85483433 -0.9635088945,7.868203363 -0.9648981072,7.881572397 -0.9662873199,7.89494143 -0.9676765327,7.908310464 -0.9690657454,7.921679497 -0.9704549581,7.898323164 -0.9718441709,7.896911546 -0.9732333836,7.895499928 -0.9746225963,7.894088311 -0.976011809,7.892676693 -0.9774010218,7.891265075 -0.9787902345,7.889853457 -0.9801794472,7.888441839 -0.98156866,7.824207805 -0.9829578727,7.864499773 -0.9843470854,7.904791741 -0.9857362982,7.945083709 -0.9871255109,7.985375677 -0.9885147236,7.932516304 -0.9899039363,7.872849328 -0.9912931491,7.813182351 -0.9926823618,7.750636227 -0.9940715745,7.986447804 -0.9954607873,8.12093709 -0.99685,7.761658031 +0.6026633333,5.493678481 +0.6046408543,5.495143167 +0.6066183752,5.496607853 +0.6085958961,5.498072538 +0.6105734171,5.499537224 +0.612550938,5.50100191 +0.614528459,5.502466596 +0.6165059799,5.503931281 +0.6184835008,5.505395967 +0.6204610218,5.506860653 +0.6224385427,5.508301835 +0.6244160637,5.509221054 +0.6263935846,5.510140274 +0.6283711055,5.511059493 +0.6303486265,5.511978713 +0.6323261474,5.512897932 +0.6343036683,5.513817151 +0.6362811893,5.514736371 +0.6382587102,5.51565559 +0.6402362312,5.516574809 +0.6422137521,5.517494029 +0.644191273,5.518413248 +0.646168794,5.519332468 +0.6481463149,5.520251687 +0.6501238358,5.521170906 +0.6521013568,5.522090126 +0.6540788777,5.523009345 +0.6560563987,5.523928564 +0.6580339196,5.524847784 +0.6600114405,5.525767003 +0.6619889615,5.526686223 +0.6639664824,5.527605442 +0.6659440034,5.528524661 +0.6679215243,5.529443881 +0.6698990452,5.5303631 +0.6718765662,5.53128232 +0.6738540871,5.532201539 +0.675831608,5.533120758 +0.677809129,5.534039978 +0.6797866499,5.534959197 +0.6817641709,5.535878416 +0.6837416918,5.535503786 +0.6857192127,5.533851599 +0.6876967337,5.532199412 +0.6896742546,5.530547225 +0.6916517755,5.528895037 +0.6936292965,5.52724285 +0.6956068174,5.525590663 +0.6975843384,5.523938475 +0.6995618593,5.522286288 +0.7015393802,5.522063588 +0.7035169012,5.525405405 +0.7054944221,5.528747221 +0.707471943,5.532089038 +0.709449464,5.535430855 +0.7114269849,5.538772672 +0.7134045059,5.542114488 +0.7153820268,5.545456305 +0.7173595477,5.548798122 +0.7193370687,5.552139939 +0.7213145896,5.555481755 +0.7232921106,5.558823572 +0.7252696315,5.562165389 +0.7272471524,5.565507206 +0.7292246734,5.568849022 +0.7312021943,5.572190839 +0.7331797152,5.575532656 +0.7351572362,5.578874473 +0.7371347571,5.582216289 +0.7391122781,5.585558106 +0.741089799,5.588899923 +0.7430673199,5.59224174 +0.7450448409,5.595583557 +0.7470223618,5.598925373 +0.7489998827,5.60226719 +0.7509774037,5.605609007 +0.7529549246,5.608950824 +0.7549324456,5.61229264 +0.7569099665,5.615634457 +0.7588874874,5.618885922 +0.7608650084,5.613646281 +0.7628425293,5.608406639 +0.7648200503,5.603166998 +0.7667975712,5.597927356 +0.7687750921,5.592687715 +0.7707526131,5.587448073 +0.772730134,5.583317494 +0.7747076549,5.587339621 +0.7766851759,5.591361749 +0.7786626968,5.595383876 +0.7806402178,5.599406004 +0.7826177387,5.603428132 +0.7845952596,5.607450259 +0.7865727806,5.611472387 +0.7885503015,5.615494514 +0.7905278224,5.619516642 +0.7925053434,5.62353877 +0.7944828643,5.627560897 +0.7964603853,5.631583025 +0.7984379062,5.635605152 +0.8004154271,5.63962728 +0.8023929481,5.643649408 +0.804370469,5.647671535 +0.8063479899,5.651693663 +0.8083255109,5.65571579 +0.8103030318,5.659737918 +0.8122805528,5.663760046 +0.8142580737,5.667782173 +0.8162355946,5.671804301 +0.8182131156,5.675826428 +0.8201906365,5.679848556 +0.8221681575,5.683870684 +0.8241456784,5.687892811 +0.8261231993,5.676216805 +0.8281007203,5.664125326 +0.8300782412,5.652033848 +0.8320557621,5.639942369 +0.8340332831,5.630154814 +0.836010804,5.634337883 +0.837988325,5.638520953 +0.8399658459,5.642704022 +0.8419433668,5.646887091 +0.8439208878,5.651070161 +0.8458984087,5.65525323 +0.8478759296,5.6594363 +0.8498534506,5.663619369 +0.8518309715,5.667802439 +0.8538084925,5.671985508 +0.8557860134,5.676168577 +0.8577635343,5.680351647 +0.8597410553,5.684534716 +0.8617185762,5.688717786 +0.8636960972,5.692900855 +0.8656736181,5.697083925 +0.867651139,5.701266994 +0.86962866,5.705450063 +0.8716061809,5.709633133 +0.8735837018,5.713816202 +0.8755612228,5.717999272 +0.8775387437,5.704285934 +0.8795162647,5.688192672 +0.8814937856,5.67209941 +0.8834713065,5.666428984 +0.8854488275,5.676382997 +0.8874263484,5.68633701 +0.8894038693,5.696291023 +0.8913813903,5.706245035 +0.8933589112,5.716199048 +0.8953364322,5.726153061 +0.8973139531,5.736107074 +0.899291474,5.746061086 +0.901268995,5.756015099 +0.9032465159,5.765969112 +0.9052240369,5.775923124 +0.9072015578,5.785877137 +0.9091790787,5.79583115 +0.9111565997,5.805785163 +0.9131341206,5.815739175 +0.9151116415,5.825693188 +0.9170891625,5.824055924 +0.9190666834,5.787467425 +0.9210442044,5.781806417 +0.9230217253,5.790159547 +0.9249992462,5.798512677 +0.9269767672,5.806865807 +0.9289542881,5.815218937 +0.930931809,5.823572067 +0.93290933,5.831925197 +0.9348868509,5.840278327 +0.9368643719,5.848631457 +0.9388418928,5.856984587 +0.9408194137,5.865337718 +0.9427969347,5.873690848 +0.9447744556,5.866565539 +0.9467519765,5.856412766 +0.9487294975,5.875987642 +0.9507070184,5.895562519 +0.9526845394,5.915137396 +0.9546620603,5.934712273 +0.9566395812,5.95428715 +0.9586171022,5.973862027 +0.9605946231,5.993436904 +0.9625721441,6.013011781 +0.964549665,6.044395891 +0.9665271859,6.026989308 +0.9685047069,6.00649273 +0.9704822278,5.985996153 +0.9724597487,5.965499576 +0.9744372697,5.945002998 +0.9764147906,5.924506421 +0.9783923116,5.900370081 +0.9803698325,5.94627134 +0.9823473534,5.9921726 +0.9843248744,6.038073859 +0.9863023953,6.081945759 +0.9882799162,6.082821636 +0.9902574372,6.083697512 +0.9922349581,6.152098946 +0.9942124791,6.265817892 +0.99619,6.055737705 diff --git a/data/sec_keylen.csv b/data/sec_keylen.csv index ac68c79..db10306 100644 --- a/data/sec_keylen.csv +++ b/data/sec_keylen.csv @@ -1,13 +1,9 @@ L,d,legit_ser,eve_ser,mask_xcorr,oma -4,16,0.9997925,0.999963,0.01188752614,0.961963405 -6,24,0.9921175,0.9996935,0.09415384382,nan -8,32,0.9297855,0.999972,0.007307400461,0.4769767714 -10,40,0.6965535,0.9999585,0.006223429926,nan -12,48,0.416604,0.999781,0.005153660662,nan -14,56,0.3323575,0.999695,0.005685989745,nan -16,64,0.2762895,0.9999285,0.007116591092,0.2747696909 -20,80,0.2076175,0.9996245,0.003162040841,0.2289444229 -24,96,0.1829615,0.999975,0.002973971656,0.1961714033 -32,128,0.131901,0.9998895,0.005575809628,0.1524639978 -48,192,0.090206,0.999845,0.005743456539,0.1054308944 -64,256,0.0635265,0.9997915,0.006678360514,0.08056383667 +8,32,0.948557,0.997348,0,0.6849191155 +12,48,0.413714,0.999937,0,nan +16,64,0.257299,0.9999905,0,0.2747696909 +20,80,0.1874125,0.9998835,0,0.2289444229 +24,96,0.1522385,0.99938,0,0.1961714033 +32,128,0.107608,0.9997135,0,0.1524639978 +48,192,0.0719285,0.9897345,0,0.1054308944 +64,256,0.0530375,0.9997025,0,0.08056383667 diff --git a/data/sec_sens_cmp.csv b/data/sec_sens_cmp.csv index e41d746..cd87b87 100644 --- a/data/sec_sens_cmp.csv +++ b/data/sec_sens_cmp.csv @@ -1,14 +1,14 @@ frac,ser_mask,ser_perm,ser_pad -0,0.9999779167,0.9999883333,0.9999893771 -0.2,0.9997833333,0.9995633333,0.9999023796 -0.4,0.9984945833,0.9950233333,0.9991029086 -0.6,0.9915358333,0.9543866667,0.9917561005 -0.75,0.9643629167,0.8802716667,0.9564884375 -0.85,0.8872583333,0.727755,0.8680976078 -0.9,0.7787070833,0.5709983333,0.7703445963 -0.92,0.7202866667,0.502115,0.7133141438 -0.94,0.6145370833,0.4848966667,0.6421212878 -0.955,0.52254125,0.4416266667,0.5773478672 -0.97,0.4333570833,0.3520316667,0.5008509328 -0.985,0.3505958333,0.30335,0.4105086147 -1,0.2758220833,0.303165,0.303815 +0,0.9999758333,0.9999883333,0.9999886992 +0.2,0.9998233333,0.999845,0.9998961502 +0.4,0.998725,0.9983133333,0.9990456633 +0.6,0.98967125,0.9839833333,0.9912300403 +0.75,0.9379629167,0.9079,0.953711875 +0.85,0.7883508333,0.75701,0.8596806442 +0.9,0.6134920833,0.5836283333,0.7556898116 +0.92,0.5265704167,0.5003716667,0.6950201284 +0.94,0.43973,0.456195,0.6192843094 +0.955,0.3805966667,0.3946716667,0.5503775633 +0.97,0.3297841667,0.3282283333,0.4689992019 +0.985,0.2895645833,0.2584466667,0.3728919542 +1,0.2575758333,0.2577083333,0.25939 diff --git a/data/sec_snr.csv b/data/sec_snr.csv index 675fbcf..20efc06 100644 --- a/data/sec_snr.csv +++ b/data/sec_snr.csv @@ -1,12 +1,12 @@ snr_db,legit,eve_wrong,eve_none,eve_public,oma,chance -0,0.8944596875,0.9999621875,0.999988125,0.8945528125,0.8933480658,0.9999847412 -2,0.79877875,0.9999559375,0.999986875,0.798940625,0.7973276257,0.9999847412 -4,0.6697890625,0.9999446875,0.99998625,0.6702265625,0.6686275787,0.9999847412 -6,0.5269903125,0.999944375,0.99999125,0.5272609375,0.525415822,0.9999847412 -8,0.39087,0.9999415625,0.999988125,0.39062875,0.3892153151,0.9999847412 -10,0.2760796875,0.9999296875,0.999986875,0.2753090625,0.2747696909,0.9999847412 -12,0.1876809375,0.9999203125,0.9999884375,0.1878209375,0.1870712987,0.9999847412 -14,0.1250471875,0.999920625,0.9999896875,0.12470875,0.1241256148,0.9999847412 -16,0.0812634375,0.9999153125,0.999985625,0.08121,0.08092517452,0.9999847412 -18,0.05243375,0.9999090625,0.9999865625,0.0526228125,0.05214810026,0.9999847412 -20,0.0335228125,0.9999196875,0.999988125,0.033636875,0.03334949917,0.9999847412 +0,0.8821684375,0.999989375,0.9999803125,0.8819953125,0.8933480658,0.9999847412 +2,0.779363125,0.99999125,0.999980625,0.7794809375,0.7973276257,0.9999847412 +4,0.6455015625,0.9999884375,0.9999809375,0.64627375,0.6686275787,0.9999847412 +6,0.5016365625,0.9999903125,0.99998,0.5016371875,0.525415822,0.9999847412 +8,0.3675334375,0.999989375,0.9999775,0.3677109375,0.3892153151,0.9999847412 +10,0.2576425,0.99999375,0.999970625,0.2569871875,0.2747696909,0.9999847412 +12,0.1741078125,0.99999,0.9999703125,0.17413125,0.1870712987,0.9999847412 +14,0.115345,0.9999853125,0.999966875,0.1151475,0.1241256148,0.9999847412 +16,0.0748184375,0.9999846875,0.9999675,0.0747059375,0.08092517452,0.9999847412 +18,0.0480371875,0.9999884375,0.9999575,0.0481878125,0.05214810026,0.9999847412 +20,0.030745,0.99998875,0.9999559375,0.0308409375,0.03334949917,0.9999847412 diff --git a/fig/fig_sec_brute.pdf b/fig/fig_sec_brute.pdf index 46d2b3be98e8807fda9319e9c3980066b0f19e2b..de2f3f8e146cb694c3ad3d802eea6f59156819f1 100644 GIT binary patch delta 3936 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 delta 3993 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 diff --git a/fig/fig_sec_jam.pdf b/fig/fig_sec_jam.pdf index ea0bd01b3721477e80bcaed828f33c4e92b1f667..8aee6f190c0ade9d37b040e71f1f783e8abb2955 100644 GIT binary patch delta 3651 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 delta 3766 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 delta 3419 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 Q2SkCFT)TpBN>kp@qB6O#&&WsvNV^%d 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 delta 29001 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 sP_XSAMIaFP9Xd1;yW`hTDE#)&NDP(_4xBKN zWRF62@hT}I%lFb0FIv8O&-u=IKfd$bbM8I&KKHr5=Xrj2w3Pc^8Fy7G7ibzJT_-vh zew`=%oh~AZSF$A|RmR#Xz%tWzj+%cexyZfzH0v00aQdZBFJIKe>j}p$Oc0`B`>(RW zX)nRb=7t{|sL&06=ht^nG)Yx1);&g1t!39Zy09;zC!DjaAFOgNqW@Ya5}#?z47Y#o z2^^c4DZeKR!sGA6m-}da<^g-pQ|mMmN)jI-|I|-3)nMDx5_s6lk5W3K%2<*m-QP-V z-ub%a3w>`C+yjYdK0jUVJUUt<&T~JfP+M?Q*KVcovB!h&WxcCTIv%b-ZjRRdShgCH`Z8?Hz;3~ zqWfA~SiP=&RJOusah)ZW_QyuM$YN()LoBK8L4v=3g1Y{l=?-1nnMCT5k8kZ?$iFq= zlM$<)EAXnpC}=8b(W&?OY2!@7QP0MOssdF7yS>w4U=e*8c{_&EgIrtUlx88v1}R-; z-3?BfieAG$ZgY3czf6MFbCL?CwLl2D|I4JVZmyH-P=Ed+egmZY!0Z_xQ}by-PeLpP z%Elj#_vlRcI95{PP`OI{O5WK*b(TR#YZ4>RcNmB}2zx2P2AtL2NT5&RKMj)jEF9ZB z>X8rE7)NQc&JMy)4E`Kfe$#!bZ$lPU$XON4xXs`0>YxGqam7kKbL; z5nW4&skx=hCd-^qzUy3klk)LGV`tgtG<%{M7udI%c#>}e29`mUro% zlV{45h$^M^nzDS8UiSk=ql*k4Q74`|5cc#ZCKeO%Zp!lT{d=I&x9p*PSQBBT>_Ag~ z69reW{ril*N47l-)g2c#i8z9ohGe3j<#2O_Z_iE)8K(p-QZ5Hn;`juOa_CoyH=w^C zpcuX%xAHg|{9=J>?LWR!(-<3^tYo(aFU~*kRT{sUXPcLuFWi;&O4G#DrY*K6ICVf| zg~n%mr1n_)rD-X1BC_(stg&mJpLNDJh+L z)>+AKt%}Fp6?=c0!FOWQ&9dldli)XWV}hVFysYrdekyjdlR=ybKj{6zX7biOV~~S$ zsmU$lD#_}<9L|Zm350cAV$pc!2TwMSy!BTIMC_|KcYB!ePB|lkid@^$Gf3OEK9Vc_ zNjXENc9{)f=&5-o>D(CHO8S=fOv_yU6YsFZ(#1z6Cl@UwB#cuzxNB4J=VUJd*^Ji( zXCy8d!p@jpPf1XjjqQEcRO5Yy>;vvM4Wh?Ks(QeXid{nR%okD#bodo10eEdSH0P3M z=Q$0pmD{IJF``F`frED=a$=}ll{f+45^TAdtlU`Q`%{;ZnHlYcscsXo9b)?+4yBIZguh5e8M|gFm40i3UVoMrSl;>kY*J3WvDZ!iz}lBy zE`_}!R}2I&UDgHy3moO*!(fJ~!QSIy+ouZXrZY)bLTbxwt)|QpsMN~kB5i{pu1L(4 z)5le?nOo1?TKOdA`==A*Z)xf2l)>VCK20$<%d{OIV^jJRmRM6}6{t!0hU25?&^94Q zchwv4%n*vq{Mn)3!;MUa@$aHAg;VZTX2ZFbDPl&c>v-49ZvBF1YhW-hPmFO~yl#7E z;>YIJWBH}G6Oxe&QilV?Kj6Afx1Yru9~;uSiS#h_nDw&><%RRUl;nexuJq=JSPrBu zz;ebCXreh;5w=mCnaY&f&^eZ7!}liGdcKjF^sC2az-eJ*U#;}2wq`7heKLzFd<_b< zsVta&Ute{Xyy`uw2BwJB>Yj=PiL_++dsgd5o4DAI5`8ZP80_LRNkUMWitKSe<+e>I zG+;lkye5Ph(UO`R9n34?`XY#jy!^09!y*kKU6|RLI-r)M%Q#|W56`Cpk3fD$A{OIdh>uT!Fx|lpUAjwN5fpzz>d^Fe6@w5{!jQ0pGy)jIc_$2nW z*}=rNA8J3_%fHYbc3!kf*1d}a9YAHD?xAtZH$}bQLj%*Z;cx|dp!ebQ3juJs?&s3f zXpvlo%Eks5h>7WILr-P4Ii1;9vF>gTVrsn4t7Rs$hCEWQmk(7ASWc=2NBG>C>xNW& zkwbZA=N5qHy1Mm;K64bCz<>z!Nu$a`7JMAkcZ<@U4?1K5~w|B2@5iWO~{x145f->xvq z81(5=?kBV7?(92sA+sPZ{rp=8f9wraByr3>jv?0JHgnkPT2*v^xly+Wizlc~Z*uvf}Dvt@PG&;(}NN8sUG*8-fKe*lJ72X0$9(4UbU$ zwftu~B2XsoexAWz2n+x~=!5BU;1!ytSQJ7~Z#(bEVcYmU!t9#Ql7w{N&C^3x79H|c zw8+i<{%+xA2jBL!Xxaf9lq1;^#YNPYe!t;08hfJ?|2Iku-IK11c0;~!xMJ;!(vF7oq4esJpON8@E=XUV$=zQ z9l}^NiMX>M8mmqKcJiu(*Gk`Kgaa12`gaHxW(RX$HXI(K{1ku>f%w j504}4`b`|3xYIO1Q0FG$=y90_5E34MAd&j!29SRP20&GR diff --git a/fig/fig_sec_sens.pdf b/fig/fig_sec_sens.pdf index fe00e6e2c95a59b0c2a2ff2d0824d73bc290540c..e5cb4b447f7bdaba9d88a20a2e3ddfeb1f56875e 100644 GIT binary patch literal 30205 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 diff --git a/fig/fig_sec_snr.pdf b/fig/fig_sec_snr.pdf index a4b803ac686587dafe34757af57527d6dce12de5..70fc83b9d8bf49d57087b25cd1102c317788120d 100644 GIT binary patch delta 3208 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 QFAfIR0w^jP+n50U1IMuKF#rGn