31
embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der Entwickler“ - M,O,C München, 07. Juli 2004

Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

Embed Size (px)

Citation preview

Page 1: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

embedded IPsec

VPN Implementation fürlow-end embedded Systeme

“Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1

„D&E - Tag der Entwickler“ - M,O,C München, 07. Juli 2004

Page 2: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

2

• Hintergrund, Motivation und Ziele

• Design und Implementation

• Testen

• Ergebnisse

Übersicht

Page 3: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

3

Hintergrund

• 2003: Sicherheit für vernetzte Systeme: Passwort

• 2004: Zahlreiche Angebote zum Thema Fernwartung über GSM

• 200x: Vernetzt über öffentliche Netze

Page 4: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

4

Motivation

• Offene IPsec Implementation ausgelegt für low-end embedded Systeme

• Interoperabilität mit andern IPsec Systemen

Page 5: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

5

Vorbereitung: Verständnis

• IPsec verstehen– Literatur

• Big Book of IPsec RFCs(Peter Loshin, Morgan Kaufmann 2000)

• Netzsicherheit(Günter Schäfer, dpunkt Verlag 2003)

• Praktische Tests- Linux Kernel 2.6- FreeS/WAN (jetzt OpenS/WAN, StrongS/WAN)

Page 6: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

6

Vorbereitung: Arbeitsplatz

• Entwicklungsumgebung

– PC mit Keil uVision IDE und Sniffer

– VMware Workstation (oder PC) mit FreeS/WAN und Linux Kernel 2.6 IPsec

– C167-Board

– 10Mbit Ethernet Hub

Page 7: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

7

Design

3DES CBC encrypt3DES CBC decrypt

HMAC-MD5HMAC-SHA1

AH encapsulate

AH check

ESP decapsulate

ESP encapsulate

SAD lookupSPD lookupSPD lookup

IPsec Output

IPsec Input

cs8900 outputcs8900 input

IP input

IP output

IPsec I/O

SAD

ESP

AH

Cryptolibrary

SPD

IPsecDeviceDriver

TCP/IPStack

cs8900NetworkDriver

embedded IPsecModule

Page 8: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

8

Implementation der Module

Reihenfolge Implementation:1.) Anbindung an TCP/IP Stack2.) Konfigurationsdatenbanken3.) Crypto Funktionen4.) AH Protokoll5.) ESP Protokoll6.) AntiReplay, ...

Page 9: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

9

ipsecdev / ipsec Module

3DES CBC encrypt3DES CBC decrypt

HMAC-MD5HMAC-SHA1

AH encapsulate

AH check

ESP decapsulate

ESP encapsulate

SAD lookupSPD lookupSPD lookup

IPsec Output

IPsec Input

cs8900 outputcs8900 input

IP input

IP output

IPsec I/O

SAD

ESP

AH

Cryptolibrary

SPD

IPsecDeviceDriver

TCP/IPStack

cs8900NetworkDriver „ipsecdev“

Page 10: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

10

lwIP TCP/IP Stack

TCP/IP Stack

CS8900 Driver Device Driver

I P Layer

cs8900_ input() cs8900_output()

ip_ input() ip_output()

input output

Ethernet

lwIP – a light weight TCP/IP Stack

Page 11: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

11

IPsec Integration

TrafficInterception

I Pseclibrary

Device Driver

I P Layer

I Psec Driveripsecdev_ input() ipsecdev_output()

cs8900_ input() cs8900_output()

ip_ input() ip_output()

input output

ipse

c_in

put(

)

ipse

c_ou

tput

()

Ethernet

IPsec LibraryIPsec Driver

Page 12: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

12

IPsec Datenbank Module

3DES CBC encrypt3DES CBC decrypt

HMAC-MD5HMAC-SHA1

AH encapsulate

AH check

ESP decapsulate

ESP encapsulate

SAD lookupSPD lookupSPD lookup

IPsec Output

IPsec Input

cs8900 outputcs8900 input

IP input

IP output

IPsec I/O

SAD

ESP

AH

Cryptolibrary

SPD

IPsecDeviceDriver

TCP/IPStack

cs8900NetworkDriver SPD und SAD

Page 13: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

13

Security Policy Database

• Welche Pakete werden verarbeitet?– DISCARD

– BYPASS

– APPLY

Page 14: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

14

Security Policy Database

Beispiel einer SPD Konfiguration

Page 15: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

15

Security Association Database

• Wie werden Pakete verarbeitet?– Tunnel oder Transport Mode – AH oder ESP – Algorithmen und Keys– Security Parameter Index

Page 16: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

16

Security Association Database

Beispiel einer SAD Konfiguration

Page 17: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

17

Outbound Processing

Datenfluss beiOutbound Processing

SPDlookup

encapsulateIPsec packet

device driveroutput

BYPASS

DISCARD

audi

tabl

e ev

ents

ipsecdev_output()

cs8900_output()

IP output

APPLYip_output()SA

Page 18: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

18

AH / ESP / Crypto - Module

3DES CBC encrypt3DES CBC decrypt

HMAC-MD5HMAC-SHA1

AH encapsulate

AH check

ESP decapsulate

ESP encapsulate

SAD lookupSPD lookupSPD lookup

IPsec Output

IPsec Input

cs8900 outputcs8900 input

IP input

IP output

IPsec I/O

SAD

ESP

AH

Cryptolibrary

SPD

IPsecDeviceDriver

TCP/IPStack

cs8900NetworkDriver AH und ESP

Page 19: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

19

Crypto - Library

• Crypto Funktionen von OpenSSL– DES, 3DES– HMAC-MD5-96, HMAC-SHA1-96

• Für MCU optimierte Versionen– Dmitry Basko‘s DES

• http://www.dbasko.com – Graham Cole‘s MD5

• http://www.programmersheaven.com/zone5/cat27/index.htm

Page 20: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

20

Authentication Header

unencrypted IP packet

IP header IP payloadfree headroom

free tailroom

one contiguous block of RAM

authenticated IP packetfree headroom

free tailroomIC

V

Nex

t hea

der,

Leng

th,

SP

I,S

eq N

r

deca

psul

atio

n

new

IPhe

ader

encapsulation

AH in IP packet (tunnel mode)

AHheader

AH payload

Page 21: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

21

Encapsulating Security Payload

unencrypted IP packet

IP header IP payloadfree headroom

free tailroom

one contiguous block of RAM

encrypted and padded IP packetfree headroom

free tailroomIVS

PI

Seq

Nr.

ICV

Pad

ding

,P

add.

Len

,ne

xt H

eade

r

decr

yptio

n /

deca

psul

atio

n

new

IPhe

ader

encryption /encapsulation

ESP in IP packet (tunnel mode)

ESPheader

ESP payload

Page 22: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

22

Speicherverwaltung

free memoryspace

free memoryspace

lengthpayload

p bufhe ade r

pbufdata space

IP header

TCP header

payload

len gth

next

free memoryspace

free memoryspace

lengthpayload

pbufhe ade r

pbufdata space

le n gth

next

IPsec header

outer I P header

inner packet

padding & ICV

Page 23: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

23

Testen

• Test-Konzept

IPsec ModuleImplementation

Functional Test

Structural Test

Sample Application

Automated TestScripts

embedded IPsecRelease Version

1.

2.

3.

Page 24: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

24

Structural Tests

• Structural TestsTST sa_test_sad_lookup() : SUCCESS : TST sa_test_sad_get_spi(): SUCCESS : TST sa_test_spd_flush() : NOT IMPL. : TST sa_test_sad_flush() : NOT IMPL. :

TST test_esp_decapsulate : SUCCESS : TST test_esp_encapsulate : SUCCESS :

MSG main : structural testing finished:MSG main : o 100.00% correct (92 of 92 tests passed)MSG main : o 82.61% complete (19 of 23 functions implemented)

Page 25: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

25

Functional Tests

• Functional Tests

IP layer

IPsec driver

Network Driver

Transport Layer

Application Layer

IP layer

IPsec driver

Network Driver

Transport Layer

Application LayerInject applicationdata: e.g webpage

Compare withexpected result

Inject IPsecpackets

Compare withexpected result

Bottom

-up Test

Top-dow

n Test

Page 26: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

26

Ergebnisse: Grösse

• Grösse

05'000

10'00015'00020'00025'00030'00035'00040'000

size

[by

tes]

IPSE

CIP

SECD

EV AH ESP SA D

ESM

D5

SHA1

UTI

L

RAMROMCode

Protokolle und DBtotal 18kB

Crypto Library aufOpenSSL Basistotal 90kB

Page 27: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

27

Ergebnisse: Performance

• Performance

0

200

400

600

800

1000

1200

64 128 256 512 768 1024 1280Payload size [bytes]

Roun

d-tr

ip ti

me

[ms]

non-IPsecAH HMAC-MD5AH HMAC-SHA1ESP 3DESESP 3DES HMAC-MD5ESP 3DES HMAC-SHA1

64 BytesOhne: 5 mS

AH-MD5: 19 mSESP-3DES: 60 mS

512 BytesOhne: 8 mS

AH-MD5: 38 mSESP-3DES: 351 mS

1280 BytesOhne: 13 mS

AH-MD5: 165 mSESP-3DES: 851 mS

Page 28: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

28

Einsatzgebiete

• Einsatzgebiete– Vernetzte Sensoren– Gebührenzähler

Protokoll Round-Trip Time[1024 Bytes] Durchsatz Anwendung

AH-MD5 60 mS ca. 25 kB/s DatenESP-3DES 685 mS ca. 2.5 kB/s HTMLESP-3DES-MD5 733 mS ca. 2 kB/s Email

Page 29: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

29

Interoperabilität

• InteroperabilitätAus Linux Kernel 2.6.7 (./net/ipv4/esp4.c): .. esph = (struct ip_esp_hdr*)skb->data; iph = skb->nh.iph; /* Get ivec. This can be wrong, check against another impls. */ if (esp->conf.ivlen) crypto_cipher_set_iv(esp->conf.tfm, esph->enc_data, crypto_tfm_alg_ivsize(esp->conf.tfm)); {

u8 nexthdr[2]; ...

Page 30: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

30

16-Bit Demo

Demo

Page 31: Embedded IPsec VPN Implementation für low-end embedded Systeme “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1 „D&E - Tag der

31

Versuchs-Aufbau

16-Bit (Infineon C167)

8-Bit (ATMEL AVR)

Laptop (grau)

Laptop (schwarz)

Hub

192.168.1.21

192.168.1.20

192.168.1.5192.168.1.3

192.168.1.4