DE102015016059A1 - Verfahren zur Ausführung eines Programmcodes - Google Patents

Verfahren zur Ausführung eines Programmcodes Download PDF

Info

Publication number
DE102015016059A1
DE102015016059A1 DE102015016059.1A DE102015016059A DE102015016059A1 DE 102015016059 A1 DE102015016059 A1 DE 102015016059A1 DE 102015016059 A DE102015016059 A DE 102015016059A DE 102015016059 A1 DE102015016059 A1 DE 102015016059A1
Authority
DE
Germany
Prior art keywords
program code
elements
address information
data
address
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.)
Pending
Application number
DE102015016059.1A
Other languages
English (en)
Inventor
Michael Baldischweiler
Daniel Albert
Sven Bauer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Build38 De GmbH
Original Assignee
Giesecke and Devrient GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Priority to DE102015016059.1A priority Critical patent/DE102015016059A1/de
Publication of DE102015016059A1 publication Critical patent/DE102015016059A1/de
Pending legal-status Critical Current

Links

Images

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
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

Die vorliegende Erfindung ist gerichtet auf ein Verfahren zur Ausführung eines gespeicherten Programmcodes in einer Ausführungsumgebung sowie auf eine Vorrichtung zur Bereitstellung eines entsprechenden Programmcodes. Zumindest eines der Programmcodeelemente 20, 22 des Programmcodes wird ausgeführt und eine Adressinformation 30, 32, die auf das Programmcodeelement verweist; wird verwendet. Eine geheime Information ist verteilt in einer Vielzahl gespeicherter Datenelemente enthalten und eines der Datenelemente wird verwendet. Erfindungsgemäß wird das Programmcodeelement 20, 22 sowohl ausgeführt als auch mittels der Adressinformation 30, 32 als das eine der Datenelemente verwendet.

Description

  • Die vorliegende Erfindung ist gerichtet auf ein Verfahren zur Ausführung eines Programmcodes, in welchem eine Information sicher verwendet werden soll, sowie eine Vorrichtung zum Bereitstellen von entsprechendem Programmcode. Die Information ist vorzugsweise zumindest ein Teil eines kryptographischen Schlüssels, der insbesondere in einer eher ungeschützten Ausführungsumgebung verwendet werden soll.
  • Es ist eine Vielzahl von Verfahren bekannt, welche es ermöglichen, geheime Informationen sicher abzuspeichern. Eine Information die in einem sicheren Element, wie Chipkarte, mit eigener Ausführungsumgebung abgespeichert ist und nur dort verwendet wird, ist bereits gut gegen ein Ausspähen der Information durch einen Angreifer geschützt. In anderen Einheiten, wie beispielsweise auf einem PC oder einem Mobilfunkgerät, ist weder der Speicher noch die Ausführungsumgebung vor einem Angreifer besonders geschützt. Um auch in einer wenig gesicherten Ausführungsumgebung geheime Informationen verarbeiten zu können wurden zuletzt vermehrt geeignete kryptographische Verfahren vorgeschlagen. Solche Verfahren werden teils auch als White-Box-Kryptographie bezeichnet, da sie voraussetzen, dass ein Angreifer beispielsweise ungehinderten Zugriff auf den Programmcode, den Programmablauf und/oder Speicherinhalte haben könnte (White-Box-Angriff).
  • Vorgeschlagen wurde beispielsweise, einen kryptographischen Algorithmus einschließlich des Schlüssels durch ein Netzwerk aus verknüpften Ersetzungstabellen zu ersetzen. Dieses und andere bekannte Verfahren zum sicheren Speichern eines Schlüssels, benötigen entweder sehr viel Speicherplatz oder eine Vielzahl von zusätzlichen Rechenschritten, z. b. um den Schlüssel sicher zu codieren und wieder sicher zu decodieren.
  • Es ist somit eine Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren zum sicheren Verwenden einer Information in einem Programm bereitzustellen, welches insbesondere mit geringem Aufwand und/oder geringerem Speicherbedarf verbunden ist. Trotz Verwendung in einer unsicheren Ausführungsumgebung soll die Information dabei soweit wie möglich vor dem Angreifer verborgen bleiben.
  • Diese Aufgabe wird gelöst durch den Gegenstand der unabhängigen Ansprüche. In den davon abhängigen Ansprüchen sind vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung angegeben.
  • Bei der Ausführung eines gespeicherten Programmcodes in einer Ausführungsumgebung wird zumindest ein Programmcodeelement des Programmcodes ausgeführt und eine Adressinformation verwendet, die auf das Programmcodeelement verweist. Eine geheime Information ist verteilt in einer Vielzahl gespeicherter Datenelemente enthalten und eines der Datenelemente wird verwendet. Vorliegend wird das Programmcodeelement sowohl ausgeführt als auch mittels der Adressinformation als das eine der Datenelemente verwendet.
  • Die Sicherheit des ausgeführten Programmcodes wird in mehrfacher Hinsicht verbessert, beispielsweise da eine bewusste Änderung des Programmcodeelements nicht nur den Ablauf ändert, sondern zugleich auch den Inhalt einer anderen Berechnung. Das Verfahren ist zudem flexibel, da die Schritte des Ausführen und der Verwendung als Datenelement zu beliebigen unterschiedlichen Zeitpunkten erfolgen kann. Insbesondere kann eine Ausführung vor und/oder nach einer Verwendung als Datenelement erfolgen.
  • Das Datenelement kann als Teil einer Ersetzungstabelle verwendet werden. Ein Wert, beispielsweise ein Zwischenwert einer kryptographischen Berechnung, wird durch den Wert des Programmcodeelements ersetzt. Insbesondere kann die Adresstabelle anstelle einer Ersetzungstabelle verwendet werden. Anstelle eines Wertes aus einer Ersetzungstabelle wird das Programmcodeelement zum verwendet, auf welches der jeweilige Verweis aus der Adresstabelle mit Verweisen auf Programmcodeelemente verweist. Eine Adresstabelle kann anstelle von einer oder mehreren Ersetzungstabellen verwendet werden. Zusätzlich zu einer Adresstabelle können im Programmcode eine oder mehrere Ersetzungstabellen vorliegen.
  • Somit wird auch verhindert, dass eine Ersetzungstabelle und/oder die zugehörige kryptographische Funktion unabhängig vom Programmcode bzw. dessen Programmcodeelementen verwendet werden kann.
  • Bevorzugt umfasst die Adressinformation einen Verweis auf das Programmcodeelement sowie eine Angabe zu weiteren Programmcodeelementen, die als eines der Datenelemente zu verwenden sind. Der Speicherbedarf für die Adresstabelle ist vorzugsweise somit kleiner als der Speicherbedarf der ursprünglichen Ersetzungstabelle.
  • Die Angabe in der Adressinformation kann kodieren, ob weitere Programmcodeelemente ausgehend von dem Programmcodeelement als Datenelemente zu verwenden sind. Auch kann die Angabe umfassen wie viele weitere Programmcodeelemente ausgehend von dem Programmcodeelement bzw. dessen Adresse zu verwenden sind. Die Angabe kann eine Berechnungsangabe für Adressen der weiteren Programmcodeelemente umfassen. Die (relative) Berechnungsangabe erlaubt (ausgehend von der Adresse des Programmcodeelements) die Berechnung von Adressen weiterer Programmcodeelemente, die als Datenelemente verwendbar sein sollen. Eine Berechnungsangabe kann insbesondere eine Richtung im gespeicherten Programmcode (nach „oben” (wie minus 0x10), nach „rechts unten” (plus 0x11)) umfassen.
  • In der Regel ist der Programmcode eingerichtet, eine kryptographische Funktion auszuführen und als einen Teilschritt der kryptographischen Funktion den Wert des Programmcodeelements als Ersetzungswert zu verwenden.
  • Vorzugsweise ist der Programmcode bzw. die Vielzahl seiner Programmcodeelemente bereits eingerichtet zur Ausführung in einer unsicheren Ausführungsumgebung. Der Programmcode ist also beispielsweise bereits ein verwürfelter und/oder verschleierter Programmcode.
  • Wenn die als Datenelement verwendeten Programmcodeelemente des Programmcodes gemäß einer Vorgabe über den gespeicherten Programmcode verteilt sind, kann die Sicherheit weiter erhöht werden. Die als Datenelement verwendeten Programmcodeelemente des Programmcodes können über alle Programmcodeelemente des gespeicherten Programmcodes gleichmäßig verteilt sein. Eine gleichmäßige Verteilung über den Speicherbereich des Programmcodes erschwert die Trennung des Programmcodes in einzelne Teile und deren Wiederverwendung. Vorab bestimmte Abschnitte des Programmcodes können als zu verwenden vorgegeben sein, um beispielsweise besonders sicherheitskritische Teile des Programmcodes abzusichern.
  • Eine Vorrichtung zum Bereitstellen von gesichertem Programmcode, umfassst eine Codebereitstellungseinheit und eine Adresserzeugungseinheit. Die Codebereitstellungseinheit stellt eine Vielzahl von in der Ausführungsumgebung ausführbaren Programmcodeelementen des Programmcodes bereit. Eine Adresserzeugungseinheit stellt Adressinformationen, welche jeweils auf eines der Programmcodeelemente des Programmcodes verweisen bereit. Der Programmcode ist eingerichtet, die Programmcodeelemente, auf die verwiesen wird, zumindest einmal auszuführen und zumindest einmal auch als Datenelement zu verwenden.
  • Die Vorrichtung ist vorgesehen zum Bereitstellen von Programmcode, welcher gemäß einer der vorgenannten Abläufe in einer Ausführungsumgebung ausführbar ist.
  • Die Adresserzeugungseinheit ist eingerichtet ausgehend von der Vielzahl von Programmcodeelementen und von für den Programmcode nötigen weiteren Daten, die Adressinformationen zu erzeugen, so dass der zu speichernde Programmcode, die Vielzahl von Programmcodeelementen und eine Adresstabelle mit den Adressinformationen umfasst. Die Adresstabelle wird zumindest teilweise anstelle der weiteren Daten, z. B. anstelle von einer von mehreren Ersetzungstabellen, vorgesehen.
  • Die Codebereitstellungseinheit wird die Vielzahl der Programmcodeelemente in einer für eine unsichere Ausführungsumgebung gesicherten Form bereitstellen. Sie kann also insbesondere Schritte des Verwürfelns und/oder des Verschleierns vornehmen, um den Programmcode besser zu schützen. Zusätzliche Programmcodeelemente können in den Programmcode eingebunden werden, welche eingerichtet sind, mittels der Adressinformation das Programmcodeelement als Datenelement zu verwenden. Der eigentliche Hauptteil des Programmcodes bzw. die kryptographische(n) Funktion(en) muss somit nicht vorab für das vorliegende Verfahren vorbereitet werden. Weiterhin kann in den Programmcode eine kryptographische Funktion eingebunden, welche eine in Ersetzungstabellen codierte geheime Information verwendet.
  • Gerade da in unsicheren Ausführungsumgebungen praktisch keine absolute Sicherheit für Informationen gewährleistet werden kann, erhöhen die vorliegenden Lösungen mit geringem Zusatzaufwand für die Absicherung den Aufwand für einen Angreifer erheblich.
  • Eine geheime Information ist verteilt in dem Programmcode enthalten. Die geheime Information ist also insbesondere nicht ungeschützt gespeichert. Die Information kann beispielsweise einfach verteilt vorliegen, kann verteilt im Programmcode in codierter Form vorliegen und/oder insbesondere durch vorbereitende Schritte auf den Programmcode und gegebenenfalls weitere Daten, wie Ersetzungstabellen, verteilt sein.
  • Ein Quelltext für den Programmcode wird typischerweise mittels einer Compiler-Einheit derart umgewandelt, dass ausführbarer Programmcode entsteht. Der Programmcode kann abhängig von dem jeweiligen Zielsystem sein. So ist es regelmäßig notwendig, bezüglich einzelner Prozessoren eigene Versionen des kompilierten Programmcodes zu erstellen.
  • Weitere Merkmale und Vorteile der Erfindung ergeben sich aus der folgenden Beschreibung von erfindungsgemäßen Ausführungsbeispielen sowie weiteren Ausführungsalternativen in Zusammenhang mit den Figuren, die zeigen:
  • 1: eine Einheit mit unsicherer Ausführungsumgebung;
  • 2: ein Programmcode mit einer Vielzahl von Programmcodeelementen und einer Adresstabelle;
  • 3: ein schematisches Ablaufdiagramm für einen Programmablauf in einer ersten Ausgestaltung; und
  • 4: ein schematisches Ablaufdiagramm für einen Programmablauf in einer zweiten Ausgestaltung; und
  • 5: eine funktionale Darstellung einer Vorrichtung zum Bereitstellen von Programmcode und der wichtigsten Teilschritte der Bereitstellung.
  • 1 zeigt eine Einheit 10 mit unterschiedlichen Ausführungsumgebungen 4, 5 und 8 für Programmcode, die beispielsweise als Mobilfunkgerät, Tablet oder Computer vorliegen könnte.
  • Die Einheit 10 umfasst eine unsichere Ausführungsumgebung 4, beispielsweise ein normales Betriebssystem, wie Windows 10, ein offenes (open source) Betriebssystem, wie Android, oder eine proprietäre, einfache Ausführungsumgebung.
  • Daneben umfasst die Einheit 10 optional eine sichere Ausführungsumgebung 5, beispielsweise ein Trusted Execution Environment im Sinne der Global-Patform Spezifikationen. Die Einheit kann weiter optional, darüber hinaus ein oder mehrere sichere Elemente 8 (Secure Elements) umfassen, wie SIM-Karten, sichere Massenspeicherspeicherkarten oder NFC-Einheiten.
  • In der unsicheren Ausführungsumgebung 4, wird ein Programmcode 1 ausgeführt, der einen Bereich mit einer Vielzahl von Programmcodeelementen 2 und eine Adresstabelle 3 umfasst. Der Programmcode 1 ist in einem nicht gezeigten, nicht-flüchtigen Speicher der Einheit 10 gespeichert. Der nicht-flüchtige Speicher kann insbesondere ein frei zugänglicher wieder beschreibbarer Speicher der Einheit 10 sein. Die unsichere Ausführungsumgebung kann für einen Angreifer als White Box betrachtet werden, die der Angreifer also kennt und auf die der Angreifer ggf. auch zur Laufzeit des Programmcodes Zugriff hat.
  • Am Beispiel von 2 werden die Inhalte des Programmcodes 1 näher dargestellt.
  • Der Programmcode 1 umfasst in einem Programmcodebereich 2 eine Vielzahl von Programmcodeelementen. Auf ausgewählte Programmcodeelemente 20, 22, 23, 24 und 25 verweisen Adressinformationen 30, 32, 33, 34 und 35 einer Adresstabelle 3 des Programmcodes. Die Adresstabelle 3 gibt an, welche Programmcodeelemente nicht nur als Programmcode ausgeführt werden, sondern im Programmcode auch als Datenelement verwendet werden.
  • Die Adressinformation 30 enthält einen Verweis V20 auf das Programmcodeelement 20. Der Verweis V20 ist vorgesehen, um das Programmcodeelement 20 zu lesen und als Datenelement im ausgeführten Programm zu verwenden. Das Programmcodeelement 20 wird demnach sowohl als Datenelement mit dem Wert „74” verwendet als auch als Instruktion „74” der Ausführungsumgebung ausgeführt. Ein solcher Ablauf wird später mit Bezug auf die 3 und 4 beschrieben.
  • Der Programmcode 1 soll vorliegend unter anderem eine kryptographische Berechnung ausführen. Die geheime Information, typischerweise ein Schlüssel, wird jedoch nicht am Stück im Programmcode 1 gespeichert. Die geheime Information wird verteilt im Programmcode 1 gespeichert. Insbesondere wird ein Netz von verknüpften Ersetzungstabellen verwendet. Die geheime Information ist insofern primär auf die Ersetzungstabellen verteilt aber auch in den Programmcode zur Verwendung der Ersetzungstabellen verteilt. Die Werte aus den Ersetzungstabellen werden verwendet, um (immer wieder) Zwischenwerte der kryptographischen Berechnung mit Werten aus der Ersetzungstabelle zu ersetzen. Die Adresstabelle 3 ersetzt nun vorliegend zumindest eine der Ersetzungstabellen. Als Ersetzungswerte werden somit – zumindest auch – die Programmcodeelemente verwendet, auf welche die Adresstabelle verweist. Der Programmcode 1 kann dabei zudem – in der 2 nicht dargestellte – Ersetzungstabellen umfassen.
  • Die Verweise der Adresstabelle 3 in 2 sind bevorzugt als relative Adressangaben ausgestaltet, also eher nicht als absolute Adressangabe.
  • In Ausgestaltungen kann die Adressinformation neben einem Verweis auf das (erste) Programmcodeelement auch die Angabe enthalten, ob ausgehend von diesem Programmcodeelement weitere Programmcodeelemente angegeben werden, die auch als Datenelement verwendet werden sollen.
  • So könnte die Adressinformation 30 angeben, dass keine weiteren Programmcodeelemente ausgehend von der Startadresse V20 zu verwenden sind. Die Adressinformation 32 mit dem Verweis V22 auf das Programmcodeelement würde dann anzeigen, dass weitere Programmcodeelemente zu verwenden sind und/oder wie viele Programmcodeelemente zu verwenden sind, in diesem Beispiel drei Weitere ausgehend vom Programmcodeelement 22 bis zum Programmcodeelement 22-3. Dazu kann eine relative Richtung enthalten sein, im Beispiel „nach unten”, in welcher diese weiteren Programmcodeelemente ausgehend vom Programmcodeelement 20 liegen. Die Richtung kann als Berechnungsangabe für die Adresse des jeweils nächsten Programmcodeelements vorliegen, beispielsweise „Adresse plus 0x10”. Analog beinhaltet die Adressinformation 34 neben dem Verweis V24 auf das Programmcodeelement die Angabe, dass zwölf weitere Programmcodeelemente ausgehend von der Adresse des Programmcodeelements 24 in Richtung schräg nach links unten liegen, z. b. „Adresse plus 0x0F”. Das vierte, weitere Programmcodeelement 24-4 ist hier beispielhaft besonders hervorgehoben.
  • 3 zeigt in einer ersten Variante die verschiedenen Schritte bei Ausführung des Programmcodes 1 in einer gegebenenfalls unsicheren Ausführungsumgebung.
  • In Schritt 41 wird das Programmcodeelement 20 und anschließend in Schritt 42 das Programmcodeelement 24 ausgeführt. In Schritt 43 wird aus der Adressinformation 30 der Verweis V20 auf das Programmcodeelement 20 gelesen, um das (bereits ausgeführte) Programmcodeelement 20 in Schritt 44 als Datenelement zu verwenden. In Schritt 44 wird demnach im konkreteren Beispiel ein Zwischenwert einer vorzugsweise kryptographischen Berechnung durch den Wert des Programmcodeelements ersetzt.
  • Analog wird in Schritt 45 der Verweis V30 aus der Adressinformation 30 gelesen. Das noch auszuführende Programmcodeelement 23 wird als Datenelement, insbesondere direkt als Ersetzungswert verwendet. Erst anschließend wird das zuvor als Datenelement verwendete Programmcodeelement 23 in Schritt 47 in der Ausführungsumgebung ausgeführt.
  • Anzumerken wäre an dieser Stelle, dass die Schritte 43, 44 sowie 45, 46 durch den Programmcode vorgegeben sind, also auch einer Ausführung von (anderen) Programmcodeelementen des Programmcodes entspricht. Die Ausführung des Programmcodeelements in der Ausführungsumgebung entspricht der Ausführung der dem Wert des Programmcodeelements zugeordneten Instruktion.
  • Wie beispielhaft nur durch die Punkte nach den Schritten 44 und 46 in der Figur angedeutet können, an sich an jeder Stelle des Ablaufs in 3 oder 4, beliebig viele Zwischenschritte des Ausführen bzw. Ersetzen (mittels Adresstabelle und/oder Ersetzungstabellen) erfolgen. Der gezeigte Ablauf dient primär dazu den Sinn und die Verwendung der Adresstabelle zu erläutern.
  • In den zu 3 geschilderten Beispielen enthalten die Adressinformationen einen Verweis auf jeweils ein zu verwendendes Programmcodeelement.
  • Mit Bezug auf 4 wird nun ein möglicher Ablauf für Adressinformationen mit Angaben zu weiteren Programmcodeelementen, wie die Programmcodeelemente 22-3 und 24-4 aus 2, beschrieben.
  • Das dargestellte Verfahren beginnt mit der Ausführung der Programmcodeelemente 23 und 24-4 in den Schritten 51 und 52 respektive.
  • In Schritt 53 wird die Adressinformation 30 des Programmcodeelements 20 ausgelesen. Die Adressinformation 30 verweist auf das Programmcodeelement 20 aber auf keine weiteren Programmcodeelemente. Der Wert des Programmelements 20 wird in Schritt 54 in eine temporäre Ersetzungstabelle gespeichert.
  • Nachfolgend werden mit Hilfe der in Schritt 55 gelesenen Adressinformation 34 mehrere Werte für die temporäre Ersetzungstabelle bestimmt. Die Adressinformation 34 umfasst den Verweis V24 auf das Programmcodeelement 24, die Angabe das zwölf weitere Programmcodeelemente ausgehend von dieser Adresse in die Ersetzungstabelle zu übernehmen sind und die Richtung „Links unten”, z. b. als Berechnungsvorschrift Adresse „minus 0x0F”, in der die Adressen der weiteren Programmcodeelemente liegen. Die zwölf Programmcodeelemente, einschließlich des bereits ausgeführten Programmcodeelements 24-4, werden in Schritt 56 in die temporäre Ersetzungstabelle gespeichert.
  • In weiteren nicht dargestellten Schritten kann insbesondere die temporäre Ersetzungstabelle vervollständigt werden. Aus einer kleinen Adresstabelle 3 kann eine größere temporäre Ersetzungstabelle erstellt werden. Diese kann als einzige Ersetzungstabelle oder zusammen mit weiteren nicht temporären Ersetzungstabellen verwendet werden.
  • Zumindest die temporäre Ersetzungstabelle wird in den Schritten 57 und 58 zum Ersetzen mit den Werten der Programmcodeelemente 24-4 und 20 respektive verwendet. Ob die Verwendung der Werte durch Ersetzen oder in anderer Form, beispielsweise nach Speicherung eines temporären Schlüssels als Schlüssel, erfolgt, kann offen bleiben. Im Schritt 59 wird das zuvor bereits als Datenelement verwendete Programmcodeelement 20 ausgeführt.
  • 5 zeigt die an der Bereitstellung des Programmcodes beteiligten funktionalen Einheiten sowie die möglichen Komponenten und Teilschritte.
  • Eine Codebereitstellungseinheit 16 und eine Adresserzeugungseinheit 17 erstellen den Programmcode 1, der den Codebereich 2 und Adressinformationen 3, hier als Adresstabelle, umfasst. Die Adresserzeugungseinheit 17 stellt Adressinformationen bereit, welche jeweils auf eines der Programmcodeelemente des Programmcodebereichs 2 verweisen. Der Programmcode ist eingerichtet, die Programmcodeelemente, auf die verwiesen wird, zumindest einmal auszuführen und zumindest einmal auch als Datenelement zu verwenden.
  • Der Programmcodebereich 2 mit einer Vielzahl von Programmcodeelementen wird von der Codebereitstellungseinheit 16 bereitgestellt. Die Codebereitstellungseinheit 16 kann dabei zugleich ein Kompiler, der insbesondere den Quelltext des Programmcodes oder andere Ausgangsbestandteile des Programmcodes, an die Ausführungsumgebung anpasst.
  • Die Codebereitstellungseinheit 16 kann bereits für die Ausführung in einer unsicheren Ausführungsumgebung angepasste Bestandteile verwenden. Beispielsweise eine kryptographische Funktion 12, in der Regel eine kryptographische Library oder kryptographische API, kann bereits für die Ausführung in einer unsicheren Ausführungsumgebung vorgesehen sein (White-Box-Funktion). Die eigentliche kryptographische Funktion 13 benötigt in der Regel weitere Daten, wie Schlüssel. Als vorliegendes Beispiel dargestellt ist eine White-Box-Krypto-Funktion, die eine Vielzahl miteinander verknüpfter Ersetzungstabellen 14 verwendet. Auf diesem Weg kann der explizite Einsatz eines geheimen Schlüssels vermieden werden. Der Schlüssel ist versteckt in den Ersetzungstabellen und in deren Verwendung durch die kryptograhische Funktion enthalten. Die Funktion ist insbesondere eine symmetrische kryptographische Funktion, wie AES, DES und/oder 3DES. Anstelle zumindest einer der Ersetzungstabellen wird im Programmcode 1 vorliegend die durch die Adresserzeugungseinheit 17 erzeugte Adresstabelle 3 verwendet.
  • In dem in 5 dargestellten Beispiel erstellt die Codebereitstellungseinheit 16 den Codebereich 2 aus einer Anwendung 11 (Hauptteil) und der kryptograhischen Funktion 13. Eine solche Trennung ist möglich aber nicht notwendig. Als optionalen Bestandteil bindet die Codebereitstellungseinheit 16 gegebenenfalls nötigen Code 15 zur Verwendung der Adresstabelle 15 in den Codebereich 2 ein.
  • Die Codebereitstellungseinheit 16 kann den Codebereich 2 als zusätzlich verschleierten und/oder verwürfelten Codebereich 2 bereitstellen. Als Verschleierung könnten beispielsweise unterschiedliche einzelne oder gruppierte Programmcodeelemente für die gleiche Funktion verwendet werden; andere Verschleierungsvarianten sind verfügbar. Eine Verwürfelung kann beispielsweise beinhalten, dass möglichst viele der nacheinander auszuführenden Programmcodeelemente bewusst im Speicherbereich voneinander getrennt werden (keine lineare Ausführung), andere Verwürfelungsvarianten sind verfügbar.
  • Die Adresserzeugungseinheit 17 verwendet den bereitgestellten Codebereich 2 und die benötigten weiteren Daten, hier eine Ersetzungstabelle 14, um die Adressinformation zu erzeugen. Sie prüft dabei, wo im Codebereich Programmcodeelemente mit geeigneten Werten angeordnet sind. Für die, hier als Ersatz für Werte der Ersetzungstabelle benötigten Werte, erstellt sie die Adressinformationen. Die einzelne Adressinformation kann wie in Bezug auf 2 bis 4 genauer beschrieben nur einen Verweis auf ein Programmcodeelement oder weitere Angaben enthalten.
  • Eine Vorgabe für die Adresserzeugungseinheit 17 könnte sein, eine gleichmäßige Verteilung der als Datenelement zu nutzenden Programmelemente über den Programmcodebereich 2 zu erzielen. Ebenso kann für die Adresserzeugungseinheit 17 vorgegeben sein, bestimmte Programmcodeelemente, mindestens ein Programmcodeelement aus bestimmten Teilbereichen des Programmcodebereichs und/oder bevorzugt Programmcodeelemente aus bestimmten Teilbereichen des Programmcodebereichs zu verwenden.
  • Der von der Vorrichtung mit Codebereitstellungseinheit 16 und Adresserzeugungseinheit 17 bereitgestellte Programmcode 1 kann wie zu einer der anderen Figuren beschreiben verwendet werden oder ausgestaltet sein. Die Vorrichtung kann als lokale Einheit, wie PC, oder als zentrale Einheit, beispielsweise als Server ausgebildet sein.

Claims (15)

  1. Verfahren zur Ausführung eines gespeicherten Programmcodes in einer Ausführungsumgebung: – Ausführen (41, 47; 52, 59) zumindest eines Programmcodeelements des Programmcodes; – Verwenden (43, 45; 55, 53) einer Adressinformation, die auf das Programmcodeelement verweist; wobei eine geheime Information verteilt in einer Vielzahl gespeicherter Datenelemente enthalten ist; und – Verwenden (44, 46; 57, 58) eines der Datenelemente; dadurch gekennzeichnet, dass das Programmcodeelement (20, 23; 24-4, 20) sowohl ausgeführt wird (41, 47; 52, 59) als auch mittels der Adressinformation als das eine der Datenelemente verwendet wird (44, 46; 57, 58).
  2. Verfahren gemäß Anspruch 1, dadurch gekennzeichnet, dass das Datenelement als Teil einer Ersetzungstabelle verwendet wird.
  3. Verfahren gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, dass anstelle mindestens einer Ersetzungstabelle mindestens eine Adresstabelle mit Verweisen auf Programmcodeelemente verwendet wird.
  4. Verfahren gemäß einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Adressinformation einen Verweis auf das Programmcodeelement sowie eine Angabe zu weiteren Programmcodeelementen umfasst, die als eines der Datenelemente zu verwenden sind.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass die Angabe in der Adressinformation kodieren, ob weitere Programmcodeelemente ausgehend von dem Programmcodeelement als Datenelemente zu verwenden sind.
  6. Verfahren nach Anspruch 4 oder 5, dadurch gekennzeichnet, dass die Angabe in der Adressinformation umfasst, wie viele weitere Programmcodeelemente ausgehend von dem Programmcodeelement zu verwenden sind.
  7. Verfahren nach einem der Ansprüche 4 bis 6, dadurch gekennzeichnet, dass die Angabe eine Berechnungsangabe für Adressen der weiteren Programmcodeelemente umfasst.
  8. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Programmcode eingerichtet ist, eine kryptographische Funktion auszuführen und als einen Teilschritt der kryptographischen Funktion den Wert des Programmcodeelements als Ersetzungswert verwendet.
  9. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Programmcode eingerichtet ist zur Ausführung in einer unsicheren Ausführungsumgebung.
  10. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die als Datenelement verwendeten Programmcodeelemente des Programmcodes gemäß einer Vorgabe über den gespeicherten Programmcode verteilt sind.
  11. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die als Datenelement verwendeten Programmcodeelemente des Programmcodes über alle Programmcodeelemente des gespeicherten Programmcodes gleichmäßig verteilt sind und/oder bevorzugt in vorab bestimmten Abschnitten des Programmcodes angeordnet sind.
  12. Vorrichtung zum sicheren Bereitstellen einer Information in einem Programmcode für eine Ausführung in einer Ausführungsumgebung, umfassend: – eine Codebereitstellungseinheit (16) eingerichtet zum Bereitstellen von einer Vielzahl von in der Ausführungsumgebung ausführbarem Programmcodeelementen des Programmcodes; – eine Adresserzeugungseinheit (17) eingerichtet zum Bereitstellen von Adressinformationen, welche jeweils auf eines der Programmcodeelemente des Programmcodes verweisen; wobei der Programmcode eingerichtet ist, die Programmcodeelemente, auf die verwiesen wird, zumindest einmal auszuführen und zumindest einmal auch als Datenelement zu verwenden.
  13. Vorrichtung nach Anspruch 12 eingerichtet zum Bereitstellen von Programmcode, welcher gemäß einem der Ansprüche 1 bis 11 in der Ausführungsumgebung ausführbar ist.
  14. Vorrichtung nach Anspruch 12 oder 13, die Adresserzeugungseinheit (17) eingerichtet ist ausgehend von der Vielzahl von Programmcodeelementen (2) und für den Programmcode nötigen weiteren Daten (14), die Adressinformationen zu erzeugen, so dass der zu speichernde Programmcode (2, 3), eine Vielzahl von Programmcodeelementen (2) und eine Adresstabelle (3) mit den Adressinformationen (30, 32, 33) zumindest teilweise anstelle der weiteren Daten (14) umfasst.
  15. Vorrichtung nach einem der Ansprüche 12 bis 14, wobei der Programmcode, wobei die Codebereitstellungseinheit (16) eingerichtet ist, die Vielzahl der Programmcodeelemente in einer für eine unsichere Ausführungsumgebung gesicherten Form bereitzustellen; und/oder in den Programmcode, zusätzliche Programmcodeelemente (15) einzubinden, welche eingerichtet sind, mittels der Adressinformation das Programmcodeelement als Datenelement zu verwenden; und/oder in den Programmcode eine kryptographische Funktion einzubinden, welche eine in Ersetzungstabellen codierte geheime Information verwendet.
DE102015016059.1A 2015-12-11 2015-12-11 Verfahren zur Ausführung eines Programmcodes Pending DE102015016059A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102015016059.1A DE102015016059A1 (de) 2015-12-11 2015-12-11 Verfahren zur Ausführung eines Programmcodes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015016059.1A DE102015016059A1 (de) 2015-12-11 2015-12-11 Verfahren zur Ausführung eines Programmcodes

Publications (1)

Publication Number Publication Date
DE102015016059A1 true DE102015016059A1 (de) 2017-06-14

Family

ID=58773111

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015016059.1A Pending DE102015016059A1 (de) 2015-12-11 2015-12-11 Verfahren zur Ausführung eines Programmcodes

Country Status (1)

Country Link
DE (1) DE102015016059A1 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1391835A2 (de) * 2002-08-12 2004-02-25 Acxiom Corporation System und Verfahren zur Verbindung von Daten unter Verwendung von kodierten Verweisen
US7051200B1 (en) * 2000-06-27 2006-05-23 Microsoft Corporation System and method for interfacing a software process to secure repositories
EP2150915B1 (de) * 2007-05-30 2010-10-20 Pamci Networks Denmark APS Sicheres login-protokoll

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051200B1 (en) * 2000-06-27 2006-05-23 Microsoft Corporation System and method for interfacing a software process to secure repositories
EP1391835A2 (de) * 2002-08-12 2004-02-25 Acxiom Corporation System und Verfahren zur Verbindung von Daten unter Verwendung von kodierten Verweisen
EP2150915B1 (de) * 2007-05-30 2010-10-20 Pamci Networks Denmark APS Sicheres login-protokoll

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
J. Irwin, „Instruction Stream Mutation for Non-Deterministic Processors", Proceedings of the IEEE International Conference on Application-Specific Systems, Architectures, and Processors (ASAP’02) *

Similar Documents

Publication Publication Date Title
DE2937354A1 (de) Verfahren und einrichtung zur ueberwachung des gebrauchs eines programmierbaren rechners
EP2899714A1 (de) Gesichertes Bereitstellen eines Schlüssels
DE102012109615B4 (de) Verwendung eines Manifests zur Präsenzaufzeichnung von gültiger Software und Kalibrierung
EP2799983B1 (de) Flexible Aufteilung der I/O Kanäle einer Hardware Komponente
DE102014117971B4 (de) Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
EP2510475B1 (de) Hardware-einrichtung
EP2394232B1 (de) Vorrichtung und verfahren zum verhindern von unautorisierter verwendung und/oder manipulation von software
EP1636700A1 (de) Verfahren zum nachladen einer software in den bootsektor eines programmierbaren lesespeicher
DE102017204020A1 (de) Verfahren zur rechnergestützten Obfuskation von Programmcode
DE102015016059A1 (de) Verfahren zur Ausführung eines Programmcodes
DE102005046696B4 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
WO2016096139A1 (de) Verfahren zum bereitstellen einer sicherheitskritischen softwareapplikation auf einer computereinheit
EP3289685B1 (de) Verfahren und vorrichtung zur erzeugung einer geräte-spezifischen kennung und geräte umfassend einen personalisierten programmierbaren schaltungsbaustein
DE10131577A1 (de) Verfahren zum Schutz eines Mikrorechner-Systems gegen Manipulation seines Programms
WO2006050973A1 (de) Vorrichtung und verfahren zum detektieren einer manipulation eines informationssignals
EP2524333A1 (de) Verfahren zum bereitstellen eines sicheren zählers auf einem endgerät
EP3251281B1 (de) Intrinsische authentifizierung von programcode
DE102007059798B3 (de) Verfahren zur Verschlüsselung von ausführbarem Programmcode, insbesondere als Schutz gegen unautorisierte Vervielfältigung, Manipulation und unautorisierten Betrieb
DE102005056357A1 (de) Multithreading-fähige virtuelle Maschine
DE102017208199A1 (de) Recheneinheit und Betriebsverfahren für eine Recheneinheit
DE102018201571A1 (de) Verfahren zum Aktualisieren von Daten
WO2006063876A1 (de) Verfahren und vorrichtung zur verschlüsselung und ausführung einer software-bibliothek
DE102007041873A1 (de) Installieren eines Patch in einem Smartcard-Modul
DE102008044808B4 (de) Verfahren zur Generierung von Programmcode in einem Betriebssystemspeicher und einem Applikationsspeicher eines Datenträgers
DE102017202611A1 (de) Vorrichtung zur Bildung einer Prüfsumme und Betriebsverfahren hierfür

Legal Events

Date Code Title Description
R163 Identified publications notified
R081 Change of applicant/patentee

Owner name: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, DE

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

Owner name: BUILD38 GMBH, DE

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

R081 Change of applicant/patentee

Owner name: BUILD38 GMBH, DE

Free format text: FORMER OWNER: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, 81677 MUENCHEN, DE

R082 Change of representative

Representative=s name: SCHWAN SCHORER UND PARTNER PATENTANWAELTE MBB, DE

R012 Request for examination validly filed