Reference no: EM132848668
UFCFFL-15-M Parallel Computing - University of the West of England
Logbook and Demonstration of Final Product
Task Specification
This section introduces the details of the problem chosen for implementing parallel algorithms as part of this assessment point. The chosen problem is how to find the most efficient way to determine the key to encrypt and decrypt textual messages passed across communication lines.
An encryption/decryption process takes a plaintext and a key expression converts into an encrypted text, which is also called as ciphertext. The process is sketched in the following diagram.
Advanced Encryption Standard (AES) is known to be one of the-state-of-the-art encryption/decryption method used by many prestigious companies e.g. NSA, Microsoft and Apple, which uses a symmetric key generating approach to achieve very highly secured messaging and access across the networks. More details on how it works can be found in the literature including the attached link;
There are a number of tools developed to work out security operations including encryption/decryption procedures. OpenSSL is an open source library created for security operations for this purpose. It is developed in C programming language and interfaced with various other programming languages too. This library uses SSL and TSL protocols and includes a number of cryptographic functions. The following two links provide further details on use of OpenSSL and the ways how to incorporate with self-developed C programs for encryption/decryption purposes.
Brute-force attack is one of cipher cracking attacks, which uses an exhaustive search to find the key to crack the message encrypted. Brute force search is a global search approach relies on trial-and-error operations, where an input set is assumed and tested whether or not it produces the targeted output. There are a number of well-known brute-force search algorithms used and well-evaluated with respect to a number of performance measures including complexity. (1) Generate and test, (2) Breath-First, and (3) Depth-first search algorithms are three of these well- known Brute-force (exhaustive) search algorithms. Further details can be found in the literature including Wikipedia.
As an ethical hacking operation, a brute-force search algorithm can be implemented incorporating with OpenSSL library, given that both a Plaintext and a Ciphertext can be provided while the secure key used in encryption can be searched for with the developed Brute-Force algorithm.
Obviously, an exhaustive search developed with any Brute-force algorithm will take very long time to find the secure key for crack of the cipher, AES this time, using a sequentially developed Brute-force algorithm. This creates a good motivation to go for parallelisation of Brute-force search algorithms. The main requirement of this assignment is to design parallel Brute-force search algorithms for finding the right secure key to crack the ciphers using both shared memory and distributed memory paradigms with OpenMP and MPI parallelisation tools, respectively.
Requirements
a. Problem set 1: OpenMP
Implement a parallelised version of Brute-force search, which behaves the same as the serial solution for cracking aes-128-cbc cipher. The implementation should use OpenMP for parallelization of the algorithm.
Your solution should be implemented using C/C++, compiled with gcc. Your final solution should include a Makefile that can be used by makers to build and test your work.
Your solution must be committed in UWE's Gitlab. It will naturally be time stamped and you must be careful to not make commits after the submission deadline.
b. Problem set 2: MPI
Implement a parallelised version of Brute-force search, which behaves the same as the serial solution for cracking aes-128-cbc cipher. The implementation should use MPI for parallelization of the algorithm.
Your solution should be implemented using C/C++, compiled with gcc. Open MPI is installed on own PCs as illustrated during the lab session, or PCs in the Q block labs. Your final solution should include a Makefile that can be used by makers to build and test your work.
Your solution must be committed in UWE's Gitlab. It will naturally be time stamped and you must be careful to not make commits after the submission deadline.
c. Problem set 3: Benchmarking and performance analysis
For this component you are expected to perform an analysis of the serial solution and compare and contrast this against your solution problem set 1 and 2.
The analysis should be reproducible and you should include instructions on how to execute the solutions, including the serial one provided, to produce the performance results. Of course, it is not expected that during testing the same performance numbers will be produced, but they should be within a reasonable margin of error.
You are free to include this in your logbook, but it does not count against the word count, and it might be easier to produce a separate document with the presentation of the performance numbers and analysis of the results.
Deliverables
a. Each problem solution, OpenMP and MPI implementations, should be committed in its own directory in UWE's Gitlab, including a README.md documenting what the program does, how to build it, and benchmark the resulting executable(s).
b. Additionally, the Git project should include a folder with documentation for your project and its solution, including the logbook, which details the performance analysis, the approach to benchmarking, and so on.
c. Logbook of 1500 - 3000 words. The logbook is for you to document your design and development process, along with a performance analysis of your solutions to Brute- Force search for cipher cracking. It is not specified what shape your logbook should take, but it should be academically rigorous, including academic references supporting any claims made, as well as to provide context, and so on. The logbook should be submitted as a word or PDF file to Blackboard. In addition, the log book should include a link to your Git project for this module.
Attachment:- Parallel Computing.rar