Repository navigation
Conversation
Quest-Claim: 84069b1253e48212
… spec Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…on padded blocks Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…able The length block, the 96-bit nonce's counter block against compute_iv_BE, and the tag as GCTR on gcm_hash under it, for any AAD and messages under 2^61 bytes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AesGcmAead.lean states AesGcm and the AEAD API for either tier: by8 on CPUs with AES-NI and PCLMULQDQ but no AVX, and on Vale's tier for seals under 129 bytes and AAD or messages of 2^32 bytes or more, up to rind's bounds of 2^61 bytes of AAD and 2^36 - 32 of message. Opening now rests on ct_equal's contracts too, for by8's tag check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…proof covers verified.toml gains AES-NI CPUs without AVX and lets Vale's tier's entry say its short seals and long lengths are proven; README, ALGORITHMS.md, and the quest say what remains: other IVs, truncated tags, AES-192, and by-16. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ChaCha20-Poly1305's proof now imports AesGcmAead, where this branch moved VecAsMut and VecExtend. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
marked this pull request as ready for review
November 12, 2026 05:30
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 8 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
kixelated
added this pull request to the merge queue
Nov 12, 2026
Any commits made after this event will not be merged.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Works on quest/m4/verified/aes-gcm-x86-intrinsics.md and rewrites it to what remains.
Summary
This proves rind's own by-8 AES-CTR and PCLMULQDQ GHASH on x86_64. The specs are Vale's
gcm_encrypt_LEandgcm_decrypt_LE, transliterated without their 2^32-byte bound. The proof goes through Aeneas and a hand model of the kernels, and covers the AEAD API on two tiers:by8the inputs Vale's routines don't take: seals under 129 bytes, and AAD or messages of 2^32 bytes or more. Every length rind takes is now proven. The ✓ already shown for 32-byte seals now rests on a proof.New files:
proofs/Rind/X86_64/AesGcmModel.lean: the hand model ofClmulTable's GHASH,by8, its counter, and the tag. It quotes the Rust, andadmin/provechecks the quote.Simd.lean: models of the SSE intrinsicsby8calls.admin/simd-vectors.rschecks them against the CPU.GhashClmul.lean:ClmulTable::new's eight key powers.ClmulTable::addis Horner's rule on the zero-padded blocks, and equal to Vale'sghash_LE.AesGcmBy8.lean:by8is Vale's GCTR frominc32 j0 1, plus GHASH over the padded AAD and ciphertext. The proof covers the counter's byte swaps andPADDD, the AES rounds, and the 128-byte loop's sum of descending powers.AesGcmClmul.lean:taggedwith a 96-bit nonce isgcm_encrypt_LE/gcm_decrypt_LE: the counter block iscompute_iv_BE's, the length block isgcm_hash's, and the tag is GCTR on the hash.AesGcm::new,encrypt, anddecrypton any tableby8takes, wherevervaledeclines.AesGcmAead.lean: the AEAD-level theorems (aes_gcm_new,aes_gcm_seal*,aes_gcm_open*), moved fromAesGcm.leanand generalized:RunsAesGcm := RunsValeAesGcm ∨ RunsClmulAesGcm;hlong : 129 ≤ lenis gone.GcmKey.leanandHkdfAead.leanfollow the same changes.Trust base:
sorry,bv_decide, ornative_decide.CtEqual.lean'sct_compare_16_specandct_compare_bytes_spec, since by-8's tag check runsct_equal.Axioms.leanrecords this.assert_held = ok ()like HMAC'sverify.Docs:
benchmarks/verified.toml:aes, pclmulqdq, ssse3, sse4.1, !avx);AesGcmAead.lean.proofs/README.mdand ALGORITHMS.md say what by-8's proof covers.Public API: none changed.
Builds on neither moq-dev/rind#631 nor moq-dev/rind#627. This uses
Rind/Vale.lean's AES spec, the one Vale's tier already proves against, so the by-8 and Vale theorems share one spec.Merged main, which landed ChaCha20-Poly1305's proofs:
ChaCha20Poly1305.leannow importsAesGcmAead, where this PR movedVecAsMutandVecExtend, andHkdfAead.lean's AES-GCM conversion holds underRunsAesGcmbeside main's ChaCha20-Poly1305 one.Checks:
admin/prove lean(all 2495 jobs),just check,admin/bench-report render --check, andquest check --base origin/mainpass.Models
Decisions
encrypt_any/decrypt_anyfor other IV lengths and truncated tags, AES-192, the AVX-512 by-16 kernels, and total specs ofcheck_gcm_lengths' refusals.Follow-ups
(Written by Claude Opus 5.5 with medium)
🤖 Generated with Claude Code
Review
Rewritten by
quest reviewafter each round.01a1ce3a-a848-7831-a3c3-54b270e41083, round 1Code review found no actionable defects and supports landing, but builds, tests, and proof checks were not run as instructed.