<<

Cryptanalysis of KeeLoq with COPACOBANA

Martin Novotný1,2, Timo Kasper1

1Horst Görtz Institute for IT-Security Ruhr University Bochum

2Faculty of Information Technology Czech Technical University in Prague Case Study Access Control

Simple access controls: fixed code (“password”)

code

eavesdropper duplicates (cloning)

but the industry learned… Case Study Access Control advanced theft control: rolling code

code = ek(ni) rolling code (or hopping code) e () is often a code = e (n) k k block code = ek(n+1) code = ek(n+2) …. KeeLoq HoIpNpCRinEMgE CNToSde GeneCOraNtSiToAnNT

Synchronization Counter Discrimination Value Func

32

Device 64 KEELOQ Key Derived from Manufacturer Key 32

Hopping Code So what can we do now?

If we have access to a remote Recover device key and clone the device

People usually do not lend their keys to unknown people

In a shop If we have access to a receiver Recover manufacturer key and generate new remotes Identical for all GGaarraaggeeOOppeenneerrss22000000 and corresponding remotes Device Key Derivation

Serial Number / SEED

32 32 Manufacturer KEELOQ Key KEELOQ decryption/ decryption/ /XOR 64 64 XOR

32 32

Device Key MS 32 bits Device Key LS 32 bits So what can we do now?

After extracting of manufacturing key: Remotely eavesdrop on 1-2 communications & clone key!

Serial Number, KeeLoq(n+1) Device Key Derivation

0h SSNe r–ia 1l 2n ubmbSeer r–i a2Sl8 SeN bEruiiaEtmslD nSb u–Eem Er6 bD0/ e Sb–rSiE tE4sE8E DDbi t–s 32 bits scheme #1234

Sniffed from communicatio 32 32 n Manufacturer KEELOQ Key KEELOQ decryption/ decryption/ /XOR 64 64 XOR Retrieve d via 32 DPA 32

Device Key MS 32 bits Device Key LS 32 bits

2P12r68e cccaaonnmddpididuaatedttee vvinaa lulSueeWs 2P3r2e ccaonmpdiduatteed vina lSueWs KeeLoq Cracker KeeLoq Cracker

2 (consecutive) hopping codes sniffe d Hopping Code #1 Hopping Code #2

KEELOQ Device Key KEELOQ decryption Generator decryption

Counter1 Discrim1 F1 Counter2 Discrim1 F2

(Counter2 – Counter1) < 7 ? Discrim1F1 == Discrim2F2 ?

KEY CANDIDATE Device Key Derivation

0h SSNe r–ia 1l 2n ubmbSeer r–i a2Sl8 SeN bEruiiaEtmslD nSb u–Eem Er6 bD0/ e Sb–rSiE tE4sE8E DDbi t–s 32 bits scheme #1234

32 32 Manufacturer KEELOQ Key KEELOQ decryption/ decryption/ /XOR 64 64 /XOR

32 32

Device Key MS 32 bits Device Key LS 32 bits

Precomputed in SW P(r2e1268c coamndpiduattede v ainlu eSsW) PGreecnoempratuetde din i nH SWW KeeLoq Cracker

Hopping Code #1 Hopping Code #2

KEELOQ Device Key KEELOQ decryption Generator decryption

Counter1 Discrim1 F1 Counter2 Discrim1 F2

(Counter2 – Counter1) < 7 ? Discrim1F1 == Discrim2F2 ?

KEY CANDIDATE Device Key Generator

Host computer

32

32 bit register 32 bit counter

64 KeeLoq Cracker

Hopping Code #1 Hopping Code #2

KEELOQ Device Key KEELOQ decryption Generator decryption

Counter1 Discrim1 F1 Counter2 Discrim1 F2

(Counter2 – Counter1) < 7 ? Discrim1F1 == Discrim2F2 ?

KEY CANDIDATE KeeLoq – The Algorithm

State Registe,ry 7 3 2 42 0 1 1 0 1 0

NLF

XOR

Key Registe,r k 7 6 5 4 3 2 1 0 0

64 bit key, 32 bit block length NLFSR comprising a 5x1 non-linear function Simple key management: key is constantly rotated 528 rounds, each round one key bit is read  Lightweight cipher – cheap and efficient in hardware KeeLoq Encryption

• 32 bit block length, 64 bit key • NLFSR comprising a 5x1 non-linear function • Simple key management: key is constantly rotated • 528 rounds, each round one key bit is read  Lightweight cipher – cheap and efficient in hardware

source: Wikipedia KeeLoq Decryption

like encryption, but in reverse order 

source: Wikipedia KeeLoq Decryption

32 bit state

NLF

64 bit key KeeLoq Decryption

32 bit state 64 bit key

NLF KeeLoq Decryption

32 bit state 64 bit key

NLF KeeLoq Decryption

32 bit state 64 bit key

NLF KeeLoq Decryption

32 bit state 64 bit key

NLF Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF … … … … Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF … … … … Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF … … … … Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF 528 x … … … …

32 bit state 64 bit key

NLF … … … … Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF 528 x … … … … th 32 bit state each 464 briot kueny d registered NLF … … … … Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF … … … … Unrolled KeeLoq Decryption

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF … … … …

32 bit state 64 bit key

NLF … … … … unrolled decrypter KeeLoq Cracker with 132 pipeline stages

Hopping Code #1 Hopping Code #2

KEELOQ Device Key KEELOQ decryption Generator decryption

Counter1 Discrim1 F1 Counter2 Discrim1 F2

(Counter2 – Counter1) < 7 ? Discrim1F1 == Discrim2F2 ?

KEY CANDIDATE Results

fmax = 110 MHz 110 million keys/s verified in 1 FPGA Spartan 3-1000

32 bit : 39 seconds / 1 FPGA 48 bit seed: 5.9 hours / 1 COPACOBANA 60 bit seed: 1011 days / 1 COPACOBANA