Using Neural Network Chains to Launch a Preimage Attack on Reduced-Round SHA-1
Lay Description
A cryptographic hash is an algorithm that takes in a variable-length input, called the preimage, and returns a fixed-length output, called the ciphertext. What makes them cryptographic, however, is the property that the preimage is very difficult to deduce from the ciphertext. These algorithms are used to securely encrypt information, a critical service in this increasingly digital world. Hence, it is essential to find the weaknesses in these algorithms in order to improve them, which is the responsibility of a field called cryptanalysis. The purpose of this project was to explore a potential strategy to harness the rapidly-advancing field of machine learning in furthering cryptanalytic techniques. In particular, I aimed to break the hash SHA-1 into its parts, reverse each part using a neural network (one fundamental machine learning algorithm), and chain these together to effectively reverse the algorithm. This would allow me to find the preimage, so the entire process is a type of preimage attack. However, this was unsuccessful because of the information loss fundamental to the algorithm itself. Nevertheless, this project still served to expand the general knowledge around what works in the area of preimage attacks with neural networks.
Grant Proposal
Pictures
All code can be found here.
Picture of Python code for training neural network Picture of Java code implementing SHA-1 hash Picture of Python code for fuzzy SHA-1 data
Project Notes