-
Stand der Technik
-
Die vorliegende Erfindung betrifft die Verhinderung von Manipulationen an Mikroprozessorsystemen, insbesondere an Motorsteuergeräten für Kraftfahrzeuge.
-
Derartige Geräte sind im Allgemeinen als Mikroprozessorsysteme mit einem Mikroprozessor, Programm- und Arbeitsspeicher für den Mikroprozessor und ein oder mehreren Schnittstellen für die Kommunikation mit Sensoren und Aktoren am Motor aufgebaut. Durch Manipulationen am Steuerprogramm des Prozessors lässt sich das Verhalten des Motors beeinflussen, um so z.B. eine höhere Motorleistung zu erzielen. Leistungsbegrenzungen, die erforderlich sind, um für den Motor oder den Antriebsstrang eventuell schädliche Überlastsituationen zu verhindern, oder die durch gesetzliche Vorgaben bedingt sind, können auf diese Weise umgangen werden. Es besteht daher Bedarf nach Techniken, die unbefugte Manipulationen an derartigen Mikroprozessorsystemen unmöglich machen oder doch zumindest in abschreckender Weise erschweren.
-
Eine zu diesem Zweck bekannte und angewandte Technik ist, Bauelemente eines solchen Mikroprozessorsystems zu verkleben. Allerdings hat sich gezeigt, dass kein Kleber verfügbar ist, der nicht in irgendeiner Weise wieder gelöst werden könnte. Ein schwerwiegender Nachteil des Verklebens ist außerdem, dass dadurch nicht nur unbefugte Manipulation, sondern in gleicher Weise auch Reparaturen an dem Mikroprozessorsystem erschwert werden.
-
Die
US 6,216,186 Bl offenbart ein modulares Computersystem, in welchem zugefügte Komponenten auf Kompatibilität mit dem modularen Computersystem überprüft werden. Diese Überprüfung kann durch eine Kompatibilitätsverifikations-Logik durchgeführt werden, welche von einer speziellen Hardware oder einem programmierbaren Schaltkreis wie z.B. einem ASIC gesteuert werden kann.
-
Aus der
US 6,032,257 ist eine Diebstahlschutz-Vorrichtung bekannt. Dabei werden Hardwareeinheiten eines Systems dadurch geschützt, dass ein digitaler Authentizierungs-Abgleich zwischen dem System und den Hardwareeinheiten durchgeführt wird.
-
Vorteile der Erfindung
-
Durch die vorliegende Erfindung wird ein Mikroprozessorsystem und ein Verfahren zum Schützen eines solchen System vor dem Austausch eines Bausteins geschaffen, die einen unbefugten Austausch ganz erheblich erschweren, ohne die Reparaturfreundlichkeit des Systems zu beeinträchtigen. Die Erschwerung geht so weit, dass in den meisten Fällen der mit der Manipulation erreichbare Nutzen den hierfür erforderlichen Aufwand nicht rechtfertigt und die Manipulation somit im wirtschaftlichen Sinne unmöglich wird.
-
Die Erfindung geht aus von einem Mikroprozessorsystem mit einer Mehrzahl von Bausteinen, darunter einem Mikroprozessor und wenigstens einem Speicherbaustein zum Speichern von Code und Daten für den Mikroprozessor, wobei in wenigstens einem der Bausteine, als austauschgesicherter Baustein bezeichnet, eine Seriennummer dieses Bausteins in nicht veränderbarer Weise gespeichert ist. Bei Mikroprozessoren ist es allgemein üblich, diese bei Herstellung mit einer programmtechnisch abfragbaren Seriennummer auszustatten, die jeden Mikroprozessor eindeutig identifiziert und am fertigen Mikroprozessor nicht veränderbar ist. Nichtflüchtige Speicherbausteine, insbesondere Flash-Speicher, mit Seriennummern sind ebenfalls verfügbar. Die Erfindung sieht vor, dass in dem Mikroprozessorsystem anhand der Seriennummer des wenigstens einen austauschgesicherten Bausteins nach einem vorgegebenen Algorithmus ein Datenwert berechnet und an den Kontrollbaustein übergeben wird. Der Kontrollbaustein vergleicht diesen empfangenen Datenwert mit einem in ihm codierten erwarteten Datenwert. Wenn beide übereinstimmen, so ist die Seriennummer des austauschgesicherten Bausteins korrekt, und das Mikroprozessorsystem darf in seinen normalen Betrieb übergehen. Stimmen die beiden Datenwerte nicht überein, so bedeutet dies, dass der austauschgesicherte Baustein unbefugt ausgetauscht worden ist und die Funktion des Mikroprozessorsystems muss wenigstens teilweise gesperrt werden, um auszuschließen, dass aufgrund des Austauschs Prozesse fehlerhaft ablaufen, die z.B. zu Schäden an einer von dem Mikroprozessorsystem gesteuerten Vorrichtung, insbesondere einem Kraftfahrzeugmotor, führen können.
-
Vorzugsweise ist der Kontrollbaustein seinerseits ebenfalls durch eine Seriennummer gekennzeichnet, und der erwartete Datenwert ist mit dieser Seriennummer identisch, das heißt, der Algorithmus zum Berechnen dieses Datenwerts ist spezifisch anhand der Seriennummern des wenigstens einen austauschgesicherten Bausteins und des Kontrollbausteins so festgelegt, dass er die Seriennummer des Kontrollbausteins zum Ergebnis hat.
-
Als austauschgesicherter Baustein kommt zweckmäßigerweise ein nichtflüchtiger Speicherbaustein in Betracht, in dem z.B. von dem Mikroprozessor auszuführender Programmcode oder Parametersätze gespeichert sind, auf die der Mikroprozessor zur Ausführung seiner Aufgaben zugreift.
-
Insbesondere zum Speichern derartiger Parametersätze werden in modernen Mikroprozessorsystemen häufig so genannte Flash-Speicher eingesetzt. Diese elektrisch überschreibbaren Speicher können dann erfindungsgemäß sinnvoll gegen Austausch gesichert werden, wenn der Schreibzugriff auf sie durch ein Passwort geschützt ist.
-
Eine Austauschsicherung kann auch beim Mikroprozessor des Systems selbst sinnvoll sein, besonders dann, wenn er zusammen mit einem Programmspeicher Teil eines Ein-Chip-Mikrocomputers ist.
-
Der Kontrollbaustein kann eingerichtet sein, um den Mikroprozessor zu veranlassen, die Seriennummer jedes austauschgesicherten Bausteins abzufragen, daraus den festgelegten Datenwert zu berechnen und diesen an den Kontrollbaustein zu übertragen. Dadurch wird es für einen Unbefugten schwierig, durch Änderungen am Steuerprogramm des Mikroprozessors die Überprüfung der Seriennummern austauschgesicherter Bausteine zu unterbinden.
-
Unbefugte Änderungen am Steuerprogramm werden auch dadurch wirksam erschwert, dass Information, die der Mikroprozessor zum Berechnen des festgelegten Datenwerts benötigt, wenigstens zum Teil in dem mit dem Mikroprozessor integrierten Programmspeicher abgelegt ist und dadurch für einen Unbefugten erheblich schwerer zugänglich ist als Informationen, die etwa in einem externen Speicherbaustein gespeichert ist.
-
Vorzugsweise umfasst die Information im Rahmen eines Bootprozesses auszuführende Programmanweisungen, das heißt Programmanweisungen, die bei jedem Start des Mikroprozessorsystems automatisch ausgeführt werden.
-
Eine weitere mögliche Sicherungsmaßnahme ist, den Kontrollbaustein so einzurichten, dass er die Funktion des Mikroprozessorsystems auch dann wenigstens teilweise sperrt, wenn der festgelegte Datenwert während eines vorgegebenen Zeitintervalls nicht empfangen wird. Das heißt, auch wenn es einem Unbefugten gelingt, durch Änderungen des Programms des Mikroprozessors zu verhindern, dass dieser einen Datenwert an den Kontrollbaustein übergibt, anhand dessen letzterer einen Austausch eines gesicherten Bausteins erkennen könnte, wird der normale Betrieb des Mikroprozessorsystems dennoch unterbunden.
-
Weitere Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung von Ausführungsbeispielen unter Bezugnahme auf die beigefügten Figuren.
-
Es zeigen:
- 1 ein Blockdiagramm einer ersten Ausgestaltung eines erfindungsgemäßen Mikroprozessorsystems;
- 2 ein Flussdiagramm eines Betriebsablaufs in dem Mikroprozessorsystem der 1;
- 3 ein Blockdiagramm einer zweiten Ausgestaltung des erfindungsgemäßen Mikroprozessorsystems; und
- 4 ein Flussdiagramm eines Prozessablaufs in dem System aus 3.
-
Beschreibung der Ausführungsbeispiele
-
1 zeigt ein Blockdiagramm eines Motorsteuergeräts, das als Beispiel für ein erfindungsgemäßes Mikroprozessorsystem dienen soll. An einen Bus 1 auf einer gedruckten Leiterplatte sind angeschlossen ein Ein-Chip-Mikrocomputer 2, ein oder mehrere jeweils durch eine individuelle Seriennummer gekennzeichnete Speicherbausteine, wobei in der Figur der Einfachheit halber nur ein Flash-Speicher 3 gezeigt ist, ein Kontrollbaustein 4, der z.B. als A-SIC implementiert sein kann, ein Schreib-Lese-Speicherbaustein 5 sowie eine Schnittstelle 6 für die Kommunikation mit (nicht dargestellten) Sensoren und Aktoren des zu steuernden Motors. Die Bausteine 2, 3, 4, 5 sind jeweils durch voneinander getrennte ICs gebildet. In dem Chip des Mikrocomputers 2 sind ein Mikroprozessor 10 und ein Festwert-Programmspeicher 11 integriert. Vorzugsweise ist ein interner Bus 12, über den der Mikroprozessor 10 und der Programmspeicher 11 kommunizieren, nicht aus dem Chip 2 herausgeführt, so dass die Inhalte des Programmspeichers 11 nicht von einem Unbefugten außerhalb des Mikrocomputerchips abgegriffen werden können. Der Programmspeicher 11 enthält insbesondere Programmbefehle für einen Boot-Prozess des Steuergeräts.
-
Der Flash-Speicher 3 verfügt über einen in herkömmlicher Weise adressierbaren Hauptspeicherbereich 7, der vom Hersteller des Motorsteuergeräts mit Programminstruktionen und Parameterfeldern für den Mikroprozessor 10 beschrieben ist, und dessen Anweisungen nach erfolgreicher Durchführung des Boot-Prozesses abgearbeitet werden. Dieser Hauptspeicherbereich 7 ist in herkömmlicher Weise zum Lesen über den Bus 1 adressierbar. Ferner verfügt der Flash-Speicher über eine Hilfsspeicherzelle 8, die bereits vom Hersteller des Flash-Speichers 3 selbst mit einer für jeden einzelnen Speicher eines gegebenen Typs spezifischen Seriennummer beschrieben ist. Auch der Inhalt der Hilfsspeicherzelle 7 ist über den Bus 1 lesbar, doch ist vorzugsweise das Format der zum Auslesen der Hilfsspeicherzelle 7 erforderlichen Adresssignale ein anderes als zum Adressieren des Hauptspeicherbereichs 7. So kann z.B. zum Auslesen der Hilfsspeicherzelle 8 erforderlich sein, dass zuvor über den Bus 1 ein Kennwort an den Flash-Speicher 3 angelegt wird. Dadurch ist die Möglichkeit ausgeschlossen, den Flash-Speicher 3 durch einen pin-kompatiblen, ab Hersteller seriennummerlosen Speicherbaustein zu ersetzen, bei dem lediglich die Seriennummer des Flash-Speichers 3 in eine normal adressierbare Speicherstelle kopiert worden ist. Der Flash-Speicher 3 kann daher nur durch einen Baustein gleichen Typs, aber mit abweichender Seriennummer ersetzt werden.
-
Die Arbeitsweise des Mikroprozessorsystems wird anhand des Flussdiagramms der 2 erläutert. Jedes Mal bei Inbetriebnahme führt der Mikroprozessor 10 einen Boot-Prozess aus. Dieser Boot-Prozess dient z.B. der Initialisierung der Schnittstelle 6 sowie ggf. der daran angeschlossenen Sensoren und Aktoren, und er dient zur Überprüfung, ob Manipulationen an dem Mikroprozessorsystem vorgenommen worden sind, während es ausgeschaltet war. Programmbefehle, die diesem letzteren Zweck dienen, sind in dem Programmspeicher 11 gespeichert und werden zu Beginn des Boot-Prozesses, vor einem erstmaligen Zugriff auf außerhalb des Ein-Chip-Mikrocomputers 2 gespeicherte Programmbefehle, durchgeführt.
-
Zur Prüfung, ob eine unbefugte Manipulation stattgefunden hat, liest der Mikroprozessor 10 in Schritt S1 von 2 die Seriennummer aller austauschgesicherten Bausteine, in diesem Beispiel die des Flash-Speichers 3, sowie die z.B. im Programmspeicher 11 gespeicherte eigene Seriennummer des Ein-Chip-Mikrocomputers 2. Die gelesenen Seriennummern verknüpft er in Schritt S2 durch vorgegebene, ebenfalls im Programmspeicher 11 gespeicherte Rechenschritte. Diese Rechenschritte sind so festgelegt, dass sie (wenn die gelesenen Seriennummern korrekt sind,) eine im Kontrollbaustein 4 gespeicherte Codenummer als Ergebnis haben.
-
Die bei der Verknüpfung auszuführenden Programmbefehle sind im Programmspeicher 11 gespeichert und für alle Mikroprozessorsysteme einer Fertigungsserie einheitlich. Die Übereinstimmung zwischen dem Ergebnis der Verknüpfung und der Codenummer wird im einfachsten Fall dadurch erzielt, dass während der Montage des Geräts die Seriennummern der montierten austauschzusichernden Bausteine gelesen, das Ergebnis der Verknüpfung berechnet und als Codenummer in den Kontrollbaustein eingetragen wird.
-
Codenummer kann jedoch auch ein willkürlich gewählter, bereits vor der Montage im Kontrollbaustein 4 gespeicherter Datenwert, z.B. eine Seriennummer des Kontrollbausteins 4, sein. Um in diesem Fall die Übereinstimmung des Verknüpfungsergebnisses mit der Codenummer zu gewährleisten, muss in die Verknüpfung wenigstens ein willkürlich wählbarer Parameter eingehen, der das gewünschte Ergebnis der Verknüpfung garantiert. Der Wert eines solchen Parameters wird bei der Montage des Geräts anhand der Seriennummern der betroffenen Bausteine festgelegt und in einen Speicher, vorzugsweise den Flash-Speicher 3, eingetragen.
-
Im einfachsten Fall könnte die Verknüpfung darin bestehen, dass die Seriennummern der austauschgesicherten Bausteine und der Parameter addiert werden, wobei der Parameter so gewählt ist, dass als Ergebnis der Addition die Codenummer herauskommt. Selbstverständlich sind beliebige andere, kompliziertere Verknüpfungen, die auch mehrere Parameter verwenden können, vorstellbar.
-
In Schritt S3 wird das Ergebnis der Verknüpfung an den Kontrollbaustein gesendet. Dieser beurteilt in Schritt S4, ob der empfangene Wert mit der Codenummer übereinstimmt. Wenn ja, fährt der Mikroprozessor in Schritt S6 mit der Abarbeitung seines Steuerprogramms fort und geht schließlich in den Normalbetrieb über; anderenfalls sendet der Kontrollbaustein 4 ein Reset-Signal an den Mikroprozessor 10, mit der Folge, dass dieser in einer Endlosschleife der Schritte S1 bis S3 gefangen bleibt und den Normalbetrieb niemals erreicht.
-
Die in 3 gezeigte zweite Ausgestaltung des Mikroprozessorsystems unterscheidet sich von der der 1 im wesentlichen dadurch, dass der Mikroprozessor 10 und der Programmspeicher 11 auf zwei getrennten Chips implementiert sind. Der Programmspeicher 11 ist wie der Flash-Speicher 3 durch eine durch den Speicherhersteller individuell vorgegebene Seriennummer austauschgeschützt. Der Mikroprozessor 10 kann hier eine eigene Seriennummer aufweisen und ebenfalls austauschgeschützt sein, doch ist dies von untergeordneter Bedeutung, da ein Austausch des Mikroprozessors 10 gegen einen typgleichen anderen die Funktion des Mikroprozessorsystems nicht beeinflusst.
-
Der Programmspeicher 11 und der Mikroprozessor 10 kommunizieren hier über den gemeinsamen Bus 1, so dass ein Auslesen des Programmcodes des Speichers 11 durch einen Unbefugten nicht ausgeschlossen ist.
-
Die Funktionsweise dieser Ausgestaltung wird anhand des Flussdiagramms von 4 beschrieben. Bei Inbetriebnahme des Systems erzeugt der Kontrollbaustein 4 in Schritt S11 einen Reset-Impuls für den Mikroprozessor 10. Anschließend wird in Schritt S12 ein interner Zeitgeber des Kontrollbausteins 4 in Gang gesetzt. Zeitgleich beginnt der Mikroprozessor 10, eine Reset-Routine auszuführen, deren Programmbefehle im Programmspeicher 11 gespeichert sind. Die Reset-Routine umfasst in Schritt S21 das Lesen der Seriennummern der austauschgesicherten Bausteine, in Schritt S22 das Verknüpfen in gleicher Weise wie oben mit Bezug auf Schritt S2 beschrieben, und das Senden des Ergebnisses an den Kontrollbaustein 4 in Schritt S23.
-
Während der Mikroprozessor 10 die Reset-Routine durchführt, prüft der Kontrollbaustein, ob ein Signal des Zeitgebers vorliegt, das das Verstreichen einer vorgegebenen Zeitspanne seit seinem Ingangsetzen anzeigt (S13). Diese Zeitspanne ist länger als die Zeit, die der Mikroprozessor für die Schritte S21 bis S23 benötigt. Solange die Zeitspanne nicht abgelaufen ist, prüft der Kontrollbaustein 4 in Schritt S14, ob das Ergebnis der Verknüpfung vom Mikroprozessor eingetroffen ist. Wenn nicht, wartet er weiter, ggf. solange, bis die vorgegebene Zeitspanne verstrichen ist. Nach Ablauf der Zeitspanne kehrt er zu Schritt 11 zurück und sendet erneut einen Reset-Impuls an den Mikroprozessor.
-
Trifft das Verknüpfungsergebnis rechtzeitig ein, so wird es in Schritt S15 mit der Codenummer des Kontrollbausteins verglichen. Bei Übereinstimmung unternimmt der Kontrollbaustein 4 nichts weiter, und der Mikroprozessor geht in Normalbetrieb S24 über. Bei Nichtübereinstimmung kehrt der Kontrollbaustein 4 wiederum zu Schritt S11 zurück und sendet einen Reset-Impuls. Auf diese Weise bleibt der Mikroprozessor 10 nicht nur dann in einer Endlosschleife der Schritte S21 bis S23 gefangen, wenn der Kontrollbaustein 4 aufgrund des Austauschs eines austauschgesicherten Bausteins ein falsches Verknüpfungsergebnis empfängt, sondern auch dann, wenn eine Manipulation oder der Austausch eines Bausteins dazu geführt hat, dass der Mikroprozessor 10 beim Start die Schritte S21 bis S23 nicht mehr ausführen kann.