DE102012024250B4 - Process for providing chips with a high level of copy protection, in particular for digital authentication systems such as chip cards or the like, and chips produced therefrom - Google Patents
Process for providing chips with a high level of copy protection, in particular for digital authentication systems such as chip cards or the like, and chips produced therefrom Download PDFInfo
- Publication number
- DE102012024250B4 DE102012024250B4 DE102012024250.6A DE102012024250A DE102012024250B4 DE 102012024250 B4 DE102012024250 B4 DE 102012024250B4 DE 102012024250 A DE102012024250 A DE 102012024250A DE 102012024250 B4 DE102012024250 B4 DE 102012024250B4
- Authority
- DE
- Germany
- Prior art keywords
- chip
- program modules
- chips
- operating system
- linker
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000015654 memory Effects 0.000 claims abstract description 46
- 230000006870 function Effects 0.000 claims abstract description 12
- 238000013461 design Methods 0.000 claims abstract description 8
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012407 engineering method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
Verfahren zur Bereitstellung von Chips (6) mit hoher Kopierschutzfunktion, insbesondere für digitale Authentifizierungselemente wie Chipkarten (4) oder dergleichen, bei demfür die Chips (6) ein Sicherheits-Betriebssystem (OS) vorgesehen ist, das aus einzelnen Programmmodulen (M) aufgebaut ist,dadurch gekennzeichnet,dass die einzelnen Programmmodule (M) des Sicherheits-Betriebssystems (OS) mit Hilfe eines Linkers (14) für verschiedene Chips (6) unterschiedlich miteinander kombiniert werden, so dass für einen jeweiligen Chip (6) ein chipindividuelles Betriebssystem (C-OS) erzeugt und in einen Speicher (10) des Chips (6) eingelesen wird, wobei die chipindividuellen Betriebssysteme (C-OS) die gleiche Funktionalität jedoch einen unterschiedlichen strukturellen Aufbau aufweisen,dass der Linker (14) im Chip (6) integriert ist,dass die Anzahl der Programmmodule (M) >50 ist,dass der Linker (14) die Programmmodule (M) nach dem Zufallsprinzip zusammensetzt unddass die Programmmodule (M) eine einheitliche Modulgröße aufweisen und / oder nachträglich auf eine einheitliche Modulgröße gebracht werden, wobei parallel auf mehrere Chips (6) die Programmmodule (M) übertragen werden und auf diesen mehreren Chips (6) jeweils das chipindividuelle Betriebssystem (C-OS) erzeugt wird.Method for providing chips (6) with a high copy protection function, in particular for digital authentication elements such as chip cards (4) or the like, in which a security operating system (OS) is provided for the chips (6), which is composed of individual program modules (M). , characterized in that the individual program modules (M) of the security operating system (OS) are combined with one another differently with the aid of a linker (14) for different chips (6), so that for a respective chip (6) a chip-specific operating system (C -OS) is generated and read into a memory (10) of the chip (6), the chip-specific operating systems (C-OS) having the same functionality but a different structural design that the linker (14) is integrated in the chip (6). is that the number of program modules (M) is >50, that the linker (14) randomly assembles the program modules (M) and that the program modules (M) have a uniform module size and/or are subsequently brought to a uniform module size, the program modules (M) being transferred in parallel to a plurality of chips (6) and the chip-specific operating system (C-OS) being generated on each of these chips (6).
Description
Die Erfindung betrifft ein Verfahren zur Bereitstellung von Chips mit hoher Kopierschutzfunktion für embedded Systeme, insbesondere beispielsweise für digitale Authentifizierungssysteme wie Chipkarten oder dergleichen sowie für andere Mikroprozessor-gesteuerte Systeme. Die Erfindung betrifft weiterhin nach diesem Verfahren hergestellte Chips.The invention relates to a method for providing chips with a high copy protection function for embedded systems, in particular, for example, for digital authentication systems such as chip cards or the like, and for other microprocessor-controlled systems. The invention further relates to chips manufactured by this method.
Digitale Authentifizierungselemente wie Chipkarten werden in vielen Bereichen eingesetzt, um den Zugriff auf geschützte Daten oder Systeme zu ermöglichen, die nur einem bestimmten Nutzerkreis zugänglich sind. Unter Nutzer sind hierbei sowohl natürliche Personen als auch automatisierte Systeme für Maschinen- Maschinen-Kommunikation zu verstehen. Unter Authentifizierungselemente werden insbesondere auch Elemente zur Erstellung von elektronischen Signaturen verstanden.Digital authentication elements such as chip cards are used in many areas to enable access to protected data or systems that are only accessible to a specific group of users. Users are understood to mean both natural persons and automated systems for machine-to-machine communication. Authentication elements are also understood to mean, in particular, elements for creating electronic signatures.
Unter Chip wird hier allgemein ein integrierter Schaltkreis mit zumindest einem Speicher und einem Mikroprozessor verstanden. Ein derartiger Chip braucht nicht notwendigerweise in einer Karte als Träger integriert zu sein. Es bieten sich als Trägermedien beispielsweise auch Speichersticks (USB-Sticks) sowie andere Medien an. Nachfolgend wird der Einfachheit halber von Chipkarten gesprochen.A chip is generally understood here to mean an integrated circuit with at least one memory and one microprocessor. Such a chip need not necessarily be integrated into a card as a carrier. For example, memory sticks (USB sticks) and other media are also available as carrier media. Chip cards are referred to below for the sake of simplicity.
Derartige Chipkarten werden beispielsweise als Zahlungsmittel (Geldkarten) als Sim-Karten für Mobiltelefone, als elektronische Tickets, als Signaturkarten oder auch als Decoderkarten zum Beispiel bei Bezahlangeboten (Bezahlfernsehen) oder anderen Zugangssystemen eingesetzt. Insbesondere werden derartige Chips auch bei Identifizierungskarten oder Ausweiskarten, wie z.B. bei Pässen, beim Personalausweis, beim Führerschein, bei Gesundheitskarten etc. eingesetzt.Such chip cards are used, for example, as a means of payment (money cards) as SIM cards for mobile phones, as electronic tickets, as signature cards or as decoder cards, for example for pay-for offers (pay-TV) or other access systems. In particular, chips of this type are also used in identification cards or identity cards, such as passports, ID cards, driver's licenses, health cards, etc.
Bei diesen auch als Smart Cards bezeichneten Chipkarten spielt die Datensicherheit eine große Rolle. Üblicherweise sind auf der Karte selbst benutzereigene Authentifizierungs- und Zugangsdaten als sensible Daten hinterlegt, wie beispielsweise benutzerbezogene Schlüssel, über die unter anderem auch elektronische Signaturen erzeugt werden können. Zudem können auch sensible personenbezogene Daten (z.B. biometrisches Daten) hinterlegt sein.With these chip cards, also known as smart cards, data security plays a major role. User-specific authentication and access data are usually stored on the card itself as sensitive data, such as user-related keys, which can also be used to generate electronic signatures, among other things. Sensitive personal data (e.g. biometric data) can also be stored.
Um diese sensiblen Daten auf der Karte zu sichern, werden diese mit Hilfe des Mikroprozessors über ein auf dem Chip hinterlegtes kryptographisches Verfahren vor fremdem Zugriff geschützt. Ziel eines jeden Angriffs ist das Ermitteln und der Zugriff auf die sensiblen Daten.In order to secure this sensitive data on the card, it is protected from unauthorized access by the microprocessor using a cryptographic process stored on the chip. The aim of every attack is to determine and access sensitive data.
Es besteht ein hohes Bedürfnis, einen derartigen nicht autorisierten Zugriff auf die sensiblen Daten zu verhindern. Denn bei Kenntnis dieser Daten wird ein Missbrauch derartiger Systeme ermöglicht und es können durch unbefugte Dritte derartige Chipkarten, beispielsweise für das Bezahlfernsehen, mit den entsprechenden Zugriffsmöglichkeiten auf die geschützten Inhalte erstellt werden.There is a great need to prevent such unauthorized access to sensitive data. Knowing this data enables such systems to be misused and such chip cards, for example for pay-TV, with the corresponding access options to the protected content, can be created by unauthorized third parties.
In der
Bei heutigen Chipkarten ist das Kryptographieverfahren im Sicherheits-Betriebssystems in einem ROM-Speicherbaustein des Chips hinterlegt. Der Verschlüsselungs-Algorithmus ist daher durch die Verschaltung der einzelnen Elektronik-Bauteile im ROM-Speicher in diesem nach Art einer Firmware „fest eingebrannt“. Anhand des Schaltungsmusters des ROM-Speichers lässt sich daher grundsätzlich auf den Aufbau des Verschlüsselungsalgorithmus sowie des gesamten Betriebssystemaufbaus rückschließen. Im Betriebssystem sind darüber hinaus weitere schützenswerte Informationen, wie beispielsweise ein Datenprotokoll (IP) insbesondere zur Speicherverwaltung.With today's smart cards, the cryptography process is stored in the security operating system in a ROM memory module on the chip. The encryption algorithm is therefore “hard-wired” into the ROM memory in the manner of firmware by interconnecting the individual electronic components. Based on the circuit pattern of the ROM memory, it is therefore possible to draw conclusions about the structure of the encryption algorithm and the entire structure of the operating system. The operating system also contains other information that is worth protecting, such as a data protocol (IP), in particular for memory management.
Das Betriebssystem stellt eine gewisse Sicherheitslücke dar, da durch Re-Engineering-Verfahren die Gefahr der Analyse dessen Aufbaus besteht. Dadurch können z.B. Informationen über den genauen zeitlichen Ablauf von im Betriebssystem hinterlegten Programmteilen erhalten werden, so dass gezielte Angriffe bzw. Beeinflussungen des Ablaufs vorgenommen werden können. So kann beispielsweise ein spezieller Befehl im Ablaufprogramm gezielt beeinflusst werden, beispielsweise ein sicherheitsrelevanter Sprung nach einem (EEPROM-) Schreibvorgang.The operating system represents a certain security gap, since re-engineering processes pose the risk of its structure being analyzed. In this way, for example, information about the exact timing of program parts stored in the operating system can be obtained, so that targeted attacks or influencing of the process can be carried out. For example, a special command in the sequence program can be influenced in a targeted manner, for example a safety-relevant jump after an (EEPROM) write process.
Die genaue Kenntnis des Aufbaus des Betriebssystems, insbesondere die Kenntnis, welche Gegenmaßnahmen gegen Belauschen oder Manipulation der Datenverarbeitung umgesetzt und wie diese umgesetzt wurden, erleichtert es daher einem Angreifer, Schwachstellen des Betriebssystems als auch der zu Grunde liegenden Hardware, in die beispielsweise eine Verschlüsselungsfunktionen integriert ist, zu erkennen und auszunutzen, um auf die geschützten sensiblen Daten zugreifen zu können.Exact knowledge of the structure of the operating system, in particular the knowledge of which countermeasures were implemented against eavesdropping or manipulation of the data processing and how these were implemented, makes it easier for an attacker to identify weak points in the operating system and the underlying hardware, in which, for example, an encryption function is integrated is to be detected and exploited in order to access the protected sensitive data.
Bei diesem Re-Engineering wird üblicherweise derart vorgegangen, dass der ROM-Speicherbaustein sukzessive geschliffen wird und Schicht für Schicht im Hinblick auf das Schaltungsmuster analysiert wird. Aufgrund der geringen Dimension derartiger ROM-Bausteine und der hohen mechanischen Belastung bei diesem Re-Engineering werden dafür in der Regel eine Vielzahl von einzelnen ROM-Speicherbausteinen benötigt.In this re-engineering, the procedure is usually such that the ROM memory chip is ground successively and the circuit pattern is analyzed layer by layer. Due to the small dimensions of such ROM modules and the high mechanical As a rule, a large number of individual ROM memory components are required for this re-engineering.
Neben den Authentifizierungssystemen ist eine Kopierschutzfunktionen von Chips generell von besonderer Bedeutung bei jeglichen sensiblen Anwendungen oder auch grundsätzlich, um einen Nachbau (Reengineering) des Chips zu verhindern, um beispielsweise den Nachbau von Originalbauteilen mit integrierten Chips zu vermeiden. Das ist von Vorteil bei intelligenten Maschinen oder Fahrzeugen, bei denen Funktionen durch integrierte Chips übernommen werden.In addition to the authentication systems, a copy protection function of chips is generally of particular importance for any sensitive applications or also in principle to prevent the chip from being copied (reengineered), for example to avoid the copying of original components with integrated chips. This is an advantage for intelligent machines or vehicles in which functions are taken over by integrated chips.
Ausgehend hiervon liegt der Erfindung die Aufgabe zugrunde, die Sicherheit für derartige Chips zu erhöhen, insbesondere durch Schutz des Betriebssystems gegen ein Re-Engineering.Proceeding from this, the object of the invention is to increase the security for chips of this type, in particular by protecting the operating system against re-engineering.
Die Aufgabe wird gelöst durch ein Verfahren zur Bereitstellung von Chips für derartige digitale Authentifizierungselemente wie Chipkarten oder dergleichen, bei dem für mehrere, vorzugsweise für alle Chips eines gemeinsamen Authentifizierungssystems ein gemeinsames Sicherheits-Betriebssystem vorgesehen ist, welches aus einzelnen Programmmodulen aufgebaut ist. Die einzelnen Programmmodule werden hierbei mit Hilfe eines Linkers für verschiedene Chips unterschiedlich miteinander kombiniert, so dass für einen jeweiligen Chip ein chipindividuelles, ausführbares Betriebssystem erzeugt und in einen vorzugsweise beschreibbaren Speicher dieses Chips eingelesen wird. Die verschiedenen chipindividuellen Betriebssysteme weisen dabei die gleiche Funktionalität untereinander auf, sind daher im Hinblick auf ihre Funktion identisch. Allerdings weisen sie aufgrund der unterschiedlichen Kombination der einzelnen Programmmodule einen unterschiedlichen Aufbau auf. Für die Gesamtzahl aller Chips eines gemeinsamen Authentifizierungssystems werden daher eine Vielzahl von unterschiedlich strukturierten Betriebssystemen bereitgestellt.The object is achieved by a method for providing chips for such digital authentication elements as chip cards or the like, in which a common security operating system is provided for several, preferably for all chips of a common authentication system, which is made up of individual program modules. The individual program modules are combined with one another in different ways using a linker for different chips, so that a chip-specific, executable operating system is generated for a respective chip and read into a preferably writable memory of this chip. The various chip-specific operating systems have the same functionality among themselves and are therefore identical in terms of their function. However, due to the different combination of the individual program modules, they have a different structure. A large number of differently structured operating systems are therefore provided for the total number of all chips in a common authentication system.
Diese Ausgestaltung geht zunächst von der Überlegung aus, dass bei neueren Systemen die nicht beschreibbaren ROM-Speicher durch beschreibbare Speichern, insbesondere Flash-Speichern ersetzt werden. Bei dem beschreibbaren Speicher handelt es sich daher auch vorzugsweise um einen solchen Flash-Speicher oder einen anderen, zumindest einmal beschreibbaren Speicher, beispielsweise ein PROM (Programmable Read-Only Memory), EPROM (Erasable Programmable Read-Only Memory) oder ein EEPROM (Electrically Erasable Programmable Read-Only Memory).This refinement is initially based on the consideration that in newer systems the non-writable ROM memories are replaced by writable memories, in particular flash memories. The writable memory is therefore preferably such a flash memory or another memory that can be written at least once, for example a PROM (programmable read-only memory), EPROM (erasable programmable read-only memory) or an EEPROM (electrically erasable programmable read-only memory).
Alternativ zur Verwendung von beschreibbaren Speichern werden auch ROM-Speicher eingesetzt. Ein ROM-Speicher wird allgemein mit Hilfe von sogenannten Masken strukturiert, so dass die gewünschten Daten abgespeichert werden. Bei der Verwendung von ROM-Speichern werden zur Strukturierung der mehreren ROM-Speicher vorzugsweise eine Vielzahl von unterschiedlichen Masken eingesetzt, die hinsichtlich der Funktion des durch sie erzeugten Betriebssystems identisch, jedoch hinsichtlich des strukturellen Aufbaus des erzeugten Betriebssystems unterschiedlich sind, so dass im Ergebnis wieder für zumindest eine Vielzahl der Chips chipindividuelle Betriebssysteme ausgebildet sind. Es wird daher eine Anzahl der verwendeten unterschiedlichen Masken entsprechende Anzahl von unterschiedlich strukturierten „chipindividuellen“ Betriebssystemen bereitgestellt. Die Anzahl der unterschiedlichen Masken kann grundsätzlich der Anzahl der Chips entsprechen.As an alternative to using writable memories, ROM memories are also used. A ROM memory is generally structured with the help of so-called masks, so that the desired data can be stored. When using ROM memories, a large number of different masks are preferably used to structure the multiple ROM memories, which are identical in terms of the function of the operating system generated by them, but different in terms of the structural design of the operating system generated, so that as a result again chip-specific operating systems are designed for at least a large number of the chips. A number of differently structured “chip-specific” operating systems corresponding to the number of different masks used are therefore provided. In principle, the number of different masks can correspond to the number of chips.
Vorzugsweise wird auf jedem Chip ein unterschiedliches chipindividuelles Betriebssystem ausgebildet. Grundsätzlich ist dies jedoch nicht zwingend erforderlich. Die Anzahl der unterschiedlich strukturierten Betriebssysteme (also der Anzahl der unterschiedlichen Masken im Falle von ROM) liegt dabei zumindest im zweistelligen Bereich).A different chip-specific operating system is preferably formed on each chip. In principle, however, this is not absolutely necessary. The number of differently structured operating systems (i.e. the number of different masks in the case of ROM) is at least in the two-digit range.
Weiterhin baut die Erfindung auf der Überlegung auf, dass das Betriebssystem sich aus einer Vielzahl von einzelnen Programmteilen, den sogenannten Programmmodulen zusammensetzt, wobei jedes einzelne Programmmodul üblicherweise eine in sich abgeschlossene Teilfunktion des Betriebssystems festlegt. Schließlich wird hierbei auch berücksichtigt, dass es für eine identische gemeinsame Gesamtfunktionalität, also für ein für alle Chipkarten funktional identisches Betriebssystem, die Zusammensetzung der einzelnen Programmmodule variieren kann. Entsprechend ist vorgesehen, dass die einzelnen Programmmodule über den sogenannten Linker verschieden zusammengesetzt werden. Dadurch ist ein Re-Engineering deutlich erschwert, da für ein jeweiliges Re-Engineering-Verfahren üblicherweise eine Vielzahl von einzelnen Speicherbausteinen erforderlich ist. Das Re-Engineering setzt jedoch voraus, dass alle Speicherbausteine im Hinblick auf ihren strukturellen Aufbau, welcher definiert ist durch den eingebrannten Algorithmus, identisch sind, d.h. der im Speicher hinterlegte Algorithmus (Programmcode) muss für ein sinnvolles Re-Engineering bei einer Vielzahl von einzelnen Chips nicht nur im Hinblick auf seine Funktion sondern auch im Hinblick auf seinen strukturellen Aufbau identisch sein.Furthermore, the invention is based on the consideration that the operating system is made up of a large number of individual program parts, the so-called program modules, with each individual program module usually defining a self-contained subfunction of the operating system. Finally, it is also taken into account here that the composition of the individual program modules can vary for an identical common overall functionality, ie for an operating system that is functionally identical for all chip cards. Accordingly, it is provided that the individual program modules are put together differently via the so-called linker. This makes re-engineering significantly more difficult, since a large number of individual memory modules is usually required for a respective re-engineering method. However, re-engineering requires that all memory modules are identical in terms of their structural design, which is defined by the burned-in algorithm, i.e. the algorithm stored in the memory (program code) must be used for a meaningful re-engineering with a large number of individual Chips must be identical not only in terms of their function but also in terms of their structural design.
Durch das hier vorgestellte Verfahren wird gerade dies verhindert, so dass das Re-Engineering erschwert wenn nicht unmöglich gemacht wird.This is precisely what is prevented by the method presented here, so that re-engineering is made more difficult, if not impossible.
Dies beruht insbesondere auch darauf, dass durch die Bereitstellung von chipindividuellen Betriebssystemen im beschreibbaren Speicher chipindividuelle, voneinander verschiedene (Hardware-) Strukturen erzeugt werden. Unter „unterschiedlicher struktureller Aufbau“ wird daher verstanden, dass im Speicher verschiedene Hardware-Strukturen erzeugt werden, dass also beim Beschreiben des nicht-flüchtigen Flash-Speichers der Programmcode quasi „eingebrannt“ ist, so dass chipindividuelle, voneinander verschiedene Hardware-Strukturen bei gleichzeitig identischer Funktion erzeugt sind.This is based in particular on the fact that through the provision of chip-specific Operating systems in writable memory chip-specific, different (hardware) structures are generated. "Different structural design" means that different hardware structures are generated in the memory, i.e. that the program code is "burned in" when writing to the non-volatile flash memory, so that chip-specific, different hardware structures can be used at the same time identical function are generated.
Selbst falls ein Re-Engineering eines chipindividuellen Betriebssystems gelingt, hat ein Angreifer noch keinen Zugriff auf das chipindividuelle Betriebssystem eines anderen Chips. Denn der Code dieses weiteren chipindividuellen Betriebssystems kann eben nicht vorhergesagt werden.Even if re-engineering of a chip-specific operating system is successful, an attacker still has no access to the chip-specific operating system of another chip. Because the code of this additional chip-specific operating system cannot be predicted.
Ein weiterer Vorteil ist darin zu sehen, dass auch das zeitliche (Ablauf-) Verhalten des chipindividuellen Betriebssystem von Chip zu Chip verschieden ist. Denn wenn der gesamte Programmcode (also die Summe der einzelnen Programmmodule) unterschiedlich zusammengesetzt ist, werden beispielsweise Zwischenspeicher (Cache) unterschiedlich eingesetzt, was zu zeitlich anderen Abläufen führen kann. Das Cache-Verhalten und damit das zeitliche Verhalten des chipindividuellen Betriebssystems ändert sich daher von Chip zu Chip und kann nicht vorhergesagt werden.A further advantage can be seen in the fact that the temporal (sequence) behavior of the chip-specific operating system also differs from chip to chip. Because if the entire program code (i.e. the sum of the individual program modules) is composed differently, temporary storage (cache), for example, is used differently, which can lead to different processes in terms of time. The cache behavior and thus the temporal behavior of the chip-specific operating system therefore changes from chip to chip and cannot be predicted.
Üblicherweise werden die einzelnen Programmmodule zunächst von einem Programmierer in einer geeigneten Programmiersprache erzeugt und anschließend mittels eines sogenannten Compilers aus dieser Programm- oder Quellsprache in den Maschinencode oder die Zielsprache übersetzt. Diese compilierten Programmmodule stehen anschließend also dem Linker zur Verfügung.The individual program modules are usually first generated by a programmer in a suitable programming language and then translated from this program or source language into machine code or the target language by means of a so-called compiler. These compiled program modules are then available to the linker.
Unter Linker wird allgemein ein Computerprogramm verstanden, welches derartige einzelne Programmmodule zu einem ausführbaren Programm zusammenstellt. Bei den einzelnen Programmmodulen handelt es sich wie bereits erwähnt um abgeschlossene Funktionseinheiten, auch als sogenannte Objektdateien bezeichnet. Ergänzend können auch sogenannte Bibliotheken vorgesehen sein. Diese werden über den Linker zu einer statischen, ausführbaren Programm-Datei zusammengestellt. Es handelt sich hier also um ein statisches Linken zur Erstellung eines ausführbaren Programms. Die einzelnen Programmodule werden hierbei derart miteinander verknüpft, dass die Funktion und der Programmablauf zuverlässig gewährleistet ist.A linker is generally understood to mean a computer program which compiles such individual program modules into an executable program. As already mentioned, the individual program modules are self-contained functional units, also referred to as so-called object files. In addition, so-called libraries can also be provided. These are compiled into a static, executable program file via the linker. So this is static linking to create an executable program. The individual program modules are linked to one another in such a way that the function and the program sequence are reliably guaranteed.
Zweckdienlicherweise erfolgt das Verlinken der einzelnen Programmmodule auf dem Chip. Der Linker ist also als „on board Linker“ auf dem Chip integriert. Dies erhöht die Sicherheit zusätzlich, da auf den Chip kein fertiges Programm sondern lediglich einzelne Programmmodule überspielt werden. Ein Abhören der Datenübertragung von einem Rechner, auf dem die Compilierung vorgenommen wurde, zu einem entfernten Rechner, über den letztendlich das Einlesen in den Flash-Speicher vorgenommen wird, führt daher ebenfalls nicht zu einem erfolgreichen Angriff, um die Sicherheits-Betriebssoftware in Besitz zu bringen.The individual program modules are expediently linked on the chip. The linker is therefore integrated on the chip as an "on board linker". This also increases security, since no finished program but only individual program modules are transferred to the chip. Eavesdropping on the data transfer from a computer on which the compilation was carried out to a remote computer, which is ultimately used to read the data into the flash memory, also does not result in a successful attack in order to gain possession of the security operating software bring.
Vorzugsweise ist der on board-Linker auch zum nachträglichen Ändern, beispielsweise Erweitern oder teilweises Ersetzen der Sicherheits-Betriebssoftware ausgebildet, beispielsweise im Rahmen von updates.The on-board linker is preferably also designed for subsequent changes, for example expansion or partial replacement of the security operating software, for example as part of updates.
Weiterhin werden zur Erhöhung der Sicherheit in bevorzugter Weiterbildung die auf dem Compiler-Rechner erzeugten Programmmodule verschlüsselt. Anschließend werden diese in bevorzugter Ausgestaltung als verschlüsselter Datensatz zum Linker übertragen, bei dem der Datensatz entschlüsselt und anschließend die Programmmodule zum ausführbaren Betriebssystem zusammengesetzt werden.Furthermore, to increase security, the program modules generated on the compiler computer are encrypted in a preferred development. In a preferred embodiment, these are then transmitted as an encrypted data set to the linker, in which the data set is decrypted and then the program modules are assembled to form the executable operating system.
In zweckdienlicher Weiterbildung ist ein weiterer, erster Linker, im Folgenden als Compilerlinker bezeichnet, vorgesehen, welcher die Programmmodule zu einem ersten Betriebssystem verlinkt. Dieses erste Betriebssystem - welches beispielsweise ein Mastertemplate-Betriebssystem ist - wird anschließend durch den eigentlichen Linker ggf. unter Berücksichtigung von weiteren Zusatzinformationen, wie beispielsweise der Beziehungen der einzelnen Programmmodule im ersten Betriebssystem zueinander, zu dem eigentlichen, in den Speicher des Chips einzulesenden Betriebssystems verändert. Der Compilerlinker ist - im Unterschied zu dem on-Board Linker - vorzugsweise auf dem Compiler-Rechner, zumindest nicht auf dem Chip integriert. Das vom Compilerlinker erzeugte Betriebssystem, also die miteinander verlinkten Programmmodule, wird bevorzugt als der verschlüsselte Datensatz auf den Chip übertragen.In an expedient development, a further, first linker, referred to below as a compiler linker, is provided, which links the program modules to a first operating system. This first operating system - which is, for example, a master template operating system - is then changed to the actual operating system to be read into the memory of the chip by the actual linker, possibly taking into account further additional information, such as the relationships between the individual program modules in the first operating system . In contrast to the on-board linker, the compiler linker is preferably integrated on the compiler computer, at least not on the chip. The operating system generated by the compiler linker, ie the program modules linked to one another, is preferably transferred to the chip as the encrypted data record.
Beim Zusammensetzen der einzelnen Programmmodule wird seitens des Linkers vorzugsweise das Zufallsprinzip angewandt, d.h. der Linker enthält einen Zufallsgenerator, welcher bestimmt, welche Programmmodule in welcher Reihenfolge wie aneinander gereiht werden. Dies erfolgt unter der Prämisse, dass die gewünschte Gesamt-Funktionalität und Funktionsfähigkeit erhalten wird, so dass auf allen Chips funktional die identische Sicherheits-Betriebssoftware enthalten ist.When assembling the individual program modules, the linker preferably uses the random principle, i.e. the linker contains a random number generator which determines which program modules are lined up in which order and how. This is done on the premise that the desired overall functionality and functionality is maintained, so that functionally identical security operating software is contained on all chips.
Zweckdienlicherweise liegt die Anzahl der einzelnen Programmmodule für das Sicherheits-Betriebssystem bei > 50 und insbesondere bei > 100. Üblicherweise ist eine höhere Anzahl sinnvoll, um die Größe der einzelnen Module geeignet zu begrenzen. In Kombination mit dem Zufallsprinzip ergeben sich daher eine sehr große Anzahl an verschiedenen Kombinationen, so dass ein Re-Engineering quasi unmöglich ist.The number of individual program modules for the security operating system is expediently >50 and in particular >100. Usually, a higher number makes sense in order to appropriately limit the size of the individual modules. In combination with the random principle, there is a very large number of different combinations, so that re-engineering is virtually impossible.
In zweckdienlicher Weiterbildung ist darüber hinaus auf dem Chip ein sogenannter Boot-Loader integriert, der für die Kommunikation nach außen zuständig ist und der insbesondere auch die Programmmodule vom Compiler-Rechner erhält. Der Linker erhält die Programmmodule vom Boot-Loader und verlinkt sie anschließend zum chipindividuellen Betriebssystem, welches anschließend vom Linker in den nicht-flüchtigen Speicher (insbesondere Flash-Speicher) eingelesen wird. In an expedient further development, a so-called boot loader is also integrated on the chip, which is responsible for external communication and which, in particular, also receives the program modules from the compiler computer. The linker receives the program modules from the boot loader and then links them to the chip-specific operating system, which is then read into the non-volatile memory (especially flash memory) by the linker.
Alternativ ist es grundsätzlich auch möglich, dass die Programmmodule zunächst direkt in den Flash-Speicher eingelesen und erst anschließend vom Linker zum chipindividuellen Betriebssystem zusammengesetzt werden.Alternatively, it is fundamentally also possible for the program modules to first be read directly into the flash memory and only then assembled by the linker to form the chip-specific operating system.
Sowohl beim Boot-Loader als auch beim Linker handelt es sich daher selbst wiederum um ausführbare Programme, denen gewisse Funktionalitäten zugewiesen sind. Der Boot-Loader und/oder der Linker sind vorzugsweise ebenfalls im Flash-Speicher enthalten. Alternativ können diese jedoch auch in einem ROM-Speicher abgelegt sein.Both the boot loader and the linker are therefore themselves executable programs that are assigned certain functionalities. The boot loader and/or the linker are preferably also contained in the flash memory. Alternatively, however, these can also be stored in a ROM memory.
Vorzugsweise wird das chipindividuelle Betriebssystem parallel auf mehreren Chips erzeugt. Hierzu ist insbesondere eine gemeinsame Kontaktierungs- und Datenübertragungseinheit vorgesehen, über die insbesondere ein Energie- und Kommunikationskanal bereitgestellt wird, so dass parallel und gleichzeitig die Übertragung der Programmmodule oder des Template -Betriebssystems auf die einzelnen Chips erfolgt. Auf den einzelnen Chips wird dann von dem jeweiligen Linker das chipindividuelle Betriebssystem erzeugt.The chip-specific operating system is preferably generated in parallel on a plurality of chips. For this purpose, in particular, a common contacting and data transmission unit is provided, via which in particular a power and communication channel is provided, so that the program modules or the template operating system are transmitted in parallel and simultaneously to the individual chips. The chip-specific operating system is then generated on the individual chips by the respective linker.
Mehrere einzelne Chips werden üblicherweise gemeinsam auf einem Wafer erzeugt. Zweckdienlicherweise sind die einzelnen Chips auf dem Wafer zur Ausbildung einer vereinfachten Kontaktierungs- und Übertragungseinheit miteinander verschaltet. Der Kommunikationskanal - oder Pfad ist daher bereits auf Seiten des Wafers ausgebildet. Bevorzugt in solchen Bereichen des Wafers, an denen bei der weiteren Bearbeitung die einzelnen Chips mechanisch voneinander getrennt werden. Die Übertragung der Programmmodule erfolgt daher vor dem Auseinandertrennen der Waferscheibe.Several individual chips are usually produced together on a wafer. The individual chips on the wafer are expediently interconnected to form a simplified contacting and transmission unit. The communication channel - or path - is therefore already formed on the wafer side. Preferably in those areas of the wafer where the individual chips are mechanically separated from one another during further processing. The program modules are therefore transferred before the wafer is separated.
Dieser Aspekt der parallelen Übertragung der Programmmodule, insbesondere auch mit der Integration des Kommunikationskanals in den Wafer, wird als eigenständige Erfindung angesehen. Die Einreichung einer Teilanmeldung auf diesen Aspekt - unabhängig von der Erzeugung des chipindividuellen Betriebssystems bleibt vorbehalten.This aspect of the parallel transmission of the program modules, in particular also with the integration of the communication channel in the wafer, is regarded as an independent invention. The filing of a divisional application on this aspect - regardless of the generation of the chip-specific operating system remains reserved.
In zweckdienlicher Weiterbildung weisen die Programmmodule (M) eine einheitliche Modulgröße auf, bzw. werden auf eine einheitliche Modulgröße gebracht, bevor sie über den Verlinker chipindividuell verlinkt werden. Hierdurch wird die Anzahl der möglichen Permutationen erhöht. Denn bei unterschiedlichen Modulgrö-ßen sind die Programmmodule üblicherweise nicht beliebig miteinander permutierbar, da z.B. Positionen durch ein Template in Abhängigkeit der Größe vorgegeben sind. Unter Modulgröße wird hierbei insbesondere der Speicherbedarf des jeweiligen Moduls, also die Byte-Größe verstanden.In an expedient development, the program modules (M) have a uniform module size or are brought to a uniform module size before they are linked individually via the linker. This increases the number of possible permutations. Because with different module sizes, the program modules usually cannot be interchanged arbitrarily, since, for example, positions are specified by a template depending on the size. In this context, module size is understood to mean, in particular, the memory requirement of the respective module, ie the byte size.
In der Regel weisen nämlich die einzelnen Programmmodule aufgrund ihres üblicherweise unterschiedlichen Funktionsumfangs unterschiedliche Modulgrößen auf. Um die Modulgröße zu vereinheitlichen werden insbesondere kleine Module vergrößert, indem beispielsweise Leerinformationen hinzugefügt werden. Große Module können geteilt und wenn erforderlich anschließend wieder auf die gewünschte einheitliche Modulgröße vergrößert werden.As a rule, the individual program modules have different module sizes because of their usually different range of functions. In order to standardize the module size, small modules in particular are enlarged, for example by adding empty information. Large modules can be divided and then, if necessary, enlarged again to the desired uniform module size.
Ein Ausführungsbeispiel der Erfindung wird nachfolgend anhand der Figuren näher erläutert. Die einzige Figur zeigt in einer vereinfachten Darstellung anhand eines Blockbildes den grundsätzlichen Verfahrensablauf.An embodiment of the invention is explained in more detail below with reference to the figures. The only figure shows the basic process sequence in a simplified representation using a block diagram.
Zunächst werden von einem ersten Dienstleister D1 die einzelnen Programmmodule M einer Betriebssoftware OS programmiert und anschließend einem Compiler-Rechner 2 zugeführt, in dem die einzelnen Programmmodule M zu den Programmmodulen M' in einen maschinenlesbaren Code compiliert werden. Diese compilierten Programmmodule M' werden gemäß einer ersten in der Figur dargestellten Variante anschließend verschlüsselt und in einer Datendatei F (M') als verschlüsselter Datensatz bereitgestellt.First, the individual program modules M of an operating software OS are programmed by a first service provider D1 and then fed to a
Dieser verschlüsselte Datensatz F (M') wird einem zweiten Dienstleister D2, üblicherweise ein mit der Herstellung der einzelnen Chipkarten beauftragter Dienstleister übermittelt. Dieser stellt eine Chipkarte 4 mit einem integrierten Chip 6 zur Verfügung, welcher einen Mikroprozessor 8 sowie einen nicht flüchtigen, beschreibbaren Speicher 10 (Flash-Speicher) aufweist. Der Speicher 10 weist bei der hier beschriebenen Ausführungsvariante einen Boot Loader 12 sowie einen Linker 14 auf, die als ausführbare Programme ausgebildet sind und beispielsweise bereits vorinstalliert sind. Das Programm des Boot Loaders 12 und/oder des Linkers 14 wird vorzugsweise ebenfalls in einer separaten, verschlüsselten Datei (einmalig) vom Software-Dienstleister D1 übermittelt. Alternativ hierzu ist der Linker 14 als ein erster Schritt in der verschlüsselten Datei F(M') enthalten.This encrypted data set F(M') is transmitted to a second service provider D2, usually a service provider commissioned with the production of the individual chip cards. This provides a
Die verschlüsselte Datei F (M') wird von einem Lade-Rechner 16 des Dienstleisters D2 empfangen. Dieser ist mit einem hier nicht näher dargestellten Kartengerät verbunden, um die Daten in den Speicher 10 zu übertragen. Die Kommunikation wird hierbei vorzugsweise über den Boot Loader 12 vorgenommen, der also vom Laderechner 16 die verschlüsselte Datei F (M') erhält, die verschlüsselten Programmmodule M' wieder entschlüsselt und dem Linker 14 zur Verfügung stellt. Mit Hilfe eines Zufallsgenerators setzt der Linker 14 dann die einzelnen Programmmodule M zu einem chipindividuellen Betriebssystem C-OS zusammen und legt dies in einem entsprechenden Speicherbereich des Speichers 10 ab. Alle Tätigkeiten des Boot Loaders 12 und des Linkers 14 werden hierbei über den Mikroprozessor 8 gesteuert.The encrypted file F(M') is received by a loading
Gemäß einer bevorzugten hier nicht näher dargestellten Altemative ist neben dem eigentlichen Linker 14 ein erster Linker, als Compilerlinker bezeichnet, vorgesehen, der vor dem Übertragen der Programmmodule M' auf den Chip 6 diese zu einem ersten Betriebssystem OS verlinkt. Die derart miteinander verlinkten Programmmodule M' werden vorzugsweise verschlüsselt als der verschlüsselte Datensatz F(M') übertragen. Die Entschlüsselung erfolgt wiederum beispielsweise durch den Laderechner 16, bevor anschließend der Linker 14 das chipindividuelle Betriebssystem C-OS erzeugt.According to a preferred alternative not shown here, in addition to the
Der Compilerlinker erstellt also in diesem Fall aus den Programmmodulen, also aus den Objektdateien und den Programmbibliotheken das Betriebssystem OS als eine Art Template, aus dem dann das eigentliche chipindividuelle Betriebssystem C-OS erzeugt wird. Das Template enthält dabei neben den einzelnen Programmmodulen auch die Beziehungen / Referenzen zwischen den Modulen. Der Linker 14 weist bei der Erzeugung des chipindividuellen Betriebssystems C-OS unter Verwendung der bekannten Beziehungen den einzelnen Programmmodule konkrete Adressen, also Verlinkungen zwischen den Programmmodulen, zu.In this case, the compiler linker creates the operating system OS as a kind of template from the program modules, ie from the object files and the program libraries, from which the actual chip-specific operating system C-OS is then generated. In addition to the individual program modules, the template also contains the relationships/references between the modules. When generating the chip-specific operating system C-OS, the
Die Vorgang der Erzeugung des chipindividuellen Betriebssystems C-OS wird für jede einzelne Chipkarte eines Chipkarten-Systems mit einer Vielzahl (mehrere tausend) von Chipkarten eines System-Anbieters wiederholt, d.h. die verschlüsselte Datei F (M') braucht nur einmal zum Chipkartenhersteller D2 übertragen werden. Der Laderechner 16 übermittelt diese geschützte Datei F (M') an jeden einzelnen Speicher 10 der Chipkarten 4. Alle Chipkarten des Chipkarten-Systems weisen die im Hinblick auf die Funktionalität identische Betriebssoftware OS auf, die sich jedoch durch die chipindividuelle Ausgestaltung im Hinblick auf ihren strukturellen Aufbau, also der Abfolge der Programmmodule M unterscheiden.The process of generating the chip-specific operating system C-OS is repeated for each individual chip card in a chip card system with a large number (several thousand) of chip cards from a system provider, i.e. the encrypted file F (M') only needs to be sent once to the chip card manufacturer D2 become. The charging
Durch den Zufallsgenerator ist dadurch sichergestellt, dass so gut wie keine Chipkarte ein identisches chipindividuelles Betriebssystem C-OS aufweist. Ein Re-Engineering ist dadurch quasi ausgeschlossen.The random number generator ensures that virtually no chip card has an identical chip-specific operating system C-OS. This means that re-engineering is virtually impossible.
Bezugszeichenlistereference list
- 22
- Compiler-Rechnercompiler calculator
- 44
- Chipkartechip card
- 66
- Chipchip
- 88th
- Mikroprozessormicroprocessor
- 1010
- Flash-SpeicherFlash memory
- 1212
- Boot Loaderbootloader
- 1414
- Linkerleftist
- 1616
- Laderechnercharging calculator
- MM
- Programmmoduleprogram modules
- M'M'
- compalierte Programmmodulecompiled program modules
- F (M')F (M')
- verschlüsselte Dateiencrypted file
- OSOS
- Betriebssystemoperating system
- C-OSC OS
- chipindividuelles Betriebssystemchip-specific operating system
- D1D1
- Dienstleister 1 (Softwareentwickler)Service provider 1 (software developer)
- D2D2
- Dienstleister 2 (Chipkartenhersteller)Service provider 2 (chip card manufacturer)
Claims (8)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102012024250.6A DE102012024250B4 (en) | 2012-08-02 | 2012-12-12 | Process for providing chips with a high level of copy protection, in particular for digital authentication systems such as chip cards or the like, and chips produced therefrom |
PCT/EP2013/002251 WO2014019679A1 (en) | 2012-08-02 | 2013-07-30 | Method for providing chips with high re-engineering protection, particularly for digital authentication systems, such as smart cards or the like, and chips produced using said method |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102012213745 | 2012-08-02 | ||
DE102012213745.9 | 2012-08-02 | ||
DE102012024250.6A DE102012024250B4 (en) | 2012-08-02 | 2012-12-12 | Process for providing chips with a high level of copy protection, in particular for digital authentication systems such as chip cards or the like, and chips produced therefrom |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102012024250A1 DE102012024250A1 (en) | 2014-02-06 |
DE102012024250B4 true DE102012024250B4 (en) | 2023-04-13 |
Family
ID=49943859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102012024250.6A Active DE102012024250B4 (en) | 2012-08-02 | 2012-12-12 | Process for providing chips with a high level of copy protection, in particular for digital authentication systems such as chip cards or the like, and chips produced therefrom |
Country Status (2)
Country | Link |
---|---|
DE (1) | DE102012024250B4 (en) |
WO (1) | WO2014019679A1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0929040A2 (en) | 1997-12-25 | 1999-07-14 | Nippon Telegraph and Telephone Corporation | Microprocessor with data randomizing |
DE102004058882A1 (en) | 2004-12-06 | 2006-06-08 | Giesecke & Devrient Gmbh | Generating program code in a load format and providing executable program code |
EP2249291A1 (en) | 2009-05-07 | 2010-11-10 | Masktech GmbH | Method for increasing the security of existing contactless chip card technology |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10108487A1 (en) * | 2001-02-22 | 2002-09-12 | Giesecke & Devrient Gmbh | Method and system for the distributed creation of a program for a programmable, portable data carrier |
CA2792304C (en) * | 2010-03-31 | 2018-07-31 | Irdeto Canada Corporation | Method for linking and loading to protect applications |
-
2012
- 2012-12-12 DE DE102012024250.6A patent/DE102012024250B4/en active Active
-
2013
- 2013-07-30 WO PCT/EP2013/002251 patent/WO2014019679A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0929040A2 (en) | 1997-12-25 | 1999-07-14 | Nippon Telegraph and Telephone Corporation | Microprocessor with data randomizing |
DE102004058882A1 (en) | 2004-12-06 | 2006-06-08 | Giesecke & Devrient Gmbh | Generating program code in a load format and providing executable program code |
EP2249291A1 (en) | 2009-05-07 | 2010-11-10 | Masktech GmbH | Method for increasing the security of existing contactless chip card technology |
Also Published As
Publication number | Publication date |
---|---|
WO2014019679A1 (en) | 2014-02-06 |
DE102012024250A1 (en) | 2014-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102007003580A1 (en) | Install a patch in a smart card module | |
DE102009013384A1 (en) | System and method for providing a secure application fragmentation environment | |
DE10238095B4 (en) | Method for protection against manipulation of a control unit for at least one motor vehicle component and control unit | |
DE102014220616A1 (en) | Method for loading executable program instructions into a chip card in active operation | |
DE102012012509B4 (en) | Method and device for replacing the operating system of a resource-limited portable data carrier | |
DE10023820B4 (en) | Software protection mechanism | |
EP3754529B1 (en) | Method for reloading software on a smart card by means of a post-loader | |
EP2434424B1 (en) | Method for increasing the security of security-relevant online services | |
DE10218795B4 (en) | Method for producing an electronic security module | |
DE102012024250B4 (en) | Process for providing chips with a high level of copy protection, in particular for digital authentication systems such as chip cards or the like, and chips produced therefrom | |
DE19939280A1 (en) | Secure personalization of chip cards | |
DE10340411A1 (en) | Device and method for the safe execution of a program | |
DE102005046696B4 (en) | A method for generating protected program code and method for executing program code of a protected computer program and computer program product | |
DE19716015A1 (en) | Introducing information on a chip card | |
DE102020206039A1 (en) | Create a container instance | |
DE60216106T2 (en) | PROTECTED READING OF COMPUTER COMMANDS IN A DATA PROCESSING SYSTEM | |
WO2020104198A1 (en) | Method for processing application programs in a distributed automation system | |
DE102005056357A1 (en) | Application`s implementation paths implementing method for e.g. chip card, involves implementing two of paths by one of virtual machines, and assigning different operational resource contingents to virtual machines | |
DE102020002055A1 (en) | Data processing device for provisioning a hardware processor system | |
DE102015207004A1 (en) | Method for protected access to security functions of a security module of a host system | |
EP4141722A1 (en) | Safe operation of an industrial controller together with an ai module | |
EP1987466B1 (en) | Method for securing authority over activation of applications within a security module | |
DE102014112304A1 (en) | Method for installing an additional application in a non-volatile memory of a chip card | |
WO2019166398A1 (en) | Computer program, particularly for a control unit of a motor vehicle | |
AT524619A1 (en) | Computer-implemented method for authorized execution of software, data processing system, computer program product and computer-readable storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |