Unit2 CNS
Unit2 CNS
for i = 0 to 255 do
S[i] = i
T[i] = K[i mod keylen])
j = 0
for i = 0 to 255 do
j = (j + S[i] + T[i]) (mod 256)
swap (S[i], S[j])
RC4 Encryption
encryption continues shuffling array values
sum of shuffled pair selects "stream key"
value from permutation
XOR S[t] with next byte of message to
en/decrypt
i = j = 0
for each message byte Mi
i = (i + 1) (mod 256)
j = (j + S[i]) (mod 256)
swap(S[i], S[j])
t = (S[i] + S[j]) (mod 256)
Ci = Mi XOR S[t]
RC4 Overview
RC4 Security
claimed secure against known attacks
have some analyses, none practical
resultis very non-linear
since RC4 is a stream cipher, must never
reuse a key
have a concern with WEP, but due to key
handling rather than RC4 itself
Confidentiality using Symmetric
Encryption
traditionally
symmetric encryption is used
to provide message confidentiality
Placement of Encryption
have two major placement alternatives
link encryption
encryption occurs independently on every link
implies must decrypt traffic between links
requires many devices, but paired keys
end-to-end encryption
encryption occurs between original source
and final destination
need devices at each end with shared keys
Placement of Encryption
Placement of Encryption
when using end-to-end encryption must
leave headers in clear
so network can correctly route information
hence although contents protected, traffic
pattern flows are not
ideally want both at once
end-to-end protects data contents over entire
path and provides authentication
link protects traffic flows from monitoring
Placement of Encryption
canplace encryption function at various
layers in OSI Reference Model
link encryption occurs at layers 1 or 2
end-to-end can occur at layers 3, 4, 6, 7
as move higher less information is encrypted
but it is more secure though more complex
with more entities and keys
Encryption vs Protocol Level
Traffic Analysis
ismonitoring of communications flows
between parties
useful both in military & commercial spheres
can also be used to create a covert channel
link encryption obscures header details
but overall traffic volumes in networks and at
end-points is still visible
traffic padding can further obscure flows
but at cost of continuous traffic
Key Distribution
symmetric schemes require both parties to
share a common secret key
issue is how to securely distribute this key
often secure system failure due to a break
in the key distribution scheme
Key Distribution
given parties A and B have various key
distribution alternatives:
1. A can select key and physically deliver to B
2. third party can select & deliver key to A & B
3. if A & B have communicated previously can
use previous key to encrypt a new key
4. if A & B have secure communications with a
third party C, C can relay key between A & B
Key Hierarchy
typically
have a hierarchy of keys
session key
temporary key
used for encryption of data between users
for one logical session then discarded
master key
used to encrypt session keys
shared by user & key distribution center
Key Distribution Scenario
Key Distribution Issues
hierarchies of KDC’s required for large
networks, but must trust each other
session key lifetimes should be limited for
greater security
use of automatic key distribution on behalf
of users, but must trust system
use of decentralized key distribution
controlling key usage
Private-Key Cryptography
traditional private/secret/single key
cryptography uses one key
shared by both sender and receiver
if this key is disclosed communications are
compromised
also is symmetric, parties are equal
hence does not protect sender from
receiver forging a message & claiming is
sent by sender
Public-Key Cryptography
probably most significant advance in the
3000 year history of cryptography
uses two keys – a public & a private key
asymmetric since parties are not equal
uses clever application of number
theoretic concepts to function
complements rather than replaces private
key crypto
Why Public-Key
Cryptography?
developed to address two key issues:
key distribution – how to have secure
communications in general without having to
trust a KDC with your key
digital signatures – how to verify a message
comes intact from the claimed sender
public
invention due to Whitfield Diffie &
Martin Hellman at Stanford Uni in 1976
known earlier in classified community
Public-Key Cryptography
public-key/two-key/asymmetric cryptography
involves the use of two keys:
a public-key, which may be known by anybody, and
can be used to encrypt messages, and verify
signatures
a private-key, known only to the recipient, used to
decrypt messages, and sign (create) signatures
is asymmetric because
those who encrypt messages or verify signatures
cannot decrypt messages or create signatures
Public-Key Cryptography
Public-Key Characteristics
Public-Key algorithms rely on two keys where:
it is computationally infeasible to find decryption key
knowing only algorithm & encryption key
it is computationally easy to en/decrypt messages
when the relevant (en/decrypt) key is known
either of the two related keys can be used for
encryption, with the other used for decryption (for
some algorithms)
Public-Key Cryptosystems
Public-Key Applications
can classify uses into 3 categories:
encryption/decryption (provide secrecy)
digital signatures (provide authentication)
key exchange (of session keys)
some algorithms are suitable for all uses,
others are specific to one
Security of Public Key Schemes
like private key schemes brute force exhaustive
search attack is always theoretically possible
but keys used are too large (>512bits)
security relies on a large enough difference in
difficulty between easy (en/decrypt) and hard
(cryptanalyse) problems
more generally the hard problem is known, but
is made hard enough to be impractical to break
requires the use of very large numbers
hence is slow compared to private key schemes
RSA
by Rivest, Shamir & Adleman of MIT in 1977
best known & widely used public-key scheme
based on exponentiation in a finite (Galois) field
over integers modulo a prime
nb. exponentiation takes O((log n)3) operations (easy)
uses large integers (eg. 1024 bits)
security due to cost of factoring large numbers
nb. factorization takes O(e log n log log n) operations (hard)
RSA Key Setup
each user generates a public/private key pair by:
selecting two large primes at random - p, q
computing their system modulus n=p.q
note ø(n)=(p-1)(q-1)
selecting at random the encryption key e
• where 1<e<ø(n), gcd(e,ø(n))=1
solve following equation to find decryption key d
e.d=1 mod ø(n) and 0≤d≤n
publish their public encryption key: PU={e,n}
keep secret private decryption key: PR={d,n}
RSA Use
to encrypt a message M the sender:
obtains public key of recipient PU={e,n}
computes: C = Me mod n, where 0≤M<n
to decrypt the ciphertext C the owner:
uses their private key PR={d,n}
computes: M = Cd mod n
note that the message M must be smaller
than the modulus n (block if needed)
Why RSA Works
because of Euler's Theorem:
aø(n)mod n = 1 where gcd(a,n)=1
in RSA have:
n=p.q
ø(n)=(p-1)(q-1)
carefully chose e & d to be inverses mod ø(n)
hence e.d=1+k.ø(n) for some k
hence :
Cd = Me.d = M1+k.ø(n) = M1.(Mø(n))k
= M1.(1)k = M1 = M mod n
RSA Example - Key Setup
1. Select primes: p=17 & q=11
2. Compute n = pq =17 x 11=187
3. Compute ø(n)=(p–1)(q-1)=16 x 10=160
4. Select e: gcd(e,160)=1; choose e=7
5. Determine d: de=1 mod 160 and d < 160
Value is d=23 since 23x7=161= 10x160+1
6. Publish public key PU={7,187}
7. Keep secret private key PR={23,187}
RSA Example - En/Decryption
sample RSA encryption/decryption is:
given message M = 88 (nb. 88<187)
encryption:
C = 887 mod 187 = 11
decryption:
M = 1123 mod 187 = 88
Exponentiation
can use the Square and Multiply Algorithm
a fast, efficient algorithm for exponentiation
concept is based on repeatedly squaring base
and multiplying in the ones that are needed to
compute the result
look at binary representation of exponent
only takes O(log2 n) multiples for number n
eg. 75 = 74.71 = 3.7 = 10 mod 11
eg. 3129 = 3128.31 = 5.3 = 4 mod 11
Exponentiation
c = 0; f = 1
for i = k downto 0
do c = 2 x c
f = (f x f) mod n
if bi == 1 then
c = c + 1
f = (f x a) mod n
return f
Efficient Encryption
encryption uses exponentiation to power e
hence if e small, this will be faster
often choose e=65537 (216-1)
also see choices of e=3 or e=17
but if e too small (eg e=3) can attack
using Chinese remainder theorem & 3
messages with different modulii
if e fixed must ensure gcd(e,ø(n))=1
ie reject any p or q not relatively prime to e
Efficient Decryption
decryption uses exponentiation to power d
this is likely large, insecure if not
canuse the Chinese Remainder Theorem
(CRT) to compute mod p & q separately.
then combine to get desired answer
approx 4 times faster than doing directly
only
owner of private key who knows
values of p & q can use this technique
RSA Key Generation
users of RSA must:
determine two primes at random - p, q
select either e or d and compute the other
primes
p,q must not be easily derived
from modulus n=p.q
means must be sufficiently large
typically guess and use probabilistic test
exponents e, d are inverses, so use
Inverse algorithm to compute the other
RSA Security
possible approaches to attacking RSA are:
brute force key search (infeasible given size
of numbers)
mathematical attacks (based on difficulty of
computing ø(n), by factoring modulus n)
timing attacks (on running of decryption)
chosen ciphertext attacks (given properties of
RSA)
Factoring Problem
mathematical approach takes 3 forms:
factor n=p.q, hence compute ø(n) and then d
determine ø(n) directly and compute d
find d directly
currently believe all equivalent to factoring
have seen slow improvements over the years
• as of May-05 best is 200 decimal digits (663) bit with LS
biggest improvement comes from improved algorithm
• cf QS to GHFS to LS
currently assume 1024-2048 bit RSA is secure
• ensure p, q of similar size and matching other constraints
Timing Attacks
developed by Paul Kocher in mid-1990’s
exploit timing variations in operations
eg. multiplying by small vs large number
or IF's varying which instructions executed
infer operand size based on time taken
RSA exploits time taken in exponentiation
countermeasures
use constant exponentiation time
add random delays
blind values used in calculations
Chosen Ciphertext Attacks
• RSA is vulnerable to a Chosen
Ciphertext Attack (CCA)
• attackers chooses ciphertexts & gets
decrypted plaintext back
• choose ciphertext to exploit
properties of RSA to provide info to
help cryptanalysis
• can counter with random pad of
plaintext
• or use Optimal Asymmetric
Encryption Padding (OASP)
Diffie-Hellman Key Exchange
first
public-key type scheme proposed
by Diffie & Hellman in 1976 along with the
exposition of public key concepts
note: now know that Williamson (UK CESG)
secretly proposed the concept in 1970
is a practical method for public exchange
of a secret key
used in a number of commercial products
Diffie-Hellman Key Exchange
a public-key distribution scheme
cannot be used to exchange an arbitrary message
rather it can establish a common key
known only to the two participants
value of key depends on the participants (and
their private and public key information)
based on exponentiation in a finite (Galois) field
(modulo a prime or a polynomial) - easy
security relies on the difficulty of computing
discrete logarithms (similar to factoring) – hard
Diffie-Hellman Setup
all users agree on global parameters:
large prime integer or polynomial q
a being a primitive root mod q
each user (eg. A) generates their key
chooses a secret key (number): xA < q
xA
compute their public key: yA = a mod q
each user makes public that key yA
Diffie-Hellman Key Exchange
shared session key for users A & B is K AB:
xA.xB
KAB = a mod q
xB
= yA mod q (which B can compute)
xA
= yB mod q (which A can compute)
KAB is used as session key in private-key
encryption scheme between Alice and Bob
if Alice and Bob subsequently communicate,
they will have the same key as before, unless
they choose new public-keys
attacker needs an x, must solve discrete log
Diffie-Hellman Key Exchange Protocol
Diffie-Hellman Example
users Alice & Bob who wish to swap keys:
agree on prime q=353 and a=3
select random secret keys:
A chooses xA=97, B chooses xB=233
compute respective public keys:
97
yA=3 mod 353 = 40 (Alice)
233
yB=3 mod 353 = 248 (Bob)
compute shared session key as:
xA 97
KAB= yB mod 353 = 248 = 160 (Alice)
xB 233
KAB= yA mod 353 = 40 = 160 (Bob)
Man-in-the-middle (Bucket Bridge) attack
Key Exchange Protocols
users could create random private/public
D-H keys each time they communicate
users could create a known private/public
D-H key and publish in a directory, then
consulted and used to securely
communicate with them
both of these are vulnerable to a meet-in-
the-Middle Attack
authentication of the keys is needed
Elliptic Curve Cryptography
majority of public-key crypto (RSA, D-H)
use either integer or polynomial arithmetic
with very large numbers/polynomials
imposes a significant load in storing and
processing keys and messages
an alternative is to use elliptic curves
offers same security with smaller bit sizes
newer, but not as well analysed
Real Elliptic Curves
an elliptic curve is defined by an
equation in two variables x & y, with
coefficients
consider a cubic elliptic curve of form
y2 = x3 + ax + b
where x,y,a,b are all real numbers
also define zero point O
have addition operation for elliptic curve
geometrically sum of Q+R is reflection of
intersection R
Real Elliptic Curve Example
Finite Elliptic Curves
Elliptic
curve cryptography uses curves
whose variables & coefficients are finite
have two families commonly used:
prime curves Ep(a,b) defined over Zp
• use integers modulo a prime
• best in software
binary curves E2m(a,b) defined over GF(2n)
• use polynomials with binary coefficients
• best in hardware
Elliptic Curve Cryptography
ECC addition is analog of modulo multiply
ECC repeated addition is analog of
modulo exponentiation
need “hard” problem equiv to discrete log
Q=kP, where Q,P belong to a prime curve
is “easy” to compute Q given k,P
but “hard” to find k given Q,P
known as the elliptic curve logarithm problem
Certicom example: E23(9,17)
ECC Diffie-Hellman
can do key exchange analogous to D-H
users select a suitable curve E (a,b)
p
select base point G=(x ,y )
1 1
with large order n s.t. nG=O
A& B select private keys nA<n, nB<n
compute public keys: P =n G, P =n G
A A B B
compute shared key: K=n P , K=n P
A B B A
same since K=nAnBG
ECC Encryption/Decryption
several alternatives, will consider simplest
must first encode any message M as a point on
the elliptic curve Pm
select suitable curve & point G as in D-H
each user chooses private key nA<n
and computes public key PA=nAG
to encrypt Pm : Cm={kG, Pm+kPb}, k random
decrypt Cm compute:
Pm+kPb–nB(kG) = Pm+k(nBG)–nB(kG) = Pm
ECC Security
relies on elliptic curve logarithm problem
fastest method is “Pollard rho method”
compared to factoring, can use much
smaller key sizes than with RSA etc
for equivalent key lengths computations
are roughly equivalent
hence for similar security ECC offers
significant computational advantages
Comparable Key Sizes for
Equivalent Security
Symmetric ECC-based RSA/DSA
scheme scheme (modulus size in
(key size in bits) (size of n in bits) bits)
56 112 512
80 160 1024
112 224 2048
128 256 3072
192 384 7680
256 512 15360
Key Management
public-key encryption helps address key
distribution problems
have two aspects of this:
distribution of public keys
use of public-key encryption to distribute
secret keys
Distribution of Public Keys
can be considered as using one of:
public announcement
publicly available directory
public-key authority
public-key certificates
Public Announcement
users
distribute public keys to recipients or
broadcast to community at large
eg. append PGP keys to email messages or
post to news groups or email list
major weakness is forgery
anyone can create a key claiming to be
someone else and broadcast it
until forgery is discovered can masquerade as
claimed user
Publicly Available Directory
can obtain greater security by registering
keys with a public directory
directory must be trusted with properties:
contains {name,public-key} entries
participants register securely with directory
participants can replace key at any time
directory is periodically published
directory can be accessed electronically
still vulnerable to tampering or forgery
Public-Key Authority
improve security by tightening control over
distribution of keys from directory
has properties of directory
and requires users to know public key for
the directory
then users interact with directory to obtain
any desired public key securely
does require real-time access to directory
when keys are needed
Public-Key Authority
Public-Key Certificates
certificates allow key exchange without
real-time access to public-key authority
a certificate binds identity to public key
usually with other info such as period of
validity, rights of use etc
with all contents signed by a trusted
Public-Key or Certificate Authority (CA)
can be verified by anyone who knows the
public-key authorities public-key
Public-Key Certificates
Public-Key Distribution of Secret
Keys
use previous methods to obtain public-key
can use for secrecy or authentication
but public-key algorithms are slow
so usually want to use private-key
encryption to protect message contents
hence need a session key
have several alternatives for negotiating a
suitable session
Simple Secret Key
Distribution
proposed by Merkle in 1979
A generates a new temporary public key pair
A sends B the public key and their identity
B generates a session key K sends it to A
encrypted using the supplied public key
A decrypts the session key and both use
problemis that an opponent can intercept
and impersonate both halves of protocol
Public-Key Distribution of Secret
Keys
if have securely exchanged public-keys:
Hybrid Key Distribution
retain use of private-key KDC
shares secret master key with each user
distributes session key using master key
public-key used to distribute master keys
especially useful with widely distributed users
rationale
performance
backward compatibility