10. February 2020

Vertrauen im IIoT

Das IIoT benötigt eine robuste und zuverlässige Architektur, denn das sichere Funktionieren aller beteiligten Komponenten ist die Grundlage der darauf aufbauenden Geschäftsmodelle. Ungeplante Ausfälle, potenzielle Angriffsflächen oder kompromittierbare Daten sind dabei nicht akzeptabel. Das Industrial Internet Consortium (IIC) hat sich dieses Themas angenommen und eine Referenzarchitektur mit Security-Framework veröffentlicht. Diese fordert nicht zuletzt die Entwickler auf, Sicherheitsaspekte frühzeitig zu berücksichtigen – angefangen bei der Software-Qualität.

Bild: ©momius/stock.adobe.com

Das Industrial Internet of Things (IIoT) nimmt in den Digitalisierungsinitiativen vieler Branchen eine zentrale Position ein. Vor allem die Fertigung benötigt ein zuverlässiges, robustes und sicheres IIoT. Denn die Steuerung von Maschinen und anderen Anwendungen sind für den Geschäftsbetrieb kritisch. Während Ausfälle in einigen Nischen sicher zu verschmerzen sind, dürfen unter keinen Umständen kompromittierte Daten in das Netz gelangen oder Angreifer Zugriff auf diese Infrastruktur erlangen. Angriffe wie z.B. 2019 gegen einen norwegischen Aluminiumhersteller zeigen, dass der Schutz des IIoT höchste Priorität haben muss. Allerdings: Viele Unternehmen haben die IIoT-Sicherheit noch nicht priorisiert auf der Agenda. Laut einer Studie des TÜV Rheinland vom vergangenen Jahr hat nur jedes fünfte Unternehmen bereits Sicherheitsmaßnahmen für smarte Fertigungsanlagen implementiert. Das Industrial Internet Consortium (IIC) befasst sich deswegen damit, wie das IIoT sicherer, zuverlässiger und nutzbarer werden kann. Die Mitglieder des IIC sind Unternehmen der IT-Branche und Forschungseinrichtungen aus der ganzen Welt.

Eine Grundüberlegung dabei ist: Die Basis eines langfristig funktionalen IIoT, das auch die Vernetzung der Marktteilnehmer untereinander und branchenübergreifend ermöglicht, ist Vertrauenswürdigkeit oder ‘Trustworthiness’. Daten, Systeme und Protokolle müssen dazu fünf grundlegende Eigenschaften aufweisen:

1. Safety
2. Security
3. Zuverlässigkeit
4. Widerstandsfähigkeit

5. Vertraulichkeit

Robuste IIoT-Architektur

Das Konzept der Trustworthiness umfasst die Bereiche Safety, Security, Zuverlässigkeit (Reliability), Widerstandsfähigkeit (Resilience) und Vertraulichkeit (Privacy). (Bild: GrammaTech Inc.)

Um die Entwicklung einer entsprechend robusten Architektur voranzutreiben, hat das IIC eine Referenzarchitektur vorgestellt. Diese soll Entwicklern und Software-Architekten dabei helfen, stärkere und zuverlässigere IIoT-Systeme zu erzeugen. Zudem ist es das Ziel, einen allgemein akzeptierten IIoT-Ansatz zu finden, um die Interoperabilität und Vertrauenswürdigkeit über das gesamte IIoT-Ökosystem hinweg zu gewährleisten. Die Arbeit an dieser Referenzarchitektur, die fortlaufend optimiert wird, ist auf mehrere Arbeitsgruppen aufgeteilt. Damit wird gewährleistet, dass sowohl technologische also auch organisatorische und unternehmerische Aspekte berücksichtig werden. Eine der IIC-Arbeitsgruppen, der auch GrammaTech angehört, befasst sich dabei speziell mit Fragen der Sicherheit. Die Ergebnisse wurden in einem Security-Framework zusammengefasst. Dieses deckt die unterschiedlichen sicherheitsrelevanten Bereiche wie Identifikation, Zugriffskontrolle, Root of Trust oder Schutz der Integrität ab. Das Ziel dabei ist es, einen allgemeinen Konsens zu erarbeiten, wie IIoT-Strukturen und -Systeme so abgesichert werden können, dass sie auch für kritische und sicherheitsrelevante Anwendungen vertrauenswürdig sind. Ein Aspekt dabei ist der Entwicklungsprozess. Das Framework selbst spezifiziert keine technologischen Details. So heißt es in Sektion 3.3 des Security-Frameworks recht unspezifisch: “Gründliche Vorgehensweisen in der Softwareentwicklung können den Entwicklern dabei helfen, mögliche Sicherheitsrisiken und Schwachstellen zu erkennen und zu beseitigen.” Es bleibt den verschiedenen Anhängen zum Framework überlassen, konkretere Handlungsempfehlungen zu skizzieren. Ein wichtiger Baustein dabei ist, bereits in frühen Phasen des Software Development Lifecycles sicherzustellen, dass die Embedded-Systeme so fehlerarm wie möglich sind, um Sicherheitslücken zu vermeiden. Anhang C befasst sich u.a. mit Methoden, die eine gründliche Vorgehensweise charakterisieren. Um die Integrität der Software sicherzustellen, wird hier explizit die statische Code-Analyse empfohlen. Ganz zurecht, denn dieses Verfahren hat sich in unterschiedlichen, sicherheitsrelevanten Branchen wie Luftfahrt oder Automotive bewährt und wird in zahlreichen Normen ausdrücklich gefordert. Bei der statischen Code-Analyse wird der Code nicht ausgeführt. Ähnlich wie ein Compiler erzeugen Analyse-Tools wie CodeSonar von GrammaTech aus dem Quellcode eine ‘Intermediate Representation’ (IR). Anhand der IR untersucht das Tool alle möglichen Daten- und Kontrollflüsse.

Früh mit der Qualitätssicherung beginnen

Die von Compilern bekannte Intermediate Representation dient Analyse-Tools wie CodeSonar von GrammaTech als Modell zur Untersuchung. (Bild: GrammaTech Inc).

Da kein ausführbarer Code vorliegen muss, kann die statische Analyse bereits sehr früh im Entwicklungsprozess implementiert werden. Im Rahmen agiler Methoden wie Continuous Integration etwa ist eine erste Analyse direkt am Arbeitsplatz des Entwicklers möglich, eine weitere Überprüfung kann in der Mainline die täglichen Integrations erfassen, zudem ist eine tiefgreifende und ausführliche Analyse am Build-System sinnvoll. Typische Fehler, die durch die statische Analyse erkannt werden, sind z.B. Buffer Overflows, Null-Pointer Dereferenzierungen oder einfach Verstöße gegen Programmierrichtlinien. Die statische Code-Analyse schließt damit eine Lücke des herkömmlichen Testings. Damit im Testing ein Programmierfehler erkannt werden kann, müssen drei Bedingungen gleichzeitig erfüllt sein:

1 Der Testfall muss den fehlerhaften Code durchlaufen,
2 der Fehler muss zu einer Error Condition führen und
3 die Error Condition muss zu einer Abweichung des Ergebnisses von dem erwarteten Ergebnis führen.
Zudem muss ein lauffähiger Code vorhanden sein, das Testing kann also erst in einer recht späten Phase des Entwicklungsprozesses greifen. Hier gilt: Je später ein Problem im Code entdeckt wird, desto aufwändiger und teurer wird die Beseitigung.

Fazit
Die IIoT-Referenzarchitektur des IIC ist ein wichtiger Schritt hin zu einem universellen, sicheren und vertrauenswürdigen Industrial Internet of Things. Es gilt vor allem, dieses IIoT so auf- und umzusetzen, dass die Integrität von Daten und Software jederzeit gewährleistet ist. Der Sicherheitsgedanke muss bereits bei der Entwicklung der Systeme eine hohe Priorität genießen. Denn die nachträgliche Absicherung der Struktur, wie es bei der herkömmlichen IT in Form von Firewalls, Malware-Scanner, IDS/IPS und dergleichen mehr üblich ist, kann zwar Fehler in der Software kaschieren. Doch bieten auch sie keinen absoluten Schutz, was die IT tagtäglich schmerzhaft erfahren muss. Software, die nach hohen Standards entwickelt, überprüft und getestet wird, macht Angreifern das Leben schwer. Und ermöglicht eine vertrauensvolle Kommunikation im IIoT. n

Thematik: Allgemein
www.grammatech.com

Das könnte Sie auch interessieren