0% found this document useful (0 votes)
120 views32 pages

Stream Cipher: July 2011

This document discusses stream ciphers and RC4. It begins by explaining the one-time pad and how stream ciphers generate pseudo-random keystreams from a short secret key to encrypt messages. RC4 is then introduced as a popular stream cipher used in applications like WEP and SSL. The document describes how RC4 uses a key scheduling algorithm and pseudo-random generation algorithm to initialize a state array and generate a keystream. It also notes vulnerabilities in how WEP implemented RC4.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
120 views32 pages

Stream Cipher: July 2011

This document discusses stream ciphers and RC4. It begins by explaining the one-time pad and how stream ciphers generate pseudo-random keystreams from a short secret key to encrypt messages. RC4 is then introduced as a popular stream cipher used in applications like WEP and SSL. The document describes how RC4 uses a key scheduling algorithm and pseudo-random generation algorithm to initialize a state array and generate a keystream. It also notes vulnerabilities in how WEP implemented RC4.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 32

Stream Cipher

July 2011
Topics
One-Time-Pad
Random Number Generator
Stream Cipher
RC4
RC4 and WEP
One-Time Pad
Developed by Gilbert Vernam in 1918, another name: Vernam Cipher
The key
a truly random sequence of 0s and 1s
the same length as the message
use one time only
The encryption
adding the key to the message modulo 2, bit by bit.

Encryption ci mi ki i 1,2,3,...
Decryption mi ci ki i 1,2,3,...

mi : plain-text bits.
ki : key (key-stream ) bits
ci : cipher-text bits.
Example
Encryption:
1001001 1000110 plaintext
1010110 0110001 key
0011111 1110110 ciphertext

Decryption:
0011111 1110110 ciphertext
1010110 0110001 key
1001001 1000110 plaintext
One-Time pad practical Problem
Key-stream should be as long as plain-text
Difficult in Key distribution & Management
Solution :
Stream Ciphers
Key-stream is generated in pseudo-random fashion form
Relatively short secret key
Stream Cipher Model
Output function appears random

Si+1 Si : state of the cipher


Si at time t = i.
F : state function.
G : output function.
F

Initial state, output and state


G
functions are controlled by the
ki secret key.
mi ci
Random Numbers
Many uses of random numbers in cryptography
Nonce as Initialize Vector
Session keys
Public key generation
Keystream for a one-time pad
In all cases its critical that these values be
statistically random, uniform distribution, independent
unpredictability of future values from previous values
Care needed with generated random numbers
Topics
One-Time-Pad
Random Number Generator
Stream Cipher
RC4
RC4 and WEP
Pseudorandom Number Generators (PRNGs)
Often use deterministic algorithmic techniques to create
random numbers
although are not truly random
can pass many tests of randomness

Known as Pseudorandom Numbers


Created by Pseudorandom Number Generators
(PRNGs)
Random & Pseudorandom Number Generators
PRNG Requirements
Randomness
uniformity, scalability, consistency
Unpredictability
forward & backward Unpredictability
use same tests to check
Characteristics of the seed
Secure
if known adversary can determine output
so must be random or pseudorandom number
Using Block Ciphers as PRNGs
For cryptographic applications, can use a block cipher to
generate random numbers
Often for creating session keys from master key

CTR
Xi = EK[Vi]
OFB
Xi = EK[Xi-1]
Stream Ciphers

Generalization of one-time pad


Stream cipher is initialized with short key
Key is stretched into long keystream
have a pseudo random property
Keystream is used like a one-time pad
XOR to encrypt or decrypt
Topics
One-Time-Pad
Random Number Generator
Stream Cipher
RC4
RC4 and WEP
Stream Cipher Structure
Randomness of stream key completely destroys
statistically properties in message
Must never reuse stream key
otherwise can recover messages
Stream Cipher Properties
Some design considerations are:
long period with no repetitions
statistically random
depends on large enough key
large linear complexity
Properly designed, can be as secure as a block cipher with
same size key
Benefit : usually simpler & faster
Topics
One-Time-Pad
Random Number Generator
Stream Cipher
RC4
RC4 and WEP
RC4 Basics
A symmetric key encryption algorithm invented by
Ron Rivest
A proprietary cipher owned by RSA, kept secret
Code released at the sites of Cyberpunk remailers
Variable key size, byte-oriented stream cipher
Normally uses 64 bit and 128 bit key sizes.
Used in
SSL/TLS (Secure socket, transport layer security) between
web browsers and servers,
IEEE 802.11 wirelss LAN std: WEP (Wired Equivalent Privacy),
WPA (WiFi Protocol Access) protocol
RC4-based Usage
WEP
WPA default
Bit Torrent Protocol Encryption
Microsoft Point-to-Point Encryption
SSL (optionally)
SSH (optionally)
Remote Desktop Protocol
Kerberos (optionally)
RC4 Block Diagram

Secret Key

RC4

Keystream

Encrypted
Plain Text + Text

Cryptographically very strong and easy to implement


RC4 Inside
Consists of 2 parts:
Key Scheduling Algorithm (KSA)
Pseudo-Random Generation
Algorithm (PRGA)

KSA
Generate State array KSA
PRGA on the KSA PRGA
Generate keystream
XOR keystream with the data
to generated encrypted
stream
The KSA
Use the secret key to initialize and permutation of state vector
S, done in two steps
1 2
j = 0;
for i = 0 to 255 do for i = 0 to 255 do
S[i] = i; j = (j+S[i]+T[i])(mod 256)
T[i] = K[i mod(|K|)]); swap (S[i], S[j])

[S], S is set equal to the values from 0 to 255


S[0]=0, S[1]=1,, S[255]=255 Use T to produce initial permutation of S
[T], A temporary vector The only operation on S is a swap;
[K], Array of bytes of secret key S still contains number from 0 to 255
|K| = Keylen, Length of (K)

After KSA, the input key and the temporary vector T will be no longer used
The PRGA
Generate key stream k , one by one
XOR S[k] with next byte of message to encrypt/decrypt

i = j = 0;
While (more_byte_to_encrypt)
i = (i + 1) (mod 256);
j = (j + S[i]) (mod 256);
swap(S[i], S[j]);
k = (S[i] + S[j]) (mod 256);
Ci = Mi XOR S[k];

Sum of shuffled pair selects "stream key" value


from permutation
RC4 Lookup Stage
The output byte is selected by looking up the values of S[i] and S[j], adding
them together modulo 256, and then looking up the sum in S
S [S[i] + S[j]] is used as a byte of the key stream, K

i = j = 0;
While (more_byte_to_encrypt)
i = (i + 1) (mod 256);
j = (j + S[i]) (mod 256);
swap(S[i], S[j]);
k = (S[i] + S[j]) (mod 256);
http://en.wikipedia.org/wiki/File:RC4.svg Ci = Mi XOR S[k];
Detailed Diagram
Overall Operation of RC4
Decryption using RC4
Use the same secret key as during the encryption phase.
Generate keystream by running the KSA and PRGA.
XOR keystream with the encrypted text to generate the plain
text.
Logic is simple :

(A xor B) xor B = A

A = Plain Text or Data


B = KeyStream
Topics
One-Time-Pad
Random Number Generator
Stream Cipher
RC4
RC4 and WEP
RC4 and WEP

WEP is a protocol using RC4 to encrypt packets for


transmission over IEEE 802.11 wireless LAN.
WEP requires each packet to be encrypted with a separate
RC4 key.
The RC4 key for each packet is a concatenation of a 24-bit IV
(initialization vector) and a 40 or 104-bit long-term key.

RC4 key: IV (24) Long-term lkey (40 or 104 bits)


29
802.11 frames using WEP

Header IV Packetl ICV FCS

encrypted

ICV: integrity check value (for data integrity)


FCS: frame check sequence (for error detection)
Both use CRC32

30
WEP Vulnerability
WEP protocol has several flaws but not the RC4 itself
Short IV length
24 bits IV not sufficient
Clear text IV as part of the key
24 bits of every key in cleartext
Collect and analyze IVs to extract the WEP key
Weak IVs
Some generated IVs do not provide enough randomness
Can be used to extract the key
Q&A

You might also like