Category: Ideas

Fun with MD5

Posted by – October 18, 2010

This post serves as a (hopefully soft) introduction to the MD5 cryptographic hash. It has been written to bring some of the people I work with up-to-speed on exactly how MD5 works in the hopes they will stop giving me strange looks when I talk about it.

What is MD5?

MD5 is a cryptographic hash. It has a 128-bit checksum, or resulting hash value, which is split into 4 32-bit words. It processes data in 512-bit chunks, or 64 bytes at a time.

Basically, these two properties are supposed to hold true for MD5:

    Given a hash value, it is very difficult find a message which will hash to that value.
    It is very difficult to find two messages with the same hash value. (No longer true for MD5!)

It’s also a great generic hash, and once you understand MD5 other hashing algorithms seem much less daunting.
More

Making Perfect Rainbow Tables Faster

Posted by – March 28, 2010

A Quick Background on Perfect Rainbow Tables

Rainbow tables allow us to find plaintexts to cryptographic hash algorithms quickly. They are based off of Hellman Martin’s “A Cryptanalytic Time – Memory Trade-Off“. By including the step in the reduction function, Phillipe Oechslin was able to improve on Hellman Martin’s method, and we came up with Rainbow Tables, the “Faster Cryptanalytic Time – Memory Trade-Off“.

If you are unfamiliar with rainbow tables, it is suggested you become familiar before continuing.

Even rainbow tables are not perfect. They still merge, and merges mean wasted information, wasted space, wasted time. What we really want are perfect rainbow tables. In perfect rainbow tables, each chain has a unique endpoint. We have no merges. They give us nearly the same percentage to find a plaintext as non-perfect rainbow tables, but are much smaller.
More