Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Absolute Security in Embedded-Systemen

Autor: André Schmitz, Green Hills Software

Beitrag - Embedded Software Engineering Kongress 2017

 

Security wird in der heutigen Zeit der vernetzten Systeme immer wichtiger. Es leuchtet jedem sofort ein, wie wichtig der Schutz von persönlichen Daten, Firmendaten oder Werten im Allgemeinen ist. Auch bei vernetzten Embedded Systemen wird mittlerweile viel Wert auf Absicherung und Verschlüsselung der Datenübertragungen und der Speicherung der Daten gelegt. Die Gebäude, in denen die Server stehen, sind sehr stark geschützt, aber bei der Sicherheit der Embedded Systeme werden viel zu oft Lücken übersehen, womit das Gesamt­system verwundbar wird. Daher muss bei der Absicherung von Embedded Geräten ein viel breiterer Ansatz gewählt werden, der alle Aspekte der Entwicklung, der Produktion und der Wartung mit einbezieht. Dieser Beitrag zeigt interessante Beispiele von Angriffen und Verwundbarkeiten von verschiedenen Systemen, insbesondere solche, bei denen bei einem scheinbar nebensächlichen Aspekt ein Fehler gemacht wurde. Anschließend wird ein ganzheitlicher Ansatz vorgestellt, mit dessen Hilfe es möglich ist, absolut sichere Systeme zu produzieren. Es werden ganz unterschied­liche Bereiche beleuchtet, wie z.B. die Software-Entwicklung und Architektur des Systems, das Schlüssel- und Zertifikatsmanagement sowie der Herstellungs­prozess. Nur wenn alle Bereiche in der Verwundbarkeitsanalyse betrachtet werden, kann das System tatsächlich absolut sicher werden.

Security in Embedded Software

Ich verwende in diesem Beitrag oft das englische Wort Security, weil das deutsche Wort Sicherheit zu mehrdeutig ist. Ich meine damit die Sicherheit von Software gegen Angriffe, welche Verwundbarkeiten eines Systems ausnutzen um Daten zu stehlen oder zu verändern. Ein Embedded System ist in diesem Zusammenhang selbst Speicher von Daten bzw. über Kommunikationskanäle mit anderen Entitäten verbunden, wie zum Beispiel anderen Geräten oder zentralen Rechenzentren. Ziel eines Security Engineerings ist also die Daten gegen unerlaubten Zugriff oder Veränderung zu schützen. Bei den gespeicherten Daten und die übermittelten Daten verwendet man dazu Ver­schlüsselungstechnologie.

Es wird natürlich auch heute schon viel Aufwand betrieben um vernetzte Systeme zu sichern. Es gibt sogar eine Server-Farm, die in ehemals militärischen Bunkern untergebracht sind, die mit den modernsten Zugangs-Kontrollsystemen ausgestattet sind [1]. Mit der Verschlüsselung der Daten und der Absicherung der Rechenzentren glaubt man alles für die Sicherheit des Gesamtsystems getan zu haben. Doch dabei wird manchmal die Security Architektur der Endgeräte ignoriert, die daher nur mangelhaft geschützt werden. Hier werden Systeme auf unzuverlässigen Betriebs­systemen und Software-Architekturen aufgebaut, die Zugangskontrolle ist mangel­haft, die Schlüssel und Zertifikate sind schlecht geschützt, kurz gesagt, die Embedded Geräte sind dann relativ leicht anzugreifen und damit kann das gesamte Netzwerk verwundbar werden.

Beispiele von unsicheren Systemen

Ein Beispiel für einen solchen Angriff auf Endgeräte haben wir Anfang 2014 in den USA erlebt. Dort wurden tausende Bezahlterminals der Firma Target, einer nordame­ri­kanischen Warenhauskette, angegriffen und dabei Zahlungsdaten von über 40 Millionen Kunden gestohlen. Den wirtschaftlichen Schaden schätzt man auf viele Milliarden US Dollar [2][3].

Es gibt heute auch schon Bot-Netze, die nicht den Rechner auf Ihrem Schreibtisch, sondern die eingebetteten Rechner in Ihren Haushaltsgeräten nutzen. In einem 2014 bekannt gewordenen Beispiel wurden Fernsehgeräte und Kühlschränke als Clients der Bot-Netze verwendet [4]. Angeblich wurde die Firma Gemalto in den Jahren 2010 und 2011von der NSA und der britischen GCHQ gehackt um SIM-Karten Schlüssel zu stehlen. Im Jahr 2011 wurde außerdem die in den Niederlanden ansässige Certificate Authority DigiNotar gehackt und es wurde eine Reihe von Zertifikaten illegal erstellt mit denen man die Identität von Web-Seiten, wie zum Beispiel die von Google, vortäuschen konnte [5]. Ein paar Jahre später in 2015 ist der Firma D-Link ein peinlicher Fehler unterlaufen. Bei der Offenlegung des GPL lizenzierten Source-Code auf einer Web-Seite wurden die im Code hart codierten privaten Schlüssel mit offengelegt. Damit waren auf einen Schlag alle auf diesem Schlüssel basierenden Netzwerk-Geräte unsicher. Im Jahr 2015 hat außerdem ein von der Firma Symantec entlassener Mitarbeiter unautorisierte Zertifikate für Web-Seiten erstellt. Hier war die Kündigung wohl nicht im Einver­nehmen mit dem Mitarbeiter. Das alles zeigt also, wie wichtig ein ganzheitlicher Ansatz und im speziellen die Sicherung der Endgeräte ist, und die nachfolgenden Kapitel zeigen eine Strategie, mit der man eine absolute Security erreichen kann.

Themen der ganzheitlichen Security

Betrachtet man die obigen Beispiele, so sieht man zwei mögliche Arten von Angriffen, den Angriff von außen, also von externen bzw. fremden Angreifern, oder den von innen, also von Mitarbeitern der eigenen Firma, wie man an dem Fall von Symantec sehen kann. Außerdem kann man unterscheiden zwischen dem Angriff über das Netzwerk (Internet) oder dem physika­lischen Angriff durch direkten Zugriff auf das Gerät. Wie ein ganzheitlicher Security Ansatz aussehen muss, hängt natürlich auch immer vom Ergebnis der Gefahrenanalyse ab, die man auf jeden Fall zu Anfang des Projektes durchführen sollte. Man sollte sich dabei mit allen Bereichen rund um das Produkt, dessen Verwendung und dessen Herstellung beschäftigen. In den meisten Fällen gehören die folgenden Bereiche dazu der Entwicklungsprozess, die Hardware- und Software-Architektur, die kryptographischen Methoden, die Schlüssel- und Zertifikatsverwaltung, der Herstellungsprozess vom Zulieferer bis zum Endprodukt sowie die Wartung und Pflege (inkl. Software Updates). Lassen Sie uns die einzelnen Aspekte mal etwas genauer anschauen.

Entwicklungsprozess und Architektur

Hier geht es im weitesten um die Maßnahmen, die die Zahl der Verwundbarkeiten eines Systems reduzieren oder deren negative Auswirkungen vollständig beseitigen. Stellen Sie sich vor, Sie haben die gespeicherten und die kommunizierten Daten ausreichend durch Verschlüsselung gesichert. Dann werde Sie trotzdem die Daten irgendwann mal unverschlüsselt in Ihrem Speicher haben müssen um diese zu verarbeiten. Wenn es in diesem Fall nur eine einzige Verwundbarkeit des Systems gibt, die einem Angreifer Zugriff auf diesen Speicher geben könnte, dann haben Sie verloren. Sie müssen also durch strikte und verlässliche Separierung eine Isolation der Daten von den Verwundbaren Software Komponenten erreichen.

Ein bewährtes Prinzip zur Erreichung dieses Ziels ist das High Assurance Security Engineering. Dieses Prinzip erfordert die Ausrichtung der Software Entwicklung nach den folgenden fünf Richtlinien:

  • Minimierung der Komplexität,
  • Restriktive (minimale) Rechtevergabe,
  • Unterteilung in Komponenten,
  • Sicherer Entwicklungsprozess,
  • Unabhängige Validierung von Experten.

 

In ESE Beiträgen der letzten Jahre [6][7] habe ich dieses Konzept schon mehrfach vorgestellt und werde daher hier nicht mehr im Detail darauf eingehen.

Kryptographie, Schlüssel und Zertifikate

Hier geht es um die richtigen kryptographischen Methoden und den richtigen Umgang mit Schlüsseln und Zertifikaten. Letzteres ist der Firma D-Link in obigem Beispiel nicht geglückt. Ein wichtiger Aspekt von Kerkhoffs Prinzip [8] ist, dass der Schlüssel geheim zu halten ist, der Algorithmus aber öffentlich sein darf. Stellen Sie also unbedingt sicher, dass der Schlüssel (bzw. der private Schlüssel bei asymme­trischen Verfahren) geheim bleibt. Gerne werden in diesem Umfeld auch Hardware-Sicherheitsmodule (HSM) verwendet, die sowohl bei der Berechnung als auch beim Absichern der Schlüssel behilflich sein können. Die Verwendung eines HSMs ist nicht alleiniger Garant für ein sicheres System.

Zu kryptographischen Verfahren gibt es umfangreiche Publikationen [9]. Hier kann man aus einer Vielzahl von Verfahren und Algorithmen für unterschiedliche Anwen­dungsfälle auswählen. Sie können auch entscheiden, ob Sie alle Geräte mit dem gleichen Schlüssel nutzen oder jedes Gerät mit einem gerätespezifischen Schlüssel ausstatten möchten. Letzteres erlaubt es gerätespezifisch Funktionen freizuschalten und die Echtheit des Gerätes im Feld zu prüfen. Lassen Sie sich am besten von Experten beraten (z.B. [10]), die Ihnen für Ihren Use-Case passende Vorschläge unterbreiten können.

Zulieferung und Fertigung

Dieser Bereich wird oft unterschätzt. Hier geht es darum die komplette Fertigungs­kette, vom Zulieferer bis zur Herstellung des Endproduktes absolut sicher zu machen. Hier wird dann insbesondere der Aspekt des Angriffs von Innen adressiert, also die vom Symantec übersehene Schwachstelle.

Schauen wir zunächst mal ans Ende dieser Kette. Irgendwo auf der Welt steht die Fabrik, die Ihre Geräte herstellt. Dort wird die Hardware zusammengebaut, getestet und die finale Produkt-Software aufgespielt. An dieser Stelle werden in der Regel auch die Schlüssel oder Zertifikate aufgespielt. Die Schlüssel und Zertifikate liegen in der Fabrik meist auf Servern (und hoffentlich nicht hart codiert in der Software) und werden am Band-Ende in einen sicheren Ort auf dem Gerät gebracht. Wie wir oben gesehen habe, sind die Schlüssel aber die Elemente der Security Architektur, die am besten geschützt werden müssen. Wer also Zugriff auf die Schlüssel-Server hat, und dort einen Weg findet die Schlüssel auszulesen, kann im Prinzip das komplette Security Konzept kippen. Da nun aber meistens die Computer in einer Fabrik aus zumindest mal Wartungsgründen im Firmennetzwerk hängen, und diese Firmennetz­werk wiederum irgendwo Gateways ins Internet hat, wird auf einmal die Security Ihres Embedded Systems abhängig von der Security Ihres gesamten Firmennetz­werks.

Wenn die Fabrik in Ihren eigenen Gebäuden an Ihrem eigenen Standort ist und in ihrem eigenen Netzwerk hängt, dann haben Sie wenigstens noch direkte Kontrolle über diese Infrastruktur. Was aber wenn die Fabrik bei einem Subunternehmer in Fernost steht den Sie aus Kostengründen mit der Herstellung Ihrer Geräte betraut haben, und Sie selbst keine direkte Netzwerkverbindung dorthin haben oder nur eine Verbindung über das Internet herstellen können? Wie stellen Sie dann sicher, dass Ihre Schlüssel auch dort sicher sind? Auch Ihre Zulieferer, die Teile Ihrer Hardware oder Software erstellen, müssen Sie in das Security Konzept integrieren. Wie Sie diese komplexe Problematik adressieren, lässt sich natürlich nicht allgemeingültig in ein paar Absätzen zusammen­fassen. Daher empfehle ich auch hier Beratungsdienst­leistungen von erfahrenen Security Experten in Anspruch zu nehmen (z.B. [10]).

Wartung und Updates

In diesem Themenkreis geht es darum, wie man die Software auf dem System über­wachen kann und wie bei Bedarf neue Software eingespielt wird. Leider suggeriert uns die gängige Praxis bei Computern eine vermeintliche Sicherheit durch Updates. Der Computer war vor dem Update im Prinzip genau so unsicher wie nach dem Update, das Update schützt den Computer nur vor den zuletzt bekannt gewordenen und offen gelegten Verwundbarkeiten. Updates erlauben neue Software einzuspielen die bekannten Fehler behebt oder den Funktionsumfang der Gerätes ändert, und zu diesem Zweck sollte man sie auch nutzen.

Möchte man Software Updates erlauben, dann das das Update-Konzept auch Auswirkung auf den Boot-Vorgang des Systems. Wenn Sie sicherstellen wollen, dass die geladene Anwendungssoftware auch wirklich die richtige ist, und nicht durch einen Angreifer ausgetauscht oder modifiziert wurde, benötigen Sie sichere Boot Konzepte. Dabei muss die geladene Anwendung digital signiert sein und vom OS Loader anhand kryptographischer Methoden die Gültigkeit der digitalen Signatur überprüft werden. Ebenso muss das Betriebssystem und der Loader digital signiert sein was vom Bootloader überprüft wird, und so weiter, womit Sie eine „Chain of Trust“ erzeugen. Dabei basiert die Vertrauenswürdigkeit einer Schicht auf der Vertrauenswürdigkeit der darunter­liegenden Schicht, und beginnt mit einer „Root of Trust“, deren Vertrauenswürdigkeit angenommen werden kann, und gerne über Zertifikate und Schlüssel abgeleitet werden, die in einem HSM oder TPM sicher abgelegt sind.

Zusammenfassung

Eine Kette ist nur so sicher wie ihr schwächstes Glied. Ebenso ist ein Embedded System, und die damit verbundene Netzwerk Infrastruktur, nur so sicher wie das schwächste Element im gesamten Produktlebenszyklus. Ansätze der ganzheitlichen Security müssen daher einen breiten Bereich an Themen abdecken damit alle Elemente der Produktentwicklung und Herstellung ein gleich hohes Maß an Security aufweisen. Verwenden Sie einen auf Security Engineering ausgelegten Entwicklungsprozess. Wählen Sie eine passende Hardware-Architektur aus, die ggf. ein HSM zur Beschleunigung von Krypto-Operationen sowie einen Schlüssel und Zertifikatsspeicher bietet. Die Software-Architektur sollte mit dem Fokus auf Modularisierung und Isolierung zwischen der Security Software und der sonstigen, nicht vertrauenswürdigen Software geplant werden. Denken Sie nicht nur über die kryptographischen Verfahren nach, sondern auch und insbesondere über die den Umgang und die Absicherung der kryptographischen Schlüssel. Finden Sie einen Weg die Security relevanten Daten in Ihrem Netzwerk aus Zulieferern und Herstellern sicher auszutauschen und jegliche Art des Missbrauchs zu verhindern. Und verwenden Sie nicht zuletzt einen sauberen Boot-Prozess mit einer sauberen „Chain of Trust“.

Literatur- und Quellenverzeichnis

[1] http://www.thebunker.net/about-us/facilities/

[2] Chicago Tribune – Jonathan Stempel: „Target, security auditor Trustwave are sued over data breach “; 26.3.2014

[3] http://articles.chicagotribune.com/2013-12-20/business/ct-biz-1220-target-theft-20131220_1_debit-card-data-breach-accounts

[4] http://www.businessinsider.com/hackers-use-a-refridgerator-to-attack-businesses-2014-1

[5] https://en.wikipedia.org/wiki/DigiNotar

[6] „Sicherheit im Internet der Dinge“, Andre Schmitz, ESE Kongress 2014

[7] „Sichere Embedded-Software entwickeln“, Andre Schmitz, ESE Kongress 2009

[8] https://de.wikipedia.org/wiki/Kerckhoffs%E2%80%99_Prinzip

[9] https://de.wikipedia.org/wiki/Kryptographie

[10] https://www.ghsiss.com/

 

Beitrag als PDF downloaden


Unsere Trainings & Coachings

Wollen Sie sich auf den aktuellen Stand der Technik bringen?

Dann informieren Sie sich hier zu Schulungen/ Seminaren/ Trainings/ Workshops und individuellen Coachings von MircoConsult zum Thema Qualität, Safety & Security.


Training & Coaching zu den weiteren Themen unseren Portfolios finden Sie hier.


Qualität, Safety & Security - Fachwissen

Wertvolles Fachwissen zum Thema Qualität, Safety & Security steht hier für Sie zum kostenfreien Download bereit.

Zu den Fachinformationen

 
Fachwissen zu weiteren Themen unseren Portfolios finden Sie hier.