DE102012020442B4 - Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen - Google Patents

Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen Download PDF

Info

Publication number
DE102012020442B4
DE102012020442B4 DE102012020442.6A DE102012020442A DE102012020442B4 DE 102012020442 B4 DE102012020442 B4 DE 102012020442B4 DE 102012020442 A DE102012020442 A DE 102012020442A DE 102012020442 B4 DE102012020442 B4 DE 102012020442B4
Authority
DE
Germany
Prior art keywords
checksum
type
cs2s
cs1u
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102012020442.6A
Other languages
English (en)
Other versions
DE102012020442A1 (de
Inventor
Stephan Schultze
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102012020442.6A priority Critical patent/DE102012020442B4/de
Priority to ATA791/2013A priority patent/AT513533B1/de
Publication of DE102012020442A1 publication Critical patent/DE102012020442A1/de
Application granted granted Critical
Publication of DE102012020442B4 publication Critical patent/DE102012020442B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Verfahren zum Überprüfen von Daten in einer Recheneinheit zur Laufzeit eines Programms, wobei die Recheneinheit Teil eines Geräts mit sicherheitsgerichteter Funktionalität ist, wobei die Daten (DATA) mit einer Prüfsumme erster Art (CS2s) und mit einer Prüfsumme zweiter Art (CS1u) überprüft werden, indem die Prüfsumme erster Art und die Prüfsumme zweiter Art zur Laufzeit des Programms berechnet und jeweils mit einer gespeicherten Prüfsumme (CS1u, CS2s) verglichen werden, wobei zur Laufzeit des Programms der Rechenzeitbedarf zum Berechnen der Prüfsumme zweiter Art (CS1u) geringer als der Rechenzeitbedarf zum Berechnen der Prüfsumme erster Art (CS2s) ist,- wobei die Prüfsumme erster Art (CS2s) bei der Initialisierung des Programms berechnet und mit der gespeicherten Prüfsumme verglichen wird und die Prüfsumme zweiter Art (CS1u) bei der zyklischen Überprüfung während der Laufzeit des Programms mehrmals, insbesondere in regelmäßigen und/oder vorgebbaren Zeitabständen berechnet und mit der gespeicherten Prüfsumme verglichen wird,- wobei die sicherheitsgerichtete Funktionalität des Geräts fortgesetzt wird, wenn die berechneten Prüfsummen (CS1u, CS2s) mit den gespeicherten Prüfsummen (CS1u, CS2s) übereinstimmen, und- wobei das Gerät in einen sicheren Zustand versetzt wird, wenn die berechneten Prüfsummen (CS1u, CS2s) nicht mit den gespeicherten Prüfsummen (CS1u,CS2s) übereinstimmen, wobei in dem sicheren Zustand keine Maschinenbewegungen ausgelöst werden, aufgrund welchen Gefahr von Leib und Leben entstehen kann.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen sowie eine Recheneinheit zu dessen Durchführung.
  • Stand der Technik
  • Die Erfindung befasst sich mit sicherheitsgerichteter Software, bei der Daten (insbesondere Programmcode und/oder andere statische (konstante) Daten) in einer Speichereinheit liegen. Die Datenintegrität dieser Daten muss dabei sichergestellt werden, um sicherzustellen, dass die Daten während der Laufzeit bzw. Lebenszeit des Gerätes nicht verändert werden. Solche Anwendungen findet man beispielsweise bei Sicherheits-SPSen.
  • Es kann vorgesehen sein, die Daten zyklisch zu überprüfen. Hierbei soll ein bestimmter Diagnosedeckungsgrad „DC“ pro Prüfungsdurchlauf erreicht werden und die Prüfungsdurchläufe finden innerhalb einer vorgegebenen Zeit statt (z.B. mindestens alle 8 Stunden). Die Sicherheit wird dabei dadurch erreicht, dass die zyklische Prüfung bei einer vorgegebenen Zykluszeit mit einer vorgegebenen Wahrscheinlichkeit aufgetretene Datenkorruption erkennt. Beispielsweise soll eine Prüfung alle 8 Stunden mit einer Diagnosedeckung von 99% erreicht werden. D.h. bei jedem Durchlauf soll mit 99%iger Wahrscheinlichkeit eine Datenkorruption erkannt werden (DC = 99%).
  • Die Datenintegritätsprüfung kann dabei mittels Redundanzinformation stattfinden. Dies kann in Geräten mit sicherheitsgerichteter Funktionalität durch Redundanzinformationen (beispielsweise Prüfsummen), die zu den zu sichernden Daten hinzugefügt werden, in Verbindung mit einer zyklischen Überprüfung erreicht werden. Dabei wird wiederum zyklisch (z.B. alle 8 Stunden) überprüft, ob eine berechnete Prüfsumme noch mit einer gespeicherten Prüfsumme der Daten übereinstimmt. Ist dies der Fall, wird die sicherheitsgerichtete Funktion fortgesetzt, ist dies nicht der Fall, wird das System in einen sicheren Zustand versetzt. Damit soll z.B. verhindert werden, dass bei korrumpiertem Programmcode Gefahr für Leib und Leben entstehen kann, indem z.B. Maschinenbewegungen ausgelöst werden, die nicht ausgelöst werden sollen.
  • Bei sicherheitsgerichteter Software muss die Prüfung der Datenintegrität immer erfolgen. Sie ist besonders dadurch notwendig, da der Programmcode bzw. statische Daten beim Start des sicherheitsgerichteten Gerätes meist aus einem nichtflüchtigen Speicher (z.B. Flash-Speicher) in einen flüchtigen Speicher (RAM) umkopiert wird und dieser Programmcode dann aus dem schnelleren RAM heraus ausgeführt bzw. mit den statischen Daten aus dem RAM heraus gearbeitet wird. Durch Fehler in Programmen kann dabei der flüchtige Speicher (RAM) korrumpiert werden, d.h. es werden durch ungewollte RAM-Speicherveränderungen aufgrund von Softwarefehlern Programmcodeinformationen bzw. Werte der eigentlich statischen Daten verändert. Neben Programmcodeinformationen sind somit auch statische Daten, mit denen das Programm arbeitet (z.B. konstante Variablen) zu sichern.
  • Insbesondere die zyklische Überprüfung bereitet jedoch Probleme, da sie zur Laufzeit der sicherheitsgerichteten Software durchgeführt wird und daher Rechenleistung der ausführenden Recheneinheit, insbesondere SPS, bzw. deren CPU beansprucht, die dann nicht für andere Funktionen zur Verfügung steht.
  • US 2010/0 332 949 A1 beschreibt ganz allgemein die Bildung von zwei Prüfsummen zur Identifikation von Fehlerorten für eine Region eines Speichers. Hierbei wird ein Verfahren ausgeführt, um fehlerhafte Zeilen eines Speichers zu finden. Dieses Verfahren wird jedoch nicht zum Überprüfen von Daten in einer Recheneinheit zur Laufzeit eines Programms ausgeführt.
  • Die WO 2006/ 108 849 A1 zeigt eine Recheneinheit, die eine Recheneinheit eines Gerätes mit sicherheitsgerichteter Funktionalität ist.
  • Es ist daher wünschenswert, die Überprüfung von Daten in einer Recheneinheit zu vereinfachen.
  • Offenbarung der Erfindung
  • Erfindungsgemäß wird ein Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen mit den Merkmalen des Patentanspruchs 1 vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
  • Die Erfindung basiert auf der Maßnahme, die zu sichernden Daten mit wenigstens zwei Prüfsummen unterschiedlicher Art abzusichern, wobei eine Prüfsumme einer ersten Art eine hohe Sicherheit bei ggf. auch erhöhtem Rechenleistungsbedarf und eine Prüfsumme zweiter Art einen geringen Rechenleistungsbedarf bei ggf. auch verringerter Sicherheit bietet. Die Prüfsumme erster Art ist daher auf hohe Sicherheit ausgelegt, die Prüfsumme zweiter Art auf geringe Rechenleistung. Die Prüfsumme erster Art wird vorzugsweise bei der Initialisierung bzw. beim Start der Software verwendet, die Prüfsumme zweiter Art bei der zyklischen Überprüfung während der Laufzeit.
  • Vorteile der Erfindung
  • Bisher werden zur zyklischen Prüfung bei sicherheitsgerichteten Geräten aufwändige Prüfsummen (meist CRCs) auch bei großen Datenmengen verwendet, obwohl diese zur Erreichung eines geforderten Diagnosedeckungsgrades nicht notwendig sind. Dies liegt insbesondere an möglichen Forderungen (z.B. Hammingabstände deutlich größer 3) an die Sicherheit bei der Initialisierung bzw. beim Start der Software, die mit einfachen Prüfsummen nicht zu erfüllen sind. Die Erfindung verknüpft nun eine sehr sichere Prüfsummenprüfung beim Programmstart bzw. bei der Initialisierung und eine deutlich einfachere Prüfsummenprüfung (regelmäßig bzw. zyklisch) während des Betriebs.
  • Durch die Erfindung besitzt man den Vorteil, dass die erstmalige Datenintegritätsprüfung mit deutlich besserer Fehleraufdeckungswahrscheinlichkeit als bisher ausgeführt werden kann, da ein Rechenzeitbedarf zu diesem Zeitpunkt nicht relevant ist. Die spätere zyklische Datenintegritätsprüfung wird hingegen rechenzeitoptimal durchgeführt.
  • Vorzugsweise handelt es sich bei der Prüfsumme erster Art um eine CRC-Prüfsumme (zyklische Redundanzprüfung, englisch cyclic redundancy check). Eine CRC-Prüfsumme basiert auf einer Polynomdivision. Eine solche Prüfsumme kann eine höhere Fehlererkennung liefern, ist jedoch auch aufwändiger zu berechnen. Eine CRC-Prüfsumme besitzt die Eigenschaft, dass bei kürzeren Daten eine höhere Erkennbarkeit der Fehler vorhanden ist. Hierbei spricht man vom sog. Hammingabstand, dies ist die Mindestanzahl an Bits, in denen sich zwei Datenfelder (incl. CRC) unterscheiden und somit auch die Anzahl an beliebig verteilten Fehlern, die nicht mehr in jedem Falle erkannt werden können. Beispielsweise wird durch eine CRC-Prüfsumme nach IEC 802.3 (CRC32) bei großen Datenmengen eine Diagnosedeckung von ca. 99,99999998 % erreicht.
    CRC-Prüfsummen besitzen die Eigenschaft, dass der Vorteil der höheren Erkennbarkeit von Fehlern bei kürzeren Daten bei Anwendung auf große Datenmengen nicht mehr gegeben ist und sie im Grenzfall nur eine minimal bessere Fehlererkennung besitzen als einfache Additionsprüfsummen.
  • Vorzugsweise handelt es sich bei der Prüfsumme zweiter Art um eine Additionsprüfsumme. Unter Additionsprüfsummen versteht man Prüfsummen, die durch die einfache Addition der Daten entstehen. Eine solche Prüfsumme ist sehr einfach zu berechnen und benötigt nur wenig Rechenkapazität. Man kann abschätzen, dass eine einfache Additionsprüfsumme ca. nur 10% des Rechenzeitbedarfs einer CRC32 besitzt. Mittels Additionsprüfsummen wird jeder Ein-Bit-Fehler erkannt. Zwei-Bit-Fehler werden nicht mehr sicher erkannt. Allgemein wird eine beliebige Datenverfälschung der Daten bei M Prüfsummenbits mit einer Wahrscheinlichkeit von 1-1/2M erkannt. Will man beispielsweise eine Diagnosedeckung von 99% erreichen, reicht dafür eine 7 Bit Additionsprüfsumme.
  • Vorzugsweise entspricht die Länge der Additionsprüfsumme der internen Speicherzugriffsdatenbreite oder der CPU-internen Registerbreite (z.B. 16, 32, 64... Bit) der die Software ausführenden CPU (z.B. Sicherheits-CPU). Sie ist dann zwar meist länger als durch die einzuhaltende Diagnosedeckung gefordert, jedoch kann der Speicherzugriff dadurch beschleunigt und der gesamte Rechenzeitbedarf der Prüfsummenberechnung optimiert werden.
  • Gemäß einer anderen Ausgestaltung handelt es sich bei der Prüfsumme zweiter Art um eine CRC-Prüfsumme, deren Berechnung jedoch weniger Rechenzeit benötigt als die Berechnung der Prüfsumme erster Art. Beispielsweise kann sie kürzer sein (z.B. nur 8 Bit). Gemäß einer weiteren bevorzugten Ausführungsform handelt es sich bei der Prüfsumme zweiter Art um eine 8Bit-CRC-Prüfsumme, die über einfache Tabellenzugriffe (Tabelle mit 256 Bytewerten) den jeweiligen Folge-Bytewert anhand des Datenbytewertes berechnet, beispielsweise nach dem Schema:
       for (byte = 0; byte < nBytes; ++byte) 

        {
            checksum = crcTable[data];
        }
  • Dem Fachmann ist aus dem Softwarebereich bekannt, wie die Tabelle (crcTable⌷) bei der Initialisierung vorbesetzt werden muss.
  • Ein solches Verfahren ist besonders für kurze Prüfsummen geeignet, da die Tabelle 2M Einträge besitzen muss, wobei M die Anzahl der Prüfsummenbits ist.
  • Im Vergleich dazu schneidet eine 16bittige oder 32bittige Additionsprüfsumme mit vergleichbarem Rechenaufwand wie eine Sbittige CRC bei langen Datenfeldern deutlich besser ab: Die Diagnoseabdeckung beträgt bei langen Datenfeldern ungefähr:
    • • bei einer 8Bit-Prüfsumme nur 99,6% (CRC- oder Additionsprüfsumme)
    • • bei einer 16Bit-Prüfsumme 99,998% (CRC- oder Additionsprüfsumme)
    • • bei einer 23Bit-Prüfsumme 99,99999998 % (CRC- oder Additionsprüfsumme)
  • Nimmt man an, dass die geforderte Diagnoseabdeckung der zyklischen Integritätsprüfung 99% betragen soll, reicht eine 7bittige (in der Praxis 8 Bit) Additionsprüfsumme aus. Aufgrund der typischen Organisation von Speichern bzw. Registern in Computern in Vielfachen von 8 Bit ist jedoch eine 8bittige Berechnung die kürzeste Prüfsumme, die normalerweise implementiert wird.
  • Vorzugsweise sind die Daten und die Prüfsumme zweiter Art durch die Prüfsumme erster Art gesichert. Hierdurch wird erreicht, dass bei Programmstart auch eine Korrumpierung der einfacheren Prüfsumme sicher erkannt wird.
  • Eine erfindungsgemäße Recheneinheit, z.B. eine SPS, ist, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.
  • Auch die Implementierung der Erfindung in Form von Software ist vorteilhaft, da dies besonders geringe Kosten ermöglicht, insbesondere wenn eine ausführende Recheneinheit noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Geeignete Datenträger zur Bereitstellung des Computerprogramms sind insbesondere Disketten, Festplatten, Flash-Speicher, EEPROMs, CD-ROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich.
  • Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
  • Es versteht sich, dass die vorstehend genannten und die nachfolgend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
  • Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung ausführlich beschrieben.
  • Figurenliste
    • 1a und 1b zeigen jeweils eine bevorzugte Ausführungsform einer Anordnung aus Daten und Prüfsummen in einer Speichereinheit, wobei jeweils eine Prüfsumme erster Art und eine Prüfsumme zweiter Art vorgesehen sind.
    • 2a bis 2d zeigen jeweils eine bevorzugte Ausführungsform einer Anordnung aus Daten und Prüfsummen in einer Speichereinheit, wobei die Prüfsumme erster Art jeweils aus drei Teilprüfsummen besteht.
    • 3a und 3b zeigen jeweils eine bevorzugte Ausführungsform einer Anordnung aus Daten und Prüfsummen in einer Speichereinheit, wobei die Prüfsumme erster Art jeweils aus drei Teilprüfsummen und einer zusätzlichen Teilprüfsumme besteht.
    • 4a und 4b zeigen jeweils eine bevorzugte Ausführungsform einer Anordnung aus Daten und Prüfsummen in einer Speichereinheit, wobei die Prüfsumme erster Art und die Prüfsumme zweiter Art jeweils aus drei Teilprüfsummen bestehen.
  • Detaillierte Beschreibung der Zeichnung
  • In den Figuren werden unterschiedliche bevorzugte Ausgestaltungen der Erfindung am Beispiel von zu sichernden Daten und Prüfsummen als Anordnung in einer Speichereinheit dargestellt. Die zu sichernden Daten sind mit DATA bezeichnet. Die Prüfsumme erster Art („sichere Prüfsumme“) ist mit CS_s, die Prüfsumme zweiter Art („unsichere Prüfsumme“) ist mit CS_u bezeichnet. Die Prüfsumme erster Art wird vorzugsweise nur einmalig, insbesondere beim Programmstart, zur Überprüfung verwendet, wohingegen die Prüfsumme zweiter Art vorzugsweise regelmäßig während des Programmbetriebs zur Überprüfung verwendet wird. Beide Prüfsummen sind vorhanden und werden verwendet. Die sichere Prüfsumme CS_s ist aufwändig und rechenzeitintensiv. Dies ist jedoch beim Programmstart (Initialisierung des Gerätes) meist von untergeordneter Bedeutung. Die einfache Prüfsumme CS_u ist rechenzeitoptimal, d.h. sie belastet die Sicherheits-CPU während ihrer eigentlichen sicherheitsgerichteten Arbeit nicht.
  • In 1a ist dargestellt, dass eine sichere Prüfsumme CS2s (z.B. 128 Bit CRC) mit einer unsicheren Prüfsumme CS1u (z.B. 8 Bit Addition) verknüpft wird. Vorzugsweise sind die Daten und die Prüfsumme zweiter Art durch die Prüfsumme erster Art gesichert. Dies ist in 1b illustriert. Hierdurch wird erreicht, dass beim erstmaligen Prüflauf (Programmstart) auch eine Korrumpierung der einfacheren Prüfsumme sicher erkannt wird.
  • Es kann vorgesehen sein, dass die Prüfsumme erster Art und/oder die Prüfsumme zweiter Art jeweils mehrere Teilprüfsummen umfassen. Dementsprechend können die Daten in mehrere Teildatenbereiche unterteilt werden. Vorzugsweise wird jedem Teildatenbereich eine Teilprüfsumme zugeordnet. Dies erhöht insbesondere bei CRC-Prüfsummen erster Art die Sicherheit, da Fehler in kleineren Datenmengen mit größerer Sicherheit erkannt werden können.
  • In den 2a und 2b ist gezeigt, dass drei Teildatenbereiche DATA1, DATA2 und DATA3 sowie drei zugehörige sichere Teilprüfsummen CS1s, CS2s und CS3s vorgesehen sind. Die unsichere Prüfsumme CS4u ist hier nicht unterteilt, sondern auf die gesamten Daten DATA gerichtet. 2b unterscheidet sich von 2a nur durch die Platzierung der Teildatenbereiche und Teilprüfsummen in der Speichereinheit. Die Platzierung gemäß 2b, bei der die Teildatenbereiche unmittelbar aneinander stehen, ist im Hinblick auf die Generierung der Daten vorteilhaft, da keine Unterbrechungen im Code gemacht werden müssen, sondern die Prüfsummen CS1s, CS2s, CS3s hinten angehängt werden können (ebenso 2d, 3b, 4a, 4b). In 2c ist illustriert, dass die Daten DATA3 und die unsichere Prüfsumme CS4u durch die sichere Teilprüfsumme CS3s gesichert sind. In 2d ist illustriert, dass jeder Teildatenbereich DATA1, DATA2 und DATA3 zusammen mit der unsicheren Prüfsumme CS4u durch die zugehörige sichere Teilprüfsumme CS1s, CS2s bzw. CS3s gesichert ist (beispielsweise kann die unsichere Prüfsumme CS4u gemeinsam mit dem Datenfeld DATA3 durch die sichere Teilprüfsumme CS3s gesichert werden).
  • In den 3a und 3b ist dargestellt, dass die mehreren, jeweils einem Teildatenbereich zugeordneten Teilprüfsummen CS1s, CS2S, CS3s zusammen mit einer weiteren Teilprüfsumme CS5s die Prüfsumme erster Art bilden. Soll eine sehr hohe Sicherheit erreicht werden, so sind lange CRC-Prüfsummen vonnöten (z.B. 128 Bit). Dies kann jedoch vereinfacht werden, indem mehrere kürzere CRC-Teilprüfsummen verwendet werden (z.B. 32 Bit), die relativ einfach berechnet werden können, und diese mit einer langen weiteren Prüfsumme gesichert werden (z.B. 128 Bit).Vorzugsweise wird die zusätzliche Teilprüfsumme CS5s nur über die Teilprüfsummen CS1s, CS2S, CS3s (und vorzugsweise CS4u) gebildet. Es kann jedoch auch vorgesehen sein, dass die zusätzliche Teilprüfsumme CS5s über alle Teildatenbereiche DATA1, DATA2, DATA3 und alle Teilprüfsummen CS1s, CS2S, CS3s (und vorzugsweise CS4u) gebildet wird.
  • In den 4a und 4b ist gezeigt, dass drei Teildatenbereiche DATA1, DATA2 und DATA3 sowie drei zugehörige sichere Teilprüfsummen CS1s, CS2s und CS3s und drei zugehörige unsichere Teilprüfsummen CS4u, CS5u und CS6u vorgesehen sind. Der Gesamtaufwand einer Prüfsummenprüfung ist nahezu unabhängig davon, in wie viele Teildatenfelder eine Datenmenge zerteilt wird. Lediglich fällt für jedes Teildatenfeld eine Initialisierung bzw. Prüfung der Prüfsumme zusätzlich an. Dies kann bei relativ großen Teildatenfeldem im Vergleich zur Bildung der jeweiligen Prüfsumme jedoch vernachlässigt werden. Aus diesem Grunde kann optional auch die einfachere Prüfsummenprüfung auf mehrere kleinere Teildatenfelder zerlegt werden. Hierdurch ergibt sich zwar keine Erhöhung der Diagnoseabdeckung, wenn man als Annahme einer Additionsprüfsumme davon ausgeht, dass für das Teildatenfeld auch nur eine Erkennung von 1-1/2M erreicht wird. Jedoch kann dadurch die Wahrscheinlichkeit, dass aufgetretene Datenkorruption unerkannt bleibt, ohne komplexe und aufwändige Algorithmen signifikant verringert werden. Da hierzu alle Prüfsummen der k Teildatenfelder CS4u, ..., CS6u unerkannt verfälscht werden müssten, potenziert sich diese Wahrscheinlichkeit mit der Anzahl k der Prüfsummen auf 1-1/2(kM).
  • Claims (14)

    1. Verfahren zum Überprüfen von Daten in einer Recheneinheit zur Laufzeit eines Programms, wobei die Recheneinheit Teil eines Geräts mit sicherheitsgerichteter Funktionalität ist, wobei die Daten (DATA) mit einer Prüfsumme erster Art (CS2s) und mit einer Prüfsumme zweiter Art (CS1u) überprüft werden, indem die Prüfsumme erster Art und die Prüfsumme zweiter Art zur Laufzeit des Programms berechnet und jeweils mit einer gespeicherten Prüfsumme (CS1u, CS2s) verglichen werden, wobei zur Laufzeit des Programms der Rechenzeitbedarf zum Berechnen der Prüfsumme zweiter Art (CS1u) geringer als der Rechenzeitbedarf zum Berechnen der Prüfsumme erster Art (CS2s) ist, - wobei die Prüfsumme erster Art (CS2s) bei der Initialisierung des Programms berechnet und mit der gespeicherten Prüfsumme verglichen wird und die Prüfsumme zweiter Art (CS1u) bei der zyklischen Überprüfung während der Laufzeit des Programms mehrmals, insbesondere in regelmäßigen und/oder vorgebbaren Zeitabständen berechnet und mit der gespeicherten Prüfsumme verglichen wird, - wobei die sicherheitsgerichtete Funktionalität des Geräts fortgesetzt wird, wenn die berechneten Prüfsummen (CS1u, CS2s) mit den gespeicherten Prüfsummen (CS1u, CS2s) übereinstimmen, und - wobei das Gerät in einen sicheren Zustand versetzt wird, wenn die berechneten Prüfsummen (CS1u, CS2s) nicht mit den gespeicherten Prüfsummen (CS1u,CS2s) übereinstimmen, wobei in dem sicheren Zustand keine Maschinenbewegungen ausgelöst werden, aufgrund welchen Gefahr von Leib und Leben entstehen kann.
    2. Verfahren nach Anspruch 1, wobei zur Laufzeit des Programms die Prüfsumme erster Art (CS2s) weniger häufig berechnet wird als die Prüfsumme zweiter Art (CS1u).
    3. Verfahren nach Anspruch 1 oder 2, wobei die Prüfsumme erster Art (CS2s) eine CRC-Prüfsumme ist.
    4. Verfahren nach Anspruch 3, wobei die Prüfsumme zweiter Art (CS1u) eine CRC-Prüfsumme ist, deren Länge kürzer als die der Prüfsumme erster Art (CS2s) ist.
    5. Verfahren nach einem der Ansprüche 1 bis 4, wobei die Prüfsumme zweiter Art (CS1u) eine Additionsprüfsumme, deren Länge vorzugsweise der internen Speicherzugriffsdatenbreite oder einer Registerbreite eines das Programm ausführenden Prozessors der Recheneinheit entspricht, ist.
    6. Verfahren nach einem der vorstehenden Ansprüche, wobei die Prüfsumme erster Art (CS2s) über die Daten (DATA) und über die Prüfsumme zweiter Art (CS1u) berechnet wird.
    7. Verfahren nach einem der vorstehenden Ansprüche, wobei die Daten (DATA) in mehrere Teildatenbereiche (DATA1, DATA2, DATA3) unterteilt werden und für jeden der mehreren Teildatenbereiche (DATA1, DATA2, DATA3) jeweils eine Teilprüfsumme erster Art (CS1s, CS2s, CS3s) und/oder jeweils eine Teilprüfsumme zweiter Art (CS4u, CS5u, CS6u) berechnet werden.
    8. Verfahren nach Anspruch 7, wobei eine weitere Teilprüfsumme erster Art (CS5s) über die jeweils eine Teilprüfsumme erster Art (CS1s, CS2s, CS3s) für jeden der mehreren Teildatenbereiche (DATA1, DATA2, DATA3) berechnet wird.
    9. Verfahren nach einem der vorstehenden Ansprüche, wobei die zu überprüfenden Daten vor der Überprüfung aus einem nichtflüchtigen Speicher in einen flüchtigen Speicher der Recheneinheit umkopiert werden und die Daten in dem flüchtigen Speicher überprüft werden.
    10. Verfahren nach einem der vorstehenden Ansprüche, wobei eine von der Prüfsumme erster Art (CS2s) erzielbare Diagnosedeckung höher als eine von der Prüfsumme zweiter Art (CS1u) erzielbare Diagnosedeckung ist.
    11. Verfahren nach einem der vorstehenden Ansprüche, wobei von der Prüfsumme erster Art (CS2s) und/oder von der Prüfsumme zweiter Art (CS1u) eine vorbestimmte Diagnosedeckung erzielbar ist.
    12. Recheneinheit, die dazu eingerichtet ist, ein Verfahren nach einem der vorstehenden Ansprüche durchzuführen.
    13. Sicherheits-SPS mit einer Recheneinheit nach Anspruch 12, wobei die Sicherheits-SPS das Gerät mit sicherheitsgerichteter Funktionalität ist.
    14. Maschinenlesbares Speichermedium mit einem darauf gespeicherten Computerprogramm mit Programmcodemitteln, die eine Recheneinheit nach Anspruch 12 oder eine Sicherheits-SPS nach Anspruch 13 veranlassen, ein Verfahren nach einem der Ansprüche 1 bis 11 durchzuführen, wenn das maschinenlesbare Speichermedium in einen Speicher der Recheneinheit geladen ist und die Programmcodemittel ausgeführt werden.
    DE102012020442.6A 2012-10-18 2012-10-18 Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen Active DE102012020442B4 (de)

    Priority Applications (2)

    Application Number Priority Date Filing Date Title
    DE102012020442.6A DE102012020442B4 (de) 2012-10-18 2012-10-18 Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen
    ATA791/2013A AT513533B1 (de) 2012-10-18 2013-10-14 Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen

    Applications Claiming Priority (1)

    Application Number Priority Date Filing Date Title
    DE102012020442.6A DE102012020442B4 (de) 2012-10-18 2012-10-18 Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen

    Publications (2)

    Publication Number Publication Date
    DE102012020442A1 DE102012020442A1 (de) 2014-04-24
    DE102012020442B4 true DE102012020442B4 (de) 2020-03-05

    Family

    ID=50436701

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102012020442.6A Active DE102012020442B4 (de) 2012-10-18 2012-10-18 Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen

    Country Status (2)

    Country Link
    AT (1) AT513533B1 (de)
    DE (1) DE102012020442B4 (de)

    Cited By (1)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11216443B2 (en) * 2018-06-20 2022-01-04 EMC IP Holding Company LLC Processing device configured for data integrity testing utilizing signature-based multi-phase write operations

    Citations (3)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    WO2006108849A1 (de) * 2005-04-12 2006-10-19 Robert Bosch Gmbh Verfahren und rechnereinheit zur fehlererkennung und fehlerprotokollierung in einem speicher
    DE102006003146A1 (de) * 2006-01-23 2007-08-02 Infineon Technologies Ag Vorrichtung und Verfahren zum Auslesen eines Datenwortes und Vorrichtung und Verfahren zum Speichern eines Datenblocks
    US20100332949A1 (en) * 2009-06-29 2010-12-30 Sandisk Corporation System and method of tracking error data within a storage device

    Family Cites Families (1)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US8977859B2 (en) * 2004-05-04 2015-03-10 Elsevier, Inc. Systems and methods for data compression and decompression

    Patent Citations (3)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    WO2006108849A1 (de) * 2005-04-12 2006-10-19 Robert Bosch Gmbh Verfahren und rechnereinheit zur fehlererkennung und fehlerprotokollierung in einem speicher
    DE102006003146A1 (de) * 2006-01-23 2007-08-02 Infineon Technologies Ag Vorrichtung und Verfahren zum Auslesen eines Datenwortes und Vorrichtung und Verfahren zum Speichern eines Datenblocks
    US20100332949A1 (en) * 2009-06-29 2010-12-30 Sandisk Corporation System and method of tracking error data within a storage device

    Non-Patent Citations (2)

    * Cited by examiner, † Cited by third party
    Title
    KÜHN, Dr. V.: Vorlesungsskript Kanalcodierung II. Fachbereich Physik/Elektrotechnik (FB 1), Arbeitsbereich Nachrichtentechnik, Bremen, 04.04.2011. Im Internet: <URL:http://www.ant.uni-bremen.de/sixcms/media.php/102/9702/kc2_skript.pdf> *
    NIKOLAIZIK, u.a.: Fehlertolerante Mikrocomputersysteme. Verlag Technik GmbH Berlin. ISBN: 3-341-00859-4. 1. Auflage, 1990, S. 40 - 47 *

    Cited By (1)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11216443B2 (en) * 2018-06-20 2022-01-04 EMC IP Holding Company LLC Processing device configured for data integrity testing utilizing signature-based multi-phase write operations

    Also Published As

    Publication number Publication date
    DE102012020442A1 (de) 2014-04-24
    AT513533B1 (de) 2015-05-15
    AT513533A2 (de) 2014-05-15
    AT513533A3 (de) 2014-07-15

    Similar Documents

    Publication Publication Date Title
    DE112007003015B4 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
    DE102012204256B4 (de) Verfahren und system zum initiieren eines wiederauffrischungsvorgangs in einer nicht flüchtigen festkörper-speichereinrichtung
    DE102011108933B4 (de) Sichere Speicherung durch interne Betriebssicherstellung
    DE102010037457B4 (de) Verfahren zur Datenverarbeitung zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zum Erzeugen von Programm-Code, Datenverarbeitungsanordnungen zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Datenverarbeitungsanordnungen zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
    DE102013013047B4 (de) Bestimmung einer Kennung
    DE102009020389A1 (de) System zur Aktualisierung von Firmware und Verfahren dazu, und Verfahren zum Erzeugen von Firmware
    DE102005052698A1 (de) Verfahren zur Verarbeitung von nichtflüchtig gespeicherten Daten
    DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
    DE102013018647A1 (de) Funktionalität für Ausfallsicherheitscode
    DE102013109315B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors
    DE102012020442B4 (de) Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen
    DE102016223341A1 (de) Integrierte Schaltung mit Hardwareprüfeinheit zum Überprüfen von ausgewählten Speicherzugriffen
    EP3378006B1 (de) Verfahren zum laden eines sicheren speicherabbilds eines mikrocontrollers und anordnung mit einem mikrocontroller
    EP1359485B1 (de) Steuer- und Überwachungssystem
    DE102007040721B4 (de) Datenverarbeitungsanordnung, Verfahren zur Datenverarbeitung, Computerprogrammelement und Überprüfungsanordnung für einen Speicher
    WO2006089943A1 (de) Verfahren zur datensicherung und gerät zu dessen ausführung
    WO2016050857A1 (de) Verfahren zur datenverarbeitung zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist und datenverarbeitungsanordnungen zum erzeugen von programm-code
    DE102005021546B4 (de) Mikrocontroller- bzw. Mikroprozessor-System, insbesondere Mikrocontroller- bzw. Mikroprozessor-System mit Fehler-Erkennung bzw. -Korrektur
    DE102009033211A1 (de) Chipkarte mit Überwachung der Integrität auf Softwarebasis
    DE102020209236A1 (de) Verfahren zum Betreiben einer nicht-flüchtigen Speichereinheit
    DE102013112020A1 (de) Verfahren und Vorrichtung zum Erkennen von Bitfehlern
    DE102014002369B4 (de) Speicherprogrammierung in einem Sicherheitsmodul
    DE102021209038A1 (de) Verfahren zum automatischen Erkennen und Korrigieren von Speicherfehlern in einem sicheren mehrkanaligen Rechner
    DE102022111925A1 (de) Halbleiterchipvorrichtung und verfahren zum prüfen der integrität eines speichers
    DE102021206045A1 (de) Computer-implementiertes Verfahren und Vorrichtung zum Erkennen von Code-Defiziten in einem Programmcode einer Software

    Legal Events

    Date Code Title Description
    R163 Identified publications notified
    R012 Request for examination validly filed
    R016 Response to examination communication
    R018 Grant decision by examination section/examining division
    R020 Patent grant now final