WO2018162107A1 - Verfahren zur rechnergestützten obfuskation von programmcode - Google Patents

Verfahren zur rechnergestützten obfuskation von programmcode Download PDF

Info

Publication number
WO2018162107A1
WO2018162107A1 PCT/EP2017/082508 EP2017082508W WO2018162107A1 WO 2018162107 A1 WO2018162107 A1 WO 2018162107A1 EP 2017082508 W EP2017082508 W EP 2017082508W WO 2018162107 A1 WO2018162107 A1 WO 2018162107A1
Authority
WO
WIPO (PCT)
Prior art keywords
program code
value
mask
steps
sti
Prior art date
Application number
PCT/EP2017/082508
Other languages
English (en)
French (fr)
Inventor
Johannes Zwanzger
Original Assignee
Siemens Aktiengesellschaft
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 Siemens Aktiengesellschaft filed Critical Siemens Aktiengesellschaft
Priority to JP2019548941A priority Critical patent/JP6919973B2/ja
Priority to CN201780088267.2A priority patent/CN110383275B/zh
Priority to US16/492,439 priority patent/US11341216B2/en
Priority to EP17835809.9A priority patent/EP3577588B1/de
Priority to KR1020197029606A priority patent/KR102336521B1/ko
Publication of WO2018162107A1 publication Critical patent/WO2018162107A1/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1066Hiding content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Definitions

  • the invention relates to a method for the computer-aided obfuscation of program code and to a method for executing such an obfuscated program code. Moreover, the invention comprises a technical system, a computer program product and a computer program.
  • a common approach consists in encrypting the information with a suitable encryption function, or grab the program code by means of a code packer to ver ⁇ . It is disadvantageous that decrypts the runtime of the Pro ⁇ program codes the information again, or the code will be unpacked so that the sensitive information available in the program execution completed in plain text in the program memory, and thus the risk that an attacker this information with appropriate techniques read from the memory.
  • Object of the invention is to provide a computer-protected procedural ⁇ ren, are very well protected with the sensitive information in a program code against unauthorized access by third parties to the duration of the program code.
  • the inventive method is used for computer-assisted obfuscation (ie obfuscation) of program code.
  • a plurality of computing steps are implemented, wherein predetermined computing steps of the plurality of computing steps in execution of the program code in a predetermined order be called.
  • the term of the calculation step as well as of the updating step mentioned below is to be understood broadly.
  • a calculation step does not necessarily have to contain only a single arithmetic operation, but can be composed of a multiplicity of arithmetic operations, if necessary with conditions, loops, nestings and the like.
  • a sequence of operations may be encapsulated.
  • the predetermined calculation steps of the program code to be concealed contain predetermined calculation steps.
  • the throat ⁇ voted computational steps may include, for example, only the specified differently surrounded calculation steps, however, further processing steps can be seen ⁇ addition to superiors passed computation steps if necessary.
  • the predetermined calculation steps are distinguished by the fact that in each of these steps a first table stored in the program code is accessed from a plurality of digital first table values in order to read out a first table value from the first table required for the respective given calculation step. For all of the predetermined calculation steps, which are not predetermined Re ⁇ chenuzee (if present) is indeed still set a predetermined sequence of calls, but these computing steps not access to the first table.
  • a table represents a set of digital values to which ge ⁇ aims can be gripped to-by the program code with the corresponding commands.
  • the term of the table value is also to be understood broadly.
  • a Tabel may be composed of several partial ⁇ lenwert values, which are processed at different points in accordance with the called calculation step.
  • a dynamic mask comprising generating a plurality of digi tal ⁇ mask values, wherein the mask values/2017in- at least a part of the mask and preferably all mask values of the mask differ from one another and a respective mask value is valid for a respective predetermined calculation step.
  • each first table value of the first table is converted into a digital second table value by means of the mask value, which is valid during the reading of the respective first table value in the respective predetermined calculation step, whereby a second table is obtained from second table values which instead of the first table is stored in the program code.
  • Mask value which is valid when reading the respective first table value in the respective given calculation step, is hereinafter referred to as well as the currently valid mask value .
  • the obfussistede program code provides the same results as the non-obfus undertakene program code, an additional processing step in the program code within the framework ⁇ men of obfuscation further for any given calculation step imple- mented, which first a read second table value upon execution of the predetermined processing step in those Recalculated table value, which is required for the ⁇ each predetermined calculation step.
  • the inventive method has the advantage that very good veiled by a dynamic mask sensitive information that are stored in tables ⁇ the. The operations of unmasking or de-obfuscation are distributed over a large number of computing steps in the entire program code. Thus, a reconstruction of the obfuscated information during the term of the
  • an initial mask value and updating steps are set to produce the dynamic mask, by applying egg ⁇ nes or more successive updating steps be ⁇ counted against a currently valid mask value valid for the next predetermined calculation step mask value.
  • the initial mask value and the Aktualisie ⁇ connection steps are implemented in the program code, so that there is in each predetermined calculation step, the currently valid mask value, wherein the additional rake ⁇ step in the respective predetermined calculation step, depending on the currently valid mask value.
  • the update steps for at least one part of the mask values, and in particular for al ⁇ le mask values to which they are applied, bottom are differently set in a preferred variant of the embodiment just described.
  • an updating step is provided in each of the predefined Re ⁇ chenuzee, preferably further also in at least part of the predetermined calculation steps (in particular ⁇ special in all predetermined computing steps), which are no predetermined calculation steps (if any), each one Updating step is provided.
  • the initial mask value and the update steps are defined by means of a random number generator. In this way, a very arbitrary determination of these values or steps is achieved and thus the obfuscation of the program code is further improved.
  • the first table values and the second table values as well as the mask values each represent a bit sequence.
  • the conversion of a respective first table value into a second table value takes place by applying logical operations between the bit sequence of the first table value and Bit sequence of the currently valid mask value. The appli ⁇ logical operations thereby yields the second Ta bell worth.
  • the above operations are bitwise logical applied to each corresponding bit of the bit sequences of the gene jeweili ⁇ first table value and the currently valid mask value, wherein the logical operations preferably one or more OR and / or XOR and / or NOR and / or XNOR and / or AND and / or NAND operations.
  • the bit sequence of the currently valid mask value is longer than the bit sequence of the first table value, not all bits of the currently valid mask value are therefore used to modify the first table value.
  • the original bit sequence of the currently valid mask value is extended by multiple use of the bits of the original bit sequence, so that for each bit of the
  • Bit sequence of the respective first table value a corresponding bit of the bit sequence of the currently valid mask value exists.
  • the lengthening of the bit sequence preferably takes place in such a way that the original bit sequence is repeated one or more times. In this way, a good wear is ⁇ tion of the corresponding (first) table value is also ER- sufficient if the bit length of the mask value is shorter than diejeni ⁇ ge of the corresponding table value.
  • the invention also relates to a method for executing the program
  • obfuscated program codes In this case is read out when calling a per ⁇ pier predetermined calculation step of (obfus inhabiten) program code of the second table value from the second table and executed for each predetermined calculation step, the additional processing step which back converts the out ⁇ read in the second table value in those first table value for the respective predetermined calculation step is needed.
  • the invention further relates to a technical system comprising a computer means adapted to execute the obfuscated program code according to the method just described.
  • the term of the technical system is to be understood broadly, and this may also be a single technical device.
  • the technical system can be, for example, an automation system or a component of an automation system or an electrical power generation and / or energy distribution system or a component of a power generation and / or energy distribution system or a medical device.
  • the invention relates to a computer program product with program code sections stored on a machine-readable carrier for carrying out the inventive method for computer-aided obfuscation of program code or for carrying out the method according to the invention for executing the obfuscated program code or Carrying out preferred variants of these methods when the program code sections are executed on a computer.
  • the invention relates to a computer program with program code sections for carrying out the method according to the invention for the computer-aided obfuscation of program code or for carrying out the method according to the invention for executing the obfuscated program code or preferred variants of these methods when the program code sections are executed on a computer.
  • the program code segments correspond to the obfus emergeen Pro ⁇ program code.
  • FIG. 1 shows a flow diagram of an embodiment of the inventive method for obfuscation of program code.
  • the starting point of the method is a program code ⁇ CO, is to disguise the scope of the invention.
  • the index i determines the predetermined order in which the calculation steps STi are executed successively.
  • the re ⁇ chen Coloure STi correspond to predetermined Rechenschrit- Within the meaning of claim 1.
  • the program code of the first table Tl CO is accessed only in the thus Rechenschrit ⁇ th STi on a particular entry Tli.
  • the respective table entry represents a bit sequence which is processed in the corresponding calculation step.
  • the bit sequences of the individual table entries have the length 1 (i). These lengths can be different for different table entries.
  • the program code CO generates at runtime from a known input by using the calculation steps ST a specific output. Basically, the computation steps ST can be run through in any order, but the special computation steps STi are always run through each other exactly in the same order and independent of the input.
  • a respective calculation step STi always accesses only a single table entry Tli, the calculation step, however, any number of times allowed to access the discourseein ⁇ contract when executed.
  • the non-veiled table Tl with the corresponding Ta ⁇ bell entries Tli contains sensitive information and it is the goal as described below execution ⁇ form to obfusring the program code CO such that an un ⁇ authorized third parties the table entries, or only with very great effort from can reconstruct the program code.
  • the concealment is distributed over the entire program code, whereby the recalculation of the original table values is greatly impeded.
  • step Sl of Fig. 1 is used for the obfuscation Pro
  • a sequence corresponding to the execution of the computation steps S i is determined.
  • the individual mask values Mi represent each ⁇ wells a bit string having a predetermined length is, this length in the embodiment described here over the mask values Mi remains the same, but this need not be the case inevitably fig.
  • the individual mask values Mi are determined via a sequence of update steps, which are applied sequentially from an arbitrary initial mask value to the last updated mask value.
  • the concept of updating step is far To Hide ⁇ hen.
  • an updating step may include not only a single operation, but possibly also several Ope ⁇ nen.
  • the updating steps were determined arbitrarily and are therefore at least partially different from each other. Nevertheless, the individual update steps are fixed and the operations contained therein are executed in a fixed order.
  • a mask M with arbitrary mask assignments or mask values Mi is thus generated.
  • a random number generator is used for determining the initial value of the mask and for determining the updating steps .
  • the table entry Tli read out in the respective calculation step STi is then changed by means of a function f ⁇ , M, which depends on the mask value Mi, which is valid in the corresponding calculation step STi.
  • the fi FM function can be arbitrarily set thereby, decisive is single ⁇ Lich that the function of each mask value Mi depends and a mapping table entry Tli bijective to a new table entry ⁇ T2i a second table T2.
  • the function fiM in this embodiment is an image which maps the bit sequence of a table entry Tli to another bit sequence of the same length, this other bit sequence corresponding to the new table entry ⁇ 2 ⁇ .
  • each rake ⁇ step implements an additional step that converts the readout table entry T2i by means of the inverse function f -1 iM, which depends on the currently valid mask value Mi in the ur ⁇ sprün Mi.
  • the obfuscation of a program code described above can be used in various technical fields.
  • the programs can take on any tasks, eg they can be control and / or regulation algorithms or algorithms based on neural networks.
  • the protecting ⁇ cost data may be, for example cryptographic information or to information that is important for licensing exams.
  • the embodiment of the method according to the invention described above has a number of advantages.
  • an attacker can no longer extract any information from this table due to the masking of a table.
  • Unpacking operations do not take the steps of unmasking the table at a point in the program code, but unmasking is distributed throughout the program code. An attacker must therefore analyze the entire program code to get conclusions on the Original Art ⁇ chen values of the table. In contrast, can an attacker in the case of a one-time encryption of a table with knowledge about the decryption directly access the plain text of the table entries.
  • the inventive obfuscation ie in particular the current mask value may also at any time of the execution of the program code based on the Spei ⁇ cherSullivans, readily be concluded over the use in the current step ⁇ th table entry. Already with the next update of the mask value the inference on the earlier table entry is no longer possible.
  • the obfuscation method according to the invention can also be combined very well with other techniques of reverse engineering, such as anti-debugging measures or the use of self-modifying codes. In this way, it will add more weight for ei ⁇ nen attacker, the entire sequence of de- masking operations to extract the original table values to reconstruct.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur rechnergestützten Obfuskation von Programmcode (CO), wobei in dem Programmcode (CO) eine Vielzahl von Rechenschritten (ST) implementiert ist, wobei vorbestimmte Rechenschritte der Vielzahl von Re- chenschritten (ST) bei Ausführung des Programmcodes (CO) in einer vorbestimmten Reihenfolge aufgerufen werden und zumin- dest manche der vorbestimmten Rechenschritte vorgegebene Re- chenschritte (STi) sind, in denen jeweils auf eine im Pro- grammcode (CO) hinterlegte erste Tabelle (T1) aus einer Viel- zahl von digitalen ersten Tabellenwerten (T1i) zugegriffen wird, um einen für den jeweiligen vorgegebenen Rechenschritt (STi) benötigten ersten Tabellenwert (T1i) aus der ersten Tabelle (T1) auszulesen. Im Rahmen der Obfuskation des Pro- grammcodes wird eine dynamische Maske (M) aus einer Vielzahl von digitalen Maskenwerten (Mi) verwendet, wobei für einen jeweiligen vorgegebenen Rechenschritt ein anderer Maskenwert (Mi) dazu genutzt wird, den ersten Tabellenwert (T1i) der ersten Tabelle (T1) durch einen zweiten Tabellenwert (T2i) zu ersetzen. Darüber hinaus wird der zu obfuszierende Programm- code (CO) derart angepasst, dass zu dessen Laufzeit im jewei- ligen vorgegebenen Rechenschritt (STi) eine Rückrechnung des zweiten Tabellenwerts (T2i) auf den ursprünglichen ersten Ta- bellenwert (T1i) erfolgt. Das erfindungsgemäße Verfahren er- möglicht eine effiziente Obfuskation von tabellarisch hinter- legten schützenswerten Informationen in einem Programmcode. Die Demaskierung der tabellarischen Informationen wird dabei zur Laufzeit des Programmcodes über den gesamten Programmcode verteilt, wodurch die Rekonstruktion der Informationen für einen unbefugten Angreifer erschwert wird.

Description

Beschreibung
Verfahren zur rechnergestützten Obfuskation von Programmcode
Die Erfindung betrifft ein Verfahren zur rechnergestützten Obfuskation von Programmcode sowie ein Verfahren zur Ausführung eines solchen obfuszierten Programmcodes. Darüber hinaus umfasst die Erfindung ein technisches System, ein Computerprogrammprodukt und ein Computerprogramm.
Oftmals besteht das Bedürfnis, Informationen aus einem Pro¬ grammcode gegen unbefugten Zugriff durch Dritte zu schützen. Ein gängiger Ansatz besteht dabei darin, die Informationen mit einer geeigneten Verschlüsselungsfunktion zu verschlüsseln oder den Programmcode mittels eines Code-Packers zu ver¬ packen. Dabei ist es nachteilhaft, dass zur Laufzeit des Pro¬ grammcodes die Informationen wieder entschlüsselt bzw. der Code wieder entpackt wird, so dass die schützenswerten Informationen bei der Programmausführung komplett im Klartext im Programmspeicher vorliegen und somit die Gefahr besteht, dass ein Angreifer diese Informationen mit geeigneten Techniken aus dem Speicher ausliest.
Aufgabe der Erfindung ist es, ein rechnergeschütztes Verfah¬ ren zu schaffen, mit dem schützenswerte Informationen in einem Programmcode sehr gut gegen unbefugten Zugriff durch Dritte zur Laufzeit des Programmcodes geschützt werden.
Diese Aufgabe wird durch die unabhängigen Ansprüche gelöst. Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen definiert.
Das erfindungsgemäße Verfahren dient zur rechnergestützten Obfuskation (d.h. Verschleierung) von Programmcode. In dem zu verschleiernden bzw. obfuszierenden Programmcode ist eine Vielzahl von Rechenschritten implementiert, wobei vorbestimmte Rechenschritte der Vielzahl von Rechenschritten bei Ausführung des Programmcodes in einer vorbestimmten Reihenfolge aufgerufen werden. Der Begriff des Rechenschritts sowie auch des weiter unten genannten Aktualisierungsschritts ist dabei weit zu verstehen. Ein Rechenschritt muss nicht zwangsläufig nur eine einzelne Rechenoperation enthalten, sondern er kann sich aus einer Vielzahl von Rechenoperationen, ggf. mit Bedingungen, Schleifen, Schachtelungen und dergleichen, zusammensetzen. Durch einen Rechenschritt bzw. Aktualisierungs¬ schritt kann somit eine Abfolge von Operationen gekapselt sein .
Die vorbestimmten Rechenschritte des zu verschleiernden Programmcodes enthalten vorgegebene Rechenschritte. Die vorbe¬ stimmten Rechenschritte können zum Beispiel nur die vorgege¬ benen Rechenschritte umfassen, jedoch können neben den vorge- gebenen Rechenschritten ggf. auch weitere Rechenschritte vor¬ gesehen sein. Die vorgegebenen Rechenschritte zeichnen sich dadurch aus, dass in diesen Schritten jeweils auf eine im Programmcode hinterlegte erste Tabelle aus einer Vielzahl von digitalen ersten Tabellenwerten zugegriffen wird, um einen für den jeweiligen vorgegebenen Rechenschritt benötigten ersten Tabellenwert aus der ersten Tabelle auszulesen. Für alle vorbestimmten Rechenschritte, welche keine vorgegebenen Re¬ chenschritte sind (sofern vorhanden) , ist zwar weiterhin eine vorbestimmte Reihenfolge ihres Aufrufs festgelegt, jedoch greifen diese Rechenschritte nicht auf die erste Tabelle zu.
Der Begriff der Tabelle ist weit zu verstehen. Eine Tabelle stellt eine Menge von digitalen Werten dar, auf welche ge¬ zielt durch den Programmcode mit entsprechenden Befehlen zu- gegriffen werden kann. Ferner ist auch der Begriff des Tabellenwerts weit zu verstehen. Insbesondere kann sich ein Tabel¬ lenwert aus mehreren Teilwerten zusammensetzen, welche an unterschiedlichen Stellen im entsprechend aufgerufenen Rechenschritt verarbeitet werden.
Im Rahmen der erfindungsgemäßen Obfuskation des Programmcodes wird eine dynamische Maske umfassend eine Vielzahl von digi¬ talen Maskenwerten erzeugt, wobei sich die Maskenwerte zumin- dest eines Teils der Maske und vorzugsweise alle Maskenwerte der Maske gegenseitig unterscheiden und ein jeweiliger Maskenwert für einen jeweiligen vorgegebenen Rechenschritt gültig ist.
Im Rahmen des erfindungsgemäßen Verfahrens wird jeder erste Tabellenwert der ersten Tabelle mittels des Maskenwerts, der beim Einlesen des jeweiligen ersten Tabellenwerts im jeweiligen vorgegebenen Rechenschritt gültig ist, in einen digitalen zweiten Tabellenwert gewandelt, wodurch eine zweite Tabelle aus zweiten Tabellenwerten erhalten wird, die anstatt der ersten Tabelle in dem Programmcode hinterlegt wird. Mit ande¬ ren Worten wird bei der Ausführung des obfuszierten Programmcodes nicht mehr auf die ersten Tabellenwerte, sondern auf die entsprechenden zweiten Tabellenwerte zugegriffen. Der
Maskenwert, der beim Einlesen des jeweiligen ersten Tabellenwerts im jeweiligen vorgegebenen Rechenschritt gültig ist, wird im Folgenden als auch der aktuell gültige Maskenwert be¬ zeichnet .
Damit der obfuszierte Programmcode die gleichen Ergebnisse wie der nicht-obfuszierte Programmcode liefert, wird im Rah¬ men der Obfuskation ferner für jeden vorgegebenen Rechenschritt ein zusätzlicher Rechenschritt im Programmcode imple- mentiert, welcher einen ausgelesenen zweiten Tabellenwert bei Ausführung des entsprechenden vorgegebenen Rechenschritts in denjenigen ersten Tabellenwert rückrechnet, der für den je¬ weiligen vorgegebenen Rechenschritt benötigt wird. Das erfindungsgemäße Verfahren weist den Vorteil auf, dass mittels einer dynamischen Maske schützenswerte Informationen, die tabellarisch hinterlegt sind, sehr gut verschleiert wer¬ den. Die Operationen der Demaskierung bzw. Entschleierung werden dabei auf eine Vielzahl von Rechenschritten im gesam- ten Programmcode verteilt. Somit wird eine Rekonstruktion der verschleierten Informationen während der Laufzeit des
obfuszierten Programmcodes stark erschwert. In einer besonders bevorzugten Ausführungsform werden zur Erzeugung der dynamischen Maske ein initialer Maskenwert und Aktualisierungsschritte festgelegt, wobei durch Anwenden ei¬ nes oder mehrerer aufeinander folgender Aktualisierungs- schritte auf einen aktuell gültigen Maskenwert der für den nächsten vorgegebenen Rechenschritt gültige Maskenwert be¬ rechnet wird. Der initiale Maskenwert und die Aktualisie¬ rungsschritte werden auch im Programmcode implementiert, so dass im jeweiligen vorgegebenen Rechenschritt der aktuell gültige Maskenwert vorliegt, wobei der zusätzliche Rechen¬ schritt im jeweiligen vorgegebenen Rechenschritt von dem aktuell gültigen Maskenwert abhängt. Durch die Implementierung der Aktualisierungsschritte im Programmcode benötigt ein An¬ greifer zur Rekonstruktion eines ersten Tabellenwerts in ei- nem vorgegebenen Rechenschritt das Wissen über den initialen Maskenwert und die vorhergehenden Aktualisierungsschritte. Da dieses Wissen im Programmcode verteilt ist, wird ein beson¬ ders guter Schutz der Informationen im Programmcode erreicht. Um eine Rückrechnung der ursprünglichen ersten Tabellenwerte zu erschweren, sind in einer bevorzugten Variante der soeben beschriebenen Ausführungsform die Aktualisierungsschritte für zumindest einen Teil der Maskenwerte und insbesondere für al¬ le Maskenwerte, auf welche sie angewendet werden, unter- schiedlich festgelegt. In einer weiteren bevorzugten Variante ist ein Aktualisierungsschritt in jedem der vorgegebenen Re¬ chenschritte vorgesehen, wobei vorzugsweise ferner auch in zumindest einem Teil der vorbestimmten Rechenschritte (insbe¬ sondere in allen vorbestimmten Rechenschritten) , welche keine vorgegebenen Rechenschritte sind (sofern vorhanden), jeweils ein Aktualisierungsschritt vorgesehen ist.
In einer weiteren bevorzugten Variante werden der initiale Maskenwert und die Aktualisierungsschritte mittels eines Zu- fallszahlengenerators festgelegt. Auf diese Weise wird eine sehr willkürliche Festlegung dieser Werte bzw. Schritte erreicht und somit die Verschleierung des Programmcodes weiter verbessert . In einer weiteren bevorzugten Ausführungsform stellen die ersten Tabellenwerte und die zweiten Tabellenwerte sowie auch die Maskenwerte jeweils eine Bitfolge dar. Vorzugsweise er- folgt dabei das Wandeln eines jeweiligen ersten Tabellenwerts in einen zweiten Tabellenwert durch Anwenden von logischen Operationen zwischen der Bitfolge des ersten Tabellenwerts und der Bitfolge des aktuell gültigen Maskenwerts. Das Anwen¬ den der logischen Operationen liefert dabei den zweiten Ta- bellenwert.
Vorzugsweise werden die obigen logischen Operationen bitweise auf einander korrespondierende Bit der Bitfolgen des jeweili¬ gen ersten Tabellenwerts und des aktuell gültigen Maskenwerts angewendet, wobei die logischen Operationen vorzugsweise eine oder mehrere OR- und/oder XOR- und/oder NOR- und/oder XNOR- und/oder AND- und/oder NAND-Operationen umfassen. Im Falle, dass die Bitfolge des aktuell gültigen Maskenwerts länger als die Bitfolge des ersten Tabellenwerts ist, werden somit nicht alle Bits des aktuell gültigen Maskenwerts zur Modifikation des ersten Tabellenwerts herangezogen.
Im Falle, dass die Bitfolge des aktuell gültigen Maskenwerts kürzer als die Bitfolge des jeweiligen ersten Tabellenwerts ist, wird in einer bevorzugten Variante des erfindungsgemäßen Verfahrens die ursprüngliche Bitfolge des aktuell gültigen Maskenwerts durch mehrfache Verwendung der Bits der ursprünglichen Bitfolge verlängert, so dass für jedes Bit der
Bitfolge des jeweiligen ersten Tabellenwerts ein korrespon- dierendes Bit der Bitfolge des aktuell gültigen Maskenwerts existiert. Das Verlängern der Bitfolge erfolgt vorzugsweise derart, dass die ursprüngliche Bitfolge ein oder mehrfach wiederholt wird. Auf diese Weise wird eine gute Verschleie¬ rung des entsprechenden (ersten) Tabellenwerts auch dann er- reicht, wenn die Bitlänge des Maskenwerts kürzer als diejeni¬ ge des entsprechenden Tabellenwerts ist. Neben dem Verfahren zur Obfuskation von Programmcode betrifft die Erfindung auch ein Verfahren zur Ausführung des
obfuszierten Programmcodes. Dabei wird bei Aufruf eines je¬ weiligen vorgegebenen Rechenschritts des (obfuszierten) Programmcodes der zweite Tabellenwert aus der zweiten Tabelle ausgelesen und für den jeweiligen vorgegebenen Rechenschritt der zusätzliche Rechenschritt ausgeführt, welcher den ausge¬ lesenen zweiten Tabellenwert in denjenigen ersten Tabellenwert rückrechnet, der für den jeweiligen vorgegebenen Rechenschritt benötigt wird.
Im Falle, dass der obfuszierte Programmcode mit einer Ausfüh¬ rungsform erzeugt wurde, welche Aktualisierungsschritte zur Bestimmung des aktuell gültigen Maskenwerts verwendet, werden im Rahmen der Ausführung des obfuszierten Programmcodes auch die im obfuszierten Programmcode implementierten Aktualisierungsschritte ausgeführt.
Die Erfindung betrifft darüber hinaus ein technisches System, welches ein Rechnermittel umfasst, das zur Ausführung des obfuszierten Programmcodes gemäß dem soeben beschriebenen Verfahren eingerichtet ist. Der Begriff des technischen Systems ist dabei weit zu verstehen, und es kann sich hierbei auch um ein einzelnes technisches Gerät handeln. Der
obfuszierte Programmcode kann dabei in verschiedenen techni¬ schen Systemen hinterlegt sein. Das technische System kann z.B. eine Automatisierungsanlage oder eine Komponente einer Automatisierungsanlage oder ein elektrisches Energieerzeu- gungs- und/oder Energieverteilsystem oder eine Komponente eines Energieerzeugungs- und/oder Energieverteilsystems oder ein medizinisches Gerät sein.
Darüber hinaus betrifft die Erfindung ein Computerprogrammprodukt mit auf einem maschinenlesbaren Träger gespeicherten Programmcodeabschnitten zur Durchführung des erfindungsgemäßen Verfahrens zur rechnergestützten Obfuskation von Programmcode bzw. zur Durchführung des erfindungsgemäßen Verfahrens zur Ausführung des obfuszierten Programmcodes bzw. zur Durchführung bevorzugter Varianten dieser Verfahren, wenn die Programmcodeabschnitte auf einen Computer ausgeführt werden.
Darüber hinaus betrifft die Erfindung ein Computerprogramm, mit Programmcodeabschnitten zur Durchführung des erfindungsgemäßen Verfahrens zur rechnergestützten Obfuskation von Programmcode bzw. zur Durchführung des erfindungsgemäßen Verfahrens zur Ausführung des obfuszierten Programmcodes bzw. bevorzugter Varianten dieser Verfahren, wenn die Programmcodeabschnitte auf einem Computer ausgeführt werden.
Im Falle, dass das obige Computerprogrammprodukt bzw. Compu¬ terprogramm zur Ausführung eines Verfahrens zur Obfuskation von Programmcode dient, wird die Obfuskation mit den entspre¬ chenden Programmcodeabschnitten bewirkt. Die Programmcodeabschnitte stellen somit nicht den zu obfuszierenden Programmcode dar.
Im Falle, dass das Computerprogrammprodukt bzw. das Computer¬ programm zur Ausführung des obfuszierten Programmcodes dient, entsprechen die Programmcodeabschnitte dem obfuszierten Pro¬ grammcode .
Ein Ausführungsbeispiel der Erfindung wird nachfolgend anhand der beigefügten Fig. 1 detailliert beschrieben. Diese Figur zeigt ein Ablaufdiagramm einer Ausführungsform des erfin- dungsgemäßen Verfahrens zur Obfuskation von Programmcode.
Gemäß Fig. 1 ist Ausgangspunkt des Verfahrens ein Programm¬ code CO, der im Rahmen der Erfindung zu verschleiern ist. Dieser Programmcode erhält eine Vielzahl von Rechenschritten, welche in Fig. 1 mit ST bezeichnet sind. Ein Teil dieser Re¬ chenschritte STi (i = 1, n) greift dabei auf eine erste Tabelle Tl zu, wobei der jeweilige Rechenschritt den entspre¬ chenden Eintrag Tli aus der Tabelle ausliest. Über den Index i wird die vorbestimmte Reihenfolge festgelegt, in der die Rechenschritte STi nacheinander ausgeführt werden. Die Re¬ chenschritte STi entsprechen dabei vorgegebenen Rechenschrit- ten im Sinne von Anspruch 1. Zwischen den Rechenschritten STi können auch noch weitere Rechenschritte des Programmcodes CO ausgeführt werden, wobei diese weiteren Rechenschritte jedoch nicht auf die Tabelle Tl zugreifen.
Gemäß dem Programmcode CO wird somit nur in den Rechenschrit¬ ten STi auf einen bestimmten Eintrag Tli der ersten Tabelle Tl zugegriffen. Der jeweilige Tabelleneintrag stellt dabei eine Bitfolge dar, die in dem entsprechenden Rechenschritt verarbeitet wird. Die Bitfolgen der einzelnen Tabelleneinträ¬ ge haben dabei die Länge 1 (i) . Diese Längen können für unterschiedliche Tabelleneinträge verschieden groß sein.
Der Programmcode CO erzeugt zur Laufzeit aus einem bekannten Input durch Anwendung der Rechenschritte ST einen bestimmten Output. Grundsätzlich können die Rechenschritte ST dabei in beliebiger Reihenfolge durchlaufen werden, jedoch werden die speziellen Rechenschritte STi untereinander immer in der gleichen Reihenfolge und unabhängig vom Input stets genau einmal durchlaufen. Ein jeweiliger Rechenschritt STi greift immer nur auf einen einzelnen Tabelleneintrag Tli zu, wobei der Rechenschritt jedoch beliebig oft auf diesen Tabellenein¬ trag bei seiner Ausführung zugreifen darf. Die nicht verschleierte Tabelle Tl mit den entsprechenden Ta¬ belleneinträgen Tli enthält schützenswerte Informationen und es ist das Ziel der nachfolgend beschriebenen Ausführungs¬ form, den Programmcode CO derart zu obfuszieren, dass ein un¬ befugter Dritte die Tabelleneinträge nicht oder nur mit sehr großem Aufwand aus dem Programmcode rekonstruieren kann. Im Gegensatz zu einer einmaligen Anwendung einer Verschlüsselungsfunktion auf die gesamte Tabelle Tl erfolgt die Ver¬ schleierung über den gesamten Programmcode verteilt, wodurch die Rückrechnung der ursprünglichen Tabellenwerte stark er- schwert wird.
Gemäß Schritt Sl der Fig. 1 wird zur Obfuskation des Pro¬ grammcodes CO zunächst eine dynamische Maske M mit Maskenein- trägen Mi (i = 1, n) bestimmt. Es existiert somit für je¬ den vorgegebenen Rechenschritt STi ein entsprechender Maskenwert Mi. Dieser Maskenwert Mi ist nur für den Rechenschritt S i gültig. Durch die Indizierung der Maskenwerte wird eine der Ausführung der Rechenschritte S i entsprechende Reihen¬ folge festgelegt. Die einzelnen Maskenwerte Mi stellen je¬ weils eine Bitfolge mit einer bestimmten Länge dar, wobei diese Länge in der hier beschriebenen Ausführungsform über die Maskenwerte Mi gleich bleibt, was jedoch nicht zwangsläu- fig der Fall sein muss.
Die einzelnen Maskenwerte Mi werden über eine Folge von Aktualisierungsschritten bestimmt, welche aufeinander folgend ausgehend von einem willkürlichen initialen Maskenwert auf den zuletzt aktualisierten Maskenwert angewendet werden. Der Begriff des Aktualisierungsschritts ist dabei weit zu verste¬ hen. Im Besonderen kann ein Aktualisierungsschritt nicht nur eine einzelne Operation, sondern ggf. auch mehrere Operatio¬ nen enthalten. In der hier beschriebenen Ausführungsform wur- den die Aktualisierungsschritte willkürlich festgelegt und sind somit untereinander zumindest teilweise unterschiedlich. Nichtsdestotrotz sind die einzelnen Aktualisierungsschritte fest vorgegeben und die darin enthaltenen Operationen werden in einer festen Reihenfolge ausgeführt. Gemäß dem Schritt Sl wird somit eine Maske M mit willkürlichen Maskenbelegungen bzw. Maskenwerten Mi generiert. Vorzugsweise wird dabei ein Zufallszahlengenerator zur Festlegung des Initialwerts der Maske sowie zur Festlegung der Aktualisierungsschritte ver¬ wendet .
In einem Schritt S2 wird dann der im jeweiligen Rechenschritt STi ausgelesene Tabelleneintrag Tli mittels einer Funktion f±,M verändert, welche von dem Maskenwert Mi abhängt, der im entsprechenden Rechenschritt STi gültig ist. Die Funktion fifM kann dabei beliebig festgelegt sein, entscheidend ist ledig¬ lich, dass die Funktion von dem jeweiligen Maskenwert Mi abhängt und einen Tabelleneintrag Tli auf einen neuen Tabellen¬ eintrag T2i einer zweiten Tabelle T2 bijektiv abbildet. Wie aus Fig. 1 ersichtlich, ist die Funktion fifM in diesem Ausführungsbeispiel eine Abbildung, welche die Bitfolge eines Tabelleneintrags Tli auf eine andere Bitfolge mit gleicher Länge abbildet, wobei diese andere Bitfolge dem neuen Tabel- leneintrag Ί2± entspricht.
Nachdem für alle Rechenschritte STi modifizierte Tabellenein¬ träge T2i erzeugt wurden, werden die ursprünglichen Tabelleneinträge Tli durch diese neuen Tabelleneinträge Ί2± ersetzt, so dass für einen Angreifer die ursprünglichen Tabelleneinträge nicht ohne weiteres aus dem Programmcode CO ausgelesen werden können. Aufgrund der Modifikation der Tabelleneinträge muss der Programmcode CO auch noch dahingehend geändert wer¬ den, dass im entsprechenden Rechenschritt STi der ausgelesene Tabelleneintrag Ί2± in den ursprünglichen Tabelleneintrag Tli umgerechnet wird. Dies wird gemäß Fig. 1 im Schritt S3 er¬ reicht. In diesem Schritt wird der initiale Maskenwert am An¬ fang des Programmcodes hinterlegt und die obigen Aktualisie¬ rungsschritte werden auch im Programmcode implementiert, wo- bei in der hier beschriebenen Ausführungsform bei Aufruf eines jeweiligen Rechenschritts STi ein entsprechender Aktualisierungsschritt zur Bestimmung des aktuell gültigen Maskenwerts durchgeführt wird. Darüber hinaus wird in jedem Rechen¬ schritt ein Zusatzschritt implementiert, der den ausgelesenen Tabelleneintrag T2i mittels der inversen Funktion fiiM -1, die von dem aktuell gültigen Maskenwert Mi abhängt, in den ur¬ sprünglichen Tabelleneintrag Tli umrechnet.
Als Ergebnis der Schritte Sl bis S3 erhält man somit einen obfuszierten Programmcode CO', in dem die ursprüngliche Ta¬ belle Tl verschleiert ist. Durch einen Rückrechnungsschritt auf die ursprünglichen Tabellenwerte wird jedoch das gleiche Rechenergebnis wie mit dem nicht-obfuszierten Programmcode CO erreicht. Der obfuszierte Programmcode CO' kann anschließend in einem beliebigen technischen Gerät hinterlegt werden und zur Ausführung gebracht werden. Dies ist in Fig. 1 durch den Pfeil P angedeutet. Dabei wird der obfuszierte Programmcode CO' auf dem technischen Gerät 1 gespeichert, welches über ein Rechnermittel 2 verfügt, mit dem der obfuszierte Programmcode CO' zur Ausführung gebracht wird.
Die im Vorangegangenen beschriebene Obfuskation eines Pro- grammcodes kann in verschiedenen technischen Gebieten eingesetzt werden. Im Besonderen kann dabei Programmcode in SCADA- Systemen, PLCs (PLC = Programmable Logic Controller) , Motion- Control-Systemen, Automatisierungssoftware, Computertomogra¬ phiegeräten, SmartGrids usw. verändert werden. Es können da- bei beliebige Algorithmen obfusziert werden, z.B. Programme auf PCs (PC = Personal Computer) oder Firmware auf Geräten. Die Programme können beliebige Aufgaben übernehmen, z.B. kann es sich um Steuerungs- und/oder Regelungsalgorithmen oder um Algorithmen basierend auf neuronalen Netzen handeln.
Allgemein wird mit der erfindungsgemäßen Obfuskation erreicht, dass tabellarisch gespeicherte und schützenswerte Da¬ ten in einer Software verschleiert werden. Bei den schützens¬ werten Daten kann es sich z.B. um kryptographische Informati- onen oder um Informationen handeln, die von Bedeutung für Lizenzprüfungen sind.
Die im Vorangegangenen beschriebene Ausführungsform des erfindungsgemäßen Verfahrens weist eine Reihe von Vorteilen auf. Insbesondere kann ein Angreifer aufgrund der Maskierung einer Tabelle keinerlei Information mehr aus dieser Tabelle extrahieren. Um die maskierte Form der Tabelle sinnvoll in¬ terpretieren zu können, ist vielmehr die zusätzliche Kenntnis über den Initialisierungswert der Maske und der gesamten Fol- ge der Aktualisierungsschritte für die Maske notwendig.
Im Gegensatz zu einmaligen Entschlüsselungs- bzw.
Entpackungsoperationen finden die Schritte der Demaskierung der Tabelle nicht an einer punktuellen Stelle im Programmcode statt, sondern die Demaskierung ist über den gesamten Programmcode verteilt. Ein Angreifer muss somit den gesamten Programmcode analysieren, um Rückschlüsse auf die ursprüngli¬ chen Werte der Tabelle zu bekommen. Im Gegensatz hierzu kann ein Angreifer im Falle einer einmaligen Verschlüsselung einer Tabelle bei Kenntnis über die Entschlüsselung unmittelbar auf den Klartext der Tabelleneinträge zugreifen. Bei der erfindungsgemäßen Obfuskation kann ferner zu keinem Zeitpunkt der Ausführung des Programmcodes anhand des Spei¬ cherzustands, d.h. insbesondere des aktuellen Maskenwerts, ohne weiteres auf mehr als den im aktuellen Schritt verwende¬ ten Tabelleneintrag geschlossen werden. Bereits bei der nächsten Aktualisierung des Maskenwerts ist der Rückschluss auf den früheren Tabelleneintrag nicht mehr möglich.
Das erfindungsgemäße Obfuskationsverfahren kann ferner sehr gut mit weiteren Techniken des Reverse Engineering, wie z.B. Anti-Debug-Maßnahmen oder die Verwendung selbstmodifizierender Codes, kombiniert werden. Auf diese Weise wird es für ei¬ nen Angreifer nochmals schwerer, die gesamte Abfolge von De- maskierungsoperationen zur Extraktion der ursprünglichen Tabellenwerte zu rekonstruieren.

Claims

Patentansprüche
1. Verfahren zur rechnergestützten Obfuskation von Programmcode (CO) , wobei in dem Programmcode (CO) eine Vielzahl von Rechenschritten (ST) implementiert ist, wobei vorbestimmte
Rechenschritte der Vielzahl von Rechenschritten (ST) bei Ausführung des Programmcodes (CO) in einer vorbestimmten Reihenfolge aufgerufen werden und zumindest manche der vorbestimmten Rechenschritte vorgegebene Rechenschritte (STi) sind, in denen jeweils auf eine im Programmcode (CO) hinterlegte erste Tabelle (Tl) aus einer Vielzahl von digitalen ersten Tabellenwerten (Tli) zugegriffen wird, um einen für den jeweiligen vorgegebenen Rechenschritt (STi) benötigten ersten Tabellenwert (Tli) aus der ersten Tabelle (Tl) auszulesen, wobei zur Veränderung des Programmcodes die folgenden Schritte ausge¬ führt werden:
es wird eine dynamische Maske (M) umfassend eine Vielzahl von digitalen Maskenwerten (Mi) erzeugt, wobei sich die Maskenwerte (Mi) zumindest eines Teils der Maske (M) ge- genseitig unterscheiden und ein jeweiliger Maskenwert (Mi) für einen jeweiligen vorgegebenen Rechenschritt (STi) gültig ist;
jeder erste Tabellenwert (Tli) der ersten Tabelle (Tl) wird mittels des Maskenwerts (Mi) , der beim Einlesen des jeweiligen ersten Tabellenwerts (Tli) im jeweiligen vorgegebenen Rechenschritt (STi) gültig ist, in einen digitalen zweiten Tabellenwert (T2±) gewandelt, wodurch eine zweite Tabelle (T2) aus zweiten Tabellenwerten (Ί2±) erhalten wird, die anstatt der ersten Tabelle (Tl) in dem Programm- code (CO) hinterlegt wird;
für jeden vorgegebenen Rechenschritt (STi) wird ein zu¬ sätzlicher Rechenschritt (fiiM -1) im Programmcode (CO) im¬ plementiert, welcher einen ausgelesenen zweiten Tabellenwert (T2i) in denjenigen ersten Tabellenwert (Tli) rück- rechnet, der für den jeweiligen vorgegebenen Rechenschritt
(STi) benötigt wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass zur Erzeugung der dynamischen Maske (M) ein initialer Maskenwert und Aktualisierungsschritte festgelegt werden, wobei durch Anwenden eines oder mehrerer aufeinander folgender Ak- tualisierungsschritte auf einen aktuell gültigen Maskenwert (Mi) der für den nächsten vorgegebenen Rechenschritt (STi) gültige Maskenwert (Mi) berechnet wird, wobei die Aktualisie¬ rungsschritte auch im Programmcode (CO) implementiert werden, so dass im jeweiligen vorgegebenen Rechenschritt (STi) der aktuell gültige Maskenwert (Mi) vorliegt, wobei der zusätzli¬ che Rechenschritt (fiiM -1) im jeweiligen vorgegebenen Rechen¬ schritt von dem aktuell gültigen Maskenwert (Mi) abhängt, wo¬ bei die Aktualisierungsschritte für zumindest einen Teil der Maskenwerte (Mi) , auf welche sie angewendet werden, vorzugs- weise unterschiedlich festgelegt sind.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass ein Aktualisierungsschritt in jedem der vorgegebenen Rechenschritte (STi) implementiert wird, wobei vorzugsweise ferner auch in zumindest einem Teil der vorbestimmten Rechenschrit¬ te, welche keine vorgegebenen Rechenschritte (STi) sind, je¬ weils ein Aktualisierungsschritt implementiert wird.
4. Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, dass der initiale Maskenwert (Mi) und/oder die Aktualisie¬ rungsschritte mittels eines Zufallszahlengenerators festge¬ legt werden.
5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die ersten Tabellenwerte (Tli) und die zweiten Tabellenwerte (T2±) sowie die Maskenwerte (Mi) je¬ weils eine Bitfolge darstellen.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass das Wandeln eines jeweiligen ersten Tabellenwerts (Tli) in einen zweiten Tabellenwert (T2±) durch Anwenden von logischen Operationen zwischen der Bitfolge des jeweiligen ersten Tabellenwerts (Tli) und der Bitfolge des aktuell gültigen Mas- kenwerts (Mi) durchgeführt wird, wobei das Anwenden der logi¬ schen Operationen den zweiten Tabellenwert (T2±) liefert.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass die logischen Operationen bitweise auf einander korrespondie¬ rende Bits der Bitfolgen des jeweiligen ersten Tabellenwerts (Tli) und des aktuell gültigen Maskenwerts (Mi) angewendet werden, wobei die logischen Operationen vorzugsweise eine oder mehrere OR- und/oder XOR- und/oder NOR- und/oder XNOR- und/oder AND- und/oder NAND-Operationen umfassen.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass im Falle, dass die Bitfolge des aktuell gültigen Maskenwerts
(Mi) kürzer als die Bitfolge des jeweiligen ersten Tabellen- werts (Tli) ist, die ursprüngliche Bitfolge des aktuell gül¬ tigen Maskenwerts (Mi) durch mehrfache Verwendung der Bits der ursprünglichen Bitfolge, insbesondere durch ein oder mehrfaches Wiederholen der ursprünglichen Bitfolge, verlängert wird, so dass für jedes Bit der Bitfolge des jeweiligen ersten Tabellenwerts (Tli) ein korrespondierendes Bit der Bitfolge des aktuell gültigen Maskenwerts (Mi) existiert.
9. Verfahren zur Ausführung eines Programmcodes (CO'), der mit einem Verfahren nach einem der vorhergehenden Ansprüche obfusziert ist, wobei bei Aufruf eines jeweiligen vorgegebe¬ nen Rechenschritts (STi) des Programmcodes (CO') der zweite Tabellenwert (T2±) aus der zweiten Tabelle (T2±) ausgelesen wird und für den jeweiligen vorgegebenen Rechenschritt (STi) der zusätzliche Rechenschritt (fiiM -1) ausgeführt wird, wel- eher den ausgelesenen zweiten Tabellenwert (T2±) in denjenigen ersten Tabellenwert (Tli) rückrechnet, der für den jewei¬ ligen vorgegebenen Rechenschritt (STi) benötigt wird.
10. Technisches System, dadurch gekennzeichnet, dass das technische System (1) ein Rechnermittel (2) umfasst, welches zur Ausführung eines Programmcodes (CO') gemäß dem Verfahren nach Anspruch 9 eingerichtet ist.
11. Technisches System nach Anspruch 10, dadurch gekennzeichnet, dass das technische System (1) eine Automatisierungsanlage oder eine Komponente einer Automatisierungsanlage oder ein elektrisches Energieerzeugungs- und/oder
Energieverteilsystem oder eine Komponente eines elektrischen Energieerzeugungs- und/oder Energieverteilsystems oder ein medizinisches Gerät ist.
12. Computerprogrammprodukt mit auf einem maschinenlesbaren Träger gespeicherten Programmcodeabschnitten zur Durchführung eines Verfahrens nach einem der Ansprüche 1 bis 8, wenn die Programmcodeabschnitte auf einem Computer ausgeführt werden.
13. Computerprogramm mit Programmcodeabschnitten zur Durch- führung eines Verfahrens nach einem der Ansprüche 1 bis 8, wenn die Programmcodeabschnitte auf einem Computer ausgeführt werden .
PCT/EP2017/082508 2017-03-10 2017-12-13 Verfahren zur rechnergestützten obfuskation von programmcode WO2018162107A1 (de)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2019548941A JP6919973B2 (ja) 2017-03-10 2017-12-13 プログラムコードのコンピュータ支援難読化方法
CN201780088267.2A CN110383275B (zh) 2017-03-10 2017-12-13 用于程序代码的计算机辅助的代码混淆的方法
US16/492,439 US11341216B2 (en) 2017-03-10 2017-12-13 Method for the computer-aided obfuscation of program code
EP17835809.9A EP3577588B1 (de) 2017-03-10 2017-12-13 Verfahren zur rechnergestützten obfuskation von programmcode
KR1020197029606A KR102336521B1 (ko) 2017-03-10 2017-12-13 프로그램 코드의 컴퓨터-지원 난독화를 위한 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102017204020.3A DE102017204020A1 (de) 2017-03-10 2017-03-10 Verfahren zur rechnergestützten Obfuskation von Programmcode
DE102017204020.3 2017-03-10

Publications (1)

Publication Number Publication Date
WO2018162107A1 true WO2018162107A1 (de) 2018-09-13

Family

ID=61054302

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2017/082508 WO2018162107A1 (de) 2017-03-10 2017-12-13 Verfahren zur rechnergestützten obfuskation von programmcode

Country Status (7)

Country Link
US (1) US11341216B2 (de)
EP (1) EP3577588B1 (de)
JP (1) JP6919973B2 (de)
KR (1) KR102336521B1 (de)
CN (1) CN110383275B (de)
DE (1) DE102017204020A1 (de)
WO (1) WO2018162107A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11882447B2 (en) 2018-08-09 2024-01-23 Siemens Aktiengesellschaft Computer-implemented method and network access server for connecting a network component to a network with an extended network access identifier

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210303662A1 (en) * 2020-03-31 2021-09-30 Irdeto B.V. Systems, methods, and storage media for creating secured transformed code from input code using a neural network to obscure a transformation function
US11954213B2 (en) 2021-09-13 2024-04-09 International Business Machines Corporation Obfuscating intelligent data while preserving reserve values

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0900488A1 (de) * 1996-06-13 1999-03-10 Intel Corporation Gegen äussere eingriffe gesicherte verfahren und vorrichtungen
US20140101458A1 (en) * 2010-11-05 2014-04-10 Apple Inc. Code tampering protection for insecure environments
EP2937803A1 (de) * 2014-04-23 2015-10-28 Nxp B.V. Steuerflussglättung zur codeverschleierung, wo die nächste blockberechnung laufzeitinformationen benötigt

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3627384B2 (ja) 1996-01-17 2005-03-09 富士ゼロックス株式会社 ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法
JP2003280755A (ja) * 2002-03-25 2003-10-02 Nec Corp 自己復元型プログラム、プログラム生成方法及び装置、情報処理装置並びにプログラム
JP2003280754A (ja) 2002-03-25 2003-10-02 Nec Corp 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム
US7133525B1 (en) * 2002-05-17 2006-11-07 Communication Security Apparatus Corp. Communication security apparatus and method of using same
WO2009010338A1 (de) * 2007-07-13 2009-01-22 Siemens Aktiengesellschaft Verfahren zur rechnergestützten obfuskierung eines softwareprogramms und computerprogrammprodukt
US8667301B2 (en) * 2010-04-01 2014-03-04 Apple Inc. Obfuscating transformations on data array content and addresses
RU2620712C2 (ru) * 2012-01-09 2017-05-29 Конинклейке Филипс Н.В. Устройство виртуальной машины, имеющее управляемую ключом обфускацию, и способ
US8756435B2 (en) * 2012-03-02 2014-06-17 Apple Inc. Obfuscation of control flow of software
US9336370B2 (en) * 2012-12-06 2016-05-10 Apple Inc. Method and apparatus for dynamic obfuscation of static data
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
US10599820B2 (en) * 2014-04-23 2020-03-24 Nxp B.V. Control flow flattening for code obfuscation where the next block calculation needs run-time information
US9830326B2 (en) * 2015-06-15 2017-11-28 Ca, Inc. Identifying data offsets using binary masks
KR101619458B1 (ko) * 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0900488A1 (de) * 1996-06-13 1999-03-10 Intel Corporation Gegen äussere eingriffe gesicherte verfahren und vorrichtungen
US20140101458A1 (en) * 2010-11-05 2014-04-10 Apple Inc. Code tampering protection for insecure environments
EP2937803A1 (de) * 2014-04-23 2015-10-28 Nxp B.V. Steuerflussglättung zur codeverschleierung, wo die nächste blockberechnung laufzeitinformationen benötigt

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11882447B2 (en) 2018-08-09 2024-01-23 Siemens Aktiengesellschaft Computer-implemented method and network access server for connecting a network component to a network with an extended network access identifier

Also Published As

Publication number Publication date
US11341216B2 (en) 2022-05-24
JP6919973B2 (ja) 2021-08-18
CN110383275A (zh) 2019-10-25
EP3577588B1 (de) 2021-09-01
JP2020510935A (ja) 2020-04-09
CN110383275B (zh) 2023-08-22
KR20190122837A (ko) 2019-10-30
KR102336521B1 (ko) 2021-12-06
EP3577588A1 (de) 2019-12-11
DE102017204020A1 (de) 2018-09-13
US20200042677A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
EP2605445B1 (de) Verfahren und Vorrichtung zur Absicherung von Blockchiffren gegen Template-Attacken
DE69736148T2 (de) Verfahren und Einrichtung zur Datenverschlüsselung
EP3577588B1 (de) Verfahren zur rechnergestützten obfuskation von programmcode
WO2004097734A2 (de) Verfahren zur verarbeitung von daten
EP3218894A1 (de) Verfahren zum testen und zum härten von softwareapplikationen
DE102006030888A1 (de) Verfahren und Vorrichtung zum Erzeugen eines Startwertes für einen Pseudo-Zufallszahlengenerator
DE102007043083A1 (de) Verfahren und Vorrichtung zum Codieren von Datenworten
EP2678772B1 (de) Verschlüsseltes rechnen
WO2005024606A1 (de) Übergang zwischen maskierten repräsentationen eines wertes bei kryptographischen berechnungen
EP3576001A1 (de) Computerimplementiertes verfahren zum übergeben eines datenstrings von einer anwendung an eine datenschutzeinrichtung
EP1439446A1 (de) Verfahren zum Erweitern eines Programms um eine Kopierschutzfunktion
AT515097B1 (de) Verschlüsselungsverfahren und Pseudo-Zufallszahlengenerator
EP1887458A1 (de) Pseudo-Zufallszahlengenerator für eine Chipkarte
EP1506473B1 (de) Ausspähungsgeschützte modulare inversion
EP3251281B1 (de) Intrinsische authentifizierung von programcode
EP3504616B1 (de) Modul und verfahren zur abgesicherten berechnung von mathematischen operationen
DE4419635C2 (de) Microcontrollersicherungsverfahren
DE10253285B4 (de) Verschleierung eines geheimen Wertes
WO2024038210A1 (de) Verfahren zum bereitstellen eines digitalen schlüssels
DE102014117967A1 (de) Zufallspermutationsgenerator und Verfahren zum Generieren einer Zufallspermutationssequenz
EP1595356B1 (de) Erzeugen von ergebniswerten mit einer vorgegebenen eigenschaft
DE102022131254A1 (de) Verfahren zum Verschlüsseln eines Quelltextes, Verfahren zum Entschlüsseln eines Quelltextes und Entwicklungssystem
DE10206065A1 (de) Verfahren zur symmetrischen Verschlüsselung einer Nachricht mittels eines Schlüssels
DE102022114837A1 (de) Verfahren und Vorrichtungen zur Sicherung von Mikrocontrollern und eingebetteten Systemen
DE10318730A1 (de) Verfahren zum Betreiben einer Datenverarbeitungseinheit sowie Datenverarbeitungssystem zur Durchführung des Verfahrens

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17835809

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017835809

Country of ref document: EP

Effective date: 20190903

ENP Entry into the national phase

Ref document number: 2019548941

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20197029606

Country of ref document: KR

Kind code of ref document: A