{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "regev-000",
   "metadata": {},
   "source": [
    "# Chapter 50: Regev's LWE — From LPN to a Public-Key Cryptosystem\n",
    "\n",
    "This chapter walks you through Oded Regev's 2005 paper *On Lattices,\n",
    "Learning with Errors, Random Linear Codes, and Cryptography* (STOC '05;\n",
    "Journal of the ACM 56(6), 2009) — the paper that introduced the\n",
    "**Learning with Errors (LWE)** problem and the first cryptosystem\n",
    "provably as hard to break as worst-case lattice problems.\n",
    "\n",
    "Source PDF: `sources/1060590.1060603.pdf` in this repo.\n",
    "\n",
    "The plan:\n",
    "\n",
    "| § | What |\n",
    "|---|---|\n",
    "| 50.1 | Roadmap |\n",
    "| 50.2 | **The simple problem** — Learning Parity with Noise (LPN) mod 2 |\n",
    "| 50.3 | Generalise to LWE mod $p$ |\n",
    "| 50.4 | Two equivalent views: CVP on a $q$-ary lattice, decoding a random code |\n",
    "| 50.5 | **Theorem 1.1** — the quantum worst-case to average-case reduction |\n",
    "| 50.6 | **The public-key cryptosystem** (Section 4 of the paper) |\n",
    "| 50.7 | Closing notes: from Regev 2005 to ML-KEM (2024) |\n",
    "\n",
    "Every section has runnable Python — the same data structures recur from\n",
    "Part I to Part VI, so when you get to the cryptosystem you are not\n",
    "seeing it for the first time.\n",
    "\n",
    "```{admonition} Why this tutorial sits here\n",
    ":class: tip\n",
    "The post-quantum standards ML-KEM (FIPS 203) and ML-DSA (FIPS 204) are\n",
    "*direct descendants* of Regev's construction. Understanding Section 4\n",
    "of his 2005 paper is the cleanest way to get the \"why\" of every design\n",
    "choice in Kyber. You have already covered the quantum half of the\n",
    "course, so the quantum step in Theorem 1.1's proof will be natural.\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-001",
   "metadata": {},
   "source": [
    "## 50.1 Roadmap\n",
    "\n",
    "The story arc has four characters:\n",
    "\n",
    "1. **LPN ($p = 2$).** The \"learning parity with noise\" problem:\n",
    "   given many noisy parity equations $\\langle \\mathbf{s}, \\mathbf{a}_i\\rangle = b_i \\pmod 2$\n",
    "   that hold with some probability $1-\\varepsilon$, recover the secret\n",
    "   $\\mathbf{s} \\in \\mathbb{F}_2^n$. Without noise this is trivial Gaussian\n",
    "   elimination; with noise it is *believed* hard (best-known algorithm\n",
    "   runs in time $2^{O(n/\\log n)}$, Blum–Kalai–Wasserman 2003).\n",
    "\n",
    "2. **LWE ($p > 2$).** The same equations, but modulo a polynomial-sized\n",
    "   prime $p$ and with errors drawn from a (discretised) Gaussian. The\n",
    "   change of modulus is what enables Regev's quantum reduction.\n",
    "\n",
    "3. **Theorem 1.1.** Solving LWE on average is at least as hard as\n",
    "   *worst-case* approximate-SVP on every $n$-dimensional lattice — but\n",
    "   only via a quantum algorithm. A classical worst-case ↔\n",
    "   average-case reduction for LWE was later obtained by\n",
    "   Peikert (2009) for restricted parameters, and extended by\n",
    "   Brakerski–Langlois–Peikert–Regev–Stehlé (2013) to a wider regime;\n",
    "   neither result quite recovers Theorem 1.1's full strength\n",
    "   classically.\n",
    "\n",
    "4. **The cryptosystem.** A few-line public-key scheme whose IND-CPA\n",
    "   security reduces to LWE. Encryption blows up message length by\n",
    "   $O(\\log p)$, decryption rounds to the nearest of two integer\n",
    "   buckets.\n",
    "\n",
    "```{admonition} Notation we will use throughout\n",
    ":class: important\n",
    "- $n$ — security parameter (lattice / secret dimension).\n",
    "- $p$ — a prime modulus, polynomial in $n$ (in the cryptosystem\n",
    "  $n^2 \\le p \\le 2n^2$).\n",
    "- $\\mathbf{s} \\in \\mathbb{Z}_p^n$ — the **secret**.\n",
    "- $\\mathbf{a}_i \\in \\mathbb{Z}_p^n$ — the public \"queries\", uniform.\n",
    "- $e_i \\in \\mathbb{Z}_p$ — small errors.\n",
    "- $b_i := \\langle \\mathbf{a}_i, \\mathbf{s}\\rangle + e_i \\pmod p$.\n",
    "- $\\chi$ — error distribution (in LWE we use $\\bar\\Psi_\\alpha$, a\n",
    "  discretised Gaussian on $\\mathbb{Z}_p$ with parameter $\\alpha p$).\n",
    "- $m$ — number of LWE samples used in the public key. In the\n",
    "  cryptosystem $m = 5n$.\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-002",
   "metadata": {},
   "source": [
    "## 50.2 The simple problem — Learning Parity with Noise (LPN)\n",
    "\n",
    "```{admonition} Definition — LPN($n, \\varepsilon$)\n",
    ":class: important\n",
    "Fix a secret $\\mathbf{s} \\in \\mathbb{F}_2^n$. Each **LPN sample** is a\n",
    "pair $(\\mathbf{a}_i, b_i) \\in \\mathbb{F}_2^n \\times \\mathbb{F}_2$ where\n",
    "$\\mathbf{a}_i$ is uniform and\n",
    "\n",
    "$$\n",
    "b_i \\;=\\; \\langle \\mathbf{a}_i, \\mathbf{s}\\rangle \\;+\\; e_i \\pmod 2,\n",
    "\\qquad\n",
    "\\Pr[e_i = 1] = \\varepsilon.\n",
    "$$\n",
    "\n",
    "The **LPN problem** is: given polynomially many samples, recover $\\mathbf{s}$.\n",
    "```\n",
    "\n",
    "The case $\\varepsilon = 0$ is trivial: gather $n$ linearly-independent\n",
    "samples, write them as a matrix equation $A\\mathbf{s} = \\mathbf{b}$,\n",
    "solve by Gaussian elimination — $O(n^3)$ time.\n",
    "\n",
    "The moment $\\varepsilon > 0$ the problem looks completely different:\n",
    "flipping a single bit of $A\\mathbf{s}$ propagates through Gaussian\n",
    "elimination and contaminates *every* row of the result. Even with the\n",
    "best-known algorithm (Blum–Kalai–Wasserman) the cost is sub-exponential\n",
    "$2^{O(n/\\log n)}$.\n",
    "\n",
    "### 50.2.1 Build an LPN sampler — Exercise\n",
    "\n",
    "Implement an `lpn_sample(s, eps, rng)` helper that returns one\n",
    "$(\\mathbf{a}, b)$ pair. Use it to generate $m$ samples for a small\n",
    "example and verify the noise empirically.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "regev-003",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:18.606933Z",
     "iopub.status.busy": "2026-05-19T07:46:18.606822Z",
     "iopub.status.idle": "2026-05-19T07:46:18.681395Z",
     "shell.execute_reply": "2026-05-19T07:46:18.680963Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Secret    s = [1, 0, 0, 1, 0, 1]\n",
      "Samples   m = 1000,  n = 6,  target eps = 0.1\n",
      "Empirical eps = 0.088   (should be close to 0.1)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "def lpn_sample(s, eps, rng):\n",
    "    '''One LPN sample (a, b) with s in F_2^n, b = <a, s> + e mod 2,  P(e=1)=eps.'''\n",
    "    n = len(s)\n",
    "    a = rng.integers(0, 2, size=n)\n",
    "    b = (int(a @ s) + int(rng.random() < eps)) % 2\n",
    "    return a, b\n",
    "\n",
    "\n",
    "# Demo: n = 6, eps = 0.1, m = 1000 samples.\n",
    "rng = np.random.default_rng(20260519)\n",
    "n, eps, m = 6, 0.1, 1000\n",
    "s_true = rng.integers(0, 2, size=n)\n",
    "\n",
    "A = np.zeros((m, n), dtype=int)\n",
    "b = np.zeros(m, dtype=int)\n",
    "for i in range(m):\n",
    "    A[i], b[i] = lpn_sample(s_true, eps, rng)\n",
    "\n",
    "# Empirical noise rate = fraction of rows where <a_i, s_true> != b_i.\n",
    "predicted = (A @ s_true) % 2\n",
    "empirical_eps = float(np.mean(predicted != b))\n",
    "print(f'Secret    s = {s_true.tolist()}')\n",
    "print(f'Samples   m = {m},  n = {n},  target eps = {eps}')\n",
    "print(f'Empirical eps = {empirical_eps:.3f}   (should be close to {eps})')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-004",
   "metadata": {},
   "source": [
    "### 50.2.2 The $\\varepsilon = 0$ case — Gaussian elimination over $\\mathbb{F}_2$\n",
    "\n",
    "When the noise rate is zero, every equation is exact, and any\n",
    "$n$ linearly-independent samples uniquely determine the secret.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "regev-005",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:18.682660Z",
     "iopub.status.busy": "2026-05-19T07:46:18.682540Z",
     "iopub.status.idle": "2026-05-19T07:46:18.686264Z",
     "shell.execute_reply": "2026-05-19T07:46:18.685957Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "noise-free recovery: rec = [1, 1, 1, 1, 1, 1, 1, 0],  true = [1, 1, 1, 1, 1, 1, 1, 0],  match = True\n",
      "one-bit error      : rec = [0, 1, 0, 0, 1, 0, 1, 1],  matches in 3/8 positions\n"
     ]
    }
   ],
   "source": [
    "def gauss_solve_f2(A, b):\n",
    "    '''Solve A s = b over F_2 for square invertible A.  Returns s or None.'''\n",
    "    n = len(b)\n",
    "    M = np.hstack([A.copy() % 2, b.reshape(-1, 1) % 2])\n",
    "    row = 0\n",
    "    for col in range(n):\n",
    "        # find pivot\n",
    "        piv = None\n",
    "        for r in range(row, M.shape[0]):\n",
    "            if M[r, col]:\n",
    "                piv = r; break\n",
    "        if piv is None:\n",
    "            continue\n",
    "        M[[row, piv]] = M[[piv, row]]\n",
    "        # eliminate other rows\n",
    "        for r in range(M.shape[0]):\n",
    "            if r != row and M[r, col]:\n",
    "                M[r] = (M[r] + M[row]) % 2\n",
    "        row += 1\n",
    "    if row < n:\n",
    "        return None\n",
    "    # back-substitute\n",
    "    return M[:n, -1] % 2\n",
    "\n",
    "\n",
    "# Verify Gaussian elimination on a noise-free instance.\n",
    "rng = np.random.default_rng(7)\n",
    "s_true = rng.integers(0, 2, size=8)\n",
    "A = rng.integers(0, 2, size=(8, 8))\n",
    "while int(round(np.linalg.det(A.astype(float))) % 2) == 0:\n",
    "    A = rng.integers(0, 2, size=(8, 8))\n",
    "b = (A @ s_true) % 2\n",
    "s_rec = gauss_solve_f2(A, b)\n",
    "print(f'noise-free recovery: rec = {s_rec.tolist()},  true = {s_true.tolist()},  match = {np.array_equal(s_rec, s_true)}')\n",
    "\n",
    "# Now break Gaussian elimination by flipping one bit of b.\n",
    "b_noisy = b.copy(); b_noisy[3] ^= 1\n",
    "s_wrong = gauss_solve_f2(A, b_noisy)\n",
    "print(f'one-bit error      : rec = {s_wrong.tolist()},  matches in {int(np.sum(s_wrong == s_true))}/{len(s_true)} positions')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-006",
   "metadata": {},
   "source": [
    "Notice what happens with a single flipped bit: Gaussian elimination\n",
    "*propagates* the error, and the recovered \"secret\" disagrees with the\n",
    "true one in many positions. This is the qualitative phenomenon that\n",
    "makes LPN/LWE so much harder than its noise-free cousin.\n",
    "\n",
    "### 50.2.3 Naive maximum-likelihood — Exercise\n",
    "\n",
    "A textbook attack is the **maximum-likelihood (ML) estimator**: try\n",
    "every $\\mathbf{s} \\in \\mathbb{F}_2^n$ and pick the one minimising the\n",
    "number of \"wrong\" equations. Run-time: $2^n$.\n",
    "\n",
    "This is impractical for cryptographic $n$ but a useful sanity check\n",
    "for tiny $n$.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "regev-007",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:18.687229Z",
     "iopub.status.busy": "2026-05-19T07:46:18.687164Z",
     "iopub.status.idle": "2026-05-19T07:46:18.694838Z",
     "shell.execute_reply": "2026-05-19T07:46:18.694514Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ML attack recovered s = [1, 1, 1, 1, 1, 1, 1, 0]   disagreements = 0 / 500\n",
      "Matches true s ?       False\n",
      "LPN(n=6, eps=0.1)      true s = [1, 0, 0, 1, 0, 1]   rec s = [1, 0, 0, 1, 0, 1]   match = True\n",
      "Total disagreements = 88 / 1000   (expected ~100)\n"
     ]
    }
   ],
   "source": [
    "import itertools\n",
    "\n",
    "def lpn_ml_attack(A, b):\n",
    "    '''Maximum-likelihood attack: try every secret, return the one matching most equations.'''\n",
    "    n = A.shape[1]\n",
    "    best_s, best_disagreements = None, len(b) + 1\n",
    "    for bits in itertools.product([0, 1], repeat=n):\n",
    "        s = np.array(bits, dtype=int)\n",
    "        pred = (A @ s) % 2\n",
    "        d = int(np.sum(pred != b))\n",
    "        if d < best_disagreements:\n",
    "            best_disagreements = d; best_s = s\n",
    "    return best_s, best_disagreements\n",
    "\n",
    "\n",
    "# Run on our (n=6, eps=0.1, m=1000) instance from above.\n",
    "s_rec, dis = lpn_ml_attack(A[:500], b[:500])    # use first 500 samples\n",
    "print(f'ML attack recovered s = {s_rec.tolist()}   disagreements = {dis} / 500')\n",
    "print(f'Matches true s ?       {np.array_equal(s_rec, s_true[:6] if len(s_true)>=6 else s_true)}')\n",
    "\n",
    "# Re-run on the real LPN instance (n=6).\n",
    "rng = np.random.default_rng(20260519)\n",
    "s_true = rng.integers(0, 2, size=6)\n",
    "m = 1000; eps = 0.1\n",
    "A = np.zeros((m, 6), dtype=int); b = np.zeros(m, dtype=int)\n",
    "for i in range(m):\n",
    "    A[i], b[i] = lpn_sample(s_true, eps, rng)\n",
    "s_rec, dis = lpn_ml_attack(A, b)\n",
    "print(f'LPN(n=6, eps=0.1)      true s = {s_true.tolist()}   rec s = {s_rec.tolist()}   match = {np.array_equal(s_rec, s_true)}')\n",
    "print(f'Total disagreements = {dis} / {m}   (expected ~{eps*m:.0f})')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-008",
   "metadata": {},
   "source": [
    "```{admonition} Why this scales so badly\n",
    ":class: warning\n",
    "The ML attack runs in $\\Theta(2^n \\cdot m)$ time. For LPN at $n = 64$\n",
    "the brute force is $\\approx 10^{19} \\cdot m$ — infeasible. Beating\n",
    "brute-force is non-trivial; the best generic attack remains\n",
    "**Blum–Kalai–Wasserman 2003**, which uses cleverly-chosen subset sums of\n",
    "samples to reduce the effective dimension, costing $2^{O(n/\\log n)}$.\n",
    "That is sub-exponential but still exponential in $n / \\log n$.\n",
    "```\n",
    "\n",
    "That is the punch line of §50.2: **adding noise makes a polynomial\n",
    "problem sub-exponential.** Regev's contribution starts by asking what\n",
    "happens when we change the modulus from 2 to a polynomial-size prime.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-009",
   "metadata": {},
   "source": [
    "## 50.3 Generalising to LWE\n",
    "\n",
    "```{admonition} Definition — LWE$_{p,\\chi}$\n",
    ":class: important\n",
    "Fix:\n",
    "- a security parameter $n$,\n",
    "- a prime modulus $p = p(n)$, polynomial in $n$,\n",
    "- an error distribution $\\chi$ on $\\mathbb{Z}_p$ (a \"small\" distribution),\n",
    "- a secret $\\mathbf{s} \\in \\mathbb{Z}_p^n$.\n",
    "\n",
    "An **LWE sample** is a pair $(\\mathbf{a}_i, b_i) \\in \\mathbb{Z}_p^n \\times \\mathbb{Z}_p$\n",
    "with $\\mathbf{a}_i$ uniform and\n",
    "\n",
    "$$\n",
    "b_i \\;=\\; \\langle \\mathbf{a}_i, \\mathbf{s}\\rangle + e_i \\pmod p,\n",
    "\\qquad e_i \\sim \\chi.\n",
    "$$\n",
    "\n",
    "LWE$_{p,\\chi}$ asks: given polynomially many samples, recover\n",
    "$\\mathbf{s}$.\n",
    "```\n",
    "\n",
    "Regev fixes $\\chi = \\bar\\Psi_\\alpha$, where $\\bar\\Psi_\\alpha$ is the\n",
    "**discretised periodic Gaussian** on $\\mathbb{Z}_p$ with parameter\n",
    "$\\alpha$. Operationally:\n",
    "\n",
    "> sample $r \\sim \\mathcal{N}(0, (\\alpha)^2)$, reduce $r$ mod 1\n",
    "> (periodise to $\\mathbb{T} = \\mathbb{R}/\\mathbb{Z}$), then round\n",
    "> $p \\cdot r$ to the nearest integer in $\\mathbb{Z}_p$.\n",
    "\n",
    "For typical parameters $\\alpha$ is set so the standard deviation of\n",
    "$\\alpha p$ is much smaller than $p/2$ — small enough that decryption\n",
    "works, large enough that LWE remains hard.\n",
    "\n",
    "### 50.3.1 Build the LWE sampler — Exercise\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "regev-010",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:18.695972Z",
     "iopub.status.busy": "2026-05-19T07:46:18.695910Z",
     "iopub.status.idle": "2026-05-19T07:46:19.042448Z",
     "shell.execute_reply": "2026-05-19T07:46:19.042105Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Secret s    = [82, 17, 2, 62]\n",
      "Empirical error sd = 1.956   (theory ~ alpha*p/sqrt(2*pi) = 1.935)\n",
      "Error range = [-7, 7]   (vs p/2 = 48)\n"
     ]
    },
    {
     "data": {
      "image/png": "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uXMlMjKymIdGRERERM6q2MU6AQEB8thjj8lnn30mvXr1kkOHDsnUqVOldu3aMn78eImKiiqZIyUiIiIip1GsIDU+Pl4WLlwonTp1kvbt20tCQoIsWLBAZVdx/YYNG2TMmDEld7RERERE5BSKVJO6Zs0aWbx4sSxbtkzc3Nxk7Nix8v7770vHjh2zt7nvvvtUNnXo0KElebxERERE5ASKFKQOGDBAunbtKvPnz1eZ0vxm9jdp0kQFsEREREREpR6k7t27V1q1anXN7erWratWACAiIiIiKvWaVCw5dfjwYZu3HT16VPr27VuU3RIRERERFT1IXbdunZokZQuuX79+fVF2S0RERERUvNn9+Z0PedOmTRIUFFTU3RIRERER2V+TOnPmTNWMALVPnz5qUX9rqampkpGRIQ899BC7loiIiIhKP0jt0aOHPPHEE6Jpmrzyyitq1n6tWrVybOPu7i7NmzfnslNEREREVDZBau/evVUzMqn333+/hIaGFu/eiYiIiIhKagmqF198sSi/RkRERERUskHqsGHDZO7cudK4cWP1/4Ig07p8+XJ7d01EREREVLQgNTExUTIzM7OXmcpvdj8RERERUZkFqWvXrs2xTioRERERkenWSbUlLS2tJHdHRERERE6qSEHq559/LvPnz8++vH//flWr6uXlJTfccINERkaW5DESERERkZMpUpA6e/bsHAv5P/LII2qN1LfeeksuXrwo06ZNK8ljJCIiIiInU6QlqE6fPi0tWrRQ/4+OjpYNGzbIzz//LIMHD5bq1avLk08+WdLHSUREREROpEiZVGRRjfpTTKiqVKmSOk0qhISESExMTMkeJRERERE5lSJlUtu2bSvvvfeeOi3qO++8I3379hUPDw91W1hYmAQFBZX0cRIRERGREylSJvX111+X9evXS5s2bWTfvn3y8ssvZ9/2448/SpcuXQq1vwULFki9evXE09NTunbtKlu3bs132wMHDsjIkSPV9lirFXWwxd0nEREREVWAIPW6665TGVMEfqhP7dSpU/ZtEyZMkBkzZti9r6VLl8qUKVPUqVZ37typsrSDBg3Kd4WAy5cvS4MGDWTWrFkSHBxcIvskIiIiogqyTqqvr6907NhRqlatmuP6m266SZo0aWL3fubNmycTJ06Ue++9V03GWrRokVrKavHixTa379y5s1pdYMyYMdkl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aJBERkaKs/nrr7/k4Ycfli1btqgTvKSnp8vAgQPVcoTObtu2bep10qZNG3FWsbGxct1110mlSpVk5cqVcvDgQbXeOhIfzuqNN96QhQsXyrvvviuHDh1Sl998802ZP3++mAKWoCLziIqKwtcXbf369dnXJSQkqOtWr16tOZv09HQtNDRU++ijjxx9KKby66+/as2aNdMOHDignhu7du1y9CGZxptvvqnVr19fcxZdunTRHn744ezLmZmZWs2aNbWZM2dqzi4yMlK9Pv766y/NmSUmJmqNGzdWnyG9e/fWJk+erDmjp59+WuvZs6ejD8NUhgwZot133305rhsxYoR25513ambATKrJYAiiadOm8tlnn6lv/8io4tsvhq5w+lhng8wQhmdwMof27dtLSEiI3HjjjbJ//35xVhERETJx4kT5/PPPxcvLy9GHYzrx8fFSrVo1cQYoa8BoS//+/bOvw2sFlzdv3izODs8FcJbnQ36QXcbZGa2fJ87op59+Ume2HDVqlPpMxWfKhx9+KM6sR48e6hTyKDMEjFZu3LhRfc6agSnOOEVXoV7ojz/+ULVUqKvCBw5eTDhbljMOSZw8eVL9fOmll2TevHmq7g7DMzfccIN6UTnbhw/qhO655x75z3/+o95sUZNJVx0/flwNU82ZM8cpuiU6OlrVlBln5zPgMkohnBnKQFB7ieFd67MROhucNhxf9jHc7+zweYKhbZTHoCQIffLoo4+Ku7u7OjW7M3rmmWckISFBmjVrJq6urur95LXXXpM777xTzICZ1DJ8IiAALajhQwVBCL71IjDdsGGDmgCBgHXo0KFy8eJFcbb+wAcNPPfcczJy5EiVTf7444/V7d9++604W38gAEtMTJRnn31WKjJ7+8MaMu6DBw9WWRJkmsm54X0UIy4I0pzV2bNnZfLkyfLll1+a8pTgZQ2fJx06dJDXX39dZVFx2nS8V6CO3Vl988036vmBU83jy8ynn36qvuTjpxnwtKhlJCoqSmJiYgrcpkGDBiowRaE/Crwxs9/QuHFjNYsZH97O1B+YJNW3b1/VL1jlwIAZzBi6wjc+Z+qP22+/XVasWKGCNAO++eIbML75muWNpaz6AxkQuHDhgsqud+vWTT755BM1AuEsw/0o+fjuu+9yrHiBrFBcXJwsX75cnNGkSZPUY1+/fr2ateysli1bJrfeeqt6f7B+v8D7B14jWCHE+raKrm7dujJgwAD56KOPsq9DZnXGjBnqS64zql27toor8KXOgP744osvTDEaw+H+MlK9enXVruXy5cvqZ+4PWVw2sorO1B/InHp4eKhlZIwgFTN2McyNNxxn64933nlHvYEYEJxhJjdmeCNwd7b+AHy49OnTJzvL7iwBKiBIx+NGTZkRpOJ9ApcRqDkbjEQ98sgj8uOPP8q6deucOkCFfv36yb59+3Jch1VSMLT79NNPO1WACij9yL0kGcrGKtJnSWEh5sj9nonnhVniDQapJtO9e3dVe4pMyPTp09W6ZSjsPnXqlCp8dzbIJqP+Esvr4Bsf3kxmz56tbsOwrrOpU6dOjss+Pj7qJ9a2q1WrljgbBKjIoOJ5gSEqZGANwcHB4gxQX4f3C9Qod+nSRd566y016RLBiLNBNgjDlsiioqbfWLavSpUq6r3U2aAPctfjent7qwm6zlin+/jjj6uJQhjux6gUyuk++OAD1ZzV0KFD1YgkPltatmwpu3btUvM/7rvvPjEFRy8vQHlt27ZNGzhwoFatWjXN19dX69atm1pyyFmlpaVpTzzxhBYUFKT6o3///tr+/fsdfVimcOrUKadegurjjz9Wj99Wcybz58/X6tSpo7m7u6slqbZs2aI5o/yeC3iekM6Zl6CCFStWaK1atdI8PDzUMn4ffPCB5swSEhLU8wHvH56enlqDBg205557TktNTdXMgDWpRERERGQ6zlO8RURERETlBoNUIiIiIjIdBqlEREREZDoMUomIiIjIdBikEhEREZHpMEglIiIiItNhkEpEREREpsMglYiIiIhMh0EqEREREZkOg1QiomJatmyZvPfee2XSj3FxcWKxWOSTTz4pk/sjInIUBqlEROUoSCUichYMUomIyoimaZKamlrujq04x23mx0xE5sYglYgqrM2bN8vAgQPFz89PfH19pWvXrrJ69eoct/ft21e8vb2lSpUqcscdd0hkZGT27ffcc4+0atVK1q1bJ+3bt1fbdenSRXbs2JFjm08//VQOHDighuHRcJ317//666/Stm1b8fDwkBUrVth134YPP/xQ6tWrJ15eXtKvXz85fvy43Y/dnsdm69gKuu2HH36Qdu3aiaenp9SsWVOmTJkiV65csWu/9kpPT5fXX39dmjVrpu4H+1u+fHmh9kFE5R+DVCKqkP7++2+54YYbVBbvo48+ku+//15uueUWCQsLyw7icDsCuKVLl8oHH3wg27ZtU9tYCw8Pl0cffVSmTp0q33zzjQrIbr31VhVIwQsvvCA33XSTNGjQQO0TDdcZLly4oH7/8ccfl1WrVqkAz977/vnnn+WBBx6QPn36yI8//qiC1FGjRl3zsdu7f1vHVtBtP/30k9x2223SokULVeLw1FNPyaJFi+Suu+6ye7/XkpmZKcOHD5f//ve/8tBDD6k+6NWrl4wcOVL27Nlj936IqALQiIgqoB49emgtWrTQMjIybN5+/fXXq22ysrKyrztw4IBmsVi0X375RV0eP368urx///7sbdauXavhrXPDhg3Z12G7li1b5rkPXI9tt2zZUuj7hq5du2q9evXK8bsvvPCC2ufHH3+c72O397HZOraCbmvfvr3WvXv3HNe9//77atu9e/dec7/2mDt3rubp6ant2rUrx/Vt27bVHn/88SLtk4jKJ2ZSiajCuXz5smzZskXGjx8vrq6uNm9HphVZSWTuMjIyVGvSpInUrl1bZR0NGNJu2bJl9mVkEeHcuXN2HUtAQIAqMyjsfeM2lBUga2sNmcxrPXZ7H1vuYyvouJOSkmT37t157n/06NHq58aNG+3a77XqV+fMmSNjxoxRQ/zGsaM1b95czpw5k73tyZMn82RwiahiYZBKRBVObGysZGVlqQAzv9sRwGE4ulKlSjkaygHOnj2bvW3VqlVz/K67u7v6aV2HWZAaNWoU6b6joqJUcBYUFFTg/orz2AraV+7bsPQVgsjc16OkAHWnly5dsvsY83Pw4EG5ePGiWl4r97EvWbJE1RYbUF7xxRdfFOl+iKh8cHP0ARARlTQEli4uLqo2Mr/bMcFp2rRpqv4xt8DAwBI7FtxPUe67evXq4ubmlmcyVURERIH3V5jHlvvY7Dnu3McTHx+v6n6rVatm134LggAVMOkKjz+34ODg7P9PmjRJOnfurLLlRFQxMUglogoHM9q7d+8un332mTzxxBN5hvyN2w8dOiQzZswo9v0hu2pvZtXe+8Yxd+jQQU2YQlbU8N1335XI/gvLx8dHTYDC/VsfDyaTQc+ePYt9HyEhIeonVmLo1KlTgdvu2rVLTSojooqLQSoRVUizZs1SSzD1799fzRL39/eXnTt3qkzifffdJ7Nnz1a3o6YSNZC4HXWmWKLq3nvvVbPj7YV6ycWLF8vXX38tjRs3VveBZaPyY+99P/fcc2pGPq7DdqhR/fzzz695PCX52Ky99NJLKjuLWlC0I0eOqIwtZt63bt1aigtLTnXs2FHGjRsnzz//vDRs2FCVEWBWP5bgwmoCgFIO3Df6nYgqLtakElGFhMwe1jc11i0dMWKEykrWrVtX3d6jRw812QcTghC4YRmpV155RQVDjRo1KtR9TZgwQU1UeuSRR9QQNIK5gth738OGDVNLPK1Zs0YFh7///rtaUupaSvKxWcPxfPvtt7Jv3z4VPOOLALKZJVUbiuwx1kPFklPTp0+XQYMGyWOPPabWoLUOrLFWLP6OqFUloorLgin+jj4IIiIieyFQR1YY698SUcXFTCoREZUrqEctzAkCiKh8YiaViIiIiEyHmVQiIiIiMh0GqURERERkOgxSiYiIiMh0GKQSERERkekwSCUiIiIi02GQSkRERESmwyCViIiIiEyHQSoRERERmQ6DVCIiIiIyHQapRERERGQ6DFKJiIiIyHQYpBIRERGRmM3/A9xNgL7ySy9/AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 700x350 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def psi_bar_alpha(alpha, p, rng, size=None):\n",
    "    '''Discretised periodic Gaussian on Z_p.  Following Regev (2005) Section 2:\n",
    "    Psi_beta samples a real r ~ N(0, (beta/sqrt(2 pi))^2) and reduces mod 1.\n",
    "    Psi_bar_beta further discretises by multiplying by p and rounding to Z_p.\n",
    "    The resulting standard deviation on Z_p (centred) is approximately\n",
    "    alpha * p / sqrt(2 pi).\n",
    "    '''\n",
    "    sigma_T = alpha / np.sqrt(2 * np.pi)\n",
    "    r = rng.normal(0.0, sigma_T, size=size)\n",
    "    r_mod1 = r - np.floor(r + 0.5)                   # reduce to (-1/2, 1/2]\n",
    "    return np.round(p * r_mod1).astype(int) % p      # discretise to Z_p (centred lift)\n",
    "\n",
    "\n",
    "def lwe_sample(s, p, alpha, rng):\n",
    "    '''One LWE sample (a, b) with b = <a, s> + e mod p, e ~ psi_bar_alpha.'''\n",
    "    n = len(s)\n",
    "    a = rng.integers(0, p, size=n)\n",
    "    e = int(psi_bar_alpha(alpha, p, rng))\n",
    "    b = (int(a @ s) + e) % p\n",
    "    return a, b\n",
    "\n",
    "\n",
    "# Demo: n=4, p=97, alpha=0.05.  Visualise the error empirically.\n",
    "import matplotlib.pyplot as plt\n",
    "rng = np.random.default_rng(2026)\n",
    "n, p, alpha, m = 4, 97, 0.05, 5000\n",
    "s = rng.integers(0, p, size=n)\n",
    "\n",
    "A = np.zeros((m, n), dtype=int); b = np.zeros(m, dtype=int)\n",
    "for i in range(m):\n",
    "    A[i], b[i] = lwe_sample(s, p, alpha, rng)\n",
    "\n",
    "# Recover errors: e_i = (b_i - <a_i, s>) mod p, lifted to (-p/2, p/2].\n",
    "errors = (b - (A @ s)) % p\n",
    "errors_centred = np.where(errors > p // 2, errors - p, errors)\n",
    "\n",
    "print(f'Secret s    = {s.tolist()}')\n",
    "print(f'Empirical error sd = {float(np.std(errors_centred)):.3f}   (theory ~ alpha*p/sqrt(2*pi) = {alpha*p/np.sqrt(2*np.pi):.3f})')\n",
    "print(f'Error range = [{int(errors_centred.min())}, {int(errors_centred.max())}]   (vs p/2 = {p//2})')\n",
    "\n",
    "# Histogram of centred errors.\n",
    "fig, ax = plt.subplots(figsize=(7, 3.5))\n",
    "ax.hist(errors_centred, bins=range(int(errors_centred.min()) - 1, int(errors_centred.max()) + 2),\n",
    "        color='steelblue', edgecolor='navy', alpha=0.8, density=True)\n",
    "xs = np.linspace(errors_centred.min() - 1, errors_centred.max() + 1, 200)\n",
    "sigma = alpha * p\n",
    "ax.plot(xs, np.exp(-xs**2 / (2 * sigma**2)) / (sigma * np.sqrt(2 * np.pi)),\n",
    "        'r-', lw=2, label=fr'$\\mathcal{{N}}(0,\\,(\\alpha p)^2)$ with $\\alpha p = {sigma:.2f}$')\n",
    "ax.set_xlabel(r'centred error  $e_i$', fontsize=11)\n",
    "ax.set_ylabel('density', fontsize=11)\n",
    "ax.set_title(r'$\\bar\\Psi_\\alpha$ noise (centred); $p=$' + f'{p}, $\\\\alpha=${alpha}', fontsize=12)\n",
    "ax.legend(); ax.grid(True, alpha=0.3)\n",
    "plt.tight_layout(); plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-011",
   "metadata": {},
   "source": [
    "### 50.3.2 Visualise samples in the $(a, b)$ plane\n",
    "\n",
    "When $n = 1$, every sample is a 2-D point $(a, b) \\in \\mathbb{Z}_p^2$ —\n",
    "ideal for a picture. The \"ideal\" (zero-error) samples lie exactly on\n",
    "the line $b = s \\cdot a \\pmod p$; the noise jitters each sample\n",
    "vertically by an amount drawn from $\\bar\\Psi_\\alpha$.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "regev-012",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:19.043527Z",
     "iopub.status.busy": "2026-05-19T07:46:19.043403Z",
     "iopub.status.idle": "2026-05-19T07:46:19.090479Z",
     "shell.execute_reply": "2026-05-19T07:46:19.090099Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArIAAAJOCAYAAABLKeTiAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcVdJREFUeJzt3QecFPX9//HPcfRyB9J7UQQRWygqtsSCKCqCRjExYolpxkTRREmMJYmiyS+Jv+RvYmKMyi8BiQWMqCDBhtIEbDQpgvQm0ju3/8d7hjn2lrvj7nZ2Z2fm9Xw8lrmdHXa/+53d2c985/P9fvMSiUTCAAAAgJCpFnQBAAAAgKogkAUAAEAoEcgCAAAglAhkAQAAEEoEsgAAAAglAlkAAACEEoEsAAAAQolAFgAAAKFEIAsAAIBQIpAFAABAKBHIAgAAIJQIZIEUTz/9tOXl5dmyZcuOWDf333+/s+3GjRupRyBEfvOb31jXrl2tqKioxPpdu3ZZfn6+PfTQQ4GVDZnhHa/98vjjj1u7du1sz549vj0nKo9AFmkFezNnziz18X//+9/O42PGjDnssZNOOsl57M033zzsMR0U+vTpU+I1yrpNmzYtK3tvypQpzgFw8+bNFhXbt2+3++67z/r162dHHXWUU5+q7zB7//337Yc//KEdf/zxVq9ePeezdNVVV9nChQtLbDd37lz7+te/bp06dbK6detakyZN7Oyzz7aXX37Z4iQMn+vrr7++3GPAqlWrqvS8W7dutUceecTuuusuq1at5M/gvHnznOC2e/fuPr0LRJU+n3v37rW//vWvQRcl1qoHXQBE05lnnuks3333XRs4cGCJH5A5c+ZY9erV7b333rOvfe1rxY+tWLHCuQ0ePLjEc/3yl7+0jh07HvYaxxxzTEbK/q1vfcspQ61atYp/8B944AHnoNWwYUOLArUgq14V7OnE4q233rKwU2Ciz5SC1BNPPNHWrl1r/+///T/7yle+4pz0eIHJ559/btu2bbMhQ4ZYq1atbOfOnfbCCy/YZZdd5vwgfec737E4CMPn+rvf/a6df/75JdYlEgn73ve+Zx06dLDWrVtX6Xn/8Y9/2P79++2aa6457LFPPvnEWeqECChP7dq1nePI73//e7v11lt9be1FxRHIIiMUICj4VCCbbOrUqc4PkYKN1Me8+14Q7LnooousZ8+eWdtTuqyoW5S1bNnS1qxZYy1atHBa1Xv16mVhN3ToUBs5cqTVrFmzeN3VV19tJ5xwgj388MP2z3/+01l38cUXO7dkasnt0aOH84MU1kB2x44dTkt0lJx++unOLfU4oZOPb37zm1V+3qeeeso5cVEgUlogq5Z6tdjHwVe/+lXnpCDsV2SCoqs+SlPRFcZzzz036OLEEqkFyBgFpB988IGTc+ZRi5laOhScqpUsOT9Nj+mM9owzzkj7tT/++GPnuf7zn/8Ur5s1a5azTi10yVSWU089tdQcWV16/clPfuKsV2DuXdJMzZ/V5VmvZauwsNBuuOEG58e2ItQqrUvbs2fPdsrSoEEDp6Xpf//3fy1T1NqsIDYTFCAoKFRQefLJJ1udOnWcH8o//OEPlklKSUkOYqVz587O523+/Pnl/l+duLRt27bKl9nVwnvbbbc571N126xZM7vgggucfZpMl8JvvPFGa968ubOdyqbWwVTa7qabbnJOCLWdPnvf//73ncuYybl+ugz+jW98wxo1alTiBPBIr1PRz3Wq5cuX27e//W0nyFMQqM+QTgoWL15s2aLPlcqq910VS5cudY4PqS29yYHscccd5xyfFOTp5EC5tKNGjbJMq0z96jOtlukuXbo4gbe2VXCvE9Rs0FUclU3HPKUnXXLJJbZkyZJy/4/3uVW6z7XXXuscK5s2bWq/+MUvnAYOXZEbMGCAFRQUOO/nd7/73WHPod8UHSe1Tf369e28884rNc1MJzw6QVc9Hn300ZW6/F+ZY5i20/t/6aWXKvz88BctssgY/bD+3//9n02fPt35QfCCVQUcum3ZssVJM9BlYO8x/WA0bty4xPNou9TOVDoYpm6XTJeRdYB95513nIOSTJ482cmH++ijj5wUBx0IFUjrEmtZrXCDBg1yDrr6EdNBTPmUooNv6lm5AoLhw4c7wcvf//53J5jR5e4j0Q+nApZLL73UCYAvv/xye+KJJ+z22293zvDVophs3759Tp1UhA6wqTmAmab3o9ZBtXLqpmBK9aEW02OPPdb69++ftfejH8d169aVeplYZdRJll5bJzyvvfaa04JbFQoonn/+eef9duvWzb744gvnh1TBhnfipHKcdtppzmdX2+kzpNdUwKrPowJhWb16tfXu3dsJqvW51HdCgameXydHycG6rmwoWFfHJL3Xir5ORT/XyfS8ujKi793NN9/sfL4VeCgPXqlCqTKxX/Wcyr/X8UOBRVXo+y6pJ7TJn18FWPos6H1eccUV9uc//9kJnBVgJp/0+vleK1u/OjFRUK5UKAV9Cs4VrOl5/vvf/1om6WRfnyedrP361792Ppd/+tOfnJMDnVwp8CuP6lYnC7pS8sorrzjPoXpR+XXM03HzX//6l915551OMKoTfS+//ayzznKO3T/96U+tRo0azv/R78vbb79dvG+0D/v27et8nhU8K41EfQJ0LMrEMUyfJf1+ISAJoAqeeuop/Wom3n///TK3mTt3rrPNr371K+f+vn37EvXq1Us888wzzv3mzZsnHnvsMefvrVu3JvLz8xM333zzYa9R2q1WrVpHLGP//v0TvXv3Lr4/aNAg56bXee2115x1s2fPdp7vpZdeOux1ly5d6tz/7W9/W+J+svvuu8957MYbbyyxfuDAgYnGjRsfsYyrV692/n/Tpk0TK1asKF4/b948Z71XV8nefPPNMusl9VZamVNpH2pbve90aT/m5eUlCgoKEvPnzy9ev379+kSdOnUS11xzTcbfT7L/+7//c/7fk08+edhj3/3ud4uft1q1aokrr7wysWnTpiq978LCwsQtt9xS7jY33XRTomXLlomNGzeWWD948GDn/+/cudO5f9111znlKe27VVRUVOJzV1p9VvR1yvtcl+Z//ud/ErVr105s2bKlQttnYr++/PLLzvZ//vOfE1V1zz33OM+xbdu2wx7bsGGD89hRRx1VokzLly9P1KxZM/Gd73wnY++1svW7Y8eOUt+bPju7du1KVNQ555yTGDJkSIW3/+STT5y68I7rno8++sh5fy+88EKZ/9f73CbX4/79+xNt2rRxjhsPP/xw8fovv/zSOWYkl+3yyy93XnvJkiUljqENGjRInH322SW2U11+/vnnJY6pOvYfKeypyjFM70ePIRi0yCJjdMat1gUv91UtoTrL9UYl0FJnsT/4wQ+c3NkDBw4clh8rjz32mHMWnKwiOaw6c7/nnnuKcwdVDrVcqbOPWmfVY19LtVyV9rqVbZFLfW21pHgtv2XxOpaotaBNmzbF69XSIKmXykWdsyZOnFihcmUqfaAsajFRy+Ddd9/ttCR61DKiz4NamLL1fhYsWGC33HKLk2OpDhmp1DJ55ZVXOi2gauXT58+7dF9Zav3XlQc9l1rXU6lO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Y9a6ddCliYYw7X/4i30fX+z77KlISihHXp9t367pD/1+1vh6912zhQuDLkU0KJBt1cqsbt2gSwIAgD8IZH02b57ZuHF+P2t8MXukf5SeccYZZo0a+fikAAAEKPKpBdl24olmnToFXYroIE3DP19+6Qazder4+KQAAASIQPagAwcO2L59+6qcL6P/q1w55cnVr2+2e7efuyme9u41y893b7kqdd/nsilTzOrVMzvttKBLEh41atSw/Fz+AAJAzMU+kNVYZWvXrrXNmzen9RwKaLZu3WZ79+ZZzZq52cM+bPbscfM6FXzlKm/fa7y7XB+n2BtFY+nSoEsSLg0bNrQWLVrk/P4FgDiKfSDrBbHNmjWzunXrVunHSsHMfkVcVt127MgzjRZBI076VKXKkdWJQa7y9n316tUJdCJG+3bnzp22fv16537Lli2DLhIAIEX1uKcTeEFs48aNfQlmGjSg1SZOwhLIKk1DN7Vu53Axc06dgwnFCmZ1nCDNAAByS6wvgHs5sWqJRW5RS6wmQmDUAv/qUx93gtjK844PVc2hBwBkTqwDWY9fLWnqFb5jhy9PFXsHDriBbCIR+6rwhUYrYNitqsnllnYAiLtYpxb4TVchq1OjvqhRw0zZHsQQ/tAJAXUJAIgaWmR9bvVSAAZ/EHj5l1awcaObIwsAQJQQyPrYw55AwT8aDW3XLh+fMOY0tnGujqTx0EMPWf369Ytvug8AQEVwIdwne/bkOS1ftWr59YzxppbtXA28wkZjGufybF7f+9737Kqrriq+f9RRRwVaHgBAeNAi65N69RJWWOjXs0HDRKUzfuxXv/pVu+222zJakV988YU1b97cli1bZrlMVwqcYY5zlALXY445pviWrUB28ODB9rvf/S4rrwUAyAwCWT8rM4u1ef3119vll19+2PrHH3/cGjRocHCCBtf27dudqTYV3CV76623nB7ZS5YsKX5O3U+99evXz7I9YkEuB16eBx980C677DLr4E2ZlaO2b8+tKZO9z513AuDd92bXS308U+655x5nH27ZsiWjrwMAyBwCWZ8Cr+0fLDZr3dps0SIL0te+9jUncJ05c2bxusmTJztTbE6fPt12J0U0b775prVr186OPvro4nUKWtesWVPiNmrUqKy+Bw27tXWr5TTN+PTkk0/aTTfdlNbz7C0jsbqs9VV5Pg27xVDJh+vevbvz2f/nP/9ZpboGAASPQNanoY1qvfis5a1ZY5bloC9Vly5dnKk01arl0d8DBgywjh072rRp00qsV+CbrFatWk7Qm3xrVM4ApM8//7ydcMIJzgxImh3t/PPPtx0HB9MdP368nXnmmc5c9XrskksuKW799aiV+NZbb3XSAPQ6ulQ/cuQTlp+/w2644QandVmXm1977bUS/+eHP/yhcyssLLQmTZrYL37xC2eWrbIUFRXZ8OHDnTpQWU866SSn7BV9L6leffVVp65OO+20Sr2OV3a9X5X7wgsvLHf9nj177Ec/+pEzq1Tt2rWd+nz//feP+HzJ76VJk8bWt2/Z70WWL19u3/jGN5x9oEv73/zmN+1LDYycwXFZy9pf3vpsjN966aWX2rPPPpvx1wEAZAaBrA80dmydl/7t3hk92oKm4FStrR79rYDnnHPOKV6/a9cup4U2NZCtDLXWXnPNNXbjjTfa/PnzncB40KBBxYGIAqehQ4c6rcOTJk2yatWq2cCBA51gL9kzzzzjBGEzZsxwgtpbbvm+XXPN161Pnz42e/Zs69u3r33rW99yWkGT/4+mhdX/+d///V/7/e9/b3//+9/LLKuCyxEjRjipF3PnzrXbb7/drr32Wnv77bcr9F5SqZW7R48elX4dr+w1a9a09957z9muvPU//elP7YUXXnAeU10oqFewumnTpjL/X/J7+fDD+TZuXPnvZfHixc570XPrRGfixInOup/85CeWCTo5EZWzNKtXr3aWBQUFlmm9e/d2PkM6YQAAhFAi4rZs2aJfb2eZateuXYl58+Y5y3QULVigEOHQbeHCRKYNGTIkMWDAgFIfe+KJJxL16tVL7Nu3L7F169ZE9erVE+vXr0+MHDkycfbZZzvbTJo0yamXzz//vMRz5ufnO/83+fbggw+W+jqzZs1ynmPZsmUVKvOGDRuc7T/55JPideecc07izDPPLL6/Z89+5zWvvfZbxevWrFnj/L+pU6cW/5/jjjsuUVRUVLzNXXfd5axLft4f//jHzt+7d+9O1K1bNzFlypQS5bnpppsS11xzTZXei+r+xhtvdMqwd+9eZ1mR11G5TjnllMOer7T127dvT9SoUSPxr3/9q3idXqtVq1aJ3/zmN2X+v+T3snt3IrF1a/nv5YILLkjce++9JdY9//zziY4dOyYqSu9fn7dUBw4ccOqltPf1pz/9ybn/5ptvOuX98ssvnfu33357onXr1ols+Oijj46438s7Tuj96fOpJeKFfR9f7PtgY7dUtMhWxR13uGNDebfjjrOE19NLyy5dSj6u7bNIra9qDdUlaLUcHnvssda0aVOnRdbLk1WLY6dOnZwc2WRqof3www9L3DQ8Uml02fy8885zLmF//etftyeeeKLE5ehFixY5LYN6HbWueZ2idBk72Yknnlj8d15evjVq1Nh5To/SDWT9+vXF63RJP/nS8+mnn+683gElLKdQ66Jacy+44IIS45Wq5dRLdTjSe0mlFm1d6q/s60hpLbmlrdf/2bdvn51xxhnF69RpT62IajUu6/8lv5drr/26Pfts2e/l888/d1pgf/vb35Yos1qR1eLteeONN0rt4a8OWVdccYWzf1Uf+uz95S9/sY8//tgmTJjg3F+6dGmJ/1OvXj278sor7Te/+Y1t27btsPL89a9/ddJKPOPGjXNSZjp37lxmq/uRttF+ad++vd15550l1iv1wnscABA+jCNbFYMHmymv7uAlUCec8i7bepfNvfutWrnbZ5EuEbdp08ZJI1AAowDWLUora9u2rU2ZMsV57Nxzzz3s/yrI0P+viPz8fCcI0vO9/vrr9qc//cl+/vOfO8GyckSVf6jgQUGhXlspBepgk9ohScHZob/1vHlWs+ahdV7AmpqSUFHq/CavvPKKtVaHvCTKc63Ie0mlVIjU4LAir+PVcWnKWn8kqf/Pey/vvTfFJkwo/7189NFHTk6sHkvlBXmiz0ppnxcF6T179nQCYQWDeu/a33fccYfzOdJJkE6kUv3hD39wTj7OOuus4lExnn76aSdYVgCu8opG31B6ij6vyodW0K70FOUweyqyjUYnSM1nFi9FQyd6AIDwoUW2Knr1Mpszx2zgQOdumV2MBg1yt9P2WaaWVbW66pY87NbZZ5/tdJxSXmA6+bHJQaZaDB944AH74IMPnFzNMWPGOGOsfvrpp84QR2odPO644yrUeaic/lolpAZeyu1Ua5yCuFTdunVzAkm1BCePV6qbAvsjvZfSnHLKKTZv3rwqvU5FqUe9l/vqUQutWtr1WuXReznttDPsRz96wKZPL/u96CRCraI60Ugtc3IwrmHGPvnkk8P+/89+9jMbNmyY0+quk5S77rrLyeVVUKtW2R/84AdObnQqtbJPnTrVCToVwMof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AIB4IbUAgcjb485Jm9i92/LYB2nr0YPxeAEA8UOLLLLv9tuLg1dneSfpBemqV8+dnhYAgDghkEV2BozVnOre7dFHSz7+u9+VfJy51ytl61azadPcKWoBAIgTAllk3sUXZ3b7mFNHr6VLzarxbQYAxAw/fci8l14yGzeu+G6ivG21nbZHpaamveYaJpYAAMQPnb2QHf37m+3da1arluUlSglllVKwZw9pBVWg6lT1AQAQN7TIInuU+1paECtaT25slfzrX2bz56e1ZwAACCUCWWTPwU5eZaYWMKZspRUVmZ18slnTpmntGQAAQolAFtlz//3Ff+7p2MVthe3S5dDj99zD3qgkdfDq3p2htwAA8UQgi+yp7qZk5/3hD1brswXuugUL3OG3JD+fvVFJ69e7NwAA4ohAFtmzcaPt2pmwzdffVjJVduhQt3V240b2RiV9/LHZjBlUGwAgnghkkVVLlpi98ELZfb5QOeeea3beedQaACCeGH4LWXXssWbNmzN4v585snXq+PZ0AACECi2yyKqaNelh75cNG8xef52paQEA8UUgi6wOFTV5stmmTVS6Hw4cMNu/nxm9AADxRSCLrNm1y+1hv28fle6HFi3MLr6YNA0AQHyRI4usqVfP7IorqHC/7Njh1ikAAHFFiyyymloA/+py1CizefOoUQBAfBHIImtefdXs3XepcL/07WvWrh31CUTWxInuRDFaAsi9QHb48OHWq1cva9CggTVr1swuv/xy+/TTT0tss3v3brvllluscePGVr9+fbviiits3bp1gZUZVdetm1mHDtSgX8NuKYitX5/6BCLroYfcyy/DhwddEiBnBRrIvv32206QOm3aNJs4caLt27fP+vbtazuU/HfQ7bffbi+//LI999xzzvarV6+2QYMGBVlsVFGnTmZt2lB9fli61L0BiLApU9zle+8FXRIgZwXa2Wv8+PEl7j/99NNOy+ysWbPs7LPPti1bttiTTz5pI0eOtHM1hZGZPfXUU3bcccc5we9pp50WUMlRWZs3m23Z4rYi5uVRf+latswdfqtjR+oSiKQJE8z27nX/1lLpBRdcEHSpgJyTUzmyClzlqKOOcpYKaNVKe/755xdv07VrV2vXrp1NnTo1sHKi8tR6+PbbBLF++drXmJoWiJSePd0DpHfr1+/wpPjkx7U9gNwZfquoqMhuu+02O+OM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",
      "text/plain": [
       "<Figure size 700x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "true secret s = 7\n",
      "first 8 samples (a, b):  [(3, 21), (2, 14), (18, 11), (11, 8), (13, 22), (13, 22), (16, 20), (0, 0)]\n"
     ]
    }
   ],
   "source": [
    "rng = np.random.default_rng(11)\n",
    "p, alpha = 23, 0.04\n",
    "s_scalar = 7                                                # the 1-D secret\n",
    "n_samples = 60\n",
    "\n",
    "a = rng.integers(0, p, size=n_samples)\n",
    "e = psi_bar_alpha(alpha, p, rng, size=n_samples)\n",
    "b = (a * s_scalar + e) % p\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(7, 6))\n",
    "# Draw the noiseless line  b = s*a mod p, plus its periodic shifts +/- p.\n",
    "xs = np.arange(p + 1)\n",
    "for shift in (-1, 0, 1):\n",
    "    ax.plot(xs, xs * s_scalar + shift * p, 'b:', alpha=0.4, lw=1)\n",
    "# Draw the samples.\n",
    "ax.scatter(a, b, c='red', marker='*', s=70, zorder=5,\n",
    "           label=fr'LWE samples (errors $e_i \\sim \\bar\\Psi_{{{alpha}}}$)')\n",
    "ax.set_xlim(-1, p + 0.5); ax.set_ylim(-2, p + 1)\n",
    "ax.set_xlabel('a'); ax.set_ylabel('b')\n",
    "ax.set_title(fr'LWE with $n=1$, $p={p}$, secret $s={s_scalar}$  ' +\n",
    "             r'($b = s\\,a + e \\;\\mathrm{mod}\\; p$)')\n",
    "ax.grid(True, alpha=0.3); ax.legend(loc='upper left')\n",
    "plt.tight_layout(); plt.show()\n",
    "\n",
    "print(f'true secret s = {s_scalar}')\n",
    "print(f'first 8 samples (a, b):  {list(zip(a[:8].tolist(), b[:8].tolist()))}')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-013",
   "metadata": {},
   "source": [
    "## 50.4 Two equivalent views\n",
    "\n",
    "LWE is the same problem in three guises. Recognising each makes the\n",
    "later proofs and parameter choices easier to read.\n",
    "\n",
    "### 50.4.1 View A — LWE as Bounded-Distance CVP on a $q$-ary lattice\n",
    "\n",
    "Stack $m$ samples as $(A, \\mathbf{b}) \\in \\mathbb{Z}_p^{m \\times n} \\times \\mathbb{Z}_p^m$.\n",
    "Define the **primal $q$-ary lattice**\n",
    "\n",
    "$$\n",
    "\\Lambda_p(A) \\;:=\\; \\bigl\\{\\, \\mathbf{y} \\in \\mathbb{Z}^m \\;:\\; \\mathbf{y} \\equiv A\\mathbf{x} \\pmod p \\text{ for some } \\mathbf{x} \\in \\mathbb{Z}^n \\,\\bigr\\}.\n",
    "$$\n",
    "\n",
    "Then $A\\mathbf{s} \\bmod p$ is a lattice point and $\\mathbf{b} = A\\mathbf{s} + \\mathbf{e}$\n",
    "is its small-distance perturbation. Recovering $\\mathbf{s}$ from\n",
    "$(A, \\mathbf{b})$ = finding the closest lattice vector to $\\mathbf{b}$.\n",
    "\n",
    "### 50.4.2 View B — LWE as decoding a random linear code over $\\mathbb{Z}_p$\n",
    "\n",
    "Read $A$ row by row as the generator matrix of a random $[m, n]$ linear\n",
    "code over $\\mathbb{Z}_p$, the codewords being $\\{A\\mathbf{x} \\bmod p\\}$.\n",
    "$\\mathbf{b}$ is then a codeword corrupted by the $\\bar\\Psi_\\alpha$\n",
    "\"channel\". Recovering $\\mathbf{s}$ = maximum-likelihood decoding.\n",
    "\n",
    "This is the reading that **gives the paper its title** (\"Random Linear\n",
    "Codes\"). It is also a strict generalisation of the LPN view of §50.2.\n",
    "\n",
    "### 50.4.3 Build the $q$-ary lattice — Exercise\n",
    "\n",
    "For a tiny $(n, p, m) = (1, 11, 4)$ instance, enumerate $\\Lambda_p(A)$\n",
    "and plot the first two coordinates with the target $\\mathbf{b}$.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "regev-014",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:19.091413Z",
     "iopub.status.busy": "2026-05-19T07:46:19.091346Z",
     "iopub.status.idle": "2026-05-19T07:46:19.160440Z",
     "shell.execute_reply": "2026-05-19T07:46:19.160106Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A = [5, 5, 8, 10],  s = 4,  e = [0, 0, 0, 0],  b = [9, 9, 10, 7]\n"
     ]
    },
    {
     "data": {
      "image/png": "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8v/85z+uZ7UiZXtkVY6getrFixdTkpBg6u3+8ccfbYcddkjIryzQtjWB9Zb29RXrLm3rozVr1ljHjh3dtc5MWKd6ZMMQq9MPvvnmm5WGWNHg2LqUpbpaamsT/6VaWFjo2pUgS9v6gvWW9vUV6y5t67NElXemVZBdv369LVq0qOS2ek0/+eQTa9GihTsF4cknn+yG3nrxxRetqKjIncVFdH9OTk4KlxwAAAA1La2C7KxZs+zQQw8tuX3ZZZe564EDB9p1111nL7zwgru91157lXqeemf79+9fw0sLAACAVEqrIKswWlHJbk2V84a7axB/u6n8QyNKUFqQ+HWStq3dbZudnW2ZmZkpe30A8FFaBdl0oACrkgZt3BAf/dBQu2lYDYY2Syzatm60rerL27Rpk/LlAABfEGTLbNC+++471yvSrl07ehWr0H5bt261rKwsNsQJRtvW7rbVMug03CtWrHC3dUwAAKByBNkI2phpY6JBehs0aBBD8yHdAkFtRdvW/rbNy8tz1wqzO+64I2UGABADBvuMoJEQhBEQAKRC+ANaNbsAgMoRZKOgNxFAKvDdAwDxIcgCAADASwRZAAAAeIkgixKrVq1yB5l8/fXXcbXKaaedZnfccUeV5q8Dbc477zx3djbtVtWZ3DSe8PDhw/lkakA8bR3r5wwAQE0hyNYy7733nguExx57bNzPvemmm+yEE06wXXfddbv7Pv74Yzdge7QzqP35z392z127dm3c83/11Vdt0qRJ7rTDGvqse/fu9uyzz9oNN9xgyQ5oBOb4xPo5AwBQUwiytczf//5369q1q7322mu2fPnymJ+nYcf03MGDB0e9/5JLLrE//vGPNmfOnO3uU/js1KmTPfroo3HP/8svv3RjZvbt29cNBK8hkNQ727hx43LnxVnX4peINovlcwYAoCYRZGuR9evX25NPPul6zbp16+Z6OmP18ssvW25urh1wwAHb3Td58mRr3ry5XXTRRbZmzZqopQfHH3+8e+145n/OOefYxRdfbN98843rRQ57asv2lOr20KFD3bQddtjBjjrqKHv66aetR48ebuzNli1b2uGHH24bNmwome+0adPs7rvvdvPVpewyl/cY9Qzr7ErhUGwqddB9V111Vclzf//739uZZ57p/l9QUOBCvkom6tevbwcddJDNnDmzwrbWWaRuu+0223333V2btG/f3n1mocrmGctrRmsztc/ZZ59tjRo1cj8eopUJVNSu4ef8xBNPVPj+AACoKQTZJMnfWGjLVm1w1zXlqaeecsFIZQUKLP/4xz9cDWos3n77bevdu/d20xVirrnmGrv11lttl112saZNm7pwV9b+++9vH374oQtZsc5fIfL6669381VZQUUB8KGHHnLj+7777rt23XXX2emnn27nnnuuff755/bWW2/ZSSedVPJeNd8DDzzQhgwZ4uari87UVva1oz3ml7/8pTtVqUopRGFXQVCvEdK0sMTiyiuvtGeeecYt30cffeTCqULjTz/9VO57ufrqq+2WW26xkSNH2rx589wPhdatW5fcH22eRx99dMk8Y33NyDa777777IorrnDL/vzzz9vrr7/u3pOeH1IbVNSusXzOAADUqKCOWbt2rbbKwerVq7e7b9OmTcG8efPcdVVtLtwavP7JN8Gd/5oT3PzMbHet25qebH379g2GDh3q/v/dd98FmZmZwZtvvhnTc0844YTg3HPP3W76NddcE5x//vkltw888MDg2muv3e5xc+bMce26cOHCoLi4OOb533nnnUGHDh1KTTvkkEOCYcOGlbq99957l9yePXu2e62vv/663PdTdh7xPGafffYJbr/9dvf/E088MbjpppuCnJycYN26dcG3337rXnvBggXB+vXrg+zs7OCxxx4reW5hYWHQtm3b4Lbbbov6mvn5+UFubm7wwAMPRL2/onmOGTPGLUMsr1m2zfQ8vYennnqqZNqqVauCvLy8kjaIpV3Dz7mix/hG66vaMNp6W9MS8R2UboqKitz3ka5B2/qC9TZ5lL+0HVEeSwR6ZBNs+rzlNmP+D1YvI8N2bJrnrnVb05Np/vz5NmPGDNcTK6o3PfLII11daiw2bdrkdlNH+uqrr2zChAmuBzSyTjJaj2x4ek3VwsY6/3hE9ub26tXLDjvsMLcL/JRTTrEHHnjAVq9ebYlyyCGHuN5I9USqJ1m9knvuuae98847rkdTpzDu3Lmzq+/VGZj69etX8lwdEKdeS/VoRqPp6s3U8kdT0Ty/+OKLuF4zss30PNXJ9unTp2SaapH32GOPuNq1ss8ZAICaRJBNIJURzF262po3zLXmjXItJyvTXeu2piezzECBVWFrv/32K5k2cOBAtws6PMp8wIABbgglPUYH7cyaNavksdp9Xja0XHrppW7ILO3610FYujz44INRg2y4W7tVq1ZRly/a/OPRsGHDkv9nZmba1KlT7ZVXXnEHto0bN84FssWLF1siqGxAoVUHtikkdunSxU1TuFWQVdCtqjAI1oTINotFLO1a2ecMAEBNIsgm0LpNW2xT4VZrWD+r1HTd1nTdnwxbt261hx9+uKQ3NqShrlQj+fjjj7vb//3vf22fffZxtaiqTY082Gfvvfd29Zoh1VCqtlK1ogqu4UWBecmSJe6gr0ifffaZC7wKrNGUnX916QAs9UqOHj3aLaPe55QpU0ru1+3wgK3ylPeYsE72zjvvLAmtYZDVJayP1Y+BsAY1pN5Sta+CYDTqyVWYfeONN6LeX9E89UOlKq8Zzleh/IMPPiiZph8WCxYsiKtdK/ucAQCoSaUTF6qlcV625eVk2YbNWy2nUWbJdN3WdN2fDDrSfuXKlSVH0oe0K//UU0914VP3bd682S6//HJ3n0LRI488UvJYHSykg5AUbnRUu45218FBe+21V6l5NmnSxF2HJy4IaRf8EUccUe4yRs5fIyBUh8KYgqBKJ3Tkvm7r/es9hTQCgqZrJAK9H+1Gr1ev9O+28h6j5evZs6c99thjds8997jHHnzwwa4tFRrDcKsezwsvvNC1k56r0Qc0GoF2u5c3jJk+kxEjRrgDthQSFRq17HPnznXPqWiegwYNqtJrit6f7tfzNBqB2u1Pf/pTqTaJpV31Oet+AADSAUE2gZo0yLFu7Zq7mtiwJ1YhdvWGAuu7R2t3fzIoqP7qV79yPWVlqbxAtY6zZ892Q3Jp97HoaHXVQob0f/XWauQDhSKVFGj4prJ0ZH+DBg1KBVkF5Oeee87tki5P5PzPP//8ar1fhenp06fbXXfdZfn5+dahQwfXu3zMMceUPEZj3uq9q5dS9bnaPV72RA8VPUZhNfI9KjTqcT/88EOpulKNPqDhtM466yzXi7vvvvu6MXwrCusarUBlGqNGjXJj/WoorAsuuKDCeerEEeE8q/Kacvvtt7sh2jSElsbp1Y+ayJMbVNau4eesZQEAIB1k6Igvq0O0gdYQUuoZ1HihkbShVpjp2LFjlQ9MKthS5A7sUk2sygnUE6twe3DXtpab/b9e2pqmg7bGjh3rdg2rDRR8dQYt7XIOvfTSS67HTo8p23tZkfHjx7vdzwpTKnNQSNMu6rKqOn9sO5VvRW1bE8LPWWUntUk6tG0iv4PSjX50rVixwvXy83dP2/qC9TZ5VJqojhd1pIR7eauDHtkEU1g9olc769O5tauJVTlBsnpi46H62F//+tfuSHZtuLU7OjLEisafXbhwoS1btmy7cVcrotpLHRhUmarOH+kh1s8ZAICaQo9sLe8NiTyASQPvJzNAplPPVm1D29aNtq2N30H0bNG2PmK99adHlv27dQS9oAAAoLYhyNYROrkBAABAbUKQBQAAgJcIsgAAAPASQRYAAABeIsgCAADASwRZAAAAeIkgCwAAAC8RZAEAAOAlgiwAAAC8RJAFAACAlwiyyVJYaDZhgtmWLVZXFBUHtrWo2F0DAICakb+x0Jat2uCu65qsVC9ArfXcc2YXXGDWooXZKadYbVZcHNj6zVtsU+FWs6DYbHOR5eVkWaP62VavXkaqFw8AgFqpYEuRTZ+33OYuXe22wdr2dmvX3A7u2tZyszOtLqBHNlmefrr0dS2mEKuLZP0cXCOnVWTXXXe1jIwMu+6665K+nAAA1CbT5y23GfN/sHoZGbZj0zx3rduaXlcQZJNh0yazf/1r2/9feGHb7STr37+/DR8+3GpaUVGx+xWYWS/DsjLrmWWYuz75/46xP15+qbs/HX388ceWnZ3t2g0AAN+ojGDu0tXWvGGuNW+UazlZme5atzW9rpQZEGST4bXXzDZv3vZ/Xb/+uvmgUHW9cSoKAisOgu1KCDIyzIJg2/3p6JJLLrE//vGPNmfOnITOV8F40qRJCZ0nAABlrdu0raSvYf3SVaK6rem6vy4gyCbDM8+YZf28Yulat5PonHPOsWnTptndd9/tdtPr8vXXX9urr75qBx10kDVr1sxatmxpxx13nH355ZelQtfQoUNdT+4OO+xgRx11lJu+bt06O+OMM6xhw4a200472Z133rldj29xcbGNGTPG9ui8u+3Wdgfr33d/e+G5Z919Qy8YYjPeedsenPA3y83OKlmeimzZssUuvfRSt5xNmza1P/zhD1ZQUJCU9po8ebI1b97cLrroIluzZs12y/byyy/bgQce6NqtQYMGtvvuu9tvf/tbW716dcKWQe2nz6t79+5Wv359tzynnHKKLV68OGGvAQCovRrnZbua2A2bt5aartuarvvrAoJsValcYNWq7S8//LDtQK+tP69Yup4yZdv0aI9PQNmBApGC15Ah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4ZHozz6bkJcFAACoywiyiaCAOmqU2YcfmkUZ99TRdN2vxzG0EgAAQLVRWpAIGj82Fhp+a/TohLwkAABAXUePLAAAALxEkAUAAICXCLIAAADwEkEWAAAAXiLIAgAAwEsEWQAAAHiJIJskL774orVr385dAwAAIPEIskmg8DrgpAH27U/fumvCrFn//v1t+PDh5pNkLrMv7eHLcqYCbQMAqUeQTVKILdq9yGyYueuaCLNsVNOjraLNO9q0Z5991m644QZLd1VZzqq078cff2zZ2dnuuQAAxIogm6QQG/wmMMsxd11TYbYyhYWFKX19/E+LFi2scePGad8kNbWcl1xyif3xj3+0OXPmJP21AAC1B0E2WSE2PPlvVvLD7DnnnGPTpk2zu+++2zIyMtzl66+/dr1bQ4cOdb1jO+ywgx111FHu8bvuuqvdddddpeax11572XXXXef+X1xcbGPGjLGOHTtaXl6e9erVy55++ukKl0HPue2222zPPfe0+vXrW/v27e2mm24q9/EFBQUuvOy4447u8QcddJDNnDmz5H69Xo8ePdzrt2zZ0g4//HDbsGFDqderaBnLe355bRWLV1991S1ns2bN3DyPO+44+/LLLyv8HCr6bCJ7LcP223333S03N3e79tP9t956q+22224xfybh569L06ZN3TowcuRIC4Ig5s+h7HLqth5/5ZVXupDbpk2bkvWmvDaorH0nT55szZs3t4suusjWrFlT6vEvv/yyHXjgga7NGzRo4Nrnt7/9ra1evbrc93zxxRe7ZdY8W7dubQ888ID77AcNGuRCuebxyiuvlHpeZe2g55999tnWqFEj22mnneyOO+6wynz//ffu/ast9t57bzffbt262TvvvFPpcwEAMQrqmLVr12orHqxevXq7+zZt2hTMmzfPXcfjX//6V5CVnRVk7JkR2J8tsOuiXP5s7n49To9PpDVr1gQHHnhgMGTIkOC7775zl61btwaHHHJI0KhRo+CKK64IvvjiC3eRDh06BHfeeWepefTq1Su49tpr3f9vvPHGoEuXLsGrr74afPnll8HEiROD3Nzc4K233ip3Ga688sqgefPmwYMPPhgsXLgwePvtt4MHHnig5H4ty7Bhw0puX3LJJUHbtm2Dl19+OZg7d24wcOBA9/xVq1YFy5cvD7KysoKxY8cGixcvDv773/8G9957b7Bu3bqS51e0jBU9v7y2iqbsMj/99NPBM888497fxx9/HBx//PFBjx49gqKionI/h4o+m8h5h+03adKkYNGiRdu13w033BDssccewSuvvBLzZxJ+/nodffaPPvpo0KBBg+D++++P6XOI1ga63aRJk+C6664LFixYEDz00ENBRkZG8Prrr5fbBuW1r6xfv96tj/q7k6ZNmwZTpkxx/1+xYkWQk5Pj/l7bt28f9OzZM2jWrJm7rc+1vPfcuHFj115aPl1nZmYGxxxzjHvfmnbhhRcGLVu2DDZs2OCeU1xcHAwdOrTCdtBztAz//ve/3fp03HHHudeJbJuy9FlpWbXc+pw+//zz4Oijj3bzCdeZRH0HpTO9V60H5b1n0LbpiPU2eZS/9N2oPJYIBNlqbkRiCrE1EGbLBo5w2t57773dYysKsps3b3ZhZ8aMGaXuHzx4cHD66adHfe38/HwXqhQUCgsLXTCoaPkUXrKzs4PHHnus5H49T0HitttuC2bPnu1W8q+//jrq61W2jJU9P1pbVeVxK1eudK/z6aefVvicyqaF7RcZXKO93+nTp5dq24o+k/A19txzz1LPGTFihJsWy+cQbdl1+6CDDir1Ovvtt5+bb0XvtzzXXHNNcP7555fcVggOf1DNmjXLta8C48aNG900vZcPP/zQLXt57zly+RSiGzZsGJx11lkl0xSqNN/33nvP3dYPHLWDgn60dtD9CtRPPfVUyf0KuHl5eRW+z1tuucXNNzJ0h+/pm2++ifocgiziQdhKHtrWnyBLaUEyygnKUwNlBmX17t07rscvWrTINm7caEcccYTbjRpeHn744VK70SN9/vnnbtfsYYcdFtNraD5btmyxfv36lUzTgT7777+/m5d2m2teKg045ZRT3K7hyF3JlS1jZc+vqoULF9rpp5/udu83adLElWjIN998U635VtZ+4fs95phj3K7xWD6T0AEHHOB2b4e0m17vo6ioqNLPoTw9e/YsdVu72lesWGHx+uqrr2zChAmlShO6d+9un3zyifu/dsOrrdetW+d2+e+zzz6udOG7776zhg0bxrR8mZmZrgxE60JI5QYSLnNl7aD7VV/ep0+fkvtVVrHHHntU+P70Pk466aSS9US03gAAEqey6IVEhdiyYfaZbWF2yrNTXK1lskTb4NerV69UnaRoQy7r16931y+99JLtvPPOpR6j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6NDBvvnmG2vatGmC3gVEvbHt2rWzpUuXWpMmTWiUBKJtk4e2TS7al7b1Eett8mjPePv27W316tXWrFkz/0sLWrVq5S6xWLZsmR166KHWu3dvmzhxYky7r3Nzc92lLIVYwlZyqF1pW9rWN6y3tK+vWHdpWx8lqgQx5UE2Vgqx6olVb6rqYtWTG2rTpk1Klw0AAAA1z5sgO3XqVHeAly677LJLqftSXB0BAACAFPDm0PJzzjnHBdZol3iozEBnBItWboDqoW2Th7albX3Fukvb+oj11p+2TfnBXgAAAECt7pEFAAAAIhFkAQAA4CWCLAAAALxUZ4Ps119/bYMHD7aOHTtaXl6ederUyRUfFxYWpnrRvHTvvffarrvuavXr17c+ffrYhx9+mOpFqhXGjBlj++23nzVu3Nh23HFHO/HEE23+/PmpXqxa6ZZbbrGMjAwbPnx4qhelVtCQiWeeeaa1bNnSfcf26NHDZs2alerF8l5RUZGNHDmy1LbrhhtuYPSeKpo+fbodf/zx1rZtW/f3/9xzz5W6X4cRjRo1ynbaaSfX3ocffrgtXLgwER9lnW7bLVu22IgRI9z3QsOGDd1jzj77bHfSq3jV2SD7xRdfuHMpT5gwwebOnWt33nmn3XfffXbNNdeketG88+STT9pll13mfgh89NFH1qtXLzvqqKNsxYoVqV40702bNs0uuugie//9990QdPrjP/LII23Dhg2pXrRaZebMme67oGfPnqlelFpBZ+zp16+fZWdn2yuvvGLz5s2zO+64w5o3b57qRfPerbfeauPHj7d77rnHPv/8c3f7tttus3HjxqV60byk71Jts9QZE43a9q9//avLBx988IELXdq+bd68ucaXtTa17caNG11e0I8yXT/77LOuk+b//u//4n+hhJzotpa47bbbgo4dO6Z6Mbyz//77BxdddFHJ7aKioqBt27bBmDFjUrpctdGKFSvcOaqnTZuW6kWpNdatWxd07tw5mDp1anDIIYcEw4YNS/UieW/EiBHBQQcdlOrFqJWOPfbY4Nxzzy017aSTTgrOOOOMlC1TbaHv1ilTppTcLi4uDtq0aRPcfvvtJdPWrFkT5ObmBo8//niKlrJ2tG00H374oXvckiVLgnjU2R7Z8s7/26JFi1QvhldUijF79my3uyXytHO6/d5776V02WrrOiqsp4mjHu9jjz22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",
      "text/plain": [
       "<Figure size 700x700 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rng = np.random.default_rng(1)\n",
    "n, p, m = 1, 11, 4\n",
    "s = np.array([4])                            # 1-D secret\n",
    "A = rng.integers(0, p, size=(m, n))\n",
    "alpha = 0.05\n",
    "e = psi_bar_alpha(alpha, p, rng, size=m)\n",
    "b = (A @ s + e) % p\n",
    "\n",
    "print(f'A = {A.flatten().tolist()},  s = {s[0]},  e = {e.tolist()},  b = {b.tolist()}')\n",
    "\n",
    "# Enumerate the primal q-ary lattice in Z^m: {A*x + p*k : x in Z, k in Z^m}.\n",
    "lattice_pts = []\n",
    "for x in range(p):\n",
    "    for k0 in range(-1, 2):\n",
    "        for k1 in range(-1, 2):\n",
    "            pt = A.flatten() * x + np.array([k0 * p, k1 * p, 0, 0])\n",
    "            lattice_pts.append(pt[:2])\n",
    "lattice_pts = np.unique(np.array(lattice_pts), axis=0)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(7, 7))\n",
    "ax.scatter(lattice_pts[:, 0], lattice_pts[:, 1], c='steelblue', s=20, alpha=0.5,\n",
    "           label=r'$\\Lambda_p(A)$ (first two coords)')\n",
    "ax.scatter(*b[:2], c='red', marker='*', s=180, zorder=5,\n",
    "           label=fr'target $\\mathbf{{b}} = A\\mathbf{{s}} + \\mathbf{{e}}$')\n",
    "ax.scatter(*((A @ s) % p)[:2], c='green', marker='D', s=80, edgecolors='black', zorder=5,\n",
    "           label=r'true closest lattice point $A\\mathbf{s}\\;\\mathrm{mod}\\; p$')\n",
    "ax.set_xlabel(r'$y_1$'); ax.set_ylabel(r'$y_2$')\n",
    "ax.set_xlim(-2, p + 1); ax.set_ylim(-2, p + 1)\n",
    "ax.legend(loc='upper left'); ax.grid(True, alpha=0.3)\n",
    "ax.set_title(r'LWE as BDD-CVP on $\\Lambda_p(A)$ (showing two coordinates)')\n",
    "plt.tight_layout(); plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-015",
   "metadata": {},
   "source": [
    "## 50.5 Theorem 1.1 — the worst-case to average-case reduction\n",
    "\n",
    "This is *the* contribution of the paper. The cryptosystem's security\n",
    "rests on it.\n",
    "\n",
    "```{admonition} Theorem 1.1 (Regev 2005, informal)\n",
    ":class: important\n",
    "Let $n, p$ be integers and $\\alpha \\in (0,1)$ with $\\alpha p > 2\\sqrt n$.\n",
    "\n",
    "**If** there exists a polynomial-time algorithm that solves\n",
    "$\\text{LWE}_{p, \\bar\\Psi_\\alpha}$ on average,\n",
    "\n",
    "**then** there exists a polynomial-time *quantum* algorithm that\n",
    "approximates the worst-case shortest-vector problem (SVP) and the\n",
    "shortest-independent-vectors problem (SIVP) on every $n$-dimensional\n",
    "lattice to within $\\tilde O(n / \\alpha)$.\n",
    "```\n",
    "\n",
    "Reading the statement:\n",
    "\n",
    "- The **input direction** (\"if … then\") is what you get to assume.\n",
    "  *Assume* you can break LWE. **Then** you have a quantum algorithm\n",
    "  for worst-case lattice problems — problems that have resisted\n",
    "  efficient algorithms for decades.\n",
    "- Contrapositive (the cryptographer's reading): worst-case lattice\n",
    "  problems are hard against quantum algorithms ⇒ LWE is hard\n",
    "  on average. Designing a cryptosystem around average-case LWE\n",
    "  inherits the worst-case hardness.\n",
    "\n",
    "### 50.5.1 The proof skeleton (§3.1 of the paper)\n",
    "\n",
    "The proof is an **iterative reduction**: start with samples from a wide\n",
    "discrete Gaussian on the *dual* lattice $L^*$, and use the LWE oracle\n",
    "to step down to samples from a *narrower* Gaussian, then narrower\n",
    "again, … until the samples are concentrated enough to read off short\n",
    "vectors of the primal lattice $L$.\n",
    "\n",
    "Each iteration has two parts:\n",
    "\n",
    "1. **Step 1 (classical, uses the LWE oracle).** Given $n^c$ samples\n",
    "   from $D_{L^*, r}$, produce a procedure that solves the\n",
    "   bounded-distance closest-vector problem CVP$_{L^*,\\,\\alpha p / r}$\n",
    "   (i.e. find the lattice point closest to a target known to be within\n",
    "   $\\alpha p / r$).\n",
    "\n",
    "2. **Step 2 (quantum, the only quantum step in the paper!).** Given\n",
    "   the CVP oracle from Step 1, generate $n^c$ fresh samples from\n",
    "   $D_{L^*,\\, r'}$ where the *new* Gaussian parameter is\n",
    "   $r' = r \\cdot \\sqrt{n}/(\\alpha p)$.\n",
    "\n",
    "The condition $\\alpha p > 2\\sqrt n$ in Theorem 1.1 means the\n",
    "shrinkage factor $\\sqrt n /(\\alpha p)$ is bounded below $1/2$, so\n",
    "each iteration *halves* (at least) the Gaussian parameter. After\n",
    "$\\mathrm{poly}(n)$ iterations $r$ drops below $\\sqrt n \\cdot\n",
    "\\lambda_n(L^*) / 2$, and the samples now reveal $n$ linearly-independent\n",
    "short vectors of $L^*$. Dualising back gives the SIVP solution on $L$\n",
    "of length $\\tilde O(\\lambda_n(L) \\cdot n / \\alpha)$.\n",
    "\n",
    "### 50.5.2 Where does the quantum come in?\n",
    "\n",
    "Step 2 is the only step that uses quantum operations. It does two\n",
    "things that have no efficient classical analogue:\n",
    "\n",
    "```{admonition} The \"uncompute\" / Fourier-transform trick\n",
    ":class: tip\n",
    "Think of an oracle that maps a point $\\mathbf x$ near a lattice $L$ to\n",
    "its nearest lattice point $\\mathbf y$. *Classically* you can use this\n",
    "oracle in only one direction: given $\\mathbf x$, you compute $\\mathbf y$.\n",
    "But knowing $\\mathbf x$ already tells you very little (it was just an\n",
    "arbitrary near-lattice point) — there is no obvious way to *generate*\n",
    "new useful samples from this oracle.\n",
    "\n",
    "Quantum-ly the same oracle is much stronger. Working with the\n",
    "superposition $\\sum_\\mathbf{x} f(\\mathbf x) |\\mathbf x\\rangle$ where\n",
    "$f$ is a wide Gaussian centred on each lattice point, you can:\n",
    "\n",
    "1. Adjoin a second register with $|\\mathbf x, \\mathbf y\\rangle$ where\n",
    "   $\\mathbf y$ is the CVP answer.\n",
    "2. **Uncompute** the first register reversibly, leaving\n",
    "   $\\sum f(\\mathbf x) |\\mathbf x - \\mathbf y\\rangle |0\\rangle$ — i.e.\n",
    "   a *Gaussian state* localised on $L$.\n",
    "3. Apply the **quantum Fourier transform** to the first register. By\n",
    "   the Poisson summation formula (Lemma 2.5 of the paper), the QFT of\n",
    "   a periodic Gaussian on $L$ with parameter $r$ is itself\n",
    "   (approximately) a Gaussian, this time on the *dual* lattice $L^*$\n",
    "   and with parameter $\\propto 1/r$.\n",
    "4. Measure. The resulting sample is from $D_{L^*, r'}$ at the\n",
    "   *narrower* parameter $r' = r \\cdot \\sqrt n/(\\alpha p)$ required\n",
    "   for the next iteration of the outer loop.\n",
    "\n",
    "You have already seen each of these primitives in the quantum half of\n",
    "the course: superposition, reversible computation (uncomputation),\n",
    "and the QFT. Regev's contribution is to compose them into a\n",
    "worst-case-to-average-case reduction.\n",
    "```\n",
    "\n",
    "### 50.5.3 A toy \"Fourier-on-lattice\" picture — Exercise\n",
    "\n",
    "A full quantum simulation would require $p^n$-dimensional state vectors.\n",
    "We illustrate the *Fourier-on-the-lattice* idea in 1-D over $\\mathbb{Z}_{p}$.\n",
    "A discrete periodic Gaussian on $\\mathbb{Z}_p$ has Fourier transform that\n",
    "is *another* discrete periodic Gaussian, with the standard-deviation\n",
    "parameters in inverse relation.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "regev-016",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:19.161451Z",
     "iopub.status.busy": "2026-05-19T07:46:19.161378Z",
     "iopub.status.idle": "2026-05-19T07:46:19.312321Z",
     "shell.execute_reply": "2026-05-19T07:46:19.311968Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      s |  sigma(x) |  sigma(F[x]) |  product | expected p/(2*pi) = 10.19\n",
      "    4.0 |      1.60 |         6.38 |    10.19\n",
      "    8.0 |      3.19 |         3.19 |    10.19\n",
      "   16.0 |      6.38 |         1.60 |    10.19\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAGdCAYAAABpSlG5AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA3iJJREFUeJzs3QeYE1XXB/CTZHtf2AJLLwLSi8IHFhCRpmJFRBFE0dcuFgQrYkEpKhYUFRGxoWIXRQRBUVCU3qUsLLCwBbb3TeZ7zs1OSLLZ3ZSZTMr/9zwhhcn0nZs5c+ZcnSRJEgEAAAAAAAAAAACAT9BrPQMAAAAAAAAAAAAAcAaCtgAAAAAAAAAAAAA+BEFbAAAAAAAAAAAAAB+CoC0AAAAAAAAAAACAD0HQFgAAAAAAAAAAAMCHIGgLAAAAAAAAAAAA4EMQtAUAAAAAAAAAAADwIQjaAgAAAAAAAAAAAPgQBG0BAAAAAAAAAAAAfAiCtgAAAAAAAAAAAAA+BEFbAAAAAAAAAAAAAB+CoC0AAASNp59+mnQ6narTWLx4sZjG4cOHHb6HwDB79mzq1KkTmUwm1aaxYMECatmyJVVUVKg2jWDlyvaTjxu5ublembf65kGG40pwCtTtrvZyeTJ+T76LYzgAAHgKQVsAAPDYrl27aNy4cdSsWTMKDw+ntLQ08X737t11ngA5ekybNq3O/7N/rF271m+33Pr160UQJj8/X+tZASdwYC85OVkE+lhhYSHNmjWLpk6dSnr9mZ9S//zzD91zzz3UpUsXio6OFgHX6667jv777z+31vPNN99MlZWV9Pbbb6u+nYqLi2n69Ok0fPhwatSokfgb47/VunAgmZef/9YjIyOpX79+9Msvvyg+rU2bNonh4uLiKDY2loYOHUpbt24lT9S1/fB3qRysS99bJ1pPPxh58xgOAACBCUFbAADwyFdffUW9e/em1atX08SJE+nNN9+kW2+9lX799Vfx+bfffuvwe8888wx9+OGHNo/rr7++1meXXHKJGN7+87PPPtsvttxNN91EZWVl1KpVK5uT5xkzZuDk2U9s3LhRZFleeuml4v2iRYuourqaxo4dazMcBwK//PJLuvjii+nVV1+l22+/nX7//Xfxd7Bz506XpxsREUETJkygl19+mSRJIjXx8vHf5J49e6hHjx5OBSN4vm688UaxrAaDgUaOHEl//PGHYtPavHkznX/++XTo0CER5H3qqado//79NHDgQNq3bx+5q67t509/l46OK77En9alP60TT7a7L28Ttfdnrf5evHkMBwCAwBSi9QwAAID/OnjwoDgZatu2rQhOcTai7P7776cLLrhAZNxu376d2rRpY/PdESNG0DnnnFNrnD179rR5/9dff4kMPh6PP+JgFj/Af/3444/iZJ8zaNn7779Po0aNEifk1h588EH65JNPKCwszPLZmDFjqFu3bvTiiy/SRx995PK0OVOXM3zXrFlDgwcPJrU0bdqUTpw4QU2aNKF///2Xzj333HqD2EuXLqU5c+bQww8/LD4bP348de3alR555BERHFJiWk8++aTI4t2wYQM1btxYfMbHgQ4dOtBjjz0mAuTuqGv7+RNvHldKSkpE5jhov/4CrT2R143ay6XlevPWMRwAAAITMm0BAMBtHLQpLS2ld955xyZgy5KSksQtgXwrNA/nbZzxx8EgDsy0a9fO4e2JnC3YunVrp2rfHjlyhO666y7q2LGjCCRxEGn06NEN1rmzr4fH454yZYp4zYFsudwD/z+f1PHrr7/+utZ4OBjI/8cBLLZ3717KyMhwen3wNuKMz6ioqFqlJjjorhatplsfDtj16dNHrFO+SMDbk/eDV155xeHwy5cvt2TZpqeni4sQQ4YMqTXcgAEDbAK27KyzzhLBXs4qlfF+1FD5D3l/4fnkEgJ1ZawrhcuacBDVGcuWLRMBEM4klvHfGWfY8/559OhRRaa1bt06sZ7lgK0c8OVM2x9++EEcW1xV1/ar7+9SxhmKfMxISEig+Ph4cWcBH//sHT9+nG655RZKTU0Vy8rbn7N7lTx2OaqzWVRURJMnTxb7Mk83JSVF3KnAGcvW88bbicta8DC8rHfeeae4hVteDzxeLm1zww03UGJiosh2dmXZGlqXnqwfZ4/Z8vsDBw44vc3qWy+uLLuj9VffOnGlbXHUnjiznHVNny9gONvmOCJPn9sjDk5yGROef75oW15e7tS68WS5nN1+jv5eXJl3R5zdj711DAcAgMCETFsAAHDb999/L06gOaPWkQsvvFD8Pw/HZROsFRQU1OrYhwO9StixY4eofcmBZD4x41uh+fZqPrlyF9cr5QxCLuHQvHlzcfL31ltv0aBBg8RJKAclnXH11VeLGqeffvqpCBLKy8zzytmcLVq0oI8//piuuuoqm+/xZxzA6d+/v3jP5SE4eOVMbd8HHniA5s2bJ9YJn/QeO3ZMTLuqqoouu+wycVKpBrWmy9uTb5mPiYkRJ+n2OJjHdWj5JLyu/YMzvLj+LD94v1i4cKHIlOUsTjlAy06ePElbtmwRt/MzOYuUA9HO4Ftis7KyLFm67JprrhG1Wjnobn1Bg/dRDtQ98cQTNoEpntaff/5Z5zR4ffLfkzM4eGBdx9UdvD54Pdmv3759+4pnrjnL+7GnuG4uB7Hs8d8aB2O45MT//d//uTTOurZffX+XMg7scDDohRdeEIFQ3mc4MMplMWS8rXmeOBjE+xZ//6effhIBJa6ly0FVtY5dd9xxhwio83Q7d+5Mp06dEgFgvmDAy5uZmSm2EQefOeDOHbFx4Im/w4Ew6wsOHDTkCw4zZ8603Nbt7LLVty49XT+ucmabObNeXJ1v+/XHwcm61gmPx9O2paHlrGubcDvD+5czbU5D0+djFk+f74557bXXKC8vj5YsWVJrWEf7lrvLxVzZrz2dd5mr+0NDx3AAAIA6SQAAAG7Iz8/nsy3piiuuqHe4UaNGieEKCwvF+/fff1+8d/Rw5O67767z/+py5ZVXShEREdKRI0csn+3evVsyGAw245owYYLUqlWrWt+fPn16rWmWlpbWGm7Dhg1iuCVLllg+k5cvPT3d4Xs2Z86cWp/JHn30USk8PFysX1l2drYUEhIi5kvG3x84cGCD6+L3338Xw9555502n8+YMUN8vnHjRkkNaky3urpamj17ttSoUSPLPtOxY0cxzk2bNklHjx6VPv30U+mss86SduzY4XAcvB/qdDopLi5O2rNnj806joyMlMaOHWsz/HvvvSc+l7f/E088IaZbVFTk1Dx/+OGHYngej7WePXtKI0aMsPksISFBuv3222uNgz/jeajLmjVr6vybsn842ufs/fPPP2JY3ncd6dKlizR48OBan+/atUt8b8GCBQ1Ow5lpdevWTerQoYPY7rKKigqpZcuW4jvLli2TXFXf9qvr71I+Htxyyy02n1911VVS48aNbT679dZbpaZNm0q5ubk2n19//fVSfHy8w+OIO8cuR8cVHj8fL+syfvx4Sa/Xi3Vuz2Qy2Syr/d+Bq8tW17r0dP04e8x2ZZs5s16cne/61l9d68TZtsXRdndlOeuavrNtjiPy9Lmdt3bXXXeJz7dt21ZrWEfrxpPlcmb7Ofp7cXbeHX3X1f24oWM4AABAXVAeAQAA3MK34jLu0b0+8v/Lw8vmz58vatVaP5RgNBrp559/piuvvJJatmxp+ZwzU4cNG+b2eK0z/jizkbPY2rdvL27btL792FNcG5QzDDlLSPbZZ5+JjDvrur4ct3Umy5azqji70r5EBWfpMs6+cgdnJHGWEWcDemu6chYUd6bDt+xyTVPOdpo7d67I2uXsTs7o5UxWzgR1ZNeuXWLdTZs2TWRkyThTivcR+1v7uZ7tRRddZNn+vN1DQkJElm9D+Lbbu+++W2SqcWc01vso/x/XgJXxdDlTzPozGd9GzJ3oOLotmHFnXvZ/S3U9nC2BUB+eF74d2J5cI5b/Xwl8yzjvJ5y9xhmHnFnLfx9cD9fd6biy/RxlslrjOwx4fJxZx3i/4n3y8ssvF6/5TgL5wccezoau71jh6bGLj0V///23yDy0x5nn33zzjZg3R7XE7cvB2C+rp8um1DiU3mbOrBd35tt+umq3LQ0tpxJtTn34OGft3nvvtRw/G5pXtbefkvPO3NkfGjqGAwAA1AXlEQAAwC11BWPt8f/ziZN96QO+ndHRSZancnJyxMkR335pj2sG1nUi1hAeJ98+yTUA+dZL69s6nb013RkcSOR6lnxrKgerGL/m4CSfyLuCT7o5UHfFFVfU6ghHrvVXVwkBT7g6Xb4dmG+BtR6WA6VcVsMa36rLt49zMEPGt/0uWLBAdGjF24j3Kf5/Dn44wt9n3IGeI9bzwOPg5eDt7iouq8BlFrgOo1wDVsZ1GrlmonXJBHm+HAVt5X2trgAEBwQc1dhVCweZOMhjT64D6aikgTs4YMPBbA78f/DBB+Iz3r7c2dnzzz/vVuDVE9aBVHm9M76VmvdnPvZw4J3rOPPDkezsbNWOXdzZEV8c4IsXfBFj5MiRIiDHtaN53BzocrR/OWLfcaSny6bUONTYZg2tF3fm2379qd22NLScarc59vssH6u5DIujuryurBsltp+S8+7u/tDQMRwAAKAuCNoCAIBbOBjF9US5U5/68P9znb6G6sppoa4TKM54s8fZN3xSzbXqOHOSl5+/z3UIOdtHSRxo4c5QuAYsB8c4w/SNN95weTx80sn1XR2d0HJNVTmLzx1co48Dao4CAq5Od9u2baIGJ2fB1oezRDkDjLN4OZOJA6ycecWBW+5wiTuR4UxDzv59/fXXHU6fszU5A5j3SfuAI2dzyllWjOuBckCAg18yngYHpfliRF1Z5hxoGTFihDix58607Ovu8jww6/mT/44czTMHKLiuZV3BUA6Enz59mpzBGcWe9qLOnYFxcMmenAHrqM6wuzg4+/DDD4t9g//munXrRo899pj4v7qyqevjzParS13rTQ7IyMcBzk60zqy21r17d1IL1+bkvwfuVGrlypUi2M21P7/66iunazDL7Pc1JZZNiXG4csx2Zps5w535duXChRJti6fLqVSbI6svOOnKulFi+7mqocCqO/tDQ8dwAACAuiBoCwAAbuPbA7lncw5uWfcwLuOAFQfwuIMnb+GgFJ8Y7d+/v9b/7du3r1bWDgfW7HFv3vY4W5JP0F566SWbQJ+j73t6Usgn67zOuNMYzsIKDQ2lMWPGuDwdOQvaPmDOJ7xffPGFyPS0zqTiDlU4u5S3KZ+Ycsc0nKXHQVJ7PE77wKe70+WgrXWpgrpwZz3cIzgHFzgwywEGvjX2tttuE4E4+SSfe/TmbClHOKPVUSCAgya8Pbm0gmz58uUimGzdKZg8n+np6Q4DTDwO/rvg2/pXrVolvm+Pg7acyWUduOb54g52rDu+kvG06guu83rhzGRn8Lisl8cdPXv2pDVr1oiAtnXQngPm8v8rybqXecbrlfc9Z/YZe/VtP0+z4HjbcSCYA4juZD67cuyqL6DOZSX4wdl+HKzlwPfvv/8utpV8wUDtZXO0Lj1dP64es53B89TQelFivuvbv5RsW9yZvhJtDu+z1hm0fDcBtyGeHmuU2H5Kz7s7+0NDx3AAAIC6oKYtAAC4jTPgOHvkf//7n6gzZ40z//j2Zj6h4mCgt3BAjuvKcTAvIyPD8jn3oM71Iq1xYI+zIq2zhTlbkDPVHI3XPruHsznryvCqj3wLfl0n5VxKgjM1P/roI3Gb6vDhw2uVl+CaqNbLV9+tpRzksjZv3jyRqfroo4/afM7vly5dKrIop0yZIpbXOpDgLFen62zQlm/75pNz7u2c18mkSZPohx9+ED15f/fdd/T555+LiwR8y2pdGU38fb691Towxu/59mTeb/r162f5nG9H5xIH1uSe1Lkcgz3eFzjQwfV2OThdV6/rPA8cJLDuFZ63p3W5BGu8zgYMGFDnevF2Tdtrr71WLKv1rcGcnceBb15/vJ0Y12/k5eJaj0rhTOt//vlHZCVy4NtV9W2/hv4uG8LHCA76c71LR0Ek3s+UOnbZ4+1hfys9XwTgrGfeNryuuFYulxxxtOwNZS66umyO1qWn68fVY7YznFkvSsx3ffuXkm2LO9N3ts2pD9eot59/xuNUk6f7tTvz7s7+0NAxHAAAoC7ItAUAALdxtuSSJUto7Nix4rZlrofHwSgOnL333nvilkAOArpSw04J3FHVihUrxK3CnHHGWZh8IsZBMeuTfc4umjp1qsgove+++0SQ6a233hK3Xdt3JHLZZZfRhx9+KG5d5exJDsxxUJJvt3YV15tkjz/+uJgHzmri7Ezreqp8uyoHx9izzz5baxyctcOdetXXGRnPG5/QchDoxhtvpPPOO09kRXM2FQc8+TNrzZo1E7VeeVkZD+tOYMzV6XLQlreXfPLMAQPeb+zJwUB7XO6A119DOLjLJ9ScYcnLyB3QcFYZT5cDJIsWLbLJjOJgGe8P1jjzmEsY8LbnjF5rDz30kAge87zwRQsOgFiTO/XhE337AC3XwOUgLgdUrGv2cjkJHhfXB66LUjVt+XZonr7ckRUHQjibWb6Fm/d9xoHZ0aNHi+A7Z3PycYBrzsp/97KNGzeKDGAOstt3WOfMtDg79JlnnqGhQ4eKfYpv2ebAMO8fnG3tjvq2X11/l6548cUXRRYyryPOAOdjBW8/Pp7wNBsqY+HssctRdjtnH/Mxg4P4XO+Xp8cBbvnCy8yZM0XZBD5u3H777eIYwgFPvsDAf5/W+52ny1bXuvR0/bhyzHaWM+vF0/mub50o2bZ40u401ObUh4+Xo0aNEn+bPP987LvhhhvEvqg2T/drd+bdlf3BmWM4AABAnSQAAAAP7dixQ7rhhhukJk2aSHq9nlNbpIiICGnXrl21hn3//ffF///zzz9Ojfvuu+8Ww7vqt99+k/r06SOFhYVJbdu2lRYsWCBNnz691rhWrlwpde3aVQzXsWNH6aOPPnI4XF5enjRx4kQpKSlJiomJkYYNGybt3btXatWqlTRhwoRay5eenu7wvezZZ5+VmjVrZllf9v9fUVEhJSYmSvHx8VJZWVmt5ePvDBw4sMH1wPN98803i3GFh4dLvXr1kt577706h3/nnXfEuNevX9/guJWYblFRkaTT6aT9+/dLavvll1/Esm3cuFGaNGmSWLdxcXHSmDFjpIyMDJth33jjDfH/VVVVtcbz8ssvi32gtLTU5nPeHjz+uh7ydg0JCZEee+wxm+/eeuutYj1dffXVNp9PnTpVatmypWQymSS18b5c17zb75+8Tz788MPib57n+9xzz5VWrFhhM8yaNWvEd/nvyZ1pHThwQBo6dKj4m+NpdOrUSXrhhRfEOvREXduvrr9L+XiQk5NjM2xdf9tZWVniuNWiRQspNDRUrKOLL75Y/G0pdeyynzavkylTpkg9evSQYmNjpejoaPH6zTfftBn3kSNHpPHjx0vJyclinfL4eV7ldVrXsrqzbHUd4zxdP84cs13dZg2tF2fnu6H152idONu2OJp/V5ezvnanoTbHEXn6u3fvlq699lqx7/E47rnnnlrjqG/deLpcDW0/R99zdt49/Tv35jEcAAACj47/qTukCwAA4DrOvr355ptFZiG/Btdxhh3f2syZUNbZi2rimqScacXZQ3xr7IIFC1SfJtdj5Y6+OCtb7Z61uTwDl/QoKSmh8PDweofleeJsRS65YI9vz+aMzdmzZ1t6W1cD39bOdRWnTZvmdmYpkGbbDyDQ2xzOoOfscL6DwZVyCr7AG/OOYzgAAHgKNW0BAEBxfJsl1wjlWz7lnt7BNVxagE8meV16A9fQ5Fve+dbQV199lT755JMGa+YqgUsj9OrVS/WArdzZFwfrGgrYskGDBtEDDzzg8P/4NuZHHnmE5syZ43Tv7u7gUgB8CzPXhgbleGv7AfgTb7c5wQDHcAAA8BQybQEAAHwIZ7ty7UquKcjZP+7WaXQF18PkurOczSlnHt55552iExe1s205IMk1Fd3p8MxVnEHMHXF9++23qk8LACDQ2xxk2gIAAKgLHZEBAAD4EO5Uh7Nde/bsSYsXL/bKNGNjY2t1cmTfAZdavFGCgXEAeteuXaJjLAAA0K7NAQAAAOcg0xYAAAAAAAAAAADAh6CmLQAAAAAAAAAAAIAPQdAWAAAAAAAAAAAAwIcgaAsAAAAAAAAAAADgQxC0BQAAAAAAAAAAAPAhCNoCAAAAAAAAAAAA+BAEbQEAAAAAAAAAAAB8CIK2AAAAAAAAAAAAAD4EQVsAAAAAAAAAAAAAH4KgLQAAAAAAAAAAAIAPQdAWAAAAAAAAAAAAwIcgaAsAAAAAAAAAAADgQxC0BQAAAAAAAAAAAPAhCNoCAAAAAAAAAAAA+BAEbQEAAAAAAAAAAAB8CIK2AAAAAAAAAAAAAD4EQVsAAAAAAAAAAAAAH4KgLQAAAAAAAAAAAIAPQdAWAAAAAAAAAAAAwIcgaAsAAAAAAAAAAADgQxC0BQAAAAAAAAAAAPAhCNoCAAAAAAAAAAAA+BAEbQEAAAAAAAAAAAB8CIK2AAAAAAAAAAAAAD4EQVsAAAAAAAAAAAAAH4KgLQAAAAAAAAAAAIAPQdAWAAAAAAAAAAAAwIcgaAsAAAAAAAAAAADgQxC0BQAAAAAAAAAAAPAhCNoCAAAAAAAAAAAA+BAEbQEAAAAAAAAAAAB8CIK2AAAAAAAAAAAAAD4EQVsAAAAAAAAAAAAAH4KgLQAAAAAAAAAAAIAPQdAWAAAAAAAAAAAAwIcgaAsAAAAAAAAAAADgQxC0BQAAAAAAAAAAAPAhCNoCAAAAAAAAAAAA+BAEbQEAAAAAAAAAAAB8CIK2AAAAAAAAAAAAAD4EQVsAAAAAAAAAAAAAH4KgLQAAAAAAAAAAAIAPQdAWQGOzZ8+mTp06kclkIl/y9NNPk06n03o2wA8sWLCAWrZsSRUVFVrPCgD4MLR34O/Q3gGAO9D+QSBAG6gNBG0hKD3//PMiINm1a1enhudg1NSpUyktLY0iIyOpX79+9Msvv3g8H4WFhTRr1iwxbr0+uP4c169fLwLD+fn5Ws+KTyguLqbp06fT8OHDqVGjRmL/XLx4seL7oyvTYZs2bRLDxsXFUWxsLA0dOpS2bt1qM8zNN99MlZWV9Pbbb7u41ACghv3799P1119PzZs3p6ioKHFh8JlnnqHS0tIGv4v2Tnlo72yhvQMAV7j623Xz5s00atQoMSy3gXy+99prrzk1LTXaQJzv4XzP3X3ZW+d8zpzvMZzzaSO4okQARHTs2DGaOXMmRUdHO70++AD18ssv04033kivvvoqGQwGGjlyJP3xxx8erdNFixZRdXU1jR07Nui2DZ/EzpgxA0HbGrm5uSKosmfPHurRo4dq+6Mr0+Efveeffz4dOnRINPpPPfWUCAYNHDiQ9u3bZxkuIiKCJkyYIOZJkiTndgAAUMXRo0epb9++9Ndff9E999xD8+bNo/79+4u/YWfaGrR3ykN7ZwvtHQCodcxYuXKlaPOys7PpySefFL+TL7vsMnH+5ww12kCc7+F8z5192dP90dlpOXu+x3DOpxEJIMiMGTNGGjx4sDRw4ECpS5cuDQ7/999/cxRKmjNnjuWzsrIyqV27dlL//v09mpfu3btL48aNk5RUXFysyHimT58ullstvD55/Onp6apNw5+Ul5dLJ06cEK//+ecfsW7ef/99xfdHZ6fDRo4cKSUmJkq5ubmWzzIzM6WYmBjp6quvthn233//FeNavXq1C0sNAEp7/vnnxd/izp07bT4fP368+Pz06dN1fhftnTrQ3tlCewcAahwzCgoKpNTUVOmqq66SjEajyytZrTYQ53s433N1X1Zif3R2Wq6c7zGc83kfMm1BExkZGTRp0iRq27atuGLTpEkTcdXowIEDqk73999/p2XLlonMI2fx8HxV6/bbb7d8xvN866230oYNG0RWkzvS09Np+/btNGTIEIe1ZPfu3UvXXXeduE2hcePGdP/991N5ebnDYXfv3k033HADJSYmiitlbMuWLTRixAjx/ZiYGLr44otF5pUjfLXu3HPPFcvVrl07h7e585W+1q1bO1379vjx42Id8e0c4eHh1KZNG7rzzjvFbfT8nSlTpojh+HP+Pj8OHz7c4Hp75513qHfv3uJ2J/l78oP3J2cpNR6l8DrivwO190dnp8PWrVsn9k/e/2RNmzYVV15/+OEHcduNrE+fPuLWm2+//dapcQMEC2+3d3wbJktNTbX5nP92uQxPWFhYnd9Fe2eG9k5daO8A/Ju32zVnjxmffPIJZWVliTJ43N6VlJS41GeIGm1gXed7rpzz1Xe+58o5nzPne662gTjfc40r52HeOudz5XyP4ZzP+0I0mCYEOW5MzznnHHFguO222yglJUUcdL7++msKCbHdJauqqqigoMCp8XLAqL66sEajke69917xI6Nbt25Ozy83hB06dBANoTW+/ZRxvZcWLVqQO7dLMg4cOsKNNzeYL7zwgmh4uRZTXl4eLVmypNawo0ePprPOOkuUfeDb03ft2kUXXHCBmOdHHnmEQkNDRcM8aNAg+u2330Q9HNmOHTtE3Zrk5GTRGHO5Br41wv6E3xWZmZli/XC9Wm5ouJ4iN+rc+HBNxauvvpr+++8/+vTTT+mVV16hpKQk8T2eh/o88MADIuDO8ztx4kRxqxN/n/cTvvWJGxFnKDUeNfZTrfbHuuoocf0kexzo5uD7zp076f/+7/8sn/O+/OeffyoybYBAoEV7x8d5rpXOP+q5BA1P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",
      "text/plain": [
       "<Figure size 1400x400 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Discrete periodic Gaussian on Z_p: rho_s(x) = sum_k exp(-pi * ((x + k*p)/s)^2).\n",
    "# Its DFT (= QFT on a 1-D quantum register of size p) is itself approximately\n",
    "# Gaussian, with standard deviation inversely proportional to that of rho_s.\n",
    "#\n",
    "# Specifically, the std of x ~ pmf is approximately s/sqrt(2 pi), and the std\n",
    "# of j ~ |DFT[pmf]|^2 is approximately p / (s * sqrt(2 pi)), so the product\n",
    "# is approximately p/(2 pi) -- the discrete uncertainty principle.\n",
    "\n",
    "def periodic_gaussian_pmf(p, s):\n",
    "    xs = np.arange(p)\n",
    "    pmf = np.zeros(p)\n",
    "    K = 10                                                  # truncate periodic sum at |k|<=K\n",
    "    for k in range(-K, K + 1):\n",
    "        pmf += np.exp(-np.pi * ((xs + k * p) / s) ** 2)\n",
    "    pmf /= pmf.sum()\n",
    "    return pmf\n",
    "\n",
    "\n",
    "def centred_std(pmf, p):\n",
    "    '''Std of a Z_p-valued random variable, with indices folded to (-p/2, p/2].'''\n",
    "    xs = np.arange(p)\n",
    "    xs_c = np.where(xs <= p // 2, xs, xs - p)\n",
    "    return float(np.sqrt((xs_c ** 2) @ pmf))\n",
    "\n",
    "\n",
    "p = 64\n",
    "print(f'  {\"s\":>5} | {\"sigma(x)\":>9} | {\"sigma(F[x])\":>12} | '\n",
    "      f'{\"product\":>8} | expected p/(2*pi) = {p/(2*np.pi):.2f}')\n",
    "for s in (4.0, 8.0, 16.0):\n",
    "    pmf = periodic_gaussian_pmf(p, s)\n",
    "    # Treat the QFT amplitude spectrum |F[pmf]| as a pseudo-distribution\n",
    "    # (Fourier-transform-of-Gaussian = Gaussian, so |F| has the right shape).\n",
    "    spec = np.abs(np.fft.fft(pmf))\n",
    "    spec /= spec.sum()\n",
    "    sigma_x  = centred_std(pmf,  p)\n",
    "    sigma_fx = centred_std(spec, p)\n",
    "    print(f'  {s:5.1f} | {sigma_x:9.2f} | {sigma_fx:12.2f} | {sigma_x*sigma_fx:8.2f}')\n",
    "\n",
    "# Plot the duality: one column per s, with primal and dual OVERLAID.\n",
    "# The previous version drew the same three widths twice (once per panel),\n",
    "# so the two panels were visually identical -- the duality was invisible.\n",
    "# Here, each subplot fixes s and shows primal vs |DFT[primal]| on the same\n",
    "# axes, so you SEE the width flip directly within each column AND across columns.\n",
    "xs_sorted = np.arange(-p // 2, p // 2)             # already sorted -> smooth lines\n",
    "\n",
    "fig, axes = plt.subplots(1, 3, figsize=(14, 4), sharey=True)\n",
    "for ax, s in zip(axes, (4.0, 8.0, 16.0)):\n",
    "    pmf  = periodic_gaussian_pmf(p, s)\n",
    "    spec = np.abs(np.fft.fft(pmf)); spec /= spec.sum()\n",
    "    sigma_x  = centred_std(pmf,  p)\n",
    "    sigma_fx = centred_std(spec, p)\n",
    "    ax.plot(xs_sorted, np.fft.fftshift(pmf),  '-o', markersize=3, color='steelblue',\n",
    "            label=rf'primal $\\rho_s$ ($\\sigma_x = {sigma_x:.2f}$)')\n",
    "    ax.plot(xs_sorted, np.fft.fftshift(spec), '-o', markersize=3, color='crimson',\n",
    "            label=rf'$|\\,\\mathrm{{DFT}}[\\rho_s]\\,|$ ($\\sigma_F = {sigma_fx:.2f}$)')\n",
    "    ax.set_title(fr'$s = {s}$  (product $\\sigma_x\\sigma_F = {sigma_x*sigma_fx:.2f}$)')\n",
    "    ax.set_xlabel('coordinate (centred)'); ax.grid(True, alpha=0.3); ax.legend(fontsize=9)\n",
    "axes[0].set_ylabel('mass / amplitude')\n",
    "plt.suptitle(r'QFT duality: $\\sigma_x \\cdot \\sigma_F \\approx p/(2\\pi) = $'\n",
    "             + f'{p / (2 * np.pi):.2f}  (the discrete uncertainty principle)',\n",
    "             y=1.02, fontsize=12)\n",
    "plt.tight_layout(); plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-017",
   "metadata": {},
   "source": [
    "```{admonition} Connection to the main theorem\n",
    ":class: tip\n",
    "The product $\\sigma_x \\cdot \\sigma_{\\hat x}$ stays approximately\n",
    "constant (the discrete-uncertainty principle). When Regev's iteration\n",
    "gives us a \"wide\" Gaussian on $L^*$ with parameter $r$, applying the\n",
    "QFT yields a sample concentrated near $L$ with parameter $\\sim 1/r$ —\n",
    "i.e. *narrower*. Iterating this trick is exactly how the proof\n",
    "ratchets down the noise.\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-018",
   "metadata": {},
   "source": [
    "## 50.6 The public-key cryptosystem (Section 4 of the paper)\n",
    "\n",
    "We can now read Section 4 of the paper line by line. Below is the spec\n",
    "*verbatim* from the paper, then a complete implementation.\n",
    "\n",
    "```{admonition} Spec — Regev 2005, Section 4\n",
    ":class: important\n",
    "\n",
    "**Parameters.** Choose $m = 5n$ and $p$ a prime in $[n^2, 2n^2]$. The\n",
    "noise distribution is $\\chi = \\bar\\Psi_{\\alpha(n)}$ with\n",
    "$\\alpha(n) = o(1/\\sqrt{n \\log n})$ — concretely we take\n",
    "$\\alpha(n) = 1/(\\sqrt n \\log n)$.\n",
    "\n",
    "**Private key.** Choose $\\mathbf{s} \\in \\mathbb{Z}_p^n$ uniformly at random.\n",
    "\n",
    "**Public key.** For $i = 1, \\ldots, m$, choose $\\mathbf{a}_i \\in \\mathbb{Z}_p^n$\n",
    "independently and uniformly, and $e_i \\sim \\chi$ independently. The\n",
    "public key is\n",
    "\n",
    "$$\n",
    "\\bigl( (\\mathbf{a}_i,\\, b_i) \\bigr)_{i = 1}^m,\n",
    "\\qquad b_i \\;=\\; \\langle \\mathbf{a}_i, \\mathbf{s}\\rangle + e_i \\pmod p.\n",
    "$$\n",
    "\n",
    "**Encryption of a bit $\\mu \\in \\{0, 1\\}$.** Choose a random subset\n",
    "$S \\subseteq [m]$ (each index independently with probability 1/2).\n",
    "The ciphertext is\n",
    "\n",
    "$$\n",
    "\\Bigl(\\;\\sum_{i \\in S} \\mathbf{a}_i \\;,\\;\\;\n",
    "       \\mu \\cdot \\lfloor p/2 \\rfloor + \\sum_{i \\in S} b_i \\;\\Bigr) \\;\\bmod p.\n",
    "$$\n",
    "\n",
    "**Decryption of $(\\mathbf{a}, b)$.** Compute $d = b - \\langle \\mathbf{a}, \\mathbf{s}\\rangle \\bmod p$\n",
    "and lift to $(-p/2, p/2]$. Output **0** if $|d| < p/4$, output **1**\n",
    "otherwise.\n",
    "```\n",
    "\n",
    "### 50.6.1 Why decryption works — the noise budget\n",
    "\n",
    "The honest ciphertext is\n",
    "\n",
    "$$\n",
    "b - \\langle\\mathbf{a}, \\mathbf{s}\\rangle \\;=\\;\n",
    "\\mu \\lfloor p/2\\rfloor + \\sum_{i\\in S} (b_i - \\langle\\mathbf{a}_i, \\mathbf{s}\\rangle)\n",
    "\\;=\\; \\mu\\lfloor p/2\\rfloor + \\sum_{i\\in S} e_i \\pmod p.\n",
    "$$\n",
    "\n",
    "The accumulated error is the sum of $|S|$ iid samples from\n",
    "$\\bar\\Psi_\\alpha$. Since each index is included in $S$ independently\n",
    "with probability $1/2$, we have $\\mathbb E[|S|] = m/2$, and using\n",
    "$\\mathrm{std}(\\bar\\Psi_\\alpha) \\approx \\alpha p / \\sqrt{2\\pi}$ the\n",
    "total standard deviation is\n",
    "\n",
    "$$\n",
    "\\sigma_{\\text{total}} \\;\\approx\\; \\sqrt{m/2}\\cdot \\frac{\\alpha p}{\\sqrt{2\\pi}} \\;=\\; \\frac{\\alpha p}{\\sqrt{4\\pi/m}}.\n",
    "$$\n",
    "\n",
    "Decryption fails only when this exceeds $p/4$, i.e. when\n",
    "$\\alpha \\gtrsim \\sqrt{\\pi}/(2\\sqrt m)$. The asymptotic parameter\n",
    "choice $\\alpha = o(1/\\sqrt{n\\log n})$ keeps us safely below that\n",
    "threshold (recall $m = 5n$), so the failure probability is\n",
    "negligible.\n",
    "\n",
    "### 50.6.2 Why it is IND-CPA secure\n",
    "\n",
    "Each of the $m$ public-key rows is a fresh LWE sample. By the\n",
    "**Decisional LWE** assumption (which Regev establishes is equivalent\n",
    "to the search version), the public key is computationally\n",
    "indistinguishable from uniform. With a *uniform* public key, the\n",
    "ciphertext distribution for $\\mu = 0$ and $\\mu = 1$ differ only in\n",
    "the $\\lfloor p/2\\rfloor$ offset added to the second component, which\n",
    "itself is statistically close to uniform whenever the sum of $|S|$\n",
    "uniform elements is. Composing, the cryptosystem is IND-CPA secure\n",
    "under LWE$_{p, \\bar\\Psi_\\alpha}$.\n",
    "\n",
    "### 50.6.3 End-to-end implementation — Exercise\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "regev-019",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:19.313398Z",
     "iopub.status.busy": "2026-05-19T07:46:19.313332Z",
     "iopub.status.idle": "2026-05-19T07:46:19.318415Z",
     "shell.execute_reply": "2026-05-19T07:46:19.318027Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "parameters n=16, p=257, m=80, alpha=0.0056\n",
      "secret s    = [241, 123, 127, 252, 43, 240, 203, 120, 89, 38, 52, 3, 33, 207, 109, 164]\n",
      "Decryption failures: 0 / 200   (~0.0%)\n"
     ]
    }
   ],
   "source": [
    "def regev_keygen(n, p, m, alpha, rng):\n",
    "    '''Generate Regev 2005 (sk, pk).  pk = (A, b),  A: m x n,  b: m.'''\n",
    "    s = rng.integers(0, p, size=n)\n",
    "    A = rng.integers(0, p, size=(m, n))\n",
    "    e = psi_bar_alpha(alpha, p, rng, size=m)\n",
    "    b = (A @ s + e) % p\n",
    "    return s, (A, b)\n",
    "\n",
    "\n",
    "def regev_encrypt(pk, mu, p, rng):\n",
    "    '''Encrypt one bit mu in {0, 1}.  Ciphertext = (sum_S a_i, mu*floor(p/2) + sum_S b_i) mod p.'''\n",
    "    A, b = pk\n",
    "    m = A.shape[0]\n",
    "    S = rng.integers(0, 2, size=m)          # uniform subset of [m]\n",
    "    a_ct = (S @ A) % p\n",
    "    b_ct = (int(S @ b) + int(mu) * (p // 2)) % p\n",
    "    return a_ct, b_ct\n",
    "\n",
    "\n",
    "def regev_decrypt(sk, ct, p):\n",
    "    '''Decrypt (a, b).  Output 0 if |b - <a, s>|_centred < p/4, else 1.'''\n",
    "    s = sk\n",
    "    a, b = ct\n",
    "    d = (int(b) - int(a @ s)) % p\n",
    "    d_centred = d if d <= p // 2 else d - p\n",
    "    return 0 if abs(d_centred) < p // 4 else 1\n",
    "\n",
    "\n",
    "# Demo.  The paper's asymptotic alpha = 1/sqrt(n log n) is far too noisy\n",
    "# for our tiny n=16 demo (sigma_total would exceed p/4 -> ~50% failures);\n",
    "# we therefore use alpha = 1/(20 * sqrt(m)), which is comfortably below the\n",
    "# decryption-failure threshold sigma_total = sqrt(m) * alpha * p / sqrt(2 pi)\n",
    "# < p/4 derived in 50.6.1.  The security-vs-correctness trade-off is the\n",
    "# focus of the next exercise (50.6.5).\n",
    "def next_prime(x):\n",
    "    def is_prime(k):\n",
    "        if k < 2: return False\n",
    "        for f in range(2, int(k ** 0.5) + 1):\n",
    "            if k % f == 0: return False\n",
    "        return True\n",
    "    while not is_prime(x):\n",
    "        x += 1\n",
    "    return x\n",
    "\n",
    "rng = np.random.default_rng(20260519)\n",
    "n = 16\n",
    "m = 5 * n                                                    # m = 5n\n",
    "p = next_prime(n * n)                                        # smallest prime >= n^2\n",
    "alpha = 1.0 / (20 * np.sqrt(m))                              # safely below failure threshold\n",
    "\n",
    "sk, pk = regev_keygen(n, p, m, alpha, rng)\n",
    "print(f'parameters n={n}, p={p}, m={m}, alpha={alpha:.4f}')\n",
    "print(f'secret s    = {sk.tolist()}')\n",
    "\n",
    "# Encrypt and decrypt 32 random bits, count failures.\n",
    "n_trials = 200\n",
    "failures = 0\n",
    "for _ in range(n_trials):\n",
    "    bit = int(rng.integers(0, 2))\n",
    "    ct = regev_encrypt(pk, bit, p, rng)\n",
    "    rec = regev_decrypt(sk, ct, p)\n",
    "    if rec != bit:\n",
    "        failures += 1\n",
    "print(f'Decryption failures: {failures} / {n_trials}   (~{100 * failures / n_trials:.1f}%)')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-020",
   "metadata": {},
   "source": [
    "### 50.6.4 Encrypt a multi-bit message — Exercise\n",
    "\n",
    "Encrypt the ASCII string \"REGEV\" bit by bit, store the ciphertexts,\n",
    "decrypt, and reconstruct the string.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "regev-021",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:19.319505Z",
     "iopub.status.busy": "2026-05-19T07:46:19.319406Z",
     "iopub.status.idle": "2026-05-19T07:46:19.322378Z",
     "shell.execute_reply": "2026-05-19T07:46:19.321970Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "plaintext   = 'REGEV'\n",
      "ciphertexts = 40  (one per bit; each is a Z_p^17 pair)\n",
      "recovered   = 'REGEV'   match = True\n",
      "ciphertext byte budget for one bit: 153 bits  (~19.1 bytes per plaintext bit)\n"
     ]
    }
   ],
   "source": [
    "message = \"REGEV\"\n",
    "bits = [(ord(c) >> i) & 1 for c in message for i in range(7, -1, -1)]\n",
    "\n",
    "cts = [regev_encrypt(pk, bit, p, rng) for bit in bits]\n",
    "rec_bits = [regev_decrypt(sk, ct, p) for ct in cts]\n",
    "rec_chars = [chr(sum(b << (7 - j) for j, b in enumerate(rec_bits[i:i+8])))\n",
    "             for i in range(0, len(rec_bits), 8)]\n",
    "recovered = ''.join(rec_chars)\n",
    "print(f'plaintext   = {message!r}')\n",
    "print(f'ciphertexts = {len(cts)}  (one per bit; each is a Z_p^{n+1} pair)')\n",
    "print(f'recovered   = {recovered!r}   match = {recovered == message}')\n",
    "print(f'ciphertext byte budget for one bit: '\n",
    "      f'{(n + 1) * int(np.ceil(np.log2(p)))} bits  '\n",
    "      f'(~{(n + 1) * int(np.ceil(np.log2(p))) / 8:.1f} bytes per plaintext bit)')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-022",
   "metadata": {},
   "source": [
    "### 50.6.5 Decryption failure rate as a function of $\\alpha$ — Exercise\n",
    "\n",
    "The total standard deviation derived in §50.6.1 is\n",
    "$\\sigma_{\\text{total}} \\approx \\sqrt{m/2}\\cdot \\alpha p / \\sqrt{2\\pi}$.\n",
    "Setting this equal to the decision-boundary $p/4$ gives the\n",
    "empirical failure-rate threshold\n",
    "\n",
    "$$\n",
    "\\alpha^* \\;=\\; \\frac{\\sqrt{\\pi}}{2\\sqrt{m}}.\n",
    "$$\n",
    "\n",
    "Below we sweep $\\alpha$ and measure the empirical failure rate; we\n",
    "expect a transition from $\\approx 0$ to $\\approx 50\\%$ (random guessing)\n",
    "as $\\alpha$ crosses $\\alpha^*$.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "regev-023",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-05-19T07:46:19.323298Z",
     "iopub.status.busy": "2026-05-19T07:46:19.323218Z",
     "iopub.status.idle": "2026-05-19T07:46:19.420776Z",
     "shell.execute_reply": "2026-05-19T07:46:19.420388Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAG4CAYAAADYN3EQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAipNJREFUeJzt3Qd4FNXaB/A3vUFoIaH33juiCBYEufaKXAVEbCiKYuVaUPwUVORiQbGL7YpibyAgHaT33jsktCSkl/me/wmzzC67m91snez/9zwLm83s7LTMnvec95wTpmmaJkRERERERB4I9+TNREREREREDCyIiIiIiMgr2GJBREREREQeY2BBREREREQeY2BBREREREQeY2BBREREREQeY2BBREREREQeY2BBREREREQeY2BBREREREQeY2BBREREREQeY2BBREREREQeY2BBROQlK1askAsvvFASEhIkLCxM1q5d6/J7P/vsM/WevXv3On2Nyq/XXntNWrRoIcXFxYHeFKKAmzJlitSrV0/y8vICvSnkBgYWFBB6gUl/REZGSu3ateXOO++UQ4cO8az4yJIlS+SFF16Q06dPB/0xNtO2QkFBgdxyyy1y8uRJ+e9//ytffPGF1K9fP9CbFZTMdm79ISMjQ1599VV56qmnJDw88F/NZ86ckTFjxsiVV14pVatWVfdp3LedWb16tVx77bVq+fj4eGnTpo289dZbUl7s2LFDbrvtNqlTp47aPwSBY8eOlezs7POWRWEY57JWrVoSFxcn3bt3l1mzZolZK0xGjBghrVu3VpUmKOzfeuutsn379vOWnTdvntV3u/Hxzz//qGXwPe9oGTz0MgCWy8/Pl/fff9/v+0xlF+nBe4k8hptyw4YNJTc3V9108MW1aNEi2bhxo8TGxvII+6BA9+KLL6obduXKlYP6+JppW2HXrl2yb98++fDDD+Xuu+92+/2DBg1ShZaYmBgp78x2bv3hk08+kcLCQhk4cKAEg+PHj6v7MwqR7du3VwVGZ/766y+55pprpGPHjvLcc89JhQoV1N/EwYMHpTw4cOCAdOvWTSpVqqQK2Qieli5dqoKvVatWyc8//2y1PK7t6dOnyyOPPCJNmzZV323/+te/ZO7cudKzZ08xEwS8ixcvVhUn7dq1k6NHj8o777wjnTp1Ut/bCCBtPfzww9K1a1er15o0aaL+v++++6RPnz5Wv9M0Te6//35p0KCBqmQElAGGDBkiEydOlIceekgFHRT8GFhQQPXv31+6dOminqMwlpSUpG5iv/zyi6oRCUVZWVmqVojMJTU1Vf1f1oJyRESEepjx2uI167lPP/1U1fYHS4VKzZo15ciRI1KjRg1ZuXLleYVE29aWwYMHy1VXXaUK08HQ4uJtaIFECxsqvlBzD/fee69KW/v888/l1KlTUqVKFfX68uXL5ZtvvpHXX39dHn/8cfUajg8K4E8++aQKrM1k1KhR8vXXX0t0dLTltQEDBkjbtm1l/Pjx8uWXX573nosvvlhuvvlmu+vr0aOHehjhuKLl5/bbb7d6HeUApAgiILvsssu8tk/kO+Xvr59MDTcjQE2XEZpG77rrLklJSVE1urixo4bPFmrVEKjgy7lx48aqCRUpF/ZqOkpbJ74g8b758+ef916sF79Dy4oz+Ixhw4ap5nB8Blpnhg8frpp3Qd+2zZs3y7///W/1xYTaLNxE8fqPP/543jpxg8fvUFtmXMfWrVvVTTgxMVGqVasmI0eOVC1BOiz3xBNPqOfYDr3ZWc/fX7NmjQr08H7UNl5++eWWpmtdZmamqoFDrRL2Jzk5Wa644gqVAgHubLezdZW2ra6cP+OxQZP9HXfcoWobq1evrmpUUUOGWsjrrrtO7TMKUG+88cZ5243jun//fqfnGbWTvXv3Vs9Rq4fPvOSSS9TPaMV44IEHpHnz5iolAucGy9j2m3ClPwU+B8fLlr1r3NG15c7xs8fZel3ZV2+dW1vu/L2Wdh2XZtq0aaq2FvvYsmVLmT17trqesJ0vv/yyuGvPnj2yfv3682px4dJLL5VevXqpbcPfZ8WKFVWN7ptvvim+hOOCvwlX4G/72LFjat8RVCDQ9EY/EZwTFEBxz8DfE4Ji1Hr/8ccf6vf4/4ILLlCvd+jQQbUc+AqCJ8A1aRuAYZ+NhW5ci6gkQOChw3cSvguwL7jvlAUCz86dO6vjjf3F9YdrGKmXvoR+Y8b9A7TC4HrfsmWLw/fh7wytcK7Qvx9wTzHC/qJ1yLZFiIIXWywoqOiFC73mB/CFhS8P3HTQBI2C4Z9//qlu0rjZo4CgF4yRD4wbPdIsioqKVFM+lrflyjpR+4YC9rfffmspNBoLFrip2msC1h0+fFg1naOWC18wyMdFgQlfOqiZMd6oUfjCjfqVV15RBRR8idatW1e++uorueGGG6zWi9cQNNnW+CCowJfMuHHjVECA3GbUoqE2DW688UZVwP7f//6nvojQOgTY902bNqmgDgVs1KhFRUWpwhi2AwU15AcDmqqx/ThmrVq1khMnTqiaJny5oKDlznY7W5ezbXXnmjDWrqEAiNq133//Xf7v//5PfVlhH1ELhlYybB9qF1Ezi4KcDu/D+XeWCoKmfRT2cP70FAC9AIL8ZNRQ6rnZuMbfe+89daxQOEeuti/ZXltlOX6urteVffX2udW58/da2nXszLPPPqsK0AjysE0o4KM2GilwSPvBOt2l12Db++wNGzaoigmkGQ0dOlSuv/569VmPPvqounZRa2yvv096erpLn42/A09bGBBY4d6B+xu2D+cXhX2k9+Ecl7UVBsEWglP8/eJY456C6w2FT/zNokXgnnvuUZUDeB3B6Lp163xyPHAN4zOxHfh+wXbhvOH6xt+8sSUQ30XNmjVTx8QI3weAQR1wn3QXrgUEbbjG8MA95qOPPlItCvg8/A34Yt/twd88/lb11htbuFbRTwcBFr5bcK707AR724i/WwQw9ipO8HeBVCwyCY0oAD799FOURLTZs2draWlp2oEDB7Tp06dr1atX12JiYtTPumHDhmk1a9bUjh8/brWO2267TatUqZKWnZ2tfr7mmmu0+Ph47dChQ5ZlduzYoUVGRqrPMnJ1nQMHDtSSk5O1wsJCyzJHjhzRwsPDtbFjxzrdx8GDB6vlVqxYcd7viouL1f9jxoxR24bPsTV69Gh1LE6fPm15LTU1Ve0P3qfT13Httddavf+BBx5Qr69bt87y2uuvv65e27Nnj9Wy119/vRYdHa3t2rXL8trhw4e1ihUrar169bK8hmPz4IMPOt1vV7e7tHU52lZ3zp9+bO69917LMjiXderU0cLCwrTx48dbXj916pQWFxenDRkyxGqdeH/v3r210sydO1ct+91331m9rm+L0dKlS9Wyn3/++Xl/E8b9tX0N21a/fv3z1qfvp73X7F1brh4/e5yt19V99ca5tcfVv1dXrmN7FixYoLb7qaeesryG+xZea9OmjdXr7nj22WfVOjIzM61ex98gXsd90XhP3Lx5s3p96tSpTq9FVx72zoEt3MOwLK5He9q1a6fuvXg89NBD2vfff6/+x3tw3sri2LFj6v0pKSnqOOjeeust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DhkyRHVUQmfhSZMmqbwvfZSowYMHq3Qp9JWAsWPHqk4w6ESFppnXX39ddZi5++67A7wnREREREShK+CBxYABA1Qu6fPPP696tKPX+owZMywdujEag7FpBp1eMDwtlq1SpYpq8UAfjVatWgVwL4iIiIiIvAh9LM6OXiV794qcHWwgmAW083YgoPM2httypQOKJ5DSpXfIdJSzRqGH1wXxmiDeJ4jfHeRyYHF2WHo5c8YqsPBnecKdsjNLvERERERE5DEGFkRERERE5DEGFkRERERE5DEGFkRERERE5DEGFkREREREZP7hZomIiIiIyAZGe+rS5dxzE2BgQUREREQUbOLiRFasEDMxR/hDRERERERBjYEFERERERF5jIEFEREREVGwyc4WadCg5IHnJsA+FkREREREwUbTRPbtO/fcBNhiQUREREREHmNgQUREREREHmNgQUREREREHmNgQUREREREHmNgQUREREREHuOoUEREREREwSYsTKRVq3PPTYCBBRERERFRsImPF9m0ScyEqVBEREREROQxBhZEREREROQxBhZERERERMEmO1ukdeuSB56bAPtYEBEREREFG00T2bz53HMTYIsFERERERF5jIEFERERERF5jIEFERERERF5jIEFERERERF5jIEFERERERF5jKNCEREREREFm7Awkfr1zz03AQYWRERERETBJj5eZO9eMROmQhERERERkccYWBARERERkccYWBARERERBZucHJGuXUseeG4C7GNBRERERBRsiotFVq4899wE2GJBREREREQeY2BBREREREQeY2BBREREREQeY2BBREREREQeY2BBREREREQe46hQRERERETBKClJzISBBRERERFRsElIEElLEzNhKhQREREREXmMgQUREREREXmMgQURERERUbDJyRG55JKSB56bAPtYEBEREREFm+Jikfnzzz03AbZYEBERERGRxxhYEBERERGRxxhYEBERERGRxxhYEBERERGRxxhYEBERERGRxzgqFBERERFRMIqPFzNhYEFEREREFGwSEkSyssRMmApFRERERETlI7CYPHmyNGjQQGJjY6V79+6yfPlyl973zTffSFhYmFx//fU+30YiIiIiIgriwGLatGkyatQoGTNmjKxevVrat28v/fr1k9TUVKfv27t3rzz++ONy8cUX+21biYiIiIj8IjdX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yJEjluUvvPBCNXfFBx98IO3bt5fp06erEaGCfQ4LX03SxPWa8zhc1KKG19drtmPA9Z67Fh7q0yjkjy8REdkRH1/yMImAz2Phb4Gax8I49OzG/Sfl5JlcqVohVtrUq+qV2j2u1xzHwfa68MX2Bvsx4HrtXxPVkqrL5oOnQ/74EuexoPNxHguyFazzWDCw8BHeBIjXBfFeQfz+IJYpKJQCi4CnQhERERERkfkxsCAiIiIiCja5uSJXXVXy8OHca95U7ifIIyIiIiIynaIikT/+OPfcBNhiQUREREREHmNgQUREREREHmNgQUREREREHmNgQUREREREHmNgQUREREREHgu5UaH0icYx2YevJy7JzMyU2NhYn09cQubB64J4TRDvE8TvDnJJVta55yi3GkaG8md5Qi8z62VoZ0IusMBJgLp16wZ6U4iIiIiISlerlgRDGRozcDsTprkSfpQjiPAOHz4sFStWlLCwMJ9GdwheDhw4UOr05xQ6eF0QrwnifYL43UFmKk8gVEBQUatWrVJbR0KuxQIHpE6dOn77PJxsBhbE64J4ryB+fxDLFGTWcmZpLRU6Jv8TEREREZHHGFgQEREREZHHGFj4SExMjIwZM0b9T8TrgnivIH5/EMsUVN7LmSHXeZuIiIiIiLyPLRZEREREROQxBhZEREREROQxBhZEREREROQxBhZumDx5sjRo0EBNn969e3dZvny50+W/++47adGihVq+bdu28scff1j9Ht1bnn/+ealZs6bExcVJnz59ZMeOHWU7k2T6a6KgoECeeuop9XpCQoKaiGbw4MFqQkcK3fuE0f33368m9pw0aZIPtpzMdE1s2bJFrr32WjW2PO4XXbt2lf379/MkhvB1cebMGRkxYoSaqwtlilatWsmUKVN8vBcUqGti06ZNctNNN6nlnX0vuHudeQydt6l033zzjRYdHa198skn2qZNm7R77rlHq1y5snbs2DG7yy9evFiLiIjQXnvtNW3z5s3as88+q0VFRWkbNmywLDN+/HitUqVK2k8//aStW7dOu/baa7WGDRtqOTk5PCUheE2cPn1a69OnjzZt2jRt69at2tKlS7Vu3bppnTt39vOeUTDdJ3Q//PCD1r59e61WrVraf//7X56kEL4mdu7cqVWtWlV74okntNWrV6uff/75Z4frpNC4LrCOxo0ba3PnztX27Nmjvf/+++o9uDao/F0Ty5cv1x5//HHtf//7n1ajRg273wvurtMbGFi4CAW8Bx980PJzUVGR+oIfN26c3eVvvfVW7aqrrrJ6rXv37tp9992nnhcXF6sL4fXXX7f8HgXLmJgYdZFQ6F0Tjm4ciP/37dvnxS0ns10TBw8e1GrXrq1t3LhRq1+/PgOLEL8mBgwYoN1xxx0+3Goy43XRunVrbezYsVbLdOrUSXvmmWe8vv0U+GvCyNH3gifrLCumQrkgPz9fVq1apVKVdOHh4ernpUuX2n0PXjcuD/369bMsv2fPHjl69KjVMmjSRjOVo3VS+b4m7ElPT1dNnJUrV/bi1pOZroni4mIZNGiQPPHEE9K6dWuevBC/JnA9/P7779KsWTP1enJysvre+Omnn3y8NxTs94oLL7xQfvnlFzl06JBKtZ47d65s375d+vbty5NXDq+JQKzTFQwsXHD8+HEpKiqSlJQUq9fxM4IDe/C6s+X1/91ZJ5Xva8JWbm6u6nMxcOBASUxM9OLWk5muiVdffVUiIyPl4Ycf5okzGV9cE6mpqSqXfvz48XLllVfKX3/9JTfccIPceOONMn/+fB/uDQX7veLtt99W/SrQxyI6OlpdH8iv79WrF09eObwmArFOV0T6bM1EVGboyH3rrbeqWqf33nuPRzJEobbpzTfflNWrV6uWKyK0WMB1110njz76qHreoUMHWbJkieqo27t3bx6kEIXA4p9//lGtFvXr15cFCxbIgw8+qAYCsW3tIPIVtli4ICkpSSIiIuTYsWNWr+PnGjVq2H0PXne2vP6/O+uk8n1N2AYV+/btk1mzZrG1IoSviYULF6oa6nr16qlWCzxwXTz22GNqlA8KvWsC68R1gJppo5YtW3JUqBC+LnJycuQ///mPTJw4Ua655hpp166dGiFqwIABMmHCBB/uDQXqmgjEOl3BwMIFaFLs3LmzzJkzx6rWCD/36NHD7nvwunF5QCFRX75hw4bqxBqXycjIkGXLljlcJ5Xva8IYVGDY4dmzZ0u1atV8uBcU7NcE+lasX79e1q5da3mg9hH9LWbOnMkTGILXBNaJoWW3bdtmtQxy6VFLTaF5XeC7Aw/k0BuhYKm3clH5uiYCsU6X+KxbeDmDIbswYtNnn32mhnq799571ZBdR48eVb8fNGiQ9vTTT1sNDRcZGalNmDBB27JlizZmzBi7w81iHRgKbv369dp1113H4WZD+JrIz89XQw7XqVNHW7t2rXbkyBHLIy8vL2D7SYG9T9jiqFDm4otrAkMP47UPPvhA27Fjh/b222+rYUUXLlwYkH2k4LguevfurUaGwnCzu3fv1j799FMtNjZWe/fdd3mKyuE1kZeXp61Zs0Y9atasqYaexXPcE1xdpy8wsHADbt716tVTYwJjCK9//vnH6g96yJAhVst/++23WrNmzdTy+GP//fffrX6PIWefe+45LSUlRZ34yy+/XNu2bZun55RMek1g3HHE+vYe+KKg0LxP2GJgYT6+uCY+/vhjrUmTJqrgiPlNMB8ShfZ1gUqoO++8Uw0niuuiefPm2htvvKHKGlT+rok9DsoMWM7VdfpCGP7xXXsIERERERGFAvaxICIiIiIijzGwICIiIiIijzGwICIiIiIijzGwICIiIiIijzGwICIiIiIijzGwICIiIiIijzGwICIiIiIijzGwICIiIiIijzGwICIiIiIijzGwICIiIiIijzGwICIysRMnTkhycrLs3bvXq+u95JJL5JFHHvHqOsk9t912m7zxxhs8bERkGmGapmmB3ggiIiqbUaNGSWZmpnz44YdePYQnT56UqKgoqVixIk+NmwFZhw4dZNKkSR4ft40bN0qvXr1kz549UqlSJZ4HIgp6bLEgIjKp7Oxs+fjjj2XYsGFeX3fVqlVNGVTk5+dLeYD9aNOmjTRu3Fi+/PLLQG8OEZFLGFgQEQXI8uXLVQ13XFyctGjRQlauXCkffPCBXHvttS69/48//pCYmBi54IILrF7HOh9++GF58sknVYBQo0YNeeGFF6yWycvLU8sgjSo2NlZ69uwpK1ascJgKNX36dGnbtq3a1mrVqkmfPn0kKytL/a64uFjGjRsnDRs2VL9v3769Wt4ZrH/EiBHqgdr4pKQkee6558TYiD5jxgy1XZUrV1afefXVV8uuXbvsrgfbinX069fP5fc99NBD6n1VqlSRlJQU1eqDfRo6dKgKqpo0aSJ//vmn5T2l7eedd94p8+fPlzfffFPCwsLUAylqrhwfe/sB11xzjXzzzTdOjyURUbBgYEFEFAD//POP9O7dW6666ipZv369tGzZUsaOHSuvvvqqvPjiiy6tY+HChdK5c2e7v5s6daokJCTIsmXL5LXXXlPrnjVrluX3CDq+//57tdzq1atVIRqFWaRA2Tpy5IgMHDhQ7rrrLtmyZYvMmzdPbrzxRksQgELz559/LlOmTJFNmzbJo48+KnfccYcqZDuDz46MjFQBFgrjEydOlI8++sjyexTykeqFgGvOnDkSHh4uN9xwgyqo264nOjpaFi9erLbBnfehEI/PR5AxfPhwueWWW+TCCy9Ux6Rv374yaNAg1TLkyn5iH3r06CH33HOPOmZ41K1b1+XjY7sf0K1bN7V9CASJiIIe+lgQEZF/9ejRQxs0aJDl52nTpmnh4eHaDTfc4PI6rrvuOu2uu+467/XevXtrPXv2tHqta9eu2lNPPaWenzlzRouKitK++uory+/z8/O1WrVqaa+99pplHSNHjlTPV61ahQhC27t373mflZubq8XHx2tLliyxen3YsGHawIEDHW471t+yZUutuLjY8hq2D685kpaWprZjw4YNVuvp2LGjw/c4e5/xGBUWFmoJCQlW5+TIkSPqfUuXLnV5P43HDdx5n739WLduncNjT0QUbCIDHdgQEYWagwcPytKlS2XChAmW11BzjxYAV1srICcnR6Ux2dOuXTurn2vWrCmpqanqOdKCCgoK5KKLLrL8Hh21UTuOFglbSN25/PLLVSoUWjVQk3/zzTerFKKdO3eqGv0rrrjivD4CHTt2dLr9SOFCupAOtf0YBamoqEgiIiJkx44d8vzzz6tWl+PHj1taHPbv36/6H+hsW21cfZ/xGOHzkDaFfdQhPQpw3Mq6n+68z17rE1KnQG81ISIKZgwsiIj8TC+8d+rUyfLatm3bVMHeWLAtDdJ4Tp06Zfd3CBSMUIC3TQVyFQrdSKNasmSJ/PXXX/L222/LM888owruZ86cUcv8/vvvUrt2bav3of+HJ9C/oH79+qrvQ61atdT2IzCw7aCNlK+yvM/eMTK+pgc9eH9Z99Od99nuB+ipadWrV3f4GUREwYKBBRGRn6Wnp6vCul5wReERrRdoGXAHarzLMmIQRhrSc/lRAAe0YKDztqO5K7CtaOHAA60BeN+PP/6o+hOggIzWAPQZcQcCE9t+J02bNlXHBvNzINhCcHDxxRer3y9atKjUdZb1faVp1aqVS/uJ44oWF3ff52zI2Tp16qggkogo2DGwICLyM8xzgMInOlWjs/DIkSOlQYMGsnnzZtm3b5+lsF8apCWNHj1atVogLclVqBlHR+UnnnhCjRpVr149tS1It7E3dC0CAHSCRgoURpHCz2lpaarDOUZPevzxx1WHZNTsYzQmBE4IWhITE2XIkCEOtwOFbXSyvu+++1RnabSE6BPCYX+QmoRRspDGhWWffvrpUvetrO8rjav7ifOI44PRoCpUqKCOb1mPj95BH8ediMgMGFgQEfkZRmDCKE0YReiVV15RMyx//fXXqgB55ZVX2u3nYA/SppBO9e2336rCuTvGjx+vCroY9QgT7HXp0kVmzpxpN0BBAXjBggVq0reMjAwV+CAA6N+/v/r9Sy+9pFJ1MPrR7t271TCv2K7//Oc/Trdh8ODBqp8IUsDQSoEA695771W/w0hOGGYVQ+Iijal58+by1ltvqWFZnSnr+1zhyn4iiECwgJYK7Bsmtyvr8cnNzZWffvpJDZ9LRGQGnHmbiMjEkLuPlgekzKBQHYozVJdX7733nko3Q78WIiIzYIsFEZGJYR4MjIJ06NAhNWcClR/oSI70MCIis2BgQURkco46XJO53X333YHeBCIitzAVioiIiIiIPGaehFwiIiIiIgpaDCyIiIiIiMhjDCyIiIiIiMhjDCyIiIiIiMhjDCyIiIiIiMhjDCyIiIiIiMhjDCyIiIiIiMhjDCyIiIiIiMhjDCyIiIiIiMhjDCyIiIiIiMhjDCyIiIiIiEg89f/TKfpAhEK0jAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x450 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "threshold prediction: alpha* = sqrt(pi)/(2*sqrt(m)) = 0.0991\n"
     ]
    }
   ],
   "source": [
    "rng = np.random.default_rng(2026)\n",
    "n = 16\n",
    "m = 5 * n\n",
    "p = next_prime(n * n)\n",
    "\n",
    "alphas = np.linspace(0.001, 0.08, 25)\n",
    "trials_per_alpha = 300\n",
    "rates = []\n",
    "for a in alphas:\n",
    "    sk_a, pk_a = regev_keygen(n, p, m, a, rng)\n",
    "    fails = 0\n",
    "    for _ in range(trials_per_alpha):\n",
    "        bit = int(rng.integers(0, 2))\n",
    "        ct = regev_encrypt(pk_a, bit, p, rng)\n",
    "        if regev_decrypt(sk_a, ct, p) != bit: fails += 1\n",
    "    rates.append(fails / trials_per_alpha)\n",
    "\n",
    "# Theoretical breakdown: total stdev sqrt(m/2) * alpha * p / sqrt(2 pi)\n",
    "# approaches the decision threshold p/4.  Solving for alpha gives the line\n",
    "# below.  (We use m/2 because |S| ~ Binomial(m, 1/2) so E[|S|] = m/2.)\n",
    "crit_alpha = (np.sqrt(2 * np.pi) / 4) / np.sqrt(m / 2)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 4.5))\n",
    "ax.plot(alphas, rates, 'o-', color='steelblue', label='empirical decryption failure rate')\n",
    "ax.axvline(crit_alpha, color='red', linestyle='--',\n",
    "           label=fr'theory threshold  $\\alpha^* \\approx {crit_alpha:.3f}$')\n",
    "ax.axhline(0.5, color='grey', linestyle=':', alpha=0.5, label='random guessing (50%)')\n",
    "ax.set_xlabel(r'$\\alpha$  (noise parameter)'); ax.set_ylabel('failure rate')\n",
    "ax.set_title(fr'Regev cryptosystem: failure rate vs $\\alpha$  ($n={n}$, $m={m}$, $p={p}$)')\n",
    "ax.legend(); ax.grid(True, alpha=0.3)\n",
    "plt.tight_layout(); plt.show()\n",
    "print(f'threshold prediction: alpha* = sqrt(pi)/(2*sqrt(m)) = {crit_alpha:.4f}')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-024",
   "metadata": {},
   "source": [
    "## 50.7 Closing — from Regev 2005 to ML-KEM 2024\n",
    "\n",
    "The cryptosystem you just implemented is a **bit-encryption** scheme\n",
    "with a $\\tilde O(n^2)$-bit public key and ciphertexts that blow up\n",
    "each plaintext bit by $O(n \\log n)$. The successor systems\n",
    "**Kyber/ML-KEM** (FIPS 203, 2024) make three structural improvements:\n",
    "\n",
    "| Improvement | What it gains | Where in the line |\n",
    "|---|---|---|\n",
    "| Switch LWE → Ring-LWE over $R_q = \\mathbb{Z}_q[x]/(x^N+1)$ | $O(N \\log q)$-bit keys instead of $O(N^2 \\log q)$ | Lyubashevsky–Peikert–Regev 2010 |\n",
    "| Module-LWE — interpolates between LWE and Ring-LWE | tunable security / structure trade-off | Langlois–Stehlé 2015 |\n",
    "| Encrypt $N$ bits per ciphertext via polynomial ring | constant amortised cost per bit | Lyubashevsky–Peikert–Regev 2013 |\n",
    "| Use the **Number Theoretic Transform** for $R_q$ multiplication | $O(N \\log N)$ instead of $O(N^2)$ | Crystals-Kyber 2017 |\n",
    "| Fujisaki–Okamoto transform | IND-CCA security from IND-CPA | Bos et al. 2018 |\n",
    "\n",
    "Every one of these changes preserves the **worst-case to average-case**\n",
    "reduction chain that Regev's Theorem 1.1 established. That is why,\n",
    "two decades on, the post-quantum standard you will see your students\n",
    "implement in W3 is still recognisably *the same algorithm* you just\n",
    "coded.\n",
    "\n",
    "```{admonition} Open questions\n",
    ":class: tip\n",
    "- Can the **quantum** step in Theorem 1.1 be replaced by a *classical*\n",
    "  reduction at the *same* parameters? Peikert (2009) and the\n",
    "  Brakerski–Langlois–Peikert–Regev–Stehlé (2013) line of work\n",
    "  classicalised the reduction in restricted parameter regimes; a\n",
    "  matched classical version of Theorem 1.1 in full generality is\n",
    "  still open as of 2024.\n",
    "- Can the hardness of LWE be reduced to the hardness of LPN\n",
    "  ($p = 2$)? Currently the best LPN-hardness assumption is much\n",
    "  weaker than LWE's, but every known reduction goes the other way.\n",
    "- For sub-exponential-time attacks on LWE, see Albrecht–Player–Scott\n",
    "  (2015) and the *Lattice Estimator*. The cost models used by NIST\n",
    "  for ML-KEM parameters are direct refinements of that estimator.\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "regev-025",
   "metadata": {},
   "source": [
    "## 50.8 References\n",
    "\n",
    "1. **Regev, O.** (2005, 2009). *On Lattices, Learning with Errors,\n",
    "   Random Linear Codes, and Cryptography.* STOC '05; J. ACM **56**(6).\n",
    "   *The* paper this tutorial follows.\n",
    "   [doi:10.1145/1060590.1060603](https://doi.org/10.1145/1060590.1060603) ·\n",
    "   in this repo as `sources/1060590.1060603.pdf`.\n",
    "\n",
    "2. **Blum, A., Kalai, A., Wasserman, H.** (2003). *Noise-tolerant\n",
    "   learning, the parity problem, and the statistical query model.*\n",
    "   J. ACM **50**(4), 506–519.  The BKW algorithm.\n",
    "\n",
    "3. **Ajtai, M.** (1996). *Generating Hard Instances of Lattice\n",
    "   Problems.* STOC '96. The original worst-case to average-case\n",
    "   reduction (for SIS, not LWE).\n",
    "\n",
    "4. **Lyubashevsky, V., Peikert, C., Regev, O.** (2010).  *On Ideal\n",
    "   Lattices and Learning with Errors over Rings.* EUROCRYPT 2010.\n",
    "   Ring-LWE.\n",
    "\n",
    "5. **Peikert, C.** (2016). *A Decade of Lattice Cryptography.*\n",
    "   Foundations and Trends in Theoretical Computer Science **10**(4),\n",
    "   283–424.  Survey, still the best single reference for the area.\n",
    "\n",
    "6. **Albrecht, M., Player, R., Scott, S.** (2015). *On the Concrete\n",
    "   Hardness of Learning with Errors.* J. Mathematical Cryptology\n",
    "   **9**(3).  The \"lattice estimator\".\n",
    "\n",
    "7. **NIST** (2024). *FIPS 203 — Module-Lattice-Based Key-Encapsulation\n",
    "   Mechanism Standard.*\n",
    "   [csrc.nist.gov/pubs/fips/203/final](https://csrc.nist.gov/pubs/fips/203/final)\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.14.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
