Skip to content

Argon2 on x86-64: prove the filling matrix state transition - #497

Closed
reaperhulk wants to merge 1 commit into
argon2-fill-kernelfrom
argon2-fill-matrix
Closed

reaperhulk wants to merge 1 commit into
argon2-fill-kernelfrom
argon2-fill-matrix

Conversation

@reaperhulk

Copy link
Copy Markdown
Member

Connect the verified x86-64 filling step to Spec.Argon2.fillBlock: represent the lane-major assembly allocation as the specification's block array, prove that the step changes exactly the current cell, and prove the complete matrix agrees with the reviewed state transition when supplied its specified random word.

Memory initialization establishes the same representation invariant. Each filling step retains the frame values, loop registers, permissions and allocation/separation invariants needed for the following iteration. Add target-independent proof lemmas exposing the reviewed step's random word, array update and permitted-reference log; the specification itself is unchanged.

Builds on #496. Proofs only; no specification, TCB, API or assembly changes. Selecting the random-word source and composing the nested loops follows.

Validation: targeted Lean builds, standard-axiom and compiler-override audits, specification-origin audit, Lean import/proof-speed checks, and git diff --check. Full checks run in CI.

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

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant