Distributed Systems 2008/2009 Final Project Description 2008-12-10 12:00 added information about team size 2008-12-09 23:00 some wordings clarified; added deadline information 2008-12-09 17:00 first version The purpose of this project is to write a distributed MD5 cracker. Given a MD5 hash value the software should be able to find the key (alphanumeric) using a simple brute-force approach. The software should, however, be able to take advantage of multiple, networked computers to distribute the compute load. The software should be written in Java. You may choose to implement the network comunication using one of Java RMI, TCP sockets or HTTP (using the appropriate Java API). Minimum requirements are: - computer A is given the MD5 hash value and the maximum key length - N other computers connect to computer A, request part of the work (for example the brute-forcing of all keys starting with the given 2 characters) and push the result back to computer A. The result is the key found or the information that the key was not within the searched space. The comunication should follow a simple text-based protocol (when using sockets or HTTP) or method signatures (when using Java RMI). Designing an appropriate protocol or method signature is an important part of your task. - as soon as the key is found or after all other computer finish searching without success, computer A outputs the result to the user Your project submission will be graded by additional features. Recommended features are: - computer A is not special: all computers use a leader election scheme to decide which computer will take the master role (distributing the work and collecting the results) - robustness: make all parts of the system fail-proof (i.e. deal with network time-outs; make work packages available again if the client does not call back, etc...) - liar detection: device a scheme to deal with clients that poison the network by accepting work without actually performing the brute-forcing (this way a key might not be discovered) - your own ideas Your project submission must include: - the source code of the software - a short description (in ASCII text format) of the software Be prepared to be able to answer questions about the source code (i.e. all group members must know all parts of the code). Team size. The default team size is two. Single person teams are acceptable. If you feel you absolutely need to be more than two persons in a team, please ask and explain why you want to be a larger team. Deadline. If you wish to do the Distributed Systems exam on February 11th, 2009, the deadline for project submission is February 2nd, 2009. Please send files via email to both, chris@1006.org and nutt@inf.unibz.it before that date.