-
Die vorliegende Erfindung betrifft eine Takterzeugungsschaltung und ein Verfahren zur Bereitstellung eines Verarbeitungstaktsignals für einen Verschlüsselungskern sowie eine Verschlüsselungsschaltung und ein Verfahren zur Durchführung einer oder mehrerer Verschlüsselungen.
-
Stand der Technik
-
Viele moderne elektronische Geräte, etwa Mikrocontroller in Smartcards oder Steuergeräten, implementieren kryptographische Verfahren (z.B. AES - Advanced Encryption Standard, oder DES - Data Encryption Standard), um eine Verschlüsselung von Daten oder eine verschlüsselte Kommunikation mit anderen Geräten zu ermöglichen. Diese Verschlüsselung kann mittels sogenannter Seitenkanalangriffe angegriffen werden, bei denen die physische Implementierung des verwendeten Verschlüsselungsverfahrens analysiert wird.
-
Spezifischer kann der Energieverbrauch oder eine elektromagnetische Abstrahlung einer elektronischen Schaltung, z.B. eines Mikroprozessors oder eines FPGA (Field Programmable Gate Array, programmierbares Logikgatter), in der das Verschlüsselungsverfahren implementiert ist, während der Durchführung kryptographischer Verfahren Hinweise auf den verwendeten Schlüssel geben. Grundlage hierfür ist die Annahme, dass der Energieverbrauch einzelner Schritte des Verschlüsselungsverfahrens von den jeweiligen verarbeiteten Daten (zu verschlüsselnde Daten, Schüssel) abhängig ist, etwa weil unterschiedliche binäre Werte (die unterschiedlichen Daten entsprechen) eine unterschiedliche Anzahl von ‚0‘ bzw. ‚1‘ aufweisen und sich der Energieverbrauch bei der Verarbeitung einer ‚0‘ von dem der Verarbeitung einer‚1‘ unterscheidet.
-
Basierend auf dieser Annahme kann (für angenommene zu verschlüsselnde Daten) für die möglichen Schlüssel bzw. für die möglichen Teile von Schlüsseln (etwa sogenannte Teil- bzw. Rundenschlüssel im AES) der jeweilige Energieverbrauch zu bestimmten Zeitpunkten, an denen ein charakteristischer Energieverbrauch auftritt (im AES-Verfahren bietet sich etwa die Ein- oder Ausgabe der ‚SubBytes‘-Funktion als Zeitpunkt an), innerhalb des Verschlüsselungsverfahrens modelliert werden, um eine Vielzahl von hypothetischen Energieverbrauchswerten zu erhalten. Weiter kann eine Vielzahl von Energieverbrauchsverläufen (engl. ‚power traces‘) während der Durchführung des Verfahrens (mit den angenommenen zu verschlüsselnden Daten) gemessen werden und die Korrelation zwischen dieser gemessenen Vielzahl und der Vielzahl von hypothetischen Energieverbrauchswerten analysiert werden, um einen wahrscheinlichen (Teil-)Schlüssel zu finden. Wesentlich ist hier, dass die Messungen jeweils zu einem bestimmten Zeitpunkt innerhalb des Verschlüsselungsverfahrens erfolgen.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden eine Takterzeugungsschaltung und ein Verfahren zur Bereitstellung eines Verarbeitungstaktsignals für einen Verschlüsselungskern sowie eine Verschlüsselungsschaltung und ein Verfahren zur Durchführung einer oder mehrerer Verschlüsselungen mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Erfindungsgemäß wird durch die Takterzeugungsschaltung bzw. das Verfahren zur Bereitstellung eines Verarbeitungstaktsignal und entsprechend durch die Verschlüsselungsschaltung bzw. das Verfahren zur Durchführung von Verschlüsselungen zunächst eine erste Taktfrequenz entsprechend einer ersten Zufallsauswahl aus einer ersten Anzahl von Taktfrequenzen ausgewählt und die Verarbeitungstaktfrequenz, mit der die Verschlüsselung durchgeführt wird, wird durch Skalierung der ersten Taktfrequenz mit einem entsprechend einer zweiten Zufallsauswahl aus einer zweiten Anzahl von Skalierungsfaktoren ausgewählten Skalierungsfaktor erhalten. Die erste Zufallsauswahl und die zweite Zufallsauswahl werden fortlaufend, zu bestimmten Auswahlzeitpunkten bzw. nach einem oder mehreren Verarbeitungstakten, geändert. Dadurch wird erreicht, dass vom Verschlüsselungskern für und während der Verschlüsselungen eine sich fortlaufend ändernde Taktfrequenz verwendet wird, d.h. die Takte des Verarbeitungstaktsignals weisen eine sich fortlaufend ändernde Zeitdauer auf, so dass der genaue Zeitpunkt, zu dem ein bestimmter Verschlüsselungsschritt durchgeführt wird, für einen potentiellen Angreifer in unbekannter Weise variiert, es dem Angreifer also erschwert wird, eine Energieverbrauchsmessung einem genauen Schritt des Verschlüsselungsverfahrens zuzuordnen. Im Prinzip muss der Angreifer umso mehr Energieverbrauchsverläufe messen, je mehr verschiedene Frequenzen, d.h. verschiedene Taktlängen, im Verarbeitungstaktsignal enthalten sind.
-
Ein weiterer Vorteil liegt darin, dass bei der Erzeugung des Verarbeitungstaktsignals eine zweifache Zufallsauswahl erfolgt, so dass die Gesamtzahl verschiedener Frequenzen durch das Produkt der beiden Zufallsauswahlmöglichkeiten gegeben ist, d.h. durch (erste Anzahl) x (zweite Anzahl). Auf diese Weise kann eine sehr hohe Gesamtzahl (größer 100.000, oder auch größer als 1.000.000) verschiedener Frequenzen im Verarbeitungstaktsignal enthalten sein, selbst wenn die erste und die zweite Anzahl im Vergleich zur Gesamtzahl relativ gering sind. Dies ermöglicht es, die hohe Gesamtzahl verschiedener Frequenzen auf ressourcenschonende Weise zu erreichen, z.B. ohne große Tabellen (Look-up-Tabellen), denen die jeweiligen Frequenzen in zufälliger Weise entnommen werden.
-
Die Implementierung der ersten Zufallsauswahl im Prozessorkern durch ein Auswahlprogramm ermöglicht weiterhin eine hohe Konfigurierbarkeit des Verschlüsselungsverfahrens bzw. der Verschlüsselungsschaltung.
-
Vorzugsweise umfasst das Taktaufbereitungsmodul wenigstens eine Taktskalierungseinheit, die das erste Taktsignal empfängt, wobei eine ausgewählte (falls nur eine Taktskalierungseinheit eingeschlossen ist, ist diese offensichtlich die ausgewählte Taktskalierungseinheit) Taktskalierungseinheit dazu eingerichtet ist, zweite Taktsignale entsprechend der zweiten Anzahl zu erzeugen, wobei zweite Taktfrequenzen der zweiten Taktsignale jeweils durch Multiplikation der ersten Taktfrequenz mit einem jeweiligen der Skalierungsfaktoren bestimmt sind; einen Zufallszahlengenerator, insbesondere ein linear rückgekoppeltes Schieberegister, auf dessen Ausgabe basierend die zweite Zufallsauswahl getroffen wird, wobei der Zufallszahlengenerator durch das Verarbeitungstaktsignal getaktet wird; und einen Multiplexer, der dazu eingerichtet ist, die zweiten Taktsignale zu empfangen und entsprechend der Ausgabe des Zufallszahlengenerators eines der zweiten Taktsignale auszuwählen und als Verarbeitungstaktsignal auszugeben.
-
Diese Ausführung ermöglicht insbesondere eine einfache Implementierung in einem programmierbaren Logikgatter (FPGA). Der Multiplexer sollte dazu eingerichtet sein, ein störungsfreies Ausgangs-Taktsignal (‚glitch-free clock‘) zu erzeugen. Dass der Zufallszahlengenerator durch das Verarbeitungstaktsignal getaktet wird, impliziert, dass dieser nach jedem Takt oder nach einer bestimmten Anzahl von Takten jeweils eine neue Zufallszahl generiert. Im Falle eines linear rückgekoppelten Schieberegisters könnten z.B. mit jedem Takt die Bits verschoben werden. Wird noch ein Flipflop vorgeschaltet, könnte z.B. mit jedem zweiten Takt eine Verschiebung erreicht werden, usw.
-
Bevorzugt ist die wenigstens eine Taktskalierungseinheit dazu eingerichtet, einen oder mehrere Sätze von Skalierungswerten zu speichern und entsprechend einem Status der Taktskalierungseinheit einen der Sätze auszuwählen, wobei die ausgewählte Taktskalierungseinheit den entsprechend ihrem Status ausgewählten Satz von Skalierungswerten als die Skalierungsfaktoren verwendet. Die Skalierungswerte stellen sozusagen potentielle Skalierungsfaktoren dar. Insgesamt kann so die Anzahl unterschiedlicher Taktlängen im Verarbeitungstaktsignal erhöht werden. Der Status wird durch das Auswahlprogramm festgelegt.
-
Vorzugsweise ist das Taktaufbereitungsmodul dazu eingerichtet, die Skalierungsfaktoren zu rekonfigurieren, wobei die Skalierungsfaktoren neu festgelegt werden, wobei das Rekonfigurieren zu bestimmten Rekonfigurationszeitpunkten erfolgt, die bevorzugt mit Auswahlzeitpunkten zusammenfallen. Auch hier wird die Anzahl unterschiedlicher Taktlängen im Verarbeitungstaktsignal erhöht. Das Ändern des Status einer Taktskalierungseinheit stellt auch eine Form des Rekonfigurierens dar.
-
Insbesondere können beim Rekonfigurieren die Skalierungswerte (in den entsprechenden Sätzen der wenigstens einen Taktskalierungseinheit) neu festgelegt werden; wobei (wenn mehrere Taktskalierungseinheiten vorgesehen sind) bevorzugt Skalierungswerte von zum jeweiligen Rekonfigurationszeitpunkt nicht ausgewählten Taktskalierungseinheiten neu festgelegt werden. Die Ausgabe des Verarbeitungstaktsignals braucht so während der Rekonfiguration nicht unterbrochen zu werden.
-
Bevorzugt sind das Taktaufbereitungsmodul und/oder der Taktgenerator in einem programmierbaren Logikgatter implementiert. Dadurch kann u.a. erreicht werden, dass die zweite Zufallsauswahl mit hoher Geschwindigkeit und sehr häufig durchgeführt werden kann.
-
Eine erfindungsgemäße Verschlüsselungsschaltung umfasst eine erfindungsgemäße Takterzeugungsschaltung und einen Verschlüsselungskern, der dazu eingerichtet ist, Verschlüsselungen entsprechend dem von der Takterzeugungsschaltung bereitgestellten Verarbeitungstaktsignal durchzuführen.
-
Bevorzugt ist der Prozessorkern mit dem Verschlüsselungskern verbunden, wobei der Prozessorkern und der Verschlüsselungskern so eingerichtet sind, dass der Prozessorkern über diese Verbindung Startzeitpunkte von Verschlüsselungen im Verschlüsselungskern steuern kann; und/oder dem Prozessorkern über diese Verbindung vom Verschlüsselungskern Endzeitpunkte von Verschlüsselungen übermittelt werden oder das Verarbeitungstaktsignal übermittelt wird. Bevorzugt werden die Auswahlzeitpunkte so bestimmt, dass sie zwischen zwei aufeinanderfolgenden Verschlüsselungen liegen, wobei weiter bevorzugt eine bestimmte Anzahl von Verschlüsselungen zwischen jeweils zwei aufeinanderfolgenden Auswahlzeitpunkten liegt.
-
Während die erste Zufallsauswahl erneut getroffen wird, oder während die Skalierungsfaktoren neu konfiguriert werden (siehe unten), kann es vorkommen, dass kein stabiles Verarbeitungstaktsignal erzeugt wird, sondern dass dieses Störungen (engl. ‚glitch‘) aufweist. Dies könnte zu einer fehlerhaften Verschlüsselung führen, so dass es vorteilhaft ist, während dieser Zeit keine Verschlüsselungen durchzuführen. Endzeitpunkte von Verschlüsselungen können dem Prozessorkern vom Verschlüsselungskern direkt übermittelt werden oder vom Prozessorkern bzw. dem darin ausgeführten Auswahlprogramm, der/das die Anzahl von Takten des Verarbeitungstaktsignals kennt, die für die Verschlüsselung benötigt werden, ausgehend vom Startzeitpunkt berechnet werden. Für letzteres muss allerdings das Verarbeitungstaktsignal, das dem Prozessorkern aufgrund der zweiten Zufallsauswahl zunächst nicht bekannt ist, dem Prozessorkern übermittelt werden, dies kann vom Verschlüsslungskern aus erfolgen oder auch vom Taktaufbereitungsmodul aus.
-
Als ‚Verschlüsselung‘ ist hier ein Verschlüsselungsvorgang zu verstehen, bei dem ausgehend von einem Klartext, der vom Verschlüsselungsverfahren auf einmal verarbeitet werden kann, etwa ein Block in Blockverschlüsselungsverfahren wie z.B. AES, ein verschlüsselter Text erzeugt wird. Dieser Vorgang besteht im Allgemeinen aus mehreren Verschlüsselungsschritten (z.B. Schlüsselexpansion und Runden in AES). Diese Verschlüsselungsschritte werden im Verschlüsselungskern ausgeführt, der mit dem Verarbeitungstaktsignal getaktet wird. Typischerweise entspricht jeder Verschlüsselungsschritt einer bestimmten Anzahl (größer gleich eins) von Takten des Verarbeitungstaktsignals, d.h. des wird eine entsprechende Anzahl von Takten benötigt. Es ist auch möglich, dass der Verschlüsselungskern mehrere Verschlüsselungsschritte, die zu verschiedenen Verschlüsselungen gehören, parallel verarbeitet.
-
Ein erfindungsgemäßes Verfahren zur Bereitstellung eines Verarbeitungstaktsignals für einen Verschlüsselungskern, umfasst ein Erzeugen eines ersten Taktsignals mit einer ersten Taktfrequenz, die entsprechend einer ersten Zufallsauswahl aus einer ersten Anzahl vorbestimmter Taktfrequenzen zufällig ausgewählt wird, wobei die erste Zufallsauswahl zu bestimmten Auswahlzeitpunkten erneut getroffen wird; ein Erzeugen des Verarbeitungstaktsignals basierend auf dem ersten Taktsignal, wobei eine Verarbeitungsfrequenz des Verarbeitungstaktsignals durch Multiplikation mit einem entsprechend einer zweiten Zufallsauswahl aus einer zweiten Anzahl von Skalierungsfaktoren zufällig ausgewählten Skalierungsfaktor aus der ersten Taktfrequenz abgeleitet wird, wobei die zweite Zufallsauswahl nach jeweils einer bestimmten Anzahl von Takten des Verarbeitungstaktsignals erneut getroffen wird; und ein Bereitstellen des Verarbeitungstaktsignals für den Verschlüsselungskern. Die vorstehend genannten Vorteile, insbesondere, dass eine hohe Anzahl verschiedener Taktlängen im Verarbeitungstaktsignal umfasst sind, werden ebenso durch das erfindungsgemäße Verfahren verwirklicht.
-
Bevorzugt umfasst das Verfahren ein Rekonfigurieren der Skalierungsfaktoren, wobei die Skalierungsfaktoren neu festgelegt werden, wobei das Rekonfigurieren zu bestimmten Rekonfigurationszeitpunkten erfolgt, die bevorzugt mit Auswahlzeitpunkten zusammenfallen. Durch neues Festlegen der Skalierungsfaktoren kann die Gesamtzahl unterschiedlicher Verarbeitungsfrequenzen erhöht werden. Im Allgemeinen können die Rekonfigurationszeitpunkte beliebig bestimmt werden. Vorzugsweise wird die Rekonfiguration allerdings an Auswahlzeitpunkten, an denen die ersten Zufallsauswahl erneut getroffen wird, durchgeführt, da beides je nach konkreter Implementierung mit einer Unterbrechung des Verarbeitungstaktsignals verbunden sein kann.
-
Vorzugsweis werden im Verfahren die erste Zufallsauswahl durch eine Software, nämlich ein Auswahlprogramm, getroffen und/oder die zweite Zufallsauswahl durch eine Hardware, nämlich einen Zufallszahlengenerator, getroffen. Durch die Verwendung einer Software wird eine hohe Flexibilität des Verfahrens gewährleistet, da diese von einem Anwender nach seinen Bedürfnissen programmiert werden kann. Die Verwendung eines als Hardware implementieren Zufallszahlengenerators für die zweite Zufallsauswahl stellt sicher, dass die zweite Zufallsauswahl mit einer hohen Frequenz erneut getroffen werden kann, im Prinzip kann diese mit jedem Takt des Verarbeitungstaktsignals erneuert werden. Eine konkrete Implementierung ist durch eine erfindungsgemäße Taktsignalerzeugungsschaltung gegeben.
-
Bevorzugt umfasst das Erzeugen des Verarbeitungstaktsignals ein Erzeugen von zweiten Taktsignalen entsprechend der zweiten Anzahl, wobei zweite Taktfrequenzen der zweiten Taktsignale durch Multiplikation der ersten Taktfrequenz mit jeweils einem der Skalierungsfaktoren bestimmt sind; ein zufälliges Auswählen eines der zweiten Taktsignale entsprechend der zweiten Zufallsauswahl; und ein Verwenden des ausgewählten zweiten Taktsignals als Verarbeitungstaktsignal. Diese Ausführung ermöglicht eine schnelle Implementierung der zweiten Zufallsauswahl, da diese auf Grundlage bereits erzeugter zweiter Taktsignale erfolgen kann (d.h. es muss lediglich eines der zweiten Taktsignale ausgewählt werden) und nicht erst ein Taktsignal nach Auswahl des entsprechenden Skalierungsfaktors erzeugt werden muss.
-
Ein erfindungsgemäßes Verfahren zur Durchführung einer oder mehrerer Verschlüsselungen in einem Verschlüsselungskern, umfasst ein Bereitstellen eines Verarbeitungstaktsignals für den Verschlüsselungskern gemäß einem erfindungsgemäßen Verfahren zur Bereitstellung eines Verarbeitungstaktsignals und ein Durchführen von Verschlüsselungsschritten in dem Verschlüsselungskern entsprechend Takten des Verarbeitungstaktsignals.
-
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.
-
Figurenliste
-
- 1 zeigt ein Ablaufdiagramm gemäß einer bevorzugten Ausführungsform des Verfahrens zur Bereitstellung eines Verarbeitungstaktsignals für einen Verschlüsselungskern;
- 2 zeigt eine Takterzeugungsschaltung und eine Verschlüsselungsschaltung gemäß einer bevorzugten Ausführungsform der Erfindung; und
- 3 zeigt eine Takterzeugungsschaltung und eine Verschlüsselungsschaltung gemäß einer weiteren bevorzugten Ausführungsform der Erfindung.
-
Ausführungsform(en) der Erfindung
-
1 stellt ein Ablaufdiagramm eines Verfahrens zur Bereitstellung eines Verarbeitungstaktsignals für einen Verschlüsselungskern gemäß einer bevorzugten Ausführungsform der Erfindung dar. Zunächst wird im optionalen Schritt 10 eine zweite Anzahl von Skalierungsfaktoren konfiguriert, d.h. diese werden (neu) eingestellt bzw. vorgegeben. Die Skalierungsfaktoren können im Prinzip auch unveränderlich vorgegeben sein, dann erübrigt sich eine Konfiguration.
-
In Schritt 12 wird ein erstes Taktsignal mit einer ersten Taktfrequenz erzeugt, wobei die erste Taktfrequenz zufällig aus mehreren (d.h. einer ersten Anzahl) vorbestimmten Taktfrequenzen ausgewählt wird. Diese zufällige Auswahl wird als erste Zufallsauswahl bezeichnet. Die Schritte 10 (Konfiguration der Skalierungsfaktoren) und 12 (Erzeugen des ersten Taktsignals) können auch in umgekehrter Reihenfolge durchgeführt werden.
-
In Schritt 14 werden zweite Taktsignale aus dem ersten Taktsignal abgeleitet, d.h. es wird eine zweite Anzahl (gleich der Anzahl von Skalierungsfaktoren) von zweiten Taktsignalen mit zweiten Taktfrequenzen erzeugt, wobei jede der zweiten Taktfrequenzen aus der ersten Taktfrequenz durch Multiplikation mit einem jeweiligen der Skalierungsfaktoren erhalten wird.
-
In Schritt 16 wird eine zweite Zufallsauswahl getroffen, in der aus den in Schritt 14 erzeugten zweiten Taktsignalen eines zufällig ausgewählt wird. Das ausgewählte zweite Taktsignal wird in Schritt 18 dem Verschlüsselungskern als Verarbeitungstaktsignal bereitgestellt, wobei in Schritt 18 jeweils ein Takt bereitgestellt wird. Die nachfolgenden Schritte werden jeweils nach jedem Takt des Verarbeitungstaktsignals durchgeführt.
-
In Schritt 20 wird geprüft, ob ein bestimmter Zeitpunkt (als Auswahlzeitpunkt bezeichnet) erreicht wurde. Dies kann z.B. ein Zeitpunkt nach Beendigung einer Verschlüsselung und vor Beginn der nächsten Verschlüsselung sein. Wenn dies der Fall ist, Pfeil 22, wird wieder mit Schritt 12, dem Erzeugen des ersten Taktsignals entsprechend einer ersten Zufallsauswahl, fortgefahren, d.h. die erste Zufallsauswahl wird erneut getroffen, so dass sich die erste Taktfrequenz im Allgemeinen ändert.
-
Wenn kein bestimmter Auswahlzeitpunkt erreicht wurde, Pfeil 24, wird im optionalen Schritt 26 geprüft, ob eine Rekonfiguration der Skalierungsfaktoren erfolgen soll. Auf diesen Schritt kann im Prinzip auch verzichtet werden, etwa wenn die Skalierungsfaktoren in Schritt 10 nur einmalig konfiguriert werden sollen oder wenn auf Schritt 10 verzichtet wurde, da ein fest vorgegebener Satz von Skalierungsfaktoren verwendet wird. Wenn eine Rekonfiguration erfolgen soll, Pfeil 28, wird mit Schritt 10, dem Konfigurieren der Skalierungsfaktoren fortgefahren.
-
Wenn keine Rekonfiguration erfolgen soll, Pfeil 30, wird in Schritt 32 geprüft, ob dem Verschlüsselungskern eine vorbestimmte Anzahl von Takten des Verarbeitungssignals mit einer bestimmten Verarbeitungstaktfrequenz, die durch die zweite Zufallsauswahl in Schritt 16 festgelegt wurde, bereitgestellt wurde. Wenn dies nicht der Fall ist, Pfeil 34, wird zu Schritt 18 zurückgesprungen und dem Verschlüsselungskern ein weiterer Takt des Verarbeitungstaktsignals (mit unveränderter Verarbeitungstaktfrequenz) bereitgestellt.
-
Wenn andererseits die vorbestimmte Anzahl von Takten des Verarbeitungstaktsignals erreicht wurde, Pfeil 36, wird mit Schritt 16 fortgefahren und die zweite Zufallsauswahl erneut getroffen, so dass im Allgemeinen ein anderes der zweiten Taktsignale ausgewählt wird und sich entsprechend die Verarbeitungstaktfrequenz ändert. Vorzugsweise ist die vorbestimmte Anzahl von Takten des Verarbeitungstaktsignals gleich eins, so dass die zweite Zufallsauswahl nach jedem Takt des Verarbeitungstaktsignals erneut getroffen wird.
-
Es sie darauf hingewiesen, dass sich im Rahmen dieser Anmeldung der Begriff ‚Verarbeitungstaktfrequenz‘ jeweils auf einzelne Takte bezieht, d.h. die jeweilige, augenblickliche Verarbeitungstaktfrequenz ist z.B. durch den Kehrwert des zeitlichen Abstands zweier aufeinanderfolgender aufsteigender Flanken des Verarbeitungstaktsignals gegeben. Die Verarbeitungstaktfrequenz ist also keine Frequenz im üblichen Sinne, die sich auf einen periodischen Vorgang bezieht. Die erste Taktfrequenz und die zweiten Taktfrequenzen sind hingegen im üblichen Sinne definiert, da das erste Taktsignal und die zweiten Taktsignale eine sich periodisch wiederholende Form aufweisen.
-
Das Verfahren wird bevorzugt durch eine Takterzeugungsschaltung oder eine Verschlüsselungsschaltung implementiert, wobei die erste Zufallsauswahl im Wesentlichen in einem Auswahlprogramm, d.h. als Software, und die zweite Zufallsauswahl im Wesentlichen in einer elektronischen Schaltung, d.h. als Hardware, implementiert sind. Eine solche Takterzeugungsschaltung bzw. Verschlüsselungsschaltung wird im Folgenden beschrieben.
-
2 stellt eine Takterzeugungsschaltung und eine Verschlüsselungsschaltung gemäß einer bevorzugten Ausführungsform der Erfindung dar. Die Verschlüsselungsschaltung umfasst einen Taktgenerator 52, ein Taktaufbereitungsmodul 54, einen Prozessorkern 56 und einen Verschlüsselungskern 58. Taktgenerator 52, Taktaufbereitungsmodul 54 und Prozessorkern 56 bilden zusammen eine Takterzeugungsschaltung, die ein Verarbeitungstaktsignal für den Verschlüsselungskern 58 bereitstellt.
-
Der Taktgenerator 52 ist dazu eingerichtet, ein erstes Taktsignal 62 mit einer ersten Taktfrequenz zu erzeugen, wobei die erste Taktfrequenz zufällig aus einer ersten Anzahl von Taktfrequenzen ausgewählt wird. Diese erste Zufallsauswahl wird im Wesentlichen durch ein Auswahlprogramm getroffen, das im Prozessorkern 56 ausgeführt wird.
-
Im Einzelnen kann dies beispielsweise wie im Folgenden erreicht werden. Zunächst stellt eine Taktquelle 64 ein ursprüngliches Taktsignal 65 mit einer bestimmten Frequenz bereit. Die Taktquelle kann z.B. ein in der Schaltung umfasster Oszillator sein oder, bevorzugt, ein Anschluss an eine externe Taktquelle, durch die das ursprüngliche Taktsignal für die Schaltung bereitgestellt wird.
-
Das ursprüngliche Taktsignal wird durch eine Frequenzteilereinheit 66 verarbeitet, die die Frequenz des ursprünglichen Taktsignals entsprechend einem Teilungsverhältnis vermindert. Das Teilungsverhältnis wird durch das im Prozessorkern 56 ausgeführte Auswahlprogramm zufällig (entsprechend einer ersten Zufallsauswahl) aus einer ersten Anzahl von Teilungsverhältnissen bestimmt und über die Verbindung 68 zwischen Prozessorkern und Frequenzteilereinheit an der Frequenzteilereinheit 66 eingestellt. Hierzu kann beispielsweise eine Tabelle mit möglichen Teilungsverhältnissen (entsprechend der ersten Anzahl) bereitgestellt sein, wobei das Auswahlprogramm aus dieser Tabelle in zufälliger Weise einen Eintrag entnimmt. Das Auswahlprogramm kann dazu z.B. Pseudozufallszahlen generieren oder auch von einem anderen Zufallsgenerator (als Soft- oder Hardware implementiert) Zufallszahlen übernehmen. Die Frequenzteileinheit 66 kann einen oder mehrere in Reihe geschaltete Frequenzteiler umfassen. Im Falle mehrerer Frequenzteiler ist das Teilungsverhältnis durch mehrere Teiler bestimmt. Sind beispielsweise zwei Frequenzteiler (z.B. 6-Bit-Frequenzteiler) vorgesehen, wird das Teilungsverhältnis durch zwei Teiler (z.B. 6-Bit-Zahlen) bestimmt, die Tabelle enthält dann entsprechend Paare von Teilern.
-
Das Auswahlprogramm ist weiterhin dazu eingerichtet, die zufällige Auswahl der ersten Frequenz zu bestimmten Auswahlzeitpunkten erneut durchzuführen.
-
Das Ausgangssignal 67 der Frequenzteilereinheit 66, deren Frequenz durch das zufällige Teilungsverhältnis aus der Frequenz des ursprünglichen Taktsignals gegeben ist, kann über eine Taktausgangseinheit 70 als erstes Taktsignal 62 ausgeben bzw. an das Taktaufbereitungsmodul 54 weitergeleitet werden. Die Taktausgangseinheit 70 dient dazu ein störungsfreies Taktsignal (engl. ‚glitch-free clock‘) bereitzustellen. Störungen können hier auftreten, wenn die zufällige Auswahl durch das Auswahlprogramm erneut getroffen wird und es so zu einer Frequenzänderung im ersten Taktsignal kommt, so dass am Übergang eine Störung (‚glitch‘) Signalverlauf entstehen kann, der zu Fehlern in der nachgeschalteten Logikschaltung führen kann. Geeignete Schaltungen, mit diesem Problem umzugehen, sind dem Fachmann bekannt.
-
Das erste Taktsignal 62 wird zu dem Taktaufbereitungsmodul 54 geleitet, das dazu eingerichtet ist, das Verarbeitungstaktsignal 60 zu erzeugen und bereitzustellen, wobei eine Frequenz, genannt Verarbeitungsfrequenz, des Verarbeitungstaktsignals durch Multiplikation mit einem aus einer zweiten Anzahl von Skalierungsfaktoren zufällig ausgewählten Skalierungsfaktor bestimmt ist. Diese Auswahl wird als zweite Zufallsauswahl bezeichnet.
-
In der gezeigten Ausführungsform umfasst das Taktaufbereitungsmodul 54 eine Taktskalierungseinheit 72, einen Multiplexer 76 und einen Zufallszahlengenerator 78. Darin werden aus dem ersten Taktsignal 62 in der Taktskalierungseinheit 72 zunächst eine zweite Anzahl von zweiten Taktsignalen 74 abgeleitet bzw. erzeugt. Die Frequenzen (zweite Frequenzen) der zweiten Taktsignale 74 sind durch Multiplikation der ersten Frequenz des ersten Taktsignals mit jeweils einem der Skalierungsfaktoren gegeben. Die Skalierungsfaktoren sind zu diesem Zweck in der Taktskalierungseinheit 72 gespeichert, wobei vorzugsweise die Skalierungsfaktoren neu eingestellt bzw. konfiguriert werden können.
-
Die zweiten Taktsignale 74 werden an den Multiplexer 76 geleitet, durch den aus den zweiten Taktsignalen eines ausgewählt und als Verarbeitungstaktsignal 60 bereitgestellt wird. Dies Auswahl (zweite Zufallsauswahl) erfolgt basierend auf einem Signal, das von dem Zufallszahlengenerator 78 an den Multiplexer 76 geleitet wird. Der Zufallszahlengenerator 78 erzeugt also Zufallszahlen entsprechend der zweiten Anzahl. Der Zufallszahlengenerator 78 kann z.B. als linear rückgekoppeltes Schieberegister realisiert sein. Vorzugsweise ist der Zufallszahlengenerator 78 durch das Ausgangssignal des Multiplexers 76, d.h. durch das Verarbeitungstaktsignal, getaktet.
-
Das Verarbeitungstaktsignal 60 wird an den Verschlüsselungskern 58 geleitet, dem dieses als Taktsignal dient.
-
Weiter ist in der 2 noch eine Verbindung 80 gezeigt, über die der Prozessorkern 56 mit dem Taktaufbereitungsmodul 54 und insbesondere mit der Taktskalierungseinheit 72 kommunizieren kann. Über diese Verbindung 80 kann das im Prozessorkern 56 ausgeführte Auswahlprogramm insbesondere die, gegebenenfalls in der Taktskalierungseinheit 72 gespeicherten, Skalierungsfaktoren neu einstellen, d.h. das Auswahlprogramm kann eine Rekonfiguration der Skalierungsfaktoren vornehmen. Über diese Verbindung könnte auch das Verarbeitungstaktsignal an den Prozessorkern übertragen werden (im Einzelnen nicht dargestellt).
-
Ebenso kann die Taktskalierungseinheit 72 so eingerichtet sein, dass sie mehrere Sätze von Skalierungswerten speichern kann, wobei die Anzahl von Skalierungswerten in jedem Satz gleich der zweiten Anzahl ist. Entsprechend einem Zustand bzw. einem Status der Taktskalierungseinheit wird dann einer dieser Sätze von Skalierungswerten als Skalierungsfaktoren ausgewählt und wie vorstehend angewandt. Der Status kann über die Verbindung 80 durch das im Prozessorkern ausgeführte Auswahlprogramm geändert werden. Dies kann als eine weitere Form der Rekonfiguration der Skalierungsfaktoren gesehen werden. Weiterhin können über diese Verbindung auch die Sätze von Skalierungswerten geändert werden, d.h. neue Skalierungswerten in den Sätzen gespeichert werden, wobei vorteilhafterweise Skalierungswerten von Sätzen geändert werden, die zum jeweiligen Zeitpunkt nicht vermöge des Status als Skalierungsfaktoren ausgewählt sind.
-
Insgesamt kann durch eine Rekonfiguration der Skalierungsfaktoren die Anzahl möglicher unterschiedlicher Verarbeitungsfrequenzen deutlich erhöht werden, so dass zusätzliche Sicherheit vor Seitenkanalangriffen erreicht wird.
-
Auch ist eine Verbindung 82 zwischen Prozessorkern 56 und Verschlüsselungskern 58 gezeigt. Hierüber kann einerseits der Prozessorkern Verschlüsselungen durch den Verschlüsselungskern steuern, insbesondere Startzeitpunkte einzelner Verschlüsselungen bestimmen und/oder zu verschlüsselnde Daten an den Verschlüsselungskern übermitteln, und andererseits kann der Verschlüsselungskern Endzeitpunkte von Verschlüsselungen, das Verarbeitungstaktsignal und/oder verschlüsselte Daten an den Prozessorkern übermitteln.
-
Bevorzugt sind die Takterzeugungsschaltung und/oder die Verschlüsselungsschaltung als FPGA (Field Programmable Gate Array, programmierbares Logikgatter) implementiert.
-
3 stellt eine Takterzeugungsschaltung und eine Verschlüsselungsschaltung gemäß einer weiteren bevorzugten Ausführungsform der Erfindung dar. Diese ist in großen Teilen identisch zur in der 2 dargestellten Ausführungsform und unterscheidet sich lediglich in der Gestaltung des Taktaufbereitungsmoduls 54. Im Folgenden werden lediglich die Unterschiede erläutert, ansonsten gilt das vorstehend Ausgeführte. Die Verschlüsselungsschaltung umfasst wieder einen Taktgenerator 52 (nur schematisch ohne Einzelheiten dargestellt, vgl. jedoch 2), ein Taktaufbereitungsmodul 54 und einen Prozessorkern 56, die zusammen die Takterzeugungsschaltung bilden, und einen Verschlüsselungskern 58.
-
Das Taktaufbereitungsmodul 54 umfasst hier mehrere Taktskalierungseinheiten 721,722, ... 72N, die über jeweilige Verbindungen 801, 802, ... 80N, mit dem Prozessorkern 56 verbunden sind. In jeder der Taktskalierungseinheiten sind ein oder mehrere Sätze von Skalierungswerten (die Anzahl von Skalierungswerten in jedem Satz ist wieder die zweite Anzahl) gespeichert, wobei, falls mehrere Sätze gespeichert sind, einer der Sätze entsprechend einem Zustand der Taktskalierungseinheit, der über die entsprechende Verbindung mit dem Prozessorkern durch das in diesem ausgeführte Auswahlprogramm bestimmt wird, ausgewählt werden kann. In jeder der Taktskalierungseinheiten wird das erste Taktsignal 62 als Eingangssignal verwendet. Die Funktion jeder der Taktskalierungseinheiten entspricht der Funktion der Taktskalierungseinheit 72 der 2, d.h. aus dem Eingangssignal wird eine zweite Anzahl von Ausgangssignalen erzeugt, deren Frequenzen durch Multiplikation der Frequenz des Eingangssignals mit den (ausgewählten) Skalierungswerten gegeben sind.
-
Von den Taktskalierungseinheiten kann weiterhin eine über die Verbindungen 801, 802, ... 80N, oder alternativ durch den Multiplexer 76, der dann über eine eigene Verbindung mit dem Prozessorkern verfügt (nicht gezeigt), ausgewählt werden. Diese Auswahl erfolgt wieder durch das Auswahlprogramm. Die Ausgangssignale der ausgewählten Taktskalierungseinheit (d.h. eine der gezeigten Mengen von Taktsignalen 741, 742, ... 74N) werden dann vom Multiplexer 76 verwendet (diese stellen also die zweite Anzahl von zweiten Taktsignalen dar), um entsprechend der vom Zufallsgenerator 78 generierten Zufallszahl (zweite Zufallsauswahl) ein Taktsignal als Verarbeitungstaktsignal für die Verschlüsselungskern 58 bereitzustellen.
-
Die Auswahl der Taktskalierungseinheit kann vom Auswahlprogramm geändert werden, so dass die Anzahl unterschiedlicher Verarbeitungsfrequenzen weiter erhöht wird. Diese Ausführungsform mit mehreren Taktskalierungseinheiten ist insbesondere zweckmäßig in Kombination mit einer Rekonfiguration der Taktskalierungseinheiten, da die Skalierungswerten bzw. der Status von nicht ausgewählten Taktskalierungseinheiten geändert werden kann während die zweite Zufallsauswahl basierend auf den Ausgangssignalen der ausgewählten Taktskalierungseinheit getroffen werden kann. Der Verschlüsselungskern kann also ohne Unterbrechung weiterbetrieben werden.