Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous...

28
Stream Ciphers Martin Stanek Department of Computer Science Comenius University [email protected] Cryptology 1 (2019/20)

Transcript of Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous...

Page 1: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Stream Ciphers

Martin Stanek

Department of Computer ScienceComenius University

[email protected]

Cryptology 1 (2019/20)

Page 2: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Content

Introductionidea, general properties

Linear Feedback Shi� Register (LFSR)correlation a�ack

Examples of stream ciphersRC4A5/1TriviumChaCha20Snow 3G

Stream Ciphers 2 / 28 ,

Page 3: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Introduction

I Vernam cipher (one-time pad)I perfect secrecyI impractical – long key that cannot be reused

I (some) stream ciphers examples:I RC4 – older so�ware and protocols, e.g. WEP, SSL/TLS etc.I A5/1 – GSM communication (phone↔ base station)

remark: UMTS and LTE use other ciphersI E0 – Bluetooth (BR/EDR – basic rate/enhanced data rate)

remark: Bluetooth Low Energy uses AES-CCMI ChaCha20 – TLS (RFC 7905)

I basic types of stream ciphers: synchronous and self-synchronizing

Stream Ciphers 3 / 28 ,

Page 4: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Synchronous stream ciphers

IV key

plaintext ciphertext

keystream

pseudo-randomgenerator

I the most common stream ciphers used in practiceI encryption and decryption are the sameI keystream does not depend on plaintextI usually binary additive stream ciphers (XOR of plaintext and keystream)

Stream Ciphers 4 / 28 ,

Page 5: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Synchronous stream ciphers 2

I periodicI require synchronization

I decryption breaks a�er losing some bits of ciphertextI vulnerable to active a�acks

I e.g. changing bits in ciphertext results in change of correspondingplaintext bits

I errors are not propagatedI IV and key must not repeat (otherwise . . . two-time pad)

I be careful of possible keystreams overlaps

Stream Ciphers 5 / 28 ,

Page 6: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Self-synchronizing stream ciphers

IV

key

pi ci

ci−n, ci−n+1, . . . , ci−1

function

IV

key

pi

ci−n, ci−n+1, . . . , ci−1

function

I keystream depends on ciphertext (and therefore on plaintext)I ability to self-synchronize a�er the loss of same cipherextI aperiodicI hard to analyze, hard to guarantee security properties

Stream Ciphers 6 / 28 ,

Page 7: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Remarks

I stream ciphers can be constructed from block ciphersI specific modes of operation:

I synchronous: OFB, CTRI self-synchronizing: CFB

I Why stream ciphers at all?I speedI simplicity (HW implementation, constrained environment)

I requirements (preliminary observations):I long period

. . .How do you a�ack short-period stream cipher?I good statistical properties

. . . statistical tests of randomness are not su�icientI keystream should be unpredictable (indistinguishable from a random

sequence). . .KPA⇒ knowing some part of the keystream

Stream Ciphers 7 / 28 ,

Page 8: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Linear Feedback Shi� Register (LFSR)

sn−1 sn−2 s1 s0. . . output

c0c1cn−2cn−1

I common primitive for stream cipher constructionI easy to implement in hardwareI the output sequence has good (basic) statistical propertiesI easy to analyze

Stream Ciphers 8 / 28 ,

Page 9: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

LFSR – notation and function

sn−1 sn−2 s1 s0. . . output

c0c1cn−2cn−1

I we focus on binary registers (over GF(2))I n – length of registerI initial state: sn−1, … , s1, s0 ∈ {0, 1}n

I LFSR produces sequence {si}i≥0, where for k ≥ 0:

sk+n = cn−1sk+n−1 + cn−2sk+n−2 +… + c1sk+1 + c0sk

I state a�er k ≥ 0 steps: (sk+n−1, … , sk+1, sk)I characteristic polynomial: f (x) = xn + cn−1xn−1 +… + c1x + c0

Stream Ciphers 9 / 28 ,

Page 10: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

LFSR – example

s3 s2 s1 s0 f (x) = x4 + x3 + 1

0 0 0 1 0 1 1 01 0 0 0 0 0 1 11 1 0 0 1 0 0 11 1 1 0 0 1 0 01 1 1 1 0 0 1 00 1 1 1 0 0 0 11 0 1 10 1 0 11 0 1 01 1 0 1

Stream Ciphers 10 / 28 ,

Page 11: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

LFSR – remarks

I all-zero state never changes⇒ max. period is 2n − 1

LFSR generates a sequence with period 2n − 1 if and only if itscharacteristic polynomial is a primitive polynomial over GF(2).

I primitive polynomial: irreducible & its root is a generator ofmultiplicative group in generated finite fieldI irreducible but non-primitive polynomial over GF(2): x4 + x3 + x2 + x + 1

I popular polynomials with degree n, where n is a Mersenne prime(i.e. 2n − 1 is also prime; e.g. n = 19, 31, 61, 89, 107, 127)I in this case each irreducible polynomial is primitive

I connection (feedback) polynomial: 1 + cn−1x +… + c1xn−1 + c0xn

I reciprocal polynomial of the characteristic polynomial

Stream Ciphers 11 / 28 ,

Page 12: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

LFSR – properties

I some statistical properties (for sequence with maximal period)I all states except all-zero stateI all n-tuples, (n − 1)-tuples, . . . almost the same frequency:

#0 + 1 = #1, #00 + 1 = #01 = #10 = #11, . . .I very easy to predict (⇒ do not use LFSR as a stream cipher)

I knowledge of 2n consecutive bits of output sequenceI computation of feedback coe�icients (system of linear equations)

sk+n = cn−1sk+n−1 + cn−2sk+n−2 +… + c1sk+1 + c0sk

sk+1+n = cn−1sk+n + cn−2sk+n−1 +… + c1sk+2 + c0sk+1

I the state is known anywayI LFSR can be clocked forward as well as backward

Stream Ciphers 12 / 28 ,

Page 13: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

LFSR – synthesis and linear complexity

I input: arbitrary sequence {si}0≤i<LI output: the shortest LFSR generating the input sequenceI trivial solution: solve system of linear equations and enlarge LFSRI be�er approach: Berlekamp-Massey algorithm O(L · n)I linear complexity of a sequence:

I expected for a random sequence: ∼ L/2I large linear complexity is necessary, but not su�icient: 00… 01

I linear complexity profileI proper profile necessary, but not su�icient:

1101031071… with “perfect” profile b L+12 c

Stream Ciphers 13 / 28 ,

Page 14: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Increasing linear complexity

I filter generatorI state or its subset is filtered through a Boolean functionI properties depend on properties of filter function

I combination generatorI multiple LFSRs – combination of outputsI properties depend on combination function (balanced, high algebraic

degree, nonlinearity . . . )I example: XOR⇒ sum of linear complexities

I linear complexity is not everything . . .

Stream Ciphers 14 / 28 ,

Page 15: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Ge�e generator – correlation a�ack

I combination of three LFSRs: F (x1, x2, x3) = x1x2 ⊕ (x1 ⊕ 1)x3I brute-force a�ack – searching through all states: 2n1+n2+n3

I linear complexity ≤ n1n2 + n1n3 + n3I Pr[x3 = F (x1, x2, x3)] = Pr[x2 = F (x1, x2, x3)] = 3/4

x1 x2 x3 F (x1, x2, x3)0 0 0 00 0 1 10 1 0 00 1 1 11 0 0 01 0 1 01 1 0 11 1 1 1

I KPA (i.e. we know the keystream)I independent a�ack on LFSR3 state

(correct state will correlate withkeystream)

I independent a�ack on LFSR2 stateI finally, a�ack on LFSR1I overall 2n3 + 2n2 + 2n1

Stream Ciphers 15 / 28 ,

Page 16: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Examples of other constructions based on LSFR

I alternating step generatorI output of LFSR1 controls if LFSR2 or LFSR3 is clocked (the second one is

paused)

LFSR1

LFSR2

LFSR3

I shrinking generatorI two LFSRs: LSFR1 and LFSR2I if output of LSFR1 is 1 then output is the output of LFSR2I otherwise there is no output from the generator

I both generators have exponential period and linear complexity

Stream Ciphers 16 / 28 ,

Page 17: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

RC4

I Ron Rivest, 1987I trade secret; posted anonymously to a mailing list in 1994I internal state S[0… 255] – permutation {0, … , 255}I key K [0… k] – array of bytes (16 for 128-bit key)I initialization:

for i = 0, … , 255: S[i] = i;j = 0;for i = 0, … , 255:

j = (j + S[i] + K [i mod k]) mod 256;swap(S[i], S[j]);

Stream Ciphers 17 / 28 ,

Page 18: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

RC4 (2)

I generating keystream:

i = 0; j = 0;while (is needed):

i = (i + 1) mod 256;j = (j + S[i]) mod 256;swap(S[i], S[j]);output S[(S[i] + S[j]) mod 256];

I additive cipher, the output is XOR-ed with plaintext bytesI first bytes of keystream leak information about key

I WEP a�ack (key and IV used as RC4 key)I drop some keystrem prefix / di�erent construction of the key

Stream Ciphers 18 / 28 ,

Page 19: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Klein’s a�ack on WEP 1

I WEP (Wired Equivalent Privacy) – security for 802.11 WiFi networksI superseded by WPA2 (WiFi Protected Access)

I data frame:IV, padding, IDRk︸ ︷︷ ︸

plaintext

, data, ICV︸ ︷︷ ︸encrypted

I IV – initialization vector (3B)I IDRk – Rk’s identifier (2 bits)I ICV – integrity check value (CRC32)

I RC4 with key K = IV | | Rk (Rk – root key)I Notation:

I Si – internal permutation a�er i-th round (i ≤ 256 corresponds toinitialization)

I ji – internal variable j a�er i-th roundI X – keystream (obtained by XORing ciphertext and known plaintext data)

Stream Ciphers 19 / 28 ,

Page 20: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Klein’s a�ack on WEP 2

I Klein proved the following property of RC4 (n = 256):

Pr[K [i mod k] = S−1i [i − X [i − 1]] − (Si[i] + ji)] ≈1.36n

instead of desired 1/n.I IV = K [0],K [1],K [2] is known⇒ S3 and j3 can be computedI the value w = S−13 [3 − X [2]] − (S3[3] + j3) is K [3] with probability ≈ 1.36

n

I a�acker observes many frames (fixed Rk and di�erent IV) . . . correctvalue of K [3] (the first byte of Rk) revealed by statistics

I knowing K [3] ⇒ next RC4 round computation: S4, j4 . . . etc.

I improvements for WEP, e.g. PTW a�ack (2007)I a�ack on RC4 in TLS: AlFardan et al. (2013)

Stream Ciphers 20 / 28 ,

Page 21: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

A5/1

LFSR1

LFSR2

LFSR3

Maj

I used in GSM networks; designed in 1987; reverse engineered in 1999I LFSRs lengths: 19, 22 a 23 bits (i.e. internal state: 64 bits)I at least 2 LSFRs clocked in each step (those that agree on selected bits)I for each frame: first 100 bits are discarded, next 228 bits are used (114

for encryption, 114 for decryption)I weak cipher, various a�acks published (A5/1 replaced by KASUMI in

UMTS)

Stream Ciphers 21 / 28 ,

Page 22: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Trivium

I candidate in eSTREAM project (2004–2008)I profile 2 (ciphers for HW implementation)I very simple designI key: 80 bits, IV: 80 bitsI generates at most 264 output bitsI internal state: 288 bits (s1, … , s288)

Stream Ciphers 22 / 28 ,

Page 23: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Trivium – generator

output: zi

t1 = s66 + s93t2 = s162 + s177t3 = s243 + s288zi = t1 + t2 + t3t1 = t1 + s91s92 + s171t2 = t2 + s175s176 + s264t3 = t3 + s286s287 + s69

(s1, s2, … , s93) = (t3, s1, … , s92)

(s94, s95, … , s177) = (t1, s94, … , s176)

(s178, s279, … , s288) = (t2, s178, … , s287)

Stream Ciphers 23 / 28 ,

Page 24: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Trivium – initialization

I key→ first registerI IV→ second registerI last three bits of the state are 1, everything else is set to 0I first 4 · 288 = 1152 outputs are discarded (initialization rounds)

Security:I key recovery a�acks on Trivium with reduced number of initialization

roundsI Fouque and Vannet: a�ack 268 on 799 rounds (2015)I Fu, Wang, Dong and Meier: 277 on 855 rounds (2018)I still no be�er than brute-force a�ack for full Trivium

Stream Ciphers 24 / 28 ,

Page 25: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

ChaCha20

I high-speed ARX cipher (add-rotate-xor)I designed by D.J. Bernstein (2008)I details described e.g. in RFC 8439I ChaCha20 – specific instance of ChaCha with 20 roundsI state: 4 × 4 matrix, elements are 32-bit wordsI inputs:

I key: 256 bits (8 words)I nonce (IV): 96 bits (3 words)I counter: 32 bits (1 word)⇒ max. 256 GB

I output: 512 bits (64 bytes, 16 words)I di�erent nonce/counter lengths possible (we follow RFC 8439)

Stream Ciphers 25 / 28 ,

Page 26: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

ChaCha20 – initialization and quarter-rround

const const0

key

cnt nonce

key key key

key key keykey

nonce nonce

const const1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

QuarterRound(a,b,c,d):a += b; d ^= a; d <<<= 16;c += d; b ^= c; b <<<= 12;a += b; d ^= a; d <<<= 8;c += d; b ^= c; b <<<= 7;

Stream Ciphers 26 / 28 ,

Page 27: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

ChaCha20 – block function

I iterate 10 times following two rounds:

QuarterRound(0, 4, 8, 12)QuarterRound(1, 5, 9, 13)QuarterRound(2, 6, 10, 14)QuarterRound(3, 7, 11, 15)QuarterRound(0, 5, 10, 15)QuarterRound(1, 6, 11, 12)QuarterRound(2, 7, 8, 13)QuarterRound(3, 4, 9, 14)

I the output state is added (word by word) to the input state 7→keystream block

Stream Ciphers 27 / 28 ,

Page 28: Stream Ciphers - uniba.skdcs.fmph.uniba.sk/~stanek/l4-stream.pdf · 2019-10-08 · Synchronous stream ciphers IV key plaintext ciphertext keystream pseudo-random generator I the most

Snow 3G – keystream generator

s15 s11 s5 s1s2 s0

α−1 α

R1 R2 R3S1 S2

I SNOW 3G is the base of confidentiality and integrity algorithms UEA2and UIA2 (for LTE)

I LSFR: 16 32-bit words; S1, S2 – s-boxesI FSM (finite state machine): R1, R2, R3 – 32-bit valuesI α is the root of some fixed polynomial

Stream Ciphers 28 / 28 ,