US5974529A | 1999-10-26 | |||
US20120233446A1 | 2012-09-13 |
Patentansprüche 1. Verfahren zur Übergabe zumindest eines Übergabewerts von einem ersten Programm an ein zweites Programm, wobei das Verfahren aufweist : • Erzeugen des zumindest einen Übergäbewerts mittels des ersten Programms ; • Bereitstellen zumindest einer AblaufSignatur des Erzeugens , welche dem zumindest einen Übergäbewert zugeordnet ist , mittels des ersten Programms ; • Übermitteln zumindest der zumindest einen AblaufSignatur an eine Überprüfungsinstanz ; • Bereitstellen zumindest einer Referenz Signatur, welche einen störungsfreien Ablauf des Erzeugens repräsentiert ; • Überprüfen der zumindest einen AblaufSignatur auf Grundlage der zumindest einen Referenz Signatur mittels der Überprüfungsinstanz ; • Bereitstellen eines Bestätigungscodes mittels der Überprüfungsinstanz , wenn das Überprüfen der zumindest einen AblaufSignatur ein positives Ergebnis liefert ; • Übermitteln zumindest des Übergäbewerts und des Bestatigungscodes an das zweite Programm; • Bereitstellen eines Referenzcodes , welcher einen störungsfreien Ablauf des Überprüfens der zumindest einen AblaufSignatur repräsentiert ; • Überprüfen des Bestätigungscodes auf Grundlage des Referenzcodes durch das zweite Programm; und • Verarbeiten des zumindest einen Übergäbewerts mittels des zweiten Programms , wenn zumindest das Überprüfen des zumindest einen Bestätigungscodes ein positives Ergebnis liefert . 2. Verfahren gemäß Anspruch 1 , wobei das Übermitteln der AblaufSignatur an die Überprüfungsinstanz mittels einer ersten DatenVerbindung erfolgt, die das erste Programm mit der Überprüfungsinstanz verbindet, wobei optional die erste DatenVerbindung eine verschlüsselte DatenVerbindung ist . 3. Verfahren gemäß Anspruch 2 , wobei die erste Datenverbindung eine Verbindung zwischen einer ersten Recheneinheit , die das erste Programm ausführt , und einer Überprüfungseinheit , die von der ersten Recheneinheit verschieden ist und die die Überprüfungsinstanz ausführt , aufweist . Verfahren gemäß einem der vorhergehenden Ansprüche , wobei das Übermitteln des Übergäbewerts an das zweite Programm mittels einer zweiten DatenVerbindung erfolgt , die das erste Programm mit dem zweiten Programm verbindet , wobei optional die zweite DatenVerbindung eine verschlüsselte DatenVerbindung ist . 5. Verfahren gemäß Anspruch 4 , wobei die zweite DatenVerbindung eine Verbindung zwischen einer ersten Recheneinheit , die das erste Programm ausführt , und einer zweiten Recheneinheit , die von der ersten Recheneinheit verschieden ist und die das zweite Programm ausführt , aufweist . 6. Verfahren gemäß den Ansprüchen 2 und 4 , wobei das Übermitteln des Bestätigungscodes von der Überprüfungsinstanz zum zweiten Programm mittels der ersten und zweiten DatenVerbindung erfolgt . Verfahren gemäß einem der vorhergehenden Ansprüche , wobei das Übermitteln zumindest der AblaufSignatur an die Überprüfungseinheit ein Übermitteln zumindest einer Kenngröße des zumindest einen Übergäbewerts aufweist , wobei optional die zumindest eine Kenngröße eine Kodierung des zumindest einen Übergäbewerts mittels eines ersten Schlüssels und zumindest einer ersten Kodierungsfunktion umfasst. 8. Verfahren gemäß Anspruch 7 , wobei der Bestätigungscode mittels Kodierens zumindest der Kenngröße mittels eines zweiten Schlüssels und einer zweiten Kodierungsfunktion bereitgestellt wird . Verfahren gemäß einem der vorhergehenden Ansprüche , wobei das Erzeugen des zumindest einen Übergäbewerts i Abhängigkeit von zumindest einem Eingangswert erfolgt . Verfahren gemäß einem der vorhergehenden Ansprüche , ferner aufweisend : Reinitialisieren des ersten Programms , wenn das Überprüfen der zumindest einen AblaufSignatur ein negatives Ergebnis liefert ; wobei optional das Verfahren ferner aufweist : • Speichern einer Zustandskenngröße des ersten Programms in der Überprüfungsinstanz , wenn das Überprüfen der zumindest einen AblaufSignatur ein positives Ergebnis liefert ; • Übermitteln der gespeicherten Zustandskenngröße an das erste Programm nach erfolgtem Reinitialisieren des ersten Programms . 11. Verfahren gemäß einem der vorhergehenden Ansprüche , ferner aufweisend : Verwerfen des Übergabewerts , wenn das Überprüfen des zumindest einen Bestätigungscodes ein negatives Ergebnis liefert . Verfahren gemäß einem der vorhergehenden Ansprüche , wobei das Übermitteln des Bestätigungscodes an das zweite Programm ein Übermitteln eines durch die Überprüfungseinheit generierten ersten Zeitstempeis aufweist ; wobei optional das Verfahren ferner aufweist ein Verwerfen des Übergabewerts, wenn der erste Zeitstempel älter ist als ein zuvor empfangener ZeitStempel . Verfahren gemäß einem der vorhergehenden Ansprüche , ferner aufweisend : • Festlegen eines ersten Referenz Zeitpunkts , zu dem eine Übermittlung der AblaufSignatur vom ersten Programm zur Überprüfungsinstanz erfolgt sein soll ; und • Bereitstellen von zusätzlichen Ressourcen zur Ausführung des ersten Programms , wenn zum ersten Referenz Zeitpunkt keine AblaufSignatur empfangen wurde . Verfahren gemäß einem der Ansprüche 1 bis 12 , ferner aufweisend : • Festlegen eines zweiten Referenz Zeitpunkts , zu dem eine Übermittlung der AblaufSignatur vom ersten Programm zur Überprüfungsinstanz erfolgt sein soll , • Reinitialisieren des ersten Programms , wenn zum zweiten Referenz Zeitpunkt keine AblaufSignatur empfangen wurde . Verfahren gemäß einem der Ansprüche 1 bis 12 , ferner aufweisend : • Festlegen eines ersten Referenz Zeitpunkts , zu dem eine Übermittlung der AblaufSignatur vom ersten Programm zur Überprüfungsinstanz erfolgt sein soll , • Bereitstellen von zusätzlichen Ressourcen zur Ausführung des ersten Programms und Festlegen eines zweiten Referenz Zeitpunkts , zu dem eine Übermittlung der AblaufSignatur vom ersten Programm zur Überprüfungsinstanz erfolgt sein soll , wenn zum ersten Referenz Zeitpunkt keine AblaufSignatur empfangen wurde ; und • Reinitialisieren des ersten Programms , wenn zum zweiten Referenz Zeitpunkt keine AblaufSignatur empfangen wurde . Verfahren zur Übergabe von zumindest einem Übergabewert , wobei das Verfahren aufweist : • Erzeugen zumindest des einen Übergabewerts ; • Bereitstellen zumindest einer AblaufSignatur des Erzeugens , welche dem zumindest einen Übergäbewert zugeordnet ist ; • Bereitstellen zumindest einer Referenzsignatur, welche einen störungsfreien Ablauf des Erzeugens repräsentiert ; • Überprüfen der zumindest einen AblaufSignatur auf Grundlage der zumindest einen Referenz Signatur mittels der Überprüfungsinstanz ; • Bereitstellen eines Bestätigungscodes , wenn das Überprüfen der zumindest einen AblaufSignatur ein positives Ergebnis liefert ; • Bereitstellen eines Referenzcodes , welcher einen störungsfreien Ablauf des Überprüfens der zumindest einen AblaufSignatur repräsentiert ; • Überprüfen des Bestätigungscodes auf Grundlage des Referenzcodes ; und • Verarbeiten des zumindest einen Übergabewerts , wenn das Überprüfen des zumindest einen Bestätigungscodes ein positives Ergebnis liefert . Überprüfungseinheit , aufweisend : zumindest eine Recheneinheit die eingerichtet ist eine Überprüfungsinstanz auszuführen zur Durchführung des Verfahrens gemäß einem der Ansprüche 1 bis 16. Überprüfungseinheit gemäß Anspruch 17, wobei die Recheneinheit eingerichtet ist , die Überprüfungsinstanz in einer Enklave aus zuführen . Überprüfungseinheit, aufweisend: • eine Recheneinheit ; und • eine Kommunikationseinheit , die eingerichtet ist , eine Kommunikation zwischen der Recheneinheit und zumindest einem ersten Programm herzustellen und eine Kommunikation zwischen der Recheneinheit und zumindest einem zweiten Programm herzustellen; • wobei die Recheneinheit eingerichtet ist , für das erste Programm eine erste Überprüfungsinstanz auszuführen, die eingerichtet ist , einen korrekten Programmablauf des ersten Programms zu überprüfen und unabhängig von der zweiten Überprüfungsinstanz eine zweite Überprüfungsinstanz auszuführen, die eingerichtet ist , einen korrekten Programmablauf des zweiten Programms zu überprüfen . Überprüfungseinheit gemäß Anspruch 19 , ferner aufweisend : zumindest ein Zertifikat , das zumindest beim Aufbau der Kommunikation zwischen der Recheneinheit und dem ersten Programm und/oder dem zweiten Programm, die Kommunikation authentifiziert . 21. Verfahren zur Überprüfung der Funktionstüchtigkeit eines Programms , wobei das Verfahren aufweist : • Festlegen eines Referenz Zeitpunkts , zu dem eine Ausgabe mittels des Programms erfolgt sein soll ; • Überwachen des Programms zumindest auf einen Zeitpunkt der Ausgabe ; und • Bereitstellen von zusätzlichen Ressourcen zur Ausführung des Programms , wenn beim Überwachen festgestellt wird, dass zum Referenz Zeitpunkt noch keine Ausgabe von dem Programm erfolgt ist . 22. Überprüfungseinheit , aufweisend : zumindest eine Steuereinheit , die eingerichtet ist : eine AblaufSignatur zu empfangen, die von einem Programm gesendet wurde, das auf einer weiteren Steuereinheit ausgeführt wird; eine Gültigkeitsprüfung der AblaufSignatur durchzuführen, wenn diese empfangen wurde ; die weitere Steuereinheit aufzufordern, das Programm zu reinitialisieren, wenn die Gültigkeitsprüfung negativ ausfiel ; einen ersten Referenz Zeitpunkt festzulegen, zu dem die AblaufSignatur empfangen sein soll ; und die weitere Steuereinheit aufzufordern, zusätzliche Ressourcen zur Ausführung des Programms bereitzustellen, wenn zum ersten Referenz Zeitpunkt noch keine AblaufSignatur empfangen wurde . Überprüfungseinheit , aufweisend: zumindest eine Steuerschnittstelle; und zumindest eine Steuereinheit , die eingerichtet ist : • eine AblaufSignatur zu empfangen, die von einem Programm gesendet wird, das auf einer weiteren Steuereinheit ausgeführt wird; • einen Empfang eines Steuersignals , das von der Steuereinheit , mittels des Programms , ermittelt und ausgegeben wird, an einem Eingang der Steuerschnittstelle zu detektieren; • eine Gültigkeitsprüfung der AblaufSignatur durchzuführen wenn diese empfangen wurde ; • die weitere Steuereinheit aufzufordern, das Programm zu reinitialisieren, wenn die Gültigkeitsprüfung negativ ausfiel ; • einen zweiten Referenz Zeitpunkt festzulegen, zu dem die AblaufSignatur empfangen sein soll ; • das Steuersignal an einem Ausgang der Steuerschnittstelle auszugeben, wenn die Gültigkeitsprüfung positiv ausfällt ; und • an dem Ausgang der Steuerschnittstelle ein SicherheitsSteuersignal anstatt des Steuersignals auszugeben, wenn die Gültigkeitsprüfung negativ ausfällt oder wenn zum zweiten Referenz Zeitpunkt noch keine AblaufSignatur empfangen wurde . Überprüfungseinhert , aufweisend : zumindest eine Steuerschnittstelle; und zumindest eine Steuereinheit , die eingerichtet ist : • eine AblaufSignatur zu empfangen, die von einem Programm gesendet wird, das auf einer weiteren Steuereinheit ausgeführt wird; • einen Empfang eines Steuersignals , das von der Steuereinheit , mittels des Programms , ermittelt und ausgegeben wird, an einem Eingang der Steuerschnittstelle zu detektieren; • einen ersten Referenz Zeitpunkt festzulegen, zu dem die AblaufSignatur empfangen sein soll ; • die weitere Steuereinheit aufzufordern, zusätzliche Ressourcen zur Ausführung des Programms bereitzustellen und einen zweiten Referenz Zeitpunkt festzulegen, zu dem die AblaufSignatur empfangen sein soll , wenn zum ersten Referenz zeitpunk noch keine AblaufSignatur empfangen wurde ; • eine Gültigkeitsprüfung der AblaufSignatur durchzuführen wenn diese empfangen wurde ; • die weitere Steuereinheit aufzufordern, das Programm zu reinitialisieren, wenn die Gültigkeitsprüfung negativ ausfällt oder bis zum zweiten Referenz zeitpunk keine AblaufSignatur empfangen wurde ; • das Steuersignal an einem Ausgang der Steuerschnittstelle auszugeben, wenn die Gültigkeitsprüfung positiv ausfällt ; und • an dem Ausgang der Steuerschnittstelle ein SicherheitsSteuersignal anstatt des Steuersignals auszugeben, wenn die Gültigkeitsprüfung negativ ausfällt oder wenn zum zweiten Referenz Zeitpunkt noch keine AblaufSignatur empfangen wurde . |
Verfahren zur Übergabe von zumindest einem Übergabewert ,
Verfahren zur Übergabe zumindest eines Übergabewerts von einem ersten Programm an ein zweites Programm, Verfahren zur Überprüfung der Funktionstüchtigkeit eines Programms und Überprüfungseinheiten für diese Verfahren
Die Erfindung betrifft Verfahren zur Übergabe von zumindest einem Übergabewert, Verfahren zur Übergabe zumindest eines Übergabewerts von einem ersten Programm an ein zweites
Programm, Verfahren zur Überprüfung der Funktionstüchtigkeit eines Programms und Überprüfungseinherten für diese
Verfahren .
Es ist bekannt, Überprüfungseinheiten (Watchdogs ) ,
einzusetzen, um Programme auf ihren korrekten Programmablauf hin zu überprüfen und diese gegebenenfalls zu
reinitialisieren (neu zu starten und/oder auf alternative Hardware zu verlegen) oder Warnmeldungen zu erzeugen . In Umgebungen, in denen eine Kette von Programmen, die
beispielsweise auf unterschiedlichen Recheneinheiten (oder Steuereinheiten) ausgeführt werden, in Abhängigkeit
voneinander laufen, wobei beispielsweise zumindest eines der Programme Ausgäbewerte erzeugt , die von zumindest einem anderen der Programme für eine weitere Verarbeitung genutzt werden, ist es bekannt , einen einzelnen Watchdog einzusetzen, der eingerichtet ist , die Gruppe von Programmen gemeinsam mittels einer einzigen Überprüfung auf einen korrekten
Programmablauf hin zu überprüfen .
Verschiedene Ausführungsbeispiele stellen eine zuverlässige Überprüfung der Funktionsfähigkeit und/oder Sicherheit von verketteten Programmen bereit . Weiter können verschiedene Ausführungsbeispiele eine hohe Flexibilität ermöglichen . In verschiedenen Ausführungsbeispielen sind die Programme kodiert, beispielsweise gemäß dem so genannten AN--Code oder dem so genannten ANB-Code oder einem anderen geeigneten Code, beispielsweise dem so genannten Delta-Code. Alle
beschriebenen Verfahren können auf solchermaßen kodierte Programme ausgeführt werden.
Gemäß verschiedenen Ausführungsformen wird ein Verfahren zur Übergabe zumindest eines Übergäbewerts von einem ersten
Programm an ein zweites Programm bereitgestellt , wobei das Verfahren aufweist : Erzeugen des zumindest einen
Übergabewerts mittels des ersten Programms ; Bereitstellen zumindest einer AblaufSignatur des Erzeugens , welche dem zumindest einen Übergäbewert zugeordnet ist , mittels des ersten Programms ; Übermitteln zumindest der zumindest einen AblaufSignatur an eine Überprüfungsinstanz ; Bereitstellen zumindest einer Referenzsignatur, welche einen störungsfreien Ablauf des Erzeugens repräsentiert ; Überprüfen der zumindest einen AblaufSignatur auf Grundlage der zumindest einen
Referenz Signatur mittels der Überprüfungsinstanz ;
Bereitstellen eines Bestätigungscodes mittels der
Überprüfungsinstanz , wenn das Überprüfen der zumindest einen ProgrammablaufSignatur ein positives Ergebnis liefert ;
Übermitteln zumindest des Übergäbewerts und des
Bestätigungscodes an das zweite Programm; Bereitstellen eines Referenzcodes , welcher einen störungsfreien Ablauf des
Überprüfens der zumindest einen AblaufSignatur repräsentiert ; Überprüfen des Bestätigungscodes auf Grundlage des
Referenzcodes durch das zweite Programm; Verarbeiten des zumindest einen Übergäbewerts mittels des zweiten Programms , wenn das Überprüfen des zumindest einen Bestätigungscodes ein positives Ergebnis liefert .
Unter einem „Programm" (beispielsweise erstes und zweites Programm) kann beispielsweise eine Anwendung, eine
Applikation oder ein Steuerprogramm verstanden werden .
Beispielsweise weist das Programm zumindest eine Rechenanweisung (Multiplikation, Division, Addition,
Subtraktion, Modulusbildung, usw . ) auf. Das Programm kann softwareimplementiert , beispielsweise in Form von Anweisungen (insbesondere Rechenanweisungen) in einem Speicher, die mittels einer Vielzweck-Recheneinheit (beispielsweise mittels einer CPU oder Multi-purpose-CPU) ausgeführt werden, oder hardwareimplementiert , beispielsweise in Form einer Spezial ¬ Recheneinheit , in der aus zuführende Anweisungen, insbesondere Rechenanweisungen, fest vorgegeben sind (beispielsweise mittels einer Anwendungsspezifischen integrierten Schaltung - einem ASIC) , sein . Beispielsweise ist das Programm
eingerichtet , bei seiner Ausführung zumindest einen
anwendungsspezifischen Startwert , beispielsweise zumindest einen Eingangswert ( Input , bspw . Übergäbewert anderer
Programme ) und/oder zumindest einen internen, beispielsweise zufälligen, Wert , zu verarbeiten und zumindest einen
anwendungsspezifischen Endwert (Output , bspw . Übergäbewert an andere Programme ) zu erzeugen . Unter einer Ausführung von Aktionen „mittels" eines Programms kann beispielsweise verstanden werden, dass zur Ausführung der Aktion das
Programm von einer Recheneinheit ausgeführt wird .
Beispielsweise erfolgt das Erzeugen des zumindest einen
Übergabewerts in Abhängigkeit von zumindest einem
Eingangswert .
Unter einer „Recheneinheit" kann beispielsweise eine Einheit verstanden werden, die dazu eingerichtet ist , Startwerte (bspw . Eingangswerte) zu verarbeiten, beispielsweise auf Basis der Startwerte Endwerte zu erzeugen ( zu generieren, zu berechnen) . Beispielsweise ist die Recheneinheit als eine
Steuereinheit zur Steuerung und/oder Regelung zumindest einer externen Vorrichtung (beispielsweise Maschine , insbesondere Motor, Getriebe, Bremse, Kupplung, oder Digital-Analog- Wandler...) eingerichtet . Beispielsweise weist die
Recheneinheit zumindest eine Prozessoreinheit (beispielsweise CPU oder ASIC) zur Durchführung zumindest einer
Rechenoperation auf . Beispielsweise weist die Recheneinheit zumindest eine Speichereinheit zur Ablage von Daten auf.
Beispielsweise ist das Programm zumindest zu einer Ausführung in der Speichereinheit abgelegt . Beispielsweise wird das erste Programm von einer ersten Recheneinheit und das zweite Programm von einer zweiten Recheneinheit ausgeführt .
Beispielsweise sind die erste und zweite Recheneinheit verschieden voneinander . Beispielsweise wird das erste und/oder die zweite Programm in einer Enklave ausgeführt . Unter einer „Überprüfungsinstanz" kann beispielsweise ein Programm verstanden werden, das eingerichtet ist , ein
Verfahren zur Überprüfung des Ablaufs eines anderen Programms auszuführen . Beispielsweise wird die Überprüfungsinstanz von einer Überprüfungseinheit ausgeführt . Unter einer
„Überprüfungseinheit" kann beispielsweise eine Recheneinheit verstanden werden, die eingerichtet ist , eine
Überprüfungsinstanz aus zuführen . Beispielsweise ist die
Überprüfungseinheit eingerichtet , mit einer Recheneinheit , die das zu überprüfende Programm ausführt zu kommuni z ieren . Beispielsweise ist die Überprüfungseinheit eingerichtet , der Recheneinheit Anweisungen zu übermitteln, die einen Ablauf des Programms beeinflussen . Beispielsweise ist die
Überprüfungseinheit eingerichtet , die Ausführung des
Programms auf eine veränderte Hardware (insbesondere komplett andere Recheneinheit ) zu verschieben . Beispielsweise ist die erste Recheneinheit verschieden von der Überprüfungseinheit . Beispielsweise ist die zweite Recheneinheit verschieden von der Überprüfungseinheit . Gemäß einer weiteren Ausgestaltung werden die Überprüfungsinstanz und zumindest das erste
Programm von einer gleichen Recheneinheit ausgeführt .
Beispielsweise wird zumindest die Überprüfungsinstanz in einer Enklave (bspw . Intel SGX-Enclave) ausgeführt .
Beispielsweise wird die Überprüfungsinstanz von einem Field Programmable Gate Array (FPGA) ausgeführt . Beispielsweise ist das FPGA Teil einer Viel-Zweck-Prozesseinheit (CPU) . Unter einer „Enklave" kann beispielsweise ein Teil einer Recheneinheit verstanden werden, der zumindest einen
geschützten Speicherbereich aufweist . Beispielsweise ist ein Programm (das erste Programm, das zweite Programm, die
Überprüfungsinstanz ) in dem geschützten Speicherbereich hinterlegt . Beispielsweise hat selbst die Prozesseinheit der Recheneinheit lediglich dann Zugriff auf den geschützten Speicherbereich, wenn dieser Zugriff von Anweisungen verlangt wird, die innerhalb des geschützten Speicherbereichs ihren Ursprung haben . Der geschützte Speicherbereich kann
beispielsweise lediglich durch einen Befehl , der in dem geschützten Speicherbereich seinen Ursprung hat , von seinem Schutz befreit werden . Beispielsweise wird der
Speicherbereich durch eine Anweisung der Überprüfungsinstanz , beispielsweise bei einer Initialisierung des Programms geschützt . Es kann beispielsweise eine hohe Resistenz gegen Störereingriffe erreicht werden .
Unter einer „AblaufSignatur" des Erzeugens eines Werts mittels eines Programms kann beispielsweise eine Kenngröße des Ablaufs des Programms verstanden werden . Beispielsweise entspricht zumindest eine AblaufSignatur einer gezählten Anzahl an von der Recheneinheit bei Ausführung des Programms ausgeführten Anweisungen . Beispielsweise entspricht die
AblaufSignatur einem Wert oder einer Gruppe von Werten .
Beispielsweise ist das (erste) Programm eingerichtet ,
parallel zur Verarbeitung zumindest eines Eingangswerts zur Erzeugung des zumindest einen Endwerts einen vorgegeben
Initialwert zu verarbeiten, um die AblaufSignatur
bereitzustellen. Beispielsweise ist die Verarbeitung des Initialwerts mit der Verarbeitung des zumindest einen
Startwerts derart verknüpft , dass bei einer korrekten
Berechnung des zumindest einen Endwerts , beispielsweise durch korrekte Abarbeitung des Programms und/oder fehlerfreiem arbeiten der Recheneinheit (bspw . defektfreier Prozessor und defektfreie Speichereinheit ) , der Initialwert selbst als AblaufSignatur bereitgestellt wird, und dass bei fehlerbehafteter Berechnung des zumindest einen Endwerts ein vom Initialwert verschiedener Wert als AblaufSignatur bereitgestellt wird. Beispielsweise ist das erste Programm eingerichtet , eine Gruppe von Übergäbewerten zu Erzeugen . Beispielsweise ist das erste Programm eingerichtet , für jeden der Übergäbewerte der Gruppe eine separate AblaufSignatur bereitzustellen. Beispielsweise ist das erste Programm eingerichtet , für die Gruppe von Übergäbewerten eine einzelne AblaufSignatur bereitzustellen.
Die Referenz Signatur kann von der Überprüfungsinstanz bereitgestellt werden . Beispielsweise sind das erste Programm und die Überprüfungsinstanz eingerichtet , bei einer
Initialisierung einer DatenVerbindung zwischen diesen, die Referenz Signaturen auszuhandeln . Beispielsweise ist das erste Programm eingerichtet , der Überprüfungsinstanz zumindest eine Referenz Signatur und/oder eine Liste von Referenz Signaturen zu übermitteln, anhand derer die Überprüfungseinheit die zumindest eine AblaufSignatur überprüft . Beispielsweise ist die Überprüfungsinstanz eingerichtet , dem ersten Programm eine Reihe geeigneter Bereitstellungsvorschriften zur
Bereitstellung von Referenz Signaturen zur Auswahl zu stellen oder umgekehrt . Beispielsweise sind dem ersten Programm und der Überprüfungsinstanz jeweils eine Menge von
Bereitstellungsvorschriften zur Bereitstellung der
Referenz Signaturen bekannt und das erste Programm und die Überprüfungsinstanz sind eingerichtet , zufällig eine der Bereitstellungsvorschriften die in beiden Mengen vorliegt zu bestimmen, die für die Bereitstellung der zumindest einen Referenz Signatur verwendet wird . Beispielsweise ist das erste Programm eingerichtet , den Initialwert anhand der
Bereitstellungsvorschrift zur Erzeugung der Referenz Signatur festzulegen . Das erste Programm kann als Bereitschaffsprogramm
eingerichtet sein . Beispielsweise ist das erste Programm dazu eingerichtet , wiederholt , beispielsweise bei Empfang neuer Startwerte und/oder periodisch, Endwerte (Übergabewerte) zu erzeugen. So kann das erste Programm einen Programmabschnitt aufweisen, der zur Erzeugung des zumindest einen Endwerts (Übergabewerts ) eingerichtet ist . Beispielsweise ist die Bereitstellungsvorschrift eingerichtet , für wiederholte Ausführungen des Programmabschnitts unterschiedliche
Referenz Signaturen bereitzustellen . Beispielsweise ist eine ausgehandelte Bereitstellungsvorschrift zur Erzeugung von Referenz Signaturen eine iterative Bereitstellungsvorschrift , die beispielsweise die Referenz Signatur einer vorangegangen Ausführung des Programmabschnitts als Basiswert für eine Berechnung der Referenz Signatur für eine aktuelle Ausführung des Programmabschnitts verwendet . Beispielsweise ist das erste Programm eingerichtet , gemeinsam mit der zumindest einen AblaufSignatur zumindest einen Index zu übermitteln, der mit jeder weiteren Übermittlung, insbesondere um 1 , erhöht wird . Insbesondere ist mittels des Index und der Bereitstellungsvorschrift die Referenz Signatur eindeutig festgelegt .
Hierdurch kann beispielsweise eine erhöhte Sicherheit gegenüber einem Störereingriff (Hackerangriff) erreicht werden, da beispielsweise eine Erzeugung einer gefälschten AblaufSignatur erschwert wird .
Beispielsweise ist die Überprüfungsinstanz eingerichtet , den Bestätigungscode bereitzustellen, wenn die Referenz Signatur mit der AblaufSignatur übereinstimmt . Gemäß einer Ausgestaltung erfolgt das Übermitteln der
AblaufSignatur an die Überprüfungsinstanz mittels einer ersten DatenVerbindung, die das erste Programm mit der
Überprüfungsinstanz verbindet . Beispielsweise weisen eine Recheneinheit , die das erste Programm ausführt und die
Überprüfungseinheit , die die Überprüfungsinstanz ausführt , jeweils zumindest eine Kommunikationsschnittstelle auf .
Beispielsweise ist die erste DatenVerbindung eine verschlüsselte Datenverbindung. Beispielsweise ist die erste DatenVerbindung mittels eines symmetrischen
VerschlüsselungsVerfahrens verschlüsselt . Beispielsweise ist das erste Programm eingerichtet , eine Initialisierung der DatenVerbindung mit der Überprüfungseinheit durchzuführen . Beispielsweise wird während der Initialisierung ein Diffie- Hellman-Schlüsselaustausch durchgeführt . Beispielsweise ist die erste DatenVerbindung zumindest während der
Initialisierung zumindest in eine Richtung, beispielsweise in Richtung der Überprüfungsinstanz , mittels eines
asymmetrischen VerschlüsselungsVerfahrens verschlüsselt .
Beispielsweise wird ein Schlüssel für eine symmetrische
Verschlüsselung während der Initialisierung ausgehandelt . Hierdurch können Ressourcen gespart werden, da beispielsweise eine asymmetrische Verschlüsselung ressourcenintensiver ist als eine symmetrische Verschlüsselung . Beispielsweise weist zumindest die Überprüfungsinstanz ein Schlüsselzertifikat für eine asymmetrische Verschlüsselung auf . Beispielsweise ist das Schlüsselzertifikat in einer öffentlichen
Zertifizierungsstelle registriert . In einer alternativen Ausgestaltung wird ein asymmetrisches
Verschlüsselungsverfahren für sämtliche Kommunikation über die erste DatenVerbindung verwendet . Beispielsweise umfasst die erste DatenVerbindung zumindest eines von den folgenden : NetzwerkVerbindung (z.B. TCP ) , Systembusverbindung,
SystemperipherieVerbindung (z.B. USB) ,
Interprozesskommunikation (IPC), gemeinsamer Speicher ( shared Memory) , ZeroMQ-Verbindung . Es kann insbesondere eine hohe Sicherheit gegenüber Störereingriffen und/oder eine hohe Vertraulichkeit erreicht werden .
Gemäß einer weiteren Ausgestaltung wird vorgeschlagen, dass das Übermitteln des Übergäbewerts an das zweite Programm mittels einer zweiten DatenVerbindung erfolgt , die das erste Programm mit dem zweiten Programm verbindet . Beispielsweise weist die zweite DatenVerbindung zumindest eine der folgenden Arten von Verbindungen auf : Net zwerkVerbindung (z.B. TCP ) , Systembusverbindung, Systemperipherieverbindung (z.B. USB), Interprozesskommunikation ( IPC) , gemeinsamer Speicher ( shared Memory) , ZeroMQ-Verbindung . Beispielsweise ist die zweite DatenVerbindung eine verschlüsselte Datenverbindung . Das erste und das zweite Programm können eingerichtet sein, bei einer Initialisierung der zweiten DatenVerbindung eine
Verschlüsselungsmethode und/oder einen Schlüssel
auszuhandeln . Beispielsweise wird während der Initialisierung ein Diffie-Hellman-Schlüsselaustausch durchgeführt . Es kann auf diese Weise eine hohe Sicherheit gegenüber
Störereingriffen und/oder eine hohe Vertraulichkeit erreicht werden .
Gemäß einer Ausgestaltung erfolgt das Übermitteln des
Bestätigungscodes von der Überprüfungsinstanz zum zweiten Programm mittels der ersten DatenVerbindung und der zweiten Datenverbindung . Beispielsweise übermittelt die
Überprüfungsinstanz zumindest den Bestätigungscode an das erste Programm mittels der ersten Datenverbindung . Das erste Programm kann den Übergäbewert gemeinsam mit dem zumindest einen Bestätigungscode an das zweite Programm mittels der zweiten DatenVerbindung übermitteln . Es kann eine
Erreichbarkeit der Überprüfungsinstanz sichergestellt werden . Weiterhin kann vermieden werden, dass Übergäbewert und
Bestätigungscode einander nicht zuordenbar sind, wenn diese gemeinsam übermittelt werden . Gemäß einer alternativen
Ausgestaltung wird vorgeschlagen, dass die
Überprüfungsinstanz und das zweite Programm eingerichtet sind, eine dritte DatenVerbindung herzustellen, über die zumindest der Bestätigungscode übermittelt wird .
Gemäß einer weiteren Ausgestaltung weist das Übermitteln zumindest der AblaufSignatur an die Überprüfungseinhert ein Übermitteln zumindest einer Kenngröße des zumindest einen Übergabewerts auf . So kann die Kenngröße der Übergäbewert selbst sein . Beispielsweise ist die Kenngröße ein Hash-Wert des Übergabewerts . Beispielsweise ist die Kenngröße das Resultat eines Kodierens des zumindest einen Übergabewerts mittels eines ersten Schlüssels und zumindest einer ersten Kodierungsfunktion . Beispielsweise ist der erste Schlüssel ein Schlüssel der zweiten Daten erbindung (beispielsweise der symmetrische Schlüssel der zweiten DatenVerbindung) .
Beispielsweise ist die erste Kodierungsfunktion eine
Verschlüsselungsfunktion und/oder eine Hashfunktion,
beispielsweise eine Blockverschlüsselung . Beispielsweise ist die Kenngröße ein Nachrichtenauthentifizierungscode (Message Authentication Code/MAC) des Übergabewerts . Durch Vermeiden der Übermittlung des Übergäbewerts an sich kann
beispielsweise eine hohe Vertraulichkeit hergestellt werden . Weiterhin kann eine geringere Nachrichtenlänge erreicht werden .
Gemäß einer weiteren Ausgestaltung wird der Bestätigungscode mittels Kodierens zumindest der Kenngröße mittels eines zweiten Schlüssels und einer zweiten Kodierungsfunktion bereitgestellt . So kann der zweite Schlüssel ein Schlüssel sein, der zwischen der Überprüfungsinstanz und dem zweiten Programm ausgehandelt wurde . Beispielsweise ist die zweite Kodierungsfunktion eine Verschlüsselungsfunktion und/oder eine Hashfunktion, beispielsweise eine
Blockverschlüsselungsfunktion . Beispielsweise ist der
Bestätigungscode ein Nachrichtenauthentifizierungscode
(Message Authentication Code/MAC) zumindest der Kenngröße . Es kann auf diese Weise eine geringere Nachrichtenlänge erreicht werden . Dem zweiten Programm kann bekannt sein, welche erste und zweite Kodierungsfunktionen und welche ersten Schlüssel und zweiten Schlüssel verwenden wurden . Beispielsweise umfasst das Überprüfen des Bestätigungscodes zumindest ein Anwenden der ersten Kodierungsfunktion und der zweiten
Kodierungsfunktion zumindest auf den Übergabewert . Weiterhin kann zwischen der Überprüfungsinstanz und dem zweiten
Programm eine Signatursequenz , beispielsweise mittels einer iterativen Bereitstellungsvorschrift , ausgehandelt werden, wobei die Überprüfungsinstanz eingerichtet ist, ein Element der Signatursequenz als Bestätigungscode zu übermitteln .
Beispielsweise umfasst das Übermitteln des zumindest einen Übergabewerts an das zweite Programm ein Übermitteln der zumindest einen Kenngröße . Es kann eine vereinfachte
Überprüfung des Bestätigungscodes erreicht werden . Es kann eine erhöhte Sicherheit , beispielsweise gegenüber einem
Störereingriff, erreicht werden .
Ferner kann das Verfahren ferner aufweisen : Reinitialisieren des ersten Programms , wenn das Überprüfen der zumindest einen ProgrammablaufSignatur ein negatives Ergebnis liefert .
Beispielsweise wird das erste Programm auf derselben
Recheneinheit , auf der es zuvor ausgeführt wurde, neu
gestartet . So kann das Reinitialisieren ein Neu-Starten des ersten Programms auf einer veränderten Recheneinheit
beinhalten . Beispielsweise ist die erste Recheneinheit eingerichtet , Ressourcen, beispielsweise Speicherbereiche und/oder Prozessorkerne einer Prozesseinheit , zu sperren, wenn festgestellt wurde, dass eine Ausführung des ersten Programms auf dieses Ressourcen, beispielsweise einmalig oder beispielsweise reproduzierbar, zu einem Bereitstellen von ungültigen AblaufSignaturen führt . Beispielsweise ist die Überprüfungsinstanz (die Überprüfungseinheit ) eingerichtet , das erste Programm auf einer Ersat zrecheneinheit neu zu starten, die die erste Recheneinheit ersetzt . Das erste
Programm kann eingerichtet sein, beispielsweise in
regelmäßigen Abständen, einen Programmzustand, beispielsweise ein Speicherabbild des Programms , abzuspeichern . Das erste Programm kann eingerichtet sein, den Programmzustand nach einer Reinitialisierung anhand des abgespeicherten
Programmzustands wieder herzustellen . Es kann auf diese Weise eine hohe Zuverlässigkeit erreicht werden .
Das Verfahren kann ferner aufweisen : Speichern einer
Zustandskenngröße, beispielsweise das Speicherbild oder eine Versionsnummer des Speicherabbilds, des ersten Programms in der Überprüfungsinstanz , wenn das Überprüfen der zumindest einen ProgrammablaufSignatur ein positives Ergebnis liefert und Übermittlung der gespeicherten Zustandskenngroße an das erste Programm nach erfolgtem Reinitialisieren des ersten Programms . Das erste Programm kann eingerichtet sein, die Zustandskenngroße mit dem gespeicherten Speicherabbild zu vergleichen . Das erste Programm kann ferner eingerichtet sein, auf eine Wiederherstellung des Speicherabbilds zu verzichten, wenn anhand der Zustandskenngroße erkannt wird, dass das Speicherabbild veraltet ist . Es kann beispielsweise ein Störereingriff (beispielsweise Roll-Back-Attacke) erkannt werden . Das zweite Programm kann eingerichtet sein, den Übergäbewert zu verwerfen, wenn das Überprüfen des zumindest einen
Bestätigungscodes ein negatives Ergebnis liefert .
Beispielsweise kann eine verbesserte Sicherheit erreicht werden, da Übertragungsfehler und/oder Störereingriffe erkannt werden können . Weiterhin kann das zweite Programm eingerichtet sein, den Übergäbewert zu verwerfen, wenn dieser ohne zugehörigen Bestätigungscode erhalten wurde .
Ferner kann das Übermitteln des Bestätigungscodes an das zweite Programm eine Übermittlung eines durch die
Überprüfungseinheit generierten ersten Zeitstempeis
aufweisen . Das Verfahren kann ferner aufweisen ein Verwerfen des Übergabewerts , wenn der erste ZeitStempel älter ist als ein zuvor empfangener ZeitStempel , oder auch als ein
vorgegebener (absoluter oder relativer) Zeitwert . Auf diese Weise kann eine gewisse Aktualität des Bestätigungscodes gewährleistet werden und ein Angriff basierend auf einem „Einschleusen" eines „veralteten" und somit nicht mehr gültigen Bestätigungscodes wirksam abgewehrt werden .
Das Verfahren kann ferner aufweisen ein Festlegen eines ersten Referenz Zeitpunkts , zu dem eine Übermittlung der AblaufSignatur vom ersten Programm zur Überprüfungsinstanz erfolgt sein soll ; und ein Bereitstellen von zusätzlichen Ressourcen zur Ausführung des ersten Programms , wenn zum ersten Referenz Zeitpunkt keine AblaufSignatur empfangen wurde . Dies ermöglicht eine äußerst bedarfsangepasste
RessourcenVerteilung der verfügbaren Hardware an die
Abarbeitung der Programme und der Erzeugung der
AblaufSignatur (en) .
Das Verfahren kann ferner aufweisen ein Festlegen eines zweiten Referenz Zeitpunkts , zu dem eine Übermittlung der AblaufSignatur vom ersten Programm zur Überprüfungsinstanz erfolgt sein soll ; und ein Reinitialisieren des ersten
Programms , wenn zum zweiten Referenz Zeitpunkt keine
AblaufSignatur empfangen wurde . Auch diese Ausgestaltung dient der Gewährleistung der Aktualität der
Programmüberprüfung und der zeitnahen Überprüfung der
AblaufSignatur . Als zusätzliche Sicherheitsmaßnahme kann das Reinitialisieren des ersten Programms vorgesehen sein .
Das Verfahren kann ferner aufweisen ein Festlegen eines ersten Referenz Zeitpunkts , zu dem eine Übermittlung der
AblaufSignatur vom ersten Programm zur Überprüfungsinstanz erfolgt sein soll ; ein Bereitstellen von zusätzlichen
Ressourcen zur Ausführung des ersten Programms und Festlegen eines zweiten Referenz Zeitpunkts , zu dem eine Übermittlung der AblaufSignatur vom ersten Programm zur
Überprüfungsinstanz erfolgt sein soll , wenn zum ersten
Referenz Zeitpunkt keine AblaufSignatur empfangen wurde ; und ein Reinitialisieren des ersten Programms , wenn zum zweiten Referenz Zeitpunkt keine AblaufSignatur empfangen wurde .
In verschiedenen Ausführungsformen wird ein Verfahren zur Übergabe von zumindest einem Übergäbewert bereitgestellt . Das Verfahren kann aufweisen : Erzeugen zumindest des einen
Übergabewerts ; Bereitstellen zumindest einer AblaufSignatur des Erzeugens , welche dem zumindest einen Übergäbewert zugeordnet ist; Bereitstellen zumindest einer
Referenzsignatur, welche einen störungsfreien Ablauf des Erzeugens repräsentiert ; Überprüfen der zumindest einen AblaufSignatur auf Grundlage der zumindest einen
Referenz Signatur mittels der Überprüfungsinstanz ;
Bereitstellen eines Bestätigungscodes, wenn das Überprüfen der zumindest einen ProgrammablaufSignatur ein positives Ergebnis liefert ; Bereitstellen eines Referenzcodes , welcher einen störungsfreien Ablauf des Überprüfens der zumindest einen AblaufSignatur repräsentiert ; und Überprüfen des Bestätigungscodes auf Grundlage des Referenzcodes ;
Verarbeiten des zumindest einen Übergabewerts , wenn das Überprüfen des zumindest einen Bestätigungscodes ein
positives Ergebnis liefert .
In verschiedenen Ausführungsformen wird eine
Überprüfungseinheit bereitgestellt , aufweisend : zumindest eine Recheneinheit , die eingerichtet ist , eine
Überprüfungsinstanz aus zuführen zur Durchführung des
Verfahrens , wie es oben beschrieben wurde oder im Folgenden noch erläutert wird .
Die Recheneinheit kann eingerichtet sein, die
Überprüfungsinstanz in einer Enklave aus zuführen . Damit kann die Sicherheit der Überprüfungseinheit und der damit
verknüpften Programmüberprüfung weiter erhöht werden .
In verschiedenen Ausführungsformen wird eine
Überprüfungseinheit bereitgestellt mit einer Recheneinheit und einer Kommunikationseinheit , die eingerichtet ist , eine Kommunikation zwischen der Recheneinheit und zumindest einem ersten Programm herzustellen und eine Kommunikation zwischen der Recheneinheit und zumindest einem zweiten Programm herzustellen, wobei die Recheneinheit eingerichtet ist , für das erste Programm eine erste Überprüfungsinstanz
auszuführen, die eingerichtet ist , einen korrekten
Programmablauf des ersten Programms zu überprüfen und unabhängig von der zweiten Überprüfungsinstanz eine zweite Überprüfungsinstanz auszuführen, die eingerichtet ist , einen korrekten Programmablauf des zweiten Programms zu überprüfen .
In einer Ausgestaltung kann die Überprüfungseinheit zumindest ein Zertifikat aufweisen, das zumindest beim Aufbau der
Kommunikation zwischen der Recheneinheit und dem ersten
Programm und/oder dem zweiten Programm, die Kommunikation authentifiziert . Auf diese Weise wird die kryptographische Sicherheit der Programmüberprüfung weiter erhöht .
In verschiedenen Ausführungsformen wird ein Verfahren zur Überprüfung der Funktionstüchtigkeit eines Programms
bereitgestellt . Das Verfahren kann aufweisen : ein Festlegen eines Referenz Zeitpunkts , zu dem eine Ausgabe mittels des Programms erfolgt sein soll ; ein Überwachen des Programms zumindest auf einen Zeitpunkt der Ausgabe ; und ein
Bereitstellen von zusätzlichen Ressourcen zur Ausführung des Programms , wenn die Überwachung feststellt , das zum
Referenz Zeitpunkt noch keine Ausgabe von dem Programm erfolgt ist .
In verschiedenen Ausführungsformen wird eine
Überprüfungseinheit mit zumindest einer Steuereinheit
bereitgestellt , die eingerichtet ist : eine AblaufSignatur zu empfangen, die von einem Programm gesendet wird, das auf einer weiteren Steuereinheit ausgeführt wird; eine
Gültigkeitsprüfung der AblaufSignatur durchzuführen wenn diese empfangen wurde ; die weitere Steuereinheit
aufzufordern, das Programm zu reinitialisieren, wenn die Gültigkeitsprüfung negativ ausfiel ; einen ersten
Referenz Zeitpunkt festzulegen, zu dem die AblaufSignatur empfangen sein soll ; und die weitere Steuereinheit
aufzufordern, zusätzliche Ressourcen zur Ausführung des
Programms bereitzustellen, wenn zum ersten Referenz Zeitpunkt noch keine AblaufSignatur empfangen wurde . In verschiedenen Ausführungsformen wird eine
Überprüfungseinheit mit zumindest einer Steuerschnittstelle, und zumindest einer Steuereinheit bereitgestellt , die
eingerichtet ist : eine AblaufSignatur zu empfangen, die von einem Programm gesendet wird, das auf einer weiteren
Steuereinheit ausgeführt wird; einen Empfang eines
Steuersignals , das von der Steuereinheit , mittels des
Programms , ermittelt und ausgegeben wird, an einem Eingang der Steuerschnittstelle zu detektieren; eine
Gültigkeitsprüfung der AblaufSignatur durchzuführen wenn diese empfangen wurde ; die weitere Steuereinheit
aufzufordern, das Programm zu reinitialisieren, wenn die Gültigkeitsprüfung negativ ausfiel ; einen zweiten
Referenz Zeitpunkt festzulegen, zu dem die AblaufSignatur empfangen sein soll ; das Steuersignal an einem Ausgang der Steuerschnittstelle auszugeben, wenn die Gültigkeitsprüfung positiv ausfällt ; an dem Ausgang der Steuerschnittstelle ein SicherheitsSteuersignal anstatt des Steuersignals auszugeben, wenn die Gültigkeitsprüfung negativ ausfällt oder wenn zum zweiten Referenz Zeitpunkt noch keine AblaufSignatur empfangen wurde .
In verschiedenen Ausführungsformen wird eine
Überprüfungseinheit mit zumindest einer Steuerschnittstelle und zumindest einer Steuereinheit bereitgestellt , die
eingerichtet ist : eine AblaufSignatur zu empfangen, die von einem Programm gesendet wird, das auf einer weiteren
Steuereinheit ausgeführt wird; einen Empfang eines
Steuersignals , das von der Steuereinheit , mittels des
Programms , ermittelt und ausgegeben wird, an einem Eingang der Steuerschnittstelle zu detektieren; einen ersten
Referenz Zeitpunkt festzulegen, zu dem die AblaufSignatur empfangen sein soll ; die weitere Steuereinheit aufzufordern, zusätzliche Ressourcen zur Ausführung des Programms
bereitzustellen und einen zweiten Referenz Zeitpunkt
festzulegen, zu dem die AblaufSignatur empfangen sein soll , wenn zum ersten Referenz zeitpunk noch keine AblaufSignatur empfangen wurde; eine Gültigkeitsprüfung der AblaufSignatur durchzuführen wenn diese empfangen wurde; die weitere
Steuereinheit aufzufordern, das Programm zu reinitialisieren, wenn die Gültigkeitsprüfung negativ ausfällt oder bis zum zweiten Referenz zeitpunk keine AblaufSignatur empfangen wurde ; das Steuersignal an einem Ausgang der
Steuerschnittstelle auszugeben, wenn die Gültigkeitsprüfung positiv ausfällt ; an dem Ausgang der Steuerschnittstelle ein SicherheitsSteuersignal anstatt des Steuersignals auszugeben, wenn die Gültigkeitsprüfung negativ ausfällt oder wenn zum zweiten Referenz Zeitpunkt noch keine AblaufSignatur empfangen wurde .
Die Steuereinheit kann ferner eingerichtet sein, an dem
Ausgang der Steuerschnittstelle ein SicherheitsSteuersignal anstatt des Steuersignals auszugeben, wenn bis zum zweiten Referenz Zeitpunkt keine Veränderung des Steuersignals
detektiert wird . Ausführungsbeispiele der Erfindung sind in den Figuren dargestellt und werden im Folgenden näher erläutert .
Es zeigen Figur 1 eine erste Überprüfungseinheit (auch bezeichnet als „Guardian" ) zur Überprüfung von Programmen, die auf einer Recheneinheit separat zur Überprüfungseinheit ausgeführt werden; Figur 2 eine zweite Überprüfungseinheit zur Überprüfung von
Programmen, die auf einer Recheneinheit ausgeführt werden, die Teil der Überprüfungseinheit ist ;
Figur 3 eine dritte Überprüfungseinheit , implementiert
mittels eines Field Programmable Gate Array einer Prozessoreinheit ; Figur 4 eine vierte Überprüfungseinheit;
Figur 5 eine Übermittlung eines Übergäbewerten zwischen zwei
Programmen unter Verwendung einer fünften
Überprüfungseinheit ; und
Figur 6 eine sechste Überprüfungseinheit zur sicheren
Weitergabe von Steuersignalen . In der folgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die Teil dieser bilden und in denen zur Veranschaulichung spezifische
Ausführungsformen gezeigt sind, in denen die Erfindung ausgeübt werden kann. In dieser Hinsicht wird
Riehtungsterminologie wie etwa „oben" , „unten" , „vorne" , „hinten" , „vorderes" , „hinteres" , usw . mit Bezug auf die Orientierung der beschriebenen Figur (en) verwendet . Da
Komponenten von Ausführungsformen in einer Anzahl
verschiedener Orientierungen positioniert werden können, dient die Riehtungsterminologie zur Veranschaulichung und ist auf keinerlei Weise einschränkend . Es versteht sich, dass andere Ausführungsformen benutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne von dem Schut zumfang der vorliegenden Erfindung abzuweichen . Es versteht sich, dass die Merkmale der hierin beschriebenen verschiedenen beispielhaften Ausführungsformen miteinander kombiniert werden können, sofern nicht spezifisch anders angegeben . Die folgende ausführliche Beschreibung ist deshalb nicht in einschränkendem Sinne aufzufassen, und der
Schut zumfang der vorliegenden Erfindung wird durch die angefügten Ansprüche definiert .
Im Rahmen dieser Beschreibung werden die Begriffe
"verbunden" , "angeschlossen" sowie "gekoppelt " verwendet zum Beschreiben sowohl einer direkten als auch einer indirekten Verbindung, eines direkten oder indirekten Anschlusses sowie einer direkten oder indirekten Kopplung . In den Figuren werden identische oder ähnliche Elemente mit identischen Bezugs zeichen versehen, soweit dies zweckmäßig ist .
Fig.1 zeigt beispielhaft eine erste Überprüfungseinheit 100. Die Überprüfungseinheit 100 weist eine Recheneinheit 110 und eine Kommunikationseinheit auf, die eingerichtet ist , eine Kommunikation zwischen der Recheneinheit 110 und zumindest zwei , beispielsweise zumindest vier, beispielsweise beliebig vielen, Programmen (beispielsweise Applikationsprogrammen) 101, 102, 103, 104 herzustellen . Die Kommunikationseinheit ist eingerichtet , eine Kommunikation zwischen der
Recheneinheit 110 und einem ersten Programm 101, einem zweiten Programm 102, einem dritten Programm 103, und einem vierten Programm 104 herzustellen . Die Recheneinheit 110 ist eingerichtet , für das erste Programm 101 eine erste
Überprüfungsinstanz III auszuführen, die eingerichtet ist , einen korrekten Programmablauf des ersten Programms 101 zu überprüfen . Die erste Überprüfungsinstanz 101 ist dazu eingerichtet , erste AblaufSignaturen 121 (auch bezeichnet als erste ProgrammablaufSignaturen) des ersten Programms 101 zu empfangen und mit Referenz Signaturen zu vergleichen . Die Recheneinheit 110 ist eingerichtet unabhängig von der ersten Überprüfungsinstanz III eine zweite Überprüfungsinstanz 112 auszuführen, die eingerichtet ist , einen korrekten
Programmablauf des zweiten Programms 102 zu überprüfen . Die zweite Überprüfungsinstanz 102 ist dazu eingerichtet , zweite AblaufSignaturen 122 (auch bezeichnet als zweite
ProgrammablaufSignaturen) des zweiten Programms 101 zu empfangen und mit Referenz Signaturen zu vergleichen . Die Überprüfungseinheit 100 ist eingerichtet , unabhängig von der ersten Überprüfungsinstanz III und der zweiten
Überprüfungsinstanzen 112 eine dritte und eine vierte
Überprüfungsinstanz 113, 114 unabhängig voneinander
auszuführen . Die dritte und vierte Überprüfungsinstanz 113, 114 sind jeweils eingerichtet , das dritte, respektive vierte Programm 103, 104 auf einen korrekten Programmablauf hin zu überprüfen . Die dritte und vierte Überprüfungsinstanz 103, 104 sind jeweils eingerichtet, dritte bzw. vierte
AblaufSignaturen 123, 124 (auch bezeichnet als dritte bzw . vierte ProgrammablaufSignaturen) des jeweiligen Programms 103, 104 zu empfangen und mit Referenz Signaturen zu
vergleichen . Die Programme 101, 102, 103, 104 werden von einer ersten Recheneinheit 105 ausgeführt . Die erste
Recheneinheit 105 ist separat von der Überprüfungseinheit 100 ausgebildet . Die erste Recheneinheit 105 kann als Prozessor und Arbeitsspeicher eines Personal Computers (PCs )
ausgestaltet sein, während die Überprüfungseinheit 100 von einem Controller bereitgestellt wird, der mittels eines
Systembusses (beispielsweise PCI/PCIe) mit der Recheneinheit
105 gekoppelt ist . Alternativ kann die erste Recheneinheit 105 ein PC oder ein spezieller Controller ( Steuereinheit , beispielsweise ein Kraftfahrzeugcontroller) sein, während die Überprüfungseinheit 100 als speziell mit der Recheneinheit gekoppelte Peripherieeinheit (beispielsweise Verbunden mittels TCP , USB, IPC, ZeroMQ...) ausgestaltet ist . Alternativ kann die erste Recheneinheit 105 ein PC oder ein spezieller Controller ( Steuereinheit , beispielsweise ein
Kraftfahrzeugcontroller) sein, während die
Überprüfungseinheit 100 als Server ausgestaltet ist wobei die Überprüfungsinstanzen III, 112, 113, 114 als dezentralisierte Anwendungen (in einer Cloud) ausgeführt werden, wobei die Überprüfungseinheit 100 beispielsweise eingerichtet ist , mittels einer Net zwerkVerbindung (LAN, WLAN, Virtual LAN, Internet...) mit der ersten Recheneinheit 105 zu kommunizieren .
In verschiedenen Ausführungsbeispielen sind die Programme kodiert , beispielsweise gemäß dem so genannten AN-Code oder dem so genannten ANB-Code oder einem anderen geeigneten Code, beispielsweise dem so genannten Delta-Code . Alle
beschriebenen Verfahren können auf solchermaßen kodierte Programme ausgeführt werden .
Die Überprüfungsinstanzen III, 112, 113, 114 sind jeweils eingerichtet , die erste Recheneinheit 105 aufzufordern, das jeweilige Programm 101, 102, 103, 104 neu zu starten, wenn ein unkorrekter Programmablauf erkannt wird. Die
Überprüfungsinstanzen III, 112, 113, 114 sind beispielsweise eingerichtet , ein Betriebssystem, unter dem die Programme 101, 102, 103, 104 ausgeführt werden, dazu aufzufordern, das jeweilige Programm neu zu starten .
Die Überprüfungseinheit 100 ist eingerichtet , auf
(beispielsweise genau) eine (empfangene) Anforderung des jeweiligen Programms 101, 102, 103, 104, hin eine
Überprüfungsinstanz III, 112, 113, 114 bereitzustellen . Eine jeweilige Anforderung wird bei einer Initialisierung des jeweiligen Programms 101, 102, 103, 104 an die
Überprüfungseinheit 100 gesendet . Die jeweilige Anforderung wird von der Überprüfungseinheit 100 verarbeitet und dem jeweiligen Programm 101, 102, 103, 104 wird eine
Überprüfungsinstanz III, 112, 113, 114 bereitgestellt .
Beispielsweise weist jede der Überprüfungsinstanzen III, 112, 113, 114, alternativ die Überprüfungseinheit 100, ein
eindeutiges (asymmetrisches ) Verschlüsselungs Zertifikat auf, das insbesondere von einer zentralen Zertifikatsagentur bestätigt (signiert ) ist . Die Überprüfungsinstanzen III, 112, 113, 114 sind eingerichtet , eine verschlüsselte Kommunikation mit dem zugeordneten Programm 101, 102, 103, 104
herzustellen . Die Programme 101, 102, 103, 104 sind
eingerichtet , unter Verwendung des
Verschlüsselungszertifikats einen symmetrischen Schlüssel auszuhandeln, um eine ressourcenschonende Verschlüsselung zu ermöglichen .
Fig.2 zeigt beispielhaft eine zweite Überprüfungseinheit 200 mit einer Recheneinheit und mit einer Kommunikationseinheit . Die Recheneinheit der Überprüfungseinheit 200 ist
eingerichtet , Programme 201, 202, 203, 204 aus zuführen . Die Recheneinheit ist eingerichtet , ist , für jedes der Programme 201, 202, 203, 204 eine Überprüfungsinstanz 211, 212, 213, 214 auszuführen, die eingerichtet ist , einen korrekten Programmablauf des jeweiligen Programms 201, 202, 203, 204 unabhängig voneinander zu überprüfen. Die Programme
(beispielsweise Applikationsprogramme) 201, 202, 203, 204 und die Überprüfungsinstanzen 211, 212, 213, 214 werden auf unterschiedlichen Speicherbereichen einer Speichereinheit (Arbeitsspeicher) der Recheneinheit und von einer gleichen Prozessoreinheit (beispielsweise einer zentralen
Prozessoreinheit , CPU) ausgeführt . Die Überprüfungsinstanzen 211, 212, 213, 214 sind jeweils eingerichtet , mittels eines gemeinsamen Speichers (geteiltem Speicher) zu kommuni z ieren .
Die Überprüfungseinhert 200 ist eingerichtet , auf
(beispielsweise genau) eine (empfangene) Anforderung des jeweiligen Programms 201, 202, 203, 204, hin eine
Überprüfungsinstanz 211, 212, 213, 214 bereitzustellen . Eine jeweilige Anforderung wird bei einer Initialisierung des jeweiligen Programms 201, 202, 203, 204 an die
Überprüfungseinheit 200 gesendet . Die jeweilige Anforderung wird von der Überprüfungseinheit 200 verarbeitet und dem jeweiligen Programm 201, 202, 203, 204 wird eine
Überprüfungsinstanz 211, 212, 213, 214 bereitgestellt .
Beispielsweise weist jede der Überprüfungsinstanzen 211, 212, 213, 214, alternativ die Überprüfungseinheit 200, ein
eindeutiges (asymmetrisches ) Verschlüsselungs Zertifikat auf, das beispielsweise von einer zentralen Zertifikatsagentur bestätigt (kryptographisch (digital ) signiert ) ist . Die
Überprüfungsinstanzen 211, 212, 213, 214 sind eingerichtet , eine verschlüsselte Kommunikation mit dem zugeordneten
Programm 201, 202, 203, 204 herzustellen . Die Programme 201, 202, 203, 204 sind eingerichtet , unter Verwendung des
Verschlüsselungszertifikats einen symmetrischen Schlüssel auszuhandeln, um eine ressourcenschonende Verschlüsselung zu ermöglichen .
Beispielsweise weist die Prozessoreinheit der Recheneinheit ein Verschlüsselungszertifikat auf . Beispielsweise ist die Prozessoreinheit eingerichtet, Programme und/oder
Überprüfungsinstanzen in Enklaven (beispielsweise gemäß Intel SGX oder SGX2 , etc . ) auszuführen. Beispielsweise ist die Recheneinheit eingerichtet , das erstes Programm 201 und die das erste Programm 201 überprüfende Überprüfungsinstanz 211 jeweils in einer Enklave auszuführen . Beispielsweise ist die Recheneinheit eingerichtet , das zweite Programm 202 in einer Enklave auszuführen, während die das zweite Programm 202 überprüfende zweite Überprüfungsinstanz 212 auf einem
ungeschützten Speicher ausgeführt wird . Beispielsweise ist die Recheneinheit eingerichtet , das dritte Programm 203 auf einem ungeschützten Speicher auszuführen, während die das dritte Programm 203 überprüfende dritte Überprüfungsinstanz 213 in einer Enklave ausgeführt wird . Beispielsweise ist die Recheneinheit eingerichtet , das vierte Programm 204 und die das vierte Programm 201 überprüfende vierte
Überprüfungsinstanz 214 jeweils auf einem ungeschützten
Speicher auszuführen . Fig.3 zeigt eine dritte Überprüfungseinheit 300. Die
Überprüfungseinheit 300 ist eingerichtet eine
Überprüfungsinstanz zur Überprüfung eines auf einer
Recheneinheit 305 ausgeführten Programms auszuführen . Die Überprüfungseinheit 300 ist als Struktur innerhalb eines Field Programmable Gate Array (FPGA) der Recheneinheit 305 eingerichtet . Beispielsweise weist die Recheneinheit 305 eine Prozessoreinheit auf, die das Field Programmable Gate Array (FPGA) aufweist . Die Überprüfungseinheiten 100, 200, 300 sind jeweils
eingerichtet (beispielsweise in einem separaten
Betriebsmodus ) mit lediglich einem einzelnen Programm 101, 201 zu kommunizieren, beispielsweise genau eine
Überprüfungsinstanz III, 211 aus zuführen . Beispielsweise sind die Überprüfungseinheiten 100, 200, 300 eingerichtet , lediglich dann Überprüfungsinstanzen auszuführen, wenn diese angefordert werden . Gemäß einer weiteren Ausgestaltung sind die Überprüfungseinheiten 100, 200, 300 eingerichtet, unabhängig von einer Anzahl angeforderter
Überprüfungs instanzen, eine konstante Anzahl an
Überprüfungsinstanzen bereit zuhalten und/ oder aus zuführen und diese einem jeweiligen Programm bei Anforderung zuzuordnen .
Fig.4 zeigt einen Betriebsmodus einer Überprüfungseinheit 400. Die Überprüfungseinheit 400 ist eingerichtet , eine
Überprüfungs instanz zur Überwachung eines Programms 401 auszuführen . Die Überprüfungs instanz (und/ oder die
Überprüfungseinheit 400) weist ein Verschlüsselungs- und/ oder Identifizierungs Zertifikat auf, das es dem Programm 401 ermöglicht , festzustellen, mit welcher Überprüfungs instanz es verbunden ist . Weiterhin ermöglicht das VerSchlüsselungs- und/ oder Identifizierungs Zertifikat , eine sichere
Kommunikation zwischen dem Programm 401 und der
Überprüfungs instanz .
Die Überprüfungs instanz ist eingerichtet , einen ersten
Unterbrechungsbefehl 407 (Soft Interrupt ) an das Programm zu senden . Beispielsweise ist das Programm 401 eingerichtet , bei Erhalt des ersten Unterbrechungsbefehls 407 einen zuletzt ausgeführten Programmabschnitt (eine zuletzt ausgeführte Berechnung) zu wiederholen, beispielsweise wenn die
Überprüfungs instanz einen Fehler bei der Überprüfung
feststellt , der auf zufällige Ereignisse
(Übermitt lungs fehler , Bit flip, ...) zurückführbar ist .
Beispielsweise dient der erste Unterbrechungsbefehl 407 dem setzten eine Zeit limit s , zu dem eine aktuell laufender
Programmabschnitt abgeschlossen sein soll , beispielsweise wenn die Überprüfungs instanz feststellt , dass ein aktuell laufender Programmabschnitt noch nicht abgeschlossen ist .
Die Überprüfungs instanz ist eingerichtet , einen zweiten
Unterbrechungsbefehl 408 (Hard Interrupt ) an eine das
Programm 401 ausführende Recheneinheit zu senden .
Beispielsweise ist die Recheneinheit 401 (und/ oder ein auf der Recheneinheit laufendes Betriebssystem) eingerichtet, bei Erhalt des zweiten Unterbrechungsbefehls 408 das Programm neu zu starten und/oder eine Hardwarekonfiguration auf der das Programm ausgeführt wird, anzupassen, beispielsweise wenn die Überprüfungsinstanz einen Fehler bei der Überprüfung
feststellt (beispielsweise erneuter Fehler nachdem ein erster Unterbrechungsbefehl gesendet wurde) , der auf Störereingriff (z.B. Hackerangriff) und/oder Hardwarefehler zurückführbar ist . Beispielsweise dient der zweite Unterbrechungsbefehl 407 dem Neustart des Programms nach einem vorgegeben maximalen Zeitinterval , beispielsweise wenn die Überprüfungsinstanz feststellt , dass ein aktuell laufender Programmabschnitt noch nicht abgeschlossen ist und vermutet werden muss , dass eine Ausführung des Programms unterbrochen wurde .
Beispielsweise ist die Überprüfungsinstanz den ersten
Unterbrechungsbefehl zumindest einmal zu senden, bevor der zweite Unterbrechungsbefehl gesendet wird . Beispielsweise kann hierdurch Zeit gespart werden, die für einen Neustart und/oder eine Hardwareumstrukturierung nötig wäre .
Fig . 5 zeigt die Übergabe (Übermittlung) eines Übergäbewerts 520 (EK (Output ) ) von einem ersten Programm 501 an ein zweites Programm 502. Das erste Programm 501 verarbeitet hierbei Eingangswerte 521 zur Erzeugung des Übergäbewerts
520. Das erste Programm 501 erzeugt fortlaufend Übergäbewerte 520 zur Übermittlung an das zweite Programm 502. Weiterhin stellt das erste Programm eine AblaufSignatur 522 des
Erzeugens bereit , welche dem Übergäbewert 520 zugeordnet ist .
Das erste Programm übermittelt die AblaufSignatur 522 an eine Überprüfungsinstanz 511. Das Übermitteln der AblaufSignatur 522 an die Überprüfungsinstanz 511 erfolgt mittels einer ersten DatenVerbindung 524 , die das erste Programm mit der Überprüfungsinstanz verbindet . Die erste DatenVerbindung 524 ist eine verschlüsselte Datenverbindung . Die
Überprüfungsinstanz 511 weist ein asymmetrisches Verschlüsselungszertifikat auf. Bei einer Initialisierung des ersten Programms 501, wird die erste Datenverbindung 524 mit der Überprüfungsinstanz 511 hergestellt . Das erste Programm 501 verwendet einen öffentlichen Teil des asymmetrischen Verschlüsselungs Zertifikats um der Überprüfungsinstanz 511 einen symmetrischen Schlüssel für weitere Kommunikation zu übermitteln . Die erste DatenVerbindung 524 umfasst eine
Verbindung zwischen einer ersten Recheneinheit 505 (Node A) , die das erste Programm 501 ausführt , und einer
Überprüfungseinheit , die von der ersten Recheneinheit 505 verschieden ist und die die Überprüfungsinstanz 511 ausführt .
Das Übermitteln der AblaufSignatur 522 an die
Überprüfungseinheit 511 umfasst ein Übermitteln einer
Kenngröße 526 ( ACI, MAC1) des Übergabewerts 520. Die
Kenngröße umfasst ein Kodieren des zumindest einen
Übergabewerts mittels eines ersten Schlüssels (K) und eine erste Kodierungsfunktion (Nachrichtenauthentifizierungscode, Message Authentication Code, MAC) .
Bei der Initialisierung des ersten Programms 501, erfolgt eine Aushandlung der Referenz Signaturen zwischen dem ersten Programm 501 und der Überprüfungsinstanz 511. Die
Überprüfungsinstanz 511 stellt dem ersten Programm 501 eine Reihe von Signaturfunktionen (Bereitstellungsvorschriften) bereit (bspw . f]_, f2 , ... fk) · Die Signaturfunktionen weisen eine rekursive Bildungsvorschrift auf . Z . B : f (0) = crc ( j, cj) f (i+1) = crc (j, i+1, f (i) ) (1) fk ( 0 ) = md5 (k, ck) fk ( i+1 ) = md5 (k, i+1 , fk ( i ) ) (2 )
Weiterhin wird während der Initialisierung ein Startparameter (cj , ck) festgelegt , der für die Berechnung des nullten
Folgegliedes verwendet wird . Der Startparameter weist
beispielsweise eine Länge von zumindest 64 Bit auf . Der
Startparameter wird beispielsweise aus einer Zufallszahl bestimmt . Ein Index der Referenz Signatur wird bei jeder Übermittlung der AblaufSignatur 522 an die
Überprüfungsinstanz 511 erhöht. Zur besseren
Nachvollziehbarkeit (beispielsweise bei Verlust einer
Übermittlung) wird der Index ( i ) gemeinsam mit der
AblaufSignatur 522 zur Überprüfungseinheit übermittelt .
Die Überprüfungsinstanz 511 überprüft die AblaufSignatur 522 auf Grundlage der Referenz Signatur . Hierzu berechnet die Überprüfungseinheit anhand der Bereitstellungsvorschrift und dem Index und/oder der zulet zt empfangen AblaufSignatur, die aktuelle Referenz Signatur .
Die Überprüfungsinstanz 511 stellt einen Bestatigungscode 523 bereit , wenn das Überprüfen der AblaufSignatur 522 ein positives Ergebnis liefert . Weiterhin ist die
Überprüfungsinstanz 511 eingerichtet , einen ZeitStempel (T) bereitzustellen. Der ZeitStempel (T) ist eine Echt Zeitangabe . Alternativ ist der ZeitStempel (T) eine lediglich aufwärts zählende Zählvariable, die beispielsweise an einen Takt einer Prozessoreinheit der Überprüfungseinheit 500 gekoppelt ist .
Der Bestätigungscode 523 wird mittels Kodierens der Kenngröße 526, des Index ( i ) und des Zeitstempeis mittels eines zweiten Schlüssels und einer zweiten Kodierungsfunktion
bereitgestellt .
Wenn das Überprüfen der zumindest einen AblaufSignatur 522 ein negatives Ergebnis liefert , wird das erste Programm 501 reinitialisiert. Der Übergabewert 520 und der Bestätigungscode 523 werden an das zweite Programm übermittelt . Weiterhin wird die Kenngröße 526 vom ersten Programm 501 an das zweite Programm 502 übermittelt . Die Überprüfungsinstant 511 übermittelt den Bestätigungscode 523 zuvor an das erste Programm 501. Die Kenngröße 526 wird gemeinsam mit dem Bestätigungscode 523 und dem Übergabewert 520 vom ersten Programm übermittelt . Das Übermitteln des Bestätigungscodes 523 an das zweite Programm 502 umfasst eine Übermittlung des durch die
Überprüfungsinstanz generierten Zeitstempeis (T) . Das
Übermitteln des Übergäbewerts 520 an das zweite Programm 502 erfolgt mittels einer zweiten DatenVerbindung 525, die das erste Programm 501 mit dem zweiten Programm 502 verbindet . Bei der Initialisierung des ersten Programms 501 wird die zweite DatenVerbindung 525 mit dem zweiten Programm 502 hergestellt . Die zweite DatenVerbindung 525 ist eine
verschlüsselte DatenVerbindung die mit dem ersten Schlüssel verschlüsselt ist . Die zweite DatenVerbindung 525 umfasst eine Verbindung zwischen der ersten Recheneinheit 505 und einer zweiten Recheneinheit 506 (Node B) , die von der ersten Recheneinheit 505 verschieden ist und die das zweite Programm 502 ausführt . Das Übermitteln des Bestätigungscodes 523 von der Überprüfungsinstanz 511 zum zweiten Programm 502 erfolgt mittels der ersten und zweiten DatenVerbindung 524 , 525. Das zweite Programm 502 verfügt über ein asymmetrisches
Verschlüsselungszertifikat . Nach Herstellung der zweiten DatenVerbindung 525 bei Initialisierung des ersten Programms 501, übermittelt das zweite Programm 502 Parameter zur
Aushandlung eines Schlüssels für eine Kommunikation über die zweite DatenVerbindung an das erste Programm 501. Die
Parameter umfassen einen öffentlichen Teil des asymmetrischen Verschlüsselungs Zertifikats des zweiten Programms 502 und eine Zufallszahl . Das erste Programm 501 leitet die Parameter weiter zur ÜberprüfungsInstanz 511. Die Überprüfungsinstanz 511 ermittelt einen Schlüssel . Der ermittelte Schlüssel wird mittels des öffentlichen Teils des asymmetrischen
Verschlüsselungs Zertifikats verschlüsselt und an das erste Programm 501 übertragen . Das erste Programm 501 gibt den Schlüssel weiter an das zweite Programm 502 mittels der zweiten Datenverbindung .
Ein erster Referenzcode wird durch Anwendung der ersten
Kodierungsfunktion mit dem ersten Schlüssel auf den
Übergäbewert ermittelt . Ein zweiter Referenzcode wird mittels Anwenden der zweiten Kodierungsfunktion auf den ersten Referenzcode bzw. auf die Kenngröße 526, ermittelt. Das zweite Programm 502 überprüft den Bestätigungscodes 523 auf Grundlage der Referenzcodes. Das zweite Programm 502
überprüft Identität des ersten Referenzcodes mit der
Kenngröße 526. Das zweite Programm 502 überprüft Identität des zweiten Referenzcodes mit dem Bestätigungscode 523.
Das zweite Programm verarbeitet den Übergäbewert 520, wenn zumindest das Überprüfen des Bestätigungscodes ein positives Ergebnis liefert .
Das zweite Programm verwirft den Übergabewerts , wenn das Überprüfen des zumindest einen Bestätigungscodes ein
negatives Ergebnis liefert .
Das zweite Programm verwirft den Übergabewerts , wenn der ZeitStempel älter ist als ein zuvor empfangener ZeitStempel .
Weiterhin wird eine Zustandskenngröße des ersten Programms 501 in der Überprüfungsinstanz 511 gespeichert , wenn das Überprüfen der ProgrammablaufSignatur 522 ein positives Ergebnis liefert . Die Zustandskenngröße des ersten Programms 501 wird nach Übermittlung des Bestätigungscodes 523 vom ersten Programm 501 an die Überprüfungsinstanz 511 gesendet . Gemäß einer alternativen Ausgestaltung ist die ZuStandsgroße von der AblaufSignatur selbst gebildet und wird somit nicht separat übermittelt .
Sollte eine ReInitialisierung des ersten Programms 501 erforderlich geworden sein, erfolgt eine Übermittlung der gespeicherten Zustandskenngröße an das erste Programm nach erfolgtem Reinitialisieren des ersten Programms 501. Stimmt die Zustandskenngröße mit einer im ersten Programm 501 hinterlegten Zustandskenngröße überein, wird das erste
Programm auf den Zustand zurückversetzt, den es vor der ReInitialisierung besaß .. Weiterhin legt die Überprüfungsinstanz 511 einen ersten
Referenz Zeitpunkt fest , zu dem eine Übermittlung der
AblaufSignatur 522 vom ersten Programm 501 zur
Überprüfungsinstanz 511 erfolgt sein soll . Wenn zum ersten Referenz zeitpunk keine AblaufSignatur 522 empfangen wurde , fordert die Überprüfungsinstanz 511 die erste Recheneinheit 505 auf, zusätzliche Ressourcen zur Ausführung des ersten Programms 501 bereitzustellen. Die Überprüfungsinstanz 511 legt ferner einen zweiten Referenz Zeitpunkts fest , zu dem eine Übermittlung der AblaufSignatur 522 vom ersten Programm zur Überprüfungsinstanz 511 erfolgt sein soll . Wenn zum zweiten Referenz Zeitpunkt keine AblaufSignatur empfangen wurde, fordert die Überprüfungsinstanz 511 die erste
Recheneinheit 505 auf, das erste Programm neu zu starten .
Fig.6 zeigt beispielhaft ein System 630 zur Steuerung einer Vorrichtung 631. Die Vorrichtung 631 ist beispielsweise eine Kupplung . Das System 630 umfasst eine Überprüfungseinheit 600 mit einer Steuereinheit . Die Steuereinheit ist eingerichtet , eine AblaufSignatur zu empfangen, die von einem Programm 601 gesendet wird, das auf einer weiteren Steuereinheit
ausgeführt wird . Die weitere Steuereinheit ist eingerichtet , mittels des Programms 601 Stellwerte zu berechnen, die von einem Aktuator 632 ( Stellglied) in Steuersignale 633
umgewandelt werden . Die Steuereinheit weist weiterhin eine
Steuerschnittstelle auf, die mit dem Aktuator gekoppelt ist . Die Steuereinheit ist eingerichtet , einen Empfang der
Steuersignale zu detektieren . Die Steuereinheit ist eingerichtet , eine Gültigkeitsprüfung der AblaufSignatur durchzuführen wenn diese empfangen wurde . Die Steuereinheit ist eingerichtet , die weitere Steuereinheit aufzufordern, das Programm 601 zu reinitialisieren, wenn die Gültigkeitsprüfung negativ ausfiel . Die Steuereinheit ist eingerichtet , einen ersten Referenz Zeitpunkt festzulegen, zu dem die AblaufSignatur empfangen sein soll . Die Steuereinheit ist eingerichtet , die weitere Steuereinheit aufzufordern, zusätzliche Ressourcen zur Ausführung des Programms 601 bereitzustellen, wenn zum ersten Referenz Zeitpunkt noch keine AblaufSignatur empfangen wurde . Die Steuereinheit ist eingerichtet , einen zweiten
Referenz Zeitpunkt festzulegen, zu dem die AblaufSignatur empfangen sein soll .
Die Steuereinheit ist eingerichtet , das Steuersignal an einem Ausgang der Steuerschnittstelle auszugeben, wenn die
Gültigkeitsprüfung positiv ausfällt .
Die Steuereinheit ist eingerichtet , an dem Ausgang der
Steuerschnittstelle ein SicherheitsSteuersignal anstatt des Steuersignals auszugeben, wenn die Gültigkeitsprüfung negativ ausfällt oder wenn zum zweiten Referenz Zeitpunkt noch keine AblaufSignatur empfangen wurde .
Die Steuereinheit ist ferner eingerichtet , an dem Ausgang der Steuerschnittstelle ein SicherheitsSteuersignal anstatt des Steuersignals auszugeben, wenn bis zum zweiten
Referenz Zeitpunkt keine Veränderung des Steuersignals detektiert wird .