ZiBaT
=> Peter Levinsky
=> Programming => exercise |
Different Archetectures |
Updated : 2016-10-24
|
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.
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.
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:
In this assignment the general idea must be implemented using a number of distributed architectures.
For SOAP and REST you can discuss the exchange format xml and json.
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:
Try to describe at least 4 different architectures