Crypto Laboratory Winter Alexander Grechin and Zohar Rogel Under supervision of Zvika Berkovich
Development technology C# language (VS 2005) and Microsoft.NET framework 2.0 C# language (VS 2005) and Microsoft.NET framework 2.0 Reflection technology Reflection technology Built-in graphics features Built-in graphics features Simple GUI generation Simple GUI generation
Purchased knowledge We ’ ve learned about some known ciphers and their history We ’ ve learned about some known ciphers and their history Experienced in application development from the beginning to the end Experienced in application development from the beginning to the end Learned additional skills in C# programming language Learned additional skills in C# programming language We ’ ve learned more about built-in abilities of C# such as drag-drop feature and visual manipulation of simple graphics We ’ ve learned more about built-in abilities of C# such as drag-drop feature and visual manipulation of simple graphics
Introduction The purpose of this project is to create the demonstration program which allows: Encrypt and decrypt English texts Break encrypted English texts Build and execute strategy – a sequence of operations Operation may be encryption, decryption or cracking of some message with specific cipher and parameters
Introduction The program contains a set of ciphers 4 ciphers User can add his own ciphers User builds class that implements a defined interface Received dll file copied to work directory
Introduction There are two logical parts in the project: Build framework program that will supply the user a convenient way to work with ciphers Develop several ciphers and attach them to the framework program
Framework application Allows the user to work with ciphers There are two ways to use the application: Working using graphic interface – GUI application Working in command line – Console application In both cases the single core is used
GUI Application Allows the user to: Input and output texts Get log messages Execute single operation Build and execute strategy Examples
Console Application Allows the user building and execution of strategies only
Combined working scenario User builds strategy in GUI application GUI application translates the strategy to the format of Console application GUI application calls for command line User continues working in command line Example
Core module Serves both applications GUI application Console application
Module diagram
Cipher attaching Each cipher implemented as independent module and implements ICipher interface Core module looking for these modules in current directory Using Reflection mechanism the Core instantiates the ciphers Ciphers pointed through ICipher interface
Ciphers Some simple ciphers were chosen: Shift cipher (Julius Caesar cipher) Transposition cipher (Rail fence cipher) Simple Substitution cipher Poly-alphabetic cipher (Vigenère cipher)
Julius Caesar cipher Each letter in the plaintext is replaced by a letter at some fixed number of positions down the alphabet Each letter in the plaintext is replaced by a letter at some fixed number of positions down the alphabet For example, with a shift of 3: For example, with a shift of 3: A -> D A -> D B -> E B -> E
Rail fence cipher The plaintext is written downwards on successive "rails" of an imaginary fence, then moving up when we get to the bottom. The message is then read off in rows. The plaintext is written downwards on successive "rails" of an imaginary fence, then moving up when we get to the bottom. The message is then read off in rows.
Rail fence cipher - example Plaintext: transposition Plaintext: transposition Number of “ rails ” = 3 Number of “ rails ” = 3 T S I N R N P S T O R N P S T O A O I A O I Cipher text: TSIN RNPSTO AOI Cipher text: TSIN RNPSTO AOI
Substitution cipher Substitution cipher Each letter in the plaintext is replaced by a letter in the substituted alphabet Each letter in the plaintext is replaced by a letter in the substituted alphabet Creating substituted alphabet: writing out a keyword, removing repeated letters Creating substituted alphabet: writing out a keyword, removing repeated letters Writing all the remaining letters in the alphabet Writing all the remaining letters in the alphabet The plaintext is encrypted using the substituted alphabet The plaintext is encrypted using the substituted alphabet
Substitution cipher - example Substitution cipher - example Keyword: “zebras” Keyword: “zebras” Plaintext alphabet / Ciphertext alphabet : Plaintext alphabet / Ciphertext alphabet : abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz ZEBRASCDFGHIJKLMNOPQTUVWXY ZEBRASCDFGHIJKLMNOPQTUVWXY Message: Message: flee at once. we are discovered! flee at once. we are discovered! Encrypted message: Encrypted message: SIAA ZQ LKBA. VA ZOA RFPBLUAOAR! SIAA ZQ LKBA. VA ZOA RFPBLUAOAR!
Vigenère cipher Vigenère cipher Consists of several Caesar ciphers in sequence with different shift values Consists of several Caesar ciphers in sequence with different shift values Creating substituted alphabet: using a Vigenère table – alphabet written out in 26 rows, each alphabet is shifted to the left by one letter Creating substituted alphabet: using a Vigenère table – alphabet written out in 26 rows, each alphabet is shifted to the left by one letter Writing out a keyword in a cyclic way, opposite to plaintext Writing out a keyword in a cyclic way, opposite to plaintext Each letter is substituted according to the keyword and the table Each letter is substituted according to the keyword and the table
Vigenère cipher - example Vigenère cipher - example Using Vigenère table (see below) and a keyword: Using Vigenère table (see below) and a keyword: Plaintext: attackatdawn Plaintext: attackatdawn Keyword: LEMONLEMONLE Keyword: LEMONLEMONLE Ciphertext: LXFOPVEFRNHR Ciphertext: LXFOPVEFRNHR
Summary Summary This project allowed us to purchase knowledge about: This project allowed us to purchase knowledge about: Some ciphers encryption and decryption algorithms Some ciphers encryption and decryption algorithms Some ciphers auto-crack algorithms Some ciphers auto-crack algorithms Working with C# and.NET environment using VS 2005 Working with C# and.NET environment using VS 2005 Stages of application development Stages of application development