All Projects → project-everest → Hacl Star

project-everest / Hacl Star

Licence: apache-2.0
HACL*, a formally verified cryptographic library written in F*

Projects that are alternatives of or similar to Hacl Star

Software Quality Wiki
Software Quality Wiki
Stars: ✭ 1,991 (+46.4%)
Mutual labels:  formal-methods, verification
vscode-tlaplus
TLA+ language support for Visual Studio Code
Stars: ✭ 213 (-84.34%)
Mutual labels:  verification, formal-methods
Stainless
Verification framework and tool for higher-order Scala programs
Stars: ✭ 241 (-82.28%)
Mutual labels:  formal-methods, verification
Brightid
Reference mobile app for BrightID
Stars: ✭ 101 (-92.57%)
Mutual labels:  cryptography, verification
Ed25519 Dalek
Fast and efficient ed25519 signing and verification in Rust.
Stars: ✭ 383 (-71.84%)
Mutual labels:  cryptography, verification
Vscode Tlaplus
TLA+ language support for Visual Studio Code
Stars: ✭ 152 (-88.82%)
Mutual labels:  formal-methods, verification
klever
Read-only mirror of the Klever Git repository
Stars: ✭ 18 (-98.68%)
Mutual labels:  verification, formal-methods
Tlaplus
TLC is an explicit state model checker for specifications written in TLA+. The TLA+Toolbox is an IDE for TLA+.
Stars: ✭ 1,618 (+18.97%)
Mutual labels:  high-performance, verification
Stp
Simple Theorem Prover, an efficient SMT solver for bitvectors
Stars: ✭ 341 (-74.93%)
Mutual labels:  cryptography, verification
Kremlin
KreMLin is a tool for extracting low-level F* programs to readable C code
Stars: ✭ 285 (-79.04%)
Mutual labels:  cryptography, verification
Tool lists
Links to tools by subject
Stars: ✭ 270 (-80.15%)
Mutual labels:  formal-methods, verification
Cryptominisat
An advanced SAT solver
Stars: ✭ 502 (-63.09%)
Mutual labels:  cryptography, verification
Sled
the champagne of beta embedded databases
Stars: ✭ 5,423 (+298.75%)
Mutual labels:  formal-methods, high-performance
Ssri
Standard Subresource Integrity library for Node.js
Stars: ✭ 69 (-94.93%)
Mutual labels:  cryptography, verification
Tars
Tars is a high-performance RPC framework based on name service and Tars protocol, also integrated administration platform, and implemented hosting-service via flexible schedule.
Stars: ✭ 9,277 (+582.13%)
Mutual labels:  high-performance
Statsderl
High-Performance Erlang StatsD Client
Stars: ✭ 92 (-93.24%)
Mutual labels:  high-performance
Siphash Js
A Javascript implementation of SipHash-2-4
Stars: ✭ 90 (-93.38%)
Mutual labels:  cryptography
Py Seccure
SECCURE compatible Elliptic Curve cryptography in Python
Stars: ✭ 90 (-93.38%)
Mutual labels:  cryptography
Jhverificationcodeview
验证码输入框,验证码,code view,iOS验证码输入
Stars: ✭ 96 (-92.94%)
Mutual labels:  verification
Computer Science Resources
A list of resources in different fields of Computer Science (multiple languages)
Stars: ✭ 1,316 (-3.24%)
Mutual labels:  cryptography

A High-Assurance Cryptographic Library

This repository contains verified code for a library of modern cryptographic algorithms, including Curve25519, Ed25519, AES-GCM, Chacha20, Poly1305, SHA-2, SHA-3, HMAC, and HKDF. This set of algorithms is enough to support the full NaCl API and several TLS 1.3 ciphersuites. The code for all of these algorithms is formally verified using the F* verification framework for memory safety, functional correctness, and secret independence (resistance to some types of timing side-channels).

Documentation: More detailed documentation on the library and our verification method can be found at hacl-star.github.io.

The code in this repository is divided into three closely-related sub-projects, all developed as part of Project Everest.

HACL*

HACL* is a formally verified library of modern cryptographic algorithms written in a subset of F* called Low* and compiled to C using a compiler called KreMLin. The Low* source code for each primitive is verified for memory safety, functional correctness, and secret independence. The compiler generates efficient, readable, standalone C code for each algorithm that can be easily integrated into any C project. We include the current C code for various HACL* algorithms in the dist directory. HACL* can also be compiled to WebAssembly.

ValeCrypt

ValeCrypt provides formally verified high-performance cryptographic code for selected primitives in assembly language. It relies on the Vale tool to produce code and proofs in F*. Vale supports multiple platforms and proves that its implementations are memory safe, functionally correct, and that timing and memory accesses are secret independent.

EverCrypt

EverCrypt is a high-performance, cross-platform, formally verified modern cryptographic provider that packages implementations from HACL* and ValeCrypt, and automatically picks the fastest one available, depending on processor support and the target execution environment (multiplexing). Furthermore, EverCrypt offers an (agile) API that makes it simple to switch between algorithms (e.g., from SHA2 to SHA3).

Status

Warning: This is a research project. Although some of our code is currently used in popular products like Mozilla Firefox and Wireguard, we highly recommend that users consult with the HACL* maintainers before using this code in production systems.

We are actively developing and integrating our code on the master branch, which tracks F*'s master branch. Ongoing developments on new cryptographic primitives happen in the dev branch, which runs a little ahead of master. You can find a current snapshot of our C and assembly code in the dist directory; stable releases of the full library can be found in the releases page.

License

All the code in this repository is released under an Apache 2.0 license. The generated C code from HACL* is also released under an MIT license. Contact the maintainers if you have other licensing requirements.

Contact or Contribute

This repository contains contributions from many students and researchers at INRIA, Microsoft Research, and Carnegie Mellon University, and it is under active development. The primary authors of each verified algorithm are noted in the corresponding AUTHORS.md file. For questions and comments, or if you want to contribute to the project, contact the current maintainers at [email protected].

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].