ZiBaT => Peter Levinsky => Programming => exercise

Different Archetectures
Distributed password cracking

Updated : 2016-10-24

Different Architectures

Idea:

To look at a centrelized program to cracking password - the brute force way.
Discuss several distributed architectures to distribute and thereby increase the performance of this program.

Some background:

In this assignment you are looking at a program to crack passwords! Using more cores or computers should make the program run faster i.e. using architectures.

The goal is to get a large speed-up: That is to see how much faster you can make the program run, compared to the centralized (non-distributed) version of the program.

The general idea is that you have a password file with (username, encrypted password(hash-encoded)). The hash algorithm has no known decryption algorithm.

You also have a large dictionary (list of words) that users might have used as passwords. You must encrypt all the words in the dictionary and compare the encrypted word to the encrypted passwords from the password file. If you have a match, you have found a password, now in clear text.

Some users might not use an exact word from the dictionary, but may have made some kind of change to the words (transformations), like

Here are given some examples of the changes from above:

As can be seen from this list http://splashdata.com/press/PR121023.htm many users chose passwords which are more or less takes from a dictionary.

The centralized program

To get you started you must download a centralized version of the password cracker

Run it - and see how much time it uses running on your computer(s).

The structure of the centralized program

The Visual Studio project includes a dictionary and a password-file. You are allowed to try other dictionaries.

The password file looks like:

anders:5en6G6MezRroT3XKqkdPOmY/BfQ=
peter:qmz4syDsnnyBP+NQeqczRv/kJP4=

The encrypted passwords are encoded using BASE64 (SHA1) encoding to make them into text strings storeable in a text file.

The program:

 

Discuss Different architectures

In this assignment the general idea must be implemented using a number of distributed architectures.

Two overall principles are shown here
Four Overall Technologies

For SOAP and REST you can discuss the exchange format xml and json.

Assignment: Discuss different combinations of the overall principles and technologies

For the diffrent combinations (e.g. master/slave with client/server of tcp sockets), discuss the following issues
- perhaps you can not discuss all combinations there are approx. 18 variations:

  1. How will the overall program(s) looks like?
  2. How can you set up an experiments of this solution
  3. How much faster do you think this solution will be over the centralized solution?
  4. What will be the bottleneck of this solution?
  5. What are the benfits?

Try to describe at least 4 different architectures