From 61c34a81493259bd9768d6e60a78ca17ff5f4247 Mon Sep 17 00:00:00 2001 From: Yoav Haimov Date: Sat, 31 Oct 2026 10:06:33 +0200 Subject: [PATCH 1/7] docs: benchmark ML-KEM on a release build and redraw the charts The old benchmark parsed the Kyber performance tests only and its figures came from a debug build. benchmark.py now times ML_KEM_* and Kyber* directly (median of 7 rounds of 500 calls), writes results.json, and draws two charts that replace the four old ones. make benchmark builds the release extension first. The chart dependency is in performance-tests/requirements.txt, not in requirements-dev.txt. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01CXWjkNs3Htog36snV9FcXb --- Makefile | 1 + performance-tests/benchmark.py | 466 ++++++++++--------- performance-tests/latency.png | Bin 0 -> 69685 bytes performance-tests/ml_kem_vs_kyber.png | Bin 0 -> 126806 bytes performance-tests/operation_breakdown.png | Bin 56435 -> 0 bytes performance-tests/performance_comparison.png | Bin 57257 -> 0 bytes performance-tests/requirements.txt | 3 + performance-tests/results.json | 113 +++++ performance-tests/scalability.png | Bin 103439 -> 0 bytes performance-tests/throughput.png | Bin 63219 -> 0 bytes 10 files changed, 354 insertions(+), 229 deletions(-) create mode 100644 performance-tests/latency.png create mode 100644 performance-tests/ml_kem_vs_kyber.png delete mode 100644 performance-tests/operation_breakdown.png delete mode 100644 performance-tests/performance_comparison.png create mode 100644 performance-tests/requirements.txt create mode 100644 performance-tests/results.json delete mode 100644 performance-tests/scalability.png delete mode 100644 performance-tests/throughput.png diff --git a/Makefile b/Makefile index bcb3b2d..449b871 100644 --- a/Makefile +++ b/Makefile @@ -15,4 +15,5 @@ clean: rm -rf ./target/ benchmark: + .venv/bin/maturin develop --release .venv/bin/python performance-tests/benchmark.py \ No newline at end of file diff --git a/performance-tests/benchmark.py b/performance-tests/benchmark.py index e50c5b2..fdd013b 100644 --- a/performance-tests/benchmark.py +++ b/performance-tests/benchmark.py @@ -1,238 +1,246 @@ #!/usr/bin/env python3 -"""Performance benchmarking and graphing script for pykyber. +"""Time ML-KEM and the legacy Kyber classes, then draw the charts in the README. -This script runs the performance tests from python/tests/test_kyber.py -and generates graphs from the results. -""" +Run it against a release build, because a debug build is many times slower: -import subprocess -import re -import matplotlib.pyplot as plt + maturin develop --release + python performance-tests/benchmark.py +It writes results.json, latency.png and ml_kem_vs_kyber.png next to itself and +prints the table that the README shows. Needs matplotlib (see requirements-dev.txt). +""" -def run_performance_tests(): - """Run pytest performance tests and parse results.""" - result = subprocess.run( - ['.venv/bin/python', '-m', 'pytest', - 'python/tests/test_kyber.py', - '-v', '-k', 'performance', - '--tb=no', '-q', '-s'], - capture_output=True, - text=True - ) - - output = result.stdout + result.stderr - - results = { - 'Kyber512': {}, - 'Kyber768': {}, - 'Kyber1024': {} +import json +import platform +import statistics +import sys +import time +import warnings +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt # noqa: E402 + +import pykyber # noqa: E402 + +HERE = Path(__file__).resolve().parent + +# Each round times ITERATIONS calls and the median of ROUNDS rounds is reported, +# so one slow round (a scheduler hiccup, a frequency change) does not decide the number. +ITERATIONS = 500 +ROUNDS = 7 +WARMUP_CALLS = 200 + +LEVELS = ("512", "768", "1024") +OPERATIONS = ("keypair", "encapsulate", "decapsulate") +OPERATION_LABELS = { + "keypair": "Key generation", + "encapsulate": "Encapsulation", + "decapsulate": "Decapsulation", +} +FAMILIES = {"ML-KEM": "ML_KEM_{}", "Kyber": "Kyber{}"} + +NS_PER_MS = 1_000_000 +MS_PER_S = 1_000 + +# Okabe-Ito blue, vermillion and green. They pass scripts/validate_palette.js from the +# dataviz skill on a white surface (colour-blind separation and 3:1 contrast). +OPERATION_COLORS = {"keypair": "#0072B2", "encapsulate": "#D55E00", "decapsulate": "#009E73"} +INK = "#1f2328" +MUTED = "#59636e" +GRID = "#d1d9e0" +DPI = 150 +# Opacity of the Kyber bars, so they read as the secondary series next to ML-KEM. +KYBER_ALPHA = 0.45 + + +def time_rounds(call): + """Milliseconds per call for each round.""" + for _ in range(WARMUP_CALLS): + call() + rounds = [] + for _ in range(ROUNDS): + start = time.perf_counter_ns() + for _ in range(ITERATIONS): + call() + rounds.append((time.perf_counter_ns() - start) / ITERATIONS / NS_PER_MS) + return rounds + + +def bench_class(cls): + """Time one class through its public API, with static calls for the receiver steps.""" + keypair = cls() + public_key = keypair.public_key + secret_key = keypair.secret_key + ciphertext = cls.encapsulate(public_key).ciphertext + calls = { + "keypair": lambda: cls(), + "encapsulate": lambda: cls.encapsulate(public_key), + "decapsulate": lambda: cls.decapsulate(ciphertext, secret_key), } - - pattern = r'Kyber(\d+)\s+(keypair generation|encapsulation|decapsulation|full key exchange.*?):\s+([\d.]+)\s+ms/op' - - for match in re.finditer(pattern, output): - variant = f"Kyber{match.group(1)}" - operation = match.group(2).strip() - time_ms = float(match.group(3)) - - if 'keypair generation' in operation: - results[variant]['keypair'] = time_ms - elif 'encapsulation' in operation: - results[variant]['encapsulate'] = time_ms - elif 'decapsulation' in operation: - results[variant]['decapsulate'] = time_ms - elif 'class API' in operation: - results[variant]['class_api'] = time_ms - elif 'static methods' in operation: - results[variant]['static_methods'] = time_ms - + return {op: time_rounds(calls[op]) for op in OPERATIONS} + + +def run(): + results = {} + with warnings.catch_warnings(): + warnings.simplefilter("ignore") # the Kyber classes warn once per process + for pattern in FAMILIES.values(): + for level in LEVELS: + name = pattern.format(level) + print(f"timing {name} ...", flush=True) + rounds = bench_class(getattr(pykyber, name)) + results[name] = { + op: { + "median_ms": statistics.median(values), + "min_ms": min(values), + "max_ms": max(values), + } + for op, values in rounds.items() + } return results -def create_comparison_chart(results): - """Create a comparison chart across all variants and operations.""" - variants = ['Kyber512', 'Kyber768', 'Kyber1024'] - - x = range(len(variants)) - width = 0.25 - - fig, ax = plt.subplots(figsize=(12, 6)) - - keypair_times = [results[v]['keypair'] for v in variants] - encapsulate_times = [results[v]['encapsulate'] for v in variants] - decapsulate_times = [results[v]['decapsulate'] for v in variants] - - bars1 = ax.bar([i - width for i in x], keypair_times, width, label='Keypair Generation', color='#2ecc71') - bars2 = ax.bar(x, encapsulate_times, width, label='Encapsulation', color='#3498db') - bars3 = ax.bar([i + width for i in x], decapsulate_times, width, label='Decapsulation', color='#e74c3c') - - ax.set_xlabel('Kyber Variant', fontsize=12) - ax.set_ylabel('Time (ms)', fontsize=12) - ax.set_title('PyKyber Performance Comparison', fontsize=14, fontweight='bold') - ax.set_xticks(x) - ax.set_xticklabels(variants) - ax.legend() - ax.grid(axis='y', alpha=0.3) - - for bars in [bars1, bars2, bars3]: - for bar in bars: - height = bar.get_height() - ax.annotate(f'{height:.2f}', - xy=(bar.get_x() + bar.get_width() / 2, height), - xytext=(0, 3), - textcoords="offset points", - ha='center', va='bottom', fontsize=8) - - plt.tight_layout() - plt.savefig('performance-tests/performance_comparison.png', dpi=150) - print("Saved: performance-tests/performance_comparison.png") - plt.close() - - -def create_operation_breakdown(results): - """Create individual charts for each operation.""" - variants = ['Kyber512', 'Kyber768', 'Kyber1024'] - colors = ['#2ecc71', '#3498db', '#e74c3c'] - - fig, axes = plt.subplots(1, 3, figsize=(15, 5)) - - operations = ['keypair', 'encapsulate', 'decapsulate'] - titles = ['Keypair Generation', 'Encapsulation', 'Decapsulation'] - - for idx, (op, title) in enumerate(zip(operations, titles)): - times = [results[v][op] for v in variants] - bars = axes[idx].bar(variants, times, color=colors) - axes[idx].set_title(title, fontsize=12, fontweight='bold') - axes[idx].set_ylabel('Time (ms)') - axes[idx].grid(axis='y', alpha=0.3) - - for bar in bars: - height = bar.get_height() - axes[idx].annotate(f'{height:.2f}', - xy=(bar.get_x() + bar.get_width() / 2, height), - xytext=(0, 3), - textcoords="offset points", - ha='center', va='bottom', fontsize=10) - - plt.tight_layout() - plt.savefig('performance-tests/operation_breakdown.png', dpi=150) - print("Saved: performance-tests/operation_breakdown.png") - plt.close() - - -def create_scalability_chart(results): - """Create a chart showing how performance scales with security level.""" - variants = ['Kyber512', 'Kyber768', 'Kyber1024'] - security_levels = ['~AES-128', '~AES-192', '~AES-256'] - - keypair_times = [results[v]['keypair'] for v in variants] - encapsulate_times = [results[v]['encapsulate'] for v in variants] - decapsulate_times = [results[v]['decapsulate'] for v in variants] - - fig, ax = plt.subplots(figsize=(10, 6)) - - x = range(len(variants)) - - ax.plot(x, keypair_times, 'o-', linewidth=2, markersize=8, label='Keypair Generation', color='#2ecc71') - ax.plot(x, encapsulate_times, 's-', linewidth=2, markersize=8, label='Encapsulation', color='#3498db') - ax.plot(x, decapsulate_times, '^-', linewidth=2, markersize=8, label='Decapsulation', color='#e74c3c') - - ax.set_xticks(x) - ax.set_xticklabels([f'{v}\n({s})' for v, s in zip(variants, security_levels)]) - ax.set_xlabel('Kyber Variant (Security Level)', fontsize=12) - ax.set_ylabel('Time (ms)', fontsize=12) - ax.set_title('PyKyber Performance Scalability', fontsize=14, fontweight='bold') - ax.legend() - ax.grid(alpha=0.3) - - for i, variant in enumerate(variants): - for j, (data, label) in enumerate([(keypair_times, 'keypair'), - (encapsulate_times, 'encapsulate'), - (decapsulate_times, 'decapsulate')]): - ax.annotate(f'{data[i]:.2f}', - (i, data[i]), - textcoords="offset points", - xytext=(0, 10), - ha='center', fontsize=8) - - plt.tight_layout() - plt.savefig('performance-tests/scalability.png', dpi=150) - print("Saved: performance-tests/scalability.png") - plt.close() - - -def create_throughput_chart(results): - """Create a throughput chart showing operations per second.""" - variants = ['Kyber512', 'Kyber768', 'Kyber1024'] - - keypair_ops = [1000 / results[v]['keypair'] for v in variants] - encapsulate_ops = [1000 / results[v]['encapsulate'] for v in variants] - decapsulate_ops = [1000 / results[v]['decapsulate'] for v in variants] - - fig, ax = plt.subplots(figsize=(10, 6)) - - x = range(len(variants)) - width = 0.25 - - bars1 = ax.bar([i - width for i in x], keypair_ops, width, label='Keypair Generation', color='#2ecc71') - bars2 = ax.bar(x, encapsulate_ops, width, label='Encapsulation', color='#3498db') - bars3 = ax.bar([i + width for i in x], decapsulate_ops, width, label='Decapsulation', color='#e74c3c') - - ax.set_xlabel('Kyber Variant', fontsize=12) - ax.set_ylabel('Operations per Second', fontsize=12) - ax.set_title('PyKyber Throughput (Operations per Second)', fontsize=14, fontweight='bold') - ax.set_xticks(x) - ax.set_xticklabels(variants) - ax.legend() - ax.grid(axis='y', alpha=0.3) - - for bars in [bars1, bars2, bars3]: - for bar in bars: - height = bar.get_height() - ax.annotate(f'{int(height)}', - xy=(bar.get_x() + bar.get_width() / 2, height), - xytext=(0, 3), - textcoords="offset points", - ha='center', va='bottom', fontsize=8) - - plt.tight_layout() - plt.savefig('performance-tests/throughput.png', dpi=150) - print("Saved: performance-tests/throughput.png") - plt.close() - - -def print_summary(results): - """Print a summary table of results.""" - print("\n" + "=" * 60) - print("PyKyber Performance Summary (100 iterations each)") - print("=" * 60) - print(f"{'Variant':<12} {'Keypair (ms)':<15} {'Encapsulate (ms)':<18} {'Decapsulate (ms)':<18}") - print("-" * 60) - for variant in ['Kyber512', 'Kyber768', 'Kyber1024']: - r = results[variant] - print(f"{variant:<12} {r['keypair']:<15.3f} {r['encapsulate']:<18.3f} {r['decapsulate']:<18.3f}") - print("=" * 60) - - print("\nThroughput (operations/second):") - print("-" * 60) - print(f"{'Variant':<12} {'Keypair/s':<15} {'Encapsulate/s':<18} {'Decapsulate/s':<18}") - print("-" * 60) - for variant in ['Kyber512', 'Kyber768', 'Kyber1024']: - r = results[variant] - kp_ops = int(1000 / r['keypair']) - enc_ops = int(1000 / r['encapsulate']) - dec_ops = int(1000 / r['decapsulate']) - print(f"{variant:<12} {kp_ops:<15} {enc_ops:<18} {dec_ops:<18}") - print("=" * 60) - - -if __name__ == '__main__': - print("Running performance tests from python/tests/test_kyber.py...") - results = run_performance_tests() - print_summary(results) - create_comparison_chart(results) - create_operation_breakdown(results) - create_scalability_chart(results) - create_throughput_chart(results) - print("\nAll graphs saved in performance-tests/") +def machine_info(): + cpu = platform.processor() or platform.machine() + try: + for line in Path("/proc/cpuinfo").read_text().splitlines(): + if line.startswith("model name"): + cpu = line.split(":", 1)[1].strip() + break + except OSError: + pass + return { + "cpu": cpu, + "os": platform.platform(), + "python": platform.python_version(), + "iterations": ITERATIONS, + "rounds": ROUNDS, + } + + +def footnote(info): + return ( + f"{info['cpu']}, Python {info['python']}, release build. " + f"Median of {info['rounds']} rounds of {info['iterations']} calls." + ) + + +def style(ax): + ax.set_facecolor("white") + ax.grid(axis="y", color=GRID, linewidth=0.8) + ax.set_axisbelow(True) + for side in ("top", "right", "left"): + ax.spines[side].set_visible(False) + ax.spines["bottom"].set_color(GRID) + ax.tick_params(colors=MUTED, length=0) + + +def latency_chart(results, info): + """Time per call for the three ML-KEM sets, one bar per operation.""" + names = [f"ML_KEM_{level}" for level in LEVELS] + fig, ax = plt.subplots(figsize=(9, 5), facecolor="white") + style(ax) + width = 0.26 + gap = 0.02 + for j, op in enumerate(OPERATIONS): + xs = [i + (j - 1) * (width + gap) for i in range(len(names))] + medians = [results[n][op]["median_ms"] for n in names] + below = [results[n][op]["median_ms"] - results[n][op]["min_ms"] for n in names] + above = [results[n][op]["max_ms"] - results[n][op]["median_ms"] for n in names] + bars = ax.bar(xs, medians, width, color=OPERATION_COLORS[op], label=OPERATION_LABELS[op]) + ax.errorbar(xs, medians, yerr=[below, above], fmt="none", ecolor=INK, elinewidth=1, capsize=3) + for bar, value, top in zip(bars, medians, (results[n][op]["max_ms"] for n in names)): + # Label above the whisker, so the number never sits on the line. + ax.annotate(f"{value:.3f}", (bar.get_x() + bar.get_width() / 2, top), + xytext=(0, 4), textcoords="offset points", ha="center", + fontsize=8, color=INK) + ax.set_xticks(range(len(names))) + ax.set_xticklabels([f"ML-KEM-{level}" for level in LEVELS], color=INK, fontsize=11) + ax.set_ylabel("milliseconds per call (lower is faster)", color=MUTED) + ax.set_title("ML-KEM time per operation", loc="left", color=INK, fontsize=14, + fontweight="bold") + ax.legend(frameon=False, loc="upper left", labelcolor=INK) + fig.text(0.01, 0.01, footnote(info) + " Whiskers show the fastest and slowest round.", + fontsize=7, color=MUTED) + fig.tight_layout(rect=(0, 0.03, 1, 1)) + fig.savefig(HERE / "latency.png", dpi=DPI, facecolor="white") + plt.close(fig) + + +def comparison_chart(results, info): + """Operations per second, ML-KEM against the deprecated Kyber classes.""" + fig, axes = plt.subplots(1, 3, figsize=(12, 4.8), facecolor="white") + width = 0.36 + gap = 0.02 + for ax, op in zip(axes, OPERATIONS): + style(ax) + for j, (family, pattern) in enumerate(FAMILIES.items()): + xs = [i + (j - 0.5) * (width + gap) for i in range(len(LEVELS))] + rates = [MS_PER_S / results[pattern.format(level)][op]["median_ms"] for level in LEVELS] + is_kyber = family == "Kyber" + bars = ax.bar(xs, rates, width, color=OPERATION_COLORS[op], + alpha=KYBER_ALPHA if is_kyber else 1.0, + hatch="///" if is_kyber else "", edgecolor="white", linewidth=0) + for bar, value in zip(bars, rates): + ax.annotate(f"{value:,.0f}", (bar.get_x() + bar.get_width() / 2, bar.get_height()), + xytext=(0, 4), textcoords="offset points", ha="center", + fontsize=7.5, color=INK) + ax.set_xticks(range(len(LEVELS))) + ax.set_xticklabels(LEVELS, color=INK) + ax.set_title(OPERATION_LABELS[op], loc="left", color=INK, fontsize=12, fontweight="bold") + axes[0].set_ylabel("operations per second (higher is faster)", color=MUTED) + handles = [ + plt.Rectangle((0, 0), 1, 1, facecolor=MUTED), + plt.Rectangle((0, 0), 1, 1, facecolor=MUTED, alpha=KYBER_ALPHA, hatch="///", + edgecolor="white"), + ] + fig.legend(handles, ["ML-KEM (solid)", "Kyber, deprecated (hatched)"], frameon=False, + loc="upper right", labelcolor=INK, ncol=2) + fig.suptitle("ML-KEM and the legacy Kyber classes", x=0.01, ha="left", color=INK, + fontsize=14, fontweight="bold") + fig.text(0.01, 0.01, footnote(info) + " Axis labels are the parameter set (512, 768, 1024).", + fontsize=7, color=MUTED) + fig.tight_layout(rect=(0, 0.03, 1, 0.94)) + fig.savefig(HERE / "ml_kem_vs_kyber.png", dpi=DPI, facecolor="white") + plt.close(fig) + + +def markdown_table(results): + lines = [ + "| Class | Key generation | Encapsulation | Decapsulation |", + "|-------|----------------|---------------|---------------|", + ] + for family, pattern in FAMILIES.items(): + for level in LEVELS: + name = pattern.format(level) + cells = [] + for op in OPERATIONS: + ms = results[name][op]["median_ms"] + cells.append(f"{ms:.3f} ms ({MS_PER_S / ms:,.0f}/s)") + label = f"`ML_KEM_{level}`" if family == "ML-KEM" else f"`Kyber{level}`" + lines.append(f"| {label} | " + " | ".join(cells) + " |") + return "\n".join(lines) + + +def main(): + if not hasattr(pykyber, "ML_KEM_768"): + sys.exit("this pykyber build has no ML-KEM; build the 2.0 branch with maturin develop --release") + info = machine_info() + results = run() + (HERE / "results.json").write_text( + json.dumps({"machine": info, "results": results}, indent=2) + "\n", encoding="ascii" + ) + latency_chart(results, info) + comparison_chart(results, info) + print() + print(footnote(info)) + print() + print(markdown_table(results)) + print("\nWrote results.json, latency.png and ml_kem_vs_kyber.png in", HERE) + + +if __name__ == "__main__": + main() diff --git a/performance-tests/latency.png b/performance-tests/latency.png new file mode 100644 index 0000000000000000000000000000000000000000..ee3199c67348eda2b6cf2f7547acd5d5bc130552 GIT binary patch literal 69685 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

(Gr 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≫*zKCd9fl|MZ9ivgF#<^ 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 E51Q8&o&W#< literal 0 HcmV?d00001 diff --git a/performance-tests/ml_kem_vs_kyber.png b/performance-tests/ml_kem_vs_kyber.png new file mode 100644 index 0000000000000000000000000000000000000000..6f38096c6bb05bfa35618c37f02824822354a379 GIT binary patch literal 126806 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⪙iXcC7%W@>{LsTUv+cjn7F;OH+32 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 diff --git a/performance-tests/performance_comparison.png b/performance-tests/performance_comparison.png deleted file mode 100644 index b2a299adbc2c4eea118ac20f3e2160bfc0f2e227..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57257 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�(P?xbi`^y7du13`f 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 BsaF61 diff --git a/performance-tests/requirements.txt b/performance-tests/requirements.txt new file mode 100644 index 0000000..58e0d3f --- /dev/null +++ b/performance-tests/requirements.txt @@ -0,0 +1,3 @@ +# Only needed to draw the benchmark charts (make benchmark). +# matplotlib 3.7 is the last line that supports Python 3.8. +matplotlib>=3.7 diff --git a/performance-tests/results.json b/performance-tests/results.json new file mode 100644 index 0000000..b81fd5f --- /dev/null +++ b/performance-tests/results.json @@ -0,0 +1,113 @@ +{ + "machine": { + "cpu": "Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz", + "os": "Linux-7.0.0-42-generic-x86_64-with-glibc2.43", + "python": "3.14.4", + "iterations": 500, + "rounds": 7 + }, + "results": { + "ML_KEM_512": { + "keypair": { + "median_ms": 0.03084688, + "min_ms": 0.030227022, + "max_ms": 0.031714176 + }, + "encapsulate": { + "median_ms": 0.036884415999999996, + "min_ms": 0.034839664, + "max_ms": 0.037238023999999995 + }, + "decapsulate": { + "median_ms": 0.045211512, + "min_ms": 0.044502955999999996, + "max_ms": 0.046178892 + } + }, + "ML_KEM_768": { + "keypair": { + "median_ms": 0.052071804, + "min_ms": 0.051858684, + "max_ms": 0.05341931 + }, + "encapsulate": { + "median_ms": 0.05827729, + "min_ms": 0.057428306, + "max_ms": 0.060119014000000005 + }, + "decapsulate": { + "median_ms": 0.071233474, + "min_ms": 0.069818558, + "max_ms": 0.072420324 + } + }, + "ML_KEM_1024": { + "keypair": { + "median_ms": 0.08183407000000001, + "min_ms": 0.079728936, + "max_ms": 0.085947734 + }, + "encapsulate": { + "median_ms": 0.08870694, + "min_ms": 0.08488179, + "max_ms": 0.09071324400000001 + }, + "decapsulate": { + "median_ms": 0.105884678, + "min_ms": 0.10320048600000001, + "max_ms": 0.113365562 + } + }, + "Kyber512": { + "keypair": { + "median_ms": 0.03262543, + "min_ms": 0.031415108, + "max_ms": 0.034500692 + }, + "encapsulate": { + "median_ms": 0.03986382, + "min_ms": 0.039075866, + "max_ms": 0.04647873 + }, + "decapsulate": { + "median_ms": 0.041719248, + "min_ms": 0.040897228, + "max_ms": 0.04311243 + } + }, + "Kyber768": { + "keypair": { + "median_ms": 0.055750828, + "min_ms": 0.053028982, + "max_ms": 0.05862622 + }, + "encapsulate": { + "median_ms": 0.06226379, + "min_ms": 0.058065872000000004, + "max_ms": 0.074707204 + }, + "decapsulate": { + "median_ms": 0.063505224, + "min_ms": 0.061659314, + "max_ms": 0.066696846 + } + }, + "Kyber1024": { + "keypair": { + "median_ms": 0.08775699, + "min_ms": 0.083874044, + "max_ms": 0.095251412 + }, + "encapsulate": { + "median_ms": 0.095971828, + "min_ms": 0.094348506, + "max_ms": 0.10051261199999999 + }, + "decapsulate": { + "median_ms": 0.10352679799999999, + "min_ms": 0.095782972, + "max_ms": 0.108335928 + } + } + } +} diff --git a/performance-tests/scalability.png b/performance-tests/scalability.png deleted file mode 100644 index 890aa51ad76e853c4392159eee5d7fb8cb8e8a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103439 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

G(H+vHJMR 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 I{*RCU3lx4!5&!@I From b522b5c227cc8184f775527c0e9ac567b3120173 Mon Sep 17 00:00:00 2001 From: Yoav Haimov Date: Sat, 31 Oct 2026 10:06:33 +0200 Subject: [PATCH 2/7] docs: shorten the README and rewrite it in plain prose Same facts, fewer words: install, quick start, a shorter class tour, sizes, errors, the Kyber deprecation, security status and the new benchmark table and charts. Every Python block in it was run, and the error message it shows is the real one. The performance section now says what was measured and on what. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01CXWjkNs3Htog36snV9FcXb --- CHANGELOG.md | 2 + README.md | 174 +++++++++++++++++++++------------------------------ 2 files changed, 74 insertions(+), 102 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b7671a..857545f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- Docs: the README is shorter and rewritten in plain prose. The benchmark (`performance-tests/benchmark.py`) now times `ML_KEM_*` as well as the Kyber classes on a release build, writes `results.json`, and draws two charts (`latency.png`, `ml_kem_vs_kyber.png`) that replace the four old ones. The old README figures were for the Kyber classes only. `make benchmark` builds the release extension first, and the chart dependency is in `performance-tests/requirements.txt`. + - Security pass over the legacy Kyber code (issue #18): the random bytes for `Kyber*` key generation and encapsulation now come from the operating system generator (`OsRng`) instead of `thread_rng()`, and a failure of that generator is raised as `RandomnessError` (a `KyberError`) instead of panicking or being retried with a weaker source. Seeded paths and all Kyber output are unchanged. - Security pass over the legacy Kyber code (issue #18), continued: optimization barriers in `poly_frommsg`, `verify` and `cmov`; decapsulation and the PRF noise buffers are wiped on every exit; secrets returned to Python are wiped on the Rust side; the Rust keypair and encapsulation functions check buffer lengths; `rand` is 0.8.6 in `Cargo.lock`. The findings, the CVE and paper table and the two decisions not to fix (Compress_11, Keccak stack spills) are in `SECURITY.md`. Kyber output is unchanged. - Behavior change, `Kyber512/768/1024.from_keys` (issue #18): it now raises `KyberError` when the public key is not the copy stored inside the secret key (a round-3 Kyber secret key is `sk_pke || pk || H(pk) || z`). Before, any public key and secret key of the right sizes were accepted, so `Kyber768.from_keys(a.public_key, b.secret_key)` built a keypair whose `decapsulate` silently returned a different secret than `encapsulate` had produced. A key pair that matches is accepted as before, and a wrong-size key keeps its existing size error. `ML_KEM_*.from_keys` is not changed. diff --git a/README.md b/README.md index 2464604..c8fc12e 100644 --- a/README.md +++ b/README.md @@ -1,162 +1,132 @@ # PyKyber -A Python library for post-quantum key encapsulation, implemented in Rust: ML-KEM (FIPS 203), plus the legacy round-3 CRYSTALS-Kyber classes, which are deprecated. +PyKyber is a Python library for post-quantum key encapsulation. It implements ML-KEM (FIPS 203) in Rust, with its own Keccak and number-theoretic transform and no third-party crypto crate, and ships Python bindings built with PyO3. The old round-3 CRYSTALS-Kyber classes are still in the package but deprecated. -ML-KEM and round-3 Kyber are not interoperable. If you are moving from Kyber, read the [migration guide](docs/migration.md) first. +ML-KEM and round-3 Kyber give different shared secrets, so they cannot talk to each other. If you are moving from Kyber, read the [migration guide](docs/migration.md) first. -## Installation +## Install ```bash pip install pykyber ``` -## Quick Start +It needs Python 3.8 or newer and has no runtime dependencies. + +## Quick start ```python import pykyber -# Generate a keypair (Alice) -alice_keypair = pykyber.ML_KEM_768() - -# Encapsulate - create shared secret (Bob) -bob_result = pykyber.ML_KEM_768.encapsulate(alice_keypair.public_key) +# Alice makes a keypair and sends Bob her public key. +alice = pykyber.ML_KEM_768() -# Decapsulate - recover shared secret (Alice) -shared_secret = alice_keypair.decapsulate(bob_result.ciphertext) +# Bob encapsulates against it and sends the ciphertext back. +bob = pykyber.ML_KEM_768.encapsulate(alice.public_key) -# Both parties now share the same secret -print(f"Match: {bob_result.shared_secret == shared_secret}") +# Alice decapsulates and ends up with the same 32-byte secret. +secret = alice.decapsulate(bob.ciphertext) +assert secret == bob.shared_secret ``` -ML-KEM-768 is the parameter set NIST recommends as the default (FIPS 203, section 8). +ML-KEM-768 is the set NIST recommends by default (FIPS 203, section 8). `ML_KEM_512` and `ML_KEM_1024` work the same way. -## API Usage +## Using the classes -```python -import pykyber +A class instance is a keypair. Creating one generates the keys. -# Create a keypair - instant generation on class instantiation -keypair = pykyber.ML_KEM_512() # security category 1 -keypair = pykyber.ML_KEM_768() # security category 3 (NIST default) -keypair = pykyber.ML_KEM_1024() # security category 5 - -# Deterministic key generation from a 64-byte seed d || z (the seed is secret) -seed = bytes(range(64)) -keypair = pykyber.ML_KEM_768(seed=seed) -assert keypair.seed == seed # None for randomly generated keypairs - -# Access raw key bytes -public_key = keypair.public_key # bytes -secret_key = keypair.secret_key # bytes +```python +keypair = pykyber.ML_KEM_768() +public_key = keypair.public_key # bytes +secret_key = keypair.secret_key # bytes +public_key, secret_key = keypair # tuple unpacking works too -# Or unpack directly as tuple -public_key, secret_key = keypair # same as above +# A 64-byte seed (d || z) gives the same keys every time. Keep the seed secret. +keypair = pykyber.ML_KEM_768(seed=bytes(range(64))) +keypair.seed # None for randomly generated keypairs -# Encapsulate - create ciphertext and shared secret result = keypair.encapsulate() -# result.ciphertext - bytes to send to receiver -# result.shared_secret - 32 bytes shared secret +ciphertext, shared_secret = result # or result.ciphertext, result.shared_secret -# Serialization and Utilities -hex_pk = keypair.public_key_hex # Get hex representation -b64_sk = keypair.secret_key_b64 # Get base64 representation -data = keypair.to_dict() # Get dictionary of hex keys - -# Encapsulation results also support serialization -ct_hex = result.ciphertext_hex -ss_b64 = result.shared_secret_b64 - -# Or unpack directly as tuple -ciphertext, shared_secret = keypair.encapsulate() # same as above - -# Decapsulate - recover shared secret from ciphertext -shared_secret = keypair.decapsulate(result.ciphertext) +keypair.decapsulate(ciphertext) # the same shared_secret +``` -# Static methods - use without creating a keypair instance +The static forms work without a keypair object, which is what the two sides of a real exchange use: -# Encapsulate with just a public key +```python result = pykyber.ML_KEM_768.encapsulate(public_key) - -# Decapsulate with just ciphertext and secret key -shared_secret = pykyber.ML_KEM_768.decapsulate(result.ciphertext, secret_key) - -# Load a Keypair object from existing keys +secret = pykyber.ML_KEM_768.decapsulate(result.ciphertext, secret_key) keypair = pykyber.ML_KEM_768.from_keys(public_key, secret_key) ``` -## Key Sizes +Keys, ciphertexts and shared secrets also come as hex and base64 (`keypair.public_key_hex`, `keypair.secret_key_b64`, `result.ciphertext_hex`) and `keypair.to_dict()` returns the hex keys. The [API reference](docs/api.md) lists everything. -| Variant | Public Key | Secret Key | Ciphertext | Shared Secret | -|-------------|------------|------------|------------|---------------| -| ML-KEM-512 | 800 bytes | 1632 bytes | 768 bytes | 32 bytes | -| ML-KEM-768 | 1184 bytes | 2400 bytes | 1088 bytes | 32 bytes | -| ML-KEM-1024 | 1568 bytes | 3168 bytes | 1568 bytes | 32 bytes | +## Sizes -The legacy Kyber classes use the same sizes, so a key or ciphertext cannot be identified as Kyber or ML-KEM from its length. +| Class | Public key | Secret key | Ciphertext | Shared secret | +|-------|------------|------------|------------|---------------| +| `ML_KEM_512` | 800 bytes | 1632 bytes | 768 bytes | 32 bytes | +| `ML_KEM_768` | 1184 bytes | 2400 bytes | 1088 bytes | 32 bytes | +| `ML_KEM_1024` | 1568 bytes | 3168 bytes | 1568 bytes | 32 bytes | -## Error Handling +The deprecated Kyber classes use the same sizes, so you cannot tell a Kyber key from an ML-KEM key by its length. -All operations raise `KyberError`, or one of its subclasses, when invalid input is provided: +## Errors -```python -import pykyber +Bad input raises `KyberError` or one of its subclasses. +```python try: - pykyber.ML_KEM_768.encapsulate(b"too_short") + pykyber.ML_KEM_768.encapsulate(b"too short") except pykyber.KyberError as e: - print(e) -# Output: Invalid public_key for ML-KEM-768.encapsulate: expected 1184 bytes, got 9. + print(e) # Invalid public_key for ML-KEM-768.encapsulate: expected 1184 bytes, got 9. ``` -Common error cases: -- Invalid key, ciphertext or seed size: `InvalidInputError` -- Encapsulation key that fails the FIPS 203 section 7.2 check: `InvalidEncapsulationKeyError` -- Decapsulation key that fails the FIPS 203 section 7.3 check: `InvalidDecapsulationKeyError` -- An object of another algorithm: (a `Kyber*` keypair passed to an `ML_KEM_*` method, or another ML-KEM parameter set): `AlgorithmMismatchError` +The subclasses you are most likely to meet: -A well-formed ciphertext that was not made for the key does not raise; decapsulation returns a different, pseudorandom secret (implicit rejection, FIPS 203). +- `InvalidInputError` for a key, ciphertext or seed of the wrong size. +- `InvalidEncapsulationKeyError` and `InvalidDecapsulationKeyError` for keys that fail the checks in FIPS 203, sections 7.2 and 7.3. +- `AlgorithmMismatchError` when you pass a `Kyber*` keypair to an `ML_KEM_*` method, or a keypair from another ML-KEM set. -## Deprecated: Kyber +A well-formed ciphertext that was not made for your key does not raise. Decapsulation returns a different, random-looking secret instead, which is how FIPS 203 does implicit rejection. -`Kyber512`, `Kyber768` and `Kyber1024` implement round-3 CRYSTALS-Kyber. They still work and their output has not changed from 1.0.5, but they are deprecated in favor of ML-KEM: the first use of one in a process emits a `KyberDeprecationWarning` (a `DeprecationWarning`, which Python hides by default unless it is raised from `__main__`; run with `-W default::DeprecationWarning` to see it). The [migration guide](docs/migration.md) explains how to move. +## The Kyber classes are deprecated + +`Kyber512`, `Kyber768` and `Kyber1024` implement round-3 CRYSTALS-Kyber. They still work and their output matches 1.0.5. The first use of one in a process emits a `KyberDeprecationWarning`. Python hides `DeprecationWarning` unless it comes from `__main__`, so run with `-W default::DeprecationWarning` if you want to see it. The [migration guide](docs/migration.md) explains how to switch. ## Security status -The ML-KEM code is checked against the official ACVP, C2SP CCTV and Wycheproof test vectors and against an independent implementation (a dev-only differential test). It has not been independently audited, and the side-channel review planned for 2.0 has not been completed, so this README makes no constant-time claim. Report vulnerabilities as described in [SECURITY.md](SECURITY.md). Secret keys and shared secrets are returned as immutable Python `bytes` that cannot be wiped from memory. +The ML-KEM code passes the official NIST ACVP vectors, the C2SP CCTV vectors and the Wycheproof vectors, and it matches an independent implementation in a differential test that runs only in development. Nobody outside the project has audited it. PyKyber makes no constant-time claim: the checks so far are evidence, not a proof, and [SECURITY.md](SECURITY.md) records what was checked, what was fixed and what is still open, such as stack copies left by the Keccak permutation. +Secret keys and shared secrets come back as Python `bytes`, which are immutable and cannot be wiped from memory. To report a vulnerability, follow [SECURITY.md](SECURITY.md). ## Performance -Performance benchmarks of the legacy Kyber classes (100 iterations each; the benchmark has not been rerun for ML-KEM): +These numbers are time per call from Python, including the binding overhead, on an Intel Core i7-7700 at 3.6 GHz with Python 3.14 and a release build. Each figure is the median of 7 rounds of 500 calls. -| Variant | Keypair | Encapsulate | Decapsulate | -|---------|---------|-------------|-------------| -| Kyber512 | 0.44 ms (2,262/s) | 0.58 ms (1,721/s) | 0.71 ms (1,404/s) | -| Kyber768 | 0.76 ms (1,312/s) | 0.90 ms (1,111/s) | 1.08 ms (930/s) | -| Kyber1024 | 1.08 ms (928/s) | 1.35 ms (743/s) | 1.55 ms (645/s) | +| Class | Key generation | Encapsulation | Decapsulation | +|-------|----------------|---------------|---------------| +| `ML_KEM_512` | 0.031 ms (32,418/s) | 0.037 ms (27,112/s) | 0.045 ms (22,118/s) | +| `ML_KEM_768` | 0.052 ms (19,204/s) | 0.058 ms (17,159/s) | 0.071 ms (14,038/s) | +| `ML_KEM_1024` | 0.082 ms (12,220/s) | 0.089 ms (11,273/s) | 0.106 ms (9,444/s) | +| `Kyber512` | 0.033 ms (30,651/s) | 0.040 ms (25,085/s) | 0.042 ms (23,970/s) | +| `Kyber768` | 0.056 ms (17,937/s) | 0.062 ms (16,061/s) | 0.064 ms (15,747/s) | +| `Kyber1024` | 0.088 ms (11,395/s) | 0.096 ms (10,420/s) | 0.104 ms (9,659/s) | -Run benchmarks and generate graphs: +ML-KEM and the old Kyber classes are within about 10 percent of each other. ML-KEM is slightly faster at key generation and encapsulation and slightly slower at decapsulation. -```bash -make benchmark -``` - -Generated graphs: - -### Performance Comparison -![Performance Comparison](performance-tests/performance_comparison.png) +![ML-KEM time per operation](performance-tests/latency.png) -### Operation Breakdown -![Operation Breakdown](performance-tests/operation_breakdown.png) +![ML-KEM and Kyber operations per second](performance-tests/ml_kem_vs_kyber.png) -### Scalability -![Scalability](performance-tests/scalability.png) +To run the benchmark yourself, use a release build, because a debug build is many times slower. The make target does that for you: -### Throughput -![Throughput](performance-tests/throughput.png) +```bash +pip install -r requirements-dev.txt -r performance-tests/requirements.txt +make benchmark +``` +`make benchmark` builds the release extension, runs the timings and rewrites the two charts and `performance-tests/results.json`. ## License -This is free and unencumbered software released into the public domain. -See [LICENSE](LICENSE) or . +This is free and unencumbered software released into the public domain. See [LICENSE](LICENSE) or . From cf3ec6b7724b2ce88e7151d848822334cd49296b Mon Sep 17 00:00:00 2001 From: Yoav Haimov Date: Sat, 31 Oct 2026 10:12:15 +0200 Subject: [PATCH 3/7] chore: license under MIT OR Apache-2.0 instead of the Unlicense Adds LICENSE-MIT and LICENSE-APACHE (the Apache text is the apache.org file, 11358 bytes, SHA-256 cfc7749b...523d30) and removes LICENSE. Sets license = "MIT OR Apache-2.0" in Cargo.toml and pyproject.toml, with license-files, and drops the Public Domain classifier. The built wheel's METADATA has License-Expression: MIT OR Apache-2.0 and ships both files. Releases up to 1.0.5 stay under the Unlicense; the README, CONTRIBUTING.md, the changelog and the agent notes say so. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01CXWjkNs3Htog36snV9FcXb --- AGENTS.md | 2 +- CHANGELOG.md | 2 + CLAUDE.md | 2 +- CONTRIBUTING.md | 7 ++ Cargo.toml | 1 + LICENSE | 24 ------ LICENSE-APACHE | 202 ++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE-MIT | 21 +++++ PLAN-2.0.md | 2 +- README.md | 11 ++- docs/index.md | 2 +- pyproject.toml | 4 +- 12 files changed, 249 insertions(+), 31 deletions(-) delete mode 100644 LICENSE create mode 100644 LICENSE-APACHE create mode 100644 LICENSE-MIT diff --git a/AGENTS.md b/AGENTS.md index ea08edd..319f48c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # AGENTS.md — instructions for AI coding agents -You are working on **pykyber**, a post-quantum KEM library: an in-house Rust implementation (no third-party crypto at runtime) with PyO3 bindings, released under the Unlicense. People will run your code to protect real secrets. A test that passes is necessary but not sufficient; code that is correct but leaks timing is a vulnerability. +You are working on **pykyber**, a post-quantum KEM library: an in-house Rust implementation (no third-party crypto at runtime) with PyO3 bindings, released under MIT OR Apache-2.0 (the 1.x releases were Unlicense). People will run your code to protect real secrets. A test that passes is necessary but not sufficient; code that is correct but leaks timing is a vulnerability. Current work: the 2.0 release (GitHub issue #3), planned in `PLAN-2.0.md`. Read the work package (WP) you are assigned before you start. diff --git a/CHANGELOG.md b/CHANGELOG.md index 857545f..d3f1263 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- License: PyKyber is now licensed under MIT OR Apache-2.0, at the user's option (`LICENSE-MIT`, `LICENSE-APACHE`; `license = "MIT OR Apache-2.0"` in `Cargo.toml` and `pyproject.toml`). Releases up to 1.0.5 were published under the Unlicense and remain available under it. The `LICENSE` file and the "License :: Public Domain" classifier are gone. + - Docs: the README is shorter and rewritten in plain prose. The benchmark (`performance-tests/benchmark.py`) now times `ML_KEM_*` as well as the Kyber classes on a release build, writes `results.json`, and draws two charts (`latency.png`, `ml_kem_vs_kyber.png`) that replace the four old ones. The old README figures were for the Kyber classes only. `make benchmark` builds the release extension first, and the chart dependency is in `performance-tests/requirements.txt`. - Security pass over the legacy Kyber code (issue #18): the random bytes for `Kyber*` key generation and encapsulation now come from the operating system generator (`OsRng`) instead of `thread_rng()`, and a failure of that generator is raised as `RandomnessError` (a `KyberError`) instead of panicking or being retried with a weaker source. Seeded paths and all Kyber output are unchanged. diff --git a/CLAUDE.md b/CLAUDE.md index 27948c8..088612a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## What this is -PyKyber: a Python package (`pykyber`) exposing round-3 CRYSTALS-Kyber, implemented from scratch in Rust (its own Keccak/FIPS 202, NTT, etc.; no external crypto crate) and bound with PyO3 + maturin (abi3, Python ≥3.8). Unlicense. Current version 1.0.5; the version lives in both `Cargo.toml` and `pyproject.toml`, so keep them in sync. +PyKyber: a Python package (`pykyber`) exposing round-3 CRYSTALS-Kyber, implemented from scratch in Rust (its own Keccak/FIPS 202, NTT, etc.; no external crypto crate) and bound with PyO3 + maturin (abi3, Python ≥3.8). MIT OR Apache-2.0 from 2.0 (releases up to 1.0.5 were Unlicense). Current version 1.0.5; the version lives in both `Cargo.toml` and `pyproject.toml`, so keep them in sync. Active work is 2.0 (issue #3): add ML-KEM (FIPS 203) beside the legacy Kyber classes. The plan, the work packages and the verified spec facts are in `PLAN-2.0.md`. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a23970a..0817f07 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -122,6 +122,13 @@ The full rules are in `AGENTS.md`; the ones most often violated: for reading and output comparison in dev-only tests. Their code is never copied into this repo. +## Licensing + +PyKyber is licensed under MIT OR Apache-2.0, at the user's option. Unless you +say otherwise, a contribution you submit is licensed the same way, without extra +terms. Do not paste in code under another license, and never copy code from the +other implementations listed above. + ## Reporting security issues Do not open a public issue for security problems. Use GitHub's private diff --git a/Cargo.toml b/Cargo.toml index a3fbba8..9f58e78 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ name = "pykyber" version = "2.0.0" edition = "2021" +license = "MIT OR Apache-2.0" [lib] name = "pykyber" diff --git a/LICENSE b/LICENSE deleted file mode 100644 index fdddb29..0000000 --- a/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to diff --git a/LICENSE-APACHE b/LICENSE-APACHE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE-APACHE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE-MIT b/LICENSE-MIT new file mode 100644 index 0000000..efcd295 --- /dev/null +++ b/LICENSE-MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Yoav Haimov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PLAN-2.0.md b/PLAN-2.0.md index a44bf10..4374c15 100644 --- a/PLAN-2.0.md +++ b/PLAN-2.0.md @@ -15,7 +15,7 @@ Agents and contributors working on this plan must also follow `AGENTS.md`. | Docs/examples point at ML-KEM | WP-7 | README, `docs/`, examples use ML-KEM; Kyber marked deprecated | | Security pass (recent CVEs + side channels), written up in `SECURITY.md` | WP-8 (gate items), WP-9 (full pass) | `SECURITY.md` at repo root with findings log | | Don't break the current API | all | No removed/renamed public names; existing tests unchanged | -| Rust backend stays ours, Unlicense | all | No new **runtime** crypto dependencies; dev-only deps allowed for testing | +| Rust backend stays ours, MIT OR Apache-2.0 (was Unlicense) | all | No new **runtime** crypto dependencies; dev-only deps allowed for testing | | Move default branch to `main` | Release | Maintainer merges `dev-v2` into `main` at the end; GitHub default = `main`, protected | | May trade some speed for side-channel resistance | WP-8/9 | Benchmarks recorded before/after each hardening PR | diff --git a/README.md b/README.md index c8fc12e..8dbfeb8 100644 --- a/README.md +++ b/README.md @@ -129,4 +129,13 @@ make benchmark ## License -This is free and unencumbered software released into the public domain. See [LICENSE](LICENSE) or . +PyKyber is licensed under either of + +- the Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE)), or +- the MIT license ([LICENSE-MIT](LICENSE-MIT)), + +at your option. + +Releases up to 1.0.5 were published under the Unlicense, and those releases stay available under it. + +Unless you say otherwise, any contribution you submit to the project is licensed under the same two licenses, without extra terms or conditions. diff --git a/docs/index.md b/docs/index.md index 7789966..703ca5e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,4 +8,4 @@ - [README](../README.md): installation and quick start - [CHANGELOG](../CHANGELOG.md): release history - [SECURITY](../SECURITY.md): reporting policy and findings log -- [LICENSE](../LICENSE): public domain (Unlicense) +- [LICENSE-MIT](../LICENSE-MIT) and [LICENSE-APACHE](../LICENSE-APACHE): use either one (releases up to 1.0.5 were Unlicense) diff --git a/pyproject.toml b/pyproject.toml index fcd65a0..5377ca0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,8 @@ version = "2.0.0" description = "ML-KEM (FIPS 203) post-quantum key encapsulation in Rust, with legacy Kyber" readme = "README.md" requires-python = ">=3.8" -license = {text = "Unlicense"} +license = "MIT OR Apache-2.0" +license-files = ["LICENSE-MIT", "LICENSE-APACHE"] authors = [ {name = "Yoav Haimov", email = "haimovyoav@gmail.com"} ] @@ -21,7 +22,6 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Rust", - "License :: Public Domain", "Operating System :: OS Independent", "Topic :: Security :: Cryptography", ] From 8a2fd072449a09799af8711a8aaabd00ac66474b Mon Sep 17 00:00:00 2001 From: Yoav Haimov Date: Sat, 31 Oct 2026 10:27:28 +0200 Subject: [PATCH 4/7] docs: reduce the README to the essentials and add a guide for companies Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 2 +- README.md | 117 ++++++--------------------------------------- SECURITY.md | 2 +- docs/enterprise.md | 44 +++++++++++++++++ docs/index.md | 1 + 5 files changed, 61 insertions(+), 105 deletions(-) create mode 100644 docs/enterprise.md diff --git a/CHANGELOG.md b/CHANGELOG.md index d3f1263..b844387 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - License: PyKyber is now licensed under MIT OR Apache-2.0, at the user's option (`LICENSE-MIT`, `LICENSE-APACHE`; `license = "MIT OR Apache-2.0"` in `Cargo.toml` and `pyproject.toml`). Releases up to 1.0.5 were published under the Unlicense and remain available under it. The `LICENSE` file and the "License :: Public Domain" classifier are gone. -- Docs: the README is shorter and rewritten in plain prose. The benchmark (`performance-tests/benchmark.py`) now times `ML_KEM_*` as well as the Kyber classes on a release build, writes `results.json`, and draws two charts (`latency.png`, `ml_kem_vs_kyber.png`) that replace the four old ones. The old README figures were for the Kyber classes only. `make benchmark` builds the release extension first, and the chart dependency is in `performance-tests/requirements.txt`. +- Docs: the README is now only install, quick start, sizes, performance and the Kyber deprecation note; the rest moved to `docs/`, and the new `docs/enterprise.md` covers licensing, dependencies, supply chain, security status and support for companies. Earlier: the README is shorter and rewritten in plain prose. The benchmark (`performance-tests/benchmark.py`) now times `ML_KEM_*` as well as the Kyber classes on a release build, writes `results.json`, and draws two charts (`latency.png`, `ml_kem_vs_kyber.png`) that replace the four old ones. The old README figures were for the Kyber classes only. `make benchmark` builds the release extension first, and the chart dependency is in `performance-tests/requirements.txt`. - Security pass over the legacy Kyber code (issue #18): the random bytes for `Kyber*` key generation and encapsulation now come from the operating system generator (`OsRng`) instead of `thread_rng()`, and a failure of that generator is raised as `RandomnessError` (a `KyberError`) instead of panicking or being retried with a weaker source. Seeded paths and all Kyber output are unchanged. - Security pass over the legacy Kyber code (issue #18), continued: optimization barriers in `poly_frommsg`, `verify` and `cmov`; decapsulation and the PRF noise buffers are wiped on every exit; secrets returned to Python are wiped on the Rust side; the Rust keypair and encapsulation functions check buffer lengths; `rand` is 0.8.6 in `Cargo.lock`. The findings, the CVE and paper table and the two decisions not to fix (Compress_11, Keccak stack spills) are in `SECURITY.md`. Kyber output is unchanged. diff --git a/README.md b/README.md index 8dbfeb8..bab61d4 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # PyKyber -PyKyber is a Python library for post-quantum key encapsulation. It implements ML-KEM (FIPS 203) in Rust, with its own Keccak and number-theoretic transform and no third-party crypto crate, and ships Python bindings built with PyO3. The old round-3 CRYSTALS-Kyber classes are still in the package but deprecated. - -ML-KEM and round-3 Kyber give different shared secrets, so they cannot talk to each other. If you are moving from Kyber, read the [migration guide](docs/migration.md) first. +Post-quantum key encapsulation for Python: ML-KEM (FIPS 203), written in Rust with no third-party crypto crate and no Python dependencies. Licensed MIT OR Apache-2.0. ## Install @@ -10,55 +8,20 @@ ML-KEM and round-3 Kyber give different shared secrets, so they cannot talk to e pip install pykyber ``` -It needs Python 3.8 or newer and has no runtime dependencies. +Python 3.8 or newer. Prebuilt wheels cover Linux (glibc and musl), macOS and Windows. ## Quick start ```python import pykyber -# Alice makes a keypair and sends Bob her public key. -alice = pykyber.ML_KEM_768() - -# Bob encapsulates against it and sends the ciphertext back. -bob = pykyber.ML_KEM_768.encapsulate(alice.public_key) - -# Alice decapsulates and ends up with the same 32-byte secret. -secret = alice.decapsulate(bob.ciphertext) +alice = pykyber.ML_KEM_768() # Alice makes a keypair +bob = pykyber.ML_KEM_768.encapsulate(alice.public_key) # Bob encapsulates against her public key +secret = alice.decapsulate(bob.ciphertext) # Alice recovers the same 32-byte secret assert secret == bob.shared_secret ``` -ML-KEM-768 is the set NIST recommends by default (FIPS 203, section 8). `ML_KEM_512` and `ML_KEM_1024` work the same way. - -## Using the classes - -A class instance is a keypair. Creating one generates the keys. - -```python -keypair = pykyber.ML_KEM_768() -public_key = keypair.public_key # bytes -secret_key = keypair.secret_key # bytes -public_key, secret_key = keypair # tuple unpacking works too - -# A 64-byte seed (d || z) gives the same keys every time. Keep the seed secret. -keypair = pykyber.ML_KEM_768(seed=bytes(range(64))) -keypair.seed # None for randomly generated keypairs - -result = keypair.encapsulate() -ciphertext, shared_secret = result # or result.ciphertext, result.shared_secret - -keypair.decapsulate(ciphertext) # the same shared_secret -``` - -The static forms work without a keypair object, which is what the two sides of a real exchange use: - -```python -result = pykyber.ML_KEM_768.encapsulate(public_key) -secret = pykyber.ML_KEM_768.decapsulate(result.ciphertext, secret_key) -keypair = pykyber.ML_KEM_768.from_keys(public_key, secret_key) -``` - -Keys, ciphertexts and shared secrets also come as hex and base64 (`keypair.public_key_hex`, `keypair.secret_key_b64`, `result.ciphertext_hex`) and `keypair.to_dict()` returns the hex keys. The [API reference](docs/api.md) lists everything. +`ML_KEM_512`, `ML_KEM_768` (NIST's default) and `ML_KEM_1024` work the same way. ## Sizes @@ -68,74 +31,22 @@ Keys, ciphertexts and shared secrets also come as hex and base64 (`keypair.publi | `ML_KEM_768` | 1184 bytes | 2400 bytes | 1088 bytes | 32 bytes | | `ML_KEM_1024` | 1568 bytes | 3168 bytes | 1568 bytes | 32 bytes | -The deprecated Kyber classes use the same sizes, so you cannot tell a Kyber key from an ML-KEM key by its length. - -## Errors - -Bad input raises `KyberError` or one of its subclasses. - -```python -try: - pykyber.ML_KEM_768.encapsulate(b"too short") -except pykyber.KyberError as e: - print(e) # Invalid public_key for ML-KEM-768.encapsulate: expected 1184 bytes, got 9. -``` - -The subclasses you are most likely to meet: - -- `InvalidInputError` for a key, ciphertext or seed of the wrong size. -- `InvalidEncapsulationKeyError` and `InvalidDecapsulationKeyError` for keys that fail the checks in FIPS 203, sections 7.2 and 7.3. -- `AlgorithmMismatchError` when you pass a `Kyber*` keypair to an `ML_KEM_*` method, or a keypair from another ML-KEM set. - -A well-formed ciphertext that was not made for your key does not raise. Decapsulation returns a different, random-looking secret instead, which is how FIPS 203 does implicit rejection. - -## The Kyber classes are deprecated - -`Kyber512`, `Kyber768` and `Kyber1024` implement round-3 CRYSTALS-Kyber. They still work and their output matches 1.0.5. The first use of one in a process emits a `KyberDeprecationWarning`. Python hides `DeprecationWarning` unless it comes from `__main__`, so run with `-W default::DeprecationWarning` if you want to see it. The [migration guide](docs/migration.md) explains how to switch. - -## Security status - -The ML-KEM code passes the official NIST ACVP vectors, the C2SP CCTV vectors and the Wycheproof vectors, and it matches an independent implementation in a differential test that runs only in development. Nobody outside the project has audited it. PyKyber makes no constant-time claim: the checks so far are evidence, not a proof, and [SECURITY.md](SECURITY.md) records what was checked, what was fixed and what is still open, such as stack copies left by the Keccak permutation. - -Secret keys and shared secrets come back as Python `bytes`, which are immutable and cannot be wiped from memory. To report a vulnerability, follow [SECURITY.md](SECURITY.md). - ## Performance -These numbers are time per call from Python, including the binding overhead, on an Intel Core i7-7700 at 3.6 GHz with Python 3.14 and a release build. Each figure is the median of 7 rounds of 500 calls. +Time per call from Python on an Intel Core i7-7700 (Python 3.14, release build, median of 7 rounds of 500 calls). One machine, one run. | Class | Key generation | Encapsulation | Decapsulation | |-------|----------------|---------------|---------------| -| `ML_KEM_512` | 0.031 ms (32,418/s) | 0.037 ms (27,112/s) | 0.045 ms (22,118/s) | -| `ML_KEM_768` | 0.052 ms (19,204/s) | 0.058 ms (17,159/s) | 0.071 ms (14,038/s) | -| `ML_KEM_1024` | 0.082 ms (12,220/s) | 0.089 ms (11,273/s) | 0.106 ms (9,444/s) | -| `Kyber512` | 0.033 ms (30,651/s) | 0.040 ms (25,085/s) | 0.042 ms (23,970/s) | -| `Kyber768` | 0.056 ms (17,937/s) | 0.062 ms (16,061/s) | 0.064 ms (15,747/s) | -| `Kyber1024` | 0.088 ms (11,395/s) | 0.096 ms (10,420/s) | 0.104 ms (9,659/s) | - -ML-KEM and the old Kyber classes are within about 10 percent of each other. ML-KEM is slightly faster at key generation and encapsulation and slightly slower at decapsulation. +| `ML_KEM_512` | 0.031 ms | 0.037 ms | 0.045 ms | +| `ML_KEM_768` | 0.052 ms | 0.058 ms | 0.071 ms | +| `ML_KEM_1024` | 0.082 ms | 0.089 ms | 0.106 ms | ![ML-KEM time per operation](performance-tests/latency.png) -![ML-KEM and Kyber operations per second](performance-tests/ml_kem_vs_kyber.png) - -To run the benchmark yourself, use a release build, because a debug build is many times slower. The make target does that for you: - -```bash -pip install -r requirements-dev.txt -r performance-tests/requirements.txt -make benchmark -``` - -`make benchmark` builds the release extension, runs the timings and rewrites the two charts and `performance-tests/results.json`. - -## License - -PyKyber is licensed under either of - -- the Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE)), or -- the MIT license ([LICENSE-MIT](LICENSE-MIT)), +## More -at your option. +Everything else is in [docs/](docs/index.md): the [API reference](docs/api.md), the [guide for teams adopting PyKyber](docs/enterprise.md) (licensing, supply chain, security status, upgrade policy), and [SECURITY.md](SECURITY.md) for reporting vulnerabilities. -Releases up to 1.0.5 were published under the Unlicense, and those releases stay available under it. +## Deprecated: Kyber -Unless you say otherwise, any contribution you submit to the project is licensed under the same two licenses, without extra terms or conditions. +`Kyber512`, `Kyber768` and `Kyber1024` (round-3 CRYSTALS-Kyber) still work and give the same output as 1.0.5, but they are deprecated and emit a `KyberDeprecationWarning`. They are not interoperable with ML-KEM. See the [migration guide](docs/migration.md). diff --git a/SECURITY.md b/SECURITY.md index e694f23..dc48b41 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -26,7 +26,7 @@ What helps us triage fastest: ## Response and disclosure -- This is an independently maintained, unfunded, public-domain project: we +- This is an independently maintained, unfunded, open-source project: we acknowledge reports on a best-effort basis, aiming for a few days. - We prefer coordinated disclosure. We will keep you informed, credit you in the advisory if you wish (including anonymously is fine), and publish the diff --git a/docs/enterprise.md b/docs/enterprise.md new file mode 100644 index 0000000..83420cb --- /dev/null +++ b/docs/enterprise.md @@ -0,0 +1,44 @@ +# Using PyKyber in a company + +What a security, legal or platform team usually asks before approving a dependency, with the facts as they stand. If a statement here is not true of the release you run, the release is wrong, so tell us. + +## License + +MIT OR Apache-2.0, at your option ([LICENSE-MIT](../LICENSE-MIT), [LICENSE-APACHE](../LICENSE-APACHE)). Both are permissive and allow commercial and closed-source use. Apache-2.0 includes an explicit patent grant for contributions. Version 1.0.5 was released under the Unlicense, and it still is. + +## What it depends on + +- Python: no runtime dependencies. The wheel is a single compiled extension plus a small pure-Python wrapper. +- Rust, compiled into the wheel: `pyo3`, `zeroize`, `rand` and `rand_core`. All cryptography (Keccak/SHAKE, the NTT, ML-KEM itself) is in this repository, with no third-party crypto crate. +- Dev-only crates (test vectors, a reference ML-KEM for differential tests) are never linked into the wheel. +- `Cargo.lock` is committed and CI runs the Rust tests with `--locked`, so a given commit resolves to the same dependency versions. + +## Platforms + +Python 3.8 or newer (one abi3 wheel per platform). CI builds wheels for Linux (glibc and musl; x86_64, x86, aarch64, armv7, s390x, ppc64le), macOS (Intel and Apple silicon), Windows (x64, x86, arm64) and Android, plus an sdist. Tests run on Linux, macOS and Windows. + +## Supply chain + +- Release wheels are built in GitHub Actions and carry a build-provenance attestation (`actions/attest-build-provenance`). Verify a downloaded file with `gh attestation verify --repo Zikithezikit/pykyber`. +- Pin the version and, if you can, the hash: `pip install --require-hashes -r requirements.txt` with `pykyber== --hash=sha256:...`. +- Building from the sdist needs a stable Rust toolchain and `maturin`. + +## Security status, stated plainly + +- Tested against the official NIST ACVP vectors, the C2SP CCTV vectors and the Wycheproof vectors, and against an independent implementation in a development-only differential test. CI runs these on every commit. +- Not independently audited. Not FIPS 140-3 (CMVP) validated, so it cannot by itself satisfy a requirement for a validated module. +- No constant-time claim. Secret-dependent branches and divisions were reviewed and removed, but that is evidence, not proof. [SECURITY.md](../SECURITY.md) lists what was checked, what was fixed and what is still open (for example stack copies left by the Keccak permutation). +- Secrets are returned to Python as immutable `bytes`, which cannot be wiped from memory. +- Key and ciphertext inputs are length- and format-checked (including the FIPS 203 section 7.2 and 7.3 checks) before any secret-dependent work, and errors are typed (`KyberError` and subclasses). Keys come from the operating system random generator, and a failure is raised, never retried with a weaker source. + +If a standard or contract requires an audited or validated module, treat PyKyber as an input to your own assessment, not a replacement for one. + +## Reporting and response + +Report vulnerabilities privately as described in [SECURITY.md](../SECURITY.md). PyKyber is independently maintained and unfunded, so there is no support contract or response-time guarantee: reports are acknowledged on a best-effort basis, aiming for a few days, and disclosure is coordinated. Fixes are logged in [CHANGELOG.md](../CHANGELOG.md) and in the findings log. + +## Versioning and deprecation + +- Version numbers follow semantic versioning, and breaking changes are listed in the changelog. +- The legacy `Kyber*` classes are frozen: their output is checked byte for byte against 1.0.5 in CI, and they warn on first use. They are not interoperable with ML-KEM; see the [migration guide](migration.md). +- A hybrid construction (for example X25519 combined with ML-KEM) is not provided. Build it on top if your policy requires one. diff --git a/docs/index.md b/docs/index.md index 703ca5e..c941f59 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,7 @@ # pykyber docs - [API Reference](api.md): full class and function documentation (ML-KEM, and the deprecated Kyber classes) +- [Using PyKyber in a company](enterprise.md): licensing, dependencies, supply chain, security status, support and versioning - [Kyber to ML-KEM migration](migration.md): what changes when you switch, and why both sides must switch together ## Quick links From 6979a17f768cb8c4fcecaa3df3efbefa346e3d08 Mon Sep 17 00:00:00 2001 From: Yoav Haimov Date: Sat, 31 Oct 2026 10:30:49 +0200 Subject: [PATCH 5/7] docs: use the same Unlicense wording for 1.0.5 everywhere Co-Authored-By: Claude Sonnet 5.5 --- AGENTS.md | 2 +- CHANGELOG.md | 2 +- CLAUDE.md | 2 +- docs/index.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 319f48c..0bf8e59 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # AGENTS.md — instructions for AI coding agents -You are working on **pykyber**, a post-quantum KEM library: an in-house Rust implementation (no third-party crypto at runtime) with PyO3 bindings, released under MIT OR Apache-2.0 (the 1.x releases were Unlicense). People will run your code to protect real secrets. A test that passes is necessary but not sufficient; code that is correct but leaks timing is a vulnerability. +You are working on **pykyber**, a post-quantum KEM library: an in-house Rust implementation (no third-party crypto at runtime) with PyO3 bindings, released under MIT OR Apache-2.0 (version 1.0.5 was released under the Unlicense). People will run your code to protect real secrets. A test that passes is necessary but not sufficient; code that is correct but leaks timing is a vulnerability. Current work: the 2.0 release (GitHub issue #3), planned in `PLAN-2.0.md`. Read the work package (WP) you are assigned before you start. diff --git a/CHANGELOG.md b/CHANGELOG.md index b844387..445188e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## Unreleased -- License: PyKyber is now licensed under MIT OR Apache-2.0, at the user's option (`LICENSE-MIT`, `LICENSE-APACHE`; `license = "MIT OR Apache-2.0"` in `Cargo.toml` and `pyproject.toml`). Releases up to 1.0.5 were published under the Unlicense and remain available under it. The `LICENSE` file and the "License :: Public Domain" classifier are gone. +- License: PyKyber is now licensed under MIT OR Apache-2.0, at the user's option (`LICENSE-MIT`, `LICENSE-APACHE`; `license = "MIT OR Apache-2.0"` in `Cargo.toml` and `pyproject.toml`). Version 1.0.5 was released under the Unlicense, and it still is. The `LICENSE` file and the "License :: Public Domain" classifier are gone. - Docs: the README is now only install, quick start, sizes, performance and the Kyber deprecation note; the rest moved to `docs/`, and the new `docs/enterprise.md` covers licensing, dependencies, supply chain, security status and support for companies. Earlier: the README is shorter and rewritten in plain prose. The benchmark (`performance-tests/benchmark.py`) now times `ML_KEM_*` as well as the Kyber classes on a release build, writes `results.json`, and draws two charts (`latency.png`, `ml_kem_vs_kyber.png`) that replace the four old ones. The old README figures were for the Kyber classes only. `make benchmark` builds the release extension first, and the chart dependency is in `performance-tests/requirements.txt`. diff --git a/CLAUDE.md b/CLAUDE.md index 088612a..e5cb37e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## What this is -PyKyber: a Python package (`pykyber`) exposing round-3 CRYSTALS-Kyber, implemented from scratch in Rust (its own Keccak/FIPS 202, NTT, etc.; no external crypto crate) and bound with PyO3 + maturin (abi3, Python ≥3.8). MIT OR Apache-2.0 from 2.0 (releases up to 1.0.5 were Unlicense). Current version 1.0.5; the version lives in both `Cargo.toml` and `pyproject.toml`, so keep them in sync. +PyKyber: a Python package (`pykyber`) exposing round-3 CRYSTALS-Kyber, implemented from scratch in Rust (its own Keccak/FIPS 202, NTT, etc.; no external crypto crate) and bound with PyO3 + maturin (abi3, Python ≥3.8). MIT OR Apache-2.0 from 2.0 (version 1.0.5 was released under the Unlicense). Current version 1.0.5; the version lives in both `Cargo.toml` and `pyproject.toml`, so keep them in sync. Active work is 2.0 (issue #3): add ML-KEM (FIPS 203) beside the legacy Kyber classes. The plan, the work packages and the verified spec facts are in `PLAN-2.0.md`. diff --git a/docs/index.md b/docs/index.md index c941f59..77ad65b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,4 +9,4 @@ - [README](../README.md): installation and quick start - [CHANGELOG](../CHANGELOG.md): release history - [SECURITY](../SECURITY.md): reporting policy and findings log -- [LICENSE-MIT](../LICENSE-MIT) and [LICENSE-APACHE](../LICENSE-APACHE): use either one (releases up to 1.0.5 were Unlicense) +- [LICENSE-MIT](../LICENSE-MIT) and [LICENSE-APACHE](../LICENSE-APACHE): use either one (version 1.0.5 was released under the Unlicense) From 261632b604e0f57f293bc320e08bd27db67e33b3 Mon Sep 17 00:00:00 2001 From: Yoav Haimov Date: Sat, 31 Oct 2026 10:38:12 +0200 Subject: [PATCH 6/7] chore: remove the 2.0 plan, the opencode config and an empty requirements file Co-Authored-By: Claude Sonnet 5.5 --- AGENTS.md | 10 ++- CHANGELOG.md | 2 + CLAUDE.md | 4 +- CONTRIBUTING.md | 6 +- PLAN-2.0.md | 171 ----------------------------------------------- SECURITY.md | 5 +- opencode.json | 4 -- requirements.txt | 1 - 8 files changed, 17 insertions(+), 186 deletions(-) delete mode 100644 PLAN-2.0.md delete mode 100644 opencode.json delete mode 100644 requirements.txt diff --git a/AGENTS.md b/AGENTS.md index 0bf8e59..1649c70 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,7 +2,7 @@ You are working on **pykyber**, a post-quantum KEM library: an in-house Rust implementation (no third-party crypto at runtime) with PyO3 bindings, released under MIT OR Apache-2.0 (version 1.0.5 was released under the Unlicense). People will run your code to protect real secrets. A test that passes is necessary but not sufficient; code that is correct but leaks timing is a vulnerability. -Current work: the 2.0 release (GitHub issue #3), planned in `PLAN-2.0.md`. Read the work package (WP) you are assigned before you start. +Current work: the 2.0 release (GitHub issue #3), split into work packages (WPs), the sub-issues of #3. Read the WP you are assigned before you start. ## Non-negotiables @@ -90,7 +90,13 @@ If you touched secret-handling code, also complete the PR checklist below and in Standards and advisories change. At the start of each WP, and whenever you rely on a spec detail or a vulnerability claim: -1. Check the primary sources listed in `PLAN-2.0.md` §9 (FIPS 203, SP 800-227, ACVP, C2SP/Wycheproof, NVD/GHSA/RustSec, pqc-forum). +1. Check the primary sources: + - FIPS 203 (final) and errata: + - SP 800-227 (KEM recommendations): + - ACVP ML-KEM spec and vectors: , + - C2SP CCTV ML-KEM: ; Wycheproof: + - Advisories: NVD , GitHub Advisory DB , RustSec + - NIST pqc-forum: 2. Record in the PR: source URL, date checked, and what you found (including "no change"). 3. Treat blogs, news, and search-engine summaries as leads. Confirm on the primary source before acting on them, and label anything unconfirmed as such. 4. External test vectors are never committed. They're downloaded at test time from a pinned commit and checked against `tests/vectors/manifest.json` (SHA-256). Don't silently change a pin or a hash. diff --git a/CHANGELOG.md b/CHANGELOG.md index 445188e..48ffefc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ - License: PyKyber is now licensed under MIT OR Apache-2.0, at the user's option (`LICENSE-MIT`, `LICENSE-APACHE`; `license = "MIT OR Apache-2.0"` in `Cargo.toml` and `pyproject.toml`). Version 1.0.5 was released under the Unlicense, and it still is. The `LICENSE` file and the "License :: Public Domain" classifier are gone. +- Housekeeping: removed `PLAN-2.0.md` (the work packages are the sub-issues of #3; the primary-source list moved to `AGENTS.md`), `opencode.json` and the comment-only `requirements.txt`. + - Docs: the README is now only install, quick start, sizes, performance and the Kyber deprecation note; the rest moved to `docs/`, and the new `docs/enterprise.md` covers licensing, dependencies, supply chain, security status and support for companies. Earlier: the README is shorter and rewritten in plain prose. The benchmark (`performance-tests/benchmark.py`) now times `ML_KEM_*` as well as the Kyber classes on a release build, writes `results.json`, and draws two charts (`latency.png`, `ml_kem_vs_kyber.png`) that replace the four old ones. The old README figures were for the Kyber classes only. `make benchmark` builds the release extension first, and the chart dependency is in `performance-tests/requirements.txt`. - Security pass over the legacy Kyber code (issue #18): the random bytes for `Kyber*` key generation and encapsulation now come from the operating system generator (`OsRng`) instead of `thread_rng()`, and a failure of that generator is raised as `RandomnessError` (a `KyberError`) instead of panicking or being retried with a weaker source. Seeded paths and all Kyber output are unchanged. diff --git a/CLAUDE.md b/CLAUDE.md index e5cb37e..643c847 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -8,7 +8,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co PyKyber: a Python package (`pykyber`) exposing round-3 CRYSTALS-Kyber, implemented from scratch in Rust (its own Keccak/FIPS 202, NTT, etc.; no external crypto crate) and bound with PyO3 + maturin (abi3, Python ≥3.8). MIT OR Apache-2.0 from 2.0 (version 1.0.5 was released under the Unlicense). Current version 1.0.5; the version lives in both `Cargo.toml` and `pyproject.toml`, so keep them in sync. -Active work is 2.0 (issue #3): add ML-KEM (FIPS 203) beside the legacy Kyber classes. The plan, the work packages and the verified spec facts are in `PLAN-2.0.md`. +Active work is 2.0 (issue #3): add ML-KEM (FIPS 203) beside the legacy Kyber classes. The work packages are the sub-issues of #3. ## Commands @@ -49,7 +49,7 @@ Official vectors (WP-4, merged): the manifest pins ACVP, C2SP CCTV and Wycheproo Other locations: docs are in `docs/` (`api.md`, `index.md`), the benchmark is in `performance-tests/`, and `CHANGELOG.md` is maintained by hand. -`.opencode/` (another agent tool's notes, including a `SECURITY.md` log of past fixes: constant-time division removal, Kyber-512 η1=3) is **gitignored**, so other contributors don't have it. PLAN-2.0 WP-0 migrates that log to a root `SECURITY.md`. +`.opencode/` (another agent tool's notes, including a `SECURITY.md` log of past fixes: constant-time division removal, Kyber-512 η1=3) is **gitignored**, so other contributors don't have it. That log was migrated to the root `SECURITY.md`. ## Repo state diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0817f07..bd0a31e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,8 +4,8 @@ PyKyber is a post-quantum KEM library: round-3 CRYSTALS-Kyber, implemented from scratch in Rust (no third-party crypto at runtime) and exposed to Python through PyO3. A 2.0 release adds ML-KEM (FIPS 203) beside the legacy Kyber API. This file covers how to work on the repo; `AGENTS.md` is the binding -rulebook for humans *and* AI agents, and `PLAN-2.0.md` tracks the 2.0 work -packages. +rulebook for humans *and* AI agents. The 2.0 work packages are the +sub-issues of #3. ## Development setup @@ -48,7 +48,7 @@ All 2.0 development happens on **`dev-v2`**. The default branch is still `dev` until the 2.0 release; `main` is the stable release branch. During 2.0: - Branch from `dev-v2` as `wp-` (e.g. `wp3-mlkem-keygen`), - where `N` is the work-package number from `PLAN-2.0.md` / the linked sub-issue of #3. + where `N` is the work-package number of the linked sub-issue of #3. - Open every PR **against `dev-v2`**. Never target `main` or `dev`. - One work package (or less) per PR. Crypto PRs should stay under ~400 changed lines excluding vector files. diff --git a/PLAN-2.0.md b/PLAN-2.0.md deleted file mode 100644 index 4374c15..0000000 --- a/PLAN-2.0.md +++ /dev/null @@ -1,171 +0,0 @@ -# PyKyber 2.0 — implementation & security plan - -Source of truth for scope: GitHub issue #3, "[2.0] Add ML-KEM (FIPS 203) support while keeping legacy Kyber API with deprecation". This plan breaks that issue into reviewable work packages. If this plan and the issue disagree, the issue wins: raise it on the issue, don't silently diverge. - -Agents and contributors working on this plan must also follow `AGENTS.md`. - -## 1. Scope (from issue #3) - -| Issue requirement | Where it is delivered | Acceptance check | -|---|---|---| -| Add `ML_KEM_512`, `ML_KEM_768`, `ML_KEM_1024` | WP-3, WP-5 | Python classes exported; ACVP + CCTV + Wycheproof vectors pass (WP-4) | -| Keep `Kyber512/768/1024` working with old behavior | WP-1 (golden vectors), every PR | Golden vectors captured from `v1.0.5` pass unchanged in CI | -| Deprecation warning the first time a `Kyber*` class is used | WP-6 | Subprocess test: N uses -> exactly 1 warning | -| Warning only once per process | WP-6 | Same test, across all three classes and static methods | -| Docs/examples point at ML-KEM | WP-7 | README, `docs/`, examples use ML-KEM; Kyber marked deprecated | -| Security pass (recent CVEs + side channels), written up in `SECURITY.md` | WP-8 (gate items), WP-9 (full pass) | `SECURITY.md` at repo root with findings log | -| Don't break the current API | all | No removed/renamed public names; existing tests unchanged | -| Rust backend stays ours, MIT OR Apache-2.0 (was Unlicense) | all | No new **runtime** crypto dependencies; dev-only deps allowed for testing | -| Move default branch to `main` | Release | Maintainer merges `dev-v2` into `main` at the end; GitHub default = `main`, protected | -| May trade some speed for side-channel resistance | WP-8/9 | Benchmarks recorded before/after each hardening PR | - -Out of scope for 2.0: removing the Kyber classes, hybrid KEMs (X25519+ML-KEM), ML-DSA, masking against power/EM analysis. - -## 2. Spec facts (verified against FIPS 203 final text, 2026-10-29) - -Verified from . Algorithm numbers refer to that document; cite them in code comments. - -- **Parameters (Table 2/3)**: 512: k=2, η1=3, η2=2, du=10, dv=4. 768: k=3, η1=2, η2=2, du=10, dv=4. 1024: k=4, η1=2, η2=2, du=11, dv=5. Sizes (ek/dk/ct/ss): 800/1632/768/32, 1184/2400/1088/32, 1568/3168/1568/32 — identical to Kyber, so **sizes cannot tell the two apart**. -- **KeyGen_internal(d, z)** (Alg 16): `dk = dkPKE ‖ ek ‖ H(ek) ‖ z`. K-PKE.KeyGen (Alg 13) does `(ρ, σ) = G(d ‖ k)`: the one-byte k is the domain separator added in the final standard (App. C.2). -- **Encaps_internal(ek, m)** (Alg 17): `(K, r) = G(m ‖ H(ek))`, `c = K-PKE.Encrypt(ek, m, r)`. Unlike round-3 Kyber, `m` is **not** pre-hashed and `K` is **not** derived from `H(c)` (App. C.1). -- **Decaps_internal(dk, c)** (Alg 18): decrypt -> `(K', r') = G(m' ‖ h)` -> `K̄ = J(z ‖ c)` -> re-encrypt -> if `c ≠ c'` then `K' = K̄`. The reject flag is secret and **shall be destroyed**, never returned (§6.3). -- **Input checks** (§7.2, §7.3): ek type check + modulus check `ByteEncode12(ByteDecode12(ek[0:384k])) == ek[0:384k]`; ciphertext length check on **every** decaps; dk length check + hash check `H(dk[384k:768k+32]) == dk[768k+32:768k+64]`. -- **Section 3.3 requirements**: intermediate values shall be destroyed; only exceptions are the seed `(d, z)` (may be stored, treat as a secret key) and the matrix Â. `*_internal` interfaces should not be exposed to applications except for testing. RBG must be approved; KeyGen/Encaps return an error if randomness fails. No floating point. -- NIST recommends ML-KEM-768 as the default parameter set (§8). - -The current code is **round-3 Kyber** (`kem.rs`: `m` is hashed, `H(c)` goes into the KDF, `G(d)` has no k byte), so ML-KEM gets a separate code path. - -## 3. How we work (multi-developer) - -- **Tracking**: GitHub milestone `2.0.0`; one sub-issue per work package below, linked from #3. Labels to add: `ml-kem`, `security`, `legacy-kyber`, `ci`. -- **Branches**: all 2.0 work goes into `dev-v2` (cut from `dev`). Protect it: PR required, 1 approving review, required status checks, no force push, linear history. Feature branches are cut from `dev-v2` as `wp-` (e.g. `wp3-mlkem-keygen`), and every PR targets `dev-v2`. Nobody merges into `main` or `dev` during 2.0. When everything is done, the maintainer opens the single `dev-v2` -> `main` PR, makes `main` the default branch and retires `dev`. -- **PR size**: one work package per PR or smaller; crypto PRs ≤ ~400 changed lines excluding vectors. No mixed refactor + behavior changes in one PR. -- **Commits**: Conventional Commits, matching existing history (`feat:`, `fix:`, `test:`, `ci:`, `docs:`, `security:`, `refactor:`). Every commit in a PR must build and pass the tests on its own. Fixes found in review or CI are folded into the commit that introduced the problem (`git commit --fixup` + `git rebase --autosquash`), never added as separate "fix" commits. Branches are rebased on `dev-v2`, never merged with it. -- **Merging**: PRs are **rebase-merged** into `dev-v2`, so the reviewed commits land unchanged. Squash and merge commits are turned off in repo settings (WP-0). -- **Reviews**: anything under `src/` that touches secret data needs a reviewer to tick the PR template's constant-time checklist. `CODEOWNERS` routes `src/` and `SECURITY.md` to the maintainer. -- **Changelog**: every user-visible PR adds a line under `## Unreleased` in `CHANGELOG.md`. -- **Sources**: each WP starts with a dated source check (Section 9), recorded in the PR description: what was checked, date, and result ("no change" counts). -- **Agents**: agent-written PRs follow `AGENTS.md` and get the same review as human PRs. Agents never merge. - -## 4. Work packages - -Dependencies: WP-0 -> WP-1 -> (WP-2, WP-3) -> WP-4 -> WP-5 -> (WP-6, WP-7) -> WP-8 -> release. WP-9 runs in parallel from WP-1 onward. - -### WP-0 — Repo hygiene & collaboration setup -- Protect `dev-v2` (rules in Section 3). In repo settings allow only rebase merging (turn off squash and merge commits). Add `dev-v2` to the `push` triggers in `CI.yml` (currently `main` + tags; `pull_request` already covers PRs into any branch). Switching the default branch to `main` waits for the release. -- Add `CONTRIBUTING.md` (build/test commands, branch/commit rules, how to run vectors), `.github/pull_request_template.md` (with security checklist from `AGENTS.md`), `.github/CODEOWNERS`, issue templates (bug, feature, security -> redirect to private advisory). -- Add root `SECURITY.md` with a reporting policy (GitHub private vulnerability reporting enabled) and migrate the findings log from `.opencode/SECURITY.md`, which is **gitignored** and so invisible to other contributors. -- Track `AGENTS.md`/`CLAUDE.md`; keep `.opencode/` ignored. - -### WP-1 — Green baseline + legacy freeze -- Fix `tests/unit_params.rs::test_kyber_1024_params` (expects 1280, gets 1408). Decide whether the test or the constant is wrong **by checking the Kyber round-3 spec**, not by editing the assertion to match. -- Add `pytest` (+ `maturin`) as dev deps (`requirements-dev.txt` or a `[dependency-groups]` table); `.venv` currently lacks pytest. -- **Golden vectors**: install `pykyber==1.0.5` from PyPI in a clean venv; for fixed seeds, record keygen outputs (seeded), decaps outputs for fixed ciphertexts, and encaps outputs where determinism allows (encaps currently has no seed in Python, so record via the Rust `crypto_kem_enc(.., Some(seed))` path at tag `v1.0.5`). Store as `tests/vectors/legacy-kyber-v1.0.5.json` with the generator script. These files are append-only. -- CI: add a `test` job (Linux, macOS, Windows; one old and one current Python) running `cargo fmt --check`, `cargo clippy -- -D warnings` (fix or explicitly `allow` the current 59 diagnostics in a separate PR first), `cargo test`, `maturin develop` + `pytest`. Make it a required check. - -### WP-2 — Shared-primitive audit (prep for reuse) -- Decide which legacy modules ML-KEM can share unchanged: `fips202`, `ntt`, `reduce`, `cbd`, poly (de)serialization, compress. Rule: shared code may be **hardened** (constant-time fixes) only if legacy golden vectors still pass byte-for-byte. -- Introduce a generic `const K: usize` (or param-trait) poly-vector type for the new code instead of a fourth set of `_512/_768/_1024` copies. Legacy duplicated code stays as is. - -### WP-3 — ML-KEM core in Rust (`src/mlkem/`) -- Implement Alg 13–18 (K-PKE KeyGen/Encrypt/Decrypt, KeyGen/Encaps/Decaps internal) and Alg 19–21 wrappers, generic over the parameter set. -- Input checks per §7.2/§7.3 return typed errors, and they run before any secret-dependent work. -- Visibility: `*_internal` functions are `pub(crate)`; expose them only under `#[cfg(any(test, feature = "acvp"))]` for vector tests (§3.3). Public Rust API: `keygen()`, `keygen_from_seed(d, z)`, `encaps(ek)`, `decaps(dk, c)`. -- Randomness: `OsRng`/`getrandom`; errors propagate (Alg 19/20 return ⊥). No `thread_rng()` for key material in new code. -- Secrets: all intermediates (`m`, `r`, `K̄`, `σ`, noise vectors, the reject flag) zeroized before return; use `Zeroizing<..>` wrappers. -- Constant-time: re-encryption compare and `K'`/`K̄` select are branch-free with an optimization barrier (in-house, no new runtime crate); no division/modulo on secrets; no secret-indexed table lookups. - -### WP-4 — Official vectors (gate for "passes the official test vectors") -- NIST ACVP-Server `gen-val/json-files/ML-KEM-keyGen-FIPS203` and `ML-KEM-encapDecap-FIPS203` (internalProjection + expectedResults), including decapsulation-key-check and encapsulation-key-check groups. -- C2SP CCTV ML-KEM: modulus-check negatives, "unlucky" XOF vectors, and the accumulated/strcmp vectors. -- Wycheproof ML-KEM test files. -- External vector files are **not committed**. A fetch script downloads them at test time from a pinned commit and checks each file against a SHA-256 in `tests/vectors/manifest.json`; CI caches the downloads and the folder is gitignored. The repo only holds our own code, our parsers, and our own legacy golden vectors. -- Dev-only differential fuzz against an independent implementation (RustCrypto `ml-kem` or `libcrux-ml-kem` as a `[dev-dependencies]` entry). Never a runtime dependency. - -### WP-5 — Python bindings & classes -- `src/lib.rs`: `_mlkem_{512,768,1024}_{keygen,encaps,decaps}`; map Rust errors to `KyberError` subclasses (not bare `PyException`). -- `python/pykyber/`: `ML_KEM_512/768/1024` mirroring the `Kyber*` surface (instance = keypair; static `encapsulate`/`decapsulate`/`from_keys`; serialization; tuple unpacking). Seed = 64 bytes `d ‖ z` (Alg 19 order). Add `.seed` support only if keygen came from a seed, and document that it is secret. -- **Mix-up resistance**: since sizes are identical, results/keys carry their algorithm; `ML_KEM_768.decapsulate` refuses a `Kyber768` keypair object (raw bytes can't be distinguished, so say so in the docs). -- Regenerate `.pyi` stubs; type hints; `__all__` updated. - -### WP-6 — Kyber deprecation -- First use of any `Kyber*` entry point (constructor, `from_keys`, static `encapsulate`/`decapsulate`) emits one warning per process, guarded by a module-level flag. Import alone does not warn. -- Category: `KyberDeprecationWarning(DeprecationWarning)` so users can filter it precisely. Note: Python hides `DeprecationWarning` by default unless it's attributed to `__main__`; use `stacklevel` so it points to user code. Staying quiet is deliberate for now (D2). -- Message says that Kyber (round 3) and ML-KEM are **not interoperable** and that switching changes the shared secret, and links the migration guide. -- Tests in a subprocess: warning count == 1 across mixed classes and methods; outputs unchanged (golden vectors). - -### WP-7 — Docs -- README quick-start and `docs/api.md` switch to `ML_KEM_768` (NIST's default). Add a "Kyber -> ML-KEM migration" page: not interoperable, both sides must upgrade, seed format, key sizes the same. -- CHANGELOG `2.0.0` entry; version bump in **both** `Cargo.toml` and `pyproject.toml` (plus the docs link in `pyproject.toml`). - -### WP-8 — Security release gate (required before 2.0.0) -Minimum security work on the new code before tagging: -- Constant-time review checklist (see `AGENTS.md`) signed off on `src/mlkem/` and any shared primitives it uses. -- Assembly check on release builds for `x86_64` and `aarch64` (and a spot check on `armv7`/`x86` 32-bit, which CI ships): no secret-dependent branches and no `div`/`udiv`/`sdiv` in decaps, `poly_tomsg`/compress, `poly_frommsg`, select/compare. Script it with `cargo asm` or `objdump` so it can run again. -- Dynamic timing test (dudect-style, or valgrind "secret = undefined" à la ctgrind) on decaps with valid vs. invalid ciphertexts. -- `cargo audit` + `cargo deny` clean; CI actions pinned by SHA. -- Fuzz targets (`cargo fuzz`) for ek/dk/ct parsing and decaps run ≥ 1 CPU-hour each without panics. -- `SECURITY.md` updated with the results. - -### WP-9 — Full security pass (parallel; may continue after 2.0 as 2.0.x) -The issue comment allows this to land after the version release. Track each finding as its own issue/PR and log it in `SECURITY.md`. -- Legacy code, same checklist as WP-8. Starting points found while writing this plan (unconfirmed, need assembly or dynamic evidence): - - `src/kyber/poly.rs` `poly_frommsg`: `((msg >> j) & 1).wrapping_neg()` mask is the CVE-2024-37880 ("Clangover") pattern that compilers have turned into a branch. - - `poly_tomsg` uses the multiply-shift replacement for `/q` (KyberSlash fix); verify all compress paths (`poly_compress`, `polyvec_compress*`) do too. - - `verify.rs` `verify`/`cmov`: check for optimization barriers. - - `api.rs` `DummyRng` panics by design; confirm no path from Python reaches it, and that panics can't cross the PyO3 boundary. - - `lib.rs` uses `thread_rng()` for key material; compare with `OsRng`. - - Decaps doesn't zeroize every intermediate; Python `bytes` copies of secrets can't be wiped (document this). -- Review against each CVE/paper in Section 9 and record "affected / not affected / mitigated" with evidence. -- Any change to legacy code must keep golden vectors byte-identical. - -## 5. Release checklist (2.0.0) - -- [ ] All issue #3 "Done when" items ticked with links to the proving test/CI run -- [ ] WP-8 gate complete; `SECURITY.md` current -- [ ] Release candidate `2.0.0rc1` on TestPyPI; install the wheels from **every** CI target and run the test suite against them (not only the build) -- [ ] Source re-check (Section 9) done within 7 days of the tag -- [ ] Maintainer opens the `dev-v2` -> `main` PR and merges it; `main` becomes the default branch; `dev` is retired -- [ ] Update `pyproject.toml` URLs and doc links that point at `dev` or `v1.0.5` -- [ ] Tag `v2.0.0` from `main`, publish, GitHub release notes link the migration guide - -## 6. Open decisions for the maintainer - -- **D1 (decided)**: external test vectors are downloaded at test time with pinned hashes, never committed. Other implementations are for reference and output comparison only; no third-party code is copied into the repo. -- **D2 (decided)**: quiet `DeprecationWarning` for now (via a `KyberDeprecationWarning` subclass), plus a note in the README. -- **D3**: hold 2.0.0 for any WP-9 findings, or ship with WP-8 only and follow up in 2.0.x (the issue comment suggests the latter). -- **D4**: whether to expose ML-KEM in the public Rust crate API now or keep the crate Python-only for 2.0. - -## 7. Risks - -- Shared-primitive changes silently altering legacy output -> golden vectors are a required CI check. -- Compiler-introduced timing leaks (KyberSlash, Clangover) -> assembly check is scripted and re-run per release and per Rust toolchain bump. -- Key confusion between Kyber and ML-KEM (same sizes) -> typed objects, docs, distinct class names in errors. -- Test-vector schema drift (ACVP revisions such as FIPS203-tr1 seed-form dk) -> pin the commit SHA; re-check at release. - -## 8. Definition of done (per PR) - -`cargo fmt --check`, `cargo clippy -D warnings`, `cargo test`, `pytest` green **on every commit** in the PR; review fixes folded into their commits and the branch rebased on `dev-v2`; golden vectors untouched and passing; new behavior has tests (vectors for crypto); CHANGELOG line; source check recorded; constant-time checklist ticked if secrets were touched. - -## 9. Source checklist (re-check at the start of every WP and before release) - -Record the date and result in the PR. Treat secondary sources (news, blogs) as leads, not facts. - -Primary: -- FIPS 203 (final) and errata: -- SP 800-227 (KEM recommendations, referenced by FIPS 203 §3.3): -- ACVP ML-KEM spec: -- ACVP-Server vectors: -- C2SP CCTV ML-KEM: -- Wycheproof: -- NVD search ("ML-KEM", "Kyber", "mlkem"): -- GitHub Advisory DB (pip, rust): ; RustSec: -- NIST pqc-forum: - -Known issues to assess against this code base: -- KyberSlash 1/2, division timing (TCHES 2025): , -- CVE-2024-37880, `poly_frommsg` compiler-induced branch: -- 2026 items found on 2026-10-29, **not yet confirmed on NVD**: CVE-2026-115408 (crypto11 ML-KEM key-pair lookup binding, via OSV/Vulners ); CVE-2026-6330 (wolfSSL ML-KEM bug, mentioned in ). Both look like API/integration bugs in other libraries; check whether the same class of mistake applies to our `from_keys` (binding a pk to the wrong sk). -- 2026 side-channel research on ML-KEM keygen/encoding (SEALSQ, LightSec 2026; news only so far): -- Airtight side-channel testing framework (AFIT): -- Reference implementations to compare against: Go `crypto/mlkem`, BoringSSL, RustCrypto `ml-kem`, Cryspen `libcrux` (formally verified). diff --git a/SECURITY.md b/SECURITY.md index dc48b41..32e1890 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -53,8 +53,7 @@ pykyber; social engineering. Audits and hardening work performed on this codebase are logged here so the history of known issues and their resolutions stays visible to every -contributor. Ongoing 2.0 security work is planned in `PLAN-2.0.md` -(WP-8/WP-9) and tracked issue-by-issue. +contributor. Ongoing 2.0 security work is tracked issue-by-issue. The log below was migrated on 2026-10-29 from `.opencode/SECURITY.md`, a maintainer/agent working log that was @@ -288,7 +287,7 @@ to the maintainer. `zeroize`, `rand_core`, `getrandom`, `rand_chacha`: none. - Ciphertext compare covers the full ciphertext (see CVE-2026-6330 below). - KyberSlash scan: see the table. -## CVE and paper review (PLAN-2.0.md section 9) +## CVE and paper review Dates are 2026-10-30. "Primary" means the issuing page or the paper itself. diff --git a/opencode.json b/opencode.json deleted file mode 100644 index e9aa400..0000000 --- a/opencode.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://opencode.ai/config.json", - "instructions": ["CLAUDE.md"] -} diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 4c1eabb..0000000 --- a/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -# No runtime dependencies - pure Rust extension From cdf92f5107c5f55a3c29aa092b2871cb39747f5b Mon Sep 17 00:00:00 2001 From: Yoav Haimov Date: Sat, 31 Oct 2026 10:47:46 +0200 Subject: [PATCH 7/7] ci: remove the every-commit-passes job Co-Authored-By: Claude Sonnet 5.5 --- .github/workflows/CI.yml | 35 ----------------------------------- CHANGELOG.md | 3 ++- CLAUDE.md | 2 +- CONTRIBUTING.md | 3 +-- scripts/check.sh | 2 +- 5 files changed, 5 insertions(+), 40 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e7f5d42..6d445d3 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -70,41 +70,6 @@ jobs: - name: pytest run: python -m pytest python/tests - # PRs are rebase-merged, so every commit lands on dev-v2 as is. Re-run the - # checks on each commit of the PR, not only the tip. - commits: - name: every commit passes - if: ${{ github.event_name == 'pull_request' }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - ref: ${{ github.event.pull_request.head.sha }} - - uses: actions/setup-python@v6 - with: - python-version: '3.x' - - name: Install Rust toolchain - run: rustup toolchain install stable --profile minimal --component rustfmt --component clippy --no-self-update - - name: Create virtualenv - run: | - python -m venv "$RUNNER_TEMP/venv" - echo "VIRTUAL_ENV=$RUNNER_TEMP/venv" >> "$GITHUB_ENV" - echo "$RUNNER_TEMP/venv/bin" >> "$GITHUB_PATH" - - name: Install dev dependencies - run: python -m pip install -r requirements-dev.txt - - name: Run checks on every commit - env: - BASE_REF: ${{ github.base_ref }} - run: | - git config user.name "ci" - git config user.email "ci@users.noreply.github.com" - git fetch origin "$BASE_REF" - # Copy the script out of the tree: commits older than the one that - # adds scripts/check.sh must still be checked with it. - cp scripts/check.sh "$RUNNER_TEMP/check.sh" - git rebase --exec "bash $RUNNER_TEMP/check.sh" "origin/$BASE_REF" - linux: runs-on: ${{ matrix.platform.runner }} strategy: diff --git a/CHANGELOG.md b/CHANGELOG.md index 48ffefc..540203d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - License: PyKyber is now licensed under MIT OR Apache-2.0, at the user's option (`LICENSE-MIT`, `LICENSE-APACHE`; `license = "MIT OR Apache-2.0"` in `Cargo.toml` and `pyproject.toml`). Version 1.0.5 was released under the Unlicense, and it still is. The `LICENSE` file and the "License :: Public Domain" classifier are gone. +- CI: removed the `every commit passes` job. The `test` job still runs on every PR and push. - Housekeeping: removed `PLAN-2.0.md` (the work packages are the sub-issues of #3; the primary-source list moved to `AGENTS.md`), `opencode.json` and the comment-only `requirements.txt`. - Docs: the README is now only install, quick start, sizes, performance and the Kyber deprecation note; the rest moved to `docs/`, and the new `docs/enterprise.md` covers licensing, dependencies, supply chain, security status and support for companies. Earlier: the README is shorter and rewritten in plain prose. The benchmark (`performance-tests/benchmark.py`) now times `ML_KEM_*` as well as the Kyber classes on a release build, writes `results.json`, and draws two charts (`latency.png`, `ml_kem_vs_kyber.png`) that replace the four old ones. The old README figures were for the Kyber classes only. `make benchmark` builds the release extension first, and the chart dependency is in `performance-tests/requirements.txt`. @@ -18,7 +19,7 @@ Planned release; not tagged or published yet. Adds ML-KEM (FIPS 203) beside the - 2.0 development: repo setup (issue #4), including CI on pushes to `dev-v2`, new `CONTRIBUTING.md`, root `SECURITY.md` (vulnerability-reporting policy + migrated security findings log), PR and issue templates, `CODEOWNERS` routing `src/` and `SECURITY.md` to the maintainer for review, and PR-description rules for agents in AGENTS.md (plain prose, ASCII-checked post text, REST fallback). - Legacy freeze (issue #6): golden vectors capture the byte output of pykyber v1.0.5 (append-only `tests/vectors/legacy-kyber-v1.0.5.json`, with the generator); Rust and Python tests fail on any change to seeded keygen, seeded encapsulation, or decapsulation output. -- CI (issue #7): a `test` job on Linux, macOS and Windows (oldest and newest Python) runs `cargo fmt --check`, `cargo clippy --all-targets -- -D warnings`, `cargo test --locked`, `maturin develop` and `pytest`; a `commits` job re-runs them on every commit of a PR via `git rebase --exec scripts/check.sh`. `requirements-dev.txt` declares maturin and pytest; wheel release now waits for `test`. +- CI (issue #7): a `test` job on Linux, macOS and Windows (oldest and newest Python) runs `cargo fmt --check`, `cargo clippy --all-targets -- -D warnings`, `cargo test --locked`, `maturin develop` and `pytest`. (A per-commit `every commit passes` job was added here and later removed; `scripts/check.sh` can still be run per commit with `git rebase --exec`.) `requirements-dev.txt` declares maturin and pytest; wheel release now waits for `test`. - ML-KEM (issue #13): new classes `ML_KEM_512`, `ML_KEM_768` and `ML_KEM_1024` (FIPS 203) with the same shape as `Kyber*` (an instance is a keypair; static `encapsulate`, `decapsulate`, `from_keys`; hex/b64/dict; tuple unpacking). A 64-byte seed `d || z` gives deterministic keys and is exposed as `.seed` only for such keypairs. ML-KEM methods refuse `Kyber*` objects by type (`AlgorithmMismatchError`); raw bytes cannot be told apart. New `KyberError` subclasses: `InvalidInputError`, `InvalidEncapsulationKeyError`, `InvalidDecapsulationKeyError`, `RandomnessError`, `DecapsulationError`, `AlgorithmMismatchError`. The Kyber classes are unchanged. - Kyber deprecation (issue #14): the first use of any `Kyber512/768/1024` entry point (constructor, `from_keys`, static `encapsulate` or `decapsulate`) emits one `KyberDeprecationWarning` (a `DeprecationWarning` subclass, exported from `pykyber`) per process. Importing does not warn, `ML_KEM_*` never warns, and Kyber output is unchanged. Python shows `DeprecationWarning` by default only when it is attributed to `__main__`; run with `-W default::DeprecationWarning` or call `warnings.simplefilter` to see it elsewhere. - Docs (issue #15): the README quick start, `docs/api.md` and `docs/index.md` use `ML_KEM_768` (NIST's default parameter set, FIPS 203 section 8), the Kyber classes are documented as deprecated, and the new `docs/migration.md` explains the move from Kyber to ML-KEM. The version is 2.0.0 in `Cargo.toml` and `pyproject.toml`. diff --git a/CLAUDE.md b/CLAUDE.md index 643c847..67ac969 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -29,7 +29,7 @@ pytest python/tests/test_kyber.py::test_kyber768_new_api `make clean` deletes `target/`, the built `.so`, and the `.pyi`; rebuild afterwards. -Known baseline (2026-10-30, after WP-4 / #12 and WP-5 / #13 merged): `cargo fmt --check`, `cargo clippy --all-targets -- -D warnings`, `cargo test` and `pytest python/tests` all pass on `dev-v2`, and the legacy golden vectors (#6) are in. CI (`.github/workflows/CI.yml`) has a `test` job (Linux/macOS/Windows, Python 3.8 and newest) and an `every commit passes` job that runs `scripts/check.sh` over each commit of a PR via `git rebase --exec`; making them required checks on `dev-v2` is a branch-protection setting only the maintainer can change (#7). The clippy lints `needless_range_loop`, `identity_op` and `explicit_counter_loop` are allowed per module in `src/kyber/` because the legacy loops mirror the reference C code; don't add new code that needs them. CI installs the latest stable toolchain, which can be newer than the one on your machine and bring new clippy lints (rustc 1.99 added `chunks_exact_to_as_chunks`, which failed PR #28 although 1.95 was clean), so run clippy with a recent stable before pushing: `rustup toolchain install stable` and `cargo +stable clippy --all-targets -- -D warnings`. +Known baseline (2026-10-30, after WP-4 / #12 and WP-5 / #13 merged): `cargo fmt --check`, `cargo clippy --all-targets -- -D warnings`, `cargo test` and `pytest python/tests` all pass on `dev-v2`, and the legacy golden vectors (#6) are in. CI (`.github/workflows/CI.yml`) has a `test` job (Linux/macOS/Windows, Python 3.8 and newest); making it a required check on `dev-v2` is a branch-protection setting only the maintainer can change (#7). The clippy lints `needless_range_loop`, `identity_op` and `explicit_counter_loop` are allowed per module in `src/kyber/` because the legacy loops mirror the reference C code; don't add new code that needs them. CI installs the latest stable toolchain, which can be newer than the one on your machine and bring new clippy lints (rustc 1.99 added `chunks_exact_to_as_chunks`, which failed PR #28 although 1.95 was clean), so run clippy with a recent stable before pushing: `rustup toolchain install stable` and `cargo +stable clippy --all-targets -- -D warnings`. ## Architecture diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bd0a31e..a3763f9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,8 +39,7 @@ These commands are the gate for every PR: scripts/check.sh # fmt, clippy -D warnings, cargo test, maturin develop, pytest ``` -CI runs the same checks on Linux, macOS and Windows, and again on every commit of -a PR (`git rebase --exec scripts/check.sh origin/dev-v2`). +CI runs the same checks on Linux, macOS and Windows. ## Branching and PRs diff --git a/scripts/check.sh b/scripts/check.sh index 311b737..7be5a74 100755 --- a/scripts/check.sh +++ b/scripts/check.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # The gate every commit must pass (AGENTS.md "Before saying you're done"). # Run from the repo root inside the virtualenv that holds requirements-dev.txt. -# CI runs this per commit via `git rebase --exec scripts/check.sh `. +# Check each commit locally with `git rebase --exec scripts/check.sh `. set -euo pipefail # External vectors (never committed). CI runs this script from the tip over