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’o
loeoerWer!omneeak
s
dn
H!b
g
H
'
o
l
o
e
o
e
r
W
e
r
!
o
m
n
e
e
a
k
s
d
n
H
!
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
COMPUTERY
ABDFGHIJKLNQSVWXZ
Encrypted
Example
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Plain
COMPUTERY
ABDFGHIJKLNQSVWXZ
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
×
10
26
•
Assume we could check a billion keys a second
•
It would take
1.27882883
×
10
10
years to
check them all.
–
About the age of the universe
But ...
•
But substitution ciphers turn out to be
relatively easy to solve
•
Why?
Letter Frequency
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 method
int
[]
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
1
st
letter, row T, column M

> F
2
nd
letter, row E, column E

> I
3
rd
letter, row X, column E

> B
FIBTSMXEELHABR
Large
Vigenère
Example
0
2
4
6
8
10
12
14
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Actual
Expected
Frequencies In Cipher text
0
1
2
3
4
5
6
7
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
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
•
BLX
DLA
MPSLHVVFJHQLNWPLLHSWRLBMLMK
EKLXLTWEPFTLHQBOJMSXNQHXEEJBQXYUKIAI
LMLBSWWYZTAOIFNXEYBNUXSCAFHPAVAGXX
GWNTLNLAIKAJKEQOJYSOTZXFBGAGRFNYHJF
TSGHJYGPRPKWIXFCSEMKCJXHRLAMCAUJBRD
TZXHXYKMLXTXHPIOOXHCOJMLBBSEEKCWHJ
QHWLXOAFZIQADXAEEFFCZOFOMSISELLSLW
MPCGOIOEVMLXTZXLXDLHPAMWLSJUUAEK
DLA
EQIOTWMRGGIQOVHYYTXNPKEKL
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 5
th
character. Will just be a
simple Caesar shift
•
Repeat starting at second character and every
5
th
•
5 frequency analysis problems
Simon Singh
Vigenère
Cracking Tool
Slide for Best Fit
First Letter of Secret Word is V in this example
Vigenère
Programming Problem
•
Download FindSecretWordLength.java
•
Complete the
p
rintFactors
(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.
Comments 0
Log in to post a comment