IT-Sicherheit und Datenschutz in IoT-Projekten umsetzen

Seite 4: Implementierung

Inhaltsverzeichnis

Ist die IoT-Anwendung einschließlich ihrer Schutzmechanismen konzipiert und spezifiziert, folgt die Umsetzung, während der sich wieder neue Angriffspunkte auftun können. Ist die Benutzer- oder Geräteauthentifizierung nicht gut implementiert, können Angreifer weitere Schutzmaßnahmen umgehen, indem sie sich als ein anderer Nutzer oder ein gewünschtes Gerät ausgeben. Außerdem lassen sich in ungesicherten Weboberflächen oder durch Softwarefehler Schlupflöcher finden, um das System anzugreifen, ohne mit den im Konzept berücksichtigten kryptographischen Maßnahmen in Berührung zu kommen.

Daher ist auch bei der Implementierung einiges zu beachten: Pufferüberläufe, Rechteausweitung und ähnliche Probleme sind mächtige Angriffsvektoren. Um Fehler in der Software zu vermeiden, ist das Befolgen sicherer Coding-Standards ein guter Ausgangspunkt. So gibt beispielsweise das Computer Emergency Response Team (CERT) an der Carnegie Mellon University umfangreiche Richtlinien für unterschiedliche Programmiersprachen vor und listet wichtige Praktiken auf, um Risiken zu minimieren. Dazu gehören das Validieren jeglicher Eingabedaten und das "Least privilege"-Prinzip, nach dem jede Systementität (Nutzer, Applikation, Gerät) nur genau die Rechte erhält, die sie benötigt. Des Weiteren helfen manuelle Code-Auditierungen und automatische Codescans, Sicherheitslücken während der Implementierung zu erkennen. Zu den gängigen Scan-Werkzeugen zählen Splint und Checkmarx.

In besonders sicherheitskritischem Code empfiehlt es sich unter anderem, Falloptimierungen zu vermeiden, da sie sogenannte Seitenkanalangriffe erleichtern. Angreifer nutzen dabei unter anderem den Speicher- und Zeitbedarf unterschiedlicher Programmabläufe, um daraus Rückschlüsse auf geheimes Schlüsselmaterial ziehen zu können und es zum Teil sogar komplett zu rekonstruieren [2]. Aufgrund der häufig anzutreffenden physikalischen Zugriffsmöglichkeiten eines Angreifers auf das Zielgerät ist zu erwägen, bei der Entwicklung HSMs für Operationen mit geheimem Schlüsselmaterial einzusetzen. Sie können nicht nur Schutz gegen ein direktes Auslesen bieten, sondern sind häufig zudem gegen Seitenkanalangriffe gehärtet.

Um auch gegenüber Dritten zu signalisieren, dass die Implementierung des Sicherheitskonzepts zuverlässig umgesetzt ist, sind Sicherheitsüberprüfungen und Tests ein integraler Bestandteil der Entwicklung sicherheitskritischer Software. Das gilt umso mehr, da sich nicht jede Schwachstelle (z.B. Seitenkanalangriffe) auf Konzeptebene erkennen lässt. Um ihnen entgegen wirken zu können, lassen sich etablierte Qualitätssicherungsprozesse wie die für die funktionale Sicherheit für den Schutz der IT-Sicherheit erweitern.

Eine gezielte Security-Prüfung geht jedoch weit über das funktionale Testen hinaus. Bei ihr geht man nicht nur von einer möglichen Fehlfunktion des Systems aus, sondern auch von einem Angreifer, der Funktionen und Eigenschaften des Systems zu seinem Zweck manipuliert oder missbraucht. Ein wichtiger Aspekt sind dabei Penetrationstests, in denen Tester aktiv die Rolle des Angreifers übernehmen. Das Spektrum der von ihnen durchgeführten Maßnahmen reicht vom Scannen nach bekannten Schwachstellen mit sogenannten Vulnerability-Scannern über das Auffinden von unbekannten Schwachstellen mit Fuzzing-Tools, die das System mit Rand- und Zufallswerten konfrontieren [3] bis hin zu invasiven Angriffen. Bei letzteren versuchen die Tester beispielsweise den Speicher direkt auszulesen, physikalische Verbindungen neu zu setzen oder zu zerstören oder den Prozessor durch gezielte Strom- oder Frequenzschwankungen zu missbrauchbaren Fehlfunktionen zu zwingen.