Cryptography
I created this page so that I can share what I'm learning in my latest pursuit: cryptography. I am particularly interested in the cryptanalysis end of it. I am slowly expanding my understanding of this artform, but it does have a pretty steep learning curve. I think that my background in both programming and security will greatly help. I will attempt to use as standard as notation as possible, but I am self-taught so I'm sure that the language will not be perfect. I plan to start the entries here (from the bottom) at a basic level and then work up to more advanced stuff. In this way, newcomers will hopefully be able to follow along as I progress (and hopefully they do as well). I am still a beginner at this and would appreciate any corrections or advice.
Crypto Basics
Learn about the very basics of cryptography. What does encryption mean? How are ciphers categorized? What uses does
crypto have other than scrambling messages? How can you sign a letter without a pen? I attempt to answer these sorts of questions on this
page. It is really for the beginners but it'd be cool if the experienced folks checked out gave me tips on how to improve it.
Block Ciphers
Discussed on this page are some of the elements used in the design of block ciphers. Also we examine two structures to combine these
elements into a full algorithm. Much of the vocabulary that will be used in later pages is explained here. Learn about s-boxes, key schedules,
linear mixing, and feistel ciphers and let me know what you think.
Cryptanalysis 101
Here we have a relatively non-technical overview of what cryptanalysis is. Known-plaintext attacks, frequency analysis, linear and differential
attacks, and more is discussed.
A Linear Attack on Reduced-round RC5
This one is quite a bit more advanced than the other pages listed here. I wanted to explain an attack I discovered for RC5. It is still very
young and I would appreciate any help or criticism you all have.
Linear Cryptanalysis Tutorial
After banging my head on the desk for 2 weeks, I finally found the bug in my LC code. On this page, I've explained as simply as I can how
a barebones linear attack would work on a 2-round 4-bit block cipher. We'll explore finding linear approximations, what the hell a linear
approximation is, and how to leverage them to break the cipher with less computational work than brute force. I haven't seen another page on
the net that walks the reader through the process and provides source code to play with. If you know of a page/paper about linear cryptanalysis
that doesn't require a math degree to understand, please let me know. In the meantime, enjoy this tutorial and, as always, let me know what you
think.
Differential Cryptanalysis Tutorial
Here's another modern statistical attack applied to block ciphers. We'll use the classic differential attack to break a simple toy cipher and
recover the key in less than brute force time. We'll also explore how to find good differentials and use them to reduce the keyspace to be searched.
Enjoy and tell me your thoughts.
Multi-Round Differential Cryptanalysis
I had so much fun learning about DC while writing the last tutorial, I went a bit further with it here. The cipher attacked on this page is
quite a bit beefier. With a block size of 8 bits, 4 rounds, a P-Box, and a 32 bit key; its a hefty target. We'll chain several differential
characteristics together and find a chosen plaintext/ciphertext pair that satisfies this path. Next, we'll use the good pair and our path to
make assumptions about the hidden intermediate values in the cipher. These assumptions allow us to recover the key in far less time than
exhaustive search.