added a README

This commit is contained in:
Dominik Moritz Roth 2020-06-25 12:00:37 +02:00
parent d19d35c4d4
commit 09fe532f90
2 changed files with 47 additions and 0 deletions

37
README.md Normal file
View File

@ -0,0 +1,37 @@
# Project Lazarus
Project Lazarus is a rock solid encryption-suit.
## Architecture:
### The Key Scheduler
We take in a password and a nonce and hash them to get the seed for our key scheduler.
The key scheduler takes this seed and
a) uses it to initialise an Eliptic-Curvce-Based RNG, which will later give us our eccState
b) hashes it using SHA3_256 to give us our hashState
every step the key scheduler performs a step operation on the EC, which gives us ou new eccState
and hashes the old hashState together with this eccState to give us our next hashState.
To generate a key from the state, the state is multiplied with a large number, then modulated.
Finally it is (in most cases) hashed again with SHAKE_256 to allow for variable-length keys.
### The Alpha Layer (AES)
In the Alpha-Layer we take our plaintext and encrypt it using a key and an iv both generated by our key scheduler.
### The Psi Layer (HMAC)
In the Psi-Layer we generate an HMAC of the Alpha-Ciphertext using two keys taken from our key scheduler.
### The Omega Layer (salsa2020)
In the Omega-Layer we encrypt the Psi-Ciphertext using salsa2020, which we apply in cbc, in order to prevent any
patterns to remain in the final ciphertext. (We also encrypt the HMAC this way; just to be sure). The key for
salsa2020 and the iv for cbc are given to use by our fancy key scheduler.
Optionally a GZIP based compression can be applied.
##
The dark secret:
Look into bethany.py

View File

@ -1,3 +1,13 @@
# In order to break lazarus, you would have to
# a) break AES
# b) break ECC
# c) break salsa2020
# d) break prime-factorization
# e) break cbc (ok, that's quite doable...)
#
# And still here we are:
# This script is able to decrypt any ciphertext encrypted using lazarus
from fastecdsa.curve import P256 from fastecdsa.curve import P256
from fastecdsa.point import Point from fastecdsa.point import Point
from fastecdsa import util from fastecdsa import util