• Home
  • Research
  • Blogs
  • Contact Us
  • Random Numbers
  • TMTO Methodology
  • Search Databases


  • TMTO Methodology
  • What is Time-Memory Trade Off (TMTO)? Realistically, TMTO can be defined as a Trade Off; As an exchange of one thing for another. Time to Memory Trade Off: The exchange of Time for Memory. In order to reduce the amount of time to complete a set task, we exchange physical memory. In laymans thoughts, memory is hard drive space. We willingly trade hard drive space so that a set task can be completed in less time.

    Now, we must step back and take a look at what areas TMTO can be applied. TMTO is applied to many places. Take a look at the area of databases. Databases are a clear example of trading hard drive space for speed. Then we can take it step further and say that indexing within the are of database is an even better example of TMTO. We can store terabytes of data within a database, but without the speed improvement of an index, there is very little difference between the database and just searching flat-files with a grep. A database with an index will allow you to search millions of lines in very little time because the index uses hard drive space. Which, in essence is a Time-Memory Trade Off. Websites that are database driven are dynamic and fast. You can load the information into an indexed database and dynamic content can be loaded almost as fast, if not faster, than static SHTML files.

    Now take TMTO and apply it to tasks other than their common uses, like driving applications that record keep or a website that every aspect can be updated on the fly and loads quickly. Take TMTO an apply it to password cracking.

    Password cracking is done a few different ways. Usually, when you want to break a password you must have the encrypted version and then attempt to break it by finding the key. With passwords a different method of encryption is often utilized. Hashing algorithms allow passwords to be encrypted in a manner in which they cannot simply be unlocked with a key, they are a one way algorithms. The password is encrypted and the resulting product cannot be reversed back to the original key. In order to know the password a user must know the password and encrypt it, then compare the resulting hash with the original hash. If they match, then you grant access or decrypt the rest of the information.

    With that in mind, how then can TMTO be applied to password cracking? How then, can TMTO be applied specifically to password cracking where a hashing aglorithm has been used to encrypt to password? Lets start with the most basic form of cracking a hashed password. Guess. You can guess over and over until you arrive at the correct password. This is just unfeasible, because imagine how long it would take to break a complex password. You may guess a million times, but never guess correctly.

    The forementioned scenario of guessing was clearly not an efficient manner of cracking passwords. Now as technology progressed, CPUs quickly began outpacing the typing speeds of humanity. You could type 100 words per minute, and after an hour have guessed only 6,000 passwords or you could automate the process and allow the CPU to guess for you. The CPU can automatically generate strings and hash them, and compare the result to the original. This gives you the ability to automatically guess as fast as the CPU can process. This not only increases your guessing ability thousand fold, but as CPUs increase in speed and go multi-core your guessing ability increases million fold. Then add in a parallel clustering mechanism such as MPICH2. This allow you to process guessing across a multi-core CPU, but even multiple multi-core CPUs and even multiple multi-core CPUs over multiple PCs. If you code an application that can guess 1,000 strings per minute per CPU, then with a dual-core CPU you can paralellize the application and it can then theoretically guess 2,000 strings per minute. Now on a quad-core CPU the same application can throttle through 4,000 strings per minute. And finally, on a 100 node cluster each with dual quad-core (8 Cores) CPUs, you can process 8,000 strings per minute per node totaling 80,0000 string per minute. Paralellization has allowed application developers to overcome a massive speed bottleneck. With many cores of a single CPU available for processing, a developer can push threads over many cores and arrive at the desired result exponentially faster.

    After some time, this automated guessing process was dubbed "Bruteforce". Bruteforcing became the latest and the greatest method of breaking passwords. Huge untertakings went into coding applications to streamline to code and make bruteforcing applications as fast as possible. This was good, but in reality the keyspace was just too big and bruteforcing was just too slow. Let me explain by saying that it may only take 30 seconds to break a four character password, comparitively it may take 30 years to break a 10 character password. Bruteforcing is simply not fast enough. Even on a clustered environment, with hundreds of nodes - all multi-core - it would take years to break a 30 character password.

    Years go by, multi-core CPUs become mainstream, open source MPI software and paralellization become mainstream, shared storage mechanisms such as ATA over Ethernet become readily available and kernel integrated. All of the technology that the 1984 technology gurus dreamed of, are now readily available. Storage capabilities are through the roof and cheaper than your mom at a brothel. One terabyte hard drives fall from $600 to $500 to $425, and faster transfer protocols such as SATA are created. Now, one thing that you must realize is the TMTO is not a new concept at all. TMTO has been around since the 1980's and many of the things we are accomplishing today we conceptualize decades ago. Why weren't these wonderful concepts of TMTO applied back then? Ironically, the reason is because of technology. Technology was simply not up to the task of storing terabytes of information for a reasonable price. Technology was simply not up to speed with the concepts. Even today, technology is not up to par with my concepts. I want to be able to use a minority report style computer. Completely gesture driven and just plain bad ass. Using a monitor that looks more like a massive sheet of glass than a monitor. The ability to visually see the transfer of files, like when Tom Cruise moves video feeds off his assistants PC to his main PC. Sliding the glass-like storage mechanism into the slot, drag the files over to it, and then insert into another PC and simply drag off. All the while the files can be seen on the glass-like storage mechanism. Gone are the days of putting CD into a drive to see what is on it.

    Stand still for a moment and reflect on our era. Technology in some respects has greatly matured and is moving at an ever increasing pace. Hard drive sizes went from 1Gb to 10Gb to 100Gb to 1Tb, and so forth. Now, a few people have rendered the TMTO concepts of decades past and realized that they are almost fully implementable in our era.

    Now that I've laid a good groundwork, let us get into what TMTO when applied to password cracking really is. Bruteforcing was the most successful and fastest method of breaking a password. But, for each password the computation would have to start over. You could spend five years of CPU time breaking a 10 character password, and then have to start over and spend another five years of CPU time breaking a second 10 character password. 10 years to break two password. The passwords have long expired and have likely been changed by the time you break them. What a waste of time. If you could break an 8 character password in a few weeks, that would be more realistic. Now imagine being able to break an 8 character password in under a second. TMTO[dot]ORG can do it.


Last Modified: Sunday, 20-Jul-2008 17:14:10 PDT