[go: up one dir, main page]

DE102009005764A1 - Method for monitoring execution of program in e.g. chip card, involves determining whether addressed programs or addresses are assigned to subprogram or destination address, and executing subprogram when assignment is correct - Google Patents

Method for monitoring execution of program in e.g. chip card, involves determining whether addressed programs or addresses are assigned to subprogram or destination address, and executing subprogram when assignment is correct Download PDF

Info

Publication number
DE102009005764A1
DE102009005764A1 DE102009005764A DE102009005764A DE102009005764A1 DE 102009005764 A1 DE102009005764 A1 DE 102009005764A1 DE 102009005764 A DE102009005764 A DE 102009005764A DE 102009005764 A DE102009005764 A DE 102009005764A DE 102009005764 A1 DE102009005764 A1 DE 102009005764A1
Authority
DE
Germany
Prior art keywords
program
address
calling
subprogram
subroutine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE102009005764A
Other languages
German (de)
Inventor
Nouredine Bouabdallah
Michael Baldischweiler
Arvid Wirén
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Giesecke and Devrient Mobile Security GmbH
Original Assignee
Giesecke and Devrient GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Priority to DE102009005764A priority Critical patent/DE102009005764A1/en
Publication of DE102009005764A1 publication Critical patent/DE102009005764A1/en
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

The method involves creating a table in a memory (14), and storing addresses of addressed programs or identifiers of the programs or identifiers of the addresses in the table. The programs or the addresses are assigned to an addressable subprogram or an addressable destination address. A determination is made to find whether the addressed programs or the addresses are assigned to the subprogram or the destination address before skipping into the subprogram. The subprogram is executed when the assignment is correct, and error handler is called when the assignment is incorrect. An independent claim is also included for a processor for executing a method for monitoring execution of a program.

Description

Die Erfindung betrifft ein Verfahren zur Überwachung der bestimmungsgemäßen Ausführung eines Programms durch einen Prozessor, der auf einen Speicher zugreift. Die Erfindung betrifft weiterhin einen Prozessor sowie einen tragbaren Datenträger. Speziell ist die Erfindung für Anwendungen vorgesehen, bei denen Aspekte der Sicherheit und Korrektheit der ausgeführten Programme sowie der Zuverlässigkeit der Programmausführung besondere Bedeutung haben.The The invention relates to a method for monitoring the intended use Execution of a program by a processor running on accesses a memory. The invention further relates to a Processor as well as a portable data carrier. Special is the invention is intended for applications where aspects the safety and correctness of the programs executed and the reliability of the program execution have special meaning.

Typischerweise umfasst ein auf einem Prozessor ablaufendes Programm mehrere Funktionen, die von einem Hauptprogramm aufgerufen werden. Die Funktionen oder Unterprogramme werden mit spezifischen Programmbefehlen, z. B. CALL, ECALL, usw., aufgerufen. Techniken zur Ausführung von Unterprogrammen sind in vielfältigen Ausgestaltungen gut bekannt. Bei der Ausführung eines Unterprogramm-Aufrufbefehls CALL wird unter anderem der aktuelle Stand des Programmzählers in einem Stapelspeicher gespeichert. Die Programmausführung wird dann an einer in dem Unterprogramm-Aufrufbefehl angegebenen Adresse fortgesetzt. Sobald im Zuge der Unterprogrammausführung der erste Unterprogramm-Rücksprungbefehl, z. B. RET, erkannt wird, wird der Programmzähler mit dem jüngsten Eintrag im Stapelspeicher geladen. Dieser Eintrag wird aus dem Stapelspeicher entfernt, indem der Stapelzeiger entsprechend geändert, beispielsweise dekrementiert, wird. Die Wirkung des Unterprogramm-Rücksprungbefehls ist somit, dass die Programmausführung im aufrufenden Programm mit demjenigen Befehl fortgesetzt wird, der dem Unterprogramm-Aufrufbefehl folgt.typically, For example, a program running on a processor includes several functions, which are called by a main program. The functions or Subroutines are programmed with specific program commands, eg. Eg CALL, ECALL, etc., called. Techniques for executing subroutines are Well known in a variety of configurations. In the execution A subroutine call command CALL will be the current one, among other things Status of the program counter stored in a stack. The program execution is then at a in the subroutine call command continued address. Once in the course of subroutine execution the first subroutine return instruction, e.g. B. RET recognized becomes, the program counter with the youngest Loading an entry in the stack. This entry is from the stack removed by changing the stack pointer accordingly, for example, is decremented. The effect of the subroutine return command is thus that the program execution in the calling program continues with the instruction that is the subroutine call instruction follows.

Wird der Ablauf des Programms, z. B. durch einen Lichtangriff, gestört, so kann es passieren, dass ein Unterprogramm-Aufruf erzeugt wird, der nicht auf der korrekten Anfangsadresse des aufgerufenen Unterprogramms landet. Alternativ ist es möglich, dass Aufrufe erzeugt werden, die an sich innerhalb des korrekten Programmablaufs nicht zugelassen sind.Becomes the course of the program, z. B. by a light attack, disturbed, so it can happen that a subroutine call is generated, not on the correct starting address of the called subroutine lands. Alternatively it is possible that calls are generated which in themselves are not within the correct program flow allowed are.

Aus der DE 102 52 347 A1 ist ein Verfahren bekannt, bei dem während des Programmablaufs zumindest eine Plausibilitätsüberprüfung hinsichtlich der Zuordnung eines auszuführenden Unterprogramm-Rücksprungbefehls zu einem vom Programmierer vorgesehenen Aufrufbefehl vorgenommen wird. Dazu wird beim Aufruf eines Unterprogramms nicht nur die Rücksprung-Zieladresse, sondern auch eine Rücksprungbefehlsadresse in einem Stapelspeicher abgelegt. Aus der Rücksprungbefehlsadresse lässt sich durch Auswerten einer vorgegebenen Beziehung ableiten, an welcher Stelle gemäß der Intention des Programmierers der zu dem gegenwärtig ausgeführten Unterprogramm-Aufrufbefehl gehörige Unterprogramm-Rücksprungbefehl bei korrekter Programmausführung zu erwarten ist. Beide genannten Adressen werden im Stapelspeicher abgelegt. Bei der Abarbeitung jedes Unterprogramm-Rücksprungbefehls wird überprüft, ob die Speicheradresse dieses Befehls in der vorgegebenen Beziehung zu der im Stapelspeicher befindlichen Rücksprungbefehlsadresse steht. Nachteilig hieran ist, dass keine Überprüfung stattfindet, ob die Ausführung eines Unterprogramms überhaupt zulässig ist.From the DE 102 52 347 A1 a method is known in which during the program execution at least a plausibility check is made with regard to the assignment of a subroutine return instruction to be executed to a call command provided by the programmer. For this purpose, not only the return destination address, but also a return instruction address is stored in a stack memory when a subroutine is called. From the return instruction address, by evaluating a predetermined relationship, it can be deduced at which point, according to the intention of the programmer, the subroutine return instruction associated with the currently executed subroutine call instruction is to be expected if the program execution is correct. Both mentioned addresses are stored in the stack. Upon execution of each subroutine return instruction, it is checked whether the memory address of this instruction is in the predetermined relation to the return instruction address located in the stack. This has the disadvantage that there is no check as to whether the execution of a subprogram is permissible at all.

Aus der WO 98/32072 A1 ist ein Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen bekannt, bei dem das Überschreiben von zur späteren Verwendung gespeicherten Rücksprungadressen und/oder die Verwendung von fehlerhaft gespeicherten oder überschriebenen Rücksprungadressen als Rücksprungadresse verhin dert werden. Auch das in dieser Veröffentlichung beschriebene Verfahren bietet jedoch keinen ausreichenden Schutz für einen fehlerhaften oder unerlaubten Unterprogrammaufruf.From the WO 98/32072 A1 a method for monitoring the intended execution of software programs is known in which the overwriting of stored for later use return addresses and / or the use of incorrectly stored or overwritten return addresses are prevented as a return address. However, the method described in this publication does not provide sufficient protection for a faulty or unauthorized subroutine call.

Schließlich ist aus der EP 1 507 185 A1 ein Verfahren bekannt, gemäß dem in einem aufrufbaren Unterprogramm ein Verweis auf das aufrufende Programm enthalten ist, so dass eine Überprüfung durchführbar ist, ob der Aufruf des Unterprogramms in erlaubter Weise erfolgt. Zu Beginn eines Unterprogramms können hierbei mehrere Kommandos mit erlaubten Sprungquellen hintereinander vorgesehen sein, um den Einsprung in das Unterprogramm von verschiedenen Stellen des Hauptprogramms zu ermöglichen. Nachteilig an der in dieser Druckschrift vorgetragenen Lösung ist jedoch die statische Zuordnung von Sprungquellen zu aufgerufenen Unterprogrammen.Finally, out of the EP 1 507 185 A1 a method is known, according to which in a callable subroutine a reference to the calling program is included, so that a check is feasible, whether the call of the subroutine takes place in a permitted manner. At the beginning of a subroutine, several commands with permitted jump sources can be provided one after the other in order to enable entry into the subroutine of various points of the main program. A disadvantage of the presented in this document solution, however, is the static assignment of jump sources to called subroutines.

Es ist daher Aufgabe der vorliegenden Erfindung, ein Verfahren zur Überwachung der bestimmungsgemäßen Ausführung eines Programms anzugeben, das eine Überprüfung erlaubt, ob der Aufruf eines Unterprogramms korrekt und zuverlässig erfolgt. Es ist weiterhin Aufgabe der vorliegenden Erfindung, einen Prozessor zur Durchführung des erfindungsgemäßen Verfahrens sowie einen tragbaren Datenträger mit einem erfindungsgemäßen Prozessor anzugeben.It It is therefore an object of the present invention to provide a method for monitoring the intended execution of a Specify a program that allows a review, whether calling a subprogram is correct and reliable he follows. It is a further object of the present invention to provide a Processor for carrying out the invention Method as well as a portable data carrier with a specify processor according to the invention.

Diese Aufgaben werden gelöst durch ein Verfahren mit den Merkmalen des Patentanspruches 1, einen Prozessor mit den Merkmalen des Patentanspruches 12 sowie einen tragbaren Datenträger mit den Merkmalen des Patentanspruches 13.These objects are achieved by a method having the features of claim 1, a Processor with the features of claim 12 and a portable data carrier with the features of claim 13.

Die Erfindung schafft ein Verfahren zur Überwachung der bestimmungsgemäßen Ausführung eines Programms durch einen Prozessor, der auf einen Speicher zugreift. Bei dem Verfahren ist in dem Speicher eine Tabelle vorgesehen oder wird dort angelegt, in welcher Tabelle einem aufrufbaren Unterprogramm oder einer aufrufbaren Zieladresse zugeordnete Identifikatoren eines aufrufenden Programms oder einer aufrufenden Adresse gespeichert werden. Vor dem Sprung in das Unterprogramm wird mittels der Tabelle geprüft, ob das aufrufende Programm oder die aufrufende Adresse in der Tabelle dem Unterprogramm oder der aufrufbaren Zieladresse zugeordnet ist. Wenn die Zuordnung korrekt ist, wird das Unterprogramm ausgeführt. Wenn die Zuordnung nicht besteht, wird eine Fehlerbehandlungsroutine aufgerufen.The Invention provides a method for monitoring the intended Execution of a program by a processor running on accesses a memory. In the method is in the memory a Table provided or is created there, in which table one callable subprogram or an addressable destination address Identifiers of a calling program or a calling one Address to be stored. Before jumping to the subroutine is checked by means of the table whether the calling program or the calling address in the table to the subroutine or the callable destination address is assigned. If the assignment is correct is, the subroutine is executed. If the assignment does not exist, an error handler is called.

Das erfindungsgemäße Verfahren ermöglicht einen korrekten Programmablauf hinsichtlich des Aufrufs von Unterprogrammen. Der Programmablauf wird durch das erfindungsgemäße Verfahren ständig auf Korrektheit bei Sprüngen in Unterprogramme oder von Unterprogrammen zurück in ein aufrufendes Programm überprüft. Insbesondere ist ein sog. Ausblitzen von Sprüngen bzw. ein Überspringen von Unterprogrammen nicht mehr möglich. Hierdurch wird die Sicherheit des Ablaufs des Programms verbessert. So kann beispielsweise durch einen Lichtangriff kein ungewollter Programmablauf gestartet werden bzw. es können keine unzulässigen Teilabschnitte ausgeführt werden. Die Zuordnung von Identifikatoren oder Adressen eines aufrufenden Programms zu einem aufrufbaren Unterprogramm oder einer aufrufbaren Zieladresse in einer Tabelle ermöglicht eine große Flexibilität im Rahmen der Erstellung des Programms. Darüber hinaus lässt sich der Programmablauf mit einer hohen Effizienz durchführen.The inventive method allows a correct program sequence with regard to calling subroutines. The program sequence is determined by the invention Proceed constantly for correctness in case of jumps in subprograms or subprograms back in Calling program checked. In particular a so-called flash of jumps or skipping subprograms are no longer possible. This will Improved the safety of the program. So, for example No unintentional program started by a light attack or there can be no illegal sections be executed. The assignment of identifiers or Addresses of a calling program to a callable subroutine or a callable destination address in a table a great flexibility in the creation of the program. In addition, the program flow can be perform with a high efficiency.

In einer Ausgestaltung der Erfindung ist in der Tabelle das Unterprogramm oder die aufrufbare Zieladresse als überprüfbarer Tabellenname gespeichert oder wird dort gespeichert.In An embodiment of the invention is the subroutine in the table or the callable destination address as verifiable Table name saved or saved there.

Ferner ist gemäß einer weiteren Ausgestaltung der Stand des Programmzählers oder eine Checksumme eines Programmcodes des aufrufenden Programms in der Tabelle gespeichert oder wird in dieser gespeichert. Anstelle der Verwendung von Adressen eines Programmzählers können auch Checksummen zur Überprüfung des korrekten Programmablaufs verwendet werden. Diese Checksummen können beispielsweise aus Codebereichen (z. B. Opcode-Fetch) des Unterprogramms bzw. des aufrufenden Programms (Hauptprogramm) gebildet werden.Further is according to another embodiment of the prior the program counter or a checksum of a program code of the calling program is stored in the table or is in this saved. Instead of using addresses of a program counter can also checksums for review the correct program sequence are used. These checksums For example, you can use code ranges (for example, Opcode Fetch). of the subprogram or of the calling program (main program) be formed.

Dem Eintrag des aufrufenden Programms oder der aufrufenden Adresse ist eine vorgegebene Adresse innerhalb der Tabelle zugeordnet, in der ein vorgegebener Wert gespeichert ist, wenn keine Adresse des aufrufenden Programms innerhalb der Adresse der Tabelle eingespeichert ist. Durch diese zusätzliche Überprüfung kann die Sicherheit des korrekten Programmablaufs weiterhin verbessert werden. Insbesondere wird vor dem Abspeichern der Adresse des aufrufenden Programms überprüft, ob der vorgegebene Wert in der Speicheradresse der Tabelle enthalten ist, wobei im positiven Fall die Adresse des aufrufenden Programms in die Speicheradresse der Tabelle eingeschrieben wird und im negativen Fall auf eine fehlerhafte Programmausführung geschlossen wird. Erst nach erfolgreicher Überprüfung der Sprungquelle im Unterprogramm wird der entsprechende Adresswert in die Tabelle geschrieben.the Entry of the calling program or the calling address assigned a given address within the table, in the a predetermined value is stored if no address of the calling Program is stored within the address of the table. Through this additional review can the security of the correct program continues to improve become. In particular, before storing the address of the calling Program checks if the default value in the memory address of the table is included, where in the positive Case the address of the calling program in the memory address the table is written and in the negative case to a faulty one Program execution is closed. Only after successful verification the jump source in the subprogram becomes the corresponding address value written in the table.

Gemäß einer alternativen Ausgestaltung umfasst die Tabelle für jedes aufrufende Unterprogramm eine Rücksprungadresse zu dem aufrufenden Pro gramm. Dabei wird überprüft, ob die Rücksprungadresse in dem Speicher, insbesondere einem Stapelspeicher oder einem nichtflüchtigen Speicher (NVM), gespeichert ist. Ist dies der Fall, wird die aufgerufene Unterfunktion durchlaufen. Andernfalls wird der Programmablauf gesperrt oder eine Fehlermeldung ausgegeben.According to one alternative embodiment includes the table for each calling subroutine to the return address calling program. It is checked if the return address in the memory, in particular a Stacked memory or nonvolatile memory (NVM), is stored. If so, the called subfunction will be run through. Otherwise, the program will be locked or a Error message issued.

In einer weiteren Ausbildung wird vor dem Rücksprung in das aufrufende Programm überprüft, ob die Rücksprungadresse in dem Speicher mit der im Programmablauf des Unterprogramms aufgerufenen Rücksprungadresse übereinstimmt. Diese zweite Überprüfung ist zweckmäßig, da es auch möglich ist, über einen Lichtangriff mitten in ein Unterprogramm einzuspringen und dieses teilweise auszuführen.In Another training is before the return to the Calling program checks if the return address in the memory with that called in the program sequence of the subroutine Return address matches. This second review is appropriate, since it is also possible over a light attack in the middle of a subroutine and jump to do this partially.

Alternativ wird bei einem Aufruf eines Unterprogramms durch das aufrufende Programm die Adresse des aufrufenden Programms beim Aufruf dem Unterprogramm übergeben und in dem Speicher abgespeichert. Dabei wird zweckmäßigerweise ein Vergleich zwischen der übergebenden und abgespeicherten (Einsprung-)Adresse und dem Programmzähler vorgenommen, wobei das Unterprogramm fortgesetzt wird, wenn bei dem Vergleich eine Übereinstimmung der Adressen festgestellt wurde. Das Unterprogramm wird nicht fortgesetzt, wenn bei dem Vergleich die Übereinstimmung der Adressen nicht festgestellt werden konnte.alternative is called by a calling subprogram Program the address of the calling program when calling the subroutine passed and stored in the memory. It is expediently a comparison between the transferring and stored (Entry) address and the program counter, wherein the subroutine is continued when in the comparison a match of the addresses was detected. The Subroutine will not continue if the comparison matches the addresses could not be determined.

Zusätzlich kann bei einem Rücksprung von dem Unterprogramm zu dem aufrufenden Programm überprüft werden, ob der Aufruf der Unterfunktion korrekt erfolgte. Insbesondere wird hierbei überprüft, ob der Funktionsaufruf zulässig war, da, wie bereits erwähnt, auch ein Sprung in die Mitte der Funktion erfolgen kann. Für diese Überprüfung kann beispielsweise die Ü berprüfung auf das Vorliegen eines festen Werts erfolgen, da der Startpunkt, d. h. die Startadresse, des Unterprogramms bekannt ist.additionally may be on a return from the subroutine to the Calling program to be checked if the Call of the subfunction was done correctly. In particular, this is checked whether the function call was permissible because, as already mentioned, You can also jump to the middle of the function. For This check may, for example, be the review to the presence of a fixed value, since the starting point, d. H. the starting address of the subroutine is known.

Die Erfindung schafft ferner einen Prozessor, der dazu eingerichtet ist, ein Verfahren nach einem der vorherigen Ansprüche auszuführen. Darüber hinaus schafft die Erfindung einen tragbaren Datenträger, insbesondere eine Chipkarte oder ein Chipmodul, der einen erfindungsgemäßen Prozessor aufweist.The The invention further provides a processor adapted thereto is a method according to any one of the preceding claims perform. In addition, the invention creates a portable data carrier, in particular a chip card or a chip module comprising an inventive Processor has.

Die Erfindung wird nachfolgen näher anhand der Figuren beschrieben. Es zeigen:The Invention will be described in more detail below with reference to FIGS. Show it:

1 ein Blockdiagramm eines tragbaren Datenträgers, der einen Prozessor nach einem Ausführungsbeispiel der Erfindung aufweist, und 1 a block diagram of a portable data carrier having a processor according to an embodiment of the invention, and

2 einen beispielhaften Programmablauf des erfindungsgemäßen Verfahrens. 2 an exemplary program flow of the method according to the invention.

In 1 ist ein tragbarer Datenträger 10 gezeigt, der beispielsweise als Chipkarte oder Chipmodul ausgebildet ist. In an sich bekannter Weise enthält der Datenträger 10 einen Halbleiterchip, auf dem ein Prozessor 12, ein Speicher 14 und eine Schnittstelle 16 zur drahtgebundenen oder drahtlosen Kommunikation ausgebildet sind. Der Speicher 14 weist mehrere unterschiedliche Bereiche auf, nämlich im vorliegenden Ausführungsbeispiel einen als RAM ausgestalteten Arbeitsspeicher 18, einen als EEPROM ausgestalteten nichtflüchtigen Speicher 20 und einen als maskenprogrammiertes ROM ausgestalteten Festwertspeicher 22.In 1 is a portable data carrier 10 shown, which is designed for example as a chip card or chip module. In known manner, the disk contains 10 a semiconductor chip on which a processor 12 , a store 14 and an interface 16 are designed for wired or wireless communication. The memory 14 has several different areas, namely in the present embodiment designed as a RAM memory 18 , a nonvolatile memory configured as an EEPROM 20 and a read-only memory configured as a mask-programmed ROM 22 ,

Der Festwertspeicher 22 enthält wesentliche Teile des Betriebssystems des Datenträgers 10 und der von diesem Betriebssystem ausgeführten Programme. Zwei Programmabschnitte sind in 1 beispielhaft gezeigt, nämlich ein aufrufendes Programm oder Hauptprogramm 24 und ein aufgerufenes Programm oder Unterprogramm 26. Der Prozessor 12 weist einen in Form eines Prozessorregisters ausgestalteten Programmzähler 28 auf, welcher die Adresse des jeweils ausgeführten oder auszuführenden Programmbefehls angibt. Weitere Abschnitte der auszuführenden Programme können im nichtflüchtigen Speicher 20 enthalten sein. Primär befinden sich in diesem Speicher 20 jedoch ein Dateisystem, auf das die Programme zugreifen, sowie weitere von dem Betriebssystem verwaltete Daten.The read-only memory 22 contains essential parts of the operating system of the disk 10 and the programs run by this operating system. Two program sections are in 1 exemplified, namely a calling program or main program 24 and a called program or subroutine 26 , The processor 12 has a program counter designed in the form of a processor register 28 on, which indicates the address of the respectively executed or to be executed program command. Further sections of the programs to be executed can be stored in non-volatile memory 20 be included. Primary are in this store 20 however, a file system accessed by the programs, as well as other data managed by the operating system.

Die Begriffe „Hauptprogramm” und „Unterprogramm” bezeichnen vorliegend lediglich die Beziehung der Programmabschnitte 24 und 26 relativ zueinander. Es versteht sich, dass das Hauptprogramm 24 seinerseits von einem übergeordneten Programmabschnitt aufgerufen werden kann, und dass das Unterprogramm 26 seinerseits weitere Unterprogramme aufrufen kann und somit für diese weiteren Unterprogramme als Hauptprogramm anzusehen ist.The terms "main program" and "subroutine" in the present case merely describe the relationship of the program sections 24 and 26 relative to each other. It is understood that the main program 24 in turn can be called from a parent program section, and that the subroutine 26 in turn can call other subroutines and thus is to be regarded as the main program for these other subroutines.

Der Arbeitsspeicher 18 dient zur temporären Aufnahme von Werten während Berechnungsvorgängen. Insbesondere ist im Arbeitsspeicher 18 ein Stapelspeicher 30 (stack) angelegt, der unter anderem Unterprogramm-Rücksprungadressen enthält. Der aktuelle Füllungsgrad des Stapelspeichers 30 – also in unterschiedlichen Ausführungsformen entweder der jüngste Eintrag oder der erste noch freie Speicherplatz – wird durch einen Stapelzeiger 32 angegeben, der als Register des Prozessors 12 ausgestaltet ist.The working memory 18 is used to temporarily store values during calculations. In particular, is in memory 18 a stack 30 (stack), which contains, inter alia, subroutine return addresses. The current fill level of the stack 30 That is, in various embodiments, either the most recent entry or the first remaining free space is indicated by a stack pointer 32 specified as the register of the processor 12 is designed.

Das erfindungsgemäße Verfahren ermöglicht sichere Programmsprünge von einem aufrufenden Programm zu einem aufrufbaren Unterprogramm, und umgekehrt, beispielsweise unter Verwendung der Mikrocontrollerbefehle JMP und CALL. Ein typischer Programmablauf ist beispielhaft nachfolgend dargestellt: MOV R6, #0×01 MOV R7, #0×FF CALL Test_Param ; Aufruf des Unterprogramms CJNE R7, #0×34, WrongResult MOV Result, R7 RET WrongResult: SJMP $ ; Endlosschleife The inventive method allows safe program jumps from a calling program to a callable subroutine, and vice versa, for example, using the microcontroller commands JMP and CALL. A typical program sequence is shown by way of example below: MOV R6, # 0 × 01 MOV R7, # 0 × FF CALL Test_Param ; Call of the subroutine CJNE R7, # 0 × 34, WrongResult MOV Result, R7 RET Wrong Result: SJMP $ ; endless loop

Wird der Programmablauf z. B. über einen Lichtangriff gestört, so wird der Unterprogrammaufruf Test_Param und die Überprüfung (CJNE) übersprungen.Becomes the program sequence z. B. disturbed by a light attack, so the subroutine call becomes Test_Param and the check (CJNE) skipped.

Ein anderes typisches Unterprogramm schaut beispielsweise wie folgt aus: PIN_CHECK: MOV A, R6 XRL A, R7 JNZ WrongPin CALL PIN_IS_VALID RET WrongPin: MOV R7, #0×FF RET For example, another typical subroutine looks like this: PIN_CHECK: MOV A, R6 XRL A, R7 JNZ Wrong Pin CALL PIN_IS_VALID RET WrongPin: MOV R7, # 0 × FF RET

Wird das Unterprogramm PIN_CHECK ausgeführt, so findet keine Überprüfung statt, ob der Aufruf zulässig ist. Um den Aufruf des Unterprogramms mittels des Befehls CALL oder JMP sicher zu machen, wird vor dem Programmsprung der Wert des aktuellen Programmzählers in einem Speicherbereich, z. B. dem Register, dem Stack oder einem nichtflüchtigen Speicher, gesichert. Dies kann beispielsweise wie folgt erfolgen: MOV R2, #0×01 MOV R3, #0×FF MOV R6, #High SPRUNG_QUELLE MOV R5, #Low SPRUNG_QUELLE SPRUNG_QUELLE: CALL Test_Param ; Aufruf des Unterprogramms CJNE R7, #0×34, WrongResult MOV Result, R7 RET WrongResult: SJMP $ ; Endlosschleife If the subroutine PIN_CHECK is executed, then there is no check whether the call is permissible. In order to make the call of the subroutine by means of the command CALL or JMP safe, the value of the current program counter in a memory area, eg. As the register, the stack or a non-volatile memory, secured. This can be done, for example, as follows: MOV R2, # 0x01 MOV R3, # 0 × FF MOV R6, #High JUMP_QUELLE MOV R5, #Low JUMP_QUELLE SPRUNG_QUELLE: CALL Test_Param ; Call of the subroutine CJNE R7, # 0 × 34, WrongResult MOV Result, R7 RET Wrong Result: SJMP $ ; endless loop

Beim Einsprung in die Unterprogrammfunktion wird überprüft, ob der Funktionsaufruf zulässig ist. Diese Überprüfung findet mittels einer (nicht dargestellten) Tabelle statt, die beispielsweise in dem nichtflüchtigen Speicherbereich abgespeichert ist. Wird in der Tabelle festgestellt, dass die Ad resse des aufrufenden Programms vorhanden ist, so wird der Aufruf des Unterprogramms akzeptiert und die Programmabarbeitung fortgesetzt. Andernfalls wurde ein unzulässiger Sprung erkannt, woraufhin die Programmabarbeitung eingestellt wird. Ein beispielhafter Programmablauf für die Überprüfung ist nachfolgend dargestellt: CheckJMP_CALL_ADDR: MOV DPTR, #TABELLE ; Laden der TABELLEN-Adresse CLR A MOVC A, @A + DPTR ; Überprüfung ob Tabelle zum Unterpro MOV R0, SP ; gramm gehört XRL A, @R0 ; Test_Param_Start(High-Byte) MOV R1, A INC DPTR DEC R0 CLR A MOVC A, @A + DPTR XRL A, @R0; ; Test_Param_Start(Low-Byte) XRL A, R1 JNZ NO_TABLE_FOUND Check_Entry: ; Überprüfung der Sprungquelle INC DPTR CLR A MOVC A, @A + DPTR XRL A, R6 ; Sprungquelle (High-Byte) MOV R1, A INC DPTR CLR A MOVC A, @A + DPTR XRL A, R5 ; Sprungquelle (Low-Byte) XRL A, R1 JNZ NO_TABLE_FOUND ; kein gültiger Eintrag gefunden RET NO_TABLE_FOUND: SJMP $ When entering the subroutine function, it is checked whether the function call is permissible. This check takes place by means of a table (not shown), which is stored, for example, in the non-volatile memory area. If it is found in the table that the address of the calling program exists, the call of the subroutine is accepted and the program execution continues. Otherwise, an invalid jump was detected, whereupon program execution is stopped. An exemplary program flow for the check is shown below: CheckJMP_CALL_ADDR: MOV DPTR, #TABLE ; Loading the TAB address CLR A MOVC A, @A + DPTR ; Check if table for subpro MOV R0, SP ; heard XRL A, @ R0 ; Test_Param_Start (high byte) MOV R1, A INC. DPTR DEC R0 CLR A MOVC A, @A + DPTR XRL A, @ R0; ; Test_Param_Start (low byte) XRL A, R1 JNZ NO_TABLE_FOUND Check_Entry: ; Check the jump source INC. DPTR CLR A MOVC A, @A + DPTR XRL A, R6 ; Jump source (high-byte) MOV R1, A INC. DPTR CLR A MOVC A, @A + DPTR XRL A, R5 ; Jump source (low-byte) XRL A, R1 JNZ NO_TABLE_FOUND ; no valid entry found RET NO_TABLE_FOUND: SJMP $

Eine weitere Überprüfung besteht darin, dass für den Eintrag der Sprungquelle eine feste RAM-/NVM-Adresse zugeordnet wird. In dieser steht, wenn keine Adresse hinterlegt ist, beispielsweise der Wert 0×55AA. Soll nun die Adresse des aufrufenden Programms (Sprungquelle) abgespeichert werden, wird zunächst überprüft, ob der vordefinierte Wert 0×55AA in diesem Speicher liegt. Ist dies nicht der Fall, wurde eine fehlerhafte Programmausführung durchgeführt und der Programmablauf abgebrochen oder eine Fehlerbehandlungsroutine durchgeführt. Nach erfolgreicher Überprüfung der Adresse des aufrufenden Programms im aufgerufenen Unterprogramm wird die Adresse des aufrufenden Programms in die RAM-/NVM-Adresse geschrieben. Dabei können anstatt der Adressen des Programmzählers auch Checksummen zur Überprüfung verwendet werden. Diese Checksummen können aus Codebereichen (z. B. Opcode-Fetch) des Unterprogramms bzw. des Aufrufers gebildet werden.A further review is that for the jump source entry is assigned a fixed RAM / NVM address becomes. In this is, if no address is stored, for example the value 0 × 55AA. Now the address of the calling program (Jump source) are saved, will be checked first, whether the predefined value 0 × 55AA is in this memory. If this is not the case, a faulty program execution has occurred carried out and aborted the program or a Error handling routine performed. After successful verification the address of the calling program in the called subroutine the address of the calling program becomes the RAM / NVM address written. Here, instead of the addresses of the program counter Also checksums are used for verification. These checksums can be from code ranges (eg Opcode-Fetch) of the subroutine or of the caller.

In einer anderen Ausgestaltung ist es zweckmäßig, wenn für jedes aufzurufende Unterprogramm eine Tabelle erstellt wird, die die Rücksprungadressen zu der bzw. den aufrufenden Hauptprogrammen enthält. Wird nun ein Unterprogramm aufgerufen, wird zunächst überprüft, ob die Rücksprungadresse in dem Stapelspeicher für den jeweiligen CALL vorhanden ist. Ist dies der Fall, so wird das Unterprogramm durchlaufen. Andernfalls wird der Programmablauf gesperrt oder eine Fehlermeldung ausgegeben. Vor dem Rücksprung aus dem aufgerufenen Unterprogramm wird zweckmäßigerweise nochmals überprüft, ob die Rücksprungadresse auf dem Stapelspeicher mit der Adresse des aufrufenden Programms übereinstimmt. Diese zweite Überprüfung ist zweckmäßig, da es auch möglich ist, über einen Lichtangriff mitten in ein ausgeführtes Unterprogramm einzuspringen und dieses teilweise auszuführen.In another embodiment, it is expedient if there is a table for each subroutine to be called is created, the return addresses to the or the containing main calling programs. Will now be a subroutine called, is first checked, whether the return address in the stack for the respective CALL is present. If so, it will Go through subroutine. Otherwise the program will be blocked or an error message is issued. Before the return from the called subroutine is expediently again checks if the return address is up the stack matches the address of the calling program. This second review is appropriate since it is also possible, via a light attack in the middle of an executed subroutine and to do this partially.

Alternativ zu der Tabelle mit den Rücksprungadressen kann auch ein Verfahren eingesetzt werden, bei dem die Adresse des aufrufenden Programms beim Aufruf mit übergeben wird. Die Adresse für die Startadresse des aufgerufenen Unterprogramms kann z. B. auf dem Stapelspeicher abgespeichert werden. Beim Einsprung in das Unterprogramm wird zunächst die abgespeicherte Einsprungadresse mit dem aktuellen Wert des Programmzählers (Programmcounter PC) verglichen. Ist diese Adresse korrekt, wird das Programm fortgesetzt. Andernfalls wird das Programm beendet bzw. eine Fehlermeldung ausgegeben oder ein NME ausgelöst.alternative to the table with the return addresses can also be Procedures are used, in which the address of the calling Program is passed with the call. The address for the start address of the called subroutine can z. B. on be stored in the stack. When entering the subroutine is first the stored entry address with the current value of the program counter (program counter PC) compared. If this address is correct, the program will continue. Otherwise, the program is terminated or an error message is output or a NME triggered.

Auch hier kann bei einem Rücksprung zuerst nochmals eine Überprüfung durchgeführt werden, ob der Funktionsaufruf zulässig war. Dies wird vorzugsweise deshalb durchgeführt, da, wie bereits erwähnt, auch ein Sprung in die Mitte des Unterprogramms erfolgen kann. Für diese Überprüfung kann auf einen festen Wert abgeprüft werden, da der Startpunkt des Unterprogramms bekannt ist.Also Here, in a return first again a review whether the function call is allowed was. This is preferably done because of how mentioned earlier, also a jump to the middle of the subprogram can be done. For this review can be checked for a fixed value since the starting point of the subroutine is known.

In 2 ist der schematische Ablauf des erfindungsgemäßen Verfahrens zur Überwachung der bestimmungsgemäßen Ausführung eines Programms durch einen Prozessor dargestellt. Gemäß einem Schritt S1 wird eine Tabelle angelegt, in der einem Unterprogramm (oder einer aufrufbaren Zieladresse) Adressen eines aufrufenden Programms oder einer aufrufenden Adresse zugeordnet und gespeichert werden. Gemäß Schritt S2 erfolgt vor dem Sprung in das Unterprogramm eine Überprüfung, ob das aufrufende Programm dem Unterprogramm zugeordnet ist. In Schritt S3 wird überprüft, ob die Zuordnung korrekt ist. Ist dies der Fall, so wird in Schritt S4 das Unterprogramm ausgeführt. Ist die Zuordnung falsch, so wird gemäß Schritt S5 eine Fehlerbehandlungsroutine aufgerufen.In 2 the schematic sequence of the method according to the invention for monitoring the intended execution of a program by a processor is shown. In accordance with a step S1, a table is created in which a subroutine (or a callable destination address) is assigned and stored addresses of a calling program or a calling address. According to step S2, before the jump into the subroutine, a check is made as to whether the calling program is assigned to the subroutine. In step S3, it is checked whether the assignment is correct. If this is the case, the subroutine is executed in step S4. If the assignment is incorrect, an error handling routine is called in accordance with step S5.

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list The documents listed by the applicant have been automated generated and is solely for better information recorded by the reader. The list is not part of the German Patent or utility model application. The DPMA takes over no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • - DE 10252347 A1 [0004] - DE 10252347 A1 [0004]
  • - WO 98/32072 A1 [0005] WO 98/32072 A1 [0005]
  • - EP 1507185 A1 [0006] - EP 1507185 A1 [0006]

Claims (13)

Verfahren zur Überwachung der bestimmungsgemäßen Ausführung eines Programms durch einen Prozessor (10), der auf einen Speicher (30) zugreift, bei dem – in dem Speicher (30) eine Tabelle vorgesehen ist oder angelegt wird, in welcher Adressen aufrufender Programme oder Identifikatoren aufrufender Programme oder Identifikatoren aufrufender Adressen gespeichert werden, die einem aufrufbaren Unterprogramm (26) oder einer aufrufbaren Zieladresse zugeordnet sind; – vor dem Sprung in das Unterprogramm (26) mittels der Tabelle geprüft wird, ob das aufrufende Programm (24) oder die aufrufende Adresse in der Tabelle dem Unterprogramm (26) oder der aufrufbaren Zieladresse zugeordnet ist; – wenn die Zuordnung korrekt ist, das Unterprogramm (26) ausgeführt wird; und – wenn die Zuordnung nicht besteht, eine Fehlerbehandlungsroutine aufgerufen wird.Method for monitoring the execution of a program as intended by a processor ( 10 ), which points to a memory ( 30 ) in which - in the memory ( 30 ) a table is provided or is created in which are stored addresses of calling programs or identifiers of calling programs or identifiers of calling addresses belonging to a callable subroutine ( 26 ) or an addressable destination address are assigned; - before jumping to the subprogram ( 26 ) is checked by means of the table whether the calling program ( 24 ) or the calling address in the table to the subprogram ( 26 ) or the callable destination address is assigned; - if the assignment is correct, the subroutine ( 26 ) is performed; and if the assignment does not exist, an error handler is called. Verfahren nach Anspruch 1, bei dem in der Tabelle das Unterprogramm (26) oder die aufrufbare Zieladresse als überprüfbarer Tabellenname gespeichert ist oder wird.Method according to Claim 1, in which the subroutine ( 26 ) or the callable destination address is or will be stored as a verifiable table name. Verfahren nach Anspruch 1 oder 2, bei dem der Stand des Programmzählers (28) oder eine Checksumme eines Programmcodes des aufrufenden Programms (24) in der Tabelle gespeichert ist oder wird.Method according to Claim 1 or 2, in which the status of the program counter ( 28 ) or a checksum of a program code of the calling program ( 24 ) is or is stored in the table. Verfahren nach einem der vorherigen Ansprüche, bei dem dem Eintrag des aufrufenden Programms (24) oder der aufrufenden Adresse eine vorgegebene Adresse innerhalb der Tabelle zugeordnet ist, in der ein vorgegebener Wert gespeichert ist, wenn keine Adresse des aufrufenden Programms (24) innerhalb der Adresse der Tabelle eingespeichert ist.Method according to one of the preceding claims, in which the entry of the calling program ( 24 ) or the calling address is assigned a predetermined address within the table in which a predetermined value is stored, if no address of the calling program ( 24 ) is stored within the address of the table. Verfahren nach Anspruch 4, bei dem vor dem Abspeichern der Adresse des aufrufenden Programms (24) überprüft wird, ob der vorgegebene Wert in der Speicheradresse der Tabelle enthalten ist, wobei im positiven Fall die Adresse des aufrufenden Programms (24) in die Speicheradresse der Tabelle eingeschrieben wird und im negativen Fall auf eine fehlerhafte Programmausführung geschlossen wird.Method according to Claim 4, in which before the address of the calling program ( 24 ) is checked whether the predetermined value in the memory address of the table is included, in the positive case, the address of the calling program ( 24 ) is written into the memory address of the table and in the negative case, an erroneous program execution is concluded. Verfahren nach einem der vorherigen Ansprüche, bei dem die Tabelle für jedes aufrufende Unterprogramm eine Rücksprungadresse zu dem aufrufenden Programm (24) umfasst.Method according to one of the preceding claims, in which the table for each calling subprogram contains a return address to the calling program ( 24 ). Verfahren nach Anspruch 6, bei dem überprüft wird, ob die Rücksprungadresse in dem Speicher (30), insbesondere einem Stapelspeicher, gespeichert ist.Method according to Claim 6, in which it is checked whether the return address in the memory ( 30 ), in particular a stack, is stored. Verfahren nach Anspruch 6 oder 7, bei dem vor dem Rücksprung in das aufrufende Programm (24) überprüft wird, ob die Rücksprungadresse in dem Speicher (30) mit der im Programmablauf des Unterprogramms (26) aufgerufenen Rücksprungadresse übereinstimmt.Method according to Claim 6 or 7, in which, prior to the return to the calling program ( 24 ) checks whether the return address in the memory ( 30 ) with the program sequence of the subprogram ( 26 ) recalls return address. Verfahren nach Anspruch 6, bei dem bei einem Aufruf eines Unterprogramms durch das aufrufende Programm (24) die Adresse des auf rufenden Programms (24) beim Aufruf dem Unterprogramm (26) übergeben und in dem Speicher abgespeichert wird.Method according to Claim 6, in which, when the subprogram is called by the calling program ( 24 ) the address of the calling program ( 24 ) when calling the subprogram ( 26 ) and stored in the memory. Verfahren nach Anspruch 9, bei dem ein Vergleich zwischen der übergebenen und abgespeicherten (Einsprung-)Adresse und dem Programmzähler (28) vorgenommen wird, wobei das Unterprogramm (26) fortgesetzt wird, wenn bei dem Vergleich eine Übereinstimmung der Adressen festgestellt wurde und wobei das Unterprogramm (26) nicht fortgesetzt wird, wenn bei dem Vergleich die Übereinstimmung der Adressen nicht festgestellt werden konnte.Method according to Claim 9, in which a comparison between the transferred and stored (entry) address and the program counter ( 28 ), the subroutine ( 26 ) is continued if a match of the addresses has been determined in the comparison and wherein the subroutine ( 26 ) is not continued if in the comparison the match of the addresses could not be determined. Verfahren nach Anspruch 9 oder 10, bei dem bei einem Rücksprung von dem Unterprogramm (26) zu dem aufrufenden Programm (24) überprüft wird, ob der Aufruf der Unterfunktion korrekt erfolgte.Method according to Claim 9 or 10, in which a return from the subprogram ( 26 ) to the calling program ( 24 ) checks whether the call of the subfunction was done correctly. Prozessor (12), der dazu eingerichtet ist, ein Verfahren nach einem der Ansprüche 1 bis 11 auszuführen.Processor ( 12 ) arranged to carry out a method according to any one of claims 1 to 11. Tragbarer Datenträger (10), insbesondere Chipkarte oder Chipmodul, der einen Prozessor nach Anspruch 12 aufweist.Portable data carrier ( 10 ), in particular chip card or chip module having a processor according to claim 12.
DE102009005764A 2009-01-23 2009-01-23 Method for monitoring execution of program in e.g. chip card, involves determining whether addressed programs or addresses are assigned to subprogram or destination address, and executing subprogram when assignment is correct Ceased DE102009005764A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102009005764A DE102009005764A1 (en) 2009-01-23 2009-01-23 Method for monitoring execution of program in e.g. chip card, involves determining whether addressed programs or addresses are assigned to subprogram or destination address, and executing subprogram when assignment is correct

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102009005764A DE102009005764A1 (en) 2009-01-23 2009-01-23 Method for monitoring execution of program in e.g. chip card, involves determining whether addressed programs or addresses are assigned to subprogram or destination address, and executing subprogram when assignment is correct

Publications (1)

Publication Number Publication Date
DE102009005764A1 true DE102009005764A1 (en) 2010-07-29

Family

ID=42282518

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009005764A Ceased DE102009005764A1 (en) 2009-01-23 2009-01-23 Method for monitoring execution of program in e.g. chip card, involves determining whether addressed programs or addresses are assigned to subprogram or destination address, and executing subprogram when assignment is correct

Country Status (1)

Country Link
DE (1) DE102009005764A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998032072A1 (en) 1997-01-15 1998-07-23 Siemens Aktiengesellschaft Method for monitoring the execution of software programmes as prescribed
DE10252347A1 (en) 2002-11-11 2004-05-19 Giesecke & Devrient Gmbh Subroutine execution monitoring method, stores subroutine return address in program stack then compares with address given by subroutine return command to determine if error has occurred
EP1507185A1 (en) 2003-08-11 2005-02-16 Axalto S.A. Method and device for protecting against unauthorized access to a secure routine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998032072A1 (en) 1997-01-15 1998-07-23 Siemens Aktiengesellschaft Method for monitoring the execution of software programmes as prescribed
DE10252347A1 (en) 2002-11-11 2004-05-19 Giesecke & Devrient Gmbh Subroutine execution monitoring method, stores subroutine return address in program stack then compares with address given by subroutine return command to determine if error has occurred
EP1507185A1 (en) 2003-08-11 2005-02-16 Axalto S.A. Method and device for protecting against unauthorized access to a secure routine

Similar Documents

Publication Publication Date Title
EP2188755B1 (en) Method and apparatus for protection of a program against monitoring flow manipulation and against incorrect program running
DE102010037457B4 (en) A method of data processing for providing a value for determining whether an error has occurred during execution of a program, methods of data processing for determining whether an error has occurred during execution of a program, method for generating program code, data processing arrangements for providing a program Value for determining whether an error has occurred during execution of a program, data processing arrangements for determining whether an error has occurred during execution of a program, and data processing arrangements for generating program code
WO2010020465A1 (en) Control appliance for a vehicle, and method for updating data for a control appliance for a vehicle
WO1998032072A1 (en) Method for monitoring the execution of software programmes as prescribed
DE102012212343A1 (en) Distributed compilation process with command signature support
DE102009024605A1 (en) Apparatus and method for bypassing a first program code portion with a replacement program code portion
DE10159901A1 (en) Microcomputer with built-in programmable, non-volatile memory
EP1037140B1 (en) Method and apparatus providing security during modification of memory contents in control devices
DE102012218363A1 (en) Method for controlling a separate flow of linked program blocks and control device
DE102006029138A9 (en) Method and computer program product for the detection of memory leaks
DE10340411B4 (en) Device and method for the safe execution of a program
DE102009005764A1 (en) Method for monitoring execution of program in e.g. chip card, involves determining whether addressed programs or addresses are assigned to subprogram or destination address, and executing subprogram when assignment is correct
DE102004046288A1 (en) Method for processing a computer program on a computer system
DE102012010102A1 (en) Method and device for data processing
DE10064025A1 (en) Microprocessor user software booting method, involves blanking specified areas of memory blocks until valid reset vector localizer is found and then executing reset vector and application in valid boot memory area
DE10252347A1 (en) Subroutine execution monitoring method, stores subroutine return address in program stack then compares with address given by subroutine return command to determine if error has occurred
EP1892639B1 (en) Secure program code execution
DE10229817B4 (en) Method and device for storing a computer program in a program memory of a control device
DE102007041873A1 (en) Patch installing method for e.g. object oriented programming language card in mobile phone, involves forming class hierarchy using classes in program package, and including patch in class hierarchy as subclass of one of classes
DE102004006308B4 (en) Method for modifying program code of a portable data carrier by means of patch data
DE10110050A1 (en) Method for protecting safety-critical program parts or routines from inadvertent execution, especially for automotive use, in which a safety critical routine will only run if a bit pattern has been set by a calling program section
EP1577734A2 (en) Procédé pour le fonctionnement sûr d'un support de données portable
DE102007059798B3 (en) Executable program code i.e. executable file, coding method for computer, involves combining chains of sequential instructions to code fragments, and coding and storing detected code fragments belonging to methods in program library
DE102017102147A1 (en) Subsequent patchable memory (OTP) with bit memory cells and method of patching same
DE102022133764A1 (en) FIRMWARE UPGRADE PROCEDURE OF A FLASH BOOTLOADER IN A MCU FOR A VEHICLE

Legal Events

Date Code Title Description
OR8 Request for search as to paragraph 43 lit. 1 sentence 1 patent law
8105 Search report available
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, DE

Free format text: FORMER OWNER: GIESECKE & DEVRIENT GMBH, 81677 MUENCHEN, DE

R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final