Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add unbounded AES-GCM verification. #139

Closed

Conversation

andreistefanescu
Copy link
Contributor

@andreistefanescu andreistefanescu commented Jan 23, 2024

Caveats

  • llvm_verify_fixpoint_x86 proves partial correctness, that is, the property is verified just for terminating executions of the target x86_64 function
  • induction proofs for cryptol functions are in fact proofs just for the inputs on which the function evaluation terminates, for example, \x -> f x == g x means that f x is equal with g x when f x terminates; moreover, the induction principle is applied manually, by using prove_theorem assume_unsat to create a rewrite rule that is then used in it's own proof, after the function f is unfolded.
  • saw branch (with submodules): https://github.com/GaloisInc/saw-script/tree/sygus2

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Co-authored-by: Robert Dockins <rdockins@galois.com>
Co-authored-by: Samuel Breese <samuel@chame.co>
@andreistefanescu
Copy link
Contributor Author

I managed to run the entire proof as is, it takes 22 minutes on my M2 Max, memory usage peaked at 97% :-).

@pennyannn
Copy link
Contributor

pennyannn commented Feb 6, 2024

I tried to reproduce this proof but failed. Specifically, the proofs for assembly aesni_gcm_encrypt and aesni_gcm_decrypt failed. The attached(out.log) is the failure message. The environment is the following:

For compiling SAW:

  • Docker image base: Ubuntu20.04
  • GHC version: 9.4.8
  • Cabal version: 3.10.2.1

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.

3 participants