sipengxie2024/superpower-writing · Archived

game-based-security-proof

Use when proving security of encryption schemes, MACs, signatures, PRFs, hash constructions, or other cryptographic primitives, constructing reduction proofs from standard assumptions (DDH, CDH, RSA, LWE), or writing formal game-based security proofs and advantage bounds in academic papers.

First seen Jun 13, 2026

Installation

$ npx skills add sipengxie2024/superpower-writing --skill game-based-security-proof

Summary

  • Use when proving security of encryption schemes, MACs, signatures, PRFs, hash constructions, or other cryptographic primitives, constructing reduction proofs from standard assumptions (DDH, CDH, RSA, LWE), or writing formal game-based security proofs and advantage bounds in academic papers.
  • Covers game sequences and hopping, negligible-advantage arguments, tightness accounting, and turning an informal security claim into a displayed definition, theorem, and proof a reviewer can verify.

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from sipengxie2024/superpower-writing · top by installs.

npx skills add sipengxie2024/superpower-writing

Browse all from sipengxie2024/superpower-writing

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 2
License LICENSE
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,972 B
  • docs SUMMARY.md 523 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 3 installs

SKILL.md

Game-Based Security Proof Methodology

Overview

This skill provides systematic guidance for constructing security proofs using the sequence-of-games technique. The methodology transforms complex security arguments into manageable sequences of small, analyzable transitions between games.

Core Principle: Security proofs proceed by constructing Game 0 (original attack game), then transforming it through Games 1, 2, ..., n until reaching a game where the target probability is easily computed. Each transition changes only one aspect, making analysis tractable.

When to Use This Skill

  • Proving semantic security (IND-CPA, IND-CCA) of encryption schemes
  • Proving unforgeability (EUF-CMA) of signatures/MACs
  • Proving pseudorandomness of PRFs/PRPs
  • Reducing security to computational assumptions (DDH, CDH, RSA, LWE)
  • Writing formal proofs for cryptography papers

Proof Structure Template

1. Setup Phase

Define the attack game (Game 0) precisely:

Game 0:
  Challenger computes keys: (pk, sk) ← KeyGen()
  Challenger selects: b ←$ {0,1}
  Adversary A interacts with Challenger (queries, challenges)
  Adversary outputs: b̂
  Define S₀ := event that b = b̂
  Adversary's advantage: |Pr[S₀] - 1/2|

2. Game Sequence

For each transition Game i → Game i+1, use exactly ONE of three types:

Type 1: Indistinguishability Transition

  • Make a small change that, if detected, breaks a computational assumption
  • Construct distinguisher D that interpolates between games
  • Conclude: |Pr[Sᵢ] - Pr[Sᵢ₊₁]| = ε_assumption

Type 2: Failure Event Transition (Difference Lemma)

  • Games proceed identically unless failure event F occurs
  • Ensure: Sᵢ ∧ ¬F ⟺ Sᵢ₊₁ ∧ ¬F
  • Apply Difference Lemma: |Pr[Sᵢ] - Pr[Sᵢ₊₁]| ≤ Pr[F]
  • Bound Pr[F] (via assumption or information-theoretic argument)

Type 3: Bridging Step

  • Purely conceptual restatement (e.g., "lazy sampling" / "gnome" technique)
  • Pr[Sᵢ] = Pr[Sᵢ₊₁] exactly

3. Final Game Analysis

In Game n, show that Pr[Sₙ] equals the target probability (typically 1/2 for encryption, or 0 for unforgeability).

4. Advantage Bound

Combine all transitions:

Adv[A] = |Pr[S₀] - target| ≤ Σ |Pr[Sᵢ] - Pr[Sᵢ₊₁]| ≤ ε₁ + ε₂ + ... + εₙ

The Difference Lemma

Lemma (Difference Lemma): Let A, B, F be events in a probability space. If A ∧ ¬F ⟺ B ∧ ¬F, then |Pr[A] - Pr[B]| ≤ Pr[F].

Proof sketch: |Pr[A] - Pr[B]| = |Pr[A∧F] + Pr[A∧¬F] - Pr[B∧F] - Pr[B∧¬F]| = |Pr[A∧F] - Pr[B∧F]| (since Pr[A∧¬F] = Pr[B∧¬F]) ≤ Pr[F]

Critical practice: Define games on the same underlying probability space so failure event F is literally one event, not corresponding events across spaces.

Key Techniques

Lazy Sampling ("Gnome" Technique)

Replace eager random function evaluation with lazy/on-demand sampling:

# Eager (conceptual random function f)
y ← f(x)

# Lazy (equivalent "gnome" implementation)
if x ∈ Table then y ← Table[x]
else Y ←$ Range; Table[x] ← Y; y ← Y

Use this to bridge between "random function" and explicit table-based computation.

Forgetful Gnome

After lazy sampling setup, remove consistency checks to create independent random variables:

# Faithful gnome (with checks)
if x = xⱼ for some j < i then y ← yⱼ else y ← Yᵢ

# Forgetful gnome (no checks)  
y ← Yᵢ

Games differ only when collision occurs (failure event).

One-Time Pad Argument

When a value h is used only once as h ⊕ m:

  • If h is uniformly random and independent of m
  • Then h ⊕ m is uniformly random regardless of m
  • Adversary learns nothing about which message was encrypted
  • Conclude: Pr[b = b̂] = 1/2

Common Proof Patterns

Scheme Type Typical Game Sequence
Public-key encryption Game 0 → (DDH/CDH transition) → ... → one-time-pad game
PRF security Game 0 → (replace PRF with random) → lazy sampling → forgetful gnome
PRP security Similar to PRF, bound RF/RP distinguishing advantage
CCA encryption Game 0 → (reject all decryption queries) → semantic security game
Random oracle Game 0 → (program random oracle) → reduction to CDH/other

Writing Guidelines

  1. Explicit game descriptions: Write games algorithmically with clear notation
  2. One change per transition: Each game should differ minimally from the previous
  3. Label transition types: State explicitly "[This is a transition based on X]"
  4. Bound immediately: After each transition, state the bound on probability difference
  5. Same probability space: Keep all games on the same space when possible

Reference Files

  • references/game-transitions.md: Detailed explanation of three transition types with examples
  • references/proof-templates.md: Complete proof templates for common schemes
  • references/latex-macros.md: LaTeX macros for writing game-based proofs

Quick Reference: Notation

Symbol Meaning
x ←$ S Sample x uniformly from set S
A^O() Adversary A with oracle access to O
Pr[E] Probability of event E
negl(λ) Negligible function in security parameter λ
Sᵢ Success event in Game i
F Failure event
ε Advantage bound (should be negligible)