-
HINTERGRUND
-
Diese Offenbarung bezieht sich im Allgemeinen auf einen feldprogrammierbaren Gate-Array-Chip (FPGA). Genauer gesagt bezieht sich diese Offenbarung auf ein System und ein Verfahren, das die Test- und Steuerschnittstelle des FPGA-Chips schützt, um einen unbefugten Zugriff auf den FPGA-Chip zu verhindern.
-
Figurenliste
-
- 1 veranschaulicht eine Systemarchitektur zur Implementierung des JTAG-Schutzes (Joint Test Action Group) gemäß einem Aspekt der Anmeldung.
- 2A zeigt ein Blockdiagramm einer Logik zur Erkennung von Aktivierungssignalen gemäß einem Aspekt der Anmeldung.
- 2B zeigt die Wahrheitstabelle der Freigabesignal-Erkennungslogik 200 gemäß einem Aspekt der Anmeldung.
- 3A zeigt ein Blockdiagramm der JTAG-Signaldetektionslogik gemäß einem Aspekt der Anmeldung.
- 3B zeigt die Wahrheitstabelle der JTAG-Signaldetektionslogik 300 gemäß einem Aspekt der Anwendung.
- 4A zeigt ein Blockdiagramm der Steuerlogik gemäß einem Aspekt der Anmeldung.
- 4B zeigt die Wahrheitstabelle der Steuerlogik 400 gemäß einem Aspekt der Anmeldung.
- 5 zeigt eine schematische Darstellung der Leiterbahnen auf der Leiterplatte gemäß einem Aspekt der Anmeldung.
- 6 zeigt ein Flussdiagramm zur Veranschaulichung eines Verfahrens zum Freischalten der JTAG-Schnittstelle eines FPGAs gemäß einem Aspekt der Anmeldung.
- 7 zeigt ein Flussdiagramm, das ein Verfahren zur Erkennung eines Eindringens in die JTAG-Schnittstelle gemäß einem Aspekt der Anmeldung veranschaulicht.
- 8 zeigt ein Computersystem, das die Laufzeitsteuerung der JTAG-Schnittstelle eines FPGA-Bausteins gemäß einem Aspekt der Anmeldung erleichtert.
-
In den Figuren beziehen sich gleiche Ziffern auf die gleichen Figurenelemente.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die folgende Beschreibung soll es jedem Fachmann ermöglichen, die Beispiele herzustellen und zu verwenden, und wird im Zusammenhang mit einer bestimmten Anwendung und deren Anforderungen gegeben. Verschiedene Modifikationen der offengelegten Beispiele sind für den Fachmann ohne weiteres ersichtlich, und die hierin definierten allgemeinen Grundsätze können auf andere Beispiele und Anwendungen angewandt werden, ohne von Geist und Umfang der vorliegenden Offenbarung abzuweichen. Daher ist der Umfang der vorliegenden Offenbarung nicht auf die gezeigten Beispiele beschränkt, sondern hat den größtmöglichen Umfang, der mit den hier offengelegten Grundsätzen und Merkmalen vereinbar ist.
-
In Netzwerk-Switching-Ausrüstungen (z. B. Switches und Router) werden häufig FPGA-Bausteine als Systemcontroller für verschiedene Funktionen eingesetzt, z. B. für die Energieverwaltung, die Kommunikation zwischen Chips und Peripheriegeräten usw. Während der Entwicklungs- und der Fertigungstestphase können die digitalen Entwurfslogiken in einem FPGA-Chip mit der JTAG-Technik (Joint Test Action Group) getestet werden. Genauer gesagt kann der FPGA-Chip mit einer JTAG-Schnittstelle ausgestattet werden (die je nach JTAG-Version zwei, vier oder fünf Pins haben kann). Um einen unbefugten Zugriff auf das FPGA zu verhindern (z.B. das Temperieren des FPGA-Flash-Speichers), sollte die JTAG-Schnittstelle geschützt werden. In der derzeitigen Praxis wird der JTAG-Header physisch von der Leiterplatte (PCB), auf der das FPGA montiert ist, entfernt, um zu verhindern, dass jemand Zugang zum FPGA erhält. Dies kann jedoch zu Wartungsproblemen für regelmäßige Nutzer führen. Ein Benutzer muss ein defektes Gerät an den Hersteller zurückschicken, anstatt vor Ort Zugang zu haben, um Tests und Fehlersuche durchzuführen. Ohne einen über JTAG implementierten Schutz auf der nächsten Ebene kann das gesamte System anfällig sein und von Hackern missbraucht werden.
-
Diese Offenbarung bietet eine Lösung für das Problem des Schutzes der JTAG-Schnittstelle, ohne den JTAG-Header physisch von der Leiterplatte zu entfernen. Gemäß einem Aspekt kann der zu schützende FPGA-Chip so programmiert werden, dass er einen Steuerlogikblock und einen Erkennungslogikblock enthält. Der Steuerlogikblock kann ein Steuersignal über einen I/O-Pin auf dem FPGA ausgeben. Ein solcher I/O-Pin kann elektrisch mit dem Enablement-Pin (d.h. JTAGEN) der JTAG-Schnittstelle gekoppelt sein. Mit anderen Worten: Der Ausgang des Steuerlogikblocks kann die JTAG-Schnittstelle aktivieren oder deaktivieren. Der Steuerlogikblock kann ein Eingangssignal von Geräten außerhalb des FPGA erhalten, z. B. von der zentralen Verarbeitungseinheit (CPU) des Switches, so dass eine auf der CPU laufende Steuersoftware die JTAG-Schnittstelle aktivieren/deaktivieren kann. Der Erkennungslogikblock kann Aktivitäten an den JTAG-Pins überwachen, einschließlich JTAGEN und dem Takt-Pin (d.h. TCK). Abnormale Aktivitäten (z. B. unerwartete Freigabesignale oder Taktsignale) können den Erkennungslogikblock veranlassen, Alarmsignale an den Steuerlogikblock zu senden. Nach Erhalt der Alarmsignale kann der Steuerlogikblock die JTAG-Schnittstelle deaktivieren und so einen unbefugten Zugriff auf das FPGA verhindern.
-
1 veranschaulicht eine Systemarchitektur zur Implementierung des JTAG-Schutzes gemäß einem Aspekt der Anmeldung. Genauer gesagt zeigt 1 eine Teilansicht einer Switch PCB 100. Die Switch-Leiterplatte 100 kann einen FPGA-Chip 102, eine Switch-CPU 120 und Peripheriegeräte 122 enthalten. Andere Switch-Komponenten, wie z. B. die Switch-Ports, sind in 1 nicht dargestellt.
-
Der FPGA-Chip 102 kann als Controller für den Switch verwendet werden und zur Steuerung von Peripheriegeräten 122, wie z. B. einer Stromquelle, eingesetzt werden. Der FPGA-Chip 102 kann verschiedene Funktionsblöcke enthalten, darunter eine JTAG-Schnittstelle 104, einen Logikblock 106 zur Erkennung von Aktivierungssignalen (EN_DET), einen Logikblock 108 zur Erkennung von JTAG-Signalen (JTAG_DET), einen Steuerlogikblock 112, einen Flash-Speicher 114 und einen Flash-Controller 116.
-
Die JTAG-Schnittstelle 104 kann ein Standard-FPGA-Merkmal sein, das es einem Entwickler ermöglicht, den FPGA-Chip 102 zu programmieren und zu debuggen. In dem in 1 dargestellten Beispiel kann die JTAG-Schnittstelle 104 mit fünf Anschlussstiften des FPGA-Chips 102 gekoppelt werden, um die Eingabe/Ausgabe von JTAG-Signalen zu erleichtern, einschließlich des Testmodusauswahlsignals (TMS), des Testtaktsignals (TCK), des Testdateneingangssignals (TDI), des Testdatenausgangssignals (TDO) und des JTAG-Freigabesignals (JTAGEN). Genauer gesagt kann der logische Wert des JTAGEN-Pins 132 die JTAG-Schnittstelle 104 sperren/entsperren und die anderen vier JTAG-Pins (d. h. TMS, TCK, TDI und TDO) in zwei verschiedene Modi (dediziert oder gemeinsam genutzt) versetzen. In einem Beispiel ist die JTAG-Schnittstelle 104 entsperrt, wenn JTAGEN High ist (oder eine logische „1“), und die JTAG-Pins werden in einen dedizierten Modus versetzt. Wenn die JTAG-Schnittstelle 104 entsperrt ist, ist der Zugriff auf den Flash-Speicher 114 (z. B. über die Signalspur 110) möglich und die Programmierung des Geräts oder andere JTAG-bezogene Funktionen sind verfügbar. Ist JTAGEN niedrig (oder eine logische „0“), ist die JTAG-Schnittstelle 104 gesperrt, und die JTAG-Pins werden in einen gemeinsam genutzten Modus versetzt, so dass sie als Allzweck-E/A-Pins (GPIO) verwendet werden können. Wenn die JTAG-Schnittstelle 104 gesperrt ist, ist der Zugriff auf den Flash-Speicher 114 blockiert.
-
1 zeigt, dass der JTAGEN-Pin 132 elektrisch (z. B. über eine Leiterbahn auf der Leiterplatte 100) mit einem anderen I/O-Pin 134 des FPGA-Chips 102 gekoppelt werden kann. Folglich kann die JTAG-Schnittstelle 104 durch Einstellen der Spannung oder des logischen Werts des I/O-Pins 134 aktiviert oder deaktiviert werden. Einem Aspekt zufolge kann der I/O-Pin 134 mit dem Steuerlogikblock 112 gekoppelt werden, der mit der Switch-CPU 120 interagiert. Dadurch kann die in der Switch-CPU 120 laufende Steuersoftware ein Signal an den Steuerlogikblock 112 senden, wodurch der Steuerlogikblock 112 veranlasst wird, ein Steuersignal am E/A-Pin 134 auszugeben. Mit anderen Worten: Die in der CPU 120 laufende Steuersoftware kann die JTAG-Schnittstelle 104 über den Steuerlogikblock 112 aktivieren oder deaktivieren und so die JTAG-Schnittstelle 104 auf Leiterplattenebene schützen.
-
Zusätzlich zur Aktivierung/Deaktivierung der JTAG-Schnittstelle 104 kann der Steuerlogikblock 112 auch Steuersignale an den Flash-Controller 116 und die Peripheriegeräte 122 senden. Wenn beispielsweise ein Eindringen erkannt wird, kann der Steuerlogikblock 112 ein Ausschaltsignal an die Peripheriegeräte 122 senden, oder der Steuerlogikblock 112 kann ein Speicherlöschsignal an den Flash-Controller 116 senden und den Flash-Controller 116 anweisen, den Inhalt des Flash-Speichers 114 zu löschen.
-
1 zeigt auch, dass der Steuerlogikblock 112 nicht nur mit der Switch-CPU 120 interagiert, sondern auch Eingaben von Erkennungslogiken empfangen kann, einschließlich des Logikblocks 106 zur Erkennung von Aktivierungssignalen und des Logikblocks 108 zur Erkennung von JTAG-Signalen. Diese Erkennungslogikblöcke können so konfiguriert werden, dass sie Erkennungen auf Chipebene durchführen, um Eindringlinge in das System zu erkennen, wenn der von der Steuerlogik bereitgestellte Schutz auf Platinebene ausfällt. Insbesondere kann der Logikblock 106 zur Erkennung von Aktivierungssignalen die Spannungspegel am JTAGEN-Pin 132 überwachen, um unerwartete JTAGEN-Signale zu erkennen. Dies kann durch elektrische Kopplung des JTAGEN-Pins 132 mit einem FPGA-I/O-Pin 136 (z. B. über eine Leiterbahn auf der Switch-Leiterplatte 100) erfolgen, der dann mit dem Logikblock 106 zur Erkennung von Freigabesignalen gekoppelt wird. Auf diese Weise können Signaländerungen am JTAGEN-Pin 132 über den I/O-Pin 136 an den Logikblock 106 zur Erkennung von Freigabesignalen gesendet werden. Wenn eine unerwartete Änderung am JTAGEN-Pin 132 erkannt wird, die auf einen unbefugten Versuch hinweist, die JTAG-Schnittstelle 104 zu entsperren, kann der Logikblock 106 zur Erkennung von Freigabesignalen ein Alarmsignal an den Steuerlogikblock 112 senden. Der JTAG-Signalerfassungslogikblock 108 kann die JTAG-Signalleitungen (z. B. die TCK-Signalleitung) überwachen. Jede Abnormalität in den JTAG-Signalleitungen kann den JTAG-Signalerfassungslogikblock 108 veranlassen, ein Alarmsignal an die Steuerlogik 112 zu senden. In einem Beispiel kann der JTAG-Signaldetektionslogikblock 108 die TCK-Leitung überwachen. Insbesondere kann der JTAG-Signalerfassungslogikblock 108 so konfiguriert werden, dass er steigende und fallende Flanken auf der TCK-Signalleitung erkennt. Bei der Erkennung unerwarteter steigender und fallender Flanken kann der JTAG-Signaldetektionslogikblock 108 ein Alarmsignal an die Steuerlogik 112 aussenden. Die direkte Überwachung der JTAG-Signalleitungen kann nützlich sein, wenn ein Hacker das JTAGEN-Signal stört (z. B. indem er es auf „1“ setzt) und die Kontrolle über die JTAG-Signalleitungen übernimmt.
-
2A zeigt ein Blockdiagramm einer Logik zur Erkennung von Freigabesignalen gemäß einem Aspekt der Anmeldung. In 2A kann die Logik 200 zur Erkennung von Freigabesignalen einen Filter 202, Flipflops 204 und 206 sowie UND-Gatter 208 und 210 umfassen. Der Eingang zur Freigabesignal-Erkennungslogik 200 kann das überwachte JTAGEN-Signal sein, und das Taktsignal kann der FPGA-Takt sein.
-
Der Filter 202 kann für das Herausfiltern von metastabilem Rauschen zuständig sein. Die Flipflops 204 und 206 sind so angeordnet, dass zwischen dem Ausgang des Flipflops 204 und dem Ausgang des Flipflops 206 eine Verzögerung von einem Taktzyklus besteht. Der Ausgang des Flipflops 204 und der invertierte Ausgang des Flipflops 206 werden dann an das UND-Gatter 208 gesendet. Wenn das JTAGEN-Signal während eines Taktzyklus von einer logischen „0“ auf eine logische „1“ umgeschaltet wird, gibt das UND-Gatter 208 eine logische „1“ aus; andernfalls gibt das UND-Gatter 208 eine logische „0“ aus. Man beachte, dass ein Übergang von einer logischen „0“ zu einer logischen „1“ bedeutet, dass der JTAGEN vom „gesperrten“ Zustand in den „ungesperrten“ Zustand übergeht. Sofern nicht erwartet, kann ein solcher Übergang auf ein Eindringen hindeuten. Mit dem UND-Gatter 210 kann ein Zugriffsschutzbit die Erkennung des Übergangs von „0“ zu „1“ außer Kraft setzen. Wenn das Zugriffsschutzbit auf „0“ gesetzt ist, was bedeutet, dass der JTAG-Zugriffsschutz nicht aktiviert ist, gibt das UND-Gatter 210 immer eine „0“ aus, unabhängig davon, ob ein Übergang von „0“ auf „1“ am JTAGEN-Signal erkannt wird. Ist das Zugriffsschutz-Bit hingegen auf „1“ gesetzt, was bedeutet, dass der JTAG-Zugriffsschutz aktiviert ist, gibt das UND-Gatter 210 eine „1“ aus, wenn am JTAGEN-Signal ein Übergang von „0“ auf „1“ erkannt wird. Der logische „1“-Ausgang des UND-Gatters 210 erzeugt ein Alarmsignal, das an die Steuerlogik gesendet wird.
-
2B zeigt die Wahrheitstabelle der Freigabesignal-Erkennungslogik 200 gemäß einem Aspekt der Anwendung. Die erste Spalte der Tabelle 220 zeigt die möglichen Übergänge des JTAGEN-Signals; die zweite Spalte zeigt den Ausgang des UND-Gatters 208; die dritte Spalte zeigt den Wert des Zugriffsschutzbits (wobei „0“ und „1“ den entsperrten bzw. gesperrten Zustand der JTAG-Schnittstelle anzeigen); und die vierte Spalte zeigt den Ausgang des UND-Gatters 210, der auch der Ausgang der Freigabesignal-Erkennungslogik 200 ist. Tabelle 200 enthält auch eine fünfte Spalte, die die erwartete Ausgabe der Freigabesignal-Erkennungslogik 200 zeigt, und eine sechste Spalte, die das Erkennungsergebnis anzeigt. Man beachte, dass die erwartete Ausgabe der Freigabesignal-Erkennungslogik 200 immer „0“ sein sollte, vorausgesetzt, die JTAG-Schnittstelle ist entsperrt oder es liegt kein Eindringen vor. Wenn jedoch ein Eindringen in die gesperrte JTAG-Schnittstelle erkannt wird, wie in Zeile 222 angegeben, besteht eine Diskrepanz zwischen dem erwarteten Ausgang und dem tatsächlichen Ausgang. Folglich wird ein Alarmsignal erzeugt und an die Steuerlogik gesendet. In einem Beispiel setzt der logische „1“-Ausgang des UND-Gatters 210 ein Alarmbit in einer Registeranordnung in der Steuerlogik.
-
3A zeigt ein Blockdiagramm der JTAG-Signaldetektionslogik gemäß einem Aspekt der Anwendung. In diesem Beispiel kann der Eingang der JTAG-Signaldetektionslogik 300 das überwachte TCK-Signal sein, und das Taktsignal kann der FPGA-Takt sein. In 3A kann die JTAG-Signalerfassungslogik 300 einen Filter 302, eine Verzögerungslogik 304, eine Logik zur Erkennung steigender Flanken 306, eine Logik zur Erkennung fallender Flanken 308 und ein UND-Gatter 310 umfassen.
-
Filter 302 kann für die Beseitigung von metastabilem Rauschen oder Glitches verantwortlich sein. Die Verzögerungslogik 304 kann Flipflops 312 und 314 umfassen, die den Flipflops 204 und 206 ähnlich sind und die TCK-Signale mit der Rate des FPGA-Takts abtasten können. Beachten Sie, dass der FPGA-Takt typischerweise viel schneller ist als der TCK-Takt, so dass jede Änderung des TCK-Signals genau erfasst werden kann.
-
Die Logik 306 zur Erkennung steigender Flanken kann ein UND-Gatter 316 und ein Register 318 für steigende Flanken umfassen. Das UND-Gatter 316 und das Anstiegsflankenregister 318 sind so konfiguriert, dass bei jeder ansteigenden Flanke (d. h. einem Übergang von „0“ auf „1“) des TCK-Signals das Anstiegsflankenregister 318 so eingestellt wird, dass es einen Bitwert „1“ speichert. So kann beispielsweise ein Übergang von „0“ zu „1“ die Aktivierung des Registers 318 auslösen. Die Logik zur Erkennung der fallenden Flanke 308 kann ein UND-Gatter 320 und ein Register für fallende Flanken 322 umfassen. Das UND-Gatter 320 und das Flankenregister 322 sind so konfiguriert, dass bei jeder fallenden Flanke (d.h. einem Übergang von „1“ zu „0“) des TCK-Signals das Flankenregister 322 so eingestellt wird, dass es einen Bitwert „1“ speichert. So kann zum Beispiel ein Übergang von „1“ auf „0“ die Aktivierung des Registers 322 auslösen.
-
Das UND-Gatter 310 hat drei Eingänge, darunter den Bitwert des Reitflankenregisters 320, den Bitwert des Fallflankenregisters 326 und den Bitwert des Zugriffsschutzbits. Wie bereits erwähnt, befindet sich die JTAG-Schnittstelle in einem ungeschützten Modus, wenn das Zugriffsschutzbit auf „0“ gesetzt ist, und das UND-Gatter 310 gibt unabhängig von den Werten der Register immer eine „0“ aus. In einer solchen Situation wird kein Alarm ausgelöst. Wenn das Zugriffsschutzbit auf „1“ gesetzt ist, befindet sich die JTAG-Schnittstelle in einem geschützten Modus, und das UND-Gatter 310 kann ein Bit „1“ ausgeben, wenn in beiden Registern ein Bit „1“ gespeichert ist. Mit anderen Worten: Wenn sowohl eine steigende als auch eine fallende Flanke am TCK-Signal erkannt wird, wird ein Alarm ausgelöst.
-
3A zeigt auch einen optionalen Rücksetzeingang 324, der zum Zurücksetzen der Register 318 und 322 verwendet werden kann. Nachdem ein Alarm ausgelöst wurde, kann zur Erkennung weiterer Eindringlinge ein Rücksetzsignal erzeugt und an die Register 318 und 322 gesendet werden.
-
3B zeigt die Wahrheitstabelle der JTAG-Signaldetektionslogik 300 gemäß einem Aspekt der Anwendung. Die erste Spalte der Tabelle 340 zeigt die möglichen Übergänge des TCK-Signals, und die zweite Spalte zeigt den Bitwert des Rising-Edge-Registers (d. h. des Registers 318). Tabelle 340 zeigt, dass das Rising-Edge-Register ein Bit „1“ speichert, wenn ein Übergang des TCK-Signals von „0“ auf „1“ erkannt wird. Die dritte Spalte der Tabelle 340 zeigt den Bitwert des Registers für fallende Flanken (d.h. Register 322); die vierte Spalte zeigt den Wert des Zugriffsschutzbits; und die fünfte Spalte zeigt den Ausgang des UND-Gatters 310. Tabelle 340 zeigt, dass das Flankenregister ein Bit „1“ speichert, wenn ein Übergang von „1“ zu „0“ des TCK-Signals erkannt wird. Wie in den Zeilen 342 und 344 gezeigt, wird, wenn beide Register ein Bit „1“ speichern und das Zugriffsschutzbit auf „1“ gesetzt ist, der Ausgang des UND-Gatters 310 auf „1“ gesetzt, was anzeigt, dass ein Impuls am TCK-Signal erkannt wurde.
-
Beachten Sie, dass unter normalen Umständen, wenn die JTAG-Schnittstelle gesperrt oder geschützt ist, keine Aktivität auf den JTAG-Signalleitungen zu beobachten sein sollte. Daher ist ein Impuls auf der TCK-Signalleitung wahrscheinlich das Ergebnis davon, dass jemand ein Taktsignal in die JTAG-Schnittstelle einspeist und versucht, über die JTAG-Schnittstelle auf den FPGA-Speicher zuzugreifen. Zur Vereinfachung der Darstellung ist die Situation, in der das Zugriffsschutzbit auf „0“ gesetzt ist, in 3B nicht dargestellt. Wie bereits erwähnt, wird kein Alarm ausgelöst, wenn das Zugriffsschutz-Bit auf „0“ gesetzt ist, unabhängig von den Werten der Anstiegsflanken- und Abfallflanken-Register. Beachten Sie, dass der Standardwert des Zugriffsschutz-Bits im offiziellen FPGA-Image eine logische „1“ ist, um sicherzustellen, dass sich die JTAG-Schnittstelle nach der Offline-Programmierung in der Fertigungsumgebung immer im Zustand „gesperrt“ befindet.
-
4A zeigt ein Blockdiagramm der Steuerlogik gemäß einem Aspekt der Anwendung. Die Steuerlogik 400 kann eine CPU-Schnittstelle 402, ein JTAG-Statusregister-Array 404, ein Benutzerschlüsselregister 406, einen Komparator 408 und einen Flash-Speicher 410 umfassen, der ein VOID-Bit 412 und einen Zugriffsschlüssel 414 speichert. Die Steuerlogik 400 kann ferner einen Multiplexer 416, ein negiertes UND-Gatter (NAND) 418 und einen Zeitgeber 420 umfassen.
-
Steuersoftware, die in der Switch-CPU oder der CPU eines Steuerknotens läuft, kann über die CPU-Steuerschnittstelle 402 mit der Steuerlogik 400 interagieren. In diesem Beispiel kann die CPU-Schnittstelle 402 einen Wünschelruten-Arbiter enthalten, der es der CPU ermöglicht, in das JTAG-Statusregister-Array 404 zu schreiben oder daraus zu lesen und in das Benutzerschlüsselregister 406 zu schreiben. Das JTAG-Statusregister-Array 404 speichert Statusinformationen, einschließlich des gesperrten/ungesperrten Zustands, der Alarme, der im Falle des Eindringens zu ergreifenden Maßnahmen usw. Detaillierte Beschreibungen des JTAG-Statusregisterfelds 404 folgen später. Wenn ein Benutzer versucht, die JTAG-Schnittstelle zu entsperren, kann die Steuerungssoftware über die CPU-Schnittstelle 402 einen Zugangsschlüssel in das Benutzerschlüsselregister 406 schreiben.
-
Der Flash-Speicher 410 speichert ein Ungültigkeitsbit 412 und einen vom Hersteller generierten Zugriffsschlüssel 414. Insbesondere werden das Void-Bit 412 und der Zugriffsschlüssel 414 im Flash-Speicher 410 gespeichert, wenn das FPGA in der Fertigungslinie offline programmiert wird. Das Void-Bit 412 hat immer einen logischen Anfangswert von „0“ und kann nur von „0“ auf „1“ umgeschaltet werden. Der Komparator 408 vergleicht den in das Benutzerschlüsselregister 406 geschriebenen Zugriffsschlüssel mit dem im Flash-Speicher 410 gespeicherten Zugriffsschlüssel 414. Wenn sie nicht übereinstimmen, wird der falsche Schlüssel in das Benutzerschlüsselregister 406 geschrieben, was bedeutet, dass ein Einbruchsversuch stattgefunden hat. Einem Aspekt zufolge kann der Komparator 408 bei der Feststellung, dass der falsche Schlüssel in das Benutzerschlüsselregister 406 geschrieben wurde, einen Alarm erzeugen (z. B. durch Setzen eines alarm_access_key-Bits im JTAG-Statusregister-Array 404). Der Ausgang des Komparators 408 kann auch verwendet werden, um den Ausgang des Multiplexers 416 zu bestimmen. Einem Aspekt zufolge gibt der Multiplexer 416 einen logischen Wert „0“ aus, wenn die Schlüssel übereinstimmen (oder wenn der in das Benutzerschlüsselregister 406 geschriebene Zugriffsschlüssel der richtige Schlüssel ist); andernfalls gibt der Multiplexer 416 einen logischen Wert „1“ aus. Der Ausgang des Multiplexers 416 kann invertiert und zusammen mit dem Zugriffsschutzbit an das NAND-Gatter 418 gesendet werden. Der Ausgang des NAND-Gatters 418 ist der Ausgang der Steuerlogik 400 und kann über eine externe Leiterbahn mit dem JTAGEN-Pin verbunden werden. Mit anderen Worten, wenn das Zugriffsschutzbit „1“ ist und der Ausgang des Multiplexers 416 „0“ ist (was einen übereinstimmenden Schlüssel anzeigt), wird ein logischer Wert „1“ an den JTAGEN-Pin gesendet, wodurch die JTAG-Schnittstelle entsperrt wird. Auf diese Weise kann die in der CPU laufende Software die JTAG-Schnittstelle dynamisch freischalten (z. B. durch Schreiben eines Zugriffsschlüssels in das Benutzerschlüsselregister 406). Ist der Ausgang des Multiplexers 416 dagegen „1“ (was bedeutet, dass ein falscher Schlüssel verwendet wird), wird ein logischer Wert „0“ an den JTAGEN-Pin gesendet, und die JTAG-Schnittstelle bleibt gesperrt.
-
Zusätzlich zum Zugriffsschlüssel kann das Ungültigkeitsbit 412 eine weitere Schutzstufe bieten. Insbesondere wenn ein falscher Schlüssel erkannt wird, kann das Ungültigkeitsbit 412 von seinem Standardwert „0“ auf „1“ umgeschaltet werden. Das Ungültigkeitsbit 412 kann so konfiguriert werden, dass es den Ausgang des Multiplexers 416 so auswählt, dass der Multiplexer 416 nur einen logischen Wert „1“ ausgeben kann, wenn das Ungültigkeitsbit „1“ ist, was wiederum die JTAG-Schnittstelle sperren kann.
-
Wenn die JTAG-Schnittstelle entsperrt ist (z. B. durch Eingabe des korrekten Zugriffsschlüssels), kann außerdem ein Countdown-Timer 420 gestartet werden. Der Anfangswert des Countdown-Timers kann auf der Grundlage der maximalen Zeitspanne bestimmt werden, die die JTAG-Schnittstelle nicht gesperrt sein darf. Dieser Wert kann je nach Anwendung konfigurierbar sein. In einem Beispiel kann die JTAG-Schnittstelle für einige Minuten freigeschaltet bleiben, damit der Bediener verschiedene Test- oder Fehlersuchvorgänge durchführen kann. Wenn der Timer 420 abläuft, wird das Void-Bit 412 von „0“ auf „1“ umgeschaltet, wodurch der Zugriff auf die JTAG-Schnittstelle verhindert wird. Da das Void-Bit 412 nur von „0“ auf „1“ umgeschaltet werden kann, ist die JTAG-Schnittstelle während des gesamten Stromversorgungszyklus verriegelt, sobald es umgeschaltet ist. Das Zurücksetzen des Void-Bits zum Entsperren der JTAG-Schnittstelle kann durch Rekonfiguration des FPGA (z. B. per Software) erfolgen.
-
4B zeigt die Wahrheitstabelle der Steuerlogik 400 gemäß einem Aspekt der Anwendung. Die erste Spalte der Tabelle 440 ist der Bitwert des Alarm-Zugriffsschlüsselregisters. Wie in 4A gezeigt, wird dieses Bit auf „1“ gesetzt, wenn ein falscher Zugriffsschlüssel erkannt wird. Die zweite Spalte der Tabelle 440 ist der Wert des ungültigen Bits 412, und die dritte Spalte gibt an, ob der Zeitgeber 420 abgelaufen ist. Tabelle 440 zeigt, dass das Ungültigkeitsbit 412 auf „1“ gesetzt wird, wenn der Zeitgeber 420 abgelaufen ist. Die vierte Spalte von Tabelle 440 zeigt den Wert des Zugriffsschutzbits, die fünfte Spalte gibt an, ob der Zugriffsschlüssel gültig ist, und die letzte Spalte ist der Ausgang der Steuerlogik (d. h. das JTAGEN-Signal). Wenn das Zugriffsschutzbit „0“ ist, ist die JTAG-Schnittstelle ungeschützt, wobei das JTAGEN-Signal „1“ ist und alle anderen Bits „egal“ sind. Der Standardwert des Zugriffsschutzbits ist „1“. Tabelle 440 zeigt auch, dass die JTAG-Schnittstelle im geschützten Modus (d. h. wenn das Zugriffsschutzbit auf „1“ gesetzt ist) nur dann entsperrt werden kann, wenn ein korrekter Zugriffsschlüssel eingegeben wurde (d. h. wenn das Alarm-Zugriffsschlüssel-Bit „0“ und das Zugriffsschlüssel-Gültig-Bit „1“ ist), wie in Zeile 442 von Tabelle 440 dargestellt.
-
Zurück zu 4A: Das JTAG-Statusregister-Array 404 kann eine Reihe von Registern enthalten, darunter ein Einstell-Bit-Array 422, ein Alarm-Bit-Array 424 und ein Aktions-Bit-Array 426. Das Einstellungs-Bit-Array 422 kann ein Schreib- und Leseregister (WR) enthalten, das ein Zugriffsschutz-Bit speichert, und ein Nur-LeseRegister, das ein Zugriffsschlüssel-Valid-Bit speichert. Wie bereits erwähnt, ist die JTAG-Schnittstelle entsperrt oder ungeschützt, wenn das Zugriffsschutz-Bit auf „0“ gesetzt ist; ist das Zugriffsschutz-Bit auf „1“ gesetzt, ist die JTAG-Schnittstelle gesperrt oder geschützt. Der Standardwert des Zugriffsschutz-Bits ist auf „1“ gesetzt. Das Zugriffsschlüssel-Gültigkeitsbit wird auf der Grundlage der Ausgabe des Multiplexers 416 gesetzt. Wenn ein richtiger Schlüssel eingegeben wird und das ungültige Bit 412 „0“ ist, wird das Zugriffsschlüssel-Gültigkeitsbit auf „1“ gesetzt, und wenn ein falscher Schlüssel eingegeben wird oder das ungültige Bit 412 „1“ ist, wird das Zugriffsschlüssel-Gültigkeitsbit auf „0“ gesetzt.
-
Das Alarm-Bit-Array 424 speichert die verschiedenen Alarm-Bits, die von den Erkennungslogiken erzeugt werden, z. B. von der Logik zur Erkennung von Freigabesignalen und der Logik zur Erkennung von JTAG-Signalen. Wie bereits erwähnt, können die Erkennungslogiken, wenn sie ein Eindringen erkennen, entweder am Freigabe-Pin oder an den JTAG-Signalleitungen, einen Alarm erzeugen, indem sie ein entsprechendes Alarmbit im Alarm-Bit-Array 424 setzen. Alarm-Bit-Array 424 kann drei Lese- und Löschregister enthalten, darunter ein Alarm-JTAGEN-Register, ein Alarm-TCK-Register und ein Alarm-ZugriffsschlüsselRegister, wobei jedes Register ein Alarmbit speichert. Das im Alarm-JTAGEN-Register gespeicherte Bit kann von der Logik zur Erkennung des Freigabesignals als Reaktion auf die Erkennung eines unerwarteten Umschaltens des JTAGEN-Signals gesetzt werden. Das im Alarm-TCK-Register gespeicherte Bit kann von der JTAG-Signaldetektionslogik gesetzt werden, wenn unerwartete Impulse auf der TCK-Signalleitung erkannt werden. Das im Alarm-Access-Key-Register gespeicherte Bit kann von der Steuerlogik 400 gesetzt werden. Genauer gesagt, wenn der Komparator 408 feststellt, dass der in das Benutzerschlüsselregister 406 geschriebene Zugriffsschlüssel nicht mit dem im Flash-Speicher 410 gespeicherten Zugriffsschlüssel 414 übereinstimmt, wird das im Alarm-Zugriffsschlüsselregister gespeicherte Bit auf „1“ gesetzt, was anzeigt, dass ein falscher Zugriffsschlüssel erkannt wurde.
-
Das Aktionsbit-Array 426 umfasst eine Reihe von Nur-Lese-Registern, von denen jedes ein Aktionsbit speichert, das anzeigt, ob im Falle eines Eindringens eine entsprechende Aktion ausgeführt werden sollte. Einem Aspekt zufolge kann das Action-Bit-Array 426 ein Action-Warning-Log-Register, ein Action-Peripheral-Off-Register, ein Action-Flash-Lerase-Register und ein Action-Shutdown-Register enthalten. Je nach der Sicherheitsstufe des Systems kann das FPGA so konfiguriert werden, dass eine bestimmte Aktion ausgeführt wird, wenn ein Eindringling erkannt wird. Die Aktion kann typischerweise von der Steuerlogik 400 ausgeführt werden.
-
Wenn beispielsweise die Systemsicherheitsstufe niedrig ist, kann das im Aktions-Warnungs-Protokollregister gespeicherte Bit auf „1“ gesetzt werden, was bedeutet, dass die Steuerlogik 400 das Eindringungsereignis an die CPU meldet. Wenn die CPU das Aktionsregister liest, protokolliert sie das Ereignis und benachrichtigt den Benutzer (z. B. über die Steuerungssoftware). Ist die Systemsicherheitsstufe mittel, kann das im Aktions-Peripherie-Aus-Register gespeicherte Bit auf „1“ gesetzt werden, was bedeutet, dass die Steuerlogik 400 Steuersignale an die Peripheriegeräte senden kann, um diese Geräte auszuschalten. Wenn die Systemsicherheitsstufe hoch ist, kann das im Register „action-flash-erase“ und/oder im Register „action-shutdown“ gespeicherte Bit auf „1“ gesetzt werden, was bedeutet, dass die Steuerlogik 400 Steuersignale an den Flash-Speicher senden kann, um den Inhalt des Flash-Speichers zu löschen und/oder das FPGA auszuschalten. Beachten Sie, dass die letzten beiden Aktionen (d. h. die Aktion zum Löschen des Flash-Speichers und die Aktion zum Abschalten des FPGA) zwar brutal sind, aber die letzte Verteidigung sein können, um das Austreten kritischer Informationen während eines Eindringens zu verhindern.
-
Die Steuerlogik ermöglicht es dem Benutzer, die JTAG-Schnittstelle dynamisch zu sperren/freizugeben. Wenn z. B. eine Fehlersuche erforderlich ist, kann der Benutzer die JTAG-Schnittstelle mit Hilfe einer auf der CPU laufenden Steuersoftware entsperren (z. B. durch Eingabe eines Befehls, der einen Zugriffsschlüssel umfasst). Als Reaktion auf den Benutzerbefehl sendet die CPU den Zugriffsschlüssel an die Steuerlogik, die den vom Benutzer eingegebenen Zugriffsschlüssel mit dem im FPGA-Flash-Speicher gespeicherten Zugriffsschlüssel vergleicht. Wenn der Schlüssel korrekt ist, kann die Steuerlogik ein JTAGEN-Signal an den JTAGEN-Pin ausgeben (z. B. eine logische „0“) und damit die JTAG-Schnittstelle entsperren. Außerdem wird ein Countdown-Timer ausgelöst, um eine begrenzte Zugriffszeit auf die JTAG-Schnittstelle zu ermöglichen. Darüber hinaus kann die Steuersoftware auch die verschiedenen Alarmregister auslesen, um festzustellen, ob ein Eindringling erkannt wurde (z. B. wenn ein Hacker die Kontrolle über das JTAGEN-Signal oder die JTAG-Signalleitungen übernommen hat). Als Reaktion auf das Setzen eines Alarmbits in einem der Alarmregister kann die Steuerungssoftware einen Befehl an die Steuerlogik senden und diese anweisen, ein JTAGEN-Signal auszugeben, um die JTAG-Schnittstelle zu sperren. Beispielsweise kann die Steuersoftware als Reaktion auf die Erkennung eines gesetzten Alarmbits ein Signal an die Steuerlogik senden, um das ungültige Bit umzuschalten und so die JTAG-Schnittstelle effektiv zu sperren. Als Reaktion auf die Erkennung des Alarms/der Alarme kann die Steuerungssoftware auch die Aktionsregister lesen, um zu bestimmen, welche Art von Aktion (z. B. eine Meldeaktion, eine Aktion zum Ausschalten von Peripheriegeräten, eine Aktion zum Löschen des Speichers oder eine FPGA-Abschaltaktion) durchgeführt werden soll.
-
Zusätzlich zu den Funktionsblöcken (z. B. dem Steuerlogikblock und den verschiedenen Erkennungslogikblöcken) innerhalb des FPGA-Chips sollte auch die Leiterplatte so gestaltet sein, dass sie weitere Sicherheitsverbesserungen bietet. Obwohl beispielsweise die JTAG-Schnittstelle über den JTAGEN-Pin per Software gesperrt werden kann, kann das System dennoch kompromittiert werden, wenn der Eindringling physischen Zugang zu der Leiterplatte hat, auf der der FPGA-Chip montiert ist. Durch die Aufnahme von Sicherheitsmerkmalen in die Leiterplatte kann das System auch dann geschützt werden, wenn der Eindringling physischen Zugriff auf die Leiterplatte hat. Einem Aspekt zufolge kann die Leiterplatte so gestaltet werden, dass ein Eindringling nicht in die Erkennungslogik eingreifen kann. Zum Beispiel kann man die Verbindung zwischen der Logik zur Erkennung des Freigabesignals und dem JTAGEN-Pin in einer inneren Schicht der Leiterplatte verlegen oder die beiden Pins (z. B. die Pins 132 und 136 in 1) direkt kurzschließen. Auf diese Weise erfährt der Eindringling nichts von der Überwachung des JTAGEN-Signals. Wenn der Eindringling versucht, die JTAG-Schnittstelle zu entsperren, indem er den logischen Wert des JTAGEN-Stifts auf „1“ setzt, kann die Logik zur Erkennung des Freigabesignals eine solche unbefugte Änderung erkennen und einen Alarm erzeugen, der die Steuerlogik veranlasst, ein Steuersignal zum Sperren der JTAG-Schnittstelle zu senden (z. B. durch Umkehrung des Leerbits).
-
5 zeigt eine schematische Darstellung der Leiterbahnen auf der Leiterplatte gemäß einem Aspekt der Anwendung. Die Leiterplatte 500 kann einen FPGA 502 enthalten, der eine Reihe von E/A-Pins zum Anschluss an verschiedene interne Funktionsblöcke aufweist. In 5 kann FPGA 502 einen JTAGEN-Stift 504, einen JTAGEN-Steuerungsstift 506 und einen JTAGEN-Erkennungsstift 508 enthalten. Der JTAGEN-Stift 504 kann dem in 1 gezeigten JTAGEN-Stift 132 ähneln und ist mit der JTAG-Schnittstelle gekoppelt; der JTAGEN-Steuerungsstift 506 kann dem in 1 gezeigten E/A-Stift 134 ähneln und ist mit der Steuerlogik gekoppelt; und der JTAGEN-Erkennungsstift 508 kann dem in 1 gezeigten E/A-Stift 136 ähneln und ist mit der Freigabesignal-Erkennungslogik gekoppelt. Zur Vereinfachung der Darstellung sind die JTAG-Schnittstelle, die Steuerlogik und die Logik zur Erkennung von Freigabesignalen in 5 nicht dargestellt.
-
5 zeigt eine Leiterbahn 510 außerhalb des FPGA 502, die den JTAGEN-Pin 504 und den JTAGEN-Steuerungspin 506 verbindet. Insbesondere kann sich die Leiterbahn 510 auf der obersten Schicht der PCB 500 befinden und einen abnehmbaren Widerstand 512 enthalten. In einem Beispiel kann der abtrennbare Widerstand 512 ein 0-Ohm-Widerstand sein. Während der Entwicklungsphase des FPGA 502 kann der abnehmbare Widerstand 512 entfernt werden, was dazu führt, dass die Leiterbahn 510 offen ist. In einer solchen Situation steuert die interne Steuerlogik das JTAGEN-Signal nicht mehr. Wenn das Produkt bereit ist, an den Kunden ausgeliefert zu werden, kann der abnehmbare Widerstand 512 angelötet werden, so dass die interne Steuerlogik die Kontrolle über das JTAGEN-Signal erhält.
-
5 zeigt auch eine Leiterbahn 514 außerhalb des FPGA 502, die den JTAGEN-Pin 504 und den JTAGEN-Erkennungspin 508 verbindet. Insbesondere ist die Leiterbahn 514 mit einer gestrichelten Linie dargestellt, um anzuzeigen, dass sich diese Leiterbahn in der inneren Schicht der Leiterplatte 500 befindet, so dass sie für einen Eindringling „verborgen“ ist. Wie bereits erwähnt, kann dies den Eindringling daran hindern, diesen Signalpfad zu manipulieren, um die Erkennung des Eindringlings zu verhindern.
-
6 zeigt ein Flussdiagramm zur Veranschaulichung eines Verfahrens zum Freischalten der JTAG-Schnittstelle eines FPGAs gemäß einem Aspekt der Anmeldung. In diesem Beispiel ist das FPGA Teil eines Switches und kann als Controller für verschiedene Funktionen des Switches verwendet werden. Im offiziellen FPGA-Image ist das Zugriffsschutz-Bit auf den Standardwert „1“ und das Zugriffsschlüssel-Gültig-Bit auf den Standardwert „0“ gesetzt. Wenn das FPGA mit dem offiziellen Image konfiguriert wird, befindet es sich daher immer im gesperrten Zustand.
-
Beim Kunden kann ein Benutzer während der Laufzeit einen Befehl in eine Benutzeroberfläche einer Steuerungsanwendung eingeben, die das FPGA steuert (Vorgang 602). Die Steuerungsanwendung kann in der Switch-CPU oder in einem separaten Computer laufen, der mit der Switch-CPU kommuniziert. Gemäß einem Aspekt kann die Eingabe des Benutzerbefehls die Eingabe eines Zugriffsschlüssels beinhalten. Der Zugriffsschlüssel kann an die Steuerlogik im FPGA gesendet werden (Vorgang 604). Die Steuerlogik kann den vom Benutzer eingegebenen Schlüssel mit dem im FPGA-Speicher (z. B. einem Flash-Speicher) gespeicherten Zugriffsschlüssel vergleichen (Vorgang 606) und feststellen, ob der vom Benutzer eingegebene Schlüssel mit dem gespeicherten Schlüssel übereinstimmt (Vorgang 608).
-
Wenn der vom Benutzer eingegebene Schlüssel mit dem gespeicherten Schlüssel übereinstimmt, sendet die Steuerlogik ein Entsperrsignal an die JTAG-Schnittstelle (z. B. durch Senden einer logischen „1“ an den JTAGEN-Pin), um die JTAG-Schnittstelle zu entsperren (Vorgang 610) und startet einen Zeitgeber (Vorgang 612). Wenn der vom Benutzer eingegebene Schlüssel nicht mit dem gespeicherten Schlüssel übereinstimmt, sendet die Steuerlogik ein Sperrsignal an die JTAG-Schnittstelle (z. B. durch Senden einer logischen „0“ an den JTAGEN-Pin), was dazu führt, dass die JTAG-Schnittstelle gesperrt bleibt (Vorgang 614). Die Steuerlogik überwacht auch den Timer (Vorgang 616), und sobald der Timer abläuft, sendet die Steuerlogik ein Sperrsignal an die JTAG-Schnittstelle (z. B. durch Senden einer logischen „0“ an den JTAGEN-Pin), um die zuvor entsperrte JTAG-Schnittstelle zu sperren (Vorgang 614).
-
7 zeigt ein Flussdiagramm, das ein Verfahren zur Erkennung eines Eindringens in die JTAG-Schnittstelle gemäß einem Aspekt der Anwendung veranschaulicht.
-
Während des Betriebs kann eine Steueranwendung, die das FPGA steuert, über die CPU-Schnittstelle des FPGA die Werte einer Reihe von Alarmregistern lesen (Vorgang 702). Die Steueranwendung kann in der Switch-CPU oder in einem separaten Computer laufen, der mit der Switch-CPU kommuniziert. Gemäß einem Aspekt kann die Steuerungsanwendung im Hintergrund laufen. Die Steueranwendung kann feststellen, ob das JTAGEN-Alarmbit gesetzt ist (d. h., ob eine Störung auf der JTAGEN-Signalleitung auftritt) (Vorgang 704). Ein unerwarteter Übergang von „1“ auf „0“ auf der JTAGEN-Signalleitung bedeutet in der Regel, dass eine Störung vorliegt. Wenn das JTAGEN-Alarmbit nicht gesetzt ist, kann die Steuerungsanwendung feststellen, ob das einer JTAG-Signalleitung (z. B. der TCK-Leitung) entsprechende Alarmbit gesetzt ist (Vorgang 706). Ein unerwarteter Impuls, der auf der TCK-Leitung oder einer anderen JTAG-Signalleitung erkannt wird, kann ebenfalls auf ein Eindringen hindeuten. Wenn das JTAG-Signalalarmbit nicht gesetzt ist, kann die Steuerungsanwendung feststellen, ob das Falsche-Schlüssel-Alarmbit gesetzt ist (Vorgang 708). Dies kann darauf zurückzuführen sein, dass ein Benutzer einen falschen Zugangsschlüssel eingegeben hat. Ist kein Alarmbit gesetzt, fährt die Steueranwendung fort, die Alarmregister zu lesen (Vorgang 702).
-
Wenn eines der Alarmbits gesetzt ist, kann die Steueranwendung ein Signal an die FPGA-Steuerlogik senden, die daraufhin ein Steuersignal zum Sperren der JTAG-Schnittstelle sendet (Vorgang 710). Die Steueranwendung liest außerdem die Aktionsregister aus (Vorgang 712). Wenn das Register action-warning-log gesetzt ist, protokolliert die Steueranwendung das erkannte Eindringlingsereignis (z. B. durch Aufzeichnung der Art des Alarms, der Uhrzeit usw.) und sendet eine Benachrichtigung an den Benutzer (Vorgang 714). Ist das Register Aktion-Peripherie-Aus gesetzt, sendet die Steueranwendung ein Steuersignal an die FPGA-Steuerlogik, die wiederum Steuersignale zum Ausschalten der Peripheriegeräte aussendet (Vorgang 716). Ist das Register action-flash-erase gesetzt, kann die Steueranwendung ein Steuersignal an die FPGA-Steuerlogik senden, das diese anweist, den Inhalt des Flash-Speichers innerhalb des FPGA zu löschen (Vorgang 718). Wenn das Aktionsabschaltregister gesetzt ist, kann die Steueranwendung ein Steuersignal an die FPGA-Steuerlogik senden, das die Steuerlogik anweist, das FPGA auszuschalten (Vorgang 720). Beachten Sie, dass ein oder mehrere Aktionsbits gesetzt werden können, was bedeutet, dass eine oder mehrere Aktionen als Reaktion auf ein gesetztes und von der Steueranwendung gelesenes Alarmbit durchgeführt werden können. Beispielsweise kann die Steueranwendung als Reaktion auf das Erkennen eines gesetzten Alarmbits das Ereignis protokollieren und die Steuerlogik anweisen, die Peripheriegeräte abzuschalten. Alternativ kann die Steueranwendung als Reaktion auf das Erkennen eines gesetzten Alarmbits das Ereignis protokollieren und die Steuerlogik anweisen, den Flash-Speicher zu löschen.
-
8 veranschaulicht ein Computersystem, das die Laufzeitsteuerung der JTAG-Schnittstelle eines FPGA-Bausteins gemäß einem Aspekt der Anmeldung erleichtert. Das Computersystem 800 umfasst einen Prozessor 802, einen Speicher 804 und ein Speichergerät 806. Darüber hinaus kann das Computersystem 800 mit peripheren Eingabe-/Ausgabe-Benutzervorrichtungen 810 gekoppelt sein, z. B. mit einer Anzeigevorrichtung 812, einer Tastatur 814 und einer Zeigevorrichtung 816. Das Speichergerät 806 kann ein Betriebssystem 818, ein JTAG-Schnittstellen-Steuerungssystem 820 und Daten 840 speichern. Gemäß einem Aspekt kann das Computersystem 800 Teil des Netzwerk-Switches sein.
-
Das JTAG-Schnittstellen-Steuersystem 820 kann Anweisungen enthalten, die, wenn sie vom Computersystem 800 ausgeführt werden, das Computersystem 800 oder den Prozessor 802 veranlassen können, die in dieser Offenbarung beschriebenen Verfahren und/oder Prozesse durchzuführen. Insbesondere kann das JTAG-Schnittstellen-Steuersystem 820 Anweisungen zur Bereitstellung einer Benutzerschnittstelle enthalten, um einem Benutzer die Eingabe eines Befehls zu ermöglichen (Benutzerschnittstellen-Anweisungen 822), Anweisungen zum Übertragen eines vom Benutzer eingegebenen Zugriffsschlüssels an das FPGA (Zugriffsschlüssel-Übertragungsanweisungen 824), Anweisungen zum Lesen der Alarmregister (Alarmregister-Leseanweisungen 826), Anweisungen zum Übertragen von Steuersignalen zum Sperren und Entsperren der JTAG-Schnittstelle (JTAG-Schnittstellen-Steuersignal-Übertragungsanweisungen 828), Anweisungen zum Lesen der Aktionsregister (Aktionsregister-Leseanweisungen 830) und Anweisungen zum Übertragen von Steuersignalen zum Ausführen verschiedener Aktionen als Reaktion auf die Erkennung eines Eindringens (Aktions-Steuersignal-Übertragungsanweisungen 832). Die Daten 840 können FPGA-Bilddateien 842 enthalten.
-
Im Allgemeinen bietet diese Offenbarung ein System und ein Verfahren zur dynamischen Steuerung der JTAG-Schnittstelle eines programmierbaren Logikbausteins (PLD) während der Laufzeit. In dieser Offenbarung wird in den verschiedenen Beispielen ein FPGA-Chip mit einer JTAG-Schnittstelle verwendet. Die gleiche Lösung kann auch in anderen Geräten verwendet werden, die eine JTAG-Schnittstelle für Entwicklungs-, Test- und Debugging-Zwecke nutzen. Insbesondere kann der PLD so konfiguriert werden, dass er einen internen Steuerlogikblock und mindestens einen internen Erkennungslogikblock enthält. Der Ausgang des Steuerlogikblocks kann über eine externe Leiterbahn mit dem Freigabepin der JTAG-Schnittstelle gekoppelt werden, so dass eine externe Steuereinheit (z. B. eine mit dem PLD kommunizierende CPU) die JTAG-Schnittstelle über den Steuerlogikblock aktivieren/deaktivieren kann. Um die JTAG-Schnittstelle zu aktivieren oder zu entsperren, muss ein Benutzer einen Zugangsschlüssel über die externe Steuereinheit eingeben. Der Zugriffsschlüssel kann mit einem im PLD gespeicherten Schlüssel verglichen werden. Ein übereinstimmender Schlüssel kann die Steuerlogik veranlassen, ein Freigabesignal an den JTAGEN-Pin zu senden, um die JTAG-Schnittstelle zu entsperren/freizugeben, während ein nicht übereinstimmender Schlüssel die Steuerlogik veranlassen kann, einen Alarm zu erzeugen. Zusätzlich zur Steuerung der Freigabe der JTAG-Schnittstelle kann der interne Erkennungslogikblock einen unbefugten Zugriff auf das FPGA über die JTAG-Schnittstelle erkennen. Der interne Erkennungslogikblock kann einen Unterblock zur Erkennung von unerwarteten Übergängen des JTAGEN-Signals und einen Unterblock zur Erkennung von unerwarteten Impulsen auf den JTAG-Signalleitungen enthalten. Sobald ein Eindringen erkannt wird, können Alarme ausgelöst werden, und die Steuerlogik kann so konfiguriert werden, dass sie die JTAG-Schnittstelle sperrt und verschiedene vorher festgelegte Aktionen durchführt. Diese Aktionen werden bei der Konfiguration des PLDs vorkonfiguriert. Je nach den Anforderungen an die Sicherheitsstufe des PLD können die Aktionen von der einfachen Protokollierung und Meldung des Eindringens bis zum Löschen des internen Speichers und/oder Ausschalten des PLD reichen. Die offengelegte Lösung kann mit geringen Änderungen an der Hardware, Firmware und Software zu geringen Kosten implementiert werden. Diese Lösung kann die JTAG-Schnittstelle während der Laufzeit vor unbefugtem Zugriff schützen und die Sicherheit des Systems (z. B. einer Netzwerk-Switching-Plattform), das den PLD als Systemcontroller verwendet, erheblich verbessern.
-
Ein Aspekt der vorliegenden Anmeldung betrifft einen feldprogrammierbaren Gate-Array-Chip (FPGA-Chip), der auf einer gedruckten Schaltung (PCB) montiert ist. Der FPGA-Chip kann eine Joint Test Action Group (JTAG)-Schnittstelle umfassen, die eine Reihe von Eingangs-/Ausgangsstiften (I/O) und einen Aktivierungsstift sowie einen Steuerlogikblock umfasst, der mit dem Aktivierungsstift der JTAG-Schnittstelle verbunden ist. Der Steuerlogikblock kann ein Steuersignal von einer Off-Chip-Steuereinheit empfangen und einen logischen Wert des Freigabepins auf der Grundlage des empfangenen Steuersignals steuern, wodurch es der Off-Chip-Steuereinheit erleichtert wird, die JTAG-Schnittstelle zu sperren oder zu entsperren. Der FPGA-Chip kann ferner einen Erkennungslogikblock enthalten, um einen unbefugten Zugriff auf den FPGA-Chip zu erkennen. Ein Eingang der Erkennungslogik ist mit dem Freigabepin gekoppelt, und eine Leiterbahn, die den Eingang des Erkennungslogikblocks und den Freigabepin koppelt, befindet sich auf einer inneren Schicht der Leiterplatte.
-
In einer Variante dieses Aspekts kann der FPGA-Chip außerdem einen zweiten Erkennungslogikblock enthalten. Ein Eingang des zweiten Erkennungslogikblocks ist mit mindestens einem I/O-Pin der JTAG-Schnittstelle gekoppelt, wodurch die Erkennung eines abnormalen Signals an dem mindestens einen I/O-Pin erleichtert wird.
-
In einer weiteren Variante kann der mindestens eine E/A-Pin einen Testtakt (TCK)-Pin umfassen, und der zweite Erkennungslogikblock kann so konfiguriert sein, dass er als Reaktion auf die Erkennung eines unerwarteten Impulses am TCK-Pin ein Alarmsignal erzeugt.
-
In einer Variante dieses Aspekts kann der Erkennungslogikblock so konfiguriert werden, dass er als Reaktion auf die Erkennung eines unerwarteten Übergangs am Freigabepin ein Alarmsignal erzeugt.
-
In einer Variante dieses Aspekts kann die Off-Chip-Steuereinheit eine Zentraleinheit (CPU) sein, und das Steuersignal kann einen Zugangsschlüssel enthalten.
-
In einer weiteren Variante kann der Steuerlogikblock ferner einen Komparator enthalten, der so konfiguriert ist, dass er den im Steuersignal enthaltenen Zugriffsschlüssel mit einem in einem Speicher innerhalb des FPGA-Chips gespeicherten Zugriffsschlüssel vergleicht, und ein Logikgatter, das so konfiguriert ist, dass es: als Reaktion auf die Feststellung des Komparators, dass der im Steuersignal enthaltene Zugriffsschlüssel mit dem im Speicher gespeicherten Zugriffsschlüssel übereinstimmt, ein Freigabesignal an den Freigabepin auszugeben, um die JTAG-Schnittstelle freizugeben; und als Reaktion auf die Feststellung des Komparators, dass der im Steuersignal enthaltene Zugriffsschlüssel nicht mit dem im Speicher gespeicherten Zugriffsschlüssel übereinstimmt, ein Sperrsignal an den Freigabepin auszugeben, um die JTAG-Schnittstelle zu sperren.
-
In einer weiteren Variante kann die Steuerlogik außerdem einen Zeitgeber enthalten. Der Zeitgeber kann als Reaktion darauf gestartet werden, dass der Komparator feststellt, dass der im Steuersignal enthaltene Zugriffsschlüssel mit dem im Speicher gespeicherten Zugriffsschlüssel übereinstimmt, und das Logikgatter kann so konfiguriert werden, dass es als Reaktion auf den Ablauf des Zeitgebers ein Sperrsignal an den Aktivierungsstift ausgibt, um die JTAG-Schnittstelle zu sperren.
-
In einer Variante dieses Aspekts können ein Ausgang des Steuerlogikblocks und der Freigabepin über eine Leiterbahn gekoppelt werden, die sich auf einer oberen Schicht der Leiterplatte befindet, und die Leiterbahn kann einen abnehmbaren Widerstand enthalten, damit der Steuerlogikblock während der Entwicklung des FPGA-Chips vom FPGA-Chip entkoppelt werden kann.
-
In einer Variante dieses Aspekts kann der Steuerlogikblock so konfiguriert werden, dass er eine oder mehrere Aktionen ausführt, wenn der Erkennungslogikblock einen nicht autorisierten Zugriff auf den FPGA-Chip erkennt.
-
In einer Variante dieses Aspekts können die eine oder mehreren Aktionen Folgendes umfassen: Protokollieren und Melden des unberechtigten Zugriffs, Senden eines Steuersignals zum Abschalten eines oder mehrerer mit dem FPGA-Chip gekoppelter Peripheriegeräte, Löschen eines internen Speichers des FPGA-Chips und Ausschalten des FPGA-Chips.
-
Die im Abschnitt „Detaillierte Beschreibung“ beschriebenen Verfahren und Prozesse können als Code und/oder Daten verkörpert werden, die wie oben beschrieben in einem computerlesbaren Speichermedium gespeichert werden können. Wenn ein Computersystem den auf dem computerlesbaren Speichermedium gespeicherten Code und/oder die Daten liest und ausführt, führt das Computersystem die Verfahren und Prozesse aus, die als Datenstrukturen und Code verkörpert und in dem computerlesbaren Speichermedium gespeichert sind.
-
Darüber hinaus können die oben beschriebenen Verfahren und Prozesse in Hardwaremodule oder -geräte integriert werden. Zu den Hardware-Modulen oder - Vorrichtungen können unter anderem anwendungsspezifische integrierte Schaltungen (ASIC-Chips), feldprogrammierbare Gate-Arrays (FPGAs), dedizierte oder gemeinsam genutzte Prozessoren, die ein bestimmtes Softwaremodul oder ein Stück Code zu einem bestimmten Zeitpunkt ausführen, sowie andere bekannte oder später entwickelte programmierbare Logikvorrichtungen gehören. Wenn die Hardwaremodule oder -geräte aktiviert werden, führen sie die darin enthaltenen Verfahren und Prozesse aus.
-
Die vorstehenden Beschreibungen dienen lediglich der Veranschaulichung und Beschreibung. Sie erheben keinen Anspruch auf Vollständigkeit und beschränken den Umfang dieser Offenbarung nicht auf die offengelegten Formen. Dementsprechend werden viele Modifikationen und Variationen für Fachleute auf dem Gebiet der Technik offensichtlich sein.