-
Die vorliegende Erfindung betrifft ein Verfahren zum Überprüfen von Daten in einer Recheneinheit sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung.
-
Hintergrund der Erfindung
-
Bei der Überprüfung und anschließenden Verwendung von Daten in Recheneinheiten kann das sog. TOCTOU-Problem (engl.: „Time-of-Check-to-Time-of-Use-Problem“) auftreten, gemäß welchem sich Daten zum Zeitpunkt ihrer Überprüfung („Time-of-Check“) von den Daten zum Zeitpunkt ihrer Verwendung („Time-of-Use“) unterscheiden können. Beispielsweise können Daten aus einer Speichereinheit durch eine Sicherheitseinheit, welche zum Überprüfen von Daten vorgesehen ist, eingelesen und mittels kryptographischer Verfahren überprüft werden. Wenn jedoch ein Angreifer, z.B. eine bösartige Software, welcher die Recheneinheit korrumpiert hat, während oder nach der Überprüfung der Daten unautorisierte Änderungen an den Daten in der Speichereinheit vornimmt, können diese Änderungen von der Sicherheitseinheit zumeist nicht mehr erkannt werden. Die Sicherheitseinheit verifiziert dann unter Umständen fälschlicherweise Echtheit und Integrität der Daten, obwohl diese Daten nachträglich von dem Angreifer beeinträchtigt wurden. Dies kann dazu führen, dass die manipulierten Daten in der Recheneinheit weiterverarbeitet werden. Eine derartige Sicherheitseinheit hat zumeist keine Möglichkeit zur Erkennung, ob die validierten Daten auch korrekt prozessiert bzw. weiterverarbeitet werden und nicht unautorisiert nach der Überprüfung manipuliert wurden.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zum Überprüfen von Daten in einer Recheneinheit sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Die Recheneinheit weist eine Speichereinheit, z.B. einem RAM-, ROM- oder Flash-Speicher, eine Sicherheitseinheit bzw. ein Sicherheitsmodul und eine Speicherschutzeinheit auf. Die Sicherheitseinheit ist insbesondere als eine gesicherte bzw. geschützte Einheit zum Ausführen kryptographischer Operationen vorgesehen. Die Speicherschutzeinheit (engl. „Memory Protection Unit“, MPU) ist insbesondere vorgesehen, um Zugriffsanfragen auf eine Speichereinheit zu empfangen und zu verwalten. Es versteht sich, dass die Recheneinheit noch weitere Hardware- und Softwareeinheiten aufweisen kann wie eine Prozessoreinheit, Eingabe- und Ausgabeschnittstellen usw.
-
Im Rahmen des vorliegenden Verfahrens werden zu überprüfenden Daten in einem vorgegebenen Speicherbereich bzw. in einem vorgegebenen Adressbereich in der Speichereinheit hinterlegt. Beispielsweise können diese Daten durch eine Prozessoreinheit bzw. durch von der Prozessoreinheit ausgeführte Prozesse oder Anwendungen in dem vorgegebenen Speicherbereich hinterlegt werden.
-
Die Sicherheitseinheit konfiguriert die Speicherschutzeinheit bzw. weist die Speicherschutzeinheit an, um den vorgegebenen Speicherbereich gemäß einer vorgegebenen Zugriffsbeschränkung zu schützen. Durch diese Zugriffsbeschränkung wird insbesondere vorgegeben, welche Einheiten der Recheneinheit auf den vorgegebenen Speicherbereich und die dort hinterlegten Daten zugreifen dürfen und welchen Einheiten der Zugriff verboten ist. Insbesondere gibt die Speicherschutzeinheit diese Zugriffsbeschränkung selbst vor.
-
Auf dieses Konfigurieren hin führt die Speicherschutzeinheit einen Speicherschutz des vorgegebenen Speicherbereichs gemäß der vorgegebenen Zugriffsbeschränkung aus bzw. die Speicherschutzeinheit richtet den Speicherschutz entsprechend ein. Wenn die Speicherschutzeinheit fortan eine Zugriffsanfrage auf diesen Speicherbereich empfängt, kann die Speicherschutzeinheit im Zuge dieses Speicherschutzes den jeweilig angefragten Zugriff gemäß der vorgegebenen Zugriffsbeschränkung zweckmäßigerweise erlauben oder blockieren.
-
Die in dem vorgegebenen Speicherbereich hinterlegten Daten werden durch die Sicherheitseinheit überprüft, insbesondere mit Hilfe von kryptographischen Operationen, z.B. mit Hilfe von Schlüsseln und/oder weiterer kryptographischer Methoden, welche in einer speziellen Speichereinheit der Sicherheitseinheit hinterlegt sein können. Beispielsweise kann die Sicherheitseinheit zu diesem Zweck eine kryptographische Signatur berechnen. Durch diese Überprüfung können die Daten insbesondere auf Echtheit, Richtigkeit bzw. Integrität überprüft werden. Auf die konkrete Art der Überprüfung kommt es jedoch nicht an.
-
Ein Ergebnis dieser Überprüfung kann durch die Sicherheitseinheit in der Recheneinheit hinterlegt werden, insbesondere in der Speichereinheit selbst in einem weiteren vorgegebenen Speicherbereich. Wenn im Zuge der Überprüfung die hinterlegten Daten validiert wurden bzw. wenn deren Echtheit verifiziert wurde, können die Daten insbesondere für eine weitere Verarbeitung in der Recheneinheit verwendet bzw. freigegeben werden. Wenn die Echtheit hingegen nicht verifiziert werden kann, können die Daten beispielsweise verworfen werden und nicht für eine weitere Verarbeitung freigegeben werden.
-
Durch die vorliegende Erfindung wird besonders zweckmäßig das sog. TOCTOU-Problem (engl.: „Time-of-Check-to-Time-of-Use-Problem“) adressiert. Die Erfindung stellt eine kostengünstige, effiziente und sichere Möglichkeit bereit, um eine unerkannte, nicht-autorisierte Manipulation der Daten während oder nach ihrer Überprüfung zu verhindern. Durch Festlegen und Umsetzen der Zugriffsbeschränkung kann es insbesondere nur vertrauenswürdigen, sicheren Einheiten erlaubt werden, auf die Daten zuzugreifen. Auf diese Weise kann zweckmäßigerweise verhindert werden, dass die Daten manipuliert werden, während oder nachdem die Daten von der Sicherheitseinheit überprüft werden bzw. wurden. Durch die vorgegebene Zugriffsbeschränkung und den ausgeführten Speicherschutz kann der Speicherbereich, an welchem die zu überprüfenden Daten hinterlegt sind, vor unautorisierten Zugriffen geschützt werden, beispielsweise zumindest so lange, bis die Daten nach deren Verifikation weiterverarbeitet wurden. Wenn ein Angreifer versuchen möchte, auf die von der Sicherheitseinheit zu überprüfenden bzw. bereits überprüften Daten zuzugreifen und diese zu verändern, wird dieser versuchte Zugriff durch den eingerichteten Speicherschutz von der Speicherschutzeinheit zweckmäßigerweise blockiert. Auf diese Weise kann verhindert werden, dass ein potentieller Angreifer, der die Recheneinheit bzw. das Softwaresystem, exklusive der Sicherheitseinheit, übernommen hat, manipulierte Informationen an die Sicherheitseinheit übergibt und/oder während der Überprüfung durch die Sicherheitseinheit unerlaubte Änderungen an den Inhalten in dem Speicherbereich vornimmt. Insbesondere kann die Sicherheitseinheit die Speicherschutzeinheit dynamisch konfigurieren, um einzelne Speicher- bzw. Adressbereiche in der Speichereinheit individuell zu schützen. Durch dieses Zusammenwirken zwischen Sicherheitseinheit und Speicherschutzeinheit kann insbesondere eine dynamische Speicherschutzeinheit bereitgestellt werden, welche online und on-demand während des Betriebs der Recheneinheit dynamisch durch die Sicherheitseinheit konfiguriertet werden kann.
-
Das vorliegende Verfahren stellt insbesondere eine kosteneffiziente Möglichkeit bereit, um einzelne Speicherbereiche vor der Datenüberprüfung dynamisch zu schützen. Die übrigen Speicherbereiche der Speichereinheit können während des Betriebs der Recheneinheit weiterhin regulär verwendet werden. Beispielsweise können auf diese Weise Kosten und Ressourcen eingespart werden gegenüber einer dedizierten Speichereinheit bzw. einem dedizierten Speicherbereich, welche bzw. welcher exklusiv der Sicherheitseinheit zugewiesen ist und auf welche bzw. auf welchen während der Laufzeit der Recheneinheit ausschließlich die Sicherheitseinheit zugreifen darf. Ferner erlaubt es das Verfahren, effizient eine Vertrauensgrenze (engl. „Trust Boundary“) und/oder Sicherheitszone (engl. „Secure Zone“) der Sicherheitseinheit um weitere Speicherbereiche dynamisch zu erhöhen.
-
Ferner wird es der Sicherheitseinheit ermöglicht, für die Überprüfung der Daten direkt auf die Speichereinheit zuzugreifen, welche auch im Zuge des regulären Betriebs der Recheneinheit verwendet wird, wodurch beispielsweise ein Überprüfen von großen Datenmengen auf einfache Weise ermöglicht wird. Auf herkömmliche Weise kann es oftmals nicht ohne weiteres möglich sein, große Speicherbereiche bzw. große Datenmengen an eine Sicherheitseinheit zu kopieren, z.B. zur Überprüfung längerer Zertifikatsketten oder im Umfeld von Software-Updates. Da längere Zertifikatsketten einen größeren Speicherbereich einnehmen, erfolgt deren Speicherung zumeist nicht in einem gesicherten Speicherbereich. Zum Übertragen derartiger Zertifikatsketten wird dann oftmals ein Parsen bzw. Zerteilen durchgeführt, wofür die Ausführung von nicht-vertrauenswürdige Anwendungen notwendig sein kann. Im Gegensatz dazu können im Rahmen des vorliegenden Verfahrens auch große Speicherbereiche komplett, sicher und manipulationsgeschützt an die Sicherheitseinheit übergeben werden. Somit wird beispielsweise auch eine sichere Überprüfung von langen kryptographischen Zertifikatsketten ermöglicht, z.B. von X.509-Zertifikaten.
-
Ferner können durch das Verfahren ein gesicherter Speicher bzw. ein gesichertes Hinterlegen von Daten in einem Speicher ermöglicht werden (engl. „Secure Flash“ bzw. „Secure Flashing“), indem Daten bzw. Software durch einen Host, z.B. durch eine Prozessoreinheit der Recheneinheit oder durch in der Recheneinheit ausgeführte Applikationen, in die Speichereinheit programmiert werden und indem eine Signaturprüfung dieser programmierten Software durch die Sicherheitseinheit erfolgt. Da die Integrität der Software durch das vorliegende Verfahren erhalten werden kann, kann es insbesondere verhindert werden, dass ein manipulierter Host die programmierte Software nach deren Validierung aber vor deren Ausführung manipuliert.
-
Beispielsweise eignet sich das vorliegende Verfahren für Recheneinheiten, in welchen kein sicheres Hochfahren (engl. „Secure Boot“) möglich ist, und ferner für Systeme, in welchen größere Datenmengen verifiziert werden sollen. Auch wenn die Recheneinheit ein Secure-Boot-Verfahren nutzt und implementiert, können durch die Datenüberprüfung gemäß dem vorliegenden Verfahren beispielsweise Auswirkungen von Laufzeitangriffen begrenzt und reduziert werden.
-
Die Sicherheitseinheit kann beispielsweise eine hardwarebasierte bzw. eine in Hardware implementierte Einheit sein, z.B. ein sog. Hardware-Sicherheitsmodul (engl. „Hardware Security Module“, HSM), insbesondere ein internes oder externes Peripheriegerät für die Ausführung kryptographischer Operationen. Ferner kann die Sicherheitseinheit beispielsweise auch in Software implementiert bzw. softwarebasiert sein, z.B. als eine sichere bzw. vertrauenswürdige Laufzeitumgebung (engl. „Trusted Execution Environment“, TEE), welche einen gesicherten Bereich einer Prozessoreinheit darstellt, in welchem nur speziell dafür freigegebene Applikationen ausgeführt werden dürfen. Beispielsweise kann eine derartige TEE-Umgebung als eine sog „Trustzone“ vorgesehen sein, wobei virtuelle Prozessoren als sichere Laufzeitumgebung bereitstellt werden.
-
Zum Verwalten von Zugriffen auf die Speichereinheit durch die Speicherschutzeinheit kann beispielsweise in einer Tabelle hinterlegt sein, auf welche Adress- bzw. Speicherbereiche der Speichereinheit durch welche Einheiten der Recheneinheit zugegriffen werden darf, insbesondere durch welche Prozessoreinheiten und/oder durch welche Prozesse bzw. Applikationen. Empfängt die Speicherschutzeinheit eine Zugriffsanfrage auf einen speziellen Speicherbereich, überprüft die Speicherschutzeinheit anhand dieser Tabelle, ob die jeweilige anfragende Einheit auf diesen Speicherbereich zugreifen darf oder nicht. Demgemäß erlaubt oder blockiert die Speicherschutzeinheit den angefragten Zugriff. Beispielsweise kann die Sicherheitseinheit zum Konfigurieren der Speicherschutzeinheit Einträge in dieser Tabelle bezüglich des jeweiligen Speicherbereichs erstellen oder verändern. Die Speicherschutzeinheit setzt diese Einträge dann um und lässt nur die erlaubten Zugriffe zu, wodurch der entsprechende Speicherschutz durch die Speicherschutzeinheit ausgeführt bzw. eingerichtet wird.
-
Vorteilhafterweise ist die Recheneinheit so konfiguriert, dass nur die Sicherheitseinheit die Speicherschutzeinheit konfigurieren kann bzw. darf. Somit ist es insbesondere nur der Sicherheitseinheit erlaubt festzulegen, welche Speicherbereiche dynamisch geschützt werden sollen. Weiteren Hardware- und Softwareeinheiten der Recheneinheit, welche aus Sicherheitsgründen als nicht-vertrauenswürdig und potentiell korrumpiert angesehen werden können, ist es daher zweckmäßigerweise nicht erlaubt, die Speicherschutzeinheit zu konfigurieren, um einen Speicherschutz festzulegen, zu ändern oder aufzuheben. Auf diese Weise kann es insbesondere verhindert werden, dass ein Angreifer, welcher z.B. die Recheneinheit exklusive der Sicherheitseinheit übernommen hat, den Speicherschutz ändert und die Daten unbemerkt manipuliert.
-
Besonders vorteilhaft umfasst die vorgegebene Zugriffsbeschränkung, dass nur die Sicherheitseinheit lesend und schreibend auf den vorgegebenen Speicherbereich zugreifen kann bzw. darf. Weitere Einheiten in der Recheneinheit, z.B. Prozesse, Anwendungen, Prozessoreinheiten, Prozessorkerne usw., dürfen insbesondere nur lesend oder überhaupt nicht auf den vorgegebenen Speicherbereich zugreifen. Veränderungen an dem Speicherbereich können somit exklusiv und ausschließlich durch die Sicherheitseinheit vorgenommen werden, den restlichen Hardware- und Softwareeinheiten der Recheneinheit ist zumindest ein schreibender Zugriff untersagt. Somit kann besonders zweckmäßig unterbunden werden, dass unautorisierte Änderungen an den Daten während oder nach der Überprüfung durch die Sicherheitseinheit vorgenommen werden.
-
Besonders zweckmäßig ist die Recheneinheit so konfiguriert, dass die Sicherheitseinheit in der Zugriffsbeschränkung für einzelne Einheiten der Recheneinheit, z.B. für einzelne Prozessorkerne, individuell festlegen kann, ob der jeweiligen Einheit lesender und schreibender Zugriff oder nur lesender oder kein Zugriff auf den vorgegebenen Speicherbereich gewährt wird. Beispielsweise kann einem speziellen Prozessorkern, welcher die Daten planmäßig verarbeiten soll, lesender Zugriff auf den Speicherbereich gewährt werden, wohingegen den restlichen Prozessorkernen kein Zugriff gewährt wird. Beispielsweise kann gemäß der Zugriffsbeschränkung lesender und schreibender Zugriff auf den Speicherbereich untersagt werden, wenn spezielle zu schützende Daten erst nach Überprüfen und Freigabe durch die Sicherheitseinheit lesbar werden sollen, z.B. schützenswerte Algorithmen.
-
Vorzugsweise erfolgt bei Empfang einer Zugriffsanfrage auf den vorgegebenen Speicherbereich für einen, insbesondere schreibenden, Zugriff, welcher gemäß der vorgegebenen Zugriffsbeschränkung nicht erlaubt ist bzw. welcher gegen die vorgegebene Zugriffsbeschränkung verstößt, ein Entscheiden bzw. Bewerten oder Evaluieren, ob die Sicherheitseinheit eine Aufhebung oder Änderung des Speicherschutzes des vorgegebenen Speicherbereichs veranlasst und/oder ob der Zugriff gemäß der Zugriffsanfrage auf einen anderen Speicherbereich umgeleitet wird, z.B. auf einen anderen Speicherbereich in der Speichereinheit oder in einer weiteren Speichereinheit der Recheneinheit. Beispielsweise kann bei Empfang einer derartigen Zugriffsanfrage eine Benachrichtigung, insbesondere eine Interrupt-Nachricht, ferner insbesondere eine Exception-Nachricht ausgesendet werden, beispielsweise an die Sicherheitseinheit und/oder an eine Prozessoreinheit der Recheneinheit. Das Entscheiden, wie mit der Zugriffsanfrage verfahren werden soll, kann dann von der Sicherheitseinheit bzw. der Prozessoreinheit auf Empfang dieser Benachrichtigung durchgeführt werden, insbesondere durch eine spezielle Einheit zum Verarbeiten derartiger Benachrichtigungen (engl. „Exception Handler“).
-
Vorzugsweise erfolgt nach dem Überprüfen der hinterlegten Daten durch die Sicherheitseinheit, insbesondere, wenn im Zuge des Überprüfens die hinterlegten Daten validiert wurden bzw. wenn deren Echtheit verifiziert wurde, ein erneutes Konfigurieren der Speicherschutzeinheit durch die Sicherheitseinheit, um den Speicherschutz des vorgegebenen Speicherbereichs aufzuheben. Beispielsweise kann die Sicherheitseinheit zu diesem Zweck die entsprechenden Einträge in der jeweiligen Tabelle der Speicherschutzeinheit verändern oder löschen, welche erlaubte bzw. verbotene Zugriffe auf den Speicherbereich durch verschiedene Einheiten der Recheneinheit definieren. Der Speicherschutz des vorgegebenen Speicherbereichs wird auf dieses Konfigurieren hin durch die Speicherschutzeinheit aufgehoben bzw. nicht mehr ausgeführt. Beispielsweise kann der Speicherschutz nach erfolgreichem Validieren der Daten aufgehoben werden, so dass weitere Einheiten auf die Daten zugreifen und diese weiterverarbeiten können. Insbesondere kann dieses Aufheben des Speicherschutzes zeitnah oder unmittelbar vor einem geplanten, autorisierten Zugriff auf die Daten erfolgen, um die Möglichkeit für ein unautorisiertes Manipulieren der Daten möglichst zu minimieren.
-
Alternativ erfolgt nach dem Überprüfen der hinterlegten Daten durch die Sicherheitseinheit, insbesondere, wenn im Zuge des Überprüfens die hinterlegten Daten validiert wurden bzw. wenn deren Echtheit verifiziert wurde, vorzugsweise ein erneutes Konfigurieren der Speicherschutzeinheit durch die Sicherheitseinheit, um den vorgegebenen Speicherbereich gemäß einer zweiten vorgegebenen Zugriffsbeschränkung zu schützen. Dieser zweite Speicherschutz des vorgegebenen Speicherbereichs wird daraufhin durch die Speicherschutzeinheit gemäß der vorgegebenen zweiten Zugriffsbeschränkung ausgeführt. Beispielsweise kann gemäß dieser zweiten Zugriffsbeschränkung bestimmten Einheiten, welche planmäßig auf die validierten Daten zugreifen sollen, ein entsprechender lesender und/oder schreibender Zugriff erlaubt werden.
-
Vorzugsweise erfolgt das erneute Konfigurieren der Speicherschutzeinheit zum Aufheben des Speicherschutzes oder zum Ausführen des zweiten Speicherschutzes nach einem Startzyklus. Bei einem derartigen Startzyklus, insbesondere initial beim Hochfahren der Recheneinheit bzw. des Systems, ist der Speicherschutz zweckmäßigerweise noch aktiv. Die entsprechenden Daten können somit beispielsweise auch nach einem Reset noch geschützt sein. Beispielsweise gibt die Sicherheitseinheit nach dem Startzyklus zunächst eine Freigabe für den Host, um den Speicherschutz aufzuheben. Beispielsweise kann dies durch einen Resetwert der Speicherschutzeinheit realisiert werden oder durch eine nichtflüchtige Konfiguration der Speicherschutzeinheit, die nach dem Reset vom System gesetzt wird, entweder durch die Sicherheitseinheit, wenn diese vor dem Host gestartet wird, oder durch Hardware-Features im Controller beim Reset. Auf diese Weise kann insbesondere sichergestellt werden, dass die Daten nicht durch einen Neustart manipulierbar werden.
-
Vorteilhafterweise hinterlegt die Sicherheitseinheit nach dem Überprüfen der hinterlegten Daten ein Ergebnis der Überprüfung in einem weiteren Speicherbereich der Speichereinheit oder in einer weiteren Speichereinheit der Recheneinheit. Ferner hebt die Sicherheitseinheit den Speicherschutz auf oder ändert diesen, so dass eine Verarbeitungseinheit zumindest lesend auf den Speicherbereich zugreifen darf, wobei diese Verarbeitungseinheit ein Host sein kann, beispielsweise ein Prozess, eine Anwendung, eine Prozessoreinheit, ein Prozessorkern, usw.
-
Wenn gemäß dem hinterlegten Ergebnis die hinterlegten Daten validiert wurden bzw. wenn deren Echtheit bestätigt wurde, liest die Verarbeitungseinheit die hinterlegten und überprüften Daten ein und verarbeitet diese.
-
Vorteilhafterweise erfolgt nach dem Hinterlegen der zu überprüfenden Daten in dem vorgegebenen Speicherbereich ein Anweisen der Sicherheitseinheit, um die in dem vorgegebenen Speicherbereich hinterlegten Daten zu überprüfen. Beispielsweise kann dieses Anweisen durch die Verarbeitungseinheit erfolgen, welche auf die Daten zugreifen und diese weiterverarbeiten soll. Beispielsweise kann die Verarbeitungseinheit zu diesem Zweck eine entsprechende Anweisung, Nachricht oder Anfrage an die Sicherheitseinheit ausgeben bzw. übermitteln. Zweckmäßigerweise konfiguriert die Sicherheitseinheit die Speicherschutzeinheit somit auf eine entsprechende Anfrage einer Softwareanwendung der Recheneinheit hin.
-
Vorzugsweise wird für ein derartiges Anweisen der Sicherheitseinheit eine entsprechende Anweisung in einem weiteren Speicherbereich der Speichereinheit oder in einer weiteren Speichereinheit der Recheneinheit hinterlegt. Insbesondere kann in dieser Anweisung hinterlegt sein, an welcher konkreten Speicheradresse die zu überprüfenden Daten hinterlegt sind. Eine Benachrichtigung wird an die Sicherheitseinheit ausgesendet, insbesondere ein Interrupt. Insbesondere kann in dieser Benachrichtigung die Speicheradresse hinterlegt sein, an welcher die Anweisung hinterlegt ist. Auf Empfang dieser Benachrichtigung hin liest die Sicherheitseinheit die hinterlegte Anweisung ein und führt die Überprüfung der Daten durch.
-
Gemäß einer vorteilhaften Ausführungsform sind die zu überprüfenden Daten Teil eines Updates und können beispielsweise neue Firmware für die Recheneinheit aufweisen oder einen neuen Teil einer Firmware oder neue Daten für eine Firmware. Beispielsweise kann es sich bei dem Update um ein OTA-Update (engl. „over-the-air“) handeln, insbesondere um ein sog. FOTA („Flashen over the air“) oder SOTA („Software over the air“) Update, im Zuge dessen die Updatedaten über eine Funkverbindung übertragen werden, z.B. über das Internet.
-
Vor dem Hinterlegen der Daten bzw. Updatedaten in dem vorgegebenen Speicherbereich werden die Daten zunächst über eine Schnittstelle der Recheneinheit empfangen, z.B. über eine Funk- und/oder Diagnoseschnittstelle. Nach Empfang der Daten wird der Speicherbereich mit Hilfe der Zugriffsbeschränkung und des Speicherschutzes durch die Sicherheitseinheit und die Speicherschutzeinheit geschützt. Anschließend überprüft die Sicherheitseinheit die Daten, insbesondere dahingehend, ob die Daten vollständig und korrekt empfangen wurden und ob keine schädliche Software übertragen wurde. Nach dem Überprüfen und Validieren der hinterlegten Daten erfolgt ein Aktivieren der Daten in dem vorgegebenen Speicherbereich oder ein Installieren der Daten in einem anderen Speicherbereich, z.B. in einem weiteren Speicherbereich der Speichereinheit oder in einer weiteren Speichereinheit der Recheneinheit. Nach einem derartigen Aktivieren bzw. Installieren können die Updatedaten bei zukünftigen Programmabläufen Anwendung finden.
-
Durch das vorliegende Verfahren kann sichergestellt werden, dass keine unautorisierte Manipulation an den Updatedaten zwischen deren Überprüfung und deren Aktivierung bzw. Installation vorgenommen wird. Auf diese Weise kann besonders zweckmäßig das TOCTOU-Problem bei OTA-Updates adressiert werden.
-
Um auf herkömmliche Weise Updatedaten herunterzuladen und zu überprüfen, kann beispielsweise ein explizit vorgehaltener Speicher verwendet werden, der nur durch ein Hardware-Sicherheitsmoduls (HSM) verändert werden kann, welches die Daten dann überprüft. Ein derartiger expliziter Speicher kann jedoch mit hohen Kosten verbunden sein, zumal dieser Speicher im Falle der normalen Applikation ungenutzt bleibt. Alternativ wird oftmals auch ein Zwischenspeicher außerhalb des HSMs verwendet, welcher dann aber meist durch (unsichere) Host-CPUs zugreifbar und folglich manipulierbar ist. Zwar kann beispielsweise bei der Installation der Updatedaten bzw. Firmware im HSM nochmals überprüft werden, ob eine Manipulation stattgefunden hat. Jedoch kann es hier zu einem Verfügbarkeitsproblem kommen, da die alten Daten bzw. die alte Firmware zumindest teilweise bereits überschrieben und für ein Roll-Back nicht mehr verfügbar sein können.
-
Im Gegensatz dazu ermöglicht es das vorliegende Verfahren, einen beliebigen Speicher innerhalb des Systems für Updates zu verwenden, so dass kein explizit vorgehaltener Speicher notwendig ist und die Verfügbarkeit des Systems zu jeder Zeit gegeben ist. Da die Übertragung der Daten gestört bzw. unterbrochen werden kann, z.B. durch einen Angriff oder eine Funkstörung, kann insbesondere aus Denial-of-Service- und Verfügbarkeitsgründen ein Speicherbereich zum Hinterlegen der Updatedaten vorgegeben werden, der den neuen Speicherinhalt komplett aufnehmen kann. Damit kann während des Downloads die komplette Funktionalität des Systems gewährleistet werden. Parallel dazu wird dieser reservierte, vorgegebene Speicherbereich mit den geladenen Daten gefüllt. Der vorgegebene Speicherbereich kann insbesondere ein beliebiger Speicherbereich in dem System sein. Nach Vollendung der Übertragung in den Speicherbereich, triggert das System zweckmäßigerweise die Sicherheitseinheit. Diese legt daraufhin gemäß der vorgegebenen Zugriffsbeschränkung besonders zweckmäßig einen exklusiven Zugriff auf den Speicherbereich für sich selbst fest, so dass zumindest ein schreibender Zugriff anderen Einheiten untersagt ist. Danach startet die Sicherheitseinheit die Überprüfung des neuen Speicherinhalts. Bei Verwendung des Speicherbereichs als temporärer Zwischenspeicher, wobei die Updatedaten nach ihrer Überprüfung an einen anderen Zielort kopiert werden, kann der exklusive Zugriff nach der Überprüfung wieder aufgeben werden und der Zwischenspeicher kann wieder für andere Einheiten freigeben werden.
-
Das vorliegende Verfahren eignet sich besonders zweckmäßig zum Einsatz im (Kraft-) Fahrzeugbereich. Die Recheneinheit kann beispielsweise ein Mikrocontroller oder ein Steuergerät eines (Kraft-) Fahrzeugs sein, z.B. ein Motor-, Domänen-, Airbag-, Bremssteuergerät usw. Bei den zu überprüfenden Daten kann es sich beispielsweise um Fahrzeugdaten handeln, die beispielsweise von Sensoren des Fahrzeugs erfasst werden. Beispielsweise kann eine Verarbeitung dieser Daten im Zuge sicherheitskritischer Funktionen erfolgen, welche zum sicheren Betrieb und zur Steuerung des Fahrzeugs ausgeführt werden, beispielsweise im Zuge einer Motor-, Domänen-, Airbag- und/oder Bremssteuerung, im Zuge von Fahrassistenzfunktionen, im Zug des unterstützten autonomen Fahrens (IAD) oder allgemein des automatisierten oder teilautomatisierten Fahrens usw. Ferner kann es sich bei den zu überprüfenden Daten auch um ein Update einer Steuergeräte- bzw. Fahrzeugsoftware handeln. Durch das vorliegende Verfahren können insbesondere eine hohe Betriebssicherheit bzw. funktionale Sicherheit („safety“) sowie ferner insbesondere eine hohe informationstechnische Sicherheit bzw. Informationssicherheit („security“) ermöglicht werden. Insbesondere können eine Sicherheit bzw. Ausfallsicherheit und Integrität des Steuergeräts erhöht werden. Ferner können durch das Verfahren besonders zweckmäßig Sicherheitsanforderungen im (Kraft-) Fahrzeugbereich erfüllt werden, wie sie beispielsweise in der Norm ISO 26262 oder insbesondere von dem sog. „Automotive Safety Integrity Level“ (ASIL), eine von der ISO 26262 spezifizierte Sicherheitsanforderungsstufe für sicherheitsrelevante Systeme in Kraftfahrzeugen, vorgegeben werden.
-
Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines (Kraft-) Fahrzeugs, ist, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.
-
Auch die Implementierung eines erfindungsgemäßen Verfahrens in Form eines Computerprogramms oder Computerprogrammprodukts mit Programmcode zur Durchführung aller Verfahrensschritte ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn ein ausführendes Steuergerät noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Schließlich ist ein maschinenlesbares Speichermedium vorgesehen mit einem darauf gespeicherten Computerprogramm wie oben beschrieben. Geeignete Speichermedien bzw. Datenträger zur Bereitstellung des Computerprogramms sind insbesondere magnetische, optische und elektrische Speicher, wie z.B. Festplatten, Flash-Speicher, EEPROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich. Ein solcher Download kann dabei drahtgebunden bzw. kabelgebunden oder drahtlos (z.B. über ein WLAN-Netz, eine 3G-, 4G-, 5G- oder 6G-Verbindung, etc.) erfolgen.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Kurze Beschreibung der Zeichnungen
-
- 1 zeigt schematisch eine Ausgestaltung einer erfindungsgemäßen Recheneinheit, die dazu eingerichtet ist, eine Ausführungsform eines erfindungsgemäßen Verfahrens durchzuführen.
- 2 zeigt schematisch eine Ausführungsform eines erfindungsgemäßen Verfahrens als ein Blockdiagramm.
-
Ausführungsform(en) der Erfindung
-
In 1 ist eine Recheneinheit in Form eines Ein-Chip-Systems (engl. „System on a Chip“, SoC) schematisch dargestellt und mit 100 bezeichnet, welches beispielsweise in einem Mikrocontroller eines Steuergeräts in einem (Kraft-) Fahrzeug verwendet wird.
-
Das SoC 100 weist einen Host 110 auf, welcher wiederum eine Prozessoreinheit 111 aufweist, z.B. einen Multikernprozessor mit einer Vielzahl von Prozessorkernen, sowie eine lokale, interne Speichereinheit 112, z.B. einen RAM-Speicher. Das SoC 100 weist ferner globale, gemeinsam nutzbare Speichereinheiten auf, z.B. einen Flash-Speicher 140 und einen globalen RAM-Speicher 150. Der Host 110 und die Speichereinheiten 140 150 sowie weitere Komponenten des SoC 100 stehen über eine On-Chip-Verbindung (engl. „On-Chip Interconnect, OCI) 101 miteinander in Kommunikationsverbindung.
-
Ferner weist das SoC 100 eine Sicherheitseinheit 120 auf, z.B. ein Hardware-Sicherheitsmodul („Hardware Security Module“, HSM), welches dazu vorgesehen ist, um in den Speichereinheiten 140, 150 hinterlegte Daten auf Echtheit, Richtigkeit bzw. Integrität zu überprüfen, beispielsweise mittels kryptographischer Verfahren. Das HSM 120 weist beispielsweise eine Debugger Steuerung 121 auf sowie einen gesicherten Prozessorkern 122, einen Zufallszahlengenerator 123 aufweisend einen physikalischen Zufallszahlengenerator (engl. "true random number generator, TRNG) und einen Pseudo Pseudozufallszahlengeneratoren (engl. „pseudo random number generator“, PRNG), einen gesicherten lokalen RAM-Speicher 124, eine Einheit 125 für Hashfunktionen, eine Schnittstelle 126 für die On-Chip-Verbindung, eine Einheit 127 für elliptische Kurven-Kryptografieverfahren (engl. „Elliptic Curve Cryptography“, ECC), eine Einheit 128 zum Verschlüsseln und Signieren gemäß dem kryptographischen RSA (Rivest-Shamir-Adleman) Verfahren und eine Einheit 129 für einen fortschrittlicher Verschlüsselungsstandard (engl. „Advanced Encryption Standard“, AES).
-
Das HSM 120 steht über eine gesicherte Bus-Verbindung 102 mit einer Speicherschutzeinheit („Memory Protection Unit“, MPU) 130 in Verbindung. Die MPU 130 ist vorgesehen, um Zugriffsanfragen auf die Speichereinheiten 140 und 150 zu überwachen und um entsprechende angefragte Zugriffe zuzulassen oder zu blockieren. Zu diesem Zweck kann die MPU 130 mit Hilfe einer Konfigurationsdatei 131 konfiguriert werden, welche eine Tabelle umfasst, in welcher hinterlegt ist, welche Einheiten des SoC 100 auf welche Speicher- bzw. Adressbereiche der Speichereinheiten 140, 150 zugreifen dürfen und welchen Einheiten Zugriff verwehrt ist. Insbesondere kann es nur dem HSM 120 erlaubt sein, diese Konfiguration der MPU 130 zu verändern.
-
Ein Debugger 170 zum Erkennen von Fehlern in dem SoC 100 kann als ein externes, nicht auf dem SoC 100 implementiertes Peripheriegerät über eine Verbindung 103 (z.B. eine sog. Debug Access Port, DAP) an eine Debug-Schnittstelle 160 des SoC 100 angebunden sein, welche beispielsweise ein Register 161 aufweisen kann.
-
Wenn der Host 110, z.B. die Prozessoreinheit 111 oder in der Prozessoreinheit 111 ausgeführte Anwendungen, auf in den Speichereinheiten 140, 150 hinterlegte Daten zugreifen und diese Daten verarbeiten soll, kann es von Bedeutung sein, die Daten durch das HSM 120 zunächst auf Richtigkeit und Integrität zu überprüfen, beispielsweise wenn die Daten im Zuge von sicherheitskritischen Funktionen des Fahrzeugs verarbeitet werden sollen.
-
Bei einer derartigen Überprüfung und anschließenden Verwendung von Daten kann herkömmlicherweise oftmals das sog. TOCTOU-Problem (engl.: „Time-of-Check-to-Time-of-Use-Problem“) auftreten, beispielsweise wenn ein Angreifer, welcher das SoC 100 korrumpiert hat, während oder nach der Überprüfung der Daten durch das HSM 120 unautorisierte Änderungen an den Daten vornimmt, so dass das HSM 120 diese Änderungen nicht mehr erkennen kann.
-
Um ein derartiges unerkanntes, unautorisiertes Manipulieren von Daten gemäß dem TOCTOU-Problem zu verhindern, ist das SoC 100, insbesondere programmtechnisch, dazu eingerichtet, eine Ausführungsform eines erfindungsgemäßen Verfahrens durchzuführen, welches in 2 schematisch als eine Blockdiagramm dargestellt ist und nachfolgend in Bezug auf die 1 und 2 erläutert werden soll.
-
In einem Schritt 201 werden zu verarbeitende Daten in einem vorgegebenen Adress- bzw. Speicherbereich beispielsweise des Flash-Speichers 140 hinterlegt. Beispielsweise kann es sich bei diesen Daten um Sensorwerte des Fahrzeugs handeln, welche durch den Host 110 zum Ausführen einer Fahrzeugfunktion, z.B. einer Motorsteuerung, weiter verarbeitetet werden sollen.
-
In einem Schritt 202 weist der Host 110 das HSM 130 an, die in dem vorgegebenen Speicherbereich hinterlegten Daten zu überprüfen. Zu diesem Zweck hinterlegt der Host 110 eine entsprechende Anweisung in einem weiteren, zweiten Speicherbereich des Flash-Speichers 140, in welcher z.B. die Speicheradresse der zu überprüfenden Daten interlegt ist. Ferner sendet der Host 110 eine Benachrichtigung, insbesondere ein Interrupt, an das HSM 120 aus, welches daraufhin hin die hinterlegte Anweisung einliest.
-
In einem Schritt 203 konfiguriert das HSM 120 die MPU 130, um den vorgegebenen Speicherbereich in dem Flash-Speicher 140 gemäß einer vorgegebenen Zugriffsbeschränkung zu schützen. Beispielsweise kann gemäß dieser Zugriffsbeschränkung nur das HSM 120 lesend und schreibend auf den vorgegebenen Speicherbereich zugreifen. Anderen Einheiten des SoC 100 kann beispielsweise weder lesender noch schreibender Zugriff erlaubt sein. Zum Konfigurieren der MPU 130 kann das HSM 120 beispielsweise einen Eintrag in der Tabelle der Konfigurationsdatei 131 erstellen oder verändern.
-
In einem Schritt 203 führt die MPU 130 einen Speicherschutz des Flash-Speichers 140 gemäß der vorgegebenen Zugriffsbeschränkung aus. Wenn nun eine Einheit außer dem HSM 120 auf den vorgegebenen Speicherbereich zugreifen möchte, blockiert die MPU 130 diesen Zugriff.
-
In einem Schritt 205 liest das HSM 120 die in dem vorgegebenen Speicherbereich hinterlegten Daten ein und überprüft die eingelesenen Daten. Zu diesem Zweck überprüft das HSM 120 mit Hilfe von kryptographischen Verfahren die Richtigkeit und Integrität der eingelesenen Daten.
-
In einem Schritt 206 hinterlegt das Ergebnis der Überprüfung in einem weiteren, dritten Speicherbereich in dem Flash-Speicher 140.
-
In einem Schritt 207 hebt das HSM 120 den Speicherschutz des vorgegebenen Speicherbereichs auf oder ändern den Speicherschutz zumindest derart, dass der Host 110 zumindest lesend auf den vorgegebenen Speicherbereich zugreifen darf. Zu diesem Zweck konfiguriert das HSM 120 die MPU 130 erneut und ändert den entsprechenden Eintrag in der Tabelle in der Konfigurationsdatei 131 beispielsweise derart, dass der Speicherschutz aufgehoben wird und alle Einheiten des SoC 100 auf den vorgegebenen Speicherbereich zugreifen dürfen, oder beispielsweise derart, dass ein zweiten Speicherschutz eingerichtet wird, gemäß welchem neben dem HSM 120 auch der Host 110 zumindest lesend auf den vorgegebenen Speicherbereich zugreifen darf.
-
In einem Schritt 208 führt die MPU 130 die entsprechende neue Konfiguration aus. Wenn der Speicherschutz gemäß der neuen Konfiguration aufgehoben werden soll, erlaubt die MPU 130 fortan sämtliche Zugriffe auf den vorgegebenen Speicherbereich. Wenn der zweite Speicherschutz umgesetzt werden soll, erlaubt die M PU 130 nur dem HSM 110 lesenden und schreibenden Zugriff und dem Host lesenden Zugriff.
-
In einem Schritt 209 liest der Host 110 das Ergebnis der Überprüfung aus dem dritten Speicherbereich ein. Wenn gemäß dem Ergebnis die Daten validiert wurden, liest der Host 110 die Daten in Schritt 210 ein und verarbeitet diese.
-
Durch Festlegen und Umsetzen der Zugriffsbeschränkung und des Speicherschutzes kann verhindert werden, zwischen ihrer Überprüfung durch das HSM 120 und der Verarbeitung durch den Host 110 manipuliert werden. Durch das Zusammenwirken von HSM 120 und MPU 130 im Rahmen des vorliegenden Verfahrens wird eine dynamische Speicherschutzeinheit definiert, welche die Adressbereiche der Speichereinheiten 140, 150 dynamisch schützen kann. Diese dynamische Speicherschutzeinheit 130 kann on-demand durch das Hardware Security Modul 120 auf Anfrage einer SW-Anwendung des Hosts 110 konfiguriert werden und die Adressbereiche entsprechend schützen. Nachdem der vorgegebene Speicherbereich durch die MPU 130 entsprechend geschützt wurde, kann nur noch das Hardware Security Modul 120 Änderungen an diesem Speicherbereich vornehmen.
-
Es kann sich bei den zu überprüfenden Daten ferner auch um Updatedaten handeln, welche beispielsweise im Zuge OTA-Updates über das Internet empfangen und in der vorgegebenen Speicherbereich hinterlegt wurden. Nach dem Überprüfen und Validieren der hinterlegten Daten kann dann ein Aktivieren der Daten in dem vorgegebenen Speicherbereich oder ein Installieren der Daten in einem anderen Speicherbereich erfolgen, so dass die Updatedaten bei zukünftigen Programmabläufen Anwendung finden können. Durch das vorliegende Verfahren kann somit sichergestellt werden, dass keine unautorisierte Manipulation zwischen Überprüfung und Aktivierung bzw. Installation der Updatedaten vorgenommen werden.