DE10319435A1 - Verfahren zur Verarbeitung von Daten - Google Patents

Verfahren zur Verarbeitung von Daten Download PDF

Info

Publication number
DE10319435A1
DE10319435A1 DE10319435A DE10319435A DE10319435A1 DE 10319435 A1 DE10319435 A1 DE 10319435A1 DE 10319435 A DE10319435 A DE 10319435A DE 10319435 A DE10319435 A DE 10319435A DE 10319435 A1 DE10319435 A1 DE 10319435A1
Authority
DE
Germany
Prior art keywords
petri
data
composition
output
channels
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.)
Granted
Application number
DE10319435A
Other languages
English (en)
Other versions
DE10319435B4 (de
Inventor
Wulf Harder
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.)
WhiteCryption Corp
Original Assignee
Individual
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
Priority to DE10319435.5A priority Critical patent/DE10319435B4/de
Application filed by Individual filed Critical Individual
Priority to CA002525484A priority patent/CA2525484A1/en
Priority to RU2005135987/09A priority patent/RU2005135987A/ru
Priority to PCT/EP2004/003561 priority patent/WO2004097734A2/de
Priority to BRPI0409740-8A priority patent/BRPI0409740A/pt
Priority to US10/554,168 priority patent/US9275202B2/en
Priority to KR1020057020332A priority patent/KR20060017593A/ko
Priority to EP04725619A priority patent/EP1618519A2/de
Priority to CNA2004800112302A priority patent/CN1781117A/zh
Publication of DE10319435A1 publication Critical patent/DE10319435A1/de
Priority to US15/052,711 priority patent/US9721075B2/en
Priority to US15/638,084 priority patent/US9946854B2/en
Priority to US15/953,252 priority patent/US10534897B2/en
Application granted granted Critical
Publication of DE10319435B4 publication Critical patent/DE10319435B4/de
Priority to US16/714,489 priority patent/US11010455B2/en
Priority to US17/235,334 priority patent/US11809530B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to 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/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
    • 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/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

Ein Verfahren zur Verarbeitung von Daten, bei dem ein Petri-Netz kodiert, in einen Speicher geschrieben und aus dem Speicher von wenigstens einer Instanz gelesen und ausgeführt wird, wobei Transistoren des Petri-Netzes Symbole oder Symbolketten mit Hilfe wenigstens eines Kopfes von wenigstens einem Band lesen und/oder auf wenigstens einem Band schreiben (Fig. 1). In einer Alternative werden datenverarbeitende, kooperierende Netze komponiert, das Kompositionsergebnis kodiert, in einen Speicher geschrieben und aus dem Speicher von wenigstens einer Instanz gelesen und ausgeführt. Dabei können Komponenten kryptologische Aufgaben haben. Die datenverarbeitenden Netze können von einer geschützt ausgeführten kryptologischen Funktion zweite Daten empfangen. Die Erfindung ermöglicht die Verarbeitung von Daten, die eine Semantik-Analyse offengelegter, möglicherweise weniger Verarbeitungsschritte verhindert und eine schwer trennbare Verknüpfung der Verarbeitungsschritte mit einer Hardware herstellen kann.

Description

  • Die Erfindung bezieht sich auf ein Verfahren zur Verarbeitung von Daten.
  • TECHNISCHER HINTERGRUND
  • Software und Inhalte, wie beispielsweise Musik, können heute über das Internet kostengünstig verbreitet werden. Es wurde eine Vielzahl von Kopierschutzmechanismen zur Durchsetzung von Urheberinteressen entwickelt. Der Schutz von Inhalten ist schwierig, wenn der Konsument der Mensch ist, der die Inhalte in unverschlüsselter Form erwartet. Während des Konsumierens kann jeder Inhalt in analoger Form aufgezeichnet, digitalisiert und dann kopiert werden. Dieses Problem wird analogue hole genannt. Das illegale Kopieren von Inhalten kann nach heutigem Stand der Technik nur behindert, aber nicht verhindert werden. Das Problem des analogue hole gibt es nicht bei der Ausführung von Software. Zwar ist der Benutzer einer Software der Mensch; der direkte "Konsument" ist aber ein Computer oder ein Prozessor. Deshalb ist es möglich, die Software ohne störende Auswirkungen für den Benutzer durch Kopierschutzmechanismen zu verändern. Unter dem Begriff Softwareschutz soll der Schutz des intellektuellen Eigentums, das mit der Software verbunden ist, verstanden werden. Hierzu gehört das Wissen über das Anwendungsgebiet der Software, über spezifische Probleme dieses Gebiets und deren Lösungen, die in der Software umgesetzt werden. Auch alle Techniken zur Erstellung der Software, die problem- oder lösungsspezifisch sein können, gehören zum schätzenswerten intellektuellen Eigentum. Oft will ein Urheber sein Wissen schützen und sicherstellen, dass nur er die Software weiterentwickeln kann. Zum Schutz der genannten Werte ist es notwendig, eine Rekonstruktion (Reverse-Engineering) des Quellkodes oder eines äquivalenten Programmkodes mit Hilfe einer Analyse des Maschinenkodes. der Software zu verhindern oder sicherzustellen, dass der Aufwand der Analyse größer ist als die Entwicklung der Software. Softwareschutz kann die Verhinderung einer unauthorisierten Benutzung der Software einschließen. Für diesen Zweck geschaffene Schutzverfahren und -vorrichtungen nennt man Softwarekopierschutz, obwohl viele Verfahren und Vorrichtungen nicht das Kopieren verhindern, sondern die Benutzung der Software. Dadurch wird ein illegales Kopieren demotiviert.
  • STAND DER TECHNIK
  • Bei bekannten Softwarekopierschutzverfahren werden Daten aus der Applikation an eine geschützte Hardware übertragen, von der Hardware verschlüsselt und anschliessend von der Applikation entschlüsselt oder mit vor der Compilierung der Applikation verschlüsselten Daten verglichen. Nur bei korrekter Verschlüsselung der Daten durch die Hardware arbeitet die Applikation korrekt. Eine Methode zur Umgehung dieses Schutzes ist das Entfernen des Vergleiches der Daten aus dem Maschinenkode. Hierfür gibt es Gegenmassnahmen: Die Applikation überprüft sporadisch die Integrität des Maschinenkodes, so dass ein Angreifer auch diese Überprüfungen finden muss. Ein einfacherer Weg zur Umgehung des Softwarekopierschutzes ist daher folgender: Der Angreifer beobachtet die Kommunikation zwischen der Applikation und der Hardware. Er erstellt eine Tabelle mit den ausgetauschten Daten und simuliert die Hardware mit Hilfe dieser Tabelle in einem neu erstellten Hardware-Treiber. Eine Gegenmaßnahme ist die Implementierung vieler Kommunikationsvorgänge mit der Hardware. Dabei werden auch Zufallszahlen an die Hardware gesendet, so dass eine Tabelle zu groß werden würde. Die von der Hardware verschlüsselten Werte werden von der Applikation nur zum Schein verarbeitet. Entweder ist der Angreifer jetzt überzeugt, dass er die oben genannten Integritäts-Überprüfungen finden und entfernen muss, oder er beobachtet die Kommunikationsvorgänge. Er schreibt jeden an die Hardware gesendeten Wert in einen großen Speicher und prüft, welche Werte mehrfach gesendet werden. Nur diese Werte werden mit hoher Wahrscheinlichkeit von der Applikation wirklich verarbeitet. Die Hardware-Simulation benutzt dann eine Tabelle mit diesen Werten. Wird in der Simulation zu einer bestimmten Eingabe kein Eintrag in der. Tabelle gefunden, wird mit einer Zufallszahl geantwortet, denn die Applikation könnte die Streuung der Antworten auswerten und erkennen. Die Tabelle ist deutlich kleiner als der zuvor benutzte Speicher.
  • In dem in [4] beschriebenen Softwarekopierschutzverfahren wird in einem mit dem PC verbundenen Steckerbauteil und parallel dazu in der geschützten Applikation eine Kryptofunktion berechnet. Teilfunktionen dieser Kryptofunktion können in die Applikation an verschiedenen Stellen eingefügt werden, so dass eine Extraktion ohne eine Semantik-Analyse des Programmkodes nicht möglich ist. Mit Hilfe der Ausgabewerte der Kryptofunktion werden Berechnungen der Software verfälscht und kurz vor einer schädlichen Auswirkung auf den Ablauf der Applikation mit Hilfe der Ausgabewerte des Steckerbauteils korrigiert. Ohne das für einen Angreifer nicht reproduzierbare Steckerbauteil ist die geschützte Applikation nicht benutzbar. Das beschriebene Verfahren hat den Nachteil, dass die Integration der Teilfunktionen in die zu schützende Software sehr aufwendig ist.
  • Bei einem weiteren Softwarekopierschutzverfahren werden Teile des zu schüt zenden Programms in einem nicht auslesbaren Speicher einer Smartcard gehalten und von dem Smartcardcontroller ausgeführt. Die Übertragung dieser Teile erfolgt nur in verschlüsselter Form. Beispiele für solche Prozessoren sind Vorrichtungen in Form von USB-Geräten der Firmen Syncrosoft [12] und Sospita [11]. Die Verschlüsselung der Software bei diesem Verfahren verhindert auch ein Reverse-Engineering.
  • Ein Nachteil der Ausführung des Programmkodes in einem speziellen, möglicherweise extern an den PC angeschlossenen Prozessor liegt in dem schlechten Durchsatz. Zwar ist diese für die Ausführung von Digital-Right-Management-Transaktionen ausreichend, jedoch ist die Ausführung von wesentlichen Teilen einer zu schützenden Applikation in vielen Fällen zu langsam. Die Integration von Vorrichtungen zur Programmentschlüsselung und geschützten Ausführung in einen PC-Prozessor wäre sehr teuer und würde zu Standardisierungs- und Kompatibilitäts-Problemen bei der Entwicklung und Verbreitung neuer Prozessor-Versionen führen.
  • In [10] wird ein Verfahren gegen Reverse-Engineering von Software beschrieben, das logische Verbindungen zwischen elementaren Operationen des Programms und Datenflüssen durch Einführung komplexer Adressierungsmechanismen verschleiert. Ein Nachteil dieser Erfindung zeigt sich bei dem Versuch, Objekt-orientiert entwickelte Software zu schützen. Objekt-orientiert entwickelte Software enthält im allgemeinen sehr kurze Methoden, die aus wenigen Programminstruktionen bestehen und meist sehr einfache Datenflüsse mit einer kleinen Anzahl von Variablen realisieren. Wenigstens in diesem Fall ist das beschriebene Verfahren nicht wirkungsvoll. Weiter ist für dieses Verfahren keine Möglichkeit bekannt, die eine schwer trennbare Verknüpfung mit einer Hardware herstellt und somit das Kopieren der transformierten Software verhindert.
  • AUFGABE
  • Der vorliegenden Erfindung liegt die Aufgabe zugrunde, Verfahren zur Verarbeitung von Daten zu schaffen, die eine Semantik-Analyse offengelegter, möglicherweise weniger Verarbeitungsschritte erschwert oder verhindert und eine für einen Angreifer schwer trennbare Verknüpfung des Verarbeitungsverfahrens mit einer Hardware ermöglicht. Die Anwendung des Verfahrens auf vorgegebene Verarbeitungsschritte soll mit geringem Aufwand möglich sein.
  • LÖSUNG
  • Die Aufgabe wird durch die Ansprüche 1 und/oder 9 und/oder 20 gelöst.
  • Gemäss Anspruch 1 wird ein Petri-Netz kodiert, dessen Transitionen Symbole oder Symbolketten mit Hilfe eines oder mehrerer Köpfe mit wenigstens einem Band austauschen. Die Kodierung des Petri-Netzes wird in einen Speicher geschrieben und von wenigstens einer Instanz gelesen und ausgeführt. Petri-Netze und die Begriffe "Stelle", "Transition" und "Markierung" werden in [6] und [8] beschrieben. Die Begriffe "Kopf" und "Band" werden in Anlehnung an die Begriffe, die eine Turing-Maschine beschreiben, benutzt, wobei das Band aus technischen Gründen im Unterschied zum Modell der Turing-Maschine endlich ist. Turing-Maschinen werden beispielsweise in [5] beschrieben. Vorzugsweise wird bei jedem Lese- und Schreibvorgang der Kopf auf dem Band bewegt. Die Kopfbewegung kann aber auch steuerbar sein. Weiter ist das Vorhandensein von wenigstens zwei Köpfen für die Arbeitsgeschwindigkeit vorteilhaft, weil die meisten Operationen mit wenigstens zwei Operanden arbeiten. Ein Band kann ein Register eines Prozessors oder eine Speicherzelle eines RAMs sein. Ein Kopf kann ein Register mit einer Maske zur Maskierung von Werten des Bandes sein. Unter der Ausführung eines Petri-Netzes soll hier das Schalten von Transitionen des Petri-Netzes verstanden werden. Durch die Ausführung des Petri-Netzes, das auf Bändern arbeitet, werden Daten verarbeitet. Der Speicher und die ausführende Instanz bzw. die ausführenden Instanzen kann bzw. können auf viele Weisen gestaltet werden. Für den Erfindungsgedanken ist wichtig, dass die Semantik, die hinter dem Petri-Netz steht, auch bei Kenntnis des Petri-Netzes schwer analysierbar ist. Die Erzeugung und Kodierung des Petri-Netzes erfolgt vorzugsweise in einem anderen Speicher als die Ausführung. Die Kodierung des Petri-Netzes, der Köpfe, Bänder, Felder und Symbole ist in vielen Varianten möglich. Ein Angreifer, der Kenntnis über die Semantik des Petri-Netzes erlangen möchte, hat nur die Möglichkeit, das Petri-Netz mit den ihm bekannten Petri-Netzen zu vergleichen, oder die Semantik mit Hilfe von Ein- und Ausgabe-Beispielen zu erraten. Nach Anspruch 20 kann das Petri-Netz Symbole oder Symbolketten von einer kryptologischen Funktion empfangen und verarbeiten. Die kryptologische Funktion kann mit der das Petri-Netz ausführenden Vorrichtung fest verbunden sein, so dass eine für einen Angreifer schwer trennbare Verknüpfung des Verarbeitungsverfahrens mit einer Hardware hergestellt ist.
  • In einer Ausgestaltung der Erfindung bildet das Petri-Netz, der Kopf oder die Köpfe und das Band oder die Bänder eine universelle Turing-Maschine. Ein Petri-Netz kann die endliche Kontrolle der Turing-Maschine bilden. Auf dem Band der universellen Turing-Maschine ist die Kodierung einer Turing-Maschine oder einer universellen Turing-Maschine gespeichert. Im letzten Fall kann wiederum eine Turing-Maschine oder eine universelle Turing-Maschine auf dem Band der zuletzt genannten universellen Turing-Maschine gespeichert sein usw. Diese Rekursion kann weitergeführt werden. Eine Semantik-Analyse der Verarbeitungsschritte bei der Ausführung des Petri-Netzes wird mit jeder Rekursion zunehmend erschwert.
  • In einer weiteren Ausgestaltung des Verfahrens tauscht das Petri-Netz mit einem bzw. mehreren weiteren Petri-Netzen über Kanäle Symbole oder Symbolketten aus. Hiermit lässt sich die Komplexität erhöhen und damit die Analysierbarkeit erschweren.
  • Das Schalten von Transitionen kann gemäss einer weiteren Ausgestaltung der Erfindung mit Hilfe von Tabellen schnell ausgeführt werden. In Analogie zu beispielsweise in [2] beschriebenen sequentiellen Maschinen kann aufgrund einer Markierung bzw. eines Zustands und einer Eingabe eine Folgemarkierung bzw. ein Folgezustand und eine Ausgabe aus einer Tabelle schnell ermittelt werden. Die Eingaben bzw. Ausgaben können auch optional erfolgen.
  • Eine Geschwindigkeitssteigerung beim Schalten der Transitionen lässt sich durch ein Verfahren erzielen, bei der ein Prozessor das Schalten einer Transition mit einer Instruktion ausführt, wobei eine Instruktion die Tabellen als Operand einliest. Der Instruktionssatz eines Prozessors kann mehrere solche Instruktionen enthalten.
  • Die Ausgaben eines Petri-Netzes können in ein weiteres Petri-Netz eingegeben und weiter verarbeitet werden. Ein aus mehreren Petri-Netzen bestehende System ist eine Kooperation. In einer weiteren Ausgestaltung der Erfindung bildet eine Kooperation von Petri-Netzen eine Turing-Maschine. Die Felder, Bänder und die endliche Kontrolle der Turing-Maschine werden als Petri-Netze kodiert, die über Kanäle Symbole oder Symbolketten austauschen und sich synchronisieren können.
  • Vorteilhaft für den Schutz von Software ist die Übersetzung dieser Software in ein Petri-Netz oder eine Kooperation von Petri-Netzen bzw. in eine Turing-Maschine. Dieser Übersetzungsvorgang könnte durch einen speziellen Compiler maschinell ausgeführt werden.
  • Die Ausführung einer Kooperation von Petri-Netzen kann in einer Ausgestaltung des Verfahrens durch die Ausführung einer Kompositionsvorschrift erfolgen. Dabei wird ein Petri-Netz erzeugt, das das gleiche äussere Ein-/Ausgabeverhalten zeigt, wie die Kooperation der Petri-Netze, mit der Einschränkung, dass Ausgaben verzögert erfolgen können. Hierdurch wird die gewünschte Funktionalität des erzeugten Petri-Netzes nicht unbedingt beeinträchtigt.
  • Eine alternative Lösung der der Erfindung zugrunde liegenden Aufgabe sieht gemäss Anspruch 9 vor, dass datenverarbeitende, kooperierende Netze komponiert werden, das Kompositionsergebnis kodiert, in einen Speicher geschrieben und aus dem Speicher von wenigstens einer Instanz gelesen und ausgeführt wird, wobei das Kompositionsergebnis ein zu seinen Komponenten bezüglich des äusseren Ein-/Ausgabeverhaltens, ausgenommen Ausgabe-Verzögerungen, äquivalentes Netz ist. Hiervon ausgenommen wird ein Public Key Verschlüsselungsverfahren von [1] und [3], bei dem die Kompositionsergebnis einer Komposition endlicher Automaten einen Public Key bilden. Bei der vorliegenden Erfindung geht es um die allgemeine Verarbeitung von Daten unter Berücksichtigung der der Erfindung zugrunde liegenden Aufgabe. Die Aufgabe wird gelöst, weil eine Semantik-Analyse eines Kompositionsergebnisses ohne Kenntnis der Komponenten schwierig ist. Eine Dekomposition ist in vielen Fällen ein hartes resp. np-hartes Problem.
  • Das Kennzeichen des Anpruchs 9 schränkt nicht ein, welche Art von datenverarbeitenden, kooperierenden Netzen komponiert werden. Es ist bekannt, dass viele Netze einer Art sich durch Netze einer anderen Art simulieren lassen bzw. zueinander äquivalent sind. Beispielweise wurde in [7] und in [9] gezeigt, dass rekursive McCulloch-Pitts-Netze, eine spezielle Form künstlicher neuronaler Netze, zu endlichen Automaten äquivalent sind. Endliche Automaten lassen sich wiederum durch B/E-Netze beschreiben. B/E-Netze sind spezielle Petri-Netze. Eine Beschreibung der Komposition hängt naturgemäss von der formalen Definition der Netze ab, und es lassen sich unabhängig von dieser Definition inhaltlich viele verschiedene Varianten der Komposition definieren. Anspruch 9 beinhaltet auch Varianten von Kompositionen, die dem gleichen Erfindungsgedanken zugrunde liegen.
  • Die Komponenten und das Kompositionsergebnis können Petri-Netze sein, die Symbole oder Symbolketten über wahlweise vorhandene Kanäle senden und empfangen. In einer Ausgestaltung der Erfindung bildet jede Komponente eine sequentielle Maschine mit wahlweise mehreren Eingabekanälen und wahlweise mehreren Ausgabekanälen. Seien C eine aufzählbare Menge von Kanälen, Δ eine endliche Menge von endlichen Alphabeten, γ : C → Δ, Ω = (C,Δ,γ) eine Kommunikationsregel, EΩ = {e|e = {(c,σ)|σ ∈ γ(c) ∧ ((c,σ1) ∈ e ∧ (c,σ2) ∈ e ⇒ σ1 = σ2)}} ∪ {∅}eine Menge von Ein-/Ausgabe-Ereignissen und S eine endliche Menge von Zuständen. Ein System von sequentiellen Maschinen wird definiert als MΩ := {(S,EΩ,δ,β,s0)|δ : R → S ∧ β : R → EΩ ∧ R ⊂ S×EΩ ∧ (∀[(s,x),y) ∈ β∀(cxx) ∈ x ∀(cyy) ∈ y : cx ≠ cy) ∧ s0 ∈ S}.
  • In die Kompositionsfunktion geht als Parameter eine Menge von Synchronisationskanälen ein. Die Transitionen der zu komponierenden Maschinen schalten abhängig von einem imaginären globalen Takt und es gibt keine Nebenläufigkeit. Ein "Rendezvous" zwischen Sender und Empfänger von Symbolen soll möglich sein, was voraussetzt, dass die Komponenten aufeinander warten können. Realisiert wird dies durch das Schalten einer "leeren Transition" der wartenden Maschine. Die leere Transition liest nichts und schreibt nichts. Solche Transitionen gibt es bei nichtdeterministischen Automaten mit λ-Bewegungen [5]. Die λ-Bewegungen werden hier ε-Bewegungen genannt. Bei den zu komponierenden nichtdeterministischen sequentiellen Maschinen als B/E-Netze gibt es mehrere mögliche Schaltfolgen oder serielle Prozesse [6]. Jede mögliche Schaltfolge entspricht einer komponierten sequentiellen Maschine. Die Kompositionsfunktion ist eine Abbildung in einer Potenzmenge von sequentiellen Maschinen. Sei Ω = (C,Δ,γ) eine Kommunikationsregel und B mit B ⊆ C eine Menge von internen Synchronisationskanälen. Die Komposition compB : M n / Ώ → 2 wird definiert als
    Figure 00070001
    Figure 00080001
  • Bei der Komposition nach dieser Definition gibt es zwei Arten von Kanälen: Die Menge der Kanäle A, in der jeder Kanal nur von einer Maschine genutzt werden und eine Menge von Synchronisations-Kanälen B -, in der jeder Kanal von wenigstens zwei Maschinen genutzt wird. Die Menge der Synchronisationskanäle B - ist bei der Komposition in interne und externe Synchronisationskanäle zu unterteilen. B ⊆ B - ist die Menge der Synchronisationskanäle, die nicht mehr in der komponierten Maschine genutzt werden. In vielen Anwendungen. ist B = B -. Ein wesentlicher Unterschied zwischen internen und externen Synchronisationskanälen ist, dass eine Transition mit einem internen Synchronisationskanal nur schalten kann, wenn mit einer synchronisierten Transition über diesen Kanal ein Symbol ausgetauscht wird. Bei einem externen Synchronisationskanal ist die Bedingung nicht so scharf: Die Ein- oder Ausgabe auf dem Kanal darf nicht inkompatibel mit einer synchronisierten Transition sein. Die synchronisierte Transition muss demnach auch nicht mit dem Kanal arbeiten. Über einen externen Synchronisationskanal können mit der Aussenwelt Symbole ausgetauscht werden. Sollen Transitionen mit einem externen Synchronisationskanal intern synchronisiert werden, müssen zusätzliche interne Synchronisationskanäle eingerichtet werden. Ein möglicher rekursiver Kompositionsalgorithmus arbeitet folgendermassen: Eine Kompositionsroutine wird mit den Startzuständen der zu komponierenden Maschinen aufgerufen. In dieser Routine wird die geordnete Menge der Startzustände als komponierter Zustand in eine Liste von komponierten Zuständen eingetragen. Dann wird eine Menge von kompatiblen Transitionen (je Komponente eine Transition) gesucht, die jeweils den Startzustand als Eingabestelle haben. Transitionen sind kompatibel, wenn alle diesen Transitionen zugeordneten Ereignismengen paarweise kompatibel sind und jedes Symbol, das von einer Maschine auf einem internen Synchronisationskanal geschrieben bzw. gelesen wird von einer anderen Maschine gelesen bzw. geschrieben wird. Zwei Ereignismengen sind kompatibel, wenn alle Ereignisse paarweise kompatibel sind oder wenigstens eine Menge leer ist. Die leere Ereignismenge ist zu jeder anderen Ereignismenge kompatibel. Zwei Ereignisse eines internen bzw. externen Synchronisationskanals sind kompatibel, wenn sie entweder verschiedene Kanäle betreffen oder das gleiche Symbol von der einen Maschine gelesen und von der anderen Maschine geschrieben bzw. von beiden Maschinen gelesen oder geschrieben wird. Es ist z.B. ausgeschlossen, dass zwei Maschinen verschiedene Symbole auf einem Kanal gleichzeitig schreiben. Für jede gefundene Menge von kompatiblen Transitionen wird die geordnete Menge der Ausgangsstellen der Transitionen als komponierter Zustand in die Liste der komponierten Zustände eingetragen und als Startzustände in einen rekursiven Aufruf der Kompositionroutine eingegeben, wenn der komponierte Zustand noch nicht in der Liste enthalten war. Falls der komponierte Zustand bereits in der Liste war, wird die Kompositionsroutine beendet. Der Algorithmus endet, wenn keine neuen komponierbaren Zustände mehr gefunden werden.
  • Die Information über die Nebenläufigkeit geht bei der Komposition comp verloren. Um Nebenläufigkeit zu berücksichtigen, muss die Kompositionsregel modifiziert werden. Bei der Komposition werden dann nur Transitionen mit Synchronisationskanälen zu einer Transition zusammengefasst.
  • Kompositionsergebnisse haben oft äquivalente Zustände. Wenn die Produkte Kompositionsergebnisse in weiteren Kompositionen weiterverarbeitet werden, sind solche Redundanzen unerwünscht. Daher ist man bestrebt; äquivalente Maschinen mit einer minimalen Anzahl von Zuständen zu finden. Die Abbildung der Minimierung wird im folgenden durch eine Funktion min : MΩ → MΩ bezeichnet.
  • Nach einer Komposition entstehen oft unerwünschte Transitionen mit leeren Ereignismengen. Diese Transitionen können durch eine stellenberandete Vergröberung (Erklärung des Begriffs in [6]) ersetzt werden, wobei die Ränder die Eingangs- und Ausgangsstelle der Transition sind. Dies wird so oft wiederholt, bis es. keine leeren Transitionen in der Maschine mehr gibt. Diese Abbildung wird im folgenden durch eine Funktion red : MΩ → MΩ bezeichnet.
  • Der Kontrollfluss und die Struktur einer Turing-Maschine kann verschleiert wer- den, indem einige Bestandteile der Turing-Maschine komponiert werden. Beispielsweise könnte man Gruppen von beliebigen Feldern verschiedener Bänder komponieren. Felder von Bändern können auch mit dem Programm oder Leseköpfen komponiert werden. Weitere Kombinationen auch mit weiteren Komponenten, die nicht Bestandteil der Turing-Maschine sind, sind denkbar.
  • In einer weiteren Ausgestaltung des Verfahrens werden zu komponierende, datenverarbeitende Netze durch eine Übersetzung von Algorithmen gebildet. Hierdurch wird eine Dekomposition und Analyse von Algorithmen erschwert oder verhindert.
  • In einer weiteren Ausgestaltung des Verfahrens ist wenigsten ein der zu komponierende, datenverarbeitende Netze eine kryptologische Komponente. Wenn diese Komponente zufällig erzeugt und geheim gehalten wird, ist eine Dekomposition des Kompositionsergebnis wesentlich erschwert oder unmöglich, insbesondere, wenn mehrere Komponenten kryptologische Komponenten mit verschiedenen Aufgaben sind. Dieses Verfahren ist geeignet, um Folgen von Operationen zu verschlüsseln. Eine Operation liest die Operanden und schreibt ein Ergebnis. Ein Angreifer, der Kenntnis über die Operation erlangen möchte, hat die Möglichkeit, das Netz, das die Operation repräsentiert, mit ihm bekannten Netze zu vergleichen oder er versucht, mit Hilfe von Ein- und Ausgabe-Beispielen ein Modell der Operation zu bilden, so dass die Operation und das Modell ein äquivalentes Ein-/Ausgabe-Verhalten zeigen. Beides wird verhindert, wenn die Werte verschlüsselt sind und verschlüsselt verarbeitet werden. Dies ist möglich, indem die Netze zur Entschlüsselung der Operanden mit dem Netz der Operation und einem Netz zur Verschlüsselung des Ergebnisses komponiert werden. Es müssen, Werte mit der Außenwelt unverschlüsselt ausgetauscht werden können. Eingaben werden dann nicht entschlüsselt. Analog werden Ausgaben nicht verschlüsselt. Werden Petri-Netze benutzt und wird für die Ent- und Verschlüsselung ein Stromverschlüsselungsverfahren benutzt, das die Eingabe-Symbolketten nur in einer Richtung verarbeitet und mit jeder Transition ein Symbol einliest und ein Symbol schreibt, benötigt die Verschlüsselung keine zusätzliche Zeit, weil jede Transition des Kompositionsergebnisses eine Zusammenfassung von Transitionen der Komponenten ist. Die obere Schranke für die Anzahl der Zustände des Kompositionsergebnisses ist das Produkt aus der Anzahl der Zustän de jeder Komponente. Jede Ausgabe einer verschlüsselten Operation sollte eine individuelle Verschlüsselung besitzen, damit ein Angreifer nicht durch Probieren verschiedener Konkatenationen von Operationen auf die Funktionalität der Operationen schließen kann.
  • In weiteren Ausgestaltung des Verfahrens können Komponenten Daten dekomprimieren und/oder Wasserzeichen in die Daten einfügen. Ein Wasserzeichen ist ein Identifizierungsmerkmal oder ein Zertifikat, das Daten hinzugefügt wird, ohne dass die Nutzung dieser Daten behindert wird. Dieses Verfahren ist bei der Distribution von Daten, wie beispielsweise Audio- und/oder Videodaten, an viele Endverbraucher geeignet. Die Wasserzeichen können beim Endverbraucher bei der Entschlüsselung der Daten in die Daten eingefügt werden. Vorzugsweise ist die Entschlüsselung und das Wasserzeichen endverbraucher-individuell. Dabei muss die zuvor gemachte Verschlüsselung nicht zwangsläufig endverbraucher-individuell sein. Die Entschlüsselung kann an eine durch eine spezielle Hardware geschützte kryptologische Funktion, deren Funktionswerte endverbraucher-individuell sind, gekoppelt werden.
  • In einer weiteren Ausgestaltung des Verfahrens können Register in einer Registerbank zusammengefasst werden und dadurch miteinander verschränkt werden. Mit Verschränkung ist gemeint, dass ein Angreifer nicht einen Registerwert ändern kann, ohne den Wert eines anderen Registers der Bank zu ändern. Es lässt sich die Integrität der Registerinhalte für einen Zeitraum sicherstellen, in dem wenigstens ein für den korrekten Ablauf des Programms wesentlicher Wert in einem Register, der Bank gespeichert ist. Ein wichtiger Baustein einer Schreiboperation ist eine Maschine, die im folgenden Kombinierer genannt wird. Ein Kombinierer bildet mehrere Datenströme verschiedener Kanäle, die jeweils einem Register der Registerbank zugeordnet sind, auf einen Datenstrom eines Kanals umkehrbar ab. Das Produkt der Beträge der Symbolmengen der. eingehenden Datenströme ist eine obere Schranke für den Betrag der Symbolmenge der Ausgabe des Kombinierers. Es ist möglich, dass nicht alle Kombinationen von Symbolen auf den Eingabekanälen vorkommen. Der von einem Kombinierer erzeugte Datenstrom wird verschlüsselt. Dies ist günstiger, als die in den Kombinierer eingehenden Datenströme zu verschlüsseln, weil die Symbolmenge der Ausgabe des Kombinierers grösser als die Symbolmengen der Komponenten ist. Eine Stromverschlüsselung mit einer grösseren Symbolmenge ist effizienter als mit einer kleineren Symbolmenge. Zum Extrahieren der Daten eines Registers aus dem Datenstrom eines Kombinierers, wird der Datenstrom zunächst entschlüsselt. Dann können nach Anwendung des Separators die Daten einzelner Register gelesen werden. Neben der Verschränkung von Registern hat das Speichern von Daten in einer Registerbank den Vorteil, dass Datenflüsse verborgen werden können. Es können nacheinander viele Operationen auf einer Registerbank arbeiten, ohne dass Zwischenresultate die Registerbank verlassen. Zur Verschleierung des Zustands einer Registerbank kann eine Pseudozufallszahl in ein Register geschrieben werden, die bei jedem lesenden und schreibenden Zugriff auf die Registerbank geändert wird. Der Pseudozufallszahlen-Generator ist dann eine Komponente der Registerbank. In diesen Generator können sich verändernde Daten aus Registern, die nicht in der Registerbank liegen, eingegeben werden.
  • In einer weiteren Ausgestaltung des Verfahrens empfängt eine kryptologische Komponente von einer geschützt ausgeführten Funktion Daten und verarbeitet diese, wobei das Kompositionsergebnis nicht oder fehlerhaft arbeitet, wenn von der kryptologischen Funktion keine oder fehlerhafte Daten empfangen werden. Hierdurch wird eine schwer oder nicht trennbare Kopplung des Kompositionsergebnisses mit der kryptologischen Funktion erreicht, was beispielsweise dafür geeignet ist, eine unauthorisierte Benutzung von Software zu verhindern, wenn das Kompositionsergebnis von der Software benötigt wird und das Ausführen der kryptologischen Funktion nicht frei reproduzierbar ist. Ein weiteres Verfahren sieht vor, dass ein weiteres in der Funktionalität eingeschränktes Kompositionergebnis die kryptologische Komponente nicht enthält und keine Daten von der kryptologischen Funktion empfangen braucht, um die fehlerfreie Funktionsweise zu gewährleisten. Dieses Verfahren eignet sich für die Distribution von Demonstrations-Versionen von Software, die frei kopiert und verteilt werden können. Das Kompositionergebnis muss in der Funktionalität eingeschränkt sein, damit ein Angreifer in der Vollversion der Software nicht das mit der kryptologischen Funktion gekoppelte Kompositionsergebnis durch das in der Demonstrations-Version benutzte Kompositionsergebnis ersetzt und so eine Vollversion ohne Einschränkungen herstellt.
  • Mit Hilfe eines alternativen Verfahrens wird erreicht, dass die Ausführung eines datenverarbeitendes Netz bzw. eines Programms an die ausführende Vorrichtung gekoppelt wird. Eine geschützt ausgeführte kryptologische Funktion, beispielsweise eine Funktion des TPM-Chips der Trusted Computing Platform Alliance (TCPA) [13], die mit der Vorrichtung, beispielsweise einem PC oder einem PDA, fest verbunden ist, tauscht Daten mit dem Netz bzw. dem Pro gramm aus. Das datenverarbeitende Netz bzw. das Programm arbeitet nicht oder fehlerhaft, wenn von der kryptologischen Funktion keine oder fehlerhafte Daten empfangen werden. In einer Ausgestaltung des Verfahrens wird ein Wert über die Berechnung eines Funktionswertes der kryptologischen Funktion hinaus für einen Angreifer nicht lesbar oder veränderbar gespeichert wird und bei einer weiteren Berechnung eines weiteren Funktionswertes beeinflusst dieser Wert das Ergebnis der weiteren Berechnung, wobei dieser Wert sich nach einer vorgegebenen Regel verändert. Hierdurch wird verhindert, dass mehrere Netz- bzw. Programm-Instanzen unkontrollierbar Funktionswerte der kryptologischen Funktion benutzen können.
  • BEISPIELE
  • In 1 hat eine ausführende Instanz Zugriff auf einen Speicher, der ein Petri-Netz und die Bänder x und y speichert. Die Anfangsmarkierung hat eine Marke auf einer Stelle, dem Startzustand so. Mit jedem Schalten einer Transition wird die Marke von der Eingangsstelle zur Ausgangsstelle bewegt, mit Hilfe eines Kopfes ein Symbol des Eingabealphabets vom Band x gelesen und mit Hilfe eines weiteren Kopfes ein Symbol des Ausgabealphabets auf Band y geschrieben. Nach jedem Lese- und Schreibvorgang bewegen sich die Köpfe ein Feld nach rechts. Das Netz führt eine binäre Multiplikation [y = 2x] aus.
  • In allen folgenden Figuren wird auf die Darstellung der ausführenden Instanz, des Speichers, der Köpfe und der Bänder verzichtet. Anstatt des Begriffs "Petri-Netz" wird der Begriff "Netz" benutzt.
  • 2 zeigt eine binäre Addition. Eine Marke liegt auf dem Startzustand so. Die Transitionen tragen die Beschriftung der Form ab/c. Die Ein- und Ausgabekanäle werden in der Eingangsstelle jeder Transition in gleicher Form genannt. a und b sind die Kanäle für Operanden, c ist der Kanal für das Ergebnis. Transitionen, die die gleiche Eingangsstelle und die gleiche Ausgangsstelle haben, aber unterschiedliche Ein- oder Ausgaben, werden in dieser und vielen weiteren Darstellungen durch ein Rechteck dargestellt. Jede Zeile eines Rechtecks entspricht einer Transition.
  • Es gibt Fälle, in denen mehrere Ergebnisse einer Verarbeitung parallel berechnet und ausgegeben werden sollen. 3 zeigt ein Netz, das neben mehreren Eingabekanälen auch mehrere Ausgabekanäle besitzt und zwei binäre dargestellte, natürliche Zahlen addiert: [c = a + b, d = a – b].
  • Weitere Beispiele von Netzen sind in 4 und 5 dargestellt. Das Netz in 4 berechnet [t = 3·a, d = a – b, s = a + b], das Netz in 5 [s = a + b + c].
  • 6 zeigt die Komposition von zwei Netzen M und M'. Die Ein- und Ausgabe-Ereignisse werden in den Transitionen durch Mengen wie in Anspruch 11 beschrieben. M schreibt mit Transition t4 über den Kanal b das Symbol σ, das M' über den gleichen Kanal mit Transition t'3 liest. b ist ein interner Synchronisationskanal. t4 und t'3 sind die einzigen Transitionen, die auf Kanal b arbeiten und können daher nur synchron schalten. Es gibt die Kompositionsergebnisse K1, K2 und K3. Von den Stellen s0 und s'1 führen keine kompatiblen Transitionen weiter. Die beschriebene Kompositionsroutine endet daher nach dem Eintragen des Zustandes (s0, s'1) in die Liste der komponierten Zustände.
  • 7 zeigt die Komposition der gleichen Netze, bei der nur Transitionen mit Synchronisationskanälen zu einer Transition zusammengefasst werden, um die Information über die Nebenläufigkeit zu erhalten.
  • Will man in einer Maschine M einen Ausgabekanal a durch einen Kanal b bzw. einen Eingabekanal b durch einen Kanal a ersetzten, komponiert man M mit der in 8 dargestellten Maschine, wobei a bzw. b ein interner Synchronisationskanal ist. {σ1, ...., σm} ist die den Kanälen a und b zugeordnete Symbolmenge.
  • 9 zeigt, dass auch das Konkatenieren von Netzen durch eine Komposition ausgeführt werden kann. Transitionen mit leeren Ereignismengen ("leere Transitionen"), deren Eingangsstelle gleich der Ausgangsstelle ist, werden im folgenden Wartetransitionen genannt und in 9 durch leere Rechtecke dargestellt. M schreibt auf Kanal a eine 1 und dann auf Kanal b eine 2. M' schreibt auf Kanal c eine 3 und dann auf Kanal d eine 4. M bzw. M' haben außerdem einen Kanal k zum Konkatenieren und Wartetransitionen t3 bzw. t'1. In Transition t2 von M wird auf Kanal k das Symbol κ geschrieben. Transition t2 von M' liest auf Kanal k das Symbol κ. Komponiert man M und M' mit k als internen Synchronisationskanal, so erhält man die Maschine K, die nacheinander auf Kanal a, b, c bzw. d eine 1, 2, 3 bzw. 4 schreibt. Wenn Maschinen konkatenierbar sein sollen, müssen die Umgebungen der Anfangs- und Endzustände entsprechend präpariert werden. Verschiedenen Transitionen können Kanäle zum Konkatenieren zugeordnet werden. Durch geeignete Substitutionen von Kanälen lassen sich die Konkatenationen beeinflussen.
  • In 10 wird die natürliche Zahl 2 durch eine Maschine repräsentiert, die die binäre Symbolkette 010 auf Kanal a ausgibt. Dies entspricht der Gleichung a = 2. Eine Maschine zur Addition c = a + b liest auf Kanal a und b und schreibt auf Kanal c. Beide Maschinen werden über den internen Synchronisationskanal a komponiert. 11 stellt das Ergebnis dar. [c = b + 2 mod 8] = comp{a}([[c = a + b], [a = 2])
  • Weil der Kompositionsalgorithmus im Endzustand von a = 2 keine Transition mehr findet, bricht er ab. Das Kompositionsergebnis kann nur Symbolketten der Länge 3 ausgeben, ausgedrückt durch mod 8. Komponiert man c = b + 2 mod 8 über den internen Synchronisationskanal b mit der Maschine b = 3 aus 12 so erhält man die Maschine c = 5, ebenfalls in 12 dargestellt. [c = 5] = comp{b}([c = b + 2 mod 8], [b = 3])
  • 13 stellt den gesamten Vorgang dar. Das Ergebnis der Kompositionen c = 5 erhält man ohne das Zwischenergebnis c = b + 2 mod 8, indem man alle Komponenten in einem Schritt komponiert. [c = 5] = comp{a,b}([c = a + b], [a = 2], [b = 3])
  • Die Maschine c = a + b kann unendlich lange Symbolketten verarbeiten. Das Kompositionsergebnis nach Komposition mit einem Operanden kann dies auch, wenn der Operand durch eine zyklische Transition, die Nullen ausgibt, abgeschlossen wird. In 14 wird a = 2 binär mit führenden Nullen dargestellt. Das Kompositionsergebnis nach Komposition mit c = a + b kann unendlich lange Symbolketten verarbeiten, ebenfalls in 14 dargestellt. [c = b + ∞010] = comp{a}([c = a + b], [a = ∞010])
  • In einem weiteren Beispiel soll die Gleichung a = 2a + c vereinfacht werden. Damit sie verarbeitet werden kann, wird sie als Netz kodiert. Dazu wird zunächst die Gleichung d = 2a + c gebildet und anschliessend d durch a substituiert. 15 stellt den ersten Schritt dar. Wird d nun durch n substituiert, so sind alle Transitionen ungültig, in denen vor der Substitution die. den Kanälen a und d zugeordneten Symbole ungleich waren. Die ungültigen Transitionen und eine nicht mehr erreichbare Stelle s3 sind in 15 grau unterlegt. Nach der Substitution ist der Kanal a zu entfernen, weil in einer Transition nicht gleichzeitig auf einem Kanal gelesen und geschrieben werden kann. Damit nach dem Entfernen die Information des Kanals a nicht verloren ist, wurde die Kopie a' = a angelegt. 16 stellt auf der Eingangsstelle der Transition min das Ergebnis dieser Schritte dar. Man kann zeigen, dass s1 und s2 äquivalent sind. Nach der Minimierung durch min ist das Ergebnis die Gleichung a = –c. Dies kann, wie in 17 dargestellt, verifiziert werden. Wird bei einer binär arbeitenden sequentiellen Maschine a = e + f der Übertragszustand als Startzustand definiert, erhält man die Maschine resp. das Netz a = e + f + 1. Dann wird e durch das Eins-Komplement von c ersetzt, so dass a = –c + f. Nach f = 0 ist a = –c. Im folgenden werden Matrizen natürlicher Zahlen als Netz kodiert und durch Komposition addiert. Das Netz aus 18 entspricht einer Funktion von {1, 2}2 auf {0,1, 2, 3}, die die Zeile i und die Spalte j der Matrix
    Figure 00160001
    liefert, wobei die Funktionswerte {0, 1, 2, 3} binär als {∞0, ∞01, ∞010, ∞011} kodiert sind. Das Netz liest zunächst den Zeilen- und Spaltenindex und gibt dann das entsprechende Matrix-Element aus. Die Bezeichnung der Kanäle zum Einlesen der Indizes spielt bei der Komposition mit anderen Netzen eine Rolle. Deshalb werden im folgenden in Abweichung zu üblichen Matrix-Schreibweisen die Indizes dem Matrix-Bezeichner hinzugefügt: Aij. Die Komposition ergibt
    Figure 00160002
    was in 19 dargestellt ist. Wartetransitionen werden durch die Zeichenfolge '//' in der Eingangsstelle (Ausgangsstelle) symbolisiert. Der Startzustand von c = a + b hat eine Wartetransition. Die Kanäle i und j werden zu externen Synchronisationskanälen. Sie bleiben im Kompositionsergebnis erhalten, während die internen Synchronistionskanäle a und b nicht erhalten bleiben. c ist kein Synchronisationskanal.
  • 20 zeigt die Kanalstruktur einer Turing-Maschine, die durch eine Kooperation von Netzen gebildet wird. Die Transitionen entsprechen den beteiligten Kooperationspartnern, die Stellen entsprechen den Kanälen. Eine endliche Kontrolle, als Netz realisiert, liest über Kanal x bzw. schreibt über Kanal y Symbole auf ein Band. Die endliche Kontrolle gibt bei jedem Lese- und Schreibvorgang über den Kanal I Bewegungs-Anweisungen an den Kopf. Ein Kopf H mit Feldern Fi kommuniziert über die Kanäle zi. 21 zeigt ein Band mit Feldern zum Speichern der Symbole 0, 1 und τ. Alle Felder speichern am Anfang das Symbol τ. In 22 ist eine Initialisierung Init01 des Bandes mit der Symbolkette τ01τ dargestellt. Ein Punkt anstelle eines Symbols in einer Transition bedeutet, dass jedes erlaubte Symbol hier eingesetzt werden darf. Das Transitionsrechteck mit der Beschriftung "./Rτ" und der Eingangsstelle mit der Beschriftung "x/Iy" ist die Kurzschreibweise für drei Transitionen mit gleicher Ein- und Ausgangsstelle mit den folgenden Eingabe-/Ausgabe-Ereignismengen: 1. Transition: {(x,0)}/{(I,R), (y,τ)}, 2. Transition: {(x,1)}/{(I,R), (y,τ)}, 3. Transition: {(x,τ)}/{(I,R), (y,τ)}. Komponiert man die Initialisierung Init01 mit dem Kopf H und vier Bandfeldern F1, ..., F4, wobei die internen Synchronisationskanäle x, y, I, x1... z4 sind, so gibt es im ersten Kompositionsschritt von den Startzuständen aller Komponenten ausgehend nur eine Menge kompatibler Transitionen, wie in Tab. 1 dargestellt:
    Figure 00170001
    Tab. 1 Kompatible Transitionen
  • Die Komponenten bilden einen geschlossenen Kreislauf von Symbol-Produzenten und -Konsumenten. Nach der Komposition ist der Kopf auf Feld F3, das eine Eins speichert, positioniert. Eine endliche Kontrolle P1 zur Erkennung der Sprache L = {0n1n|n ≥ 1} ist in 23 dargestellt. Es wird vorausgesetzt, dass das zu erkennende Wort mit einem vorgehenden und nachfolgenden τ linksbündig auf dem Band steht und der Kopf auf ein Feld links neben dem rechten τ positioniert ist. Angenommen, das Wort gehört zur Sprache L, dann gibt es folgenden Ablauf (ähnlich wie in [5]): Die am weitesten rechts stehende Eins wird durch τ ersetzt. Dann bewegt sich der Kopf nach links bis zum nächsten τ, dann ein Feld nach rechts. Die am weitesten links stehende Null ist hier gespeichert und wird durch τ ersetzt. Dann wird die am weitesten rechts stehende Eins, dann die am weitesten links stehende Null durch τ ersetzt usw. Wenn eine Null durch τ ersetzt wurde, und rechts daneben ein τ gefunden wird, akzeptiert die Maschine das Wort. Das Akzeptieren wird der Außenwelt durch das Schreiben einer Eins auf dem Kanal Λ mitgeteilt. Findet die Maschine auf der Suche nach einer Null bzw. einer Eins eine Eins bzw. Null oder ein τ, wird das Wort nicht akzeptiert und eine Null auf Kanal Λ ausgegeben. Der Benutzer (in diesem Fall die endliche Kontrolle) des Bandes benötigt keine Kenntnis über die Struktur des Bandes. Das Band und die Felder könnten z.B. auch in einer Maschine komponiert sein.
  • Der Benutzer benötigt nur Kenntnis über die Schnittstelle des Bandes die Bedeutung der Ein- und Ausgabekanäle. Ein Benutzer der endlichen Kontrolle zur Erkennung der Sprache muß wissen, wie das zu prüfende Wort auf das Band zu schreiben ist. Dazu gehört das Wissen über die Bedeutung des Kanals I und die Konvention, ein vorausgehendes τ auf das erste Feld des Bandes zu schreiben. Dieses Wissen läßt sich durch die Maschine in 24 kapseln. Komponiert man diese Kapselung mit dem Band, kann man Symbolketten in der Form, wie in 25 dargestellt, eingeben. Sei c ∈ L. Konkateniert man E mit P1 (Endzustand von E ist der Startzustand von P1) und komponiert dies mit T, wobei alle von wenigstens zwei Maschinen benutzten Kanäle Synchronisationskanäle sind, so erhält man nach Anwendung von red eine Maschine, die in 26a) dargestellt ist. Ist c
    Figure 00180001
    L, so ist das Ergebnis die in 26b) dargestellte Maschine.
    Figure 00180002
  • 27a) zeigt die verschlüsselte Ausführung einer Operation. Die Operanden a, b bzw. c sind als a', b' bzw. c' verschlüsselt. Die Entschlüsselungen von a und b und die Verschlüsselung von c werden mit der Operation komponiert. 27b) zeigt, wie unverschlüsselte Operanden a und b mit einer Operation verarbeitet werden und das Ergebnis c als c' verschlüsselt wird. Die Operation und die Verschlüsselung werden komponiert.
  • 28a) bzw. b) stellt einen Kombinierer von Kanälen bzw. dessen Umkehrung, einen Separator, dar, der in einer Registerbank benutzt wird. In 29 wird ein möglicher Aufbau einer Registerbank dargestellt. Um einen Registerwert zu verändern, werden mehrere Operationen komponiert. Über den Kanal x' wird eine Registerbank R' mit drei Registern R1, R2 und R3 gelesen. Der alte Registerwert von Register R3 wird auf Kanal x3 ausgegeben. Über den Kanal y3 wird ein neuer Wert in das Register R3 geschrieben. 29b) zeigt eine Komposition, die den Inhalt von Register R3 ausgibt, ohne die Registerbank zu verändern.
  • In 30 wird dargestellt, wie eine Hardware Daten der Applikation mit einer Stromverschlüsselung verschlüsselt. Der von der Hardware verschlüsselte Wert wird von der Applikation entschlüsselt. Die Entschlüsselungsfunktion wird mit einer Operation der Applikation komponiert. Das Ergebnis nach Ausführung der Operation ist verschlüsselt. Die Entschlüsselung mit Hilfe der Umkehrfunktion der Hardware und die Verschlüsselung mit der Operation geschehen parallel. Der entschlüsselte Wert wird für einen Angreifer zu keinem Zeitpunkt sichtbar. Es spielt keine Rolle, ob die Hardware verschlüsselt und die Applikation entschlüsselt, oder umgekehrt. Wesentlich ist, dass die Verknüpfung der beiden Funktionen die Identität ist. Die parallele Entschlüsselung und Verschlüsselung ist möglich, weil nur Stromverschlüsselungen benutzt werden. Es können auch andere Kryptofunktionen benutzt werden. Viele bekannte Kryptofunktionen lassen sich nur mit Hilfe von Registern für das Speichern von Zwischenergebnissen, wie z.B. Rundenergebnissen, realisieren. Diese Zwischenergebnisse müssen in geschützten Registerbänken gespeichert werden. Wenn eine Runde einer Blockverschlüsselung eine Stromverschlüsselung ist, kann die letzte Runde dieser Blockentschlüsselung mit der Operation und den Umschlüsselungen der Operation komponiert werden. Anstelle einer Verschlüsselungsfunktion kann auch eine Hashfunktion in der Hardware ausgeführt werden. 31 zeigt ein mögliches Schema. Ein Teil der Eingabe in die Hashfunktion muß geheim bleiben. Dieser Teil entspricht dem Schlüssel bei einer Verschlüsselungsfunktion. Der andere Teil der Eingabe sind Daten aus der Applikation. Der Ausgabewert der Hashfunktion kann mit dem Ausgabewert einer Simulation der Hashfunktion z.B. durch sich kompensierende Operationen wie Addition und Subtraktion zu dem Ergebnis einer ausgeführten Operation addiert werden. Das Ergebnis einer solchen ausgeführten Operation ist nur dann korrekt, wenn die Hashfunktion und ihre Simulation den gleichen Wert liefern. Die Operation, die Hashfunktion resp. eine Runde der Hashfunktion, die Addition, Subtraktion und alle Umschlüsselungen der Operation sind zu komponieren. Der geheime Teil der Eingabe in die Hashfunktion und gegebenenfalls Zwischenergebnisse sind in geschützten Registerbänken zu speichern.
  • Sequentielle, reversible Maschinen können zur Verschlüsselung und Entschlüsselung benutzt werden. Ein Beispiel für eine sequentielle, reversible Maschine ist in 32 dargestellt. In jedem Zustand kann bei gegebener Ausgabe eindeutig die dazugehörige Eingabe bestimmt werden. Solche Maschinen mit einer deutlich höheren Anzahl von Zuständen, als in 32 beispielhaft dargestellt, eignen sich zur Komposition mit anderen Netzen, beispielsweise wie in 27a) und b) dargestellt. Denkbar sind auch Maschinen mit verzögerten Ausgaben, wie in [3] beschrieben. Alle Maschinen können nicht-deterministisch erzeugt werden, z.B. mit Hilfe von Zufallszahlengeneratoren.
  • QUELLEN
    • [1] Feng Bao, Yoshihide Igarashi, Break Finite Automata Public Key Cryptosystem, ICALP 1995: 147-158, 1995.
    • [2] T.L. Booth, Sequential Machines and Automata Theory, John Wiley and Sons, 1967.
    • [3] Zongduo Dai, Dingfeng Ye, Kwok-Yan Lam, Weak Invertibility of Finite Automata and Cryptoanalysis on FAPKC, Advances in Cryptology – ASIACRYPT'98: 227-241, Springer, 1998.
    • [4] W. Harder, B. Peeters, Vorrichtung zum Schutz gegen unauthorisierte Benutzung von Software, Patent DE 3914233, 1990 .
    • [5] J.E. Hopcroft, J.D. Ullman, Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie, 4. Auflage, Oldenbourg, 2000.
    • [6] E. Jessen, R. Valk, Rechensysteme, Grundlagen der Modellbildung, Springer, 1987.
    • [7] M. Minsky, Computation: Finite and Infinite Machines, Prentice-Hall, Englewood Cliffs, 1967.
    • [8] W. Reisig, Petri-Netze, Eine Einführung, Springer, 1982.
    • [9] R. Rojas, Theorie der neuronalen Netze, Springer, 1993.
    • [10] D.R. Wallace, System and method for cloaking software, US-Patent 6192475, 2001.
    • [11] Sospita, http://www.sospita.com, 2002.
    • [12] Syncrosoft Hard- und Software GmbH, http://www.synerosoft.com, 2003.
    • [13] Trusted Computing Platform Alliance (TCPA), http://www.trustedcomputing.org, 2003.

Claims (21)

  1. Verfahren zur Verarbeitung von Daten, dadurch gekennzeichnet, dass ein Petri-Netz kodiert, in einen Speicher geschrieben und aus dem Speicher von wenigstens einer Instanz gelesen und ausgeführt wird, wobei Transitionen des Petri-Netzes Symbole oder Symbolketten mit Hilfe wenigstens eines Kopfes von wenigstens einem Band lesen und/oder auf wenigstens einem Band schreiben.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass das Petri-Netz, der Kopf oder die Köpfe und das Band oder die Bänder eine universelle Turing-Maschine bilden.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass wenigstens ein zweites Petri-Netz, insbesondere mit den Eigenschaften des in Anspruch 1 beschriebenen Petri-Netzes kodiert, in einen Speicher geschrieben und aus dem Speicher von wenigstens einer Instanz gelesen und ausgeführt wird, wobei Transitionen jedes Petri-Netzes Symbole oder Symbolketten über wenigstens einen wahlweise vorhandenen Kanal senden können, die von Transitionen anderer Petri-Netze über diesen Kanal oder diese Kanäle empfangen werden können.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass ein Petri-Netz auf eine Markierungs- bzw. Zustandsübergangstabelle und wahlweise wenigstens eine Ausgabetabelle oder eine Kombination aus beiden zugreift und hiermit in Abhängigkeit von der Markierung bzw. von dem Zustand und wahlweise abhängig von einer wahlweise vorhandenen Eingabe eine Folgemarkierung bzw. einen Folgezustand und wahlweise wenigstens eine Ausgabe ermittelt.
  5. Verfahren zur Durchführung des Verfahrens nach Anspruch 4, dadurch gekennzeichnet, dass das Schalten der Transitionen eines Petri-Netzes von einem Prozessor ausgeführt wird, wobei der Prozessor wenigstens eine Prozessorinstruktion besitzt, die die Markierungs- bzw. Zustandsübergangstabelle und wahlweise wenigstens eine Ausgabetabelle oder eine Kombination aus beiden als Operanden verarbeitet.
  6. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass eine Kooperation von Petri-Netzen eine Turing-Maschine bildet.
  7. Verfahren nach einem der Ansprüche 3 und 6, dadurch gekennzeichnet, dass wenigstens ein Teil eines Programms in ein Petri-Netz oder eine Kooperation von Petri-Netzen übersetzt wird.
  8. Verfahren nach einem der Ansprüche 3 bis 7, dadurch gekennzeichnet, dass die Petri-Netze durch eine Kompositionsvorschrift ausgeführt werden, wobei ein zu den kooperierenden ersten und zweiten Petri-Netzen bezüglich des äusseren Ein-/Ausgabeverhaltens, ausgenommen Ausgabe-Verzögerungen, äquivalentes drittes Petri-Netz mit Hilfe des ersten und der zweiten Petri-Netze gebildet wird.
  9. Verfahren zur Verarbeitung von Daten, ausgenommen auf der Komposition von endlichen Automaten basierende Public Key Verschlüsselungsverfahren, insbesondere in Verbindung mit einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass datenverarbeitende, kooperierende Netze komponiert werden, das Kompositionsergebnis kodiert, in einen Speicher geschrieben und aus dem Speicher von wenigstens einer Instanz gelesen und ausgeführt wird, wobei das Kompositionsergebnis ein zu seinen Komponenten bezüglich des äusseren Ein-/Ausgabeverhaltens, ausgenommen Ausgabe-Verzögerungen, äquivalentes Netz ist.
  10. Verfahren nach einem der Ansprüche 1 bis 8 und Anspruch 9, dadurch gekennzeichnet, dass die Komponenten und das Kompositionsergebnis Petri-Netze sind, wobei die Transitionen der Komponenten Symbole oder Symbolketten über wahlweise vorhandene Kanäle senden und empfangen können.
  11. Verfahren nach Anspruch 8 oder 10, dadurch gekennzeichnet, dass die Petri-Netze sequentielle Maschinen MΩ mit wahlweise mehreren Eingabekanälen und wahlweise mehreren Ausgabekanälen bilden, C eine endliche Menge von Kanälen, Δ eine endliche Menge von endlichen Alphabeten, γ : C → Δ, Ω = (C,Δ,γ) eine Kommunikationsregel, EΩ = {e|e = {(c,σ)|σ ∈ γ(c) ∧ ((c,σ1) ∈ e ∧ (c,σ2) ∈ e ⇒ σ1 = σ2)}} ∪ {∅}eine Menge von Ein-/Ausgabe-Ereignissen und S eine endliche Menge von Zuständen ist und MΩ := {(S,EΩ,δ,β,s0)|δ : R → S ∧ β : R → EΩ ∧ R ⊂ S×EΩ ∧ (∀[(s,x),y) ∈ β∀(cxx) ∈ x ∀(cyy) ∈ y : cx ≠ cy) ∧ s0 ∈ S},B mit B ⊆ C eine Menge von internen Synchronisationskanälen ist und die Komposition compB : M n / Ώ → 2Mn von sequentiellen Maschinen definiert wird als
    Figure 00230001
  12. Verfahren nach Anspruch 9, dadurch gekennzeichnet, dass die datenverarbeitende Netze durch eine Übersetzung von Algorithmen gebildet werden.
  13. Verfahren nach einem der Ansprüche 9 bis 12, dadurch gekennzeichnet, dass wenigstens eine Komponente eine kryptologische Komponente ist.
  14. Verfahren nach Anspruch 13, dadurch gekennzeichnet, dass wenigstens eine Komponente komprimierte Daten dekomprimiert.
  15. Verfahren nach einem der Ansprüche 13 oder 14, dadurch gekennzeichnet, dass eine Komponente Daten liest und durch Veränderung dieser Daten ein für die Nutzung dieser Daten nicht oder wenig behinderndes Merkmal oder Wasserzeichen den Daten hinzufügt.
  16. Verfahren nach Anspruch 13, dadurch gekennzeichnet, dass ein Verschlüsseler und ein Kombinierer mehrerer Eingabekanäle zu einem Ausgabekanal komponiert werden, wobei der Verschlüsseler und der Kombinierer Petri-Netze sind, der Kombinierer die über die Eingabekanäle empfangenen Daten auf den Ausgabekanal abbildet und die Ausgabe des Kombinierers die Eingabe für den Verschlüsseler ist.
  17. Verfahren nach Anspruch 13, dadurch gekennzeichnet, dass ein Entschlüsseler und ein Separator komponiert werden, wobei der Entschlüsseler bzw. der Separator ein Petri-Netz ist und eine Umkehrung eines Verschlüsselers bzw. Kombinierers sein kann, der gemäß dem in Anspruch 16 beschriebenen Verfahren mit einem Kombinierer bzw. Verschlüsseler komponiert wurde, der Separator die über den Eingabekanal empfangenen Daten auf den Ausgabekanal abbildet und die Ausgabe des Entschlüsselers die Eingabe für den Separator ist.
  18. Verfahren nach einem der Ansprüche 13 bis 17, dadurch gekennzeichnet, dass wenigstens eine Komponente eine kryptologische Komponente ist, die von einer geschützt ausgeführten kryptologischen Funktion Daten empfängt und verarbeitet, wobei das Kompositionsergebnis nicht oder fehlerhaft arbeitet, wenn von der kryptologischen Funktion keine oder fehlerhafte Daten empfangen werden.
  19. Verfahren nach Anspruch 18, dadurch gekennzeichnet, dass eine Komposition unter Auslassung der kryptologischen Komponente oder wenigstens einer der kryptologischen Komponenten ausgeführt wird, wobei das Kompositionsergebnis bezüglich der Nutzbarkeit gegenüber dem Kompositionsergebnis, das ohne die Auslassung gebildet wurde, wenigsten eine Einschränkung besitzt.
  20. Verfahren zur Verasbeitung von Daten, insbesondere in Verbindung mit einem der Ansprüche 1 bis 19, dadurch gekennzeichnet, dass ein datenverarbeitendes Netz bzw. ein Programm von einer geschützt ausgeführten kryptologischen Funktion zweite Daten empfängt und verarbeitet und das datenverarbeitende Netz bzw. das Programm nicht oder fehlerhaft arbeitet, wenn keine oder fehlerhafte zweite Daten empfangen werden, wobei die kryptologische Funktion mit der das datenverarbeitende Netz bzw. das Programm ausführenden Vorrichtung fest verbunden ist.
  21. Verfahren nach Anspruch 20, dadurch gekennzeichnet, dass ein Wert über die Berechnung eines Funktionswertes der kryptologischen Funktion hinaus für einen Angreifer nicht lesbar oder veränderbar gespeichert wird und bei einer weiteren Berechnung eines weiteren Funktionswertes dieser Wert das Ergebnis der weiteren Berechnung beeinflusst, wobei der Wert sich nach einer vorgegebenen Regel verändert.
DE10319435.5A 2003-04-25 2003-04-25 Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion Expired - Lifetime DE10319435B4 (de)

Priority Applications (14)

Application Number Priority Date Filing Date Title
DE10319435.5A DE10319435B4 (de) 2003-04-25 2003-04-25 Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion
RU2005135987/09A RU2005135987A (ru) 2003-04-25 2004-04-03 Способ обработки данных
PCT/EP2004/003561 WO2004097734A2 (de) 2003-04-25 2004-04-03 Verfahren zur verarbeitung von daten
BRPI0409740-8A BRPI0409740A (pt) 2003-04-25 2004-04-03 método para processar dados
US10/554,168 US9275202B2 (en) 2003-04-25 2004-04-03 Data processing method
KR1020057020332A KR20060017593A (ko) 2003-04-25 2004-04-03 데이터 처리 방법
EP04725619A EP1618519A2 (de) 2003-04-25 2004-04-03 Verfahren zur verarbeitung von daten
CNA2004800112302A CN1781117A (zh) 2003-04-25 2004-04-03 数据处理方法
CA002525484A CA2525484A1 (en) 2003-04-25 2004-04-03 Method for processing data
US15/052,711 US9721075B2 (en) 2003-04-25 2016-02-24 Method for processing data
US15/638,084 US9946854B2 (en) 2003-04-25 2017-06-29 Method for processing data
US15/953,252 US10534897B2 (en) 2003-04-25 2018-04-13 Method for processing data
US16/714,489 US11010455B2 (en) 2003-04-25 2019-12-13 Method for processing data
US17/235,334 US11809530B2 (en) 2003-04-25 2021-04-20 Method for processing data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10319435.5A DE10319435B4 (de) 2003-04-25 2003-04-25 Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion

Publications (2)

Publication Number Publication Date
DE10319435A1 true DE10319435A1 (de) 2004-11-11
DE10319435B4 DE10319435B4 (de) 2018-07-26

Family

ID=33154484

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10319435.5A Expired - Lifetime DE10319435B4 (de) 2003-04-25 2003-04-25 Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion

Country Status (9)

Country Link
US (6) US9275202B2 (de)
EP (1) EP1618519A2 (de)
KR (1) KR20060017593A (de)
CN (1) CN1781117A (de)
BR (1) BRPI0409740A (de)
CA (1) CA2525484A1 (de)
DE (1) DE10319435B4 (de)
RU (1) RU2005135987A (de)
WO (1) WO2004097734A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2648125B1 (de) * 2012-03-05 2014-11-19 Steinberg Media Technologies GmbH Verfahren zur Autorisierung eines Programmablaufs

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10319435B4 (de) * 2003-04-25 2018-07-26 Whitecryption Corporation Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion
GB0813142D0 (en) * 2008-07-17 2008-08-27 Glaxo Group Ltd Novel compounds
US9026768B2 (en) * 2009-09-14 2015-05-05 AEMEA Inc. Executing machine instructions comprising input/output pairs of execution nodes
US9152779B2 (en) 2011-01-16 2015-10-06 Michael Stephen Fiske Protecting codes, keys and user credentials with identity and patterns
US10268843B2 (en) 2011-12-06 2019-04-23 AEMEA Inc. Non-deterministic secure active element machine
US9838198B2 (en) * 2014-03-19 2017-12-05 Nxp B.V. Splitting S-boxes in a white-box implementation to resist attacks
US9584310B2 (en) 2014-03-19 2017-02-28 Nxp B.V. Protecting a white-box implementation against attacks
US9654279B2 (en) 2014-03-20 2017-05-16 Nxp B.V. Security module for secure function execution on untrusted platform
EP2940925B1 (de) 2014-04-28 2017-12-27 Nxp B.V. IMPLEMENTIERUNG VON VERWENDUNGSABHÄNGIGEN SICHERHEITSEINSTELLUNGEN IN EINER EINZELnen WHITE-BOX-IMPLEMENTIERUNG
EP2940918B1 (de) 2014-04-28 2019-07-17 Nxp B.V. Schnittstellenverträglicher ansatz zum verkleben von white-box-implementierung gegen ein umgebendes programm
EP2940919B1 (de) 2014-04-28 2019-02-20 Nxp B.V. Realisierung der autorisierung über inkorrektes funktionelles verhalten einer white-box-implementierung
US9641337B2 (en) 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
EP2940920B1 (de) 2014-04-28 2017-03-08 Nxp B.V. Sicherheitspatch ohne änderung des schlüssels
US9363244B2 (en) 2014-04-28 2016-06-07 Nxp B.V. Realizing authorization via incorrect functional behavior of a white-box implementation
US9455833B2 (en) 2014-04-28 2016-09-27 Nxp B.V. Behavioral fingerprint in a white-box implementation
US9380033B2 (en) 2014-04-28 2016-06-28 Nxp B.V. Implementing use-dependent security settings in a single white-box implementation
EP2940677A1 (de) 2014-04-28 2015-11-04 Nxp B.V. Verfahren zur integrierung einer impliziten integritäts- oder authentizitätsprüfung in eine white-box-implementierung
EP2940917B1 (de) 2014-04-28 2019-02-20 Nxp B.V. Verhaltensfingerabdruck in einer white-box-implementierung
US9485226B2 (en) 2014-04-28 2016-11-01 Nxp B.V. Method for including an implicit integrity or authenticity check into a white-box implementation
US9338145B2 (en) 2014-04-28 2016-05-10 Nxp B.V. Security patch without changing the key
EP2960891B1 (de) 2014-06-24 2019-01-16 Nxp B.V. Verfahren zur einführung der abhängigkeit einer white-box-implementation auf einen satz von strings
US10412054B2 (en) 2014-06-24 2019-09-10 Nxp B.V. Method for introducing dependence of white-box implementation on a set of strings
US9569639B2 (en) 2014-09-12 2017-02-14 Nxp B.V. Remapping constant points in a white-box implementation
US9639674B2 (en) 2014-12-18 2017-05-02 Nxp B.V. Using single white-box implementation with multiple external encodings
US20160182472A1 (en) 2014-12-19 2016-06-23 Nxp, B.V. Binding White-Box Implementation To Reduced Secure Element
US9819486B2 (en) 2014-12-19 2017-11-14 Nxp B.V. S-box in cryptographic implementation
US9665699B2 (en) 2015-03-13 2017-05-30 Nxp B.V. Implementing padding in a white-box implementation
US9602273B2 (en) 2015-05-06 2017-03-21 Nxp B.V. Implementing key scheduling for white-box DES implementation
US20160350520A1 (en) 2015-05-29 2016-12-01 Nxp, B.V. Diversifying Control Flow of White-Box Implementation
US10505709B2 (en) 2015-06-01 2019-12-10 Nxp B.V. White-box cryptography interleaved lookup tables
US10020932B2 (en) 2015-11-13 2018-07-10 Nxp B.V. Split-and-merge approach to protect against DFA attacks
US10015009B2 (en) 2015-11-25 2018-07-03 Nxp B.V. Protecting white-box feistel network implementation against fault attack
US10171234B2 (en) 2015-12-16 2019-01-01 Nxp B.V. Wide encoding of intermediate values within a white-box implementation
US10223511B2 (en) 2016-03-30 2019-03-05 Nxp B.V. Watermarking input and output of a white-box implementation
US10243937B2 (en) * 2016-07-08 2019-03-26 Nxp B.V. Equality check implemented with secret sharing
US10567159B2 (en) 2017-06-07 2020-02-18 Nxp B.V. CMAC computation using white-box implementations with external encodings

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4328542A (en) * 1979-11-07 1982-05-04 The Boeing Company Secure implementation of transition machine computer
US4866605A (en) * 1984-11-05 1989-09-12 Hitachi, Ltd. System function simulation method and apparatus therefor using Petri net symbols
US4922413A (en) * 1987-03-24 1990-05-01 Center For Innovative Technology Method for concurrent execution of primitive operations by dynamically assigning operations based upon computational marked graph and availability of data
JP2580592B2 (ja) * 1987-04-17 1997-02-12 株式会社日立製作所 データ構造駆動型処理装置とその制御方法
DE3914233C1 (en) 1989-04-29 1990-07-26 Wulf 2054 Geesthacht De Harder Computer program protection device - has generator data output connected with consisting testing stage
US5257363A (en) * 1990-04-09 1993-10-26 Meta Software Corporation Computer-aided generation of programs modelling complex systems using colored petri nets
US6226749B1 (en) * 1995-07-31 2001-05-01 Hewlett-Packard Company Method and apparatus for operating resources under control of a security module or other secure processor
US6192475B1 (en) 1997-03-31 2001-02-20 David R. Wallace System and method for cloaking software
CA2293650C (en) * 1997-06-09 2012-09-25 Christian Sven Collberg Obfuscation techniques for enhancing software security
US6334189B1 (en) * 1997-12-05 2001-12-25 Jamama, Llc Use of pseudocode to protect software from unauthorized use
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6779112B1 (en) * 1999-11-05 2004-08-17 Microsoft Corporation Integrated circuit devices with steganographic authentication, and steganographic authentication methods
US7120699B2 (en) * 2001-09-20 2006-10-10 Ricoh Company, Ltd. Document controlled workflow systems and methods
US7478233B2 (en) * 2002-05-30 2009-01-13 Microsoft Corporation Prevention of software tampering
US7383443B2 (en) * 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
US20040015719A1 (en) * 2002-07-16 2004-01-22 Dae-Hyung Lee Intelligent security engine and intelligent and integrated security system using the same
US7415596B2 (en) 2003-01-24 2008-08-19 Gigafin Networks, Inc. Parser table/production rule table configuration using CAM and SRAM
DE10319435B4 (de) * 2003-04-25 2018-07-26 Whitecryption Corporation Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2648125B1 (de) * 2012-03-05 2014-11-19 Steinberg Media Technologies GmbH Verfahren zur Autorisierung eines Programmablaufs

Also Published As

Publication number Publication date
DE10319435B4 (de) 2018-07-26
US20170364668A1 (en) 2017-12-21
US20210240802A1 (en) 2021-08-05
US20180239881A1 (en) 2018-08-23
BRPI0409740A (pt) 2006-05-09
US9721075B2 (en) 2017-08-01
US11809530B2 (en) 2023-11-07
CN1781117A (zh) 2006-05-31
WO2004097734A2 (de) 2004-11-11
EP1618519A2 (de) 2006-01-25
US20200117775A1 (en) 2020-04-16
KR20060017593A (ko) 2006-02-24
US20070014394A1 (en) 2007-01-18
US10534897B2 (en) 2020-01-14
RU2005135987A (ru) 2007-05-27
US20170024550A1 (en) 2017-01-26
CA2525484A1 (en) 2004-11-11
US9275202B2 (en) 2016-03-01
US9946854B2 (en) 2018-04-17
US11010455B2 (en) 2021-05-18
WO2004097734A8 (de) 2005-12-01

Similar Documents

Publication Publication Date Title
DE10319435B4 (de) Verfahren zur Verarbeitung von Daten zum Schutz eines Softwareprogramms vor Rekonstruktion
EP3218893B1 (de) Gehärtete white box implementierung
DE69626530T2 (de) Schutz von software gegen benutzung ohne erlaubnis
DE69728465T2 (de) Nichtparalleler Mehrzyklus-Verschlüsselungsapparat
WO2001006341A1 (de) Datenverarbeitungsvorrichtung
DE102008010789B4 (de) Verfahren zur zugriffs- und kommunikationsbezogenen Zufallsver- und Entschlüsselung von Daten
DE69737806T2 (de) Datenverschlüsselungsverfahren
DE602004001732T2 (de) Datenverschlüsselung in einem elektronischen Gerät mit mehreren symmetrischen Prozessoren
DE102004042826A1 (de) Verfahren und Vorrichtung zur Datenverschlüsselung
EP3387636B1 (de) Kryptoalgorithmus mit schlüsselabhängigem maskiertem rechenschritt (sbox-aufruf)
DE60103515T2 (de) Kryptografisches verfahren zum schutz gegen betrug
DE60224603T2 (de) Auf einem graphisch implementierten Algorithmus basierendes Verfahren zur Erzeugung und Filtrierung von Datensequenzen für kryptographische Anwendungen
DE60022840T2 (de) Verfahren zum sichern einer oder mehrerer elektronischer baugruppen, unter zuhilfenahme eines privatschlüssel-krypto-algorithmus, sowie elektronische baugruppe
WO2013110103A2 (de) Verfahren zum schreiben und lesen von daten
EP3742319B1 (de) Seitenkanalsichere implementierung
DE69710789T2 (de) Vorrichtung und verfahren zur geschützten übertragung und darstellung von elektronisch publizierten dokumenten
DE102018126763B4 (de) Kryptographieverfahren
EP3734486B1 (de) Computerimplementiertes verfahren zum ersetzen eines datenstrings
EP4325387A1 (de) Verfahren zum bereitstellen eines digitalen schlüssels
DE19642371C1 (de) Verfahren zum Austausch kryptographischen Schlüsselmaterials zwischen mindestens einer ersten Computereinheit und einer zweiten Computereinheit
DE202022103193U1 (de) Ein System zur Entwicklung einer leichtgewichtigen Blockchiffre für ressourcenbeschränkte Anwendungen
DE112005001837B4 (de) Verfahren zum Schutz von Schlüsseln
DE10028265A1 (de) Vorrichtung und Verfahren zum Entschlüsseln eines verschlüsselten elektronischen Dokuments
EP2648125B1 (de) Verfahren zur Autorisierung eines Programmablaufs
DE102008023912A1 (de) Verfahren und Speichervorrichtung zum Bereitstellen eines kryptografischen Schlüssels

Legal Events

Date Code Title Description
8127 New person/name/address of the applicant

Owner name: WEBER, STEFAN, 21335 LUENEBURG, DE

Owner name: RESAS, UWE, 21339 LUENEBURG, DE

Owner name: SIA SYNCROSOFT, RIGA, LT

8128 New person/name/address of the agent

Representative=s name: PATENTANWAELTE HAUCK, GRAALFS, WEHNERT, DOERING, SIE

8127 New person/name/address of the applicant

Owner name: SIA SYNCROSOFT, RIGA, LT

8128 New person/name/address of the agent

Representative=s name: PATENTANWAELTE HAUCK, GRAALFS, WEHNERT, DOERING, SIE

8141 Disposal/no request for examination
8110 Request for examination paragraph 44
8170 Reinstatement of the former position
8127 New person/name/address of the applicant

Owner name: SIA WHITECRYPTION, RIGA, LV

R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R082 Change of representative

Representative=s name: PATENTANWAELTE GRAALFS, WEHNERT, DOERING, SIEM, DE

R081 Change of applicant/patentee

Owner name: WHITECRYPTION CORPORATION, WILMINGTON, US

Free format text: FORMER OWNER: SIA WHITECRYPTION, RIGA, LV

Effective date: 20120717

R082 Change of representative

Representative=s name: PATENTANWAELTE GRAALFS, WEHNERT, DOERING, SIEM, DE

Effective date: 20120717

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R071 Expiry of right