Sale!
Placeholder

An Investigation Into Breaking Cryptographically Encoded Messages Using Parallel Brute Force Methods

10,000 3,000

Topic Description

Summary
This project set out to produce an educational tool to demonstrate the means and practice of
breaking cryptographically encoded messages using brute force methods using parallel processing
techniques, and is aimed at degree level students.

Contents
1 Introduction 1
1.1 Aim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Minimum Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Analysis 3
2.1 Foundations of Cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 Symmetric Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 Public-Key Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.3 Attacking A Symmetric Cryptosystem . . . . . . . . . . . . . . . . . . . . 4
2.2 Ensuring The Demonstrator Is Relevant To Learning . . . . . . . . . . . . . . . . 6
2.3 Which Algorithms to Implement . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1 How Each Algorithm Works . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1.1 RC5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.1.2 Blowfish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4 Development Tools and Technologies . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.1 Back-end Programming Language . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1.1 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1.2 Perl and Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1.3 C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1.4 Networking Tools . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1.5 Chosen Programming Language . . . . . . . . . . . . . . . . . . 12
2.4.2 Front-end Programming Language . . . . . . . . . . . . . . . . . . . . . . 12
2.4.2.1 GUI APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.2.2 Java Swing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.2.3 Chosen Programming Language . . . . . . . . . . . . . . . . . . 12
3 Design 13
3.1 Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Network Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
iii
3.2.1 Static Task Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.2 Dynamic Task Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.3 Socket Communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.4 Back-end Communications Protocol . . . . . . . . . . . . . . . . . . . . . 17
3.3 Software Development Methodologies . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 Implementation 20
4.1 Cipher Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.1 Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.2 Module Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2 Integrating MPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2.1 MPI Master Implementation . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2.2 MPI Slave Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2.3 Module Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 Completing Back-end Implementation . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3.1 Class Structure Improvements . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4 Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.5 Socket Communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.5.1 Java Socket Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.5.2 C++ Socket Implementation . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.6 Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5 Evaluation 34
5.1 Meeting Minimum Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6 Future Development 36
6.1 Improve Key Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.2 Implement Extra Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.3 Selectively Choosing Class of Processors . . . . . . . . . . . . . . . . . . . . . . . 37
6.4 Webpage Embedding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.5 Network Testing Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Bibliography 39
Appendix A 40
Appendix B – Glossary 43

GET COMPLETE PROJECT