Alle wollen in die Cloud und alle Geräte bekommen eine Netzwerkverbindung.
Die Versprechen von IOT sind groß, in der Praxis macht sich schnell Ernüchterung breit.
Entweder es funktioniert erst gar nicht oder es stellt sich heraus dass große, nicht patchbare Sicherheitslücken das ganze Internet bedrohen.
Wir stellen uns seit Jahren dem Problem und haben verschiedene Lösungsansätze gesehen.
In der Session erfahrt ihr:
* Erfahrungen: Was funktioniert? Was nicht?
* Vorschläge, wie wir das Problem heute angehen können
Letztlich wollen wir auch morgen noch auf ein funktionierendes Internet zurückgreifen können.
DevDay 2017: Andreas Reischuck - Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT
1. Benutzbare & Sichere Kommunikation
für die vernetzte Welt des IOT
DevDay, 4. April 2017 von Andreas Reischuck
2.
3. Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 3DevDay, 4. April 2017 von Andreas Reischuck
Live Coding: „Bessere Test Matchers mit C++14“
13. April, 20 Uhr
4. Dresden Weekly
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 4DevDay, 4. April 2017 von Andreas Reischuck
Meet, Hack & Discuss
Jeden Mittwoch, ab 18 Uhr
14. Netzwerk
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT DevDay, 4. April 2017 von Andreas Reischuck
15. Protokolle
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 16DevDay, 4. April 2017 von Andreas Reischuck
16. Industrie 4.0
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 17DevDay, 4. April 2017 von Andreas Reischuck
17. Internet of Things
Das Internet der Dinge
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 18DevDay, 4. April 2017 von Andreas Reischuck
18. Internet
für
Wasserkocher, Toaster, Kameras,
Autos, Uhren, Schuhe, Tische, Kühlschränke,
Herde, Wasserhähne, Lampen, Türen,
…
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 19DevDay, 4. April 2017 von Andreas Reischuck
19. Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 20DevDay, 4. April 2017 von Andreas Reischuck
20. Oktober 2016
In a relatively short time we've taken a
system built to resist destruction by
nuclear weapons and made it vulnerable
to toasters.
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 21DevDay, 4. April 2017 von Andreas Reischuck
Jeff Jarmoc -
21. Security durch Cloud
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 22DevDay, 4. April 2017 von Andreas Reischuck
31. Für jedes Gerät neu…
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 32DevDay, 4. April 2017 von Andreas Reischuck
32. AUFWAND
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT DevDay, 4. April 2017 von Andreas Reischuck
33. TODO:
1. Aufwand Senken
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 34DevDay, 4. April 2017 von Andreas Reischuck
34. OpenSSL Heartbleed
• Wenn du lebst, sende mir folgende 40000
Zeichen: “ping”
• Antwort: “ping…Geheimnisse danach…”
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 35DevDay, 4. April 2017 von Andreas Reischuck
35. Bugs
• 34 CVEs in libpng
– https://www.cvedetails.com/vulnerability-
list/vendor_id-7294/Libpng.html
• ≥ 90 CVEs in Wireshark (2016)
– https://www.cvedetails.com/vulnerability-
list/vendor_id-4861/product_id-8292/year-
2016/Wireshark-Wireshark.html
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 36DevDay, 4. April 2017 von Andreas Reischuck
37. TODO:
1. Aufwand Senken
2. Sicherheit erhöhen
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 38DevDay, 4. April 2017 von Andreas Reischuck
38. Günstige Hardware
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 39DevDay, 4. April 2017 von Andreas Reischuck
39. Bandbreite
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 40DevDay, 4. April 2017 von Andreas Reischuck
40. Realtime Anforderungen
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 41DevDay, 4. April 2017 von Andreas Reischuck
42. TODO:
1. Aufwand Senken
2. Sicherheit erhöhen
3. Optimierungen vereinfachen
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 43DevDay, 4. April 2017 von Andreas Reischuck
43. Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT DevDay, 4. April 2017 von Andreas Reischuck
50. Idee:
• Single point of truth
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 51DevDay, 4. April 2017 von Andreas Reischuck
51. Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 52DevDay, 4. April 2017 von Andreas Reischuck
52. WAS EXISTIERT?
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT DevDay, 4. April 2017 von Andreas Reischuck
53. HTTP/REST APIs
• JSON/UTF8 Kodierung
• Swagger für API Beschreibung
Groß / Aufwendig zu packen
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 54DevDay, 4. April 2017 von Andreas Reischuck
54. ASN.1
• DER / BER Kodierungen
• Zertifikate, SNMP, LDAP, …
Komplex / Fehleranfällig
Keine Kontrolle über Transport
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 55DevDay, 4. April 2017 von Andreas Reischuck
55. Protobuf, Thrift, MessagePack, …
• Beschreibung der transportierten Daten
• Generieren Quellcode
Keine Kontrolle über Transport
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 56DevDay, 4. April 2017 von Andreas Reischuck
56. Data Format Description Language (2011)
• XML Schema basiert
• Beschreibung von Text & Binary
• Daffodil zum Parsen binärer Daten
Nur Parsen?
Kaum Fortschritt
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 57DevDay, 4. April 2017 von Andreas Reischuck
https://en.wikipedia.org/wiki/Data_Format_Description_Language
57. Nail
“A practical tool for parsing and generating
data formats.”
• Master Arbeit von Nickolai Zeldovich
• Experimentelle Code Generierung
Keine Weiterentwicklung
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 58DevDay, 4. April 2017 von Andreas Reischuck
https://github.com/jbangert/nail
58. msoscheme
• Powerpoint Importer für Calligra Office
• 6’000 Zeilen Beschreibung
• 700 Zeilen Quellcode zur Generierung
• Generiert 30’000 Zeilen Quellcode
Speziallösung
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 59DevDay, 4. April 2017 von Andreas Reischuck
https://gitorious.org/msoscheme/msoscheme
59. Neues
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 60DevDay, 4. April 2017 von Andreas Reischuck
60. TODO:
1. Aufwand Senken
2. Sicherheit erhöhen
3. Optimierungen vereinfachen
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 61DevDay, 4. April 2017 von Andreas Reischuck
62. SYNTAX
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT DevDay, 4. April 2017 von Andreas Reischuck
63. map [u8] <-> [u32] as Name {}
Codec Definition
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 64DevDay, 4. April 2017 von Andreas Reischuck
64. map type1 <-> type2 as Name {}
Codec Definition
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 65DevDay, 4. April 2017 von Andreas Reischuck
65. map [u8] <-> struct Name {}
Neue struct codec Definition
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 66DevDay, 4. April 2017 von Andreas Reischuck
66. struct Name {}
Abkürzung
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 67DevDay, 4. April 2017 von Andreas Reischuck
67. struct Foo {
N : Codec1 | Codec2 name;
}
N Bytes über Codec1 & 2 als name speichern
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 68DevDay, 4. April 2017 von Andreas Reischuck
68. struct Foo {
4 : u32 name;
}
4 Bytes als 32 Bit unsigned Integer
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 69DevDay, 4. April 2017 von Andreas Reischuck
69. struct Foo {
u32 name;
}
Abkürzung
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 70DevDay, 4. April 2017 von Andreas Reischuck
70. alternative<id : u8> as Data {
Alias1 : 1 => Codec1;
Alias2 : 2 => Codec2;
} Alternativen auswerten
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 71DevDay, 4. April 2017 von Andreas Reischuck
71. Protokollbeschreibungssprache
• Einfaches bleibt einfach
• Komplexes wird möglich
Immer deklarativ & klar
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 72DevDay, 4. April 2017 von Andreas Reischuck
73. Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 74DevDay, 4. April 2017 von Andreas Reischuck
74. Protlr
Easy handling of binary communication protocols
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 75DevDay, 4. April 2017 von Andreas Reischuck
75. Protlr 1 (2015)
• Binäre Protokolle
• PGL Beschreibungssprache
Legacy Protokolle
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 76DevDay, 4. April 2017 von Andreas Reischuck
76. Generierung
• Lesen
• Schreiben
• Dokumentation
• Wireshark
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 77DevDay, 4. April 2017 von Andreas Reischuck
77. Sprachen
• C++
• C for embedded
• Java
• HTML (Dokumentation)
• Lua (Wireshark)
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 78DevDay, 4. April 2017 von Andreas Reischuck
78. Sicherheit
• Unit Tests für alles
• Kommerzieller Support
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 79DevDay, 4. April 2017 von Andreas Reischuck
79. Protlr 2 (2017)
• Text & Binär
• Algorithmen im Protokoll
• Sprachen: C#, HTML (später mehr)
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 80DevDay, 4. April 2017 von Andreas Reischuck
80. PRAXIS
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT DevDay, 4. April 2017 von Andreas Reischuck
81. Medizinprotokoll
• Komplexes Protokoll
• C# Umsetzung: 2 Mannmonate
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 82DevDay, 4. April 2017 von Andreas Reischuck
82. Medizinprotokoll
• Komplexes Protokoll
• Protlr Umsetzung: 3 Tage
Alle Sprachtargets
Dokumentation
Analysewerkzeuge
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 83DevDay, 4. April 2017 von Andreas Reischuck
84. RESUMÉ
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT DevDay, 4. April 2017 von Andreas Reischuck
85. Always generate all your
serialization code!
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 86DevDay, 4. April 2017 von Andreas Reischuck
86. DANKE
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT DevDay, 4. April 2017 von Andreas Reischuck
87. Bildquellen
• Transformator - Staffan Vilcans - CC-BY-SA https://flic.kr/p/ydyBGw
• IMG_2765 - Karim D. Ghantous - CC-BY https://flic.kr/p/pccU2m
• Lasershow - tara hunt - CC-BY-SA https://flic.kr/p/4T3ZB
• Empty Stage - Lee Adlaf - CC-BY https://flic.kr/p/4QskoM
• Frozen web - David Lee - CC-BY-SA https://flic.kr/p/qsdYxe
• network spagetti - versageek - CC-BY-SA https://flic.kr/p/KCRFY
• Traffic jam - Dinu Dragomirescu - CC-BY https://flic.kr/p/4Tbgjc
• Computer fail - http://i660.photobucket.com/albums/uu330/cthulhu19887/forum/fail/5d6b799a.gif
• Drip - Guian Bolisay - CC-BY-SA https://flic.kr/p/f6sPXn
• dessert-1 - andy orin - CC-BY https://flic.kr/p/5WpNfk
• NASA Testing… - NASA Goddard Space Flight Center - CC-BY https://flic.kr/p/ehzwCR
• Luke Wroblewski - CC-BY https://flic.kr/p/gS8e2R
• Heartbleed-Logo - CC0 http://heartbleed.com/heartbleed.svg
• 台大醫圖071 - jimmy chuang - CC-BY-SA https://flic.kr/p/3Kdc2H
• The way ! - Paul Falardeau - CC-BY-ND https://flic.kr/p/5Kgkz7
• What Doth the Future Hold - Morgan Folgen - CC-BY https://flic.kr/p/6RsbSw
• Nasa - http://www.nasa.gov/centers/goddard/images/content/638831main_globe_east_2048.jpg
Benutzbare & Sichere Kommunikation für die vernetzte Welt des IOT Folie 88DevDay, 4. April 2017 von Andreas Reischuck
Für wen C++ zu krass ist...
Offener Austausch zu Open Source Projekten
Wer schon genug gelernt hat, lässt lernen!
C++ Kurs
2008 gegründet, seit 2011 local in Dresden
Verdienen Geld als Software Dienstleister
Spezialistiert auf C++, Qt & Web
Oberflächen für spezielle Maschinen
Berechnung von Testschaltungen zur Messung von Transformatorspulen
Überwachung der Kabel und Ausmessen von Fehlern in der Isolation