diff --git a/README.md b/README.md new file mode 100644 index 0000000..3389aca --- /dev/null +++ b/README.md @@ -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 diff --git a/bethany.py b/bethany.py index f097641..90d59fa 100644 --- a/bethany.py +++ b/bethany.py @@ -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.point import Point from fastecdsa import util