added a README
This commit is contained in:
		
							parent
							
								
									d19d35c4d4
								
							
						
					
					
						commit
						09fe532f90
					
				
							
								
								
									
										37
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								README.md
									
									
									
									
									
										Normal 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
 | 
				
			||||||
							
								
								
									
										10
									
								
								bethany.py
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								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.curve import P256
 | 
				
			||||||
from fastecdsa.point import Point
 | 
					from fastecdsa.point import Point
 | 
				
			||||||
from fastecdsa import util
 | 
					from fastecdsa import util
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user