Beschreibung
Verfahren zur Absicherung von Nutzdaten eines Speichers und elektronisches Rechensystem
Die vorliegende Erfindung betrifft ein Verfahren zur Absicherung von Nutzdaten eines Speichers gemäß Oberbegriff von Anspruch 1 sowie ein elektronisches Rechensystem gemäß Oberbegriff von Anspruch 5. Für sicherheitsrelevante Steuergeräte in Kraftfahrzeugen müssen
Mikroprozessoren sowie deren Schnittstellenmodule als auch extern angebundene funktionelle Baugruppen, wie z.B. Bustreiber, Speicher, AD-Wandler usw. entweder strukturell sicher ausgelegt sein, d.h. redundant vorhanden (= spatial) , oder zur Laufzeit wiederholt geprüft (= temporal) werden, um Anforderungen an sicherheitsre¬ levante elektronische Systeme in Kraftfahrzeugen zu erfüllen (z.B. ISO 26262). Problematisch ist hierbei insbesondere die Absicherung von Speicherbausteinen, wie z.B. DRAMs. Spatiale Redundanz ist dabei ein wesentlicher Kostentreiber, da sich die Chipfläche bei voll- ständiger Redundanz verdoppelt, was besonders für große Datensätze unwirtschaftlich ist. Temporale Prüfung kann für moderne Kraftfahrzeugsysteme zu ausgedehnte Zeitressourcen erfordern, wobei die tolerierbare Zeit zwischen Eintreten und Entdecken eines Fehlers (FTTI) für sicherheitsrelevante Rechensysteme zu groß ist. Bei DRAMs wird häufig ein Kompromiss angewendet. Anstatt Speicherelemente redundant vorzuhalten, werden mittels ECC/EDC-Einheiten („Error Correcting Code" und „Error Detecting Code") zusätzlich zu den Nutzdaten noch Prüfdaten (ECC / CRC) in reguläre Speicherelemente gespeichert, welche beim Speichern automatisch erzeugt und beim Lesen automatisch verglichen werden. Diese Prüfdaten werden für einen definierten Speicherbereich erzeugt, sodass nicht der gesamte Speicherbereich mehrfach vorgehalten werden braucht und nur sicherheitskritische Bereiche mit Prüfdaten angereichert werden. Diese Prüfdaten umfassen etwa 25 bis 100% des abzusichernden
Speichers, abhängig von der Größe des zu schreibenden Nutzdatums; bzw. etwa 12,5 bis 20% sofern zusätzlich zu den Nutzdaten noch die korrespondierenden Adressinformation berücksichtigt werden. Ein solches System ist beispielsweise in der DE 19529434 B4 beschrieben.
Die Gewichtung der Addressinformation innerhalb dieses abgesicherten Speicherbereichs fällt zugunsten einer höheren Fehlerkorrekturleistung der Nutzdaten geringer aus. Dies wird dadurch erreicht, dass die jeweiligen Addressbits mit unterschiedlicher Gewichtung in die Prüfdatenberechnung einfließen, wobei dabei die oberen Addressbits üblicherweise weniger stark berücksichtigt werden. Das Fehlererkennungs- und Korrekturvermögen der Prüfcodes gegenüber den Nutzdaten ist somit umgekehrt proportional zur Größe des abgesicherten Speicherbereichs. Das Fehlererkennungs- bzw. Fehlerkorrekturvermögen nimmt mit größer werdenden zu sichernden Speicherbereichen somit ab. Diese Gewichtung ist mittels Hardware implementiert (hart-verdrahtet ) und legt die Grundlagen der ma¬ thematischen Berechnung der Prüfcodes fest. Für moderne Anwendungen in Kraftfahrzeugen kann der definierte Speicherbereich zu klein ausgelegt sein, zum Beispiel, wenn mit bekannten Systemen lediglich 8 MByte abgesichert nutzbar wären, jedoch 256 MByte benötigt werden. Somit erfüllt die Speicherung von Programmdaten bzw. von Nutzdaten entweder nicht eine geforderte Sicherheit oder der abgesicherte Speicherbereich für diese ist sehr limitiert.
Aufgabe der Erfindung ist es, ein Mittel zur Absicherung von Daten eines Speichers bereitzustellen, welches ein verbessertes Ver¬ hältnis des Fehlererkennungs- und/oder Fehlerkorrekturvermögens zu einem dafür vorzusehenden Speicherbedarf für Prüfdaten ermöglicht und dabei möglichst preiswert realisiert werden kann.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 und ein elektronisches Rechensystem gemäß Anspruch 5 gelöst.
Die Erfindung beschreibt ein Verfahren zur Absicherung von Nutzdaten eines Schreib-Lese-Speichers eines elektronischen Rechensystems in einem Kraftfahrzeug, wobei wenigstens ein Absicherungsbereich zur Absicherung der Nutzdaten eines Speicherbereichs des
Schreib-Lese-Speichers mittels Prüfdaten zur Laufzeit des elekt¬ ronischen Rechensystems festgelegt oder aufgehoben oder in der Weise vorgegeben wird, dass dessen Ausdehnung und/oder Position bezogen auf einen durch den Schreib-Lese-Speicher umfassten gesamten Speicherbereich geändert wird.
Somit ist es in vorteilhafterweise möglich während des laufenden Betriebs eines zugrundeliegenden elektronischen Rechensystems bzw. während der Ausführung eines Programms abzusichernde Speicherbe¬ reiche auszuwählen, wodurch die Konfigurierbarkeit erheblich verbessert wird. Unter einem laufenden Betrieb des elektronischen Rechensystems ist dabei insbesondere ein Aktiv-Zustand zu verstehen, in welchem dieses Rechenoperationen ausführt. Die Einschränkungen des Standes der Technik werden mit der vorliegenden Erfindung in vorteilhafter Weise überwunden und die oben genannte Aufgabe gelöst. Es wird somit ein verbessertes Verhältnis des Fehlererkennungs¬ und/oder Fehlerkorrekturvermögens zu einem dafür vorzusehenden Speicherbedarf für Prüfdaten ermöglicht und kann dabei beispielsweise im Vergleich zu redundanten Speicherlösungen preiswerter realisiert werden. Auch die Prüfdaten können zusätzlich abgesichert sein.
Eine Absicherung des oder der Speicherbereiche unter Verwendung von Prüfdaten erfolgt bevorzugt mittels hardware- und/oder software¬ implementierter Fehlererkennungs- und/oder Fehlerkorrekturverfahren, wie z.B. ECC oder EDC, durch welche eine Prüfung und/oder Korrektur der in den Schreib-Lese-Speicher vorhandenen Nutzdaten erfolgen kann. Die Erzeugung der Prüfdaten erfolgt dabei insbesondere beim Schreiben in den Schreib-Lese-Speicher, während eine Prüfung und ggf. Korrektur beim Auslesen der Nutzdaten erfolgt. Als
Schreib-Lese-Speicher können verschiedenste Ausführungsformen von Datenspeichern für elektronische Systeme verwendet werden, wie zum Beispiel Halbleiterspeicher oder Magnetspeicher.
Gemäß einer bevorzugten Ausführungsform ist eine Zuordnung zwischen einem von dem elektronischen Rechensystem ausgeführten Programmmodul und/oder Speicherbereich eines Programmcodes und dem mittels des Absicherungsbereichs festgelegten abzusichernden Speicherbe- reich vorgesehen. Insbesondere wird der Speicherbereich des Programmcodes mittels des zugrundeliegenden virtuellen oder physischen Speichers vorgegeben. Welches Programmmodul zu jeweiligen Zeitpunkt ausgeführt wird, wird dabei bevorzugt mittels der Speicheradressen des zugrundeliegenden Speicherbereichs eines Programmcodes erfasst.
Entsprechend einer weiteren bevorzugten Ausführungsform der Erfindung sind bei Vorliegen mehrerer Absicherungsbereiche im
Speicherbereich des Schreib-Lese-Speichers , diese Absicherungs¬ bereiche voneinander unabhängig konfigurierbar. Damit wird eine vorteilhafte Erhöhung der Fokussierung insbesondere lediglich auf sicherheitskritische Daten erzielt und die Konfigurierbarkeit der Datenabsicherung verbessert.
In Folge einer Änderung eines Absicherungsbereichs von einem ersten Speicherbereich auf einen zweiten Speicherbereich des
Schreib-Lese-Speichers bzw. Entfernen eines ersten Absicherungs¬ bereichs eines ersten Speicherbereichs und Erzeugen eines neuen Absicherungsbereichs für einen zweiten Speicherbereich, kann bevorzugt kein Speicherzugriff auf den ersten Speicherbereich er- folgen. Dies ist insbesondere vorteilhaft, um die Safety- und/oder Security-relevanten Daten zu partitionieren und zu verhindern, dass jeweils betroffene Software-Module auf einen Speicherbereich zu¬ greifen können, welcher diesen nicht zugeordnet ist bzw. diese aus
anderen Gründen, wie z.B. ein niedrigeres Sicherheitslevel, nicht auf den Speicherbereich zugreifen dürfen.
Die Erfindung beschreibt weiterhin ein elektronisches Rechensystem für ein Kraftfahrzeug, umfassend zumindest eine zentrale Rechen¬ einheit, einen Schreib-Lese-Speicher und eine Speicherabsiche¬ rungseinheit zur Absicherung von Nutzdaten wenigstens eines
Speicherbereichs des Schreib-Lese-Speichers mittels Prüfdaten, wobei die Speicherabsicherungseinheit ausgestaltet ist, wenigstens einen Absicherungsbereich zur Absicherung eines Speicherbereichs des Schreib-Lese-Speichers zur Laufzeit des elektronischen Re¬ chensystems festzulegen, aufzuheben oder in der Weise vorzugeben, dass dessen Ausdehnung und/oder Position bezogen auf einen durch den Schreib-Lese-Speicher umfassten gesamten Speicherbereich geändert wird.
Für das erfindungsgemäße elektronische Rechensystem gelten im Wesentlichen die gleichen Vorteile, wie sie bereits für das er¬ findungsgemäße Verfahren beschrieben wurden.
Bevorzugt ist ein Zuordnungsmittel zur Zuordnung zwischen einem von dem elektronischen Rechensystem ausgeführten Programmmodul und/oder Speicherbereich eines Programmcodes und dem mittels des Absiche¬ rungsbereichs festgelegten abzusichernden Speicherbereich vorge- sehen.
Das elektronische Rechensystem ist bevorzugt zur Ausführung des erfindungsgemäßen Verfahrens ausgestaltet.
Besonders bevorzugt findet die Erfindung Verwendung in oder in Verbindung mit einem oder mehreren - insbesondere schnell getakteten - digitalen Signalprozessoren, FPGAs („Field Programmable Gate Array") oder RISC/CISC-CPUs .
Weitere bevorzugte Ausführungsformen ergeben sich aus der nachfolgenden Beschreibung eines Ausführungsbeispiels an Hand von Figur 1.
In schematischer Darstellung zeigt:
Fig. 1 ein elektronisches Rechensystem zur Erläuterung der
erfindungsgemäßen Absicherung von Daten eines Speichers.
Die Fig. 1 zeigt eine schematische Darstellung eines elektronischen Rechensystems 4, z.B. eines Mikroprozessorsystems, zur Erläuterung der Erfindung. Gemäß diesem Ausführungsbeispiel ist Speicher 3 der zentralen Recheneinheit (CPU) 1 zugeordnet, wobei Nutzdaten ND in Speicher 3 mittels Prüfdaten PD durch Speicherabsicherungseinheit 2 abgesichert werden. Bei Speicher 3 handelt es sich beispielsgemäß um einen Halbleiterspeicher mit wahlfreiem Direktzugriff, z.B. einen RAM. Zur Erzeugung der Prüfdaten PD können an sich bekannte Feh- lererkennungs- und/oder Fehlerkorrekturverfahren, wie beispielsweise ECC angewandt werden. Beim Speichern von Nutzdaten ND in Speicher 3 werden diese Prüfdaten PD durch Speicherabsicherungs- einheit 2 erzeugt und beim Lesen in an sich bekannter Weise mit aus den gelesenen Nutzdaten ND erneut berechneten Prüfdaten verglichen. Zur besseren Veranschaulichung ist eine beispielsgemäße Aufteilung von Prüfdaten PD und Nutzdaten ND in RAM 3 im unteren Teil von Fig. 1 abgebildet, wobei eine Zelle 3.1, insbesondere eine einzelne Speicherzelle oder, in Abhängigkeit der Granularität von Speicher 3, eine kleinste zu lesende oder schreibende Einheit, z.B. ein Wort, ist .
Speicherabsicherungseinheit 2 legt gemäß dem Ausführungsbeispiel die Absicherungsbereiche Fl und F2 innerhalb des gesamten Spei¬ cherbereichs von Speicher 3 fest, welche mittels Prüfdaten PD abzusichern sind bzw. abgesichert werden. Entsprechend diesem Beispiel sind zwei abgesicherte Speicherbereiche Fl, F2 vorgegeben, es können jedoch auch mehr als zwei oder lediglich ein einziger zur
gleichen Zeit oder gar kein abgesicherter Speicherbereich vorhanden sein. Speicherbereiche, welche mittels Nutzdaten ND abgesichert werden sollen, können durch Speicherabsicherungseinheit 2 zur Laufzeit von Rechensystem 4 unabhängig voneinander mehrfach festgelegt oder wieder als nicht abzusichern eingestuft werden. Weiterhin kann die Größe jedes bereits bestehenden abgesicherten Speicherbereichs bzw. Absicherungsbereichs Fl, F2 vorgegeben und im laufenden Betrieb des Rechensystems 4 geändert werden. Die Fest¬ legung der abzusichernden Speicherbereiche bzw. deren Größe erfolgt bevorzugt mittels einer Zuordnung eines zum aktuellen Zeitpunkt durch das Rechensystem 4 ausgeführten Programmmoduls in der Weise, dass das zum jeweiligen Zeitpunkt ausgeführte Programmmodul den abzusichernden Speicherbereich vorgibt oder diesem Modul ein abgesicherter Speicherbereich zugeordnet ist. Welches Programmmodul zum jeweiligen Zeitpunkt ausgeführt wird, kann dabei beispielsweise mittels der Speicheradressen des zugrundeliegenden Speicherbereichs eines Programmcodes erfasst werden. Die Zuordnung bzw. Zuweisung eines Programmmoduls oder dessen Programmspeicherbereichs zu einem abzusichernden Speicherbereich kann beispielsweise mittels einer Zuordnungstabelle durch die Speicherabsicherungseinheit 2 erfolgen. Diese Zuordnungstabelle kann vom relevanten Teil der Betriebs¬ systemsoftware erstellt, verwaltet und statisch abgelegt sein, um der Speicherabsicherungseinheit 2 (Hardware) , unabhängig vom ak¬ tuellen Zustand der eigentlichen Programmausführung, zu jedem Zeitpunkt verfügbar zu sein. Der Speicherabsicherungseinheit 2 würde entsprechend dieser Realisierung eine selbsttätige Konfiguration der Absicherungsbereiche ermöglicht.
Gemäß einer alternativen Ausführungsform wird Speicherabsicherungseinheit 2 stets lediglich für genau einen abzusichernden Bereich konfiguriert, in der Weise, dass bei Einsprung in oder Aktivierung von einem Daten- und/oder Instruktions-technisch schützenswerten Programmbereich zur Laufzeit des Systems die entsprechende Konfiguration mittels Software umgesetzt wird. Die
entsprechende Zuordnungstabelle wird gemäß dieser Realisierung mittels Software verwaltet und Speicherabsicherungseinheit 2 nicht notwendigerweise verfügbar gemacht, sondern vor Programmausführung von der Software bedarfsgerecht zur Konfiguration von Speicher- absicherungseinheit 2 geprüft. Diese alternative Ausführungsform erfordert in vorteilhafter Weise keine zusätzlichen Ressourcen, wie beispielsweise eine integrierte Logikschaltung zum Zugriff auf und Lesen der Zugriffstabeile oder eine integrierte Logikschaltung zum dynamischen Konfigurieren von Speicherabsicherungseinheit 2. Durch entsprechende Anpassung der Software kann eine Implementierung in bestehende Systeme erfolgen.
Der zusätzliche Speicherbedarf für die zur Realisierung der Erfindung benötigten Prüfdaten PD berechnet am Ausführungsbeispiel gemäß Fig. 1 sich wie folgt:
S PD = SNDFI * GrößepD/GrößeND + SNDF2 * GrößepD/GrößeND mit
SpD - zusätzliches Speichervolumen für die Prüfdaten gesamt
SNDFI _ Speichervolumen innerhalb Absicherungsfenster Fl
SNDF2 - Speichervolumen innerhalb Absicherungsfenster F2
GrößeND - Speichervolumen einer Speicherzelle 3.1 der Nutzdaten Größepo - Speichervolumen der Prüfdaten zur Absicherung einer Speicherzelle mit Nutzdaten
Die Softwarearchitektur ist bevorzugt in der Weise auslegt, dass nach einer Änderung eines Absicherungsbereichs von einem ersten Spei¬ cherbereich auf einen zweiten Speicherbereich bzw. Entfernen eines ersten Absicherungsbereichs eines ersten Speicherbereichs und Erzeugen eines neuen Absicherungsbereichs für einen zweiten
Speicherbereich, kein Speicherzugriff auf den ersten Speicherbereich erfolgen kann. Der Inhalt oder Umfang der abgelegten Daten, welche Nutzdaten sowie Prüfdaten umfassen, wird durch das Aufheben
einer Absicherung eines Speicherbereichs nicht verändert, jedoch zum Beschreiben freigegeben. Ein Vorteil besteht beispielsweise darin, dass eine Anwendung auf Mikrocontrollereinheiten (MCU) deren ECC-Logik (Fehlerkorrektur des Speichers) lediglich genau einen Speicherbereich festlegen bzw. verwalten kann, da diese auch nur über die für ein Absicherungsbereich benötigte Anzahl von Konfigurations-Registern, z.B. Offset, Length, Status, Config, verfügt. Durch die Erfindung können mit genau einem rekonfigurierbaren Absicherungsbereich somit mehrere Absicherungsbereiche qua- si-gleichzeitig betrieben werden. Im Falle eines Datenzugriffs
(nicht Programmcodezugriff) wird eine korrekte Adresszuweisung auf die Nutzdaten insbesondere mittels Anpassung der Software reali¬ siert, da ein automatisches Inkrementieren der physischen Speicheradresse zu einem Zugriff auf eine Speicherzelle 3.1 mit Prüfdaten führen könnte, da nach Aufhebung der Absicherung eines Speicherbereichs die Adressierung nicht mehr Nutz- oder Prüfdaten-selektiv erfolgt. Lesevorgänge, in welchen Nutzdaten von Prüfdatenadressen gelesen würden, wären somit unausweichlich. Um dies zu vermeiden, wird die Art und Weise des Zugriffs sowie die Interpretation der Daten durch die unmittelbar im Signalpfad befindlichen Addressier-,
Dekodier- und Prüfblöcke dahingehend verändert, dass die Prüfdaten PD nicht gelesen und stattdessen im Wesentlichen ignoriert werden. Selbiges gilt für Instruktionen, wenn auch, insbesondere von selbstmodifizierendem Programmcode abgesehen, primär für den Lesefall. In einem Fall, in welchem ein Programmmodul beispielsweise nur lesend und nicht unbedingt abgesichert sowohl Daten wie auch Programmcode von einem Speicher lesen muss, wie es bei einer PrüfSummenberechnung über den gesamten Speicherbereich der Fall ist, werden die Prüfdaten PD damit nicht in die Prüfsumme aufgenommen. Das Überspringen erfolgt für diesen und vergleichbare Fälle be¬ vorzugt entsprechend ebenfalls für Instruktionen. Alternativ ist eine wiederholte Neu- bzw. Umkonfiguration des Absicherungsbereichs beim Ein-/Austritt in oder aus dem Absicherungsbereich hinein/hinaus möglich .