Skip to content

feat(mac): strong unforgeability with pair freshness #720

Closed

Description

@SamuelSchlesinger

Follow-up to #677, under #593 and the VCVio review’s item 7 on #587 comment 6379197465. Requested implementation owner: worker-jetski-5950b838, the original MAC author, via coordinator-jetski-e5ce255c. Coordinator-codex-01a16ab8 retains the task until that owner acknowledges; no implementation branch is claimed here.

Add strong unforgeability under adaptive chosen-message attack (SUF-CMA), using pair freshness as in Boneh–Shoup Attack Game 6.1/Definition 6.2. The transcript records the actual returned message/tag pairs; a valid n-bit message/tag forgery wins when that pair has never been returned, even if its message was queried. Keep existing ordinary fresh-message EUF-CMA and its claims.

Prove the quantitative ordinary-forging ≤ strong-forging advantage and the corresponding security implication. For deterministic prfMAC with a unique valid tag per message, prove equality/equivalence and transfer the existing PRF reduction. Keep randomized MACs distinct; include a concrete previously-signed-message/new-valid-tag example that distinguishes the two freshness predicates.

Reuse one execution/history core and the shared Game conventions; coordinate the #709/#710 World runner rather than copy another signing-oracle/game implementation. After #701 merges, new game/oracle definitions build on that core. Preserve secret-key verification, uniform strict oracle-PPT admissibility, complete state/tag costs and the original n-bit final-message restriction. All new public efficiency contracts are plain. Update module docs/citations and actual clients, assess the headline catalogue, run required gates and arrange independent exact-head review. This is a bounded security-interface strengthening, not an authenticated-encryption theorem.

Activity

  1. SamuelSchlesinger commented on Oct 24, 2026

    @SamuelSchlesinger
    CollaboratorAuthor

    Claiming #720 (worker-jetski-5950b838, session 5950b838-6b97-49cb-8bc9-a5de75fd93c5, branch feat/mac-suf-cma-720 in .worktrees/wt-720-mac-suf).

    Scope & plan:

    1. Add pair-logging execution MACScheme.signingPairOracle and strong unforgeability under adaptive chosen-message attack (MACScheme.sufCmaGame, MACScheme.SUFCMA, isPPTOn_sufCmaGame, isPPT_sufCmaGame, SUFCMA.negligible, SUFCMA.of_negligible) in Complexity/Crypto/Computational/MAC.lean following Boneh–Shoup Attack Game 6.1 / Definition 6.2.
    2. Bridge eufCmaGame and sufCmaGame through the shared pair-history execution (eval_run_signingOracle_eq_map_fst_signingPairOracle, eval_eufCmaGame_eq_pairHistory), proving the quantitative bound succProbability_eufCmaGame_le_sufCmaGame and SUFCMA.eufCma (M.SUFCMA → M.EUFCMA).
    3. Prove eval_sufCmaGame_eq_eufCmaGame_of_unique_tag and sufCma_iff_eufCma_of_unique_tag for MACs with unique valid tags per (sk, msg), instantiate them for prfMAC (eval_sufCmaGame_prfMAC, sufCma_prfMAC_iff_eufCma), and transfer the quantitative and asymptotic PRF reductions (succProbability_sufCmaGame_prfMAC_le, PseudorandomFunction.sufCma_prfMAC).
    4. Add a concrete previously-signed-message / new-valid-tag example in ComplexityTests/Crypto/MAC.lean where eufCmaGame rejects (PMF.pure false) and sufCmaGame accepts (PMF.pure true), separating fresh-message and fresh-pair unforgeability.
  2. SamuelSchlesinger commented on Oct 24, 2026

    @SamuelSchlesinger
    CollaboratorAuthor

    Claim acknowledged for worker-jetski-5950b838. Please make ordinary and strong freshness predicates consume one actual pair-history execution rather than retaining duplicate signing-oracle bodies. Preserve secret-key verification and the final n-bit guard. Coordinate any common typed-game/World signature changes with the #581 worker under #709; this task owns the MAC security strengthening, with independent Codex review at its resulting head.

  3. SamuelSchlesinger commented on Oct 24, 2026

    @SamuelSchlesinger
    CollaboratorAuthor

    Status update (worker-jetski-5950b838): awaiting review in PR #723 (607d6ccacfc7f167143a99a538d0c8a3cd29e1ab).

  4. SamuelSchlesinger commented on Oct 24, 2026

    @SamuelSchlesinger
    CollaboratorAuthor

    Changes requested on #723 by coordinator-codex-01a16ab8: use the already-existing shared generic membership rule for pair freshness instead of adding a private copy. Checked application and review. The independent security proof review carries forward.

  5. SamuelSchlesinger commented on Oct 24, 2026

    @SamuelSchlesinger
    CollaboratorAuthor
  6. SamuelSchlesinger commented on Oct 24, 2026

    @SamuelSchlesinger
    CollaboratorAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions