https://github.com/cipherboy/hash_framework
Framework for studying cryptographic hash functions using SAT.
https://github.com/cipherboy/hash_framework
cryptographic-hash-functions cryptography distributed-computing md4 md5 sat satisfiability sha3 siphash
Last synced: 10 months ago
JSON representation
Framework for studying cryptographic hash functions using SAT.
- Host: GitHub
- URL: https://github.com/cipherboy/hash_framework
- Owner: cipherboy
- License: gpl-3.0
- Created: 2017-11-10T15:26:04.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-12-21T02:10:18.000Z (about 4 years ago)
- Last Synced: 2025-04-18T10:23:37.453Z (10 months ago)
- Topics: cryptographic-hash-functions, cryptography, distributed-computing, md4, md5, sat, satisfiability, sha3, siphash
- Language: Python
- Homepage:
- Size: 923 KB
- Stars: 10
- Watchers: 5
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# hash_framework
## Overview
`hash_framework` is a framework for studying cryptographic hash functions via
[SAT](https://en.wikipedia.org/wiki/Boolean_satisfiability_problem). Its
focus is in developing metrics for analyzing collisions and studying and
improving new attacks.
_This framework is under heavy development and is not yet stable and thus
has no guarantees about working in the future._
## Requirements
- Python3
- Flask
- Gunicorn
- sqlite3
- [CryptoMiniSat5](https://github.com/msoos/cryptominisat)
- [bc2cnf](https://users.ics.aalto.fi/tjunttil/circuits/)
## Installation
This repository is meant to be run from master. Simply clone the repository
and update the configuration in `hash_framework/config.py` to point to the
required tools.
To run a worker, validate the configuration and run `start_workers.sh` from
the base of the repository. See examples in `runs` for distributing jobs.
## Existing kernels
- ASCII Search
- Family Search
- Minimal Differential Path Search
- Multicollision Search
- Neighborhood Search
- Ones
- Zeros
## TODO
- Finish building database abstraction
- Build manager API for remote clients
- Build remote client library
- Build worker with remote client library
- Build local client library
- Add efficient insertion to client library for large batch job insertion
- Base it on generator / callback?
- Update kernel
## Contributing
`hash_framework` is licensed under the GLPv3. Contributions are welcome; please
fork and open a pull request. No guarantees made about timeliness in response;
please be patient.
Most welcome are new attacks (in the form of kernels) and implementations
of other hash functions. Also welcome is compute resources for ongoing
research.
## Research
This project is part of ongoing research at Iowa State University. As papers
are published using this framework, please refer to this repository.