350 likes | 512 Views
Cryptography Programming Lab. Mike Scott. Why Cryptography?. Astrachan’s Law: “Do not give an assignment that computes something that is more easily figured out without a computer. ... Show off the power of computation.” Secrets are interesting Practical applications
E N D
Cryptography Programming Lab Mike Scott
Why Cryptography? • Astrachan’s Law: • “Do not give an assignment that computes something that is more easily figured out without a computer. ... Show off the power of computation.” • Secrets are interesting • Practical applications • Is it safe to use my credit card to purchase something via a website? • Fascinating history • Mary Queen of Scots, Alan Turing • Application of mathematics and programming
Plan for today • Look at four different ciphers • Complete program involving each • Caesar • Columnar • Random Substitution • Vigenère
Definitions • Cryptography • The art and study of hiding information • Cipher • Algorithm for performing encryption and decryption • Encryption • Converting plain text (or information) to unintelligible text (aka cipher text) that cannot be understood without knowing how the information was converted • Decryption • recovering the original plain text from the cipher text
Caesar Cipher • Named after Julius Caesar • Also called the shift cipher • Example of a substitution cipher • Each letter (or character) is replaced by another letter in the alphabet
Caesar cipher Example with a shift of 5 ABCDEFGHIJKLMNOPQRSTUVWXYZ Plain FGHIJKLMNOPQRSTUVWXYZABCDE Encrypted COMPUTER SCIENCE Plain HTRUZYJWXHNJSHJ Encrypted Assume all non letters removed.
Variations • Using computer could simply apply shift to all characters, not just upper case letters • Printable ASCII characters space to ~ (32 – 126) • Maintain or remove non letters? • lower case to upper case?
Breaking Caesar Cipher • Brute force • With only letters try all 25 possibilities • Still not hard if all ASCII
Caesar Programming Problem • Log in • Go to http://userweb.cs.utexas.edu/~scottm/ • Click on link to Crypto Resources at bottom of page • Download Caesar.java to desktop • Start Eclipse (or other IDE if you prefer) • Create project • Add file • Complete method printAllShifts(String msg)
Columnar Cipher • Example of a Transposition cipher • The characters from the original message are used, but put in a different order, based on the cipher Hook ‘em Horns! We bleed orange! Plain • Pick a number of rows for the cipher • Fill in the grid in column major order
Columnar Encryption Hook ‘em Horns! We bleed orange! • Read off rows to create message H’oloeoerWer!omneeak s dnH!b g
Columnar Programming Problem • Download Columnar.java • Complete the method printColumnar(String clear, int rows)
Random Substitution Cipher • How strong is the Caesar cipher? • Pick a secret word with no repeat letters, computery ABCDEFGHIJKLMNOPQRSTUVWXYZ Plain COMPUTERYABDFGHIJKLNQSVWXZ Encrypted
Example ABCDEFGHIJKLMNOPQRSTUVWXYZ Plain COMPUTERYABDFGHIJKLNQSVWXZ Encrypted THE ANSWER FOR NUMBER THREE IS A THEANSWERTONUMBERTHREEISA Plain NRUCGLVUKNHGQFOUKNRKUUYLC Encrypted
Random Substitution Ciphers • Instead of picking a keyword randomly pick letters • Must share the whole key, but lots of possibilities • 26! possible keys = 4.03291461 × 1026 • Assume we could check a billion keys a second • It would take 1.27882883 × 1010 years to check them all. • About the age of the universe
But ... • But substitution ciphers turn out to be relatively easy to solve • Why?
Cracking the Substitution Cipher • Given an encrypted message count how often each character occurs • If only letters, assume most frequent letter is e, next most frequent is t, next most frequent is a, and so forth • Apply the potential key • Look for clear words • Alter key as appropriate
Substitution Programming Problem • With a computer a key can easily be created that uses all printable characters not just the letters. • Download DecryptSub.java • Complete the methodint[] createFreqTable(String encrypted) • The method returns an array of length 128. All ASCII chars are counted. • The index of the array maps to the ASCII value of the char
Substitution Programming Problem • When run the program: • converts a hard coded file (which I have encrypted with a randomly generated substitution key) to a String • creates a frequency table (using your method) • creates an initial key based on the frequency table and the “normal” frequency of printable ASCII chars • applies the initial key to the encrypted message and displays it • prompts for change in key, applies it and displays new decrypted message (A bit of an art)
Vigenère Cipher • Named after Blaise de Vigenère • “The Unbreakable Cipher” • A poly-alphabetic substitution cipher • Each letter in the plain text can encrypt to multiple letters
Vigenère Cipher • All 26 Caesar Ciphers • Pick a secret word • Repeat secret word over the plain text • The secret word letter gives the row, the plain text gives the column • The letter at the intersection is the cipher text
Vigenère Cipher Example Secret word: TEXAS Plain text: MEET AT THE TOWER TEXASTEXASTEXA MEETATTHETOWER 1st letter, row T, column M -> F 2nd letter, row E, column E -> I 3rd letter, row X, column E -> B FIBTSMXEELHABR
Frequencies In Cipher text Longer Secret Words with more of the letters flattens it more!
Breaking the Vigenère Cipher • Given a long enough sample of cipher text it is possible to break the Vigenère cipher • Assume the secret word is TEXAS which has a length of 5. • Notice then there are 5 ways to encode the plain text word “the” • Some words show up a lot in regular language • So let’s look for 3 letter sequences that are repeated in a cipher text
Cipher Text • BLXDLAMPSLHVVFJHQLNWPLLHSWRLBMLMKEKLXLTWEPFTLHQBOJMSXNQHXEEJBQXYUKIAILMLBSWWYZTAOIFNXEYBNUXSCAFHPAVAGXXGWNTLNLAIKAJKEQOJYSOTZXFBGAGRFNYHJFTSGHJYGPRPKWIXFCSEMKCJXHRLAMCAUJBRDTZXHXYKMLXTXHPIOOXHCOJMLBBSEEKCWHJQHWLXOAFZIQADXAEEFFCZOFOMSISELLSLWMPCGOIOEVMLXTZXLXDLHPAMWLSJUUAEKDLAEQIOTWMRGGIQOVHYYTXNPKEKL
3 Letter Repeated Sequences DLA [270] EKL [265] HPA [165] KEK [265] LAM [159] LXD [255] LXT [70] MLB [125] MLX [70] OJM [145] TZX [50, 130, 80] XDL [255] Numbers are distances between the repeated 3 letter sequence
Using Repeated Sequences • Some repeated sequences will just be random. • But, some will be due to the same word being encoded with the same parts of the secret word! • If this is the case the secret word is a factor of the distance between the repeated sequences
Factors of Distances DLA: [2, 3, 5, 6, 9, 10, 15, 18, 27, 30, 45, 54, 90, 135, 270] EKL: [5, 53, 265] HPA: [3, 5, 11, 15, 33, 55, 165] KEK: [5, 53, 265] LAM: [3, 53, 159] LXD: [3, 5, 15, 15, 17, 51, 85, 255] LXT: [2, 5, 7, 10, 14, 35, 70] MLB: [5, 25, 125] MLX: [2, 5, 7, 10, 14, 35, 70] OJM: [5, 29, 145] TZX: [2, 5, 10, 25, 50] TZX: [2, 5, 10, 13, 26, 65, 130] TZX: [2, 4, 5, 8, 8, 10, 16, 20, 40, 80] XDL: [3, 5, 15, 15, 17, 51, 85, 255]
Frequency of Factors 2 - 6 3 - 5 4 - 1 5 - 13 6 - 1 7 - 2 8 - 2 9 - 1 10 - 6 11 - 1 13 - 1 14 - 2 15 - 6 16 - 1 17 - 2 18 - 1 20 - 1 25 - 2 26 - 1 27 - 1 29 - 1 30 - 1 33 - 1 35 - 2 40 - 1 45 - 1 50 - 1 51 - 2 53 - 3 54 - 1 55 - 1 65 - 1 70 - 2 80 - 1 85 - 2 90 - 1 125 - 1 130 - 1 135 - 1 145 - 1 159 - 1 165 - 1 255 - 2 265 - 2 270 - 1
Secret Code Word • Strong evidence the code word is length 5 • So start with first character and do frequency analysis on every 5th character. Will just be a simple Caesar shift • Repeat starting at second character and every 5th • 5 frequency analysis problems
Slide for Best Fit First Letter of Secret Word is V in this example
Vigenère Programming Problem • Download FindSecretWordLength.java • Complete theprintFactors(String repeatedSection, int distance)method that prints all factors of distance in order • If you finish add a method to find the most frequent factor. Feel free to change printFactors to return the factors found.