320 likes | 505 Views
embedded IPsec VPN Implementation für low-end embedded Systeme. „D&E - Tag der Entwickler“ - M,O,C München, 07. Juli 2004. “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer. 1. Übersicht. Hintergrund, Motivation und Ziele Design und Implementation Testen
E N D
embedded IPsec VPN Implementation fürlow-end embedded Systeme „D&E - Tag der Entwickler“ - M,O,C München, 07. Juli 2004 “Tag der Entwickler” – 7. Juli 2004 – M,O,C, München Christian Scheurer 1
Übersicht • Hintergrund, Motivation und Ziele • Design und Implementation • Testen • Ergebnisse 2
Hintergrund • 2003: Sicherheit für vernetzte Systeme: Passwort • 2004: Zahlreiche Angebote zum Thema Fernwartung über GSM • 200x: Vernetzt über öffentliche Netze 3
Motivation • Offene IPsec Implementation ausgelegt für low-end embedded Systeme • Interoperabilität mit andern IPsec Systemen 4
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) 5
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 6
Design embedded IPsecModule 7
Implementation der Module Reihenfolge Implementation: 1.) Anbindung an TCP/IP Stack 2.) Konfigurationsdatenbanken 3.) Crypto Funktionen 4.) AH Protokoll 5.) ESP Protokoll 6.) AntiReplay, ... 8
„ipsecdev“ ipsecdev / ipsec Module 9
TCP/IP Stack CS8900 Driver lwIP TCP/IP Stack lwIP – a light weight TCP/IP Stack 10
IPsec Driver IPsec Library IPsec Integration Traffic Interception 11
IPsec Datenbank Module SPD und SAD 12
Security Policy Database • Welche Pakete werden verarbeitet? • DISCARD • BYPASS • APPLY 13
Security Policy Database Beispiel einer SPD Konfiguration 14
Security Association Database • Wie werden Pakete verarbeitet? • Tunnel oder Transport Mode • AH oder ESP • Algorithmen und Keys • Security Parameter Index 15
Security Association Database Beispiel einer SAD Konfiguration 16
SA Outbound Processing Datenfluss beiOutbound Processing 17
AH / ESP / Crypto - Module AH und ESP 18
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 19
Testen • Test-Konzept 3. 2. 1. 23
Structural Tests • Structural Tests TST 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) 24
Functional Tests • Functional Tests 25
Crypto Library aufOpenSSL Basistotal 90kB Protokolle und DBtotal 18kB Ergebnisse: Grösse • Grösse 26
1280 Bytes Ohne: 13 mSAH-MD5: 165 mS ESP-3DES: 851 mS 512 Bytes Ohne: 8 mSAH-MD5: 38 mS ESP-3DES: 351 mS 64 Bytes Ohne: 5 mSAH-MD5: 19 mS ESP-3DES: 60 mS Ergebnisse: Performance • Performance 27
Einsatzgebiete • Einsatzgebiete • Vernetzte Sensoren • Gebührenzähler 28
Interoperabilität Aus 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]; ... • Interoperabilität 29
16-Bit Demo Demo 30
Versuchs-Aufbau 16-Bit (Infineon C167) Laptop (grau) Hub 192.168.1.3 192.168.1.5 192.168.1.4 Laptop (schwarz) 8-Bit (ATMEL AVR) 192.168.1.21 192.168.1.20 31