Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND DEVICE FOR SECURING ACCESS TO ENCODED VARIABLES IN A COMPUTER PROGRAM
Document Type and Number:
WIPO Patent Application WO/2022/069153
Kind Code:
A1
Abstract:
The invention relates to a method, to a device, and to a computer program product for securing access to at least one encoded variable (xc) in a computer program with a plurality of encoded variables, each encoded variable (xc) having its own dynamic signature (Dx). In the process, when the encoded variable (xc) is accessed, the dynamic signature (Dx) of the variable is modified in a prescribed manner, wherein in an encoded tracer variable (Tracerc), the sum value (∑Dx) for all of the dynamic signatures (Dx) of all other encoded variables (xc) is controlled; in the event of a modification of a dynamic signature (Dx) of one of the encoded variables (xc), the sum value (∑Dx) being controlled in the tracer variables (Tracerc) is adapted in an analogous manner; and in order to monitor the sum of the dynamic signatures (Dx), the encoded variable (xc) is compared with the sum value (∑Dx) stored in the encoded tracer variable (Tracerc). In the event of a discrepancy, an error handling process is initiated. The invention allows all signatures in an arithmetically encoded program to be managed in a high-performance manner regardless of the complexity of the program.

Inventors:
WITTE KARL-HERMANN (DE)
Application Number:
PCT/EP2021/074357
Publication Date:
April 07, 2022
Filing Date:
September 03, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SIEMENS AG (DE)
International Classes:
G06F11/07; G06F21/52
Foreign References:
DE102010037457A12012-03-15
Other References:
"ICIAP: International Conference on Image Analysis and Processing, 17th International Conference, Naples, Italy, September 9-13, 2013. Proceedings", vol. 6351, 1 January 2010, SPRINGER, Berlin, Heidelberg, ISBN: 978-3-642-17318-9, article UTE SCHIFFEL ET AL: "ANB- and ANBDmem-Encoding: Detecting Hardware Errors in Software", pages: 169 - 182, XP055448350, 032548, DOI: 10.1007/978-3-642-15651-9_13
HOFFMANN MARTIN ET AL: "dOSEK: the design and implementation of a dependability-oriented static embedded kernel", 21ST IEEE REAL-TIME AND EMBEDDED TECHNOLOGY AND APPLICATIONS SYMPOSIUM, IEEE, 13 April 2015 (2015-04-13), pages 259 - 270, XP032777211, DOI: 10.1109/RTAS.2015.7108449
Download PDF:
Claims:
Patentansprüche

1. Verfahren zur Sicherung von Zugriffen auf zumindest ei- ne codierte Variable (xc) in einem Computerprogramm mit einer Vielzahl codierter Variablen, wobei viele oder jede codierte Variable (xc) eine eige- ne dynamische Signatur (Dx) aufweist, dadurch gekennzeichnet, dass bei einem Zugriff auf diese codierten Variablen (xc) deren dynamische Signatur (Dx) jeweils in einer vorgeschriebenen Weise verändert wird, dass in einer codierten Tracer-Variable (Tracerc) ein Summenwert (£DX) für alle dynamischen Signaturen (Dx) aller anderen codierten Variablen (xc) geführt wird, wobei bei einer Änderung einer dynamischen Signatur

(Dx) einer der codierten Variablen (xc) der in der Tra- cer-Variablen (Tracerc) geführte Summenwert (£DX) analog angepasst wird, und dass zur Kontrolle die Summe der dynamischen Signaturen (Dx) der codierten Variablen (xc) mit dem in der codier- ten Tracer-Variablen (Tracerc) gespeicherten Summenwert (£DX) verglichen wird, wobei im Falle einer Diskrepanz eine Fehlerbehandlung ausgelöst wird.

2. Verfahren nach Patentanspruch 1, dadurch gekennzeichnet, dass zur Codierung der codierten Variablen (xc) eine AN-, ANB-, oder ANBD-Codierung verwendet wird.

3. Verfahren nach einem der vorhergehenden Patentansprü- che, dadurch gekennzeichnet, dass bei jedem schreibenden Zugriff auf eine codierte Variable (xc) für diese Variable eine neue oder geän- derte dynamische Signatur (Dx) festgelegt wird. Verfahren nach Patentanspruch 3, dadurch gekennzeichnet, dass bei jedem lesenden Zugriff auf eine codierte Vari- able (xc) für diese Variable eine neue oder geänderte dynamische Signatur (Dx) festgelegt wird. Verfahren nach einem der vorhergehenden Patentansprü- che, dadurch gekennzeichnet, dass die vorgeschriebene Weise entweder stets durch Ad- dition oder stets durch Subtraktion eines festgelegten Wertes (BADD) ungleich Null zu oder von der bisherigen dynamischen Signatur (Dx) der jeweiligen codierten Va- riablen (xc) erfolgt. Verfahren nach einem der vorhergehenden Patentansprü- che, dadurch gekennzeichnet, dass der Summenwert (£DX) über alle dynamischen Signa- turen (Dx) im Zuge der Kontrolle gebildet wird. Verfahren nach einem der vorhergehenden Patentansprü- che, dadurch gekennzeichnet, dass vor dem Vergleich auf die Summe der dynamischen Signaturen (Dx) und auf den in der Tracer-Variablen (Tracerc) geführten Summenwert (£DX) jeweils eine Mo- dulo-Operation mit der für die Codierung aller codier- ten Variablen (xc) und für die Codierung der Tracer- Variablen (Tracerc) verwendeten Systemkonstanten (A) angewendet wird. Verfahren nach einem der vorhergehenden Patentansprü- che, dadurch gekennzeichnet, dass die Summe aller Signaturen (Bx, Dx) jeweils einen korrekt codierten Wert gemäß der gewählten Codierung ergeben. Verfahren nach einem der vorhergehenden Patentansprü- che, dadurch gekennzeichnet, dass das Computerprogramm ein Automatisierungsprogramm einer industriellen Automatisierungskomponente ist, und dass die Kontrolle zumindest einmal in einem Zyklus des Automatisierungsprogramms, vorzugsweise zum Ende des Zyklus, ausgeführt wird. Verfahren nach einem der vorhergehenden Patentansprü- che, dadurch gekennzeichnet, dass als die Sicherung der Zugriffe mittels der Signa- turänderungen die vollständige Abarbeitung aller zur Abarbeitung vorgesehener Programmteile in einem jewei- ligen Zyklus des Computerprogramms festgestellt wird. Einrichtung zur Sicherung von Zugriffen auf zumindest eine codierte Variable (xc) in einem Computerprogramm mit einer Vielzahl codierter Variablen (xc), wobei das Computerprogramm auf der Einrichtung, insbe- sondere auf einem Computer oder auf einer industriellen Automatisierungskomponente, abläuft, wobei viele oder jede codierte Variable (xc) eine eige- ne dynamische Signatur aufweist (Dx), dadurch gekennzeichnet, dass die Einrichtung zur Durchführung des Verfahrens gemäß Patentanspruch 1 eingerichtet ist. Computerprogrammprodukt zur Sicherung von Zugriffen auf zumindest eine codierte Variable (xc) in einem Compu- terprogramm mit einer Vielzahl codierter Variablen

(xc), wobei das Computerprogrammprodukt derart eingerichtet ist, dass bei einer Ausführung auf einer Einrichtung, insbesondere auf einem Computer oder auf einer indust- riellen Automatisierungskomponente, das Verfahren gemäß Patentanspruch 1 ausgeführt wird. Computerprogrammprodukt nach dem vorhergehenden Pa- tentanspruch, dadurch gekennzeichnet, dass das Computerprogrammprodukt als Teil oder Erweite- rung einer Firmware oder als Teil oder Erweiterung ei- nes Betriebssystems eines Computers, insbesondere einer industriellen Automatisierungskomponente, ausgestaltet ist.

Description:
Beschreibung

Verfahren und Einrichtung zur Sicherung von Zugriffen auf co- dierte Variablen in einem Computerprogramm

Die Erfindung betrifft ein Verfahren zur Sicherung von Zu- griffen auf codierte Variablen in einem Computerprogramm ge- mäß dem Oberbegriff des Patentanspruchs 1, eine Einrichtung zur Sicherung von Zugriffen auf codierte Variablen in einem Computerprogramm gemäß dem Oberbegriff des Patentanspruchs 11, und ein Computerprogrammprodukt zur Sicherung von Zugrif- fen auf codierte Variablen in einem Computerprogramm gemäß dem Oberbegriff des Patentanspruchs 12.

In sicherheitsgerichteten Programmen für industrielle Anwen- dungen, die typischerweise auf eingebetteter Hardware wie z.B. Speicherprogrammierbaren Steuerungen (SPS) oder anderen industriellen Automatisierungskomponenten ablaufen, muss si- chergestellt werden, dass Bitfehler in Variablen erkannt wer- den und dass zur Abarbeitung in einem Zyklus vorgesehene Pro- grammteile auch tatsächlich vollständig durchlaufen werden.

Bei der Verarbeitung funktional sicherer Daten müssen interne Fehler der Sicherheitsfunktion erkannt werden und eine Si- cherheitsreaktion (z.B. Ausgabe sicherer Ersatzwerte oder ei- ner Warnmeldung) zur Folge haben. Dies wird klassischerweise durch Hardware-Replikation und Ergebnisvergleich erreicht. Eine Alternative ist die Kodierung der Sicherheitsfunktion mittels arithmetischen Kodes. Einfache arithmetische Kodes erkennen nicht alle Fehler und müssen geeignet ergänzt wer- den. Dies führt typischerweise zu erheblichem Aufwand und/oder schränkt die Verwendung ein.

In fortgeschritteneren sicherheitsgerichteten Lösungen wird eine Hardware-unabhängige Variante von Coded-Processing ver- wendet. In Coded-Processing erfolgt die Erfassung und Propa- gation von Fehlerinformation in jeder Variablen. Dies führt bisher dazu, dass komplexe Anwendungen oft nicht angemessen abgebildet werden können.

Es besteht also ein Bedarf für ein Verfahren mit linearer Komplexität zur Erfassung und Propagation von Fehlern in kom- plexen Softwaresystemen für die sicherheitsgerichtete Pro- grammierung mittels arithmetischer Codes.

Beispiele für komplexe Anwendungen:

• Asynchrone Änderung von Daten (z.B. Bedienungen durch HMI - Human Machine Interface)

• Remanente Daten

• Verschachtelte Programme (IF-THEN-ELSE, LOOP, ...)

• Globale Daten

• CIR (Change in Run - Programm- oder Ablaufänderungen zur Laufzeit)

Cloud-basierte Safety-Anwendungen

Nach dem gegenwärtigen Stand der Technik gibt es folgende Lö- sungsstrategien:

• Redundanz/Diversität: Das Sicherheitsprogramm wird mehr- fach unabhängig ausgeführt, so dass „Common Causes" (gleiche Fehlerursachen) ausgeschlossen werden können. Dieser Ansatz erfordert abhängig von der Komplexität der Anwendung einen erheblichen Aufwand für die Synchronisa- tion der Abläufe und für die sichere Erfassung der Feh- ler.

• Bei „Distributed Safety" wird auf Basis des HW-Modells zu den CPUs, auf denen das Sicherheitsprogramm abläuft, die tatsächlich zu erwartende Fehlerrate abgeschätzt. Die Abschätzung und die Festlegung des Modells müssen für jede HW gesondert erfolgen.

• Dynamische Signatur für jede Variable: Jede Variable er- hält eine dynamische Signatur. Diese Signatur wird bei jeder Änderung der Variable geändert. Der Aufwand für die Verwaltung der dynamischen Signatur wächst mit der Komplexität des Anwenderprogramms. Breits bei einzelnen Anwendungen hat sich der Aufwand für die Verwaltung durch kleine Änderungen in der Kontrollstruktur verdop- pelt.

Zusammenfassend kann man sagen, dass die Lösungsansätze nach dem Stand der Technik mit der aktuell stark wachsenden Kom- plexität der Anforderungen immer weniger als alleinige Lösung für neue Lösungen geeignet sind. Sie müssen um Maßnahmen zur Beherrschung der Komplexität ergänzt werden, die es ermögli- chen, dass sich die Komplexität des Sicherheitsprogramms nur unwesentlich von der Komplexität des entsprechenden Standard- programms unterscheidet.

Die Erfindung ist insbesondere für Coded Processing geeignet.

In Coded Processing sind die Variablen codiert. Dazu werden Werte (xf) in Variablen mittels AN-, ANB- (AN+B), ANBD- Codes oder durch artverwandte Codes (Mischverfahren) codiert, also auf codierte Werte abgebildet. Im Beispiel der ANBD-Codierung werden alle numerischen Variablen nach einer Vorschrift der Form: x c := Xf*A + B x + D x codiert, und die arithmetischen Operationen (+,-,*,/, usw.) werden so angepasst, dass die Verarbeitung im codierten Be- reich (xc) konsistente Ergebnisse zum Ur-Bereich (xf) lie- fert. Dabei ist:

• A ist eine Systemkonstante, die für alle kodierten Werte gleich ist.

• B x ist statische Signatur von x. Das bedeutet, dass jedes x eine eigenes B x besitzt und dass B x konstant ist.

• D x ist die dynamische Signatur von x. D x ändert sich in regelmäßigen oder unregelmäßigen Abständen, bei- spielsweise in jedem Zyklus eines Programms oder zeitgesteuert.

Mittels der codierten Variablen ist es möglich, Fehler fest- zustellen, die beispielsweise durch eine zufällige Änderung bzw. Verfälschung einzelner Bits entstehen. Dies bedeutet, dass die zu codierenden Werte so auf codierte Werte abgebil- det werden, dass Abweichung einzelner Bits erkannt werden können, indem Fehler in einzelnen Bits beispielsweise auf- grund des Hamming-Abstandes zulässiger codierter Werte ungül- tige Werte im codierten Raum entstehen lassen.

Die Komplexität des Sicherheitsprogramms ist insbesondere ab- hängig von der Art der Verwaltung von D x . Die Komplexität bleibt beherrschbar, wenn D x gespeichert wird. Dies erfor- dert, dass D x analog zu x c abgesichert wird.

Eine gesicherte Speicherung jedes D x in einer gesicherten Va- riablen erhöht jedoch die Komplexität und den Ressourcenbe- darf der gesicherten Softwaresysteme erheblich.

Es ist also eine Aufgabe der vorliegenden Erfindung, die Ver- waltung dynamischer Signaturen im Coded Processing zu verein- fachen, so dass dies mit geringer Komplexität ohne Verzicht auf Sicherheit möglich ist. Es ist eine weitere Aufgabe der Erfindung, mit einfachen Mitteln sicherzustellen oder festzu- stellen, ob die zur Abarbeitung vorgesehenen Programmteile (z.B. „Basisblöcke") tatsächlich abgearbeitet wurden.

Die wesentliche Idee zur Lösung der Aufgaben ist die unabhän- gige Berechnung der Signaturen von kodierten Variablen in 2 Kanälen. Dabei wird die Summe aller dynamischer Signaturen in einer einzigen kodierten Variablen, der sog. Tracer- Variablen, kombiniert mit der diversitären Berechnung ihrer Signatur.

Die Aufgabe wird insbesondere durch ein Verfahren nach Pa- tentanspruch 1, eine Einrichtung nach Patentanspruch 11 und ein Computerprogrammprodukt nach Patentanspruch 12 gelöst.

Dabei wird ein Verfahren zur Sicherung von Zugriffen auf zu- mindest eine codierte Variable in einem Computerprogramm mit einer Vielzahl codierter Variablen vorgeschlagen, wobei vor- zugsweise jede codierte Variable eine eigene dynamische Sig- natur aufweist. Dabei wird bei einem Zugriff auf solch eine codierte Variable deren dynamische Signatur in einer vorge- schriebenen Weise verändert. In einer codierten Tracer- Variable wird ein Summenwert für alle dynamischen Signaturen aller anderen codierten Variablen geführt, wobei bei einer Änderung einer dynamischen Signatur einer der codierten Vari- ablen der in der Tracer-Variablen geführte Summenwert analog angepasst wird, und wobei zur Kontrolle die Summe der dynami- schen Signaturen der codierten Variablen mit dem in der co- dierten Tracer-Variablen gespeicherten Summenwert verglichen wird, wobei im Falle einer Diskrepanz eine Fehlerbehandlung ausgelöst wird. Dies ermöglicht eine performante Verwaltung aller Signaturen in einem arithmetisch kodierten Programm un- abhängig von dessen Komplexität.

Die Aufgabe wird außerdem durch eine Einrichtung zur Siche- rung von Zugriffen auf zumindest eine codierte Variable in einem Computerprogramm, insbesondere eine sicherheitsgerich- tete Automatisierungsanwendung, mit einer Vielzahl codierter Variablen gelöst, wobei das Computerprogramm auf der Einrich- tung, insbesondere auf einem Computer oder auf einer indust- riellen Automatisierungskomponente, abläuft, und wobei jede codierte Variable eine eigene dynamische Signatur aufweist. Dabei ist die Einrichtung zur Durchführung des Verfahrens ge- mäß Patentanspruch 1 eingerichtet. Durch diese Einrichtung können die bereits anhand des Verfahrens diskutierten Vortei- le realisiert werden.

Die Aufgabe wird außerdem durch ein Computerprogrammprodukt zur Sicherung von Zugriffen auf zumindest eine codierte Vari- able in einem Computerprogramm, insbesondere eine sicher- heitsgerichtete Automatisierungsanwendung, mit einer Vielzahl codierter Variablen gelöst, wobei das Computerprogrammprodukt derart eingerichtet ist, dass bei einer Ausführung auf einer Einrichtung, insbesondere auf einem Computer oder auf einer industriellen Automatisierungskomponente, das Verfahren gemäß Patentanspruch 1 ausgeführt wird. Durch dieses Computerpro- grammprodukt können die bereits anhand des Verfahrens disku- tierten Vorteile realisiert werden.

Vorteilhafte Varianten des erfindungsgemäßen Verfahrens sind in den abhängigen Patentansprüchen angegeben, deren Merkmale und Vorteile sinngemäß auch für die erfindungsgemäße Einrich- tung und das Computerprogrammprodukt gelten.

In einer vorteilhaften Variante des erfindungsgemäßen Verfah- rens wird zur Codierung der codierten Variablen eine AN-, ANB-, oder ANBD-Codierung verwendet. Diese Codierungen sind in sicherheitsgerichteten Computerprogrammen, insbesondere in solchen der Automatisierungstechnik, erfolgreich eingeführt.

Vorteilhaft wird bei jedem schreibenden Zugriff auf eine co- dierte Variable für diese Variable eine neue oder geänderte dynamische Signatur festgelegt, so dass die Anzahl der beson- ders kritischen Schreibzugriffe anhand der Signatursumme nachvollzogen werden kann. Besonders vorteilhaft wird auch bei jedem lesenden Zugriff auf eine codierte Variable für diese Variable eine neue oder geänderte dynamische Signatur festgelegt.

Dadurch, dass jede codierte Variable eine eigene dynamische Signatur aufweist, muss bei einer Änderung dieser Signatur, also bei jedem Zugriff, nur die Signatur dieser Variablen an- gepasst werden und der Wert der Tracer-Variablen analog dazu geändert werden, während bei einer im Stand der Technik oft üblichen gemeinsamen dynamischen Signatur vieler oder aller Variablen dann auch jede codierte Variable geändert werden muss.

Vorteilhaft besteht die vorgeschriebene Weise der Änderung der dynamischen Signatur darin, dass entweder stets durch Ad- dition oder stets durch Subtraktion eines festgelegten Wer- tes, des sog. Offsets, ungleich Null zu oder von der bisheri- gen dynamischen Signatur der jeweiligen codierten Variablen erfolgt. Somit können einander folgende Änderungen einander nicht ungewollt kompensieren.

In einer vorteilhaften Ausgestaltung wird der Summenwert über alle dynamischen Signaturen im Zuge der Kontrolle gebildet, wobei in einer Variante davon ausgegangen ist, dass zu jeder codierten Variablen eine (vorzugsweise uncodierte) mit dieser verknüpften Variable oder Register oder dgl. mit dem jeweils gültigen (also zuletzt geänderten und aktuell in der zuordne- ten codierten Variablen verwendete) Wert der dynamischen Sig- natur geführt wird. In einer Variante sind die dynamischen Signaturwerte in einem Array gespeichert. Das vereinfacht die Summenbildung im Kontrollschritt. Es ist aber alternativ auch möglich, den codierten Variablen jeweils den Wert der dynami- schen Signatur zu entnehmen, indem jeweils vom Wert der co- dierten Variablen die statische Signatur abgezogen wird und das Ergebnis in einer Modulo-Operation mit der Systemkonstan- te „A" verknüpft wird. Diese Alternative ist in ihrer Ausfüh- rung aufwendiger (Rechenzeit), kommt aber ohne das separate Speichern der dynamischen Signaturen aus. Vorteilhaft wird vor dem Vergleich auf die Summe der dynami- schen Signaturen und auf den in der Tracer-Variablen geführte Summenwert jeweils und ggf. auch mehrfach eine Modulo- Operation mit der für die Codierung aller codierten Variablen und für die Codierung der Tracer-Variablen verwendeten Sys- temvariablen („A") angewendet, so dass etwaige Überläufe bei sehr großen Offset-Werten für die zugriffsbedingten Änderun- gen der dynamischen Signaturen vermieden werden.

Vorteilhaft ergeben die Summen aller Signaturen, also die Summe aller statischen Signaturen und die Summe aller dynami- schen Signaturen, jeweils einen korrekt codierten Wert gemäß der gewählten Codierung. Das vereinfacht die Berechnungen mit den Summenwerten und ermöglicht überdies weitere Kontrollen hinsichtlich von Bitfehlern und dgl. in den Signaturen.

Die Vorteile des Verfahrens sind insbesondere gegeben, wenn das Computerprogramm ein Automatisierungsprogramm einer in- dustriellen Automatisierungskomponente ist, und wenn die Kon- trolle zumindest einmal in einem Zyklus des Automatisierungs- programms, vorzugsweise zum Ende des Zyklus, ausgeführt wird. Zyklische Automatisierungsprogramme werden zum einen oft in sicherheitskritischen Bereichen eingesetzt, eignen sich ande- rerseits aber auch wegen ihrer zyklischen Ausführungsstruktur gut dazu, in ihrer Ausführung mittels der Signaturen der co- dierten Variablen kontrolliert zu werden. Dabei wird vorteil- haft als die Sicherung der Zugriffe mittels der Signaturände- rungen die vollständige Abarbeitung aller zur Abarbeitung vorgesehener Programmteile in einem jeweiligen Zyklus des Computerprogramms festgestellt. Das kann dadurch geschehen, dass die in der Tracer-Variablen codierte Summe der dynami- schen Signaturen mit einem Erwartungswert verglichen wird, wobei der Erwartungswert dem Produkt des Offsets mit der An- zahl der erwarteten Zugriffe auf die codierten Variablen ent- spricht.

Ein Ausführungsbeispiel des erfindungsgemäßen Verfahrens wird nachfolgend anhand der Zeichnung erläutert. Es dient gleich- zeitig zur Erläuterung eines Ausführungsbeispiels einer er- findungsgemäßen Einrichtung und eines ebensolchen Computer- programmproduktes .

Dabei zeigt die einzige Figur die Sicherung einer Addition zu einer codierten Variablen.

Zur Kontrolle eines Programmlaufes werden im Stand der Tech- nik Laufvariablen, sog. Tracer-Variablen oder kurz "Tracer", eingesetzt, mit deren Inhalt der durchlaufene Programmpfad protokolliert und somit überprüft werden kann. Im vorliegen- den Beispiel wird die Tracer-Variable Tracer c für die Kon- trolle der dynamischen Signaturen aller codierten Variablen eines Computerprogramms und die Zugriffe auf alle codierten Variablen des Computerprogramms verwendet. Das vorliegende Beispiel zeigt dazu die codierte Variable x c .

Im vorliegenden Beispiel ist ohne Beschränkung der Allgemein- heit die Variable x c nach einer Vorschrift ANBD-codiert in der Form: x c := X f *A + B x + D x codiert.

Dabei ist D x ist die dynamische Signatur von x. D x ändert sich in regelmäßigen oder unregelmäßigen Abständen, bei- spielsweise in jedem Zyklus eines Programms, oder zeitgesteu- ert. Die Änderung von D x ist im Stand der Technik regelmäßig von außen vorgegeben, was bedeutet, dass die Änderung der dy- namischen Signatur im Stand der Technik asynchron zum Ablauf eines Computerprogramms, insbesondere eines Automatisierungs- programms, erfolgt. Im Stand der Technik ist die dynamische Signatur D x während eines Zyklus regelmäßig konstant. Im vor- liegenden Ausführungsbeispiel ändert sich Dx jedoch bei jedem Zugriff (lesend oder schreibend) auf die codierte Variable xc; in anderen Varianten kann Dx sich beispielsweise nur bei schreibenden Zugriffen ändern. Dies bedeutet, dass anhand des Startwerts (Initialisierungswert o.ä.) von Dx und der bei je- dem Zugriff zur Änderung verwendeten Änderungswertes die An- zahl in einem Basisblock, also eines linear zu durchlaufenden Programmabschnittes eines Computerprogramms, Zugriffe aus dem aktuellen Dx errechnet und mit einem Erwartungswert vergli- chen werden kann, so dass die vollständige Abarbeitung eines Programmschrittes kontrolliert werden kann.

Erfindungsgemäß erfolgt nun die Vergabe der D-Signaturen so, dass die Summe aller Signaturen (B x ; D x ) immer einen korrekt codierten ANBD-kodierten Wert ergibt.

Es gilt also:

Es wird angenommen, dass zu jeder codierten Variablen in ei- ner separaten Variablen, Speicher, Register oder dafür reser- vierten Bitbereich der codierten Variablen die jeweils aktu- ell gültigen Werte der Signaturkonstanten Bx und Dx gespei- chert sind.

Die B-Signaturen sind konstant. Daher ist auch die Summe B Su m- m e konstant. Der Wert der Summe ist hierbei nicht von Bedeu- tung .

Diese Summe der dynamischen Signaturen D Su mme wird mit einem kodierten Wert Tracer c verglichen, dessen Signatur sich ent- weder nur um einen festen Wert von der Signatur der Summe un- terscheidet oder der die Signatur in kodierter Form korrekt speichert; die Varianten haben also die Form:

• Tracer c = A*X + B Tracer + D Summ e oder • Tracer c = A*D summe + A 2 *X + B Tracer + D Tracer

Der Wert von X hat in beiden Varianten für die erfinderische Idee keine Bedeutung. Er dient üblicher Weise dazu die Be- rechnung von Tracer c zu vereinfachen. Mit ihm können auch zu- sätzliche Sicherheitsanforderungen erfüllt werden.

Erfindungsgemäß wird an einem Kontrollpunkt eines Computer- programms, beispielsweise am Ende eines Zyklus eines Automa- tisierungsprogramms, die Summe D Su mme der D-Signaturen aller codierten Variablen errechet. D Su mme wird zusätzlich diversi- tär aus dem Inhalt einer codierten Tracer-Variablen Tracer c berechnet, wobei deren Wert bei jedem Zugriff auf xc, bei dem das zugehörige Dx geändert wird, in analoger weise geändert wird.

Ein hier betrachteter Basisblock besteht aus einer linearen Folge von Rechenschritten; im vorliegenden Beispiel aus der Figur ist auf der rechten Seite ein Basisblock gezeigt, der in codierter Arithmetik die Zahl „1" zu der codierten Variab- len xc addiert.

Jeder Rechenschritt eines Basisblocks hat eine feste Zahl von Zugriffen auf kodierte Werte. Daher ändert sich D Su mme um ei- nen konstanten Wert. Daher ist auch die Änderung von D Su mme für den gesamten Basisblock (in der Literatur auch als „Ba- sicblock" bezeichnet) konstant. Diese Änderung (evtl, mit A multipliziert) muss auch auf den Tracer, also die Tracer- Variable Tracer c , addiert werden. Der Tracer wird damit so kodiert, dass er auf Korrektheit geprüft werden kann.

Im fehlerfreien Fall gilt, je nach gewählter Struktur der Tracer-Variablen :

• Tracer c = A*X + B Tracer + D Summ e bzw. • Tracer c = A*D Sum e + A 2 *X + B Tracer + D Tracer

Mit diesem Verfahren wird erreicht, dass nur noch Tracer c mit den bisher üblichen Methoden abgesichert werden muss, also beispielsweise in codierter Form gespeichert und verarbeitet werden muss; bei geringeren Sicherheitsanforderungen kann Tracer c auch uncodiert sein. Eine Aktion, die den Programm- lauf bzw. die Daten verändert, muss daher für die Absicherung nur für Tracer c um eine feste Befehlsfolge ergänzt werden, damit die Anzahl der Zugriffe mit dem Erwartungswert konform bleibt. Bisher erfolgte die Ergänzung für jede betroffene ko- dierte Variable separat.

In einer vorteilhaften Variante erfolgt die Korrektur der D- Signaturen so, dass an einer klar definierten Stelle im Ba- sicblock (z.B. Ende des Basicblock) D Su mme der ID des Ba- sicblock entspricht. Hierdurch ergibt sich eine einfache Prüfmöglichkeit. Da sich D Su mme zyklisch wiederholt, ist diese Prüfung für höhere SIL (Sichrheitslevel) nicht geeignet.

Am Zyklus- oder Programmende erfolgt dann eine Konsistenzprü- fung mit 2 Kriterien:

1. Tracer c ist korrekt kodiert und

Dabei wird davon ausgegangen, dass sich die B-Signatur ändern kann; bei der Konsistenzprüfung muss dann der letztgültige Wert für B, also B TracerLast („letztgültiges B der Tracer- Variablen"), verwendet werden. Gleichfalls gilt in diesem Beispiel, das die D-Signatur in einem Zyklus konstant ist, daher wird hier D als D zyk verwendet (D aus dem aktuellen Zyk- lus). Zur Vermeidung/Beherrschung von Überläufen kann der Wert der

Tracer-Variablen z.B. durch die Operation

Tracer c := Tracer MOD A 2 begrenzt werden, wenn

BfracerLast D zy k < A gilt.

Hinweis: Die übliche Art, die Signatur von kodierten Variab- len konsistent zu halten, ist die Addition einer Konstanten in leeren Pfaden von Verzweigungen bzw. Schleifen. Wenn dies ausschließlich für Tracer c durchgeführt wird, dann bleibt die Komplexität der kodierten Verarbeitung linear zum Standard.

Die Absicherung der Berechnung von Tracer c ist dabei von un- tergeordneter Bedeutung. Für niedrige Sicherheitslevel kann evtl, auf eine Absicherung verzichtet werden.

In der Figur ist Ablauf der kodierten Operation zu Xf := Xf+1 dargestellt.

Dabei ist im linken Teil der Figur der Einfluss der Additi- onsoperation auf die Tracer-Variable Tracer c gezeigt, während im rechten Teil der Figur die Addition von 1 auf die Variable x c im codierten Raum dargestellt ist.

Die Variable x c ist definiert als codierte Variable, wobei die nicht codierte Variable Xfi bzw. deren Wert mit der Sys- temvariablen A multipliziert ist. Zusätzlich addieren sich zum Wert der kodierten Variablen x c die Signaturen B x und D x .

Der zur Addition vorgesehene Wert 1 wird auch kodiert verar- beitet mit der codierten Operation + c ; der codierte Wert l c besteht ebenfalls aus der Systemkonstanten A multipliziert mit 1, einer Signatur BAD D (statische Signatur) und der dyna- mischen Signatur D x .

In diesem Beispiel ergibt sich die neue dynamische Signatur D x aus der bisherigen dynamischen Signatur D x plus BAD D . Diese neue dynamische Signatur D x wird zugeordnet zu der Variablen X c im System gespeichert. In einer alternativen (jedoch weni- ger sicheren) Ausführungsform können alle codierten Variablen im System die gleiche dynamische Signatur D x aufweisen.

Auf der linken Seite der Figur ist analog zu dem rechts dar- gestellten Additionsvorgang (Inkrement um 1) die Behandlung der kodierten Tracer-Variablen Tracer c dargestellt. In der kodierten Tracer-Variablen Tracer c findet sich die Summe al- ler bisherigen dynamischen Signaturen D x in codierter Form, wobei durch die Modulo-A-Operation MOD A dafür gesorgt wird, dass durch die Summierung kein Überlauf stattfinden kann. Weiter umfasst die Tracer-Variable Tracer c eine eigene stati- sche Signatur B Traceri und die dynamische Signatur D Zykius (kurz: D zy k), wobei hier davon ausgegangen wird, dass in der System- variablen D Zy kius stets die derzeitige dynamische Signatur der Tracer-Variablen Tracer c gehalten wird.

In der zweiten Zeile der Figur ist nun die Erweiterung der Tracer-Variablen Tracer c durch den Additionsvorgang gezeigt. Neben dem bisherigen Wert von Tracer c wird zunächst A mal BAD D addiert, weil in der kodierten Tracer-Variablen Tracer c der „Nutzinhalt" (Summe der D x ) mit der Systemvariablen A multi- pliziert gehalten wird. Zudem wird die bisherige statische Signatur B Traceri der Tracer-Variablen Tracer c abgezogen und eine neue, aktuelle statische Signatur B Tracer 2 zum Wert der Tracer-Variablen Tracer c addiert. Man sieht, dass in diesem Beispiel davon ausgegangen wird, dass die Tracer-Variable Tracer c anstelle einer „herkömmlichen" statischen Signatur B eine sich ebenfalls ändernde „quasi-statische" Signatur BTraceri bzw. B Tracer2 aufweist. Dies ist von Vorteil, weil zwar die übrigen kodierten Variablen im System nunmehr erfindungsgemäß über eine dynamische Signatur D x verfügen, aber gerade die dynamische Signatur D Zykius der Tracer-Variablen eben nicht mit dem Verfahren der Erfindung abgesichert werden kann. Aus die- sem Grund ist hier vorteilhaft aus der bislang absolut stati- schen Signatur B Traceri eine sich ändernde, quasi-statische Signatur gemacht worden. In anderen Ausführungsbeispielen, insbesondere solchen, die einen niedrigeren SIL (Security In- tegrity Level - Sicherheitsstufe) benötigen, kann auf eine solche Dynamisierung der statischen Signatur der Tracer- Variablen Tracer c auch verzichtet werden.

In der dritten, untersten Zeile der Figur ist der Kontroll- schritt in der Auswertung der Tracer-Variablen Tracer c ge- zeigt. Dabei ist in der oberen Zeile der Vergleichsoperation („Modulo-Vergleich") gezeigt, wie der Wert der Tracer- Variablen Tracer c dekodiert wird; dies entspricht dem Verfah- ren aus dem Stand der Technik. Das Ergebnis muss „modulo-" identisch sein zu dem Ergebnis der in der zweiten Zeile ge- zeigten Rechenoperationen. Dabei wird ein sogenannter Modulo- Vergleich zu der Summe der dynamischen Signaturen aller ko- dierten Variablen im System durchgeführt, wobei das Summen- Ergebnis zunächst mit einer Modulo A Operation verarbeitet wird, um den Effekt etwaiger Überlaufe über den Zahlenwert der Systemkonstanten A zu eliminieren. Für den Fall, für den die Vergleichsoperation nicht erfüllt ist, kann angenommen werden, dass ein Fehler vorliegt. In einem solchen Fall kön- nen verschiedene Maßnahmen vorgesehen sein, beispielsweise die Ausgabe einer Fehlermeldung oder die Verwendung von si- cheren Ersatzwerten für Systemparameter oder dergleichen.

Die in der Tracer-Variablen Tracer c gehaltene Summe der dyna- mischen Signaturen D x ist gleichzeitig ein Maß für die Anzahl der Zugriffe auf die kodierten Variablen. Zumindest für Ba- sisblöcke, also lineare Programmstrukturen, steht jeweils die Anzahl der Zugriffe auf codierte Variablen in einem Programm- zyklus fest. Diese Anzahl kann als ein Erwartungswert verwen- det werden, dessen Vergleich mit dem Inhalt der kodierten Tracer-Variablen Tracer c Auskunft darüber gibt, ob der Pro- grammcode in vorgeschriebener Weise abgearbeitet wurde. Na- türlich muss der Wert der Tracer-Variablen dazu dekodiert werden (Zeile 1) und das Ergebnis durch BAD D oder einen ande- ren regelmäßigen Offset dividiert werden; alternativ kann der Erwartungswert aus nicht die Anzahl der erwarteten Zugriffe sein, sondern der erwartete Summen-Signaturwert £D X oder Im Falle einer Diskrepanz kann ebenfalls eine Fehlerbehandlung erfolgen, wie bereits an dem Fall disku- tiert, in dem es eine Diskrepanz in den dynamischen Signatu- ren als solche geben sollte.