Professional Documents
Culture Documents
c
2017 Avinash Kak, Purdue University
Goals:
• To introduce the rudiments of the vocabulary of computer and network
security and that of encryption/decryption.
• Simple Python and Perl scripts that give you pretty good se-
curity for confidential communications. Only good for fun,
though.
CONTENTS
2
Computer and Network Security by Avi Kak Lecture 2
I’ll start this section with some basic vocabulary of encryption and
decryption, since that’s the primary focus of the beginning lectures in
this series. Subsequently, I’ll also review some of the basic vocabulary
of computer and network security more from a systems perspective.
For the systems oriented vocabulary, I’ll present the definitions in
the recently released “Android Security: 2016 Year in Review.”
3
Computer and Network Security by Avi Kak Lecture 2
of keeping the algorithms secret. First and foremost, a secret algorithm is less likely to be subject to the same
level of testing and scrutiny that a public algorithm is. And, assuming that a secret algorithm is used for all
communications within an organization, what if a disgruntled employee posted the algorithm anonymously on
WikiLeaks?]
secret key: A secret key is used to set some or all of the various parameters
used by the encryption algorithm. The important thing to note
is that, in classical cryptography, the same secret key is used
for encryption and decryption. It is for this reason that classical
cryptography is also referred to as symmetric key cryptography. On
the other hand, in the more modern cryptographic algorithms,
the encryption and decryption keys are not only different, but
also one of them is placed in the public domain. Such algorithms
are commonly referred to as asymmetric key cryptography, public key
cryptography, etc.
cryptography: The many schemes available today for encryption and de-
cryption
4
Computer and Network Security by Avi Kak Lecture 2
block cipher: A block cipher processes a block of input data at a time and
produces a ciphertext block of the same size.
stream cipher: A stream cipher encrypts data on the fly, usually one byte
at at time.
The precise methods used for cryptanalysis depend on whether the “at-
tacker” has just a piece of ciphertext, or pairs of plaintext and ciphertext,
how much structure is possessed by the plaintext, and how much of that
structure is known to the attacker.
All forms of cryptanalysis for classical encryption exploit the fact that
some aspect of the structure of plaintext may survive in the ciphertext.
key space: The total number of all possible keys that can be used in a
cryptographic system. For example, DES uses a 56-bit key. So the key
space is of size 256, which is approximately the same as 7.2 × 1016.
5
Computer and Network Security by Avi Kak Lecture 2
an attacker may be able to break the code (meaning, find the encryption key) from the recorded mappings
between the plaintext bit blocks and the ciphertext bit blocks. As a trivial example, consider an 8-bit block
cipher that scans the plaintext in blocks of 8 bits. If we can construct a codebook with mappings for all 256
different possible bit blocks, we have broken the cipher.]
6
Computer and Network Security by Avi Kak Lecture 2
264 rows in it. In some cases, by trading off memory for time, it is pos-
sible to devise more effective attacks that are sometimes referred to as
time-memory tradeoff attacks. [As a specific example of time-memory tradeoff, we may be
able to reduce the time taken by a brute-force attack if we use memory to store intermediate results obtained
from the current computational steps (assuming they can help us avoid unnecessary search later during the
computations). You will see examples of such tradeoffs in Lecture 24 when we talk about password cracking
***********
Note that the definitions provided in the Google report are meant
specifically for the Android platform, and that too for what Google
considers to be “Potentially Harmful Applications (PHA)” for that
platform. Nonetheless, I believe that these definitions apply more
or less to all mobile platforms. While mobile platforms are not the
main focus of my lecture notes (I devote just one lecture to “mobile”
7
Computer and Network Security by Avi Kak Lecture 2
— Lecture 32), except for items like “call fraud”, “toll fraud”, etc.,
a majority of the items defined below have universal applicability in
computer and network security. So here we go:
Commercial spyware apps transmit data to a party other than the PHA
provider. Legitimate forms of these apps can be used by parents to track
their children. However, these apps can be used to track a person (a
spouse, for example) without their knowledge or permission if a persistent
notification is not displayed while the data is being transmitted.
8
Computer and Network Security by Avi Kak Lecture 2
sms fraud: An application that charges users to send premium SMS with-
out consent, or tries to disguise its SMS activities by hiding disclosure
agreements or SMS messages from the mobile operator notifying the user
of charges or confirming subscription.
Some apps, even though they technically disclose SMS sending behavior
introduce additional tricky behavior that accommodates SMS fraud. Ex-
amples of this include hiding any parts of disclosure agreement from the
user, making them unreadable, conditionally suppressing SMS messages
the mobile operator sends to inform user of charges or confirm subscrip-
tion.
Toll Fraud includes any type of billing except Premium SMS and pre-
mium calls. Examples of this include: Direct Carrier Billing, WAP
(Wireless Access Point), or Mobile Airtime Transfer.
WAP fraud is one of the most prevalent types of Toll fraud. WAP fraud
can include tricking users to click a button on a silently loaded transpar-
ent WebView. Upon performing the action, a recurring subscription is
initiated, and the confirmation SMS or email is often hijacked to prevent
users from noticing the financial transaction.
9
Computer and Network Security by Avi Kak Lecture 2
Privilege escalation apps that root devices without user permission are
classified as rooting apps.
10
Computer and Network Security by Avi Kak Lecture 2
• Ransomware that locks a user out of their device and demands money
to restore user control.
• Ransomware that encrypts data on the phone and demands payment,
ostensibly to decrypt data again.
• Ransomware that leverages device policy manager features and can-
not be removed by the user.
11
Computer and Network Security by Avi Kak Lecture 2
• contact list
• call log
• SMS log
Behaviors that can be considered as spying on the user can also be flagged
as spyware. For example: recording audio or recording calls made to the
phone, stealing application data, etc.
12
Computer and Network Security by Avi Kak Lecture 2
Before leaving this section, I’d like to draw the reader’s attention to
the following website:
http://map.norsecorp.com/
for the purpose of attracting malware. Consider an attacker who wants to exploit a particular vulnerability in the
HTTPD servers for the purpose of installing his malware. The attacker, not really caring where exactly he finds such
server hosts, chooses to scan large blocks of IP addresses more or less randomly. In order to capture the attacker’s
malware, a honeypot would act exactly like the HTTPD server the attacker is hoping to find. The honeypot would
13
Computer and Network Security by Avi Kak Lecture 2
14
Computer and Network Security by Avi Kak Lecture 2
c = E(3, p) = (p + 3) mod 26
where E() stands for encryption. If you are not already familiar
with modulo division, the mod operator returns the integer re-
mainder of the division when p + 3 is divided by 26, the number
of letters in the English alphabet. We are obviously assuming
case-insensitive encoding with the Caesar cipher.
15
Computer and Network Security by Avi Kak Lecture 2
• A more general version of this cipher that allows for any degree
of shift would be expressed by
c = E(k, p) = (p + k) mod 26
p = D(k, c) = (c − k) mod 26
16
Computer and Network Security by Avi Kak Lecture 2
17
Computer and Network Security by Avi Kak Lecture 2
• If you did not know anything about the underlying plaintext and
it was encrypted by a Base64 sort of an algorithm, it might not
be as trivial a cryptographic system as it might seem. But, of
course, if the word ever got out that your plaintext was in Swahili,
you’d be hosed.
18
Computer and Network Security by Avi Kak Lecture 2
• Let’s now consider what one would think would be a very strong
monoalphabetic cipher. We will make our substitution letters a
random permutation of the 26 letters of the alphabet:
• Wouldn’t such a large key space make this cipher extremely dif-
ficult to break? Not really, as we explain next!
20
Computer and Network Security by Avi Kak Lecture 2
magnitude larger, that means that the keyspace is larger by a factor of 1010 . Recall, as mentioned in Section
]
2.1, the keyspace of DES is 256 since the key size is 56 bits. And 256 ≈ 7.2 × 1016 .
21
Computer and Network Security by Avi Kak Lecture 2
• Figure 1 shows the relative frequencies for the letters of the En-
glish alphabet in a sample of English text. Obviously, by com-
paring this distribution with a histogram for the letters occurring
in a piece of ciphertext, you may be able to establish the true
identities of the ciphertext letters.
22
Computer and Network Security by Avi Kak Lecture 2
23
Computer and Network Security by Avi Kak Lecture 2
• Shown in Table 1 are the digram frequencies. The table does not
include digrams whose relative frequencies are below 0.47. (A
complete table of frequencies for all possible digrams would have
676 entries in it.)
24
Computer and Network Security by Avi Kak Lecture 2
25
Computer and Network Security by Avi Kak Lecture 2
2.7: MULTIPLE-CHARACTER
ENCRYPTION TO MASK PLAINTEXT
STRUCTURE: THE PLAYFAIR CIPHER
26
Computer and Network Security by Avi Kak Lecture 2
• You fill the rest of the cells of the matrix with the remaining char-
acters in the alphabet and do so in alphabetic order. The letters
I and J are assigned the same cell. In the following example, the
key is “smythework”:
S M Y T H
E W O R K
A B C D F
G I/J L N P
Q U V X Z
27
Computer and Network Security by Avi Kak Lecture 2
2. Two plaintext letters that fall in the same column are replaced
by the letters just below them in the column. The “belowness”
property is to be considered circular, in the sense that the
topmost entry in a column is below the bottom-most entry.
Therefore, the pair “ol” of plaintext will get replaced by “CV”
in ciphertext.
‘g’ in the fourth row and the first column; and ‘f’ in the third
row and the fifth column. So we replace ‘g’ by the letter in
the same row as ‘g’ but in the column that contains ‘f’. This
given us ‘P’ as a replacement for ‘g’. And we replace ‘f’ by the
letter in the same row as ‘f’ but in the column that contains
‘g’. That gives us ‘A’ as replacement for ‘f’. Therefore, ‘gf’
gets replaced by ‘PA’.
• Before the substitution rules are applied, you must insert a chosen
“filler” letter (let’s say it is ‘x’) between any repeating letters in
the plaintext. So a plaintext word such as “hurray” becomes
“hurxray”
29
Computer and Network Security by Avi Kak Lecture 2
30
Computer and Network Security by Avi Kak Lecture 2
one can try to compare them with plaintext words that are sim-
ilar. Example of words that begin and end in reversed digrams:
receiver, departed, repairer, redder, denuded, etc.
31
Computer and Network Security by Avi Kak Lecture 2
32
Computer and Network Security by Avi Kak Lecture 2
k11 k12 k13
K =
k21 k22 k23
k31 k32 k33
33
Computer and Network Security by Avi Kak Lecture 2
~ = [K] P
C ~ mod 26
~ = ~ mod 26
−1
P K C
~ = ~ mod 26 = P
~
P K−1 [K] P
34
Computer and Network Security by Avi Kak Lecture 2
35
Computer and Network Security by Avi Kak Lecture 2
36
Computer and Network Security by Avi Kak Lecture 2
key: abracadabraabracadabraabracadabraab
plaintext: canyoumeetmeatmidnightihavethegoods
ciphertext: CBEYQUPEFKMEBK.....................
37
Computer and Network Security by Avi Kak Lecture 2
• Since there exist in the output multiple ciphertext letters for each
plaintext letter, you would expect that the relative frequency dis-
tribution would be effectively destroyed. But as can be seen in
the plots in Figure 2, a great deal of the input statistical distri-
bution still shows up in the output. [The plot shown for Vigenere cipher is for an
encryption key that is just 9 letters long.]
• Obviously, the longer the encryption key, the greater the masking
of the structure of the plaintext. The best possible key is as long
as the plaintext message and consists of a purely random per-
mutation of the 26 letters of the alphabet. This would yield the
ideal plot shown in Figure 2. The ideal plot is labeled “Random
polyalphabetic” in that figure.
38
Computer and Network Security by Avi Kak Lecture 2
39
Computer and Network Security by Avi Kak Lecture 2
key: 4 1 3 6 2 5
plaintext: m e e t m e
a t m i d n
i g h t f o
r t h e g o
d i e s x y
ciphertext: ETGTIMDFGXEMHHEMAIRDENOOYTITES
40
Computer and Network Security by Avi Kak Lecture 2
41
Computer and Network Security by Avi Kak Lecture 2
[A ⊕ B] ⊕ C = A ⊕ [B ⊕ C ]
A ⊕ A = 0
A ⊕ 0 = A
• Since differential XORing means that the output for the current
block must depend on the output that was produced for the pre-
43
Computer and Network Security by Avi Kak Lecture 2
vious block, that raises the question of what to do for the first
bit block in a file. Typically, this problem is solved by using an
initialization vector (IV) for the differential XORing needed for
the first bit block in a file. We derive the needed initialization
vector from the passphrase in lines (F) through (I).
• For encryption, each bit block read from the message file is first
XORed with the key in line (Y), and then, in line (Z), with the
output produced for the previous bit block. The step in line (Z)
constitutes differential XORing.
familiar with the BitVector module by going through its API. You’ll be using
this module in several homework assignments dealing with cryptography and
hashing.]
#!/usr/bin/env python
### EncryptForFun.py
### Avi Kak (kak@purdue.edu)
### January 21, 2014, modified January 11, 2016
import sys
from BitVector import * #(A)
BLOCKSIZE = 64 #(D)
numbytes = BLOCKSIZE // 8 #(E)
45
Computer and Network Security by Avi Kak Lecture 2
key = None
if sys.version_info[0] == 3: #(J)
key = input("\nEnter key: ") #(K)
else:
key = raw_input("\nEnter key: ") #(L)
key = key.strip() #(M)
46
Computer and Network Security by Avi Kak Lecture 2
• The reader may wish to compare the decryption logic in the loop
in lines (U) through (b) of the script shown below with the en-
cryption logic shown in lines (S) through (b) of the script above.
#!/usr/bin/env python
### DecryptForFun.py
### Avi Kak (kak@purdue.edu)
### January 21, 2014, modified January 11, 2016
import sys
from BitVector import * #(A)
BLOCKSIZE = 64 #(D)
47
Computer and Network Security by Avi Kak Lecture 2
48
Computer and Network Security by Avi Kak Lecture 2
• To exercise these scripts, enter some text in a file and let’s call
this file message.txt. Now you can call the encrypt script by
EncryptForFun.py message.txt output.txt
The script will place the encrypted output, in the form of a hex
string, in the file output.txt. Subsequently, you can call
DecryptForFun.py output.txt recover.txt
• What follows are the Perl versions of the two Python script shown
above. For at least those of you who would like to be proficient
in both Perl and Python, it would be educational to compare the
syntax used for doing the same things in the two versions. Since
the flow of logic in the two versions is identical, such a comparison
should be straightforward.
• In case you are puzzled by the statement in line (C), the call to
split with an empty regex as its first argument returns an array
of characters for the passphrase. This was done to establish parity
with line (C) of the Python version of the encryption script with
49
Computer and Network Security by Avi Kak Lecture 2
#!/usr/bin/perl -w
### EncryptForFun.pl
### Avi Kak (kak@purdue.edu)
### January 11, 2016
use strict;
use Algorithm::BitVector; #(A)
die "Needs two command-line arguments, one for the name of " .
"message file and the other for the name to be used for " .
"encrypted output file"
unless @ARGV == 2; #(B)
50
Computer and Network Security by Avi Kak Lecture 2
51
Computer and Network Security by Avi Kak Lecture 2
#!/usr/bin/perl -w
### DecryptForFun.pl
### Avi Kak (kak@purdue.edu)
### January 11, 2016
52
Computer and Network Security by Avi Kak Lecture 2
use strict;
use Algorithm::BitVector; #(A)
die "Needs two command-line arguments, one for the name of " .
"message file and the other for the name to be used for " .
"encrypted output file"
unless @ARGV == 2; #(B)
53
Computer and Network Security by Avi Kak Lecture 2
54
Computer and Network Security by Avi Kak Lecture 2
base64” followed by “base64.b64encode(’hello\njello’)”. If you are using Python 3, make sure you
prefix the argument to the b64encode() function by the character ‘b’ to indicate that it is of type bytes as
opposed to of type str. Several string processing functions in Python 3 require bytes type arguments and
often return results of the same type. Educate yourself on the difference between the string str type and bytes
type in Python 3. ]
hello
hexdump -C myfile.txt
you are likely to see the following bytes (in hex) in the file:
68 65 6C 6C 6F 0A
55
Computer and Network Security by Avi Kak Lecture 2
Looks like there are six bytes in the file whereas the word “hello”
has only five characters. What do you think is going on? Do you
know why your editor might want to place that extra byte in the
file and how to prevent that from happening?
5. True or false: The larger the size of the key space, the more secure
a cipher? Justify your answer.
56
Computer and Network Security by Avi Kak Lecture 2
9. What makes Vigenere cipher more secure than, say, the Playfair
cipher?
10. Let’s say you have used the encryption and decryption scripts
shown in Section 2.11 through the following calls
EncryptForFun.py message.txt output.txt
you are likely to see the following message returned by the diff
command:
Binary files message.txt and recover.txt differ
and, yet, if you print out the contents of the two files by
cat message.txt
cat recover.txt
57
Computer and Network Security by Avi Kak Lecture 2
A: xx
B: xx
C: xx
...
...
all in one line. (You can copy-and-paste this hex ciphertext into
your own script. However, make sure that you delete the back-
slash at the end of the first line. You can also see the same
output in the file named output5.txt in the code archive for Lec-
ture 2.) Your job is to both recover the original quote and the
encryption key used by mounting a brute-force attack on the en-
cryption/decryption algorithms. [HINT: The logic used in the scripts
implies that the effective key size is only 16 bits when the BLOCKSIZE variable is set to
16. So your brute-force attack need search through a keyspace of size only 216 .]
59
Computer and Network Security by Avi Kak Lecture 2
CREDITS
60