├── README.md └── install.md /README.md: -------------------------------------------------------------------------------- 1 | # Formal verification/analysis tools tutorials 2 | 3 | ## Easycrypt 4 | 5 | * [Formal Methods in Security and Privacy](https://cs-people.bu.edu/gaboardi/teaching/S21-CS591.html) by Marco Gaboardi and Alley Stoughton with a great Lab. 6 | * [EasyCrypt: A Tutorial](https://www.semanticscholar.org/paper/EasyCrypt%3A-A-Tutorial-Barthe-Dupressoir/e6d0ac36f37643ab15875c3a5a830e9e51dbf08d) by G. Barthe, François Dupressoir, B. Grégoire, César Kunz, Benedikt Schmidt and Pierre-Yves Strub 7 | * [First EasyCrypt School and Workshop](https://software.imdea.org/projects/certicrypt/school.html) 8 | * [Summer school - EasyCrypt part 1 by François Dupressoir](https://www.youtube.com/watch?v=vEE84uuOX_Q) 9 | * [Summer school - EasyCrypt with Jasmin by Vincent Laporte & Benjamin Grégoire](https://www.youtube.com/watch?v=CStaNMsaot4) 10 | * [Easycrypt by Manuel Barbosa - Indocrypt](https://media.easycrypt.info/JasminECTutorial.mp4) 11 | 12 | ### Ambient logic 13 | 14 | * [Using EasyCrypt’s Ambient Logic](https://cs-people.bu.edu/gaboardi/teaching/S21-CS591/labs/week1/ambient.pdf) 15 | 16 | ## Jasmin 17 | 18 | * [How to install](https://cryptojedi.org/programming/jasmin.shtml) by Peter Schwabe 19 | * [Installation instructions](https://github.com/jasmin-lang/jasmin/wiki/Installation-instructions) 20 | 21 | ## Tamarin 22 | 23 | * [Tamarin-Prover Manual](https://tamarin-prover.github.io/manual/tex/tamarin-manual.pdf) by The Tamarin Team 24 | * [An Analysis of the Transport Layer Security Protocol](https://www.isg.rhul.ac.uk/~kp/theses/TvdMthesis.pdf) by Thyla van der Merwe 25 | * [Tamarin Prover Introduction](https://www.youtube.com/watch?v=XptJG19hDcQ&ab_channel=DavidWong) by David Wong 26 | * [Symbolic verification of cryptographic protocols using Tamarin](https://resources.mpi-inf.mpg.de/departments/rg1/conferences/vtsa18/slides/basin-lecture2.pdf) David Basin 27 | * [Teaching Materials for the Tamarin Prover](https://github.com/tamarin-prover/teaching) by The Tamarin Team 28 | 29 | 30 | ## General 31 | 32 | * [Cyber in Saclay -- Winter School in Cybersecurity](https://gdr-school.sciencesconf.org/resource/page/id/3) 33 | -------------------------------------------------------------------------------- /install.md: -------------------------------------------------------------------------------- 1 | # How to install EasyCrypt and Jazmin 2 | 3 | For MacOS: 4 | 5 | ## Installing easycrypt: 6 | 7 | 1. Install ocaml and opam: 8 | 9 | ``` 10 | brew install ocaml opam 11 | opam init 12 | eval $(opam env) 13 | ``` 14 | 15 | (note that on some MacOS versions you don't need to execute `eval $(opam env)` as it 16 | it for you in your terminal). 17 | 18 | 2. Pin easycrypt: `opam pin -yn add easycrypt https://github.com/EasyCrypt/easycrypt.git`. 19 | 3. Install the needed dependencies: 20 | 21 | ``` 22 | opam install --deps-only easycrypt 23 | opam install alt-ergo 24 | ``` 25 | 26 | 4. Configure why3: `why3 config detect`. 27 | 5. Install easycrypt: `opam install easycrypt`. 28 | 29 | Note that on many occasions, you will need to add Z3, which you can do as: 30 | 31 | ``` 32 | brew install z3 33 | opam install alt-ergo.2.3.1 (in case it cannot find the prover) 34 | ``` 35 | 6. Check your installation: 36 | 37 | ``` 38 | Check that you can run: easycrypt 39 | ``` 40 | 41 | ## Installing jasmin 42 | 43 | 1. Clone the repository: 44 | 45 | ``` 46 | git clone --branch glob_array3 git@github.com:jasmin-lang/jasmin.git 47 | cd jasmin 48 | ``` 49 | 50 | 2. Install nix: `curl -L https://nixos.org/nix/install | sh`, and follow the specific instructions. 51 | 52 | 3. Run: 53 | 54 | ``` 55 | nix-shell 56 | cd compiler 57 | make CIL 58 | make 59 | make check 60 | exit 61 | ``` 62 | 4. Check that it exists: 63 | 64 | ``` 65 | jasmin/compiler/jasminc 66 | ``` 67 | 68 | ## EasyCrypt extra flavors 69 | 70 | ### Documentation 71 | 72 | The old documentation lives [here](https://github.com/EasyCrypt/easycrypt-doc). 73 | The folder `obsolete` can be used for reference but note that it is obsolete. 74 | In order to create a pdf of that folder's information, you can: 75 | 76 | For MacOS: 77 | 78 | 1. Install mactext: `brew install --cask mactex` 79 | 2. Move the `multind.sty` from `common` folder to `obsolete/userman` one 80 | 2. In the `obsolete/userman` folder, run: `pdflatex common/easycrypt-common.tex` 81 | 82 | ### Emacs integration 83 | 84 | The interface you can use for the proof assistant is [Proof General](https://github.com/ProofGeneral/PG). 85 | You can install: 86 | 87 | For MacOS: 88 | 89 | 1. Install emacs via cask, as recommended [here](https://www.emacswiki.org/emacs/EmacsForMacOS#toc14): `brew install --cask emacs` 90 | 2. Use MELPA and run (on emacs): 91 | 92 | ``` 93 | M-x package-refresh-content 94 | M-x package-install 95 | proof-general 96 | ``` 97 | 98 | --------------------------------------------------------------------------------