Main configuration d=256, L=64: all data, figures and checks re-run
Every OMA reference takes the L/16 combining gain so the comparison stays resource matched, four hardcoded copies of the configuration are replaced by MAIN_D or the main curve, and stage_J's K-by-L Gaussian draw becomes its exact scalar Beta equivalent.
This commit is contained in:
+47
-27
@@ -47,15 +47,24 @@ 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,
|
||||
chk("gain 24 to 35 percent",
|
||||
round(-max(rel)) == 24 and round(-min(rel)) == 35,
|
||||
"%.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,
|
||||
chk("24 and 35 in tex", "$24$ to\n$35$~percent" in tex or "$24$ to $35$~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))
|
||||
dev = max(abs(x - ch) for x in ew)
|
||||
chk("outsider at chance to 3.5e-4", dev < 3.6e-4, "max deviation %.2e" % dev)
|
||||
chk("3.5e-4 in tex", "$3.5\\times10^{-4}$" in tex, "searched tex",
|
||||
needs_tex=True)
|
||||
|
||||
# the main configuration's legitimate rate, the reference every later
|
||||
# assertion compares against; taken from the curve the main
|
||||
# configuration produced rather than looked up by key length
|
||||
MAIN_LEGIT = [float(x["legit"]) for x in sn if float(x["snr_db"]) == 10][0]
|
||||
chk("main legitimate 0.053", round(MAIN_LEGIT, 3) == 0.053,
|
||||
"%.4f" % MAIN_LEGIT)
|
||||
|
||||
# --- Fig. 3: key-length ratio ----------------------------------------
|
||||
k = rows("sec_keylen.csv")
|
||||
@@ -70,11 +79,10 @@ chk("keys exactly orthogonal in the sweep",
|
||||
|
||||
# --- Fig. 4: jamming --------------------------------------------------
|
||||
g = col("sec_jam_gap.csv", "gap_db")
|
||||
chk("gap 5.5-6.3 dB", round(min(g), 1) == 5.5 and round(max(g), 1) == 6.3,
|
||||
chk("gap 10.1-11.1 dB", round(min(g), 1) == 10.1 and round(max(g), 1) == 11.1,
|
||||
"%.3f to %.3f" % (min(g), max(g)))
|
||||
lin = (10 ** (min(g) / 10), 10 ** (max(g) / 10))
|
||||
chk("about four times power", lin[0] < 4.5 and lin[1] > 3.4,
|
||||
"%.2f to %.2f" % lin)
|
||||
chk("more than ten times power", lin[0] > 10.0, "%.2f to %.2f" % lin)
|
||||
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)
|
||||
@@ -83,32 +91,40 @@ chk("no stale 8.1 dB", "$8.1$~dB" not in tex, "searched tex", needs_tex=True)
|
||||
# --- Fig. 6: brute force ---------------------------------------------
|
||||
b = rows("sec_brute_cmp.csv")
|
||||
sm = float(b[-1]["ser_mask"])
|
||||
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("brute 0.67 at 1e6", round(sm, 2) == 0.67, "%.4f" % sm)
|
||||
chk("0.67 in tex", "$0.67$" in tex, "searched tex", needs_tex=True)
|
||||
closed = (ch - sm) / (ch - MAIN_LEGIT)
|
||||
chk("brute closes about a third", 0.30 < closed < 0.40, "%.3f" % closed)
|
||||
bf = float(b[-1]["best_frac"]) * 100
|
||||
chk("permutation 3.4 percent of positions", round(bf, 1) == 3.4, "%.2f" % bf)
|
||||
pad0 = next((x["K"] for x in b if float(x["ser_pad"]) < 0.1), None)
|
||||
chk("index cipher collapses at 65536", pad0 == "65536", str(pad0))
|
||||
|
||||
# --- Fig. 7: known plaintext -----------------------------------------
|
||||
kp = rows("kpa.csv")
|
||||
legit = float([x for x in k if int(x["L"]) == 16][0]["legit_ser"])
|
||||
legit = MAIN_LEGIT
|
||||
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)
|
||||
chk("KPA three frames at 20 dB", first20 == "3", "first N = %s" % first20)
|
||||
chk("KPA ten frames at 10 dB", first10 == "10", "first N = %s" % first10)
|
||||
kp0 = [x for x in kp if int(x["snr_db"]) == 0]
|
||||
w0 = float(kp0[-1]["eve_ser"]) / legit
|
||||
chk("0 dB no longer holds", w0 < 1.03, "64 frames reach %.3f of legitimate" % w0)
|
||||
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)
|
||||
chk("perm KPA at N=6 near its own legitimate",
|
||||
abs(p6 - MAIN_LEGIT) < 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,
|
||||
chk("refresh 364.6 bits",
|
||||
round(float(rs["Invariant"]["entropy_bits"]), 1) == 364.6,
|
||||
"%.3f" % float(rs["Invariant"]["entropy_bits"]))
|
||||
chk("fixed key 15.0 bits",
|
||||
round(float(rs["None (fixed key)"]["entropy_bits"]), 1) == 15.0,
|
||||
chk("fixed key 23.8 bits",
|
||||
round(float(rs["None (fixed key)"]["entropy_bits"]), 1) == 23.8,
|
||||
"%.4f" % float(rs["None (fixed key)"]["entropy_bits"]))
|
||||
chk("invariant refresh free",
|
||||
abs(float(rs["Invariant"]["legit"]) - float(rs["None (fixed key)"]["legit"]))
|
||||
@@ -119,8 +135,8 @@ chk("invariant refresh free",
|
||||
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,
|
||||
chk("headline recovery 96 vs 93 percent",
|
||||
round(rec["legit"] * 100) == 96 and round(rec["oma"] * 100) == 93,
|
||||
"%.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"]
|
||||
@@ -137,19 +153,23 @@ chk("L=8 crowding, proposal behind OMA",
|
||||
chk("0.949 and 0.685 in tex", "0.949" in tex and "0.685" in tex,
|
||||
"searched tex", needs_tex=True)
|
||||
|
||||
# the Fig. 2 inset plots this ratio, so its stated span must hold
|
||||
# the OMA-to-proposed ratio the narration quotes
|
||||
sr = rows("sec_snr.csv")
|
||||
rt = [float(r["oma"]) / float(r["legit"]) for r in sr]
|
||||
chk("inset ratio spans 1.01 to 1.09", 1.005 < min(rt) and max(rt) < 1.095,
|
||||
"%.3f to %.3f" % (min(rt), max(rt)))
|
||||
chk("ratio spans 1.32 to 1.54", round(min(rt), 2) == 1.32
|
||||
and round(max(rt), 2) == 1.54, "%.3f to %.3f" % (min(rt), max(rt)))
|
||||
|
||||
# the three secrets named in the setup
|
||||
chk("secret sizes UL=64, perm 64, pad 16",
|
||||
all(t in tex for t in ["$UL=64$ key entries",
|
||||
"one permutation of $64$ positions",
|
||||
chk("secret sizes UL=256, perm 256, pad 16",
|
||||
all(t in tex for t in ["$UL=256$ key entries",
|
||||
"one permutation of $256$ positions",
|
||||
"$16$ pad\nbits per user"]),
|
||||
"searched tex", needs_tex=True)
|
||||
|
||||
chk("no stale d=64 configuration in tex",
|
||||
"$d=64$ real dimensions" not in tex and "$d/U=16$" not in tex,
|
||||
"searched tex", needs_tex=True)
|
||||
|
||||
# Fig. 5 shows the permutation curve tracking the mask curve
|
||||
sc = rows("sec_sens_cmp.csv")
|
||||
dv = max(abs(float(r["ser_mask"]) - float(r["ser_perm"])) for r in sc)
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Where does the legitimate advantage over OMA go?
|
||||
|
||||
An ideal M-ary receiver at the main configuration should reach 0.199 at
|
||||
10 dB against the 0.275 of resource-matched OMA, a factor of 1.38, while
|
||||
the system measures 0.257, a factor of 1.07. This script splits the
|
||||
shortfall into its two causes: residual multi-user interference, which
|
||||
orthogonal keys do not remove because masking is elementwise, and the
|
||||
distance the trained unit codebook falls short of an orthogonal set.
|
||||
The legitimate curve sits above the single-user M-ary bound, and this
|
||||
script splits the distance into its two possible causes: residual
|
||||
multi-user interference, which orthogonal keys need not remove because
|
||||
masking is elementwise, and the distance the trained unit codebook falls
|
||||
short of an orthogonal set. Run it against whichever configuration
|
||||
exp_full.MAIN_D currently names.
|
||||
"""
|
||||
import math
|
||||
import sys
|
||||
@@ -17,7 +17,7 @@ import torch
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
import sse_lib as L
|
||||
from sse_lib import DEVICE, snr_to_sigma2, rayleigh_gain
|
||||
from exp_full import main_model
|
||||
from exp_full import main_model, oma_ser_keylen
|
||||
|
||||
SNR_DB = 10.0
|
||||
FRAMES = 400_000
|
||||
@@ -80,8 +80,7 @@ def main():
|
||||
print("user-0 SER, all four users transmitting : %.4f" % four)
|
||||
print("user-0 SER, other users silent : %.4f" % solo)
|
||||
print("OMA, resource matched (closed form) : %.4f"
|
||||
% L.oma_ser([SNR_DB])[0])
|
||||
print("ideal 16-ary orthogonal (separate MC) : 0.1986")
|
||||
% oma_ser_keylen(m.L, SNR_DB))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Does unconstrained key training still degenerate at the main configuration?
|
||||
|
||||
The manuscript justifies fixing the keys by a measured failure: with the
|
||||
keys free, training drives them to disjoint sparse supports, which is an
|
||||
orthogonal slot allocation rather than a superposition, and which shrinks
|
||||
the key space to the choice of a support. That was measured at d=64 and
|
||||
has to be re-measured whenever the configuration moves, because it is
|
||||
the reason the structured family is the main one.
|
||||
|
||||
Reported per user key: the number of entries holding 99 percent of the
|
||||
energy, and the pairwise overlap of those supports. A dense key spreads
|
||||
its energy over most of the L entries and the supports coincide; a
|
||||
degenerate one concentrates on a few and the supports are disjoint.
|
||||
"""
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import torch
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
from exp_full import get_model, main_model, MAIN_D
|
||||
|
||||
|
||||
def support99(w):
|
||||
"""Smallest set of entries carrying 99 percent of the key energy."""
|
||||
e = w.pow(2)
|
||||
order = torch.argsort(e, descending=True)
|
||||
c = torch.cumsum(e[order], 0) / e.sum()
|
||||
k = int((c < 0.99).sum()) + 1
|
||||
return set(order[:k].tolist()), k
|
||||
|
||||
|
||||
def describe(name, W):
|
||||
L = W.shape[1]
|
||||
sups, ks = [], []
|
||||
for u in range(W.shape[0]):
|
||||
sup, k = support99(W[u])
|
||||
sups.append(sup)
|
||||
ks.append(k)
|
||||
ov = []
|
||||
for i in range(len(sups)):
|
||||
for j in range(i + 1, len(sups)):
|
||||
ov.append(len(sups[i] & sups[j]) / max(1, min(len(sups[i]),
|
||||
len(sups[j]))))
|
||||
print("%-14s L=%3d 99%%-energy entries per key: %s "
|
||||
"mean pairwise support overlap %.2f"
|
||||
% (name, L, ks, sum(ov) / len(ov)))
|
||||
|
||||
|
||||
def main():
|
||||
print("main configuration d=%d" % MAIN_D)
|
||||
m_free = get_model(iters=4000) # keys learned, nothing frozen
|
||||
describe("learned", m_free.masks().detach().cpu())
|
||||
m_fix = main_model()
|
||||
describe("Walsh-Hadamard", m_fix.masks().detach().cpu())
|
||||
print()
|
||||
print("A degenerate key set shows few entries per key and near-zero")
|
||||
print("overlap; a dense one shows most entries and overlap near one.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+14
-13
@@ -1,11 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Does an orthogonal unit codebook recover the shortfall?
|
||||
|
||||
diag_interference shows the gap to the ideal M-ary receiver is not
|
||||
diag_interference shows the gap to the single-user M-ary bound is not
|
||||
multi-user interference but the geometry of the trained unit codebook,
|
||||
whose Gram matrix carries a root-mean-square off-diagonal of 0.45 where
|
||||
an orthogonal set would carry zero. Vu = L = 16 admits an exactly
|
||||
orthogonal set, so this measures what installing one buys.
|
||||
whose Gram matrix carries a large root-mean-square off-diagonal where an
|
||||
orthogonal set would carry zero. Vu <= L admits an exactly orthogonal
|
||||
set, so this measures what installing one buys.
|
||||
|
||||
Two orthogonal sets are tried, because the choice is not free. The
|
||||
Walsh-Hadamard set collides with the keys: the rows are closed under the
|
||||
@@ -22,7 +22,7 @@ import torch
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
import sse_lib as L
|
||||
from sse_lib import DEVICE, SSE
|
||||
from exp_full import hadamard, base_keys
|
||||
from exp_full import hadamard, base_keys, oma_ser_keylen, MAIN_D
|
||||
from diag_interference import ser
|
||||
|
||||
SNR = [0.0, 10.0, 20.0]
|
||||
@@ -39,13 +39,13 @@ def fixed_model(B, P=4, vu=16, d=64, U=4):
|
||||
return m
|
||||
|
||||
|
||||
def hadamard_book(vu=16, Lp=16):
|
||||
def hadamard_book(vu=16, Lp=MAIN_D // 4):
|
||||
B = torch.zeros(vu, Lp)
|
||||
B[:, :vu] = torch.tensor(hadamard(vu).copy(), dtype=torch.float32)
|
||||
return B
|
||||
|
||||
|
||||
def random_ortho_book(vu=16, Lp=16, seed=7):
|
||||
def random_ortho_book(vu=16, Lp=MAIN_D // 4, seed=7):
|
||||
g = torch.Generator().manual_seed(seed)
|
||||
A = torch.randn(Lp, Lp, generator=g)
|
||||
Q, _ = torch.linalg.qr(A)
|
||||
@@ -68,13 +68,14 @@ def main():
|
||||
% ("unit codebook", "max|off|", "0 dB", "10 dB", "20 dB"))
|
||||
report("Walsh-Hadamard", fixed_model(hadamard_book()))
|
||||
report("random orthogonal", fixed_model(random_ortho_book()))
|
||||
print("%-22s %-10s %-9s %-9s %-9s"
|
||||
% ("trained (paper)", "0.887", "0.8822", "0.2576", "0.0307"))
|
||||
from exp_full import main_model
|
||||
report("trained", main_model())
|
||||
Lp = MAIN_D // 4
|
||||
print("%-22s %-10s %-9s %-9s %-9s"
|
||||
% ("OMA, resource matched", "-",
|
||||
"%.4f" % L.oma_ser([0.0])[0],
|
||||
"%.4f" % L.oma_ser([10.0])[0],
|
||||
"%.4f" % L.oma_ser([20.0])[0]))
|
||||
"%.4f" % oma_ser_keylen(Lp, 0.0),
|
||||
"%.4f" % oma_ser_keylen(Lp, 10.0),
|
||||
"%.4f" % oma_ser_keylen(Lp, 20.0)))
|
||||
|
||||
|
||||
|
||||
@@ -97,7 +98,7 @@ def solo_check():
|
||||
print("%-22s %-12.4f %-12.4f"
|
||||
% (name, ser(m, 10.0, FRAMES, solo=True),
|
||||
ser(m, 10.0, FRAMES, solo=False)))
|
||||
print("single-user ideal M-ary bound (separate MC): 0.1986")
|
||||
print("(solo isolates the candidate set from the superposition)")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
+30
-21
@@ -2,7 +2,7 @@
|
||||
|
||||
Reuses the SSE transmit/receive core from sse_lib.py and adds an
|
||||
eavesdropper receiver, a jammer channel, and structured mask families.
|
||||
Main configuration d=64, P=4, Vu=16 (V=Vu^P=65,536), U=4 users, matching
|
||||
Main configuration d=256, P=4, Vu=16 (V=Vu^P=65,536), U=4 users, matching
|
||||
the language-model token vocabulary scale.
|
||||
|
||||
Stages (each writes a CSV to ../data; figures come from replot_security.py
|
||||
@@ -136,7 +136,11 @@ def eve_wrong_mask(U, Lp, seed):
|
||||
return W / W.norm(dim=1, keepdim=True) * math.sqrt(Lp)
|
||||
|
||||
|
||||
def get_model(P=4, vu=16, d=64, U=4, iters=4000, seed=1, freeze_W=None, tag=""):
|
||||
MAIN_D = 256 # embedding dimension of the main configuration
|
||||
|
||||
|
||||
def get_model(P=4, vu=16, d=MAIN_D, U=4, iters=4000, seed=1,
|
||||
freeze_W=None, tag=""):
|
||||
"""Train an SSE model, optionally with fixed (frozen) masks."""
|
||||
set_seed(seed)
|
||||
m = SSE(P=P, vu=vu, d=d, users=U).to(DEVICE)
|
||||
@@ -169,7 +173,7 @@ def base_keys(U: int, Lp: int) -> torch.Tensor:
|
||||
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):
|
||||
def main_model(iters=4000, P=4, vu=16, d=MAIN_D, U=4):
|
||||
"""The main configuration used by every stage below.
|
||||
|
||||
The keys are frozen to the structured Walsh-Hadamard family rather
|
||||
@@ -195,7 +199,7 @@ def stage_A():
|
||||
# conventional public-mask scheme: the eavesdropper holds the same
|
||||
# (public) masks and decodes exactly like a legitimate user
|
||||
eve_p = eval_ser_eve(m, m.masks().detach().cpu(), snr, frames=frames)
|
||||
oma = oma_ser(snr, bits=int(math.log2(m.V)))
|
||||
oma = [oma_ser_keylen(m.L, s, bits=int(math.log2(m.V))) for s in snr]
|
||||
chance = 1.0 - (1.0 / m.vu) ** m.P
|
||||
write_csv(DATA / "sec_snr.csv",
|
||||
["snr_db", "legit", "eve_wrong", "eve_none", "eve_public",
|
||||
@@ -236,7 +240,7 @@ def train_sse_reg(m: SSE, iters=4000, batch=256, lr=3e-3, seed=1,
|
||||
return m
|
||||
|
||||
|
||||
def get_model_reg(P=4, vu=16, d=64, U=4, iters=4000, seed=1):
|
||||
def get_model_reg(P=4, vu=16, d=MAIN_D, U=4, iters=4000, seed=1):
|
||||
set_seed(seed)
|
||||
m = SSE(P=P, vu=vu, d=d, users=U).to(DEVICE)
|
||||
train_sse_reg(m, iters=iters, seed=seed)
|
||||
@@ -314,7 +318,7 @@ def stage_C():
|
||||
|
||||
def stage_D():
|
||||
print("[D] mask families ...")
|
||||
P, vu, d, U = 4, 16, 64, 4
|
||||
P, vu, d, U = 4, 16, MAIN_D, 4
|
||||
Lp = d // P
|
||||
fams = {}
|
||||
# random fixed masks
|
||||
@@ -475,8 +479,7 @@ def stage_E():
|
||||
# is public so the matched jammer remains buildable
|
||||
rows.append(("index_cipher", lg, chance, chance, jm2))
|
||||
# S5 OMA digital, no encryption: open to everyone
|
||||
from sse_lib import oma_ser
|
||||
lg5 = oma_ser([10.0], bits=int(math.log2(m.V)))[0]
|
||||
lg5 = oma_ser_keylen(m.L, 10.0, bits=int(math.log2(m.V)))
|
||||
rows.append(("oma_plain", lg5, lg5, lg5, float("nan")))
|
||||
|
||||
write_csv(DATA / "sec_compare.csv",
|
||||
@@ -688,7 +691,7 @@ def stage_J():
|
||||
mask_arr = np.array([float(r["ser_mask"]) for r in cmp_rows])
|
||||
perm_arr = np.array([float(r["ser_perm"]) for r in cmp_rows])
|
||||
|
||||
d, L, V = 64, 16, 65536
|
||||
d, L, V = MAIN_D, MAIN_D // 4, 65536
|
||||
# channel floor of the cipher receiver, read from the stage-I curve
|
||||
# at a fully known pad so both figures share one source
|
||||
lg1 = 1.0 - (1.0 - float(cmp_rows[-1]["ser_pad"]))
|
||||
@@ -702,9 +705,11 @@ def stage_J():
|
||||
best_kappa = np.empty(trials)
|
||||
best_frac = np.empty(trials)
|
||||
for t in range(trials):
|
||||
g = rng.standard_normal((K, L))
|
||||
g /= np.linalg.norm(g, axis=1, keepdims=True)
|
||||
best_kappa[t] = np.abs(g[:, 0]).max()
|
||||
# |first coordinate| of a uniform random unit vector in R^L:
|
||||
# its square is Beta(1/2, (L-1)/2), so the best of K draws
|
||||
# needs K scalars rather than K*L Gaussians
|
||||
best_kappa[t] = np.sqrt(rng.beta(0.5, (L - 1) / 2.0,
|
||||
size=K).max())
|
||||
# permutation: fraction of fixed points, Binomial(d, 1/d) per
|
||||
# draw, so the best of K draws is the max of K such counts
|
||||
best_frac[t] = rng.binomial(d, 1.0 / d, size=K).max() / d
|
||||
@@ -726,14 +731,16 @@ def csv_rows(path):
|
||||
yield from _csv.DictReader(f)
|
||||
|
||||
|
||||
def oma_ser_jammed(snr_db, jsr_db_list, bits=16, U=4, n_grid=4096):
|
||||
def oma_ser_jammed(snr_db, jsr_db_list, bits=16, U=4, d=256, n_grid=4096):
|
||||
"""OMA under a jammer that concentrates on the victim's slots.
|
||||
|
||||
An OMA user occupies d/U exclusive real dimensions that are public,
|
||||
so a jammer needs no key to put all of its power there. With unit
|
||||
energy per real dimension and a total jammer energy of rho times the
|
||||
frame energy, concentrating on d/U of the d dimensions gives a
|
||||
per-dimension jammer variance of U*rho.
|
||||
An OMA user occupies L = d/U exclusive real dimensions that are
|
||||
public, and drives its 16 index bits on 16 of them with the whole
|
||||
allocation energy, an amplitude gain of sqrt(L/bits) per bit. A
|
||||
jammer needs no key to put all of its power on those same public
|
||||
dimensions. With unit energy per real dimension and a total jammer
|
||||
energy of rho times the frame energy, concentrating on bits of the d
|
||||
dimensions gives a per-dimension jammer variance of (d/bits)*rho.
|
||||
|
||||
The jammer reaches the victim through its own Rayleigh channel, the
|
||||
same convention eval_scheme uses for every simulated scheme, so the
|
||||
@@ -746,11 +753,12 @@ def oma_ser_jammed(snr_db, jsr_db_list, bits=16, U=4, n_grid=4096):
|
||||
hj2 = h2.clone() # |hJ|^2 ~ Exp(1), independent
|
||||
h = h2.sqrt()[:, None] # (n,1) signal amplitude
|
||||
snr = 10.0 ** (snr_db / 10.0)
|
||||
gain = math.sqrt((d / U) / bits) # antipodal amplitude
|
||||
out = []
|
||||
for jsr_db in jsr_db_list:
|
||||
rho = 10.0 ** (jsr_db / 10.0)
|
||||
var = (1.0 / snr + U * rho * hj2)[None, :] # (1,n)
|
||||
arg = (h / var.sqrt()).clamp(0, 38)
|
||||
var = (1.0 / snr + (d / bits) * rho * hj2)[None, :] # (1,n)
|
||||
arg = (h * gain / var.sqrt()).clamp(0, 38)
|
||||
pe = 0.5 * torch.erfc(arg / math.sqrt(2.0)) # per-bit error
|
||||
out.append(float((1.0 - (1.0 - pe) ** bits).mean()))
|
||||
return out
|
||||
@@ -774,7 +782,8 @@ def stage_L():
|
||||
gp = torch.Generator().manual_seed(11)
|
||||
perms = torch.randperm(d, generator=gp)[None].repeat(m.users, 1)
|
||||
jsr = [float(v) for v in range(-10, 21, 2)]
|
||||
oma = oma_ser_jammed(10.0, jsr, bits=int(math.log2(m.V)), U=m.users)
|
||||
oma = oma_ser_jammed(10.0, jsr, bits=int(math.log2(m.V)),
|
||||
U=m.users, d=m.d)
|
||||
rows = []
|
||||
for i, j in enumerate(jsr):
|
||||
blind = eval_scheme(m, 10.0, F, jam_w="blind", jsr_db=j)
|
||||
|
||||
+12
-5
@@ -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 main_model, eve_wrong_mask
|
||||
from exp_full import main_model, eve_wrong_mask, MAIN_D
|
||||
|
||||
SNR_GRID = [0, 4, 8, 12, 16, 20, 24, 28]
|
||||
# headline recovery is meaningful only where the legitimate user clears
|
||||
@@ -101,15 +101,22 @@ def wrong_keyed(model: SSE, digits_all, snr_db, seed, rx_masks=None,
|
||||
|
||||
|
||||
@torch.no_grad()
|
||||
def wrong_oma(ids_all, snr_db, seed, bits=16):
|
||||
"""Antipodal signaling on the actual token bits, same frame energy."""
|
||||
def wrong_oma(ids_all, snr_db, seed, bits=16, d=256, users=4):
|
||||
"""Antipodal signaling on the actual token bits, same frame energy.
|
||||
|
||||
The OMA user owns d/U exclusive dimensions for its 16 bits and puts
|
||||
the whole allocation energy on them, so the antipodal amplitude
|
||||
carries a factor sqrt((d/U)/bits) over the one-bit-per-dimension
|
||||
case. Without it the reference would spend only a quarter of the
|
||||
energy the proposed user spends."""
|
||||
torch.manual_seed(seed)
|
||||
N, Uu = ids_all.shape
|
||||
b = ((ids_all[..., None] >> torch.arange(bits)) & 1).float() * 2 - 1
|
||||
b = b.to(DEVICE)
|
||||
sigma = math.sqrt(1.0 / (10.0 ** (snr_db / 10.0)))
|
||||
gain = math.sqrt((d / users) / bits)
|
||||
h = rayleigh_gain((N, Uu, 1))
|
||||
y = h * b + sigma * torch.randn(N, Uu, bits, device=DEVICE)
|
||||
y = gain * h * b + sigma * torch.randn(N, Uu, bits, device=DEVICE)
|
||||
return ((y * b) < 0).any(dim=2).cpu()
|
||||
|
||||
|
||||
@@ -136,7 +143,7 @@ def main():
|
||||
f"distinct tokens, max id {int(ids_all.max())}")
|
||||
|
||||
# keys and codebook trained on uniform indices, reused unchanged
|
||||
model = main_model(P=P_MAX, vu=VU, d=64, U=U)
|
||||
model = main_model(P=P_MAX, vu=VU, d=MAIN_D, U=U)
|
||||
model.eval()
|
||||
|
||||
eve_m = eve_wrong_mask(U, model.L, seed=20260813) # outsider
|
||||
|
||||
+3
-3
@@ -26,7 +26,7 @@ orthogonal. Two constructions are compared here.
|
||||
the codebook together, which is a relabeling, log2(L!) bits
|
||||
3. a permutation of which user holds which row, log2(U!) bits
|
||||
|
||||
At L=16 and U=4 that is 16 + 44.25 + 4.58 = 64.8 bits per block, and
|
||||
At L=64 and U=4 that is 64 + 296.0 + 4.58 = 364.6 bits per block, and
|
||||
each transformation is verified below to leave the legitimate error
|
||||
rate unchanged.
|
||||
|
||||
@@ -45,7 +45,7 @@ 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, base_keys, eval_ser_eve,
|
||||
from exp_full import (MAIN_D, hadamard, get_model, base_keys, eval_ser_eve,
|
||||
eve_wrong_mask)
|
||||
from exp_kpa import collect_known_plaintext, solve_keys
|
||||
|
||||
@@ -92,7 +92,7 @@ def install(model: SSE, keys: torch.Tensor, codebook: torch.Tensor,
|
||||
|
||||
|
||||
def main():
|
||||
P, VU, D, U = 4, 16, 64, 4
|
||||
P, VU, D, U = 4, 16, MAIN_D, 4
|
||||
Lp = D // P
|
||||
print(f"[K] refresh: L={Lp}, U={U}, "
|
||||
f"{entropy_bits(U, Lp):.1f} bits per block from the invariance group")
|
||||
|
||||
+81
-33
@@ -129,6 +129,24 @@ def save(fig, name, insets=()):
|
||||
raise RuntimeError(
|
||||
f"{name}: a data curve passes under the legend "
|
||||
f"box; move the legend or shrink it")
|
||||
for t in ax.texts:
|
||||
tb = t.get_window_extent()
|
||||
if (lb.x0 < tb.x1 and tb.x0 < lb.x1
|
||||
and lb.y0 < tb.y1 and tb.y0 < lb.y1):
|
||||
raise RuntimeError(
|
||||
f"{name}: the annotation {t.get_text()!r} sits under "
|
||||
f"the legend box; move one of them")
|
||||
for t in ax.texts:
|
||||
tb = t.get_window_extent()
|
||||
for line in ax.get_lines():
|
||||
xy = line.get_xydata()
|
||||
if len(xy) == 0:
|
||||
continue
|
||||
for px, py in ax.transData.transform(xy):
|
||||
if tb.x0 <= px <= tb.x1 and tb.y0 <= py <= tb.y1:
|
||||
raise RuntimeError(
|
||||
f"{name}: a curve is drawn through the "
|
||||
f"annotation {t.get_text()!r}; move it")
|
||||
for ins in insets:
|
||||
ib = ins.get_window_extent()
|
||||
for a in fig.axes:
|
||||
@@ -148,6 +166,53 @@ def save(fig, name, insets=()):
|
||||
print("[OK]", name)
|
||||
|
||||
|
||||
def main_legit(snr_db="10"):
|
||||
"""The legitimate SER of the main configuration, read from the curve
|
||||
the main configuration produced rather than looked up by key length."""
|
||||
for r in load("sec_snr.csv"):
|
||||
if float(r["snr_db"]) == float(snr_db):
|
||||
return float(r["legit"])
|
||||
raise KeyError("no %s dB row in sec_snr.csv" % snr_db)
|
||||
|
||||
|
||||
def place_legend(ax, cands=("lower left", "center left", "center right",
|
||||
"lower center", "upper right", "upper center",
|
||||
"center", "lower right"),
|
||||
sizes=(6.6, 6.2, 5.8, 5.4, 5.0)):
|
||||
"""Choose the location and font size whose box the fewest curve points
|
||||
fall inside, scored on rendered geometry rather than guessed from the
|
||||
data. The size sweep is what makes a long label set placeable: a
|
||||
five-entry legend of full scheme names has no clear corner at the
|
||||
default size on every figure."""
|
||||
best = None
|
||||
for size in sizes:
|
||||
for loc in cands:
|
||||
leg = ax.legend(loc=loc, prop={"size": size})
|
||||
ax.figure.canvas.draw()
|
||||
lb = leg.get_window_extent()
|
||||
hits = 0
|
||||
for line in ax.get_lines():
|
||||
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:
|
||||
hits += 1
|
||||
for t in ax.texts:
|
||||
tb = t.get_window_extent()
|
||||
if (lb.x0 < tb.x1 and tb.x0 < lb.x1
|
||||
and lb.y0 < tb.y1 and tb.y0 < lb.y1):
|
||||
hits += 50 # an annotation hidden is worse than a
|
||||
# few curve points clipped
|
||||
if best is None or hits < best[2]:
|
||||
best = (loc, size, hits)
|
||||
if hits == 0:
|
||||
ax.legend(loc=loc, prop={"size": size})
|
||||
return best
|
||||
ax.legend(loc=best[0], prop={"size": best[1]})
|
||||
return best
|
||||
|
||||
|
||||
def fig_snr():
|
||||
r = load("sec_snr.csv")
|
||||
x = col(r, "snr_db")
|
||||
@@ -167,22 +232,8 @@ def fig_snr():
|
||||
ax.set_xlabel("SNR (dB)")
|
||||
ax.set_ylabel("SER")
|
||||
ax.set_xlim(min(x), max(x))
|
||||
ax.legend(loc="lower left")
|
||||
|
||||
# the gap is a coding gain of a few percent, invisible against two
|
||||
# decades of SER, so an inset reports it as a ratio
|
||||
lg, om = col(r, "legit"), col(r, "oma")
|
||||
ins = ax.inset_axes([0.57, 0.58, 0.39, 0.25])
|
||||
ins.plot(x, [o / l for l, o in zip(lg, om)], color=C_OMA, lw=1.0,
|
||||
marker="^", ms=2.4, markevery=2)
|
||||
ins.axhline(1.0, color="0.55", lw=0.6, ls="--")
|
||||
ins.set_xlim(min(x), max(x))
|
||||
ins.set_ylim(0.995, 1.105)
|
||||
ins.set_yticks([1.00, 1.05, 1.10])
|
||||
ins.set_xticks([0, 10, 20])
|
||||
ins.tick_params(labelsize=5.2, length=1.8, pad=1.0)
|
||||
ins.set_title("OMA / proposed SER", fontsize=5.6, pad=1.5)
|
||||
save(fig, "fig_sec_snr", insets=[ins])
|
||||
place_legend(ax)
|
||||
save(fig, "fig_sec_snr")
|
||||
|
||||
|
||||
def fig_keylen():
|
||||
@@ -204,7 +255,7 @@ def fig_keylen():
|
||||
ax.set_xscale("log", base=2)
|
||||
# the curves sweep the upper-left to lower-right diagonal, leaving the
|
||||
# lower-left corner empty
|
||||
ax.legend(loc="lower left")
|
||||
place_legend(ax)
|
||||
save(fig, "fig_sec_keylen")
|
||||
|
||||
|
||||
@@ -228,14 +279,13 @@ def fig_jam():
|
||||
ax.plot(x, col(r, "perm_blind"), color=C_EVE, marker="s", ls="-.",
|
||||
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",
|
||||
va="bottom", fontsize=7.4, color="#555555")
|
||||
ax.axhline(nojam, color=C_OMA, ls=(0, (1, 3)), lw=0.9,
|
||||
label=LBL["nojam"])
|
||||
ax.set_xlabel("JSR (dB)")
|
||||
ax.set_ylabel("SER")
|
||||
ax.set_xlim(min(x), max(x))
|
||||
ax.set_ylim(0.2, 1.02)
|
||||
ax.legend(loc="center right", bbox_to_anchor=(0.985, 0.47))
|
||||
ax.set_ylim(0.8 * nojam, 1.02)
|
||||
place_legend(ax)
|
||||
save(fig, "fig_sec_jam")
|
||||
|
||||
|
||||
@@ -257,7 +307,7 @@ def fig_sens():
|
||||
ax.set_xlabel("Fraction of the key recovered")
|
||||
ax.set_ylabel("Eavesdropper SER")
|
||||
ax.set_xlim(0, 1)
|
||||
ax.legend(loc="lower left")
|
||||
place_legend(ax)
|
||||
save(fig, "fig_sec_sens")
|
||||
|
||||
|
||||
@@ -273,13 +323,12 @@ def fig_brute():
|
||||
label=LBL["pad"], **OVER)
|
||||
ax.semilogx(x, col(r, "ser_mask"), color=C_LEGIT, marker="o", ls="-",
|
||||
label=LBL["mask"])
|
||||
kl = load("sec_keylen.csv")
|
||||
legit = float([q for q in kl if int(q["L"]) == 16][0]["legit_ser"])
|
||||
legit = main_legit()
|
||||
ax.axhline(legit, color=C_OMA, ls=":", lw=0.9, label=LBL["legit"])
|
||||
ax.set_xlabel("Number of key guesses $K$")
|
||||
ax.set_ylabel("Eavesdropper SER")
|
||||
ax.set_ylim(0.2, 1.05)
|
||||
ax.legend(loc="lower left")
|
||||
ax.set_ylim(0.8 * legit, 1.05)
|
||||
place_legend(ax)
|
||||
save(fig, "fig_sec_brute")
|
||||
|
||||
|
||||
@@ -299,7 +348,7 @@ def fig_real():
|
||||
ax.set_xlabel("SNR (dB)")
|
||||
ax.set_ylabel("TER")
|
||||
ax.set_xlim(min(x), max(x))
|
||||
ax.legend(loc="lower left")
|
||||
place_legend(ax)
|
||||
save(fig, "fig_sec_real")
|
||||
|
||||
|
||||
@@ -325,10 +374,9 @@ def fig_kpa():
|
||||
print("[skip] pkpa.csv not present yet")
|
||||
# legitimate reference measured with the SAME estimator as the
|
||||
# eavesdropper curves, namely the four-user average of eval_ser_sse
|
||||
# at L=16, taken from sec_keylen.csv rather than from the user-1
|
||||
# convention of the scheme-comparison table
|
||||
kl = load("sec_keylen.csv")
|
||||
legit = float([r for r in kl if int(r["L"]) == 16][0]["legit_ser"])
|
||||
# in the main configuration, rather than the user-1 convention of the
|
||||
# scheme-comparison table
|
||||
legit = main_legit()
|
||||
ax.axhline(legit, color=C_OMA, ls=":", lw=0.9, label=LBL["legit"])
|
||||
ax.set_xlabel("Known-plaintext frames $N$")
|
||||
ax.set_ylabel("Eavesdropper SER")
|
||||
@@ -336,7 +384,7 @@ def fig_kpa():
|
||||
# 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))
|
||||
place_legend(ax)
|
||||
save(fig, "fig_sec_kpa")
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
||||
# ----------------------------------------------------------------------
|
||||
# global configuration
|
||||
# ----------------------------------------------------------------------
|
||||
D = 64 # embedding dimension (real)
|
||||
D = 256 # embedding dimension (real)
|
||||
U = 4 # users
|
||||
VU = 16 # unit codebook size
|
||||
P_MAX = 4 # periods for the main configuration, V = 16^4 = 65536
|
||||
|
||||
+42
-42
@@ -1,43 +1,43 @@
|
||||
snr_db,n_frames,kappa,eve_ser
|
||||
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
|
||||
0,1,0.12352509,0.99831525
|
||||
0,2,0.5251209017,0.667321375
|
||||
0,3,0.7064555086,0.355686125
|
||||
0,4,0.8180372834,0.153838875
|
||||
0,5,0.851283282,0.11704475
|
||||
0,6,0.8886688635,0.08632125
|
||||
0,8,0.9222010329,0.071005375
|
||||
0,10,0.9411106989,0.065095875
|
||||
0,12,0.9511190057,0.062455
|
||||
0,16,0.9647030935,0.05952275
|
||||
0,24,0.9768752605,0.057202125
|
||||
0,32,0.9825294316,0.056090625
|
||||
0,48,0.9889646709,0.054879875
|
||||
0,64,0.9916648567,0.05434675
|
||||
10,1,0.1945309106,0.974309875
|
||||
10,2,0.8957558513,0.09464225
|
||||
10,3,0.9584526971,0.061422375
|
||||
10,4,0.9749164343,0.057618875
|
||||
10,5,0.9840320468,0.055860125
|
||||
10,6,0.9870633438,0.055293125
|
||||
10,8,0.9915206015,0.0545015
|
||||
10,10,0.993655026,0.054026875
|
||||
10,12,0.9947692543,0.05398375
|
||||
10,16,0.9961483911,0.05369625
|
||||
10,24,0.9975565806,0.0534085
|
||||
10,32,0.9982031986,0.053507125
|
||||
10,48,0.9988671347,0.053128875
|
||||
10,64,0.9991624668,0.05316875
|
||||
20,1,0.4000679564,0.75409875
|
||||
20,2,0.9798189059,0.05720575
|
||||
20,3,0.9945692539,0.053949375
|
||||
20,4,0.9968175337,0.053615375
|
||||
20,5,0.9978483543,0.053312375
|
||||
20,6,0.9984246671,0.053056125
|
||||
20,8,0.9989141598,0.053266375
|
||||
20,10,0.9992120922,0.053062
|
||||
20,12,0.9993801698,0.0532745
|
||||
20,16,0.9995821282,0.053144375
|
||||
20,24,0.9997434661,0.0532995
|
||||
20,32,0.9998255745,0.053043125
|
||||
20,48,0.9998879209,0.05301875
|
||||
20,64,0.9999150276,0.05316375
|
||||
|
||||
|
+16
-16
@@ -1,17 +1,17 @@
|
||||
n_frames,perm_frac,eve_ser
|
||||
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
|
||||
1,0.07789713542,0.9998223333
|
||||
2,0.4416992188,0.8047886667
|
||||
3,0.8402018229,0.2011701667
|
||||
4,0.9570963542,0.078129
|
||||
5,0.9874674479,0.058565
|
||||
6,0.998828125,0.05340366667
|
||||
7,0.9992838542,0.05337483333
|
||||
8,0.9998697917,0.05304583333
|
||||
10,1,0.05286516667
|
||||
12,1,0.05297066667
|
||||
16,1,0.0530215
|
||||
20,1,0.05311583333
|
||||
24,1,0.05297233333
|
||||
32,1,0.05296366667
|
||||
48,1,0.05290466667
|
||||
64,1,0.052919
|
||||
|
||||
|
@@ -10,22 +10,22 @@
|
||||
"headline_runs": 4,
|
||||
"recovery": {
|
||||
"20": {
|
||||
"legit": 0.22112422997946612,
|
||||
"legit": 0.7507700205338809,
|
||||
"eve": 0.0,
|
||||
"insider": 0.0,
|
||||
"oma": 0.19815195071868583
|
||||
"oma": 0.6463039014373717
|
||||
},
|
||||
"24": {
|
||||
"legit": 0.5395277207392197,
|
||||
"legit": 0.8966889117043121,
|
||||
"eve": 0.0,
|
||||
"insider": 0.0,
|
||||
"oma": 0.5160420944558521
|
||||
"oma": 0.8390657084188912
|
||||
},
|
||||
"28": {
|
||||
"legit": 0.7804158110882957,
|
||||
"legit": 0.9588039014373717,
|
||||
"eve": 0.0,
|
||||
"insider": 0.0,
|
||||
"oma": 0.7583418891170431
|
||||
"oma": 0.9319815195071869
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
snr_db,ter_legit,ter_eve,ter_insider,ter_oma
|
||||
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
|
||||
0,0.3971355208,0.9997737319,0.9959146732,0.5232856128
|
||||
4,0.1907565105,0.9995762161,0.9945970678,0.2740881771
|
||||
8,0.08179654372,0.9993636991,0.9939007621,0.123424874
|
||||
12,0.03395771662,0.9992336887,0.9936032383,0.05201666133
|
||||
16,0.01357608609,0.9991099288,0.9934969798,0.02118419474
|
||||
20,0.005565445236,0.9991286803,0.9934507261,0.008630690455
|
||||
24,0.002230178414,0.9991974358,0.9934207237,0.003452776222
|
||||
28,0.0008825706056,0.9992486899,0.9934144732,0.001385110809
|
||||
|
||||
|
+24
-24
@@ -1,25 +1,25 @@
|
||||
block,legit_invariant,legit_naive,eve_invariant,eve_naive
|
||||
0,0.25722,0.9825916667,0.9998433333,0.999975
|
||||
1,0.257695,0.7424366667,0.9997983333,0.998495
|
||||
2,0.2575741667,0.8482983333,0.9999891667,0.9999966667
|
||||
3,0.2574108333,0.7789558333,0.9997116667,0.9998625
|
||||
4,0.2578316667,0.619975,0.9978516667,0.9999391667
|
||||
5,0.2575941667,0.6579858333,0.99976,0.9997716667
|
||||
6,0.2568508333,0.7788175,0.9997783333,0.9999341667
|
||||
7,0.2574466667,0.6938383333,0.9999633333,0.9989225
|
||||
8,0.2568958333,0.8399391667,0.9983208333,0.99991
|
||||
9,0.2572158333,0.6549775,0.9999891667,0.9999816667
|
||||
10,0.2575733333,0.4789683333,0.9995841667,0.9995091667
|
||||
11,0.2569025,0.6551183333,0.999925,0.9999741667
|
||||
12,0.2582966667,0.8479616667,0.9997208333,0.9999233333
|
||||
13,0.2579675,0.6551841667,0.9999758333,0.9996183333
|
||||
14,0.2572158333,0.6582558333,1,0.999915
|
||||
15,0.2578983333,0.4791275,0.9994441667,0.9999233333
|
||||
16,0.2570508333,0.7614066667,0.9998991667,0.9993675
|
||||
17,0.2576233333,0.8045108333,0.9994666667,0.9999475
|
||||
18,0.2571108333,0.8073525,0.9997158333,0.999985
|
||||
19,0.257955,0.6890983333,0.9992433333,0.9994441667
|
||||
20,0.25777,0.5282241667,0.9981,0.9992808333
|
||||
21,0.2568141667,0.7426725,0.9999566667,0.999965
|
||||
22,0.2578066667,0.6547841667,0.9997633333,0.9990433333
|
||||
23,0.2575241667,0.68849,0.9998791667,0.99982
|
||||
0,0.05306083333,0.08038333333,0.9999508333,0.9999683333
|
||||
1,0.05273166667,0.1074658333,0.9999333333,0.9998433333
|
||||
2,0.05277666667,0.1060591667,0.9996633333,0.9999733333
|
||||
3,0.053255,0.1242133333,0.9999908333,0.9999083333
|
||||
4,0.0530325,0.1259233333,0.99994,0.99886
|
||||
5,0.05305,0.1073991667,0.9976566667,0.9998183333
|
||||
6,0.05290833333,0.10623,0.9999625,0.9999325
|
||||
7,0.05312583333,0.1075391667,0.9999916667,0.9998858333
|
||||
8,0.05348333333,0.1069425,0.99999,0.9981908333
|
||||
9,0.05322833333,0.1036133333,0.9999966667,0.9998841667
|
||||
10,0.05320666667,0.09874583333,0.99966,0.9998675
|
||||
11,0.05308583333,0.0826975,0.999985,0.996885
|
||||
12,0.05284416667,0.1512316667,0.99997,0.9999375
|
||||
13,0.05285916667,0.2648991667,0.9999108333,0.9999933333
|
||||
14,0.05330416667,0.1010783333,0.9996125,0.99999
|
||||
15,0.0528175,0.1194066667,0.99961,0.9998841667
|
||||
16,0.05312166667,0.1301383333,0.9990241667,0.9999683333
|
||||
17,0.05278,0.1393716667,0.9994875,0.9997066667
|
||||
18,0.05314333333,0.1566191667,0.9998908333,0.9999208333
|
||||
19,0.05337666667,0.1165041667,0.9990191667,0.9999958333
|
||||
20,0.05288,0.1321825,0.99927,0.9996708333
|
||||
21,0.05266333333,0.1290883333,0.9996075,0.9999233333
|
||||
22,0.05324583333,0.09973166667,0.9991875,0.9997808333
|
||||
23,0.05300833333,0.1198525,0.9979583333,0.999895
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
n_frames,ser_same_block,ser_next_block
|
||||
2,0.27116875,0.9988428125
|
||||
4,0.260861875,0.998726875
|
||||
8,0.2588515625,0.99869375
|
||||
16,0.2586403125,0.998735625
|
||||
32,0.2571871875,0.9986965625
|
||||
64,0.25772125,0.99869375
|
||||
2,0.0910125,0.999634375
|
||||
4,0.0540171875,0.999456875
|
||||
8,0.0532996875,0.9995453125
|
||||
16,0.0532596875,0.9995365625
|
||||
32,0.0530225,0.999555
|
||||
64,0.053059375,0.9995303125
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
scheme,legit,eve,entropy_bits
|
||||
None (fixed key),0.2573025,0.9999908333,14.99964774
|
||||
Fresh orthogonal keys,0.7103737847,0.9996877083,14.99964774
|
||||
Invariant,0.2574685069,0.99957,64.83510297
|
||||
None (fixed key),0.05300666667,0.9997075,23.76910417
|
||||
Fresh orthogonal keys,0.1215548611,0.9996535069,23.76910417
|
||||
Invariant,0.05304121528,0.9995528819,364.5801064
|
||||
|
||||
|
+28
-28
@@ -1,29 +1,29 @@
|
||||
L,K,best_rho,eve_ser
|
||||
8,1,0.2918601623,0.9945244994
|
||||
8,10,0.6307837307,0.9550597921
|
||||
8,100,0.8190062809,0.8147158732
|
||||
8,1000,0.9077793813,0.5723297059
|
||||
8,10000,0.9535904264,0.3866372342
|
||||
8,100000,0.9757162716,0.3157766639
|
||||
8,1000000,0.9872786315,0.2845244539
|
||||
16,1,0.2228791779,0.9990085712
|
||||
16,10,0.4570522499,0.9943536935
|
||||
16,100,0.6321070191,0.9769163907
|
||||
16,1000,0.7417848118,0.9311708657
|
||||
16,10000,0.8164950053,0.8399011082
|
||||
16,100000,0.8673534005,0.7274791752
|
||||
16,1000000,0.9048131336,0.5915534824
|
||||
32,1,0.1399813941,0.999821061
|
||||
32,10,0.3205750013,0.9991354579
|
||||
32,100,0.4660256564,0.996404209
|
||||
32,1000,0.5620279439,0.991343747
|
||||
32,10000,0.6393936736,0.9815239297
|
||||
32,100000,0.6993164916,0.9634132739
|
||||
32,1000000,0.7479539255,0.9349306487
|
||||
64,1,0.0987436915,0.9999096477
|
||||
64,10,0.2263401688,0.9997303409
|
||||
64,100,0.3389944824,0.9991750164
|
||||
64,1000,0.4155608514,0.9981802181
|
||||
64,10000,0.4757575011,0.9967597446
|
||||
64,100000,0.5299797378,0.994275692
|
||||
64,1000000,0.5741312045,0.9910114047
|
||||
8,1,0.2918601623,0.9066920085
|
||||
8,10,0.6307837307,0.5210311818
|
||||
8,100,0.8190062809,0.1464367404
|
||||
8,1000,0.9077793813,0.07579906172
|
||||
8,10000,0.9535904264,0.06202610787
|
||||
8,100000,0.9757162716,0.05732935088
|
||||
8,1000000,0.9872786315,0.05494886822
|
||||
16,1,0.2228791779,0.9678674777
|
||||
16,10,0.4570522499,0.8428517805
|
||||
16,100,0.6321070191,0.5220053649
|
||||
16,1000,0.7417848118,0.2575339696
|
||||
16,10000,0.8164950053,0.1355546081
|
||||
16,100000,0.8673534005,0.0917885764
|
||||
16,1000000,0.9048131336,0.07564447448
|
||||
32,1,0.1399813941,0.9955028264
|
||||
32,10,0.3205750013,0.9696107631
|
||||
32,100,0.4660256564,0.8637137122
|
||||
32,1000,0.5620279439,0.694146855
|
||||
32,10000,0.6393936736,0.505025831
|
||||
32,100000,0.6993164916,0.3443445207
|
||||
32,1000000,0.7479539255,0.2384664588
|
||||
64,1,0.0987436915,0.9985051621
|
||||
64,10,0.2263401688,0.9932755581
|
||||
64,100,0.3389944824,0.9716186298
|
||||
64,1000,0.4155608514,0.9321217644
|
||||
64,10000,0.4757575011,0.8672182737
|
||||
64,100000,0.5299797378,0.7724368738
|
||||
64,1000000,0.5741312045,0.6658700504
|
||||
|
||||
|
+14
-14
@@ -1,15 +1,15 @@
|
||||
K,ser_mask,ser_perm,ser_pad,best_kappa,best_frac
|
||||
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
|
||||
1,0.9975735971,0.9999452686,0.9999855534,0.1060014706,0.00373046875
|
||||
3,0.9939382519,0.999917898,0.9999566603,0.1737056038,0.006982421875
|
||||
10,0.9885799467,0.999885267,0.9998555344,0.23239142,0.010859375
|
||||
30,0.9784526651,0.9998643897,0.9995666031,0.2887248616,0.01333984375
|
||||
100,0.9639408295,0.9998383342,0.9985553436,0.3406099894,0.01643554687
|
||||
300,0.9496426441,0.9998154842,0.9956660309,0.3763731975,0.01915039062
|
||||
1000,0.9229213733,0.9997945248,0.9855534363,0.4126070285,0.021640625
|
||||
3000,0.8778012069,0.9997791545,0.9566603088,0.4459480988,0.02346679688
|
||||
10000,0.8268693567,0.9997572087,0.8555343628,0.4766569871,0.02607421875
|
||||
30000,0.7835337024,0.9997399479,0.5666030884,0.502465176,0.028125
|
||||
65536,0.7563541371,0.9997287696,0.05323,0.5185642041,0.029453125
|
||||
100000,0.7390554126,0.9997216187,0.05323,0.5289073023,0.03030273438
|
||||
300000,0.6980880931,0.9997044401,0.05323,0.5526416305,0.03234375
|
||||
1000000,0.6655177674,0.9996913713,0.05323,0.5720463815,0.03389648438
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
scheme,legit_ser,eve_out,eve_in,jam0_ser
|
||||
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
|
||||
proposed,0.0529425,0.9999925,0.9999825,0.3634175
|
||||
public_mask,0.0529425,0.0529425,0.0529425,0.83882
|
||||
perm_key,0.0528525,0.9999925,0.0528525,0.36425
|
||||
index_cipher,0.0529425,0.9999847412,0.9999847412,0.83882
|
||||
oma_plain,0.08056383667,0.08056383667,0.08056383667,nan
|
||||
|
||||
|
+7
-7
@@ -1,8 +1,8 @@
|
||||
jsr_db,blind,matched,nojam
|
||||
-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
|
||||
-10,0.100512,0.370894,0.053384
|
||||
-5,0.186312,0.629542,0.053384
|
||||
0,0.364964,0.838068,0.053384
|
||||
5,0.610574,0.94122,0.053384
|
||||
10,0.816206,0.980862,0.053384
|
||||
15,0.929192,0.993638,0.053384
|
||||
20,0.97542,0.997986,0.053384
|
||||
|
||||
|
+16
-16
@@ -1,17 +1,17 @@
|
||||
jsr_db,blind,matched,perm_blind,oma_targeted
|
||||
-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
|
||||
-10,0.10064,0.37023,0.10146,0.5614379461
|
||||
-8,0.1249233333,0.4708266667,0.12691,0.65563829
|
||||
-6,0.1634766667,0.5763733333,0.16262,0.7407016397
|
||||
-4,0.214,0.6803433333,0.21294,0.8120662111
|
||||
-2,0.2825866667,0.76744,0.2808,0.8681995366
|
||||
0,0.3646733333,0.8388366667,0.36478,0.9100289945
|
||||
2,0.4608633333,0.8904066667,0.4600566667,0.9398716824
|
||||
4,0.5610033333,0.92756,0.5599433333,0.9604546595
|
||||
6,0.65865,0.9529333333,0.6570033333,0.9742944207
|
||||
8,0.7445133333,0.96962,0.74325,0.9834284377
|
||||
10,0.8155633333,0.9808933333,0.8162233333,0.9893770607
|
||||
12,0.8720266667,0.98766,0.8727233333,0.9932152779
|
||||
14,0.9134533333,0.99211,0.9136866667,0.9956760816
|
||||
16,0.94315,0.9950333333,0.9424633333,0.9972471319
|
||||
18,0.96219,0.9969166667,0.96196,0.9982475299
|
||||
20,0.9756633333,0.99808,0.97557,0.9988837869
|
||||
|
||||
|
+200
-200
@@ -1,201 +1,201 @@
|
||||
ser,gap_db
|
||||
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
|
||||
0.37023,10.11553523
|
||||
0.3732723786,10.11830625
|
||||
0.3763147571,10.12107727
|
||||
0.3793571357,10.12384829
|
||||
0.3823995142,10.12661931
|
||||
0.3854418928,10.12939033
|
||||
0.3884842714,10.13216136
|
||||
0.3915266499,10.13493238
|
||||
0.3945690285,10.1377034
|
||||
0.397611407,10.14047442
|
||||
0.4006537856,10.14324544
|
||||
0.4036961642,10.14601646
|
||||
0.4067385427,10.14878749
|
||||
0.4097809213,10.15155851
|
||||
0.4128232998,10.15432953
|
||||
0.4158656784,10.15710055
|
||||
0.418908057,10.15987157
|
||||
0.4219504355,10.16264259
|
||||
0.4249928141,10.16541362
|
||||
0.4280351926,10.16818464
|
||||
0.4310775712,10.17095566
|
||||
0.4341199497,10.17372668
|
||||
0.4371623283,10.1764977
|
||||
0.4402047069,10.17926873
|
||||
0.4432470854,10.18203975
|
||||
0.446289464,10.18481077
|
||||
0.4493318425,10.18758179
|
||||
0.4523742211,10.19035281
|
||||
0.4554165997,10.19312383
|
||||
0.4584589782,10.19589486
|
||||
0.4615013568,10.19814261
|
||||
0.4645437353,10.19841844
|
||||
0.4675861139,10.19869428
|
||||
0.4706284925,10.19897012
|
||||
0.473670871,10.20189792
|
||||
0.4767132496,10.2050105
|
||||
0.4797556281,10.20812308
|
||||
0.4827980067,10.21123566
|
||||
0.4858403853,10.21434824
|
||||
0.4888827638,10.21746083
|
||||
0.4919251424,10.22057341
|
||||
0.4949675209,10.22368599
|
||||
0.4980098995,10.22679857
|
||||
0.5010522781,10.22991115
|
||||
0.5040946566,10.23302373
|
||||
0.5071370352,10.23613631
|
||||
0.5101794137,10.2392489
|
||||
0.5132217923,10.24236148
|
||||
0.5162641709,10.24547406
|
||||
0.5193065494,10.24858664
|
||||
0.522348928,10.25169922
|
||||
0.5253913065,10.2548118
|
||||
0.5284336851,10.25792438
|
||||
0.5314760637,10.26103697
|
||||
0.5345184422,10.26414955
|
||||
0.5375608208,10.26726213
|
||||
0.5406031993,10.27037471
|
||||
0.5436455779,10.27348729
|
||||
0.5466879564,10.27659987
|
||||
0.549730335,10.27971246
|
||||
0.5527727136,10.28282504
|
||||
0.5558150921,10.28593762
|
||||
0.5588574707,10.2890502
|
||||
0.5618998492,10.29261998
|
||||
0.5649422278,10.29728408
|
||||
0.5679846064,10.30194819
|
||||
0.5710269849,10.3066123
|
||||
0.5740693635,10.3112764
|
||||
0.577111742,10.31572832
|
||||
0.5801541206,10.31951819
|
||||
0.5831964992,10.32330805
|
||||
0.5862388777,10.32709792
|
||||
0.5892812563,10.33088779
|
||||
0.5923236348,10.33467765
|
||||
0.5953660134,10.33846752
|
||||
0.598408392,10.34225739
|
||||
0.6014507705,10.34604725
|
||||
0.6044931491,10.34983712
|
||||
0.6075355276,10.35362698
|
||||
0.6105779062,10.35741685
|
||||
0.6136202848,10.36120672
|
||||
0.6166626633,10.36499658
|
||||
0.6197050419,10.36878645
|
||||
0.6227474204,10.37257631
|
||||
0.625789799,10.37636618
|
||||
0.6288321776,10.38015605
|
||||
0.6318745561,10.38394591
|
||||
0.6349169347,10.38773578
|
||||
0.6379593132,10.39152564
|
||||
0.6410016918,10.39531551
|
||||
0.6440440704,10.39910538
|
||||
0.6470864489,10.40289524
|
||||
0.6501288275,10.40668511
|
||||
0.653171206,10.41047497
|
||||
0.6562135846,10.41426484
|
||||
0.6592559631,10.41975796
|
||||
0.6622983417,10.4320994
|
||||
0.6653407203,10.44444085
|
||||
0.6683830988,10.45678229
|
||||
0.6714254774,10.46912373
|
||||
0.6744678559,10.48146518
|
||||
0.6775102345,10.49380662
|
||||
0.6805526131,10.50536815
|
||||
0.6835949916,10.50637164
|
||||
0.6866373702,10.50737513
|
||||
0.6896797487,10.50837863
|
||||
0.6927221273,10.50938212
|
||||
0.6957645059,10.51038561
|
||||
0.6988068844,10.51138911
|
||||
0.701849263,10.5123926
|
||||
0.7048916415,10.51339609
|
||||
0.7079340201,10.51439959
|
||||
0.7109763987,10.51540308
|
||||
0.7140187772,10.51640657
|
||||
0.7170611558,10.51741007
|
||||
0.7201035343,10.51841356
|
||||
0.7231459129,10.51941705
|
||||
0.7261882915,10.52042055
|
||||
0.72923067,10.52142404
|
||||
0.7322730486,10.52242753
|
||||
0.7353154271,10.52343103
|
||||
0.7383578057,10.52443452
|
||||
0.7414001843,10.52543801
|
||||
0.7444425628,10.5264415
|
||||
0.7474849414,10.5418762
|
||||
0.7505273199,10.55765458
|
||||
0.7535696985,10.57343296
|
||||
0.7566120771,10.58921134
|
||||
0.7596544556,10.60498973
|
||||
0.7626968342,10.62076811
|
||||
0.7657392127,10.63654649
|
||||
0.7687815913,10.64555048
|
||||
0.7718239698,10.64596631
|
||||
0.7748663484,10.64638213
|
||||
0.777908727,10.64679796
|
||||
0.7809511055,10.64721379
|
||||
0.7839934841,10.64762962
|
||||
0.7870358626,10.64804544
|
||||
0.7900782412,10.64846127
|
||||
0.7931206198,10.6488771
|
||||
0.7961629983,10.64929293
|
||||
0.7992053769,10.64970876
|
||||
0.8022477554,10.65012458
|
||||
0.805290134,10.65054041
|
||||
0.8083325126,10.65095624
|
||||
0.8113748911,10.65137207
|
||||
0.8144172697,10.65178789
|
||||
0.8174596482,10.66599377
|
||||
0.8205020268,10.68853386
|
||||
0.8235444054,10.71107394
|
||||
0.8265867839,10.73361403
|
||||
0.8296291625,10.75615411
|
||||
0.832671541,10.7786942
|
||||
0.8357139196,10.80123429
|
||||
0.8387562982,10.82377437
|
||||
0.8417986767,10.81441442
|
||||
0.8448410553,10.80418892
|
||||
0.8478834338,10.79396343
|
||||
0.8509258124,10.78373793
|
||||
0.853968191,10.77351244
|
||||
0.8570105695,10.76328694
|
||||
0.8600529481,10.75306144
|
||||
0.8630953266,10.74283595
|
||||
0.8661377052,10.73261045
|
||||
0.8691800838,10.72238495
|
||||
0.8722224623,10.71467677
|
||||
0.8752648409,10.74356673
|
||||
0.8783072194,10.77245668
|
||||
0.881349598,10.80134663
|
||||
0.8843919765,10.83023658
|
||||
0.8874343551,10.85912654
|
||||
0.8904767337,10.88696207
|
||||
0.8935191122,10.87006808
|
||||
0.8965614908,10.85317409
|
||||
0.8996038693,10.8362801
|
||||
0.9026462479,10.81938611
|
||||
0.9056886265,10.80249212
|
||||
0.908731005,10.78559813
|
||||
0.9117733836,10.76870414
|
||||
0.9148157621,10.77779104
|
||||
0.9178581407,10.81891382
|
||||
0.9209005193,10.86003661
|
||||
0.9239428978,10.90115939
|
||||
0.9269852764,10.94228217
|
||||
0.9300276549,10.92173347
|
||||
0.9330700335,10.8868213
|
||||
0.9361124121,10.85190914
|
||||
0.9391547906,10.81699698
|
||||
0.9421971692,10.78208482
|
||||
0.9452395477,10.82593689
|
||||
0.9482819263,10.90570533
|
||||
0.9513243049,10.98547378
|
||||
0.9543666834,11.00642719
|
||||
0.957409062,10.96135692
|
||||
0.9604514405,10.91628665
|
||||
0.9634938191,10.92780128
|
||||
0.9665361977,11.01476826
|
||||
0.9695785762,11.10173524
|
||||
0.9726209548,11.01598634
|
||||
0.9756633333,10.92785334
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
family,legit_ser,eve_ser,eve_ones_ser,mask_xcorr
|
||||
random,0.64962,0.998488,0.999988,0.2709003091
|
||||
hadamard,0.257299,0.9999905,0.9999755,0
|
||||
learned,0.2762895,0.9999285,0.99999,0.007116591092
|
||||
learned_reg,0.315952,0.9999555,0.9999175,0.01121100038
|
||||
random,0.068322,0.998269,0.999996,0.06645943969
|
||||
hadamard,0.0530375,0.9997025,0.9999785,0
|
||||
learned,0.0635265,0.9997915,0.9997865,0.006678360514
|
||||
learned_reg,0.061412,0.999691,0.9998455,0.002381352475
|
||||
|
||||
|
+7
-7
@@ -1,8 +1,8 @@
|
||||
jsr_db,plain,regularized
|
||||
-10,0.46703,0.4719866667
|
||||
-5,0.6348,0.6301533333
|
||||
0,0.8073133333,0.80122
|
||||
5,0.9191366667,0.91577
|
||||
10,0.9707266667,0.96911
|
||||
15,0.9901433333,0.99006
|
||||
20,0.9968333333,0.9964333333
|
||||
-10,0.11818,0.11519
|
||||
-5,0.2138833333,0.2087733333
|
||||
0,0.40523,0.3974866667
|
||||
5,0.64827,0.6407633333
|
||||
10,0.83815,0.83505
|
||||
15,0.9393566667,0.9379166667
|
||||
20,0.97962,0.9787433333
|
||||
|
||||
|
+22
-22
@@ -1,23 +1,23 @@
|
||||
rho,eve_ser
|
||||
0,0.999985
|
||||
0.1,0.99994625
|
||||
0.2,0.9998125
|
||||
0.3,0.99964375
|
||||
0.4,0.99860875
|
||||
0.5,0.99641875
|
||||
0.6,0.989405
|
||||
0.65,0.9817575
|
||||
0.7,0.96633
|
||||
0.75,0.9402875
|
||||
0.8,0.87396
|
||||
0.84,0.80818
|
||||
0.88,0.7000025
|
||||
0.9,0.62012
|
||||
0.92,0.51693625
|
||||
0.94,0.4271675
|
||||
0.96,0.3636825
|
||||
0.97,0.33119875
|
||||
0.98,0.30263125
|
||||
0.99,0.2772575
|
||||
0.995,0.26772625
|
||||
1,0.25672125
|
||||
0,0.9999725
|
||||
0.1,0.999645
|
||||
0.2,0.9978275
|
||||
0.3,0.98789125
|
||||
0.4,0.953745
|
||||
0.5,0.846655
|
||||
0.6,0.60245875
|
||||
0.65,0.48618375
|
||||
0.7,0.32927
|
||||
0.75,0.23272375
|
||||
0.8,0.1458875
|
||||
0.84,0.1059525
|
||||
0.88,0.08334375
|
||||
0.9,0.07761625
|
||||
0.92,0.069835
|
||||
0.94,0.06505125
|
||||
0.96,0.0602775
|
||||
0.97,0.0587575
|
||||
0.98,0.05626875
|
||||
0.99,0.0543425
|
||||
0.995,0.054125
|
||||
1,0.05307125
|
||||
|
||||
|
+13
-13
@@ -1,14 +1,14 @@
|
||||
frac,ser_mask,ser_perm,ser_pad
|
||||
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
|
||||
0,0.9999716667,0.9999766667,0.9999855534
|
||||
0.2,0.9982225,0.9982933333,0.999867242
|
||||
0.4,0.9558158333,0.9519216667,0.9987800093
|
||||
0.6,0.61956875,0.6330266667,0.9887887893
|
||||
0.75,0.2243020833,0.2672066667,0.940826875
|
||||
0.85,0.09969458333,0.1194716667,0.8206206283
|
||||
0.9,0.07701541667,0.0858,0.6876823738
|
||||
0.92,0.07021208333,0.07434166667,0.6101243663
|
||||
0.94,0.06535041667,0.066805,0.5133063362
|
||||
0.955,0.06155541667,0.06314,0.4252183547
|
||||
0.97,0.05860083333,0.06018333333,0.3211870949
|
||||
0.985,0.05551916667,0.05543333333,0.1983269406
|
||||
1,0.052955,0.05323,0.05323
|
||||
|
||||
|
+11
-11
@@ -1,12 +1,12 @@
|
||||
snr_db,legit,eve_wrong,eve_none,eve_public,oma,chance
|
||||
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
|
||||
0,0.3976709375,0.999875,0.9999815625,0.398049375,0.5239437084,0.9999847412
|
||||
2,0.280670625,0.9998496875,0.9999834375,0.2805728125,0.3879090701,0.9999847412
|
||||
4,0.191034375,0.999809375,0.999985,0.190259375,0.2737289805,0.9999847412
|
||||
6,0.12611875,0.9997775,0.99997875,0.126483125,0.1863040407,0.9999847412
|
||||
8,0.0821671875,0.9997490625,0.999981875,0.0824515625,0.1235895109,0.9999847412
|
||||
10,0.0531603125,0.9997025,0.99998125,0.0529865625,0.08056383667,0.9999847412
|
||||
12,0.034030625,0.9996815625,0.99997625,0.0339634375,0.05191025407,0.9999847412
|
||||
14,0.021604375,0.9996678125,0.999969375,0.021566875,0.03319532309,0.9999847412
|
||||
16,0.013683125,0.9996721875,0.99996,0.0138321875,0.02112425659,0.9999847412
|
||||
18,0.0087159375,0.999639375,0.999954375,0.0087384375,0.01340080653,0.9999847412
|
||||
20,0.00549625,0.9996415625,0.99996,0.0054996875,0.00848434326,0.9999847412
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user