Skip to content

fix(DiffieHellman): correct computations and execution specification - #1041

Open
SamuelSchlesinger wants to merge 3 commits into
mainfrom
samschles/fix-dh-role-exponents
Open

SamuelSchlesinger wants to merge 3 commits into
mainfrom
samschles/fix-dh-role-exponents

Conversation

@SamuelSchlesinger

@SamuelSchlesinger SamuelSchlesinger commented Oct 3, 2026 •

Copy link
Copy Markdown
Collaborator

Uses each role's own private exponent and rejects local function calls with a mismatched modulus.

States the functional-correctness target over complete executions (MTr). The previous single-step premise could not describe a completed run.

Regression checks cover all four role-specific outputs and modulus rejection, and construct a four-step execution from any initial store with both keys equal to g ^ (a * b). The general correctness theorem remains proof_wanted.

Builds on #1040, now merged, and incorporates the fixes from #1042 and #1044.

Implemented with Codex.

fmontesi pushed a commit that referenced this pull request Oct 6, 2026
The evaluator expressed modulus equality as an implication, so a call
with the wrong modulus accepted every result. Require modulus equality
together with the expected computed value.

Adds a regression check rejecting every result for both functions when
the modulus differs, while retaining the valid role-evaluation checks.
The field elements already have type `ZMod params.p`, so the corrected
relation also avoids the old dependent casts.

Depends on #1041 (the role-exponent fix); this PR targets that branch.

Implemented with Codex.
SamuelSchlesinger and others added 2 commits October 7, 2026 00:45
The evaluator expressed modulus equality as an implication, so a call
with the wrong modulus accepted every result. Require modulus equality
together with the expected computed value.

Adds a regression check rejecting every result for both functions when
the modulus differs, while retaining the valid role-evaluation checks.
The field elements already have type `ZMod params.p`, so the corrected
relation also avoids the old dependent casts.

Depends on #1041 (the role-exponent fix); this PR targets that branch.

Implemented with Codex.
@SamuelSchlesinger
SamuelSchlesinger force-pushed the samschles/fix-dh-role-exponents branch from 3f3c879 to 08385e3 Compare October 7, 2026 04:45
@SamuelSchlesinger SamuelSchlesinger changed the title fix(DiffieHellman): use each role's own private exponent fix(DiffieHellman): correct role exponents and modulus checks Oct 7, 2026
@SamuelSchlesinger
SamuelSchlesinger changed the base branch from samschles/fix-dh-call-arity to main October 7, 2026 04:45

Copy link
Copy Markdown
Collaborator Author

@fmontesi Could you review this now that #1040 is merged? It fixes the role exponents and rejects mismatched moduli, with regression checks for both.

The correctness statement assumed that the initial network reached `0`
in one transition, which is impossible. Use `MTr` so the statement
covers complete executions.

Adds a regression proof constructing a four-step execution from any
initial store, with both final keys equal to `g ^ (a * b)`.

Depends on #1042 (the modulus-check fix); this PR targets that branch.

Implemented with Codex.
@SamuelSchlesinger SamuelSchlesinger changed the title fix(DiffieHellman): correct role exponents and modulus checks fix(DiffieHellman): correct computations and execution specification Oct 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant