Lately, I’ve been giving cryptopals (http://cryptopals.com) another shot. Spring 2016 was my first try and I had made my way to Challenge 6. Not completely happy with my progress I took a break. A long break.
Why am I doing these challenges?
Cryptopals is one of the ways I am using to expand my knowledge in the information security realm. Big take away so far, as I work my way through the challenges I am developing an appreciation for how easy something like writing your own encryption is to screw up.
As they say on the web site:
People “know” this already, but they don’t really know it in their gut, and we think the reason for that is that very few people actually know how to implement the best-known attacks.
Anyway, now I am back at it and getting ready to play with Challenge 11 after starting over from the beginning. I am using Python this time. I may do these challenges yet again to learn a new language. Not sure which.
Compared to last year this time through is going much smoother. The math and related logic was straightforward for me conceptually or implementing the first time. My biggest stumbling block was getting confused by what Python modules to use to work with the text data and what they were doing. It was pretty bad.
Going back and forth between Base64, Hex, and ASCII in Python ended up being a mess the way I was going about things. I don’t even want to remember how convoluted my code was at the time. With a little clarity of thought, really don’t know what I was smoking last time, using the base64 module from the Python Standard Library and bytes() method has really cleaned up the messy bits.
To see my progress: http://github.com/0xcraft/cryptopals
Why am I REALLY doing these challenges?
Patterns. As you can see from this website I am mixing some rather diverse interests. Software engineering, databases, computer troubleshooting, meditation, mystical experiences and practices, tarot cards, and more.
The world is information. Patterns of information. DNA, matter, communication, art, whatever we want to conceive in our minds or can observe is all a pattern made up of some deeper something. Something more fundamental.
Learning to break encryption, or compromise websites (I like to play on hackthissite as well), or software or who knows what is just another way to explore and learn about an observable pattern. Encrypted data is a pattern. The plain text data is the pattern under the observable pattern.