Network Security

Network Security


intruder may

important issues:

Security in Computer Networks

user resources:


network resources:

bottom line:

Encryption


plaintext: unencrypted message

ciphertext: encrypted form of message

intruder may

A simple encryption algorithm

substitution cipher:

abcdefghijklmnopqrstuvwxyz

poiuytrewqasdfghjklmnbvczx

plaintext: Charlotte, my love

ciphertext: iepksgmmy, dz sgby

DES: Data Encryption Standard


Key Distribution Problem

Public Key Cryptography


RSA: public key encryption/decryption

RSA: a public key algorithm for encrypting/decrypting

entity wanting to receive encrypted messages:

integer-remainder( (ed) / ((p-1)(q-1)) ) = 1, i.e.,

ed = k(p-1)(q-1) +1

RSA (continued)

to encrypt:

to decrypt:

to break RSA

RSA example

sender:
plaintextuse e=3 ciphertext
char##**3 #**3 mod 33
S196859 28
U219261 21
N192744 5

receiver:
ciphertextuse d=7 plaintext
Cc**7c**7 mod 33 char
281349292851219 S
21180108854121 U
57812514 N

Further notes on RSA

why does RSA work?

(b**e)**d = b**(ed)

= b**(k(p-1)(q-1)+1) for some k

= b b**(p-1)(q-1) b**(p-1)(q-1) ... b**(p-1)(q-1)

= b 1 1 ... 1

= b

How to break RSA?

Brute force: get B's public key


man-in-the-middle: intercept keys, spoof identity:


Authentication


question: how does a receiver know that remote communicating entity is hwo it is claimed to be?

Approach 1: peer-peer key-based authentication

A to B: msg = encrypt("I am A")
B computes: if decrypt(msg)=="I am A"
   then A is verified
   else A is fradulent

Authentication Using Nonces

to prove that A is alive, B sends "once-in-a-lifetime-only" number (nonce) to A, which A encodes and returns to B

A to B: msg = encrypt("I am A")
B compute: if decrypt(msg)=="I am A"
   then A is OK so far
B to A: once-in-a-lifetime value, n
A to B: msg2 = encrypt(n)
B computes: if decrypt(msg2)==n
   then A is verified
   else A is fradulent

Authentication Using Public Keys

B wants to authenticate A

A has made its encryption key EA known

A alone knows DA

symmetry: DA( EA(n) ) = EA ( DA(n) )

A to B: msg = "I am A"
B to A: once-in-a-lifetime value, n
A to B: msg2 = DA(n)
B computes: if EA (DA(n))== n
   then A is verified
   else A is fradulent
Digital Signatures Using Public Keys

Goals of digital signature:

Suppose A wants B wants to "sign" a message M

B sends DA(M) to A
A computes if EA ( DA(M)) == M
  then A has signed M

question: can A plausibly deny having sent M?