software protection: how to crack programs, and defend against

123
c April 30, 2014 Christian Collberg Software Protection: How to Crack Programs, and Defend Against Cracking Lecture 8: Hardware Moscow State University, Spring 2014 Christian Collberg University of Arizona www.cs.arizona.edu/ ˜ collberg

Upload: trankiet

Post on 04-Jan-2017

231 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Software Protection: How to Crack Programs, and Defend Against

c© April 30, 2014 Christian Collberg

Software Protection:

How to Crack Programs, and

Defend Against Cracking

Lecture 8: Hardware

Moscow State University, Spring 2014

Christian CollbergUniversity of Arizona

www.cs.arizona.edu/˜collberg

Page 2: Software Protection: How to Crack Programs, and Defend Against

Introduction

Page 3: Software Protection: How to Crack Programs, and Defend Against

This lecture

1 Disk and dongle protection against softwareand media piracy.

Disk protection — distribute the program on aphysical medium, such as a CD and make theCD hard to copy.

3 / 69

Page 4: Software Protection: How to Crack Programs, and Defend Against

This lecture

1 Disk and dongle protection against softwareand media piracy.

Disk protection — distribute the program on aphysical medium, such as a CD and make theCD hard to copy.Dongle protection — the program refuses torun without a hardware token distributed withthe program.

3 / 69

Page 5: Software Protection: How to Crack Programs, and Defend Against

This lecture. . .

2 Trusted Platform Module (TPM):Small chip soldered to the motherboard of a PCUsed to boot a trusted environmentIBM/Lenovo ThinkPad ships with a TPM chipsnot used in practice

4 / 69

Page 6: Software Protection: How to Crack Programs, and Defend Against

This lecture. . .

3 Crypto-processor:Can execute encrypted programs.Contains encryption key.Program is encrypted with processor’s publickey.Only one computer can run the program!

5 / 69

Page 7: Software Protection: How to Crack Programs, and Defend Against

This lecture. . .

4 Attacks on tamperproof hardware:Physical attacks (shave off the top!)Side channel attacks (“listen” to the chip!)

6 / 69

Page 8: Software Protection: How to Crack Programs, and Defend Against

Dongles andTokens

Page 9: Software Protection: How to Crack Programs, and Defend Against

Dongles

Dongles are hardware devices distributedwith a program.

8 / 69

Page 10: Software Protection: How to Crack Programs, and Defend Against

Dongles

Dongles are hardware devices distributedwith a program.

Prevent piracy.

8 / 69

Page 11: Software Protection: How to Crack Programs, and Defend Against

Dongles

Dongles are hardware devices distributedwith a program.

Prevent piracy.

The dongle must be connected to the user’scomputer,

8 / 69

Page 12: Software Protection: How to Crack Programs, and Defend Against

Dongles

Dongles are hardware devices distributedwith a program.

Prevent piracy.

The dongle must be connected to the user’scomputer,

The program periodically queries thedongle.

8 / 69

Page 13: Software Protection: How to Crack Programs, and Defend Against

Dongles

Dongles are hardware devices distributedwith a program.

Prevent piracy.

The dongle must be connected to the user’scomputer,

The program periodically queries thedongle.

Is the dongle present? Genuine?

8 / 69

Page 14: Software Protection: How to Crack Programs, and Defend Against

HASP

Today dongles are active devices withbuilt-in processors.

9 / 69

Page 15: Software Protection: How to Crack Programs, and Defend Against

HASP

Today dongles are active devices withbuilt-in processors.

Sometimes backed up by a battery.

9 / 69

Page 16: Software Protection: How to Crack Programs, and Defend Against

class Dongle {

private static long count = 3;

private static long memory[]=new long[127];

private static String password = "heyahaya";

private static final long ID = 2376423;

private static final long KEY = 0xab0ab012;

private static java.util.Random rnd;

public static final byte LOGIN = 0;

public static final byte ISPRESENT = 1;

public static final byte ENCODE = 2;

public static final byte DECODE = 3;

public static final byte READ = 4;

public static final byte WRITE = 5;

public static final byte GETID = 6;

public static final byte GETTIME = 7;

public static final long PRESENT = 0xca75ca75;

Page 17: Software Protection: How to Crack Programs, and Defend Against

static long call(byte operation,

String pw,

long arg1, long arg2) {

if (!pw.equals(password) || (count<0)) return -1;

switch (operation) {

case LOGIN : count--;

rnd=new java.util.Random(arg1);

return 0;

case ISPRESENT : return PRESENT;

case ENCODE : return arg1ˆKEY;

case DECODE : return arg1ˆKEY;

case READ : return memory[(int)arg1];

case WRITE : memory[(int)arg1]=arg2;

return 0;

case GETID : return ID;

case GETTIME : return System.currentTimeMillis

default : return -1;

}

}

}

Page 18: Software Protection: How to Crack Programs, and Defend Against

Aladin HASP

The dongle has a small amount of internalmemory

12 / 69

Page 19: Software Protection: How to Crack Programs, and Defend Against

Aladin HASP

The dongle has a small amount of internalmemory

a battery-backed internal realtime clock,

12 / 69

Page 20: Software Protection: How to Crack Programs, and Defend Against

Aladin HASP

The dongle has a small amount of internalmemory

a battery-backed internal realtime clock,

an identifier unique to every dongle

12 / 69

Page 21: Software Protection: How to Crack Programs, and Defend Against

Aladin HASP

The dongle has a small amount of internalmemory

a battery-backed internal realtime clock,

an identifier unique to every dongle

a counter,

12 / 69

Page 22: Software Protection: How to Crack Programs, and Defend Against

Aladin HASP

The dongle has a small amount of internalmemory

a battery-backed internal realtime clock,

an identifier unique to every dongle

a counter,

a password,

12 / 69

Page 23: Software Protection: How to Crack Programs, and Defend Against

Aladin HASP

The dongle has a small amount of internalmemory

a battery-backed internal realtime clock,

an identifier unique to every dongle

a counter,

a password,

a pseudo-random number generator

12 / 69

Page 24: Software Protection: How to Crack Programs, and Defend Against

Aladin HASP

The dongle has a small amount of internalmemory

a battery-backed internal realtime clock,

an identifier unique to every dongle

a counter,

a password,

a pseudo-random number generator

an encryption engine with a hardcoded key.

12 / 69

Page 25: Software Protection: How to Crack Programs, and Defend Against

✞ ☎

public class Main {

static String password = "heyahaya";

static final long timeout = 1281964454908L;

static final long seed = 260124545;

static java.util.Random rnd;

public static void main (String args[]) {

Dongle.call(Dongle.LOGIN,password,seed,0);

rnd = new java.util.Random(seed);

if (Dongle.call(Dongle.GETTIME,

password,0,0)>timeout)

System.exit(-1);

. . .

}

}✝ ✆

Page 26: Software Protection: How to Crack Programs, and Defend Against

Calling the dongle

✞ ☎

if (Dongle.call(Dongle.ISPRESENT,password,0,0)!=

Dongle.PRESENT) {

System.err.println("No dongle present");

System.exit(-1);

}

. . .

long here = Dongle.call(Dongle.ISPRESENT,password,0,0);

. . .

boolean OK = here == Dongle.PRESENT;

. . .

if (!OK) System.exit(-1);✝ ✆

Obfuscate the challenge calls such thatautomatic removal becomes difficult.

14 / 69

Page 27: Software Protection: How to Crack Programs, and Defend Against

Add bogus calls!

✞ ☎

Dongle.call((byte)42,password,secret1,secret2);✝ ✆

Sprinkle bogus calls to the dongle all overyour code!

15 / 69

Page 28: Software Protection: How to Crack Programs, and Defend Against

Problem with Dongles

Contribute to the cost of distribution.

If they contain a battery they will eventuallyhave to be replaced.

If they are lost, the owner will have torequest a new copy.

⇒ Today are only used to protect veryexpensive programs.

16 / 69

Page 29: Software Protection: How to Crack Programs, and Defend Against

http://www.nodongle.com

We can make Emulators for any protection type, Hasp4,HaspHL, Sentinel Super Pro, Aladdin Hardlock, . . . , anyprotection.

Our emulators are 100% perfect, 100% guaranteed.100% private,. . .

Dongle Emulator is a software to allow your program torun without any key attached

We dont have fixed prices, our prices depends [sic] onprotection, not program price dependent, this will be verycheap if compared with program price...

Send a email with some infos about your program, likename and protection, so we can give you a personalizedanswer.

17 / 69

Page 30: Software Protection: How to Crack Programs, and Defend Against

Authenticatedboot using a

trusted platformmodule

Page 31: Software Protection: How to Crack Programs, and Defend Against

Algorithm: Authenticated boot

We’ve assumed the program executes in anuntrusted environment. The adversary can

1 examine (reverse engineer),2 modify (tamper),3 copy (pirate),

our program.

19 / 69

Page 32: Software Protection: How to Crack Programs, and Defend Against

Algorithm: Authenticated boot

We’ve assumed the program executes in anuntrusted environment. The adversary can

1 examine (reverse engineer),2 modify (tamper),3 copy (pirate),

our program.Our techniques have been software based:

1 obfuscation (to make a program harder toexamine),

2 tamperproofing (to make modification harder),3 watermarking (to trace copying).

19 / 69

Page 33: Software Protection: How to Crack Programs, and Defend Against

Algorithm: Authenticated boot

What if we could trust the client to runtrusted

1 hardware,2 operating system,3 applications?

20 / 69

Page 34: Software Protection: How to Crack Programs, and Defend Against

Trusted Platform Boot

Trusted Server

Client

Client

21 / 69

Page 35: Software Protection: How to Crack Programs, and Defend Against

Trusted Platform Boot

Client

Client

Untrusted Client

Trusted Server

21 / 69

Page 36: Software Protection: How to Crack Programs, and Defend Against

Trusted Platform Boot

Untrusted Client

Client

ClientTrusted Server

ClientSW/HW

21 / 69

Page 37: Software Protection: How to Crack Programs, and Defend Against

Trusted Platform Boot

Untrusted Client

Client

ClientTrusted Server

ClientSW/HW

21 / 69

Page 38: Software Protection: How to Crack Programs, and Defend Against

Trusted Platform Boot

SHA−1

Trusted Server

Untrusted Client

ClientSW/HW

21 / 69

Page 39: Software Protection: How to Crack Programs, and Defend Against

Trusted Platform Boot

buy a book!

Trusted Server

Untrusted Client

I want to ClientSW/HW

21 / 69

Page 40: Software Protection: How to Crack Programs, and Defend Against

Trusted Platform Boot

Prove you are safe!

Trusted Server

Untrusted Client

ClientSW/HW

21 / 69

Page 41: Software Protection: How to Crack Programs, and Defend Against

Trusted Platform Boot

Untrusted Client

Trusted ServerHere are hashes

over all my

code!

ClientSW/HW

21 / 69

Page 42: Software Protection: How to Crack Programs, and Defend Against

Algorithm: Authenticated boot

Before you agree to communicate with asystem you ask it to prove to you that itwon’t do anything bad.

22 / 69

Page 43: Software Protection: How to Crack Programs, and Defend Against

Algorithm: Authenticated boot

Before you agree to communicate with asystem you ask it to prove to you that itwon’t do anything bad.Anything that’s running on Bob’s computercould, potentially, affect whether you shouldtrust it:

1 OS,2 BIOS,3 bootloader,4 application programs,5 firmware, . . .

22 / 69

Page 44: Software Protection: How to Crack Programs, and Defend Against

Algorithm: Authenticated boot

then

load

measure

then

load

measure

then

load

measure

then

load

measure

CRTM

kernel

BIOS

loader

23 / 69

Page 45: Software Protection: How to Crack Programs, and Defend Against

Secure boot vs. Authenticated boot

Secure boot: only ever boot a systemconsisting of code that you trust.

Authenticated boot:Bob can boot whatever system he wants!But, he cannot lie about what system he’sbooted!

24 / 69

Page 46: Software Protection: How to Crack Programs, and Defend Against

Client

01

15

...

Server

SHA-1()

EK

PCR[0]PCR[1]

PCR[15]

nonce←RND()

send nonce

1.

kernelSML:

Page 47: Software Protection: How to Crack Programs, and Defend Against

Client

01

15

...

Server

SHA-1()

EK

PCR[0]PCR[1]

PCR[15]

receive nonce2.nonce←RND()

send nonce

1.

kernelSML:

Page 48: Software Protection: How to Crack Programs, and Defend Against

01

15

Server Client

SHA-1()

PCR[0]PCR[1]

PCR[15]

3.send (quote,SML)

receive nonce2.nonce←RND()

send nonce

1.

kernel

quote← sig{PCR,nonce}EK priv

SML:

Page 49: Software Protection: How to Crack Programs, and Defend Against

Client

01

15

...

Server

SHA-1()

EK

PCR[0]PCR[1]

PCR[15]

3.send (quote,SML)

receive nonce2.nonce←RND()

send nonce

1.

kernel

quote← sig{PCR,nonce}EK priv

receive (quote,SML)4.

SML:

Page 50: Software Protection: How to Crack Programs, and Defend Against

Client

01

15

...

Server

SHA-1()

EK

PCR[0]PCR[1]

PCR[15]

3.send (quote,SML)

receive nonce2.nonce←RND()

send nonce

1.

kernel

quote← sig{PCR,nonce}EK priv

receive (quote,SML)

cert(EK pub) OK?

4.

5.

SML:

Page 51: Software Protection: How to Crack Programs, and Defend Against

Client

01

15

...

Server

SHA-1()

EK

PCR[0]PCR[1]

PCR[15]

3.send (quote,SML)

receive nonce2.nonce←RND()

send nonce

1.

kernel

quote← sig{PCR,nonce}EK priv

receive (quote,SML)

cert(EK pub) OK?

sig{PCR,nonce2}EK privvalid?

4.

5.

6.

SML:

Page 52: Software Protection: How to Crack Programs, and Defend Against

Client

01

15

...

Server

SHA-1()

EK

PCR[0]PCR[1]

PCR[15]

receive nonce2.nonce←RND()

send nonce

1.3.send (quote,SML)

kernel

quote← sig{PCR,nonce}EK priv

receive (quote,SML)

cert(EK pub) OK?

sig{PCR,nonce2}EK privvalid?

nonce2 fresh?

4.

5.

6.

7.

SML not tampered?

measurements OK?

SML:

Page 53: Software Protection: How to Crack Programs, and Defend Against

IBM’s implementation

Database of measurements for RedhatFedora: 25000 measurements.

A typical SML: 700-1000 measurements.

26 / 69

Page 54: Software Protection: How to Crack Programs, and Defend Against

IBM’s implementation

Database of measurements for RedhatFedora: 25000 measurements.

A typical SML: 700-1000 measurements.How to collect “good” measurements:

1 boot a “trusted system”2 measure all modules, config files, scripts⇒

whitelist of hashes

26 / 69

Page 55: Software Protection: How to Crack Programs, and Defend Against

IBM’s implementation

Database of measurements for RedhatFedora: 25000 measurements.

A typical SML: 700-1000 measurements.How to collect “good” measurements:

1 boot a “trusted system”2 measure all modules, config files, scripts⇒

whitelist of hashes

How to collect “bad” measurements:1 boot a compromised system (root kits, trojans,

. . . )2 measure infected files⇒ blacklist of hashes

How do we keep these lists up-to-date?!?!26 / 69

Page 56: Software Protection: How to Crack Programs, and Defend Against

Sealing

Disney encrypts Nemo with a specialsealing key Seal .

27 / 69

Page 57: Software Protection: How to Crack Programs, and Defend Against

Sealing

Disney encrypts Nemo with a specialsealing key Seal .Seal depends on

the values in the PCRsthe TPM itself.

⇒ your friend with an identical computercan’t watch your copy of Nemo!

27 / 69

Page 58: Software Protection: How to Crack Programs, and Defend Against

Sealing

Disney encrypts Nemo with a specialsealing key Seal .Seal depends on

the values in the PCRsthe TPM itself.

⇒ your friend with an identical computercan’t watch your copy of Nemo!If you reboot with slightly hacked OS

the PCRs will have changed⇒ the Seal will be different⇒ you can’t decrypt Nemo!

27 / 69

Page 59: Software Protection: How to Crack Programs, and Defend Against

Sealing

Disney encrypts Nemo with a specialsealing key Seal .Seal depends on

the values in the PCRsthe TPM itself.

⇒ your friend with an identical computercan’t watch your copy of Nemo!If you reboot with slightly hacked OS

the PCRs will have changed⇒ the Seal will be different⇒ you can’t decrypt Nemo!

Microsoft could do the same to protectOffice.

27 / 69

Page 60: Software Protection: How to Crack Programs, and Defend Against

Encryptedexecution

Page 61: Software Protection: How to Crack Programs, and Defend Against

Encrypted execution

Idea:Encrypt the program.Keep a (unique) secret key in the CPU.Decrypt inside the CPU.

Protect algorithms (privacy)!

Protect from tampering (integrity)!

Protect from cloning (piracy)!

Assume the CPU cannot be tampered with.

29 / 69

Page 62: Software Protection: How to Crack Programs, and Defend Against

XOM Overview

server

ALU

cacheDES

RSA

AR

MCPU

Kpriv

Ksym

EKsym(P)

EKpub(Ksym)

P

Kpub

30 / 69

Page 63: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture

Stanford design.

Never implemented in silicon.

Simulated in software.

Operating system, XOMOS, runs on top ofit.

31 / 69

Page 64: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture — Compartments

Each process may run in different securitymode.

Encrypted programs are slow!

Programs may switch between encryptedand cleartext execution.CPU has 4 Compartments:

logical containersprotect one process from being observed ormodified by another process.the OS is untrusted: runs in its owncompartment!

32 / 69

Page 65: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture — Compartments

Compartment 0: code runs unencrypted

ACTIVE register: current executingcompartment

Session key table: Maps compartment IDto key.

Each register is tagged with compartmentkey.

Each cache line is tagged withcompartment key.

On-chip data is in cleartext.

On cache flush: encrypt!33 / 69

Page 66: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture — Example

ALUDESCPU

RAM

session-key table

ID session-key

0 --------

1 Asym

2 Bsym

3 --------

register file

reg contents tag

r0 42 0

r1 67 2

r2 314 2

r3 218 1

cache

addr cache line tag

0

1 I1 2

2 I2 1

3 D1 2

ACTIVE

2

34 / 69

Page 67: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture — Example

RAM

CPU

addr contents

0

1 Bsym(I1‖CRC(I1))2 Asym(I2‖CRC(I2))3 Bsym(D1‖CRC(D1))

35 / 69

Page 68: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture — Example

The CPU tries to load data value D1 at address3 into register r0:

1 Look in the cache line: empty!

36 / 69

Page 69: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture — Example

The CPU tries to load data value D1 at address3 into register r0:

1 Look in the cache line: empty!2 Cache miss, read Bsym(D1‖CRC(D1)) from

address 3.

36 / 69

Page 70: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture — Example

The CPU tries to load data value D1 at address3 into register r0:

1 Look in the cache line: empty!2 Cache miss, read Bsym(D1‖CRC(D1)) from

address 3.3 Look up key for the active compartment:

Bsym.

36 / 69

Page 71: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture — Example

The CPU tries to load data value D1 at address3 into register r0:

1 Look in the cache line: empty!2 Cache miss, read Bsym(D1‖CRC(D1)) from

address 3.3 Look up key for the active compartment:

Bsym.4 Decrypt the cache-line!

36 / 69

Page 72: Software Protection: How to Crack Programs, and Defend Against

The XOM architecture — Example

5 Adversary could have swapped D1it foranother encrypted value from some otherpart of the code!

Store CRC hash of each cache line.If CRC doesn’t match⇒ exception!Otherwise, load D1 into register r0Set r0’s tag to 2.

37 / 69

Page 73: Software Protection: How to Crack Programs, and Defend Against

Attacks onTamperproof

Devices

Page 74: Software Protection: How to Crack Programs, and Defend Against

Attacks on Tamperproof Devices

Assumption: Physical barrier isn’t broken!This section:

1 Attacking the XBOX2 Invasive attacks on smartcards3 Non-invasive attacks on smartcards

39 / 69

Page 75: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

MIT Ph.D. student Andrew “bunnie” Huanggot an XBOX game console from his fiance’for Christmas.

40 / 69

Page 76: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

MIT Ph.D. student Andrew “bunnie” Huanggot an XBOX game console from his fiance’for Christmas.

He took it apart.

40 / 69

Page 77: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

MIT Ph.D. student Andrew “bunnie” Huanggot an XBOX game console from his fiance’for Christmas.

He took it apart.

He cracked the security.

40 / 69

Page 78: Software Protection: How to Crack Programs, and Defend Against

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

X86 CPU, 64 MB of cheap RAM,northbridge and southbridge chips, IDEcontrollers, etc.

Page 79: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

System startup:1 boot block executes

42 / 69

Page 80: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

System startup:1 boot block executes2 boot block decrypts, verifies, and jumps to the

bootloader

42 / 69

Page 81: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

System startup:1 boot block executes2 boot block decrypts, verifies, and jumps to the

bootloader3 bootloader decrypts, verifies, and jumps to the

OS kernel42 / 69

Page 82: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

Observations:1 key and decryptor in the southbridge.

43 / 69

Page 83: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

Observations:1 key and decryptor in the southbridge.2 the CPU decrypts

43 / 69

Page 84: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

Observations:1 key and decryptor in the southbridge.2 the CPU decrypts3 ⇒ key/decryptor will travel in cleartext over two

busses!43 / 69

Page 85: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

Which bus to tap?1 north-southbridge bus: 0nly 8 bits wide!

44 / 69

Page 86: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

Which bus to tap?1 north-southbridge bus: 0nly 8 bits wide!2 solder a tap board onto the bus

44 / 69

Page 87: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

Which bus to tap?1 north-southbridge bus: 0nly 8 bits wide!2 solder a tap board onto the bus3 sniff the decryptor + key

44 / 69

Page 88: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

Which bus to tap?1 north-southbridge bus: 0nly 8 bits wide!2 solder a tap board onto the bus3 sniff the decryptor + key4 pattern match⇒ RC/4 decryptor!

44 / 69

Page 89: Software Protection: How to Crack Programs, and Defend Against

The Microsoft XBOX hack

TAP

CPU

MAR

bootloader

1) decrypt kernel

3) call kernel

fake boot block

1) decrypt bootloader

kernel

FLASH ROMsouthbridge

128−bit RC/4 key

RC/4 decryptor

secret boot block

3) call bootloader

2) decryption OK?

128−bits

8−bits

200 Mhz

2) decryption OK?

8−bits

200 Mhznorthbridge

<10 Mhz

64−bits

133 Mhz

MOD

Which bus to tap?1 north-southbridge bus: 0nly 8 bits wide!2 solder a tap board onto the bus3 sniff the decryptor + key4 pattern match⇒ RC/4 decryptor!5 try every 16 bytes from bootblock as key!

44 / 69

Page 90: Software Protection: How to Crack Programs, and Defend Against

Hackingsmartcards

Page 91: Software Protection: How to Crack Programs, and Defend Against

Smartcards

3DES

RSASHA−1

EEPROMRAM

Vcc

RST

Vpp

CLK

GND

I/O

Mass transit, prepaid phone cards,identification cards, SIM cards, pay-TVset-top boxes, credit cards.Protected memory in which a secret can bestored. 46 / 69

Page 92: Software Protection: How to Crack Programs, and Defend Against

Smartcards

3DES

RSASHA−1

EEPROMRAM

Vcc

RST

Vpp

CLK

GND

I/O

Gets power and clock fromCard Acceptance Device (CAD).CAD and card communicate over 1-bitserial ylink.

47 / 69

Page 93: Software Protection: How to Crack Programs, and Defend Against

Invasive vs. non-invasive attacks

3DES

RSASHA−1

EEPROMRAM

Vcc

RST

Vpp

CLK

GND

I/O

Invasive attack:1 expose the bare chip,

48 / 69

Page 94: Software Protection: How to Crack Programs, and Defend Against

Invasive vs. non-invasive attacks

3DES

RSASHA−1

EEPROMRAM

Vcc

RST

Vpp

CLK

GND

I/O

Invasive attack:1 expose the bare chip,2 probe the surface to extract information

48 / 69

Page 95: Software Protection: How to Crack Programs, and Defend Against

Invasive vs. non-invasive attacks

3DES

RSASHA−1

EEPROMRAM

Vcc

RST

Vpp

CLK

GND

I/O

Invasive attack:1 expose the bare chip,2 probe the surface to extract information3 poke the surface to modify the chip

48 / 69

Page 96: Software Protection: How to Crack Programs, and Defend Against

Invasive vs. non-invasive attacks

3DES

RSASHA−1

EEPROMRAM

Vcc

RST

Vpp

CLK

GND

I/O

Invasive attack:1 expose the bare chip,2 probe the surface to extract information3 poke the surface to modify the chip

Non-invasive attack:monitor execution characteristics (power,radiation, execution time) etc.

48 / 69

Page 97: Software Protection: How to Crack Programs, and Defend Against

Invasive vs. non-invasive attacks

3DES

RSASHA−1

EEPROMRAM

Vcc

RST

Vpp

CLK

GND

I/O

Invasive attack:1 expose the bare chip,2 probe the surface to extract information3 poke the surface to modify the chip

Non-invasive attack:monitor execution characteristics (power,radiation, execution time) etc.watch normal operations or induce faults

48 / 69

Page 98: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Invasive attacks

Chipworks can extract analog or digital circuits fromsemiconductor devices and deliver detailedeasy-to-understand schematics that document a singlefunctional block or all the circuits. . . . We decapsulate thechip and analyze the die to locate the circuit blocks ofinterest. Then, using our Image Capture and ImagingSystem (ICIS) we generate mosiacs for each level ofinterconnect. Finally, advanced software and expertise isused to extract the circuits for analysis.

49 / 69

Page 99: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Invasive attacks —

Depackaging

1 Remove the chip from the card itself byheating and bending it.

2 Remove the epoxy resin around the chip bydipping it in 60◦C fuming nitric acid.

3 Clean the chip by washing it with acetone inan ultrasonic bath.

4 Mount the exposed chip in a test packageand connect its pads to the pins of thepackage.

50 / 69

Page 100: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Invasive attacks —

Deprocessing

5 Use an optical microscope to take largehigh-resolution pictures of the chip surface.

6 Identify major architectural features (ROM,ALU, EEPROM, etc.) and/or lower-levelfeatures such as busses and gates.

7 Remove the top metal track layer by dippingthe chip in hydrofluoric acid in an ultrasonicbath.

8 Repeat from 5, for each layer.

51 / 69

Page 101: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Invasive attacks — Reverse

Engineering

Reverse engineer the chip

Analyze the information collected

Understand the functional units of the chip

52 / 69

Page 102: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Invasive attacks —

Microprobing

9 To allow the probe contact with the chip,use a laser cutter mounted on themicroscope to remove (patches of) thepassivation layer that covers the top-layeraluminum interconnect lines.

10 Record the activity on a few of the bus lines(as many as you have probes) as you gothrough a transaction with the card.

11 Repeat from 10 until you’ve collected thebus activity trace from all of the bus lines.

53 / 69

Page 103: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Christopher Tarnovsky

54 / 69

Page 104: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Christopher Tarnovsky

Dish Network is accusing News Corp . . . of hiring hackerChristopher Tarnovsky to break into Dish’s network, stealthe security codes, and use them to make pirated cardsto flood the black market.

Tarnovsky admitted in court he was paid James Bondvillain style, with $20,000 cash payments mailed fromCanada hidden inside “electronic devices.”

http://gizmodo.com/383753/news-corp-hires-

55 / 69

Page 105: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Invasive attacks —

Summary

Attacks get harder as features get smaller

Rent a lab!

User your university lab!

56 / 69

Page 106: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Non-invasive attacks

Passive attack:Watch what comes out of the chip. . . , electromagnetic radiation, powerconsumption, execution time, . . .

Active attack:Feed carefully constructeddata/power/clock/. . . to the chip,then measure the chip’s behavior.

57 / 69

Page 107: Software Protection: How to Crack Programs, and Defend Against

Smartcards — Timing attacks

✞ ☎

s[0] = 1;

for(k=0; k<w; k++) {

if (x[k] == 1)

R[k] = (s[k]*y) modn;

else

R[k] = s[k];

s[k+1] = R[k]*R[k] mod n

}

return R[w-1];✝ ✆

Ask card: “please encrypt this file with yoursecret key”

58 / 69

Page 108: Software Protection: How to Crack Programs, and Defend Against

Boardlevelprotection

Page 109: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 cryptographic coprocessor

Physical protection hasn’t been broken!

Costs about $4000.

Vending machines that “sell money”:topping up mobile phones, adding money tosmartcards, or printing postage stamps.

Used by banks to protect electronictransfers from insider attacks.

60 / 69

Page 110: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 cryptographic coprocessor

SensorsVcc

32 bit internal bus

P

ub

s

IC

CPU486

DA

TE

RN

D4MB

powertemp

mesh

SHA−1RSA3DES

RAM4MB

FLASH

RAM32KB

BOARDPCI

radiation

61 / 69

Page 111: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 cryptographic coprocessor

PCI card — plug in to a host computer.

486-type processor, 4MB of RAM, 4MB ofFLASH, 32KB of battery backed RAM.

Cryptographic facilities: DES, 3DES, RSA,true random number generation, SHA-1.

Date and time unit.

62 / 69

Page 112: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 — Tamper-detection

When tamper-detection sensor triggers:1 Turn off power to the battery backed RAM⇒

zero secret code and data.2 Reset the CPU⇒ destroy RAM contents.

63 / 69

Page 113: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 — Attacks and Defenses

Penetration attacks:⇒ “polyurethane mixture and a film with animprinted circuit pattern to detect minutepenetration and erosion attacks”

64 / 69

Page 114: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 — Attacks and Defenses

Penetration attacks:⇒ “polyurethane mixture and a film with animprinted circuit pattern to detect minutepenetration and erosion attacks”

Memory remanence attacks:Freeze/radiate, remove from computer, drilldown to RAM⇒ temperature and radiation sensors

64 / 69

Page 115: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 — Attacks and Defenses

Penetration attacks:⇒ “polyurethane mixture and a film with animprinted circuit pattern to detect minutepenetration and erosion attacks”

Memory remanence attacks:Freeze/radiate, remove from computer, drilldown to RAM⇒ temperature and radiation sensors

Fault-induction attacks:Bring voltage abnormally high or low.⇒ low and high voltage sensors.

64 / 69

Page 116: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 — Attacks and Defenses

Power analysis attacks:⇒ filter the power supply

65 / 69

Page 117: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 — Attacks and Defenses

Power analysis attacks:⇒ filter the power supply

Electromagnetic analysis attacks:⇒ shield the board in a metal enclosure(Faraday Cage)

65 / 69

Page 118: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 — Summary

No known attacks against the physicalprotection of the 4758.

66 / 69

Page 119: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 — Summary

No known attacks against the physicalprotection of the 4758.

Lessons: Must protect againstany kind of leakage of informationany injection of faulty code/dataany adverse environmental conditions

66 / 69

Page 120: Software Protection: How to Crack Programs, and Defend Against

IBM 4758 — Summary

No known attacks against the physicalprotection of the 4758.

Lessons: Must protect againstany kind of leakage of informationany injection of faulty code/dataany adverse environmental conditions

Can we build a device that isefficient,secure, andcheap?

66 / 69

Page 121: Software Protection: How to Crack Programs, and Defend Against

Discussion

Page 122: Software Protection: How to Crack Programs, and Defend Against

Disadvantages

Deployment — long time before newtechnology is on every PC.Cost — extra hardware is expensive.Usability —

Lose a dongle?Upgrade to a faster CPU, with different key?Software vendor goes out of business?

Security — invasive attacks, side-channelattacks.Performance — crypto-processors areslower.Engineering — design complexity, ease oftesting, . . .

68 / 69

Page 123: Software Protection: How to Crack Programs, and Defend Against

Thank You!

69 / 69