Giter Site home page Giter Site logo

crocs-muni / eacirc Goto Github PK

View Code? Open in Web Editor NEW
12.0 10.0 8.0 11.7 MB

Automatic problem solver based on circuit-like representation and genetic programming

C++ 96.10% CMake 3.90%
randomness-testing cryptography research-tool hash-functions stream-ciphers block-ciphers

eacirc's Introduction

EACirc
Build Status Coverity status Latest release DOI

EACirc is a framework for automatic problem solving. It can be utilized as randomness testing tool similar to statistical batteries (NIST STS, Dieaharder, TestU01), for instance for analysis of cryptographic function outputs.

It uses supervised learning techniques based on metaheuristics to construct adapted distinguisher of two input data streams. The distinguisher can be represented as hardware-like circuits or algebraic polynomial.

The Framework

This repository contains EACirc core and code for data stream generation (mainly eSTREAM and SHA-3 candidates). Further tools are:

For more information and details see project wiki pages.

Quickstart

Requirements are gcc5 (clang3.6), git and cmake 3.4.

Sample build on Metacentrum

module add gcc-5.3.0 cmake-3.6.1
git clone --recursive [email protected]:crocs-muni/eacirc.git src
mkdir src/build
cd src/build
ccmake ..
make

Authors

The framework is developed at the Centre for Research on Cryptography and Security (formerly Laboratory of Security and Applied Cryptography), Masaryk University, Brno, Czech Republic.

  • Petr Švenda 2008-now (project lead, initial implementation)
  • Jiří Novotný 2014-now (build system, CUDA, main developer)
  • Michal Hajas 2015-now (Java bytecode emulator)
  • Dušan Klinec 2012-now (polynomial distinguisher)
  • Karel Kubíček 2014-now (TEA, metaheuristics)
  • Ľubomír Obrátil 2014-now (RTT, Oneclick)
  • Marek Sýs 2013-now (statistics evaluation, polynomials)
  • Martin Ukrop 2012-now (framework model, refactoring, SHA-3 & CAESAR candidates testing, supporting tools)

Former participation:

  • Milan Čermák 2012-2013 (CUDA)
  • Ondrej Dubovec 2011-2012 (SHA-3 candidates testing)
  • Matěj Prišťák 2011-2012 (object model and refactoring, XML support, eStream candidates testing)
  • Zdenek Říha 2013-2016 (Java bytecode emulator)
  • Tobiáš Smolka 2011-2012 (BOINC related support)

eacirc's People

Contributors

bender250 avatar luboo avatar mathius avatar mhajas avatar mukrop avatar petrs avatar ph4r05 avatar rc22 avatar sysox avatar xtracko avatar zriha avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eacirc's Issues

automatic program versioning

Make program version (ideally current git commit hash or its prefix) build into the program binary -> when run, log file can automatically contain version -> better experiment replication

project data space + backup

  • allocate server space for project data
  • make easy, presentable form of current results
  • backup and summarize all computation to date

command line arguments

  • option for verbose output (initializing generators, ... => will simplify configuration errors)
  • option for writing program log (like verbose output and error messages) to file instead of stdout (for batch processing)
  • arguments can be set in arbitrary order

behaviour if config.xml not found

The app should terminate and state that confix.xml was not found.
(now it terminates in EncryptorDecryptor's assert(false) as if stream number was incorrectly set)

binary output format to xml?

Should binary output format (population, genome) be saved in xml?

  • increases integrity
  • better readability
  • protection from incorrect processing

command line arguments

Program does not check validity of arguments and continues working ignoring them.
=> if typo in argument, application does something else as user thinks

plus, error message should be displayed, when e.g. files with test data were not found

review licences

review licence for EACirc and for used components, add licence files

unify GAlib usage

project now uses 2 verions of GAlib

  • "ga" (older version, originally for windows only)
  • "gaunix" (newer version, both unix and windows)

Project should be unified to use "gaunix" ("ga" should be deleted)
Note: beware of differences between "ga" and "gaunix"

statistics

Which stats do we want?

  • graph files?
  • special averages?
  • make directives for specific stats?

review GAlib callbacks

-> initialiser will generate random connectors in selector layer as well
-> mutator will distinguish function mutation probability and connector mutation probability
-> initialiser can generate fixed layers (each function once), to be combined with fucntion mutation probability of 0

loading state

programme will be able to load saved state and continue computatuion

create new set of node functions

-> change circuit emulator
-> change checker
-> change circuit printing (text, code, dot)

new set of functions:
nop, nand, xor, or, and, nor, not, >>, <<, >>cycle, <<cycle

file distinguisher

Vytvorit projekt, ktory hlada distinguisher medzi datami z 2 vstupnych suborov
-> vyskusat rozoznavat chorvatske/nemecke nahodne data
-> vyskusat odlisit vystupy viacerych sifier
-> pouzitie mimo, napr. odlisovat binarne konfiguraky roznych programov? styl hudby z binarnej interpretacie mp3? Kadeco by sa dalo vyskusat.

analytical design

make analytical design separating EACirc framework from individual projects (eStream, SHA3, ...) - done

get the design diagram into documentation

eStream ciphers LEX, Trivium, CryptMT not working

LEX: compiles ok, seems to run on Ubuntu/GCC but does not on Win7/MinGW
Trivium: compiles ok, does not run on either Ubuntu or Win7
CryptMT: supposed not to work, seems ok on Ubuntu/GCC configuration

variable genome size

Genome size will not be a constant, will be dynamically counted according to circuit properties (won't be loaded via config.xml)

main program cycle documentation

create picture representing the main program cycle

  • when are test vectors generated
  • when are things reseeded
  • when is state and population saved
  • ...

galib eval in generation 0

evaluation in generation 0 are sometimes slightly different (although all subsequent generation are exactly the same)

try: random seed 20 + 20 vs. fixed seed 40

vectors file separator

make better separator between header and data in test vector file (better solution for cr lf)

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.