Kryptografie
Das Ziel der Kryptografie ist immer gleich geblieben: sensitive Daten vor nicht berechtigten Lesern zu verschleiern. Das wesentliche Konzept besteht darin, einen Schlüssel so sicher aufzubewahren, dass nur einige wenige Leute wissen, wie sich die Nachricht ver- und entschlüsseln lässt. Die zwei heute vorherrschenden Verfahren sind die symmetrische und die asymmetrische Kryptografie (siehe Kasten »Symmetrische und asymmetrische Kryptografie«).
Symmetrische und asymmetrische Kryptografie |
---|
Aufgrund ihrer Leistungsstärke wird die symmetrische Kryptografie für Datenverschlüsselung und -integrität eingesetzt. Mit diesem Verfahren lassen sich große Dateien austauschen. Zum Entschlüsseln der Nachricht wird aber vorausgesetzt, dass die Schlüssel auf sichere Weise übertragen worden sind. Die Grundfesten dieses Konzepts basieren darauf, Wege zur sicheren Übertragung der Schlüssel zu finden und einen Angriff von nicht autorisierten Personen zu verhindern. Ist diese nicht autorisierte Person in der Lage, sich auf rechtswidrige Weise die Schlüssel zu verschaffen, so ist die verschlüsselte Nachricht ohne Probleme lesbar. Zu den bekannteren symmetrischen Algorithmen gehören AES (Advanced Encryption Standard), DES und 3DES (Data Encryption Standard). Die Kryptografie mit asymmetrischen Schlüsseln stützt sich auf mathematisch verwandte Schlüssel, wobei sich eine mit einem Schlüssel codierte Nachricht nur mit den anderen Schlüsseln dekodieren lässt. Diese Schlüsselpaare bestehen aus privaten und öffentlichen Schlüsseln. Der private Schlüssel muss geheim gehalten werden und wird nur an vertrauenswürdige Personen weitergegeben, während der öffentliche Schlüssel allgemein verfügbar gemacht werden kann. Die asymmetrische Kryptografie kann für kurze Nachrichten zum Einsatz kommen, die Entschlüsselung ist relativ langsam. Daher kommt die asymmetrische Kryptografie für den Austausch von Schlüsseln, für Beglaubigungszwecke und für die Authentifizierung zum Einsatz. Zu den bekannten asymmetrischen Algorithmen gehören RSA (Rivest, Shamir and Adleman), DSA (Digital Signature Algorithm) und ECDSA (Elliptic Curve Digital Signature Algorithmus). |
Sind alle Bootvorgänge abgeschlossen und laufen das komplexe Betriebssystem und die Applikationen auf einer Plattform, dann ist diese Software möglicherweise durch Angriffe im laufenden Betrieb verwundbar. Beispielsweise könnte ein Angreifer versuchen, den Kernel des Betriebssystems so zu modifizieren, dass sich das Betriebsverhalten des Systems ändert. Dies ist möglich, da der Angriff ja im laufenden Betrieb stattfindet, nachdem das Betriebssystem im geschützten Bootvorgang authentifiziert worden ist.
Das sogenannte »Run-Time Integrity Checking« (RTIC) kann gegen solche Angriffe schützen. Es läuft in zwei Stufen ab. Als erstes wird während des geschützten Bootvorgangs im Rahmen des Authentifizierungsprozesses ein Referenz-Kryptografie-Hash berechnet und abgespeichert. In der zweiten Stufe finden periodisch immer wieder Kryptografie-Hashes für die gleiche Software statt, die während der geschützten Bootphase authentifiziert wurde. Die berechneten Hashes werden mit dem gespeicherten Referenz-Hash verglichen. Abweichungen der beiden Hash-Werte signalisieren, dass die Software nach der Authentifizierung modifiziert worden ist.
Die Erstellung der Codesignatur impliziert die Authentifizierung des Codes. Das hindert aber einen Hacker nicht daran, auf den im externen Flash-Speicher abgelegten Code zuzugreifen. Daher sind einige Vorkehrungen und Schutzmaßnahmen zu treffen, um sowohl Klonen als auch Reverse-Engineering zu verhindern. Durch Klonen kann ein Hacker ein Produkt duplizieren, was dazu führen kann, dass der legitime Hersteller Marktanteile an andere verliert, die eine Kopie seines Produkts vermarkten.
Reverse-Engineering kann noch höhere finanzielle Verluste nach sich ziehen, wenn beispielsweise eine ganze Produktfamilie eines Herstellers dupliziert wird. Entsprechende Verschlüsselung des Codes soll daher gewährleisten, dass der Hersteller sein geistiges Eigentum schützen kann. Die Verschlüsselung setzt im Endgerät vorzugsweise im geschützten Bereich des CPU-Speichers abgelegte, sichere und geschützte Schlüssel und die entsprechenden Zugriffsregeln voraus.
Die Schlüssel für den Code und das Software-Image können während der Herstellung auf sichere, durch den Hersteller geschützte Weise heruntergeladen werden (auch Provisioning genannt). Während des Bootprozesses ist eine Entschlüsselung durchzuführen, um das System in den Betriebszustand zu bringen. Der Entschlüsselungsvorgang muss transparent erfolgen, um das Programm nicht auszubremsen und Staus zwischen dem externen Flash-Speicher und Lesevorgängen aus dem internen RAM zu verhindern. Für die Entschlüsselung kommen die für die Verschlüsselung benutzten, in der geschützten Umgebung abgelegten Schlüssel zum Einsatz.