-
Ausführungsbeispiele betreffen allgemein Datenverarbeitungsvorrichtungen und Verfahren zum Senden von Daten über einen Bus.
-
In einer elektronischen Datenverarbeitungsvorrichtung wie beispielsweise einem Mikrocontroller kommunizieren Komponenten typischerweise über einen gemeinsamen Bus. Da bei einem erfolgreichen Angriff auf den Bus durch einen Angreifer bei solch einer Architektur potentiell die Vertraulichkeit von innerhalb jedes Paars von Komponenten ausgetauschten Daten gefährdet ist, sind Mechanismen wünschenswert, die die Vertraulichkeit von über einen Bus ausgetauschten Daten sicherstellen, wenn ein Angreifer Zugriff auf den Bus erlangt.
-
Gemäß einer Ausführungsform wird eine Datenverarbeitungsvorrichtung bereitgestellt, aufweisend eine PUF(Physical Unclonable Function)-Quelle, die eingerichtet ist, PUF-Werte zu erzeugen (z.B. aus Anfangswerten eines SRAMs oder aus Abtastwerten eines Ringoszillators), einen Bus, eine Mehrzahl von Buszugriffskomponenten, die eingerichtet sind, auf den Bus zuzugreifen, und eine Maskierungsinformationserzeugungsschaltung, die eingerichtet ist, unter Verwendung mindestens eines von der PUF-Quelle erzeugten PUF-Werts eine Maskierungsinformation für mindestens ein Paar von Buszugriffskomponenten zu erzeugen und an die Buszugriffskomponenten des mindestens einen Paars zu übermitteln. Das mindestens eine Paar von Buszugriffskomponenten ist derart eingerichtet, dass eine Buszugriffskomponente zum Senden von Daten an die andere Buszugriffskomponente des Paares die Daten vor ihrem Senden über den Bus gemäß der für das Paar erzeugten Maskierungsinformation maskiert und die andere Buszugriffskomponente die über den Bus empfangenen Daten gemäß der für das Paar erzeugten Maskierungsinformation demaskiert.
-
Gemäß einer weiteren Ausführungsform wird ein Verfahren zum Übermitteln von Daten über einen Bus gemäß der oben beschriebenen Ausführungsform bereitgestellt.
-
Die Figuren geben nicht die tatsächlichen Größenverhältnisse wieder, sondern sollen dazu dienen, die Prinzipien der verschiedenen Ausführungsbeispiele zu illustrieren. Im Folgenden werden verschiedene Ausführungsbeispiele mit Bezug auf die folgenden Figuren beschrieben.
- 1 zeigt eine Datenverarbeitungsvorrichtung.
- 2 zeigt eine Datenverarbeitungsvorrichtung mit einer Busarchitektur gemäß einem ersten Ausführungsbeispiel.
- 3 veranschaulich ein Scrambeln von zu sendenden Daten.
- 4 zeigt eine Datenverarbeitungsvorrichtung mit einer Busarchitektur gemäß einem zweiten Ausführungsbeispiel.
- 5 zeigt eine Datenverarbeitungsvorrichtung mit einer Busarchitektur gemäß einem dritten Ausführungsbeispiel.
- 6 zeigt eine Datenverarbeitungsvorrichtung gemäß verschiedenen Ausführungsformen.
- 7 zeigt ein Ablaufdiagramm, das ein Verfahren zum Senden von Daten über einen Bus veranschaulicht.
-
Die folgende detaillierte Beschreibung bezieht sich auf die beiliegenden Figuren, die Details und Ausführungsbeispiele zeigen. Diese Ausführungsbeispiele sind so detailliert beschrieben, dass der Fachmann die Erfindung ausführen kann. Andere Ausführungsformen sind auch möglich und die Ausführungsbeispiele können in struktureller, logischer und elektrischer Hinsicht geändert werden, ohne vom Gegenstand der Erfindung abzuweichen. Die verschiedenen Ausführungsbeispiele schließen sich nicht notwendig gegenseitig aus, sondern es können verschiedene Ausführungsformen miteinander kombiniert werden, so dass neue Ausführungsformen entstehen. Im Rahmen dieser Beschreibung werden die Begriffe „verbunden“, „angeschlossen“ sowie „gekoppelt“ verwendet zum Beschreiben sowohl einer direkten als auch einer indirekten Verbindung, eines direkten oder indirekten Anschlusses sowie einer direkten oder indirekten Kopplung.
-
1 zeigt eine Datenverarbeitungsvorrichtung 100.
-
Die Datenverarbeitungsvorrichtung 100 ist beispielsweise ein Mikrocontroller, z.B. ein Mikrocontroller oder eine MCU (Microcontroller Unit) für den Automobilbereich, aber auch für andere Anwendungen wie Luftfahrt oder Industrie. Die Datenverarbeitungsvorrichtung 100 kann aber auch eine andere Art von Datenverarbeitungsvorrichtung sein, z.B. ein Computer wie z.B. ein Desktop-Computer oder ein Laptop-Computer oder auch ein Smartphone oder Tablet.
-
Die Datenverarbeitungsvorrichtung 100 weist mehrere Komponenten 101 auf. Beispiele für die Komponenten 101 sind eine CPU, ein oder mehrere Cache-Speicher (z.B. ein Daten-Cache-Speicher und ein Instruktions-Cache-Speicher), eine DMA(Direct Memory Access)-Einheit, ein Flash-Speicher, ein SRAM (Static Random Access Memory), ein Debug/Trace-Modul oder eine Bridge (z.B. zu einem Peripherie-Bus).
-
Die Datenverarbeitungsvorrichtung 100 weist einen Bus 102 auf und die Komponenten 101 sind eingerichtet, auf den Bus zuzugreifen, um Daten (in Form von Nachrichten) untereinander auszutauschen. Sie werden deshalb auch als Buszugriffskomponenten oder auch als jeweils als (Bus-)Endpunkt (EP) bezeichnet.
-
Gemäß einer Ausführungsform agiert bei einer Kommunikation zwischen zwei (also einem Paar von) Komponenten 101 über den Bus 102 eine der Komponenten als Master (Bus-Master) und die andere als Slave (Bus-Slave).
-
Bei vielen Anwendungen ist es wünschenswert, dass der Bus 102 sicher ist, sodass die Vertraulichkeit der über ihn ausgetauschten Daten geschützt ist.
-
Bilden die Komponenten 101 und der Bus 102 beispielsweise ein Bus-System (bzw. eine Bus-Architektur) mit gemeinsamen (shared) Bus mit M Master-Komponenten (i=[0...(M-1)]) und S Slave-Komponenten (j=[0...(S-1)]), so ist beispielsweise wünschenswert, dass jede Master-Komponente die Möglichkeit hat, die Vertraulichkeit von Daten zu schützen, wenn sie die Daten an eine bestimmte Untergruppe der Slave-Komponenten sendet und/oder von diesen empfängt.
-
Eine Gefahr für die Vertraulichkeit der Daten besteht beispielsweise darin, dass ein Angreifer den Bus hackt und Zugriff auf alle Businformationen erhält. Zum Schutz sollten die die vom Angreifer erbeuteten Informationen unbrauchbar sein oder die Daten verschleiert sein, z.B. mittels geeigneter Desinformationsmaßnahmen.
-
Eine Möglichkeit ist die kryptographische Verschlüsselung der auf dem Bus übertragenen Daten durch die sendende Komponente und die zugehörige kryptographische Entschlüsselung durch die empfangende Komponente. Dies ist unabhängig von der Busarchitektur und typischerweise nur auf bestimmte zu schützende Daten fokussiert. Die kryptographische Verschlüsselung und Entschlüsselung von Daten ist jedoch eine rechenintensive Aufgabe.
-
Gemäß verschiedenen Ausführungsformen werden zu sendende Daten vom Sender maskiert und vom Empfänger demaskiert. Die Maskierung und die Demaskierung (z.B. eine Exklusiv-ODER-Kombination mit einer Maske) können sehr schnell durchgeführt werden, z.B. ohne, dass sie eine zusätzliche Verzögerung des Busses (und damit ggf. eine entsprechende Änderung des Busprotokolls) verursachen.
-
Die Maske (oder allgemein die Maskierungsinformation) wird gemäß verschiedenen Ausführungsformen von einer Maskierungsinformationserzeugungsschaltung auf der Grundlage ein oder mehrerer PUF(Physical Unclonable Function)-Werten, die sie aus einer PUF-Quelle erhält (d.h. nicht-klonbarer Information) erzeugt. Die Maskierungsinformationserzeugungsschaltung kann die Maskierungsinformation beispielsweise individuell für jedes Master-Slave-Paar (d.h. Paar aus Master-Komponente und Slave-Komponente) oder auch individuell für jede Master-Komponente erzeugen und dient als in der Bus-Architektur globale Erzeugungs- und Verteilungsinstanz für die Maskierungsinformation. Die PUF-Quelle kann jegliche Art von PUF-Quelle für einen Chip sein, beispielsweise können die PUF-Werte aus Anfangszuständen des SRAMs nach einem Reset gegeben sein oder aus Abtastwerten eines Ringoszillators ermittelt werden.
-
Die Erzeugung der Maskierungsinformation auf der Grundlage von ein oder mehreren PUF-Werten bewirkt, dass die Maskierungsinformation individuell für den jeweiligen Mikrocontroller (z.B. Chip-individuell) ist und schützt davor, dass ein Angreifer den Maskierungsmechanismus hackt, wie es bei einem Maskierungsalgorithmus, der identisch auf mehreren Chips eingesetzt wird, der Fall sein kann.
-
Im Folgenden wird ein erstes Ausführungsbeispiel beschrieben, bei dem eine für alle Komponenten 101 gemeinsame Maskierungsinformation, im Folgenden auch als (Maskierungs-)Token bezeichnet, verwendet wird, das individuell für die Datenverarbeitungsvorrichtung (z.B. Mikrocontroller-individuell oder Chip-individuell) ist.
-
2 zeigt eine Datenverarbeitungsvorrichtung 200 mit einer Busarchitektur gemäß einem ersten Ausführungsbeispiel.
-
Die Datenverarbeitungsvorrichtung 200 weist Datenverarbeitungskomponenten 201 (beispielsweise entsprechend den Datenverarbeitungskomponenten 101) und einen Bus 202 (beispielsweise entsprechend dem Bus 102) auf. Die Datenverarbeitungsvorrichtung 200 weist ferner eine Maskierungsinformationserzeugungsschaltung 203 auf.
-
Die Maskierungsinformationserzeugungsschaltung 203 empfängt PUF-Werte von einer PUF-Quelle 204 und erzeugt unter Verwendung der PUF-Werte Maskierungstoken, die individuell für die Datenverarbeitungsvorrichtung 200 ist.
-
Ein Maskierungstoken kann statisch sein und einmalig erzeugt werden und für die gesamte Lebensdauer einer Datenverarbeitungsvorrichtung (z.B. eines Chips) verwendet werden. Dies birgt jedoch das Risiko, dass ein Angreifer es durch Ausprobieren verschiedener Datenmuster in Erfahrung bringt.
-
Gemäß verschiedenen Ausführungsbeispielen erzeugt die Maskierungsinformationserzeugungsschaltung 203 deshalb dynamisch Maskierungstokens. Ein erzeugtes Maskierungstoken wird beispielsweise verwendet, bis es durch ein neu erzeugtes Maskierungstoken ersetzt wird. Beispielsweise kann die Maskierungsinformationserzeugungsschaltung 203 ein Maskierungstoken bei jedem Einschalt-Zurücksetzen (power-on reset) erzeugen. Maskierungsinformationserzeugungsschaltung 203 kann neue Maskierungstoken (die bestehende Maskierungstoken ersetzen) aber auch zwischen zwei Resets erzeugen, z.B. in zufälligen Zeitabständen, um zu verhindern, dass ein Angreifer durch statistische Analyse Information gewinnt.
-
Die Maskierungsinformationserzeugungsschaltung 203 verteilt ein erzeugtes Maskierungstoken an die Komponenten 201 über einen getrennten Kanal (z.B. eine getrennte Leitung) 205, d.h. sie verwendet nicht den Bus, um die Maskierungsinformation zu übertragen.
-
Gemäß einer Ausführungsform übermittelt die Maskierungsinformationserzeugungsschaltung 203 das Maskierungstoken individuell an jede Komponente.
-
Will eine der Komponenten 201 an eine andere der Komponenten 202 Daten senden, so scrambelt sie die Daten mittels des Maskierungstokens.
-
3 veranschaulich ein Scrambeln von zu sendenden Daten.
-
Die sendende Komponente implementiert eine Transformationsfunktion (oder Maskierungsfunktion) 301, der sie das Maskierungstoken 302 und die zu sendenden (Roh-)Daten 303 zuführt und die gescrambelte Daten 304 daraus erzeugt. Dies erfolgt z.B. in der Datenübermittlungsphase des verwendeten Busprotokolls.
-
Ein Beispiel für die Transformationsfunktion ist eine Exklusiv-ODER-Kombination der Rohdaten 303 mit dem Maskierungstoken, wobei z.B. die Rohdaten in mehrere Worte zerlegt werden, die die Länge des Maskierungstokens (welches in diesem Fall ein Maskierungswort ist), haben. Es kann aber beispielsweise jegliche umkehrbare kombinatorische Logik für die Transformationsfunktion verwendet werden, die keine zusätzliche Verzögerung (von ein oder mehreren Bustakt-Zyklen) einfügt und somit das verwendete Bus-Protokoll nicht stört.
-
Erlangt ein Angreifer Zugriff auf den Bus, sieht er nur gescrambelte (d.h. maskierte) Daten. Kennt der Angreifer das Maskierungstoken nicht ist somit die Vertraulichkeit der Daten gewährleistet. Da das Maskierungstoken individuell für die Datenverarbeitungsvorrichtung ist und nicht klonbar ist, kann ein Angreifer das Maskierungstoken auch nicht für eine andere Datenverarbeitungsvorrichtung verwenden, selbst wenn es ihm gelingt, es auf einer Datenverarbeitungsvorrichtung herauszufinden.
-
In dem oben beschriebenen ersten Ausführungsbeispiel ist wie erläutert das Maskierungstoken für alle Buszugriffskomponenten gleich. Dies schafft, wie oben beschrieben, Schutz unter der Annahme, dass ein Angreifer alle Informationen direkt vom Bus abgreift. Allerdings ist der wahrscheinlichste Fall für einen erfolgreichen Angriff auf das Bussystem durch einen Angreifer der Fall, dass der Angreifer Zugriff, auf eine Komponente, z.B. ein Bus-Slave (d.h. eine Slave-Komponente) wie z.B. ein Debug/Trace-Modul. Ein Angreifer kann dann die Identifikation einer Master-Komponente verwenden, um Information auf dem Bus zu filtern (d.h. von dieser Master-Komponente gesendete Daten herausfiltern, da die Senderidentifikation typischerweise mitgeschickt wird). Ist die Transformationsfunktion transparent für das Busprotokoll zum DeScrambeln der empfangenen Daten in der Slave-Komponente ist die Vertraulichkeit der Daten verletzt, da die Daten zuerst descrambelt werden und dann in der Slave-Komponente (z.B. Debug/Trace-Modul) vorliegen.
-
Deshalb weist gemäß einer zweiten Ausführungsform die Maskierungsinformationserzeugungsschaltung 203 jedem Bus-Master (d.h. jeder Master-Komponente) ein anderes Maskierungstoken zu. Dies wird im Folgenden mit Bezug auf 4 erläutert.
-
4 zeigt eine Datenverarbeitungsvorrichtung 400 mit einer Busarchitektur gemäß einem zweiten Ausführungsbeispiel.
-
Die Datenverarbeitungsvorrichtung 400 weist zwei Bus-Master 401 und einen Bus-Slave 402 (beispielsweise entsprechend den Datenverarbeitungskomponenten 101) und einen Bus 403 (beispielsweise entsprechend dem Bus 102) auf. Die Datenverarbeitungsvorrichtung 200 weist ferner eine Maskierungsinformationserzeugungsschaltung 404 und eine PUF-Quelle auf 405.
-
Wie mit Bezug auf 2 erläutert, erzeugt die Maskierungsinformationserzeugungsschaltung 404 Maskierungstoken aus PUF-Werten. Im Unterschied zum ersten Ausführungsbeispiel erzeugt die Maskierungsinformationserzeugungsschaltung 404 die Maskierungstoken jedoch individuell für die Bus-Master 401, d.h. versorgt die Bus-Master 401 mit unterschiedlichen Maskierungstokens. Soll der Bus-Slave 402 in der Lage sein, mit beiden Bus-Mastern 401 zu kommunizieren, so versorgt ihn die Maskierungsinformationserzeugungsschaltung 404 mit den Maskierungstoken beider Bus-Master.
-
Dies bedeutet, dass, um in der Lage zu sein, mit allen Bus-Mastern 401 zu kommunizieren (z.B. Daten von allen Bus-Mastern zu empfangen), der Bus-Slave 402 alle entsprechenden Maskierungstoken vorhalten muss. Dies kann je nach Bus eine beträchtliche Datenmenge sein. Beispielsweise können dies im schlimmsten Fall 64*64 bit für einen SRI(Shared Resource Interconnection Bus)-Slave und 64*32 bit für einen FPI (Flexible Peripheral Interconnect)-Slave sein, wenn angenommen wird, dass der Bus-Slave Kommunikation mit dem Maximum von 64 Bus-Mastern unterstützen soll. In der Praxis kann die Anzahl vorzuhaltender Maskierungstoken jedoch deutlich geringer sein, da oftmals nur bestimmte Bus-Master Zugriff auf bestimmte Bus-Slaves haben.
-
In Hinblick auf das oben beschriebene Szenario eines gehackten Debug/Trace-Moduls ist im Zusammenhang mit dem zweiten Ausführungsbeispiel zu beachten, dass wenn für einen bestimmten Bus-Master 401 kein Debugging durchzuführen ist, die Maskierungsinformationserzeugungsschaltung 404 auch das dem Bus-Master 401 zugeordnete (und von ihm zum Scrambeln von Daten verwendete) Maskierungstoken nicht an das Debug/Trace-Modul übermittelt. Damit ist das Debug/Trace-Modul nicht in der Lage, von diesem Bus-Master gesendete Daten zu descrambeln und der Angreifer hat keinen Zugriff auf vertrauliche Daten von diesem Bus-Master.
-
Im Allgemeinen kann die Maskierungsinformationserzeugungsschaltung 404 eingerichtet sein, ein einem Bus-Master zugeordnetes Maskierungstoken nicht an einen Bus-Slave zu senden, falls von dem Bus-Master keine Daten an den Bus-Slave zu senden sind. Die Maskierungsinformationserzeugungsschaltung 404 kann auch ein individuelles Maskierungstoken jedem Paar aus Bus-Master und Bus-Slave (oder allgemeiner jedes Paar von Buszugriffskomponenten) zuweisen. In diesem Fall kann die Maskierungsinformationserzeugungsschaltung 404 eingerichtet sein, das Maskierungstoken nur an die beiden Buszugriffskomponenten des Paars zu senden.
-
Damit kann ein Angreifer keine vertraulichen Informationen von einem Bus-Master empfangen, die nicht für den gehackten Bus-Slave bestimmt sind (selbst wenn der Angreifer beispielsweise die Identifikation des Bus-Masters manipuliert, für die der Bus-Slave Nachrichten vom Bus ausliest). Ebenso verhindert das einen Angriff, bei dem ein Angreifer durch Manipulation einer Zieladresse vertrauliche Daten an einen nicht vorgesehenen Empfänger (z.B. Bus-Slave) weiterleitet.
-
Wie im Zusammenhang mit dem ersten Ausführungsbeispiel erläutert kann die Maskierungsinformationserzeugungsschaltung 404 dynamisch (und insbesondere zwischen zwei Resets) neue Maskierungstoken erzeugen und verteilen und damit bestehende Maskierungstoken ersetzen. Dazu kann die Maskierungsinformationserzeugungsschaltung 404 dauerhaft in Betrieb sein und beispielsweise in zufälligen Zeitintervallen Maskierungstoken erzeugen und verteilen.
-
In einer solchen Ausführungsform ist die Maskierungsinformationserzeugungsschaltung 404 beispielsweise eingerichtet, die Maskierungstoken schnell zu verteilen (z.B. innerhalb eines Bus-Taktzyklus), damit gewährleistet ist, dass die Maskierungstoken für Paar von Buszugriffskomponenten den gleichen Stand haben (d.h. synchronisiert sind). Alternativ kann beispielsweise ein Mechanismus vorgesehen sein, der es einem Sender (d.h. einer sendenden Buszugriffskomponente) ermöglicht, den Empfänger (d.h. eine empfangenden Buszugriffskomponente) darüber zu informieren, dass der Sender ein neues Maskierungstoken verwendet hat.
-
Die Maskierungsinformationserzeugungsschaltung 404 braucht nicht gleichzeitig für alle Bus-Master Token zu erzeugen (wenn sie dies zwischen zwei Resets macht), sondern kann zufällig eine Teilmenge der Bus-Master auswählen, um einem Angreifer, der versucht, durch statistische Analysen Informationen zu gewinnen, Angriffe zu erschweren.
-
Die Verteilung von Maskierungstoken durch eine zentrale Maskierungsinformationserzeugungsschaltung 404 an Buszugriffskomponenten kann als Client/Server-Modell für die Verteilung von Maskierungstoken angesehen werden. Dies erfordert im Vergleich zu einem Peer-to-Peer-Modell für die Verteilung von Maskierungstoken weniger Verbindungen und Routing-Aufwand (linear im Vergleich zu quadratisch).
-
Bei der oben beschriebenen zweiten Ausführungsform können je nach Anwendungsfall folgende Merkmale störend sein:
- • Viele Maskierungstoken (und damit eine hohe Datenmenge) werden verteilt und dynamisch aktualisiert und synchronisiert;
- • Der Speicheraufwand in den Bus-Mastern und den Bus-Slaves kann wie oben beschrieben hoch sein (z.B. 64*64 bits bei 64 Bus-Mastern).
-
Die im Folgenden beschriebene dritte Ausführungsform basiert auf den Folgenden Beobachtungen:
- • Es ist typischerweise nicht erforderlich, dass die gesamten gemäß dem Bus-Protokoll geschickten Datenworte verschlüsselt werden. Bei einem kryptographischen Schlüssel reicht es beispielsweise schon aus, ein einziges Bit zu invertieren, um den Schlüssel unbrauchbar zu machen. Für andere zu schützende Daten ist es auch eine Option, alle Bits bis auf ein bestimmtes Bit zu invertieren
- • Es ist typischerweise nicht erforderlich, alle Bus-Master und alle Bus-Slaves zu jedem Zeitpunkt an dem Schutzmechanismus zu beteiligen.
-
Die dritte Ausführungsform basiert deswegen darauf, dass die Maskierungsinformationserzeugungsschaltung 404 hintereinander ein oder mehrere Bus-Master zufällig auswählt und jeweils ein oder mehrere zu invertierende Bitpositionen angibt (anstatt jedes Mal vollständige Maskierungswörter zu übermitteln).
-
5 zeigt eine Datenverarbeitungsvorrichtung 500 mit einer Busarchitektur gemäß einem dritten Ausführungsbeispiel.
-
Die Datenverarbeitungsvorrichtung 500 weist zwei Bus-Master 501 und einen Bus-Slave 502 (beispielsweise entsprechend den Datenverarbeitungskomponenten 101) und einen Bus 503 (beispielsweise entsprechend dem Bus 102) auf. Die Datenverarbeitungsvorrichtung 500 weist ferner eine Maskierungsinformationserzeugungsschaltung 504 und eine PUF-Quelle 505 auf.
-
Die Maskierungsinformationserzeugungsschaltung 504 wählt zu einem Zeitpunkt zufällig einen Bus-Master 501 und eine zu invertierende Bit-Position (innerhalb der Nachrichten- oder Datenwortlänge des Bus-Protokolls) aus. Die zufällige Auswahl erfolgt abhängig von ein oder mehreren PUF-Werten (z.B. als Seed für einen Zufallszahlengenerator). Sie sendet dann als Maskierungstoken
an alle Buszugriffskomponenten (unabhängig ob Bus-Master oder Bus-Slave). Dabei ist TAG_ID die Identifikation des zufällig ausgewählten Bus-Masters und BIT_POSITION die zufällig ausgewählte Bitposition.
-
Ein sendender Bus-Master 501 reagiert auf den Empfang dieses Maskierungstokens derart, dass, wenn TAG_ID seine Identifikation ist, er in zu sendenden Datenwörtern das Bit an der BIT POSITION invertiert.
-
Ein Bus-Slave 502 reagiert auf den Empfang des Maskierungstokens derart, dass, wenn er eine Nachricht vom Bus 503 empfängt, und die TAG_ID aus dem Maskierungstoken mit der Senderidentifikation der Nachricht übereinstimmt, er die Nachricht (bzw. das darin enthaltene Datenwort oder die darin enthaltenden Datenwörter) an der BIT_POSITION invertiert.
-
Bei 64 Bus-Mastern in dem Bussystem und einer Datenwortlänge von 64Bit (aus denen das zu invertierende Bit ausgewählt werden kann) reichen zur Codierung des Tokens 12 bit.
-
Die Maskierungsinformationserzeugungsschaltung 504 erzeugt das Maskierungstoken wie oben beschrieben zufällig, so dass vermieden wird, dass ein Angreifer unter Verwendung statistischer Analyse Informationen gewinnen kann (z.B., wenn er Kenntnis darüber erlangt, welcher Bus-Master sendet).
-
Außerdem kann wie im zweiten Ausführungsbeispiel vermieden werden, dass ein Angreifer durch Hacken eines Bus-Slaves Zugriff auf Nachrichten (aller) Bus-Master bekommt, indem die Maskierungsinformationserzeugungsschaltung 504 entscheidet, an welche Bus-Slaves (oder allgemein welche Bus-Endpunkte) sie das Token sendet. Beispielsweise kann die Maskierungsinformationserzeugungsschaltung 504 eingerichtet sein, ein Maskierungstoken mit einer bestimmten TAG ID nicht an Bus-Slaves zu schicken, die nicht mit dem Bus-Master mit der TAG ID zu kommunizieren brauchen.
-
Die Maskierungsinformationserzeugungsschaltung 504 kann an diese Bus-Slaves (wie z.B. ein Debug/Trace-Modul, das für bestimmte Bus-Master kein Debugging durchzuführen braucht) absichtlich ungültige Token versenden (mit falscher Bit-Position für Bus-Master, die nicht mit dem Bus-Master mit der TAG_ID zu kommunizieren brauchen), sodass sie nicht in der Lage sind Daten von den Bus-Mastern zu demaskieren.
-
Bei der dritten Ausführungsform sind die Informationen auf dem Bus maskiert und bestimmte Bus-Slaves (wie z.B. ein Debug/Trace-Modul) können von der Demaskierung ausgeschlossen werden. Manipuliert ein Angreifer einen Bus-Slave, so dass er Nachrichten von einem bestimmten Bus-Master vom Bus liest, so hat der Bus-Slave (wenn er ausgeschlossen ist) nicht das korrekte Token, um die Nachrichten zu demaskieren. Ebenso kann ein Angreifer auch nicht Zugriff auf eine Nachricht erlangen, wenn er die Zieladresse einer Nachricht manipuliert.
-
In allen beschriebenen Ausführungsformen kann das Lesen von einem Bus-Slave durch einen Bus-Master (d.h. die Datenübertragung vom Bus-Slave zum Bus-Master) analog durchgeführt werden wie das Schreiben (d.h. die Datenübertragung vom Bus-Master zum Bus-Slave), wobei in der zweiten und der dritten Ausführungsform der Bus-Slave und der Bus-Master das Maskierungstoken verwenden, das dem Bus-Master zugeordnet ist. Die Maskierungsinformationserzeugungsschaltung 504 kann auch unterschiedliche Maskierungstoken für das Schreiben und das Lesen bereitstellen (und z.B. im Maskierungstoken angeben, ob es zum Schreiben oder zum Lesen anzuwenden ist). Die Maskierungsinformationserzeugungsschaltung 504 kann wie oben erläutert die Konsistenz und Synchronisation der Maskierungstoken im Sender und Empfänger sicherstellen.
-
Zusammenfassend wird gemäß verschiedenen Ausführungsformen eine Datenverarbeitungsvorrichtung bereitgestellt, wie sie in 6 dargestellt ist.
-
6 zeigt eine Datenverarbeitungsvorrichtung 600 gemäß verschiedenen Ausführungsformen.
-
Die Datenverarbeitungsvorrichtung 600 weist eine PUF-Quelle 601 auf, die eingerichtet ist, PUF-Werte zu erzeugen.
-
Die Datenverarbeitungsvorrichtung 600 weist ferner einen Bus 602, eine Mehrzahl von Buszugriffskomponenten 603, die eingerichtet sind, auf den Bus 602 zuzugreifen, und eine Maskierungsinformationserzeugungsschaltung 604, auf die eingerichtet ist, unter Verwendung mindestens eines von der PUF-Quelle 601 erzeugten PUF-Werts eine Maskierungsinformation für mindestens ein Paar von Buszugriffskomponenten 603 zu erzeugen und an die Buszugriffskomponenten 603 des mindestens einen Paars zu übermitteln.
-
Für das mindestens eine Paar sind die Buszugriffskomponenten 603 derart eingerichtet, dass eine Buszugriffskomponente zum Senden von Daten an die andere Buszugriffskomponente des Paares die Daten vor ihrem Senden über den Bus gemäß der für das Paar erzeugten Maskierungsinformation maskiert und die andere Buszugriffskomponente die über den Bus empfangenen Daten gemäß der für das Paar erzeugten Maskierungsinformation demaskiert.
-
Gemäß verschiedenen Ausführungsformen wird in anderen Worten eine Information, die angibt, wie auf einem Bus zu übertragende Daten zu maskieren sind, von einer zentralen Einheit aus PUF-Werten ermittelt.
-
Gemäß verschiedenen Ausführungsformen wird so ein Chip-individuelles virtuelles privates Netzwerk zwischen Buszugriffs-Komponenten (Master-Komponenten und Slave-Komponenten) geschaffen.
-
Damit wird gemäß verschiedenen Ausführungsformen eine sichere Bus-Architektur ermöglicht, die gewährleistet, dass über den Bus übertragene Daten vertraulich bleiben, selbst wenn ein Angreifer Zugriff auf den Bus erlangt (d.h. selbst wenn er alle über den Bus übertragenen Information auslesen kann). Gemäß verschiedenen Ausführungsformen kann die Herangehensweise nahtlos in bestehende Bus-Protokolle integriert werden. Sie kann einfach implementiert wird und erfordert gemäß verschiedenen Ausführungsformen keine komplizierten Berechnungen.
-
7 zeigt ein Ablaufdiagramm 700, das ein Verfahren zum Senden von Daten über einen Bus veranschaulicht.
-
In 701 werden ein oder mehrere PUF-Werte erzeugt.
-
In 702 wird unter Verwendung der ein oder mehreren PUF-Werte für mindestens ein Paar von Buszugriffskomponenten, die auf einen Bus zugreifen, Maskierungsinformation erzeugt.
-
In 703 wird die Maskierungsinformation an die Buszugriffskomponenten des mindestens einen Paars übermittelt.
-
In 704 werden Daten von einer Buszugriffskomponente des mindestens einen Paares an die andere Buszugriffskomponente des mindestens einen Paares gesendet, wobei die Buszugriffskomponenten die Daten vor ihrem Senden über den Bus gemäß der für das Paar erzeugten Maskierungsinformation maskiert und die andere Buszugriffskomponente die über den Bus empfangenen Daten gemäß der für das Paar erzeugten Maskierungsinformation demaskiert.
-
Im Folgenden werden verschiedene Ausführungsbeispiele angegeben.
-
Ausführungsbeispiel 1 ist eine Datenverarbeitungsvorrichtung wie oben mit Bezug auf 6 beschrieben.
-
Ausführungsbeispiel 2 ist die Datenverarbeitungsvorrichtung nach Ausführungsbeispiel 1, wobei die Maskierungsinformationserzeugungsschaltung eingerichtet ist, unter Verwendung mindestens eines von der PUF-Quelle erzeugten PUF-Werts eine Maskierungsinformation für jedes einer Vielzahl von Paaren von Buszugriffskomponenten zu erzeugen und für jedes Paar an die Buszugriffskomponenten des Paars zu übermitteln und wobei für jedes Paar die Buszugriffskomponenten derart eingerichtet sind, dass eine Buszugriffskomponente zum Senden von Daten an die andere Buszugriffskomponente des Paares die Daten vor ihrem Senden über den Bus gemäß der für das Paar erzeugten Maskierungsinformation maskiert und die andere Buszugriffskomponente die über den Bus empfangenen Daten gemäß der für das Paar erzeugten Maskierungsinformation demaskiert.
-
Ausführungsbeispiel 3 ist die Datenverarbeitungsvorrichtung nach Ausführungsbeispiel 2, wobei die für alle Paare der Vielzahl von Paaren erzeugte Maskierungsinformation identisch ist, wobei die für alle Paare der Vielzahl von Paaren erzeugte Maskierungsinformation unterschiedlich ist oder wobei die für zwei Paare erzeugte Maskierungsinformation identisch ist, wenn die zwei Paare in einer Buszugriffskomponente übereinstimmen und ansonsten unterschiedlich ist.
-
Ausführungsbeispiel 4 ist die Datenverarbeitungsvorrichtung nach Ausführungsbeispiel 2 oder 3, wobei jedes Paar aus einer Master-Bus-Komponente und aus einer Slave-Bus-Komponente besteht.
-
Ausführungsbeispiel 5 ist die Datenverarbeitungsvorrichtung nach einem der Ausführungsbeispiele 2 bis 4, wobei die für zwei Paare erzeugte Maskierungsinformation identisch ist, wenn die zwei Paare in der Bus-Master-Komponente übereinstimmen und ansonsten unterschiedlich ist.
-
Ausführungsbeispiel 6 ist die Datenverarbeitungsvorrichtung nach Ausführungsbeispiel 5, wobei die Maskierungsinformationserzeugungsschaltung eingerichtet ist, die Maskierungsinformation zusammen mit einer Identifikation der Bus-Master-Komponente rundzusenden, die anzeigt, dass die Maskierungsinformation für Paare erzeugt wurde, die die identifizierte Bus-Master-Komponente enthalten.
-
Ausführungsbeispiel 7 ist die Datenverarbeitungsvorrichtung nach Ausführungsbeispiel 5 oder 6, wobei jeder Bus-Slave eingerichtet ist, den Bus abzuhören, wenn ein Bus-Master Daten über den Bus sendet, eine Identifikation des Bus-Masters zu ermitteln und falls er über Maskierungsinformation verfügt, die für Paare von Buszugriffskomponenten erzeugt wurden, die den identifizierten Bus-Master enthalten, die Daten zu empfangen und gemäß der Maskierungsinformation zu demaskieren.
-
Ausführungsbeispiel 8 ist die Datenverarbeitungsvorrichtung nach einem der Ausführungsbeispiele 1 bis 7, wobei die Maskierungsinformationserzeugungsschaltung eingerichtet ist, die Maskierungsinformation über einem vom Bus gebildeten Kommunikationskanal separaten Kommunikationskanal zu übermitteln.
-
Ausführungsbeispiel 9 ist die Datenverarbeitungsvorrichtung nach einem der Ausführungsbeispiele 1 bis 8, wobei die Maskierungsinformationserzeugungsschaltung eingerichtet ist, die Maskierungsinformation über mindestens eine andere physikalische Leiterbahn als die für den Bus verwendeten Leiterbahnen zu übermitteln.
-
Ausführungsbeispiel 10 ist die Datenverarbeitungsvorrichtung nach einem der Ausführungsbeispiele 1 bis 9, wobei die Maskierungsinformation ein Maskierungswort aufweist.
-
Ausführungsbeispiel 11 ist die Datenverarbeitungsvorrichtung nach einem der Ausführungsbeispiele 1 bis 10, wobei Maskierungsinformation mindestens eine Datenwort-Bitposition angibt, die bei einer Maskierung und einer Demaskierung gemäß der Maskierungsinformation zu invertieren ist.
-
Ausführungsbeispiel 12 ist die Datenverarbeitungsvorrichtung nach Ausführungsbeispiel 11, wobei die Anzahl von Datenwort-Bitpositionen, die zu invertieren sind, für alle Paare von Buszugriffskomponenten gleich ist.
-
Ausführungsbeispiel 13 ist die Datenverarbeitungsvorrichtung nach Ausführungsbeispiel 11 oder 12, wobei die Maskierungsinformation genau eine Datenwort-Bitposition angibt, die bei einer Maskierung und einer Demaskierung gemäß der Maskierungsinformation zu invertieren ist.
-
Ausführungsbeispiel 14 ist ein Verfahren zum Übermitteln von Daten über einen Bus, wie mit Bezug auf 7 beschrieben.
-
Ausführungsbeispiel 15 ist das Verfahren nach Ausführungsbeispiel 14, wobei unter Verwendung mindestens eines erzeugten PUF-Werts eine Maskierungsinformation für jedes einer Vielzahl von Paaren von Buszugriffskomponenten erzeugt wird und für jedes Paar an die Buszugriffskomponenten des Paars übermittelt wird und wobei für jedes Paar eine Buszugriffskomponente zum Senden von Daten an die andere Buszugriffskomponente des Paares die Daten vor ihrem Senden über den Bus gemäß der für das Paar erzeugten Maskierungsinformation maskiert und die andere Buszugriffskomponente die über den Bus empfangenen Daten gemäß der für das Paar erzeugten Maskierungsinformation demaskiert.
-
Ausführungsbeispiel 16 ist das Verfahren nach Ausführungsbeispiel 15, wobei die für alle Paare der Vielzahl von Paaren erzeugte Maskierungsinformation identisch ist, wobei die für alle Paare der Vielzahl von Paaren erzeugte Maskierungsinformation unterschiedlich ist oder wobei die für zwei Paare erzeugte Maskierungsinformation identisch ist, wenn die zwei Paare in einer Buszugriffskomponente übereinstimmen und ansonsten unterschiedlich ist.
-
Ausführungsbeispiel 17 ist das Verfahren nach Ausführungsbeispiel 15 oder 16, wobei jedes Paar aus einer Master-Bus-Komponente und aus einer Slave-Bus-Komponente besteht.
-
Ausführungsbeispiel 18 ist das Verfahren nach einem der Ausführungsbeispiele 15 bis 17, wobei die für zwei Paare erzeugte Maskierungsinformation identisch ist, wenn die zwei Paare in der Bus-Master-Komponente übereinstimmen und ansonsten unterschiedlich ist.
-
Ausführungsbeispiel 19 ist das Verfahren nach Ausführungsbeispiel 18, wobei die Maskierungsinformation zusammen mit einer Identifikation der Bus-Master-Komponente rundgesendet wird, die anzeigt, dass die Maskierungsinformation für Paare erzeugt wurde, die die identifizierte Bus-Master-Komponente enthalten.
-
Ausführungsbeispiel 20 ist das Verfahren nach Ausführungsbeispiel 18 oder 19, wobei jeder Bus-Slave den Bus abhört, wenn ein Bus-Master Daten über den Bus sendet, eine Identifikation des Bus-Masters ermittelt und falls er über Maskierungsinformation verfügt, die für Paare von Buszugriffskomponenten erzeugt wurden, die den identifizierten Bus-Master enthalten, die Daten empfängt und gemäß der Maskierungsinformation demaskiert.
-
Ausführungsbeispiel 21 ist das Verfahren nach einem der Ausführungsbeispiele 14 bis 20, wobei die Maskierungsinformation über einem vom Bus gebildeten Kommunikationskanal separaten Kommunikationskanal übermittelt wird.
-
Ausführungsbeispiel 22 ist das Verfahren nach einem der Ausführungsbeispiele 14 bis 21, wobei die Maskierungsinformation über mindestens eine andere physikalische Leiterbahn als die für den Bus verwendeten Leiterbahnen übermittelt wird.
-
Ausführungsbeispiel 23 ist das Verfahren nach einem der Ausführungsbeispiele 14 bis 22, wobei die Maskierungsinformation ein Maskierungswort aufweist.
-
Ausführungsbeispiel 24 ist das Verfahren nach einem der Ausführungsbeispiele 14 bis 23, wobei Maskierungsinformation mindestens eine Datenwort-Bitposition angibt, die bei einer Maskierung und einer Demaskierung gemäß der Maskierungsinformation zu invertieren ist.
-
Ausführungsbeispiel 25 ist das Verfahren nach Ausführungsbeispiel 24, wobei die Anzahl von Datenwort-Bitpositionen, die zu invertieren sind, für alle Paare von Buszugriffskomponenten gleich ist.
-
Ausführungsbeispiel 26 ist das Verfahren nach Ausführungsbeispiel 24 oder 25, wobei die Maskierungsinformation genau eine Datenwort-Bitposition angibt, die bei einer Maskierung und einer Demaskierung gemäß der Maskierungsinformation zu invertieren ist.
-
Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.
-
Bezugszeichenliste
-
- 100
- Datenverarbeitungsvorrichtung
- 101
- Buszugriffskomponenten
- 102
- Bus
- 200
- Datenverarbeitungsvorrichtung
- 201
- Buszugriffskomponenten
- 202
- Bus
- 203
- Maskierungsinformationserzeugungsschaltung
- 204
- PUF-Quelle
- 205
- vom Bus getrennter Kanal
- 301
- Transformationsfunktion
- 302
- Maskierungstoken
- 303
- zu sendende Daten
- 304
- gescrambelte Daten
- 400
- Datenverarbeitungsvorrichtung
- 401
- Bus-Master
- 402
- Bus-Slave
- 403
- Bus
- 404
- Maskierungsinformationserzeugungsschaltung
- 405
- PUF-Quelle
- 500
- Datenverarbeitungsvorrichtung
- 501
- Bus-Master
- 502
- Bus-Slave
- 503
- Bus
- 504
- Maskierungsinformationserzeugungsschaltung
- 505
- PUF-Quelle
- 600
- Datenverarbeitungsvorrichtung
- 601
- PUF-Quelle
- 602
- Bus
- 603
- Buszugriffskomponenten
- 604
- Maskierungsinformationserzeugungsschaltung
- 700
- Ablaufdiagramm
- 701-704
- Verarbeitung