Giter VIP home page Giter VIP logo

galoisinc / hacrypto Goto Github PK

View Code? Open in Web Editor NEW
44.0 41.0 14.0 975.21 MB

Experiments in high-assurance crypto.

License: BSD 3-Clause "New" or "Revised" License

HTML 7.01% C 58.23% Makefile 4.97% CSS 0.02% Java 8.29% Smalltalk 0.01% Coq 0.05% JavaScript 0.59% Haskell 0.01% Shell 1.72% C# 1.28% C++ 6.19% Python 0.21% Perl 5.93% Objective-C 0.69% Assembly 4.29% CMake 0.04% Go 0.07% TeX 0.40% AGS Script 0.01%

hacrypto's Introduction

hacrypto

Intro

Snapshots, architectures, audits, validation, and verification of crypto libraries

Snapshots

Source snapshots are all in the src directory. They are orgranized by language then library, then version directories. Our goal for snapshots is breadth. Please let us know if there is anything that we are missing!

Audits

Quick audits of some of the libraries in AUDITS.md.

Architecture

BON specifications for the hacrypto library can be found in the arch folder, along with a HTML view of the architecture, and generated tests.

Test generation

The TestGen contains a project that generates test cases and harnesses for crypto libraries. A primary goal is to generate CAVP tests and hopefully find some insufficiencies in the testing.

Verification/Validation

The Verification/VST/sha folder contains experiments with building, calling, and running frama-c value analysis on SHA256 implementations from NSS, Sodium, and a macro expanded and verified in Coq OpenSSL.

hacrypto's People

Contributors

dmwit avatar dmzimmerman avatar jldodds avatar kiniry avatar tommd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hacrypto's Issues

requirements

Write requirements for our V&V infrastructure.

generic C API

Write generic C API that refines EBON language-neutral API.

language-neutral API design

Write an API design in EBON to reify core crypto domain model elements. This API will be refined to C and Java initially. First order behavioral specifications must be included.

domain model

Write an EBON domain model for the basic crypto and infrastructure concepts.

feature model

Write a (set of) feature model(s) that cover the variance in our domain model of crypto as well as our goals and requirements for the V&V infrastructure.

write pairwise validation harness

Note that this harness needs to not only drive two library calls, but also two executables or Cryptol interpreter vs. concrete implementation.

move from "extract and build" to "full build"

Currently, for experimental work on designing the V&V infrastructure we are manually extracting and building specific crypto functions. In the longer term, we want to support an automated "full build" mode whereby we synchronize with remote code drops or repositories and perform full build and tests of others' libraries, publishing all of our V&V results for the whole community via our continuous integration (CI) system. This means that developers on all crypto libraries, or developers that use those libraries, would be able to assess the build state and quality of any library quickly and accurately by simply visiting our CI site.

generalize test vector support across implementations

After auditing a dozen or more crypto libraries we have found that the best library authors do in terms of testing/validation is to run a handful of published test vectors (e.g., NIST standard or submission vectors). So, while these vectors are hand-encoded into unit/system tests in dozens of libraries, and thus we can run the vectors by triggering test runs, we'd rather encode them once-and-for-all, abstractly, generically, in the library/language-neutral specification we are writing. Then, with appropriate automated tool support in our V&V infrastructure, we can automatically inject the vectors into all implementations. The first stage of this work is showing how to encode the vectors, so I'll take responsibility for that in our EBON system design (#1, #3, #5).

extract and build Oracle SHA2

For our first milestone, we are not attempting necessarily to build entire libraries, but only focus on the minimal dependent slice to cover SHA2.

extract and build BouncyCastle SHA2

For our first milestone, we are not attempting necessarily to build entire libraries, but only focus on the minimal dependent slice to cover SHA2.

generic Java API

Write generic Java API that refines EBON language-neutral API.

generate SHA2 reference implementations from Cryptol 1

As Joey and I have no experience with the code emitter in Cryptol version 1, perhaps this is something best done over lunch with you or someone else who has familiarity with that code base. We'd love to have SHA2 in C and JVM.

write test vector generator harness

The vector generator's design will be part of the overall hacrypto design and will probably just be a bit of C that does deterministic and non-deterministic, possibly cached, streaming and finite bit vector length, random test vector generation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.