Parallel-brute-forcer

A parallel and distributed algorithm to brute force the standard symmetric-key block cipher DES by using the Remote Method Invocation (RMI) which is an API that provides a mechanism to create distributed application in java. This is for a project in Parallel and Distributed Computing(CSE4001) under the guidance of Prof. Manoov R of SCOPE School, VIT, Vellore.
A video demonstration of the application is available here. Read the full project wiki

Made By,

  • Vishwajeetsinh Jadeja (15BIT0136)
  • Jigyasa Srivastava (15BCE2080)

DES

The Data Encryption Standard (DES) is a symmetric-key block cipher published by the National Institute of Standards and Technology (NIST). DES is an implementation of a Feistel Cipher. It uses 16 round Feistel structure. The block size is 64-bit. Though, key length is 64-bit, DES has an effective key length of 56 bits, since 8 of the 64 bits of the key are not used by the encryption algorithm (function as check bits only).

RMI

RMI stands for Remote Method Invocation. It is a mechanism that allows an object residing in one system (JVM) to access/invoke an object running on another JVM. RMI is used to build distributed applications; it provides remote communication between Java programs. It is provided in the package java.rmi.

How To Run

  1. Compile All Files
    javac *.java
  2. Create stub and skeleton using the rmic tool
    rmic DecryptorRemote
  3. Start RMI in one terminal
    rmiregistry 5000
  4. Start server in Server Node
    java RMIServer
  5. Start RMI Client in Client Node
    java RMIClient

Classes Used

Class Usage Accessed From
DES For the core DES Cipher Functionality Client and server nodes
Decryptor Abstract class illustrating functionalities of the application Client and Server
DecryptorRemote Implementation of Decryptor interface Client and Server
RMIServer Server instance providing the marshaled DecryptorRemote objects to clients Server
RMIClient Client accessing the application Client

Results and conclusion

The average time taken for the algorithm to run in Serial execution on a single node (Microsoft Windows 10, 16GB RAM) is: 10.779 seconds where as the time taken for the same code to run on two devices both the the similar configuration as above is 439 milliseconds. This huge speedup is a result that the keyspace of the Cipher (10000 integer values), was divided amongst the two nodes and they processed the data until a satisfactory response was generated. Thus, distributed computing can provide better performance.

Future Enhancements

  • Add a graphical display of metrics
  • Better distribution of keyspace based on the capacity of the nodes
  • Better analysis of the terminating condition
  • Multiple servers for distribution of marshalling load.

Built With

Share this project:

Updates