salsa2020 -> ChaCha20

This commit is contained in:
Dominik Moritz Roth 2020-06-25 12:15:49 +02:00
parent 09fe532f90
commit 96b1753ac8
2 changed files with 10 additions and 11 deletions

View File

@ -7,9 +7,9 @@ Project Lazarus is a rock solid encryption-suit.
### The Key Scheduler ### The Key Scheduler
We take in a password and a nonce and hash them to get the seed for our 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 The key scheduler takes this seed and
a) uses it to initialise an Eliptic-Curvce-Based RNG, which will later give us our eccState 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 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 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. 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. To generate a key from the state, the state is multiplied with a large number, then modulated.
@ -23,15 +23,14 @@ In the Alpha-Layer we take our plaintext and encrypt it using a key and an iv bo
In the Psi-Layer we generate an HMAC of the Alpha-Ciphertext using two keys taken from our key scheduler. In the Psi-Layer we generate an HMAC of the Alpha-Ciphertext using two keys taken from our key scheduler.
### The Omega Layer (salsa2020) ### The Omega Layer (ChaCha20)
In the Omega-Layer we encrypt the Psi-Ciphertext using salsa2020, which we apply in cbc, in order to prevent any 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 patterns to remain in the final ciphertext. (We also encrypt the HMAC this way; just to be sure). The key and iv for
salsa2020 and the iv for cbc are given to use by our fancy key scheduler. ChaCha20 and the iv for cbc are given to use by our fancy key scheduler.
Optionally a GZIP based compression can be applied. Optionally a GZIP based compression can be applied.
##
The dark secret: ## The dark secret:
Look into bethany.py Look into bethany.py

View File

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