DE69330489T2 - Vorrichtung zum Schutz von Software - Google Patents

Vorrichtung zum Schutz von Software

Info

Publication number
DE69330489T2
DE69330489T2 DE69330489T DE69330489T DE69330489T2 DE 69330489 T2 DE69330489 T2 DE 69330489T2 DE 69330489 T DE69330489 T DE 69330489T DE 69330489 T DE69330489 T DE 69330489T DE 69330489 T2 DE69330489 T2 DE 69330489T2
Authority
DE
Germany
Prior art keywords
value
binary
bit
bits
values
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.)
Expired - Lifetime
Application number
DE69330489T
Other languages
English (en)
Other versions
DE69330489D1 (de
Inventor
Thomas S. Hirsch
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.)
Bull HN Information Systems Inc
Original Assignee
Bull HN Information Systems Inc
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 Bull HN Information Systems Inc filed Critical Bull HN Information Systems Inc
Application granted granted Critical
Publication of DE69330489D1 publication Critical patent/DE69330489D1/de
Publication of DE69330489T2 publication Critical patent/DE69330489T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Description

    Anwendungsgebiet
  • Die vorliegende Erfindung bezieht sich auf Datenschutzsysteme, und insbesondere auf Systeme, die im Rahmen der Software-Lizenzvergabeüberprüfung von Nutzen sind.
  • Stand der Technik
  • Software wird als ein wichtiger, wertvoller Aktivposten betrachtet, dessen Benutzung im weitestmöglichen Umfang gegen nichtautorisiertes Kopieren und Verbreiten geschützt werden muss. Viele Firmen schützen Software durch Lizenzvereinbarungen. In gewissen Fällen werden Sperrmechanismen in Softwarepakete inkorporiert, die bei Endbenutzern vertrieben werden, um die Herstellung von Kopien solcher Software zu verhindern, nachdem die Software in einem System installiert worden ist. Diese Art von Ansatz hat sich aber für die Benutzer als lästig herausgestellt, weil sie es dem Benutzer nicht erlaubt, die notwendigen Kopien herzustellen (z. B. Archivkopien), um Unterbrechungen bei normalen Geschäftsoperationen zu verhindern. Andere Hersteller verwenden Verschlüsselungs- und Entschlüsselungstechniken, um sich gegen nichtautorisiertes Kopieren zu schützen. Die mit der Durchführung solcher Operationen verbundenen Belastungen sind erheblich, was die Effizienz des Prozess-Systems wesentlich einschränkt.
  • Andere Hersteller haben programmierte Algorithmen benutzt, um gegen nichtautorisierten Zugriff zu schützen. Solche Algorithmen können auf der Basis einer Prüfung des Programmquellencodes ermittelt werden. Auf dem Markt sind auch Dekompiliererprodukte erhältlich, die benutzt werden können, um die Algorithmen aus der Objektkodeversion des Programms zu extrahieren. Es ist also schwieriger geworden, in solchen Fällen die Sicherheit derartiger Algorithmen zu gewährleisten. Weiter haben sich die genannten Lösungsansätze als zu teuer hinsichtlich der Implementierung, zu komplex oder zu kompliziert im Gebrauch oder, für Endbenutzer, als zu umständlich erwiesen.
  • Das US-Patent Nr. 4,888,798 mit dem Titel "Modular Software Security" betrifft schon ein Gerät zum Schützen von Softwareelementen in einem Computersystem gegen nichtautorisiertes Kopieren und Verteilen, durch Erzeugen von Benutzerschlüsseln aus eingegebenen Binärwerten, und zum umgekehrten Transformieren von Benutzerschlüsseln in die genannten Eingabebinärwerte, wobei ein solches Gerät umfasst:
  • - ein Eingaberegister zum Speichern eines binären n-Bitwertes, der eine vorbestimmte Anzahl von Bytes enthält, wobei der erste Binärwert zum Umwandeln in einen Benutzerschlüssel dient;
  • - einen Pseudo-Zufallszahlengenerator, der, als Antwort auf Anfangswerte, eine wiederholbare Sequenz von Zufallszahlen generiert, wobei die genannten Anfangswerte willkürliche Werte sind, die eine Absicherung erfordern, um eine Verdoppelung gültiger Schlüssel trotz Offenbarung des Schutzschaltwerkes zu verhindern;
  • - einen Verwürfler mit einem Ausgaberegister zum Speichern eines zweiten binären n-Bitwertes, und mit Umordnungseinrichtungen zum Bewegen jedes der genannten n-Bits des ersten binären n-Bitwertes in eine neue Bit- Position des genannten Ausgaberegisters, als Funktion der genannten wiederholbaren Sequenz von Zufallszahlen, wobei der genannte Verwürfler weiter Einrichtungen zum Benutzen der genannten Zufallszahlen umfasst, um entweder eine Komplementausgabe oder eine Nicht- Komplementausgabe der genannten Umordnungseinrichtungen zum Bewegen in das genannte Ausgaberegister zu wählen; und
  • - einen alphanumerischen Kodierer, der funktionsmäßig an den genannten Verwürfler zum Empfangen des genannten zweiten binären n-Bitwertes angeschlossen ist, um Abschnitte des genannten zweiten Binärwertes, die Gruppen von m-Bits aus dem genannten zweiten Binärwert entsprechen, zu entnehmen, und um die genannten Gruppen von Bits als Indizes zum Verweisen auf unterschiedliche Zeichen von alphanumerischen Zeichen zu benutzen, um so eine Folge von alphanumerischen Zeichen zu erzeugen, die einen der genannten Benutzerschlüssel darstellt.
  • Das US-Patent Nr. 5,079,733 offenbart ein Gerät zum Erzeugen von Pseudo- Zufallszahlen auf der Basis der Verwendung von Schieberegistern, die eine Rückkopplungsverbindung enthalten, welche ein mit der Ausgabesequenz verknüpftes Bit an Modifikatoren übermittelt, die zwischen je zwei Stufen des Registers eingefügt sind. Solche Multiplizierregister benutzen mathematische Analogien, gemäß derer diese Register die Multiplikation einer Sequenz von Bits, die seriell an den Eingang geliefert wird, mit einem Polynom durchführen..
  • Im US-Patent Nr. 4,598,170 ist ein abgesicherter Mikroprozessor zum Schützen von Computerprogrammen durch Verschlüsselung, unter Verwendung der Prinzipien der Inversion und der Permutation, offenbart. Das Umordnen wird in einer Permutatormatrix durchgeführt, deren Kreuzungspunkte so programmiert werden können, dass jede beliebige Eingabe, durch die Benutzung von Variablen, an jeden beliebigen Ausgang geschaltet werden kann.
  • Demgemäß ist es eine primäre Aufgabe der vorliegenden Erfindung, einen alternativen Mechanismus zum Erzeugen von Schlüsselwerten zu schaffen, der nicht leicht imitiert werden kann und der die Verwendung von Softwarepaketen kontrolliert.
  • Zusammenfassung der Erfindung
  • Die genannte Aufgabe der vorliegenden Erfindung wird durch Benutzen der Hardwarekomponenten und der Verfahrensschritte gemäß den Ansprüchen 1 und 2 gelöst.
  • Die Aufbaudokumentation zum Gegenstand der vorliegenden Erfindung als Zusatz zu jedem beliebigen Quellencode, der sich auf ihre praktische Implementierung bezieht, muss nicht geheim gehalten werden. Der Grund dafür besteht darin, dass es ohne Kenntnis aller Werte, die benutzt werden, um den Schlüsselwert zu generieren, nicht möglich ist, alle Änderungen vorherzusagen, die beim Schlüssel durchgeführt werden müssen, um einen weiteren gültigen binären 32-Bit- Eingabewert zu generieren. Weiter ermöglicht der Kodierer auch Änderungen in jenen Zeichen vorzunehmen, die benutzt werden, um die Ausgabe des Verwürflers darzustellen.
  • Bei der bevorzugten Ausführungsform wird eine Seriennummer als Teil des binären Eingabewertes verwendet, weil er einmalig zugewiesen werden kann und leicht durch das die Anwendung durchführende System verifiziert werden kann. Obgleich die Seriennummer als Teil des binären Eingabewertes benutzt wird, wird sich die Kenntnis des Wertes des Schlüssels und seines Änderungsmusters für ein anderes System nicht als nützlich bei der Bestimmung darüber erweisen, was geändert werden muss, um einen gültigen Schlüssel zu erhalten. Der Grund dafür besteht darin, dass der Seriennummernwert bei der Generierung der Zufallszahlenwerte benutzt wird. Die vorliegende Erfindung liefert also die erforderliche Sicherheit trotz der Veröffentlichung der zugehörigen Dokumentation sowie des Quellencodes. Da sowohl der Anfangswert als auch der Startwert beim Generieren der Zufallszahlenwerte benutzt werden, braucht nur die Art und Weise, in der diese Werte abgeleitet werden, geschützt werden. Beispielsweise ist in einem einfachen Falle der einzige Wert, der unzugänglich oder gegen Offenbarung gesichert werden muss, der Startwert, der ein willkürlicher Wert ist, welcher aufgrund eines Hinweises zur Generierung gültiger Schlüsselwerte in letzter Minute wählbar ist.
  • Die neuen Merkmale, die als charakteristisch für die Erfindung angesehen werden, sowohl was ihre Organisation als auch ihre Betriebsmethode anbetrifft, werden zusammen mit weiteren Aufgaben und Vorteilen durch die nachfolgende Beschreibung deutlicher begreiflich gemacht, wenn sie in Zusammenhang mit den beigefügten Zeichnungen betrachtet werden.
  • Kurze Beschreibung der Zeichnungen
  • Nachfolgend werden die Zeichnungen kurz beschrieben.
  • Fig. 1a ist ein Blockdiagramm des Schutzschaltwerkes der vorliegenden Erfindung.
  • Fig. 1b zeigt des Näheren einen Teil des Schutzschaltwerkes der Fig. 2.
  • Fig. 1c ist ein Diagramm zur Veranschaulichung der Betriebsweise des Schutzschaltwerkes der Fig. 1a.
  • Fig. 2 ist ein Diagramm, das die Benutzer- und Systemumgebung veranschaulicht, die das Schutzschaltwerk der vorliegenden Erfindung verwenden.
  • Fig. 3a und 3b sind Flussdiagramme, die zur Beschreibung der Betriebsweise des Schutzschaltwerkes der Fig. 2 verwendet werden.
  • Fig. 4a bis 4c sind Flussdiagramme, die bei der Beschreibung der Betriebsweise des Systems der Fig. 1a und 1b verwendet werden.
  • Detaillierte Beschreibung der bevorzugten Ausführungsform
  • Fig. 1a veranschaulicht in Form eines Blockdiagramms das Schutzschaltwerk 10 der vorliegenden Erfindung. Die verschiedenen Elemente der Fig. 1 stehen derart miteinander in Verbindung, dass sowohl ein Schlüsselwert aus einem binären Eingabewert generiert wird als auch die umgekehrte Operation zum Erzeugen eines binären Eingabewertes von dem vom Benutzer gelieferten Schlüsselwerte durchgeführt wird. Wie dargestellt, enthält das Schaltwerk 10 ein Eingangsregister 12 zum Speichern eines aus 32 Bits bestehenden Binärwertes. Die verschiedenen Bit-Positionsausgaben werden als Eingaben an ein Verwürfler-Speicher- Schaltfeld 14 angelegt. Das Feld 14 stellt 32 Multibit-Container 140-0 bis 140-31 zum Speichern einer Sequenz von Zufallszahlwerten breit, die durch einen Pseudo-Zufallszahlengenerator 16 konventioneller Struktur generiert werden.
  • Jeder Container 140 enthält einen Multibit-Speicher für einen Fünf-Bit- Zufallszahlenwert zusätzlich zu Exklusiv-ODER-Verknüpfungseinrichtungen zum Durchführen einer Exklusiv-ODER-Verknüpfung des numerischen Wertes der Bit-Position des binären Eingabebits, das als Eingabe vom Eingaberegister 12 mit dem in dem Container 140 gespeicherten Zahlenwert angelegt wird. Das niederstwertige Bit des Ergebnisses der Exklusiv-ODER-Operation bestimmt, ob das eingegebene binäre Bit oder sein Komplement als die Ausgabe des Containers 140 angelegt wird.
  • Wie dargestellt, stellen die Container 140-0 bis 140-31 Eingänge zu den verschiedenen Bit-Positionen eines 32-Bit-Ausgaberegisters 18 bereit. Jeder Container 140 ist in der Lage, Eingaben an irgendeine der 32 Bit-Positionen des Registers 18 in Abhängigkeit von dem Zufallszahlenwert zu liefern, den er enthält. Diese Schaltungsstruktur ist in Diagrammform in Fig. 1B veranschaulicht. Wie dargestellt, besitzt der Behälter 110 eine Anzahl von Sätzen von Ausgängen, wobei jeder Satz aus zwei Ausgängen, einem direkten nicht invertierenden Ausgang 140a und einem Komplement- oder invertierenden Ausgang 140b besteht, gekennzeichnet durch das Blasensymbol.
  • Der direkte oder Komplementausgang jedes Containers 140 ist logisch als Eingang an jede beliebige einzelne Position der 32 Bit-Positionen des Ausgaberegisters 18 anschließbar. Die besondere Bit-Position wird in Abhängigkeit von dem Zufallszahlenwert gewählt, der in dem Container gespeichert ist. Ein Abschnitt der Fig. 1c veranschaulicht graphisch die Verbindungen, die dynamisch durch das Verwürflerfeld 14 für eine repräsentative Einzelsequenz von Zufallszahlwerten bereitgestellt werden. Die in Fig. 1c dargestellten Verbindungen sind in der nachfolgenden Tabelle definiert. TABELLE Verwürflerfeld
  • Wie in Fig. 1a dargestellt, werden die binären Inhalte des Ausgaberegisters 18 als Eingaben an einen alphanumerischen Kodierer 20 angelegt. Der Kodierer 20 enthält vier Sätze von überlappenden 5-Bit-Registern 200-1a, 1b bis 200-4a, 4b. Jeder der Registersätze empfängt als Eingabe ein unterschiedliches 8-Bit-Zeichen oder Byte vom Ausgaberegister 18. Die 5-Bit-Ausgabe jedes Registers wird als Eingabe an eine Tabelle 204 angelegt. Die Tabelle 204 enthält 32 unterschiedliche alphanumerische Zeichen. Der Inhalt jedes Satzes von Registern 200-1a, 1b bis 200-4a, 4b wird als Orientierungsindizes in die Tabelle 204 zum Erhalten von acht alphanumerischen Zeichen benutzt, die in einem Benutzerschlüsselregister 24 gespeichert werden.
  • Bei der bevorzugten Ausfluirungsform der vorliegenden Erfindung enthält die Tabelle 204 die nachfolgend dargestellten und in Bezug auf Fig. 1c diskutierten Schlüsselzeichen. Alphanumerische Kodier-/Dekodiertabelle
  • Die Zeichen "O" und "1" wurden ausgelassen, um Probleme der Unterscheidung zwischen NULLEN und dem Buchstaben "O", EINSEN und den Buchstaben I oder L zu vermeiden. Fig. 1c veranschaulicht die Art und Weise, in der ein binärer Eingabewert (0001 ... 1001), der im Eingaberegister 12 enthalten ist, in die Kette alphanumerischer Zeichen AGFPH3XS transformiert wird. Fig. 1c veranschaulicht auch die umgekehrte Operation des Transformierens der Kette von alphanumerischen Zeichen AGFPH3XS in die binären Eingabewerte 001 ... 1001. Diese Operationen werden für die einzige Sequenz von Zufallszahlenwerten, die in der Verwürflerfeldtabelle angegeben sind, veranschaulicht. Die Sequenz entspricht den Zufallszahlenwerten 30, 11, 27, 23, 14, 08, 04, 28, 22, 26 ... bis 10.
  • Bei der bevorzugten Ausführungsform werden die Verwürfler- und alphanumerischen Kodierfunktionen durch die Benutzung verschiedener Programmroutinen implementiert. Genauer gesagt, wird die Verwürflerfeldoperation durch eine Mischfunktion gemäß Fig. 4a durchgeführt. Die Routine nimmt einen 32-Bitwert und ordnet die Bits zufallsbestimmt um, um einen anderen 32-Bitwert zu bilden. Dies wird durch Generieren einer Liste der Zahlen von 0 bis 31 in zufallsbedingter Reihenfolge und Bewegen jeder Bit-Position in eine neue Bit-Position erreicht, die von dieser Liste angezeigt wird. Wie in Fig. 4a dargestellt, wird der Wert des Kodiermarkenparameters benutzt, um die Richtung der Bewegung durch den Verwürfler zu steuern. Die Mischfunktion macht von einem herkömmlichen Pseudo-Zufallsnummerngenerator Gebrauch.
  • Wie in Fig. 4a gezeigt ist, wird der Anfangswert einer Eingabe an den Pseudo- Zufallszahlengenerator angelegt. Wie dargestellt, ist dieser Typ von Generator normalerweise als Teil einer Standard-C-Laufzeitbibliothek einbezogen (SRAND- Routine, die den Anfangswert und die RAND-Funktion aufnimmt, welche einen Pseudo-Zufallszahlenwert zurückliefert). Solche Laufzeitbibliotheken sind normalerweise in Betriebssystemen enthalten, welche die C-Programmiersprache benutzen. Äquivalente Generatoren sind zur Verwendung bei anderen Programmiersprachen verfügbar. Zusätzlich wird auch ein Startnummernwert angelegt, der sich durch Überspringen einer bezeichneten Anzahl von Zufallszahlensequenzen ergibt. Da sowohl der Anfangswert als auch der Startwert Zufallswerte sind, können sie in einer Weise gewählt werden, dass die Sicherheit gewährleistet wird.
  • Wie aus Fig. 4a zu ersehen ist, wird ein Schaltzähler auf null gestellt, und die Anzahl der Verwürflerschalter wird überprüft um zu bestimmen, ob alle 32 Schalter betätigt worden sind. Als nächstes prüft die Mischfunktion nach, ob die zu ladende Zufallszahl neu (einmalig) ist. In den Containern 140-0 bis 140-31 müssen 32 einmalige Zahlen gespeichert sein. Falls die Zahl nicht einmalig ist, springt die Funktion zu einer anderen Zufallszahl der Sequenz. Als nächstes prüft die Mischfunktion, ob der Schaltmechanismus gerade eine Kodierfunktion oder eine Dekodierfunktion durchführt. Wie dargestellt, vergleicht die Mischfunktion in beiden Fällen das niederstwertige Bit des numerischen Wertes jeder Quellenbitposition und jeder Bestimmungsbitposition (d. h. den in dem zugehörigen Container gespeicherten Zufallszahlenwert), um zu bestimmen, ob sie einander gleich sind. Dies wird durch Ausführen einer Exklusiv-ODER-Verknüpfung dieser Bits ermittelt. Wenn sie nicht gleich sind, wird das gerade bewegte Bit in die nichtinvertierende Eingabe-Bit-Position bewegt. Wenn sie gleich sind, wird das gerade bewegte Bit in die invertierende oder komplementierende Bit-Position bewegt. Hieran schließt sich das Inkrementieren des Schaltzählers um Eins an. Die genannte Sequenz wird solange wiederholt, bis alle 32 Schaltoperationen durchgeführt worden sind. Wie dargestellt, liefert die Mischfunktion das Ergebnis zurück, das dem im Ausgaberegister 18 gespeicherten 32-Bitwert oder dem im Eingaberegister 12 gespeicherten binären 32-Bit-Eingabewert entspricht. Der Quellencode für die Mischfunktion ist im Anhang I dargestellt.
  • Die alphanumerische Kodierfunktion wird von einer Schlüsselfunktionserzeugungs-Routine und einer Wertfunktionserzeugungs-Routine ausgeführt. Die Schlüsselfunktionserzeugungs-Routine nimmt einen 32-Bitwert und wandelt ihn in eine Folge von alphanumerischen Zeichen um. Dies wird durch Extrahieren von Gruppen von 5 Bits und Benutzen derselben als Index in der Tabelle von 32 alphanumerischen Zeichen erreicht. Jedes Byte wird benutzt, um zwei Zeichen zu bilden, nämlich eines aus den hochrangigen fünf Bits und das andere aus den niederrangigen fünf Bits. Am Ende von acht Zeichen wird ein Nullzeichen platziert.
  • Ein Zeiger wird an diese statische Kette angesetzt, und normalerweise würde eine Kopie der Kette hergestellt, ehe die Schlüsselerzeugungsfunktion erneut aufgerufen wird.
  • Fig. 4b ist ein Flussdiacramm, das die Operation der Schlüsselherstellungsfunktion veranschaulicht. Der binäre Eingabewert wird als einer aus vier Bytes bestehend betrachtet, die als Bytes 0 bis 3 bezeichnet sind. Wie dargestellt, beendet diese Funktion als erstes die gespeicherte Ergebniskette mit einem Leer- oder Nullzeichen. Als nächstes erstellt die Funktion einen Zähler zum Speichern eines numerischen Byte-Indexwertes von (i). Dieser Wert identifiziert den Index für das umzuwandelnde Byte. Da dies der erste Schritt ist, wandelt die Schlüsselerzeugungsfunktion die fünf ranghöchsten Bits des Bytes (i) in das aus der alphanumerischen Tabelle entnommene Zeichen um und speichert das Zeichen im Ergebnisplatz mit Index (i*2). Als nächstes wandelt die Schlüsselerzeugungsfunktion fünf niederrangige Bits des Bytes (i) in das aus der alphanumerischen Tabelle entnommene Zeichen um und speichert das Zeichen im Ergebnisplatz mit Index (i*2 + 1). Wenn alle vier Bytes behandelt worden sind, eliminiert die Funktion alle nachfolgenden Nullwertzeichen und liefert dann einen Zeiger, der den Platz des Ergebnisses bezeichnet. Der Quellencode dieser Funktion ist in Anhang II dargestellt.
  • Die Werterzeugungsfunktion nimmt eine Folge von alphanumerischen Zeichen und wandelt sie in einen 32-Bitwert um. Dies wird durch Bilden eines 5-Bitwertes aus den alphanumerischen Zeichen und Kombinieren derselben erreicht, um den 32-Bitwert zu bilden. Nach jedem Zeichen wird in der Tabelle 204 gesucht, und seine Position wird als Wert benutzt.
  • Fig. 4c ist ein Flussdiagramm, das die Operation der Werterzeugungsfunktion veranschaulicht. Wie dargestellt, setzt die Werterzeugungsfunktion zuerst das Ergebnisfeld auf null und setzt einen Zeichenzähler (i) gleich null. Als nächstes ermittelt sie, ob dort ein Schlüsselzeichen zurückgeblieben ist. Als nächstes sucht sie nach dem Schlüsselzeichen in der "keychars"-Tabelle. Falls das Schlüsselzeichen gefunden wird, wird die Position oder der Index (j) des lokalisierten Schlüsselzeichens in dem Ergebnisfeld gespeichert. Falls die Zeichenzählung kleiner als 8 ist, wird der Zeichenzähler um eins inkrementiert. Auch der Schlüsselzeiger wird um eins für die Bearbeitung des nächsten Schlüsselzeichens inkrementiert. Wenn alle Schlüsselzeichen behandelt worden sind, liefert die Werterzeugungsfunktion das Ergebnis zurück. Es sei darauf hingewiesen, dass alle unwesentlichen Zeichen nicht in der Tabelle vorkommen. Der Quellencode dieser Routine ist im Anhang III dargestellt.
  • Beschreibung der Betriebsweise
  • Bezugnehmend auf die Fig. 1a bis 1c und 2 soll die Benutzung des Schutzschaltwerks 10 in Bezug auf die Flussdiagramme der Fig. 3a und 3b beschrieben werden. Fig. 2 stellt beide Entwickler- und Benutzerumgebungen dar, die die Lehren der vorliegenden Erfindung verwenden. Das Schutzschaltwerk 10 enthält, wenn es in der Anwendungsentwickler-Systemumgebung 40 benutzt wird, die Kodierroutinen, um einen gültigen Schlüssel zu berechnen. Es kann auch die Dekodierroutinen enthalten, die auch in der Benutzerumgebung 50 verwendet werden, um zu verifizieren, dass die Anwendung die Schlüsselwerte unter Benutzung gültiger und ungültiger Schlüssel korrekt bearbeitet.
  • Wie in Fig. 2 dargestellt, sind alle diese Routinen in einer Bibliothek 400 gespeichert, die mit den zum Ablauf zu bringenden Anwendungen 1 und 2 verbunden sind. Auch die Systemumgebung 40 enthält Speicherraum für den Verwürfler- Schaltfeldspeicher 402, der dem Feld 14 der Fig. 2 äquivalent ist, und eine Alias- Tabelle 404, die der Tabelle 204 der Fig. 2 äquivalent ist. Die Anwendung 2 wird von dem Entwickler zum Zwecke der Erzeugung eines gültigen Schlüssels gefahren. Genauer gesagt liefert die Anwendung Anfangs- und Startwerte, die als Funktion von bestimmten Identifkationsinformationen generiert werden, welche von dem Entwickler bereitgestellt werden. Beispielsweise wird der Startwert durch die CPU-Seriennummer bestimmt, während der Anfangswert für ein besonderes Produkt gewählt wird, wobei sein Wert so weit wie möglich versteckt wird. Die Anfangs- und Startwerte werden als Eingaben an das Pseudo- Zufallszahlengeneratorprogramm angelegt, das als Teil der Entwicklerumgebung 40 einbezogen ist. Zusätzlich liefert die Anwendung einen binären 32-Bitwert. Gemäß der Erfindung ruft die Anwendung die Mischfunktionsroutine auf, die in der Bibliothek 400 gespeichert ist und liefert als Eingaben den Anfangs-, den Start- und den binären 32-Bitwert. Die Routine erzeugt als Ausgabe einen weiteren 32-Bitwert, dessen Bits unter Benutzung des Verwürflerfeldes 402 in der weiter oben beschriebenen Weise zufallsbedingt umgeordnet werden. Als nächstes wird die Schlüsselerzeugungsfunktionsroutine aufgerufen, wie in Fig. 3a dargestellt ist. Diese Routine nimmt den von der Mischfunktionsroutine gelieferten 32-Bitwert und wandelt ihn in eine Kette oder Folge von alphanumerischen Zeichen um, unter Verwendung der Alias-Tabelle 402 in der weiter oben beschriebenen Weise. Die Routine setzt an das Ende der Keife ein Nullzeichen und speichert sie in einem Schlüsselablagespeicher 406. Wie in Fig. 2 angegeben ist, wird wieder ein Schlüsselzeiger an diese statische Kette durch die Routine zur Anwendung 2 gesetzt. Dies beendet die Kodiersequenz.
  • Der Entwickler verifiziert dann, ob die Anwendung die Schlüsselwerte durch Abwickeln der Anwendung 1 korrekt bearbeitet. Diese Sequenz ist in Fig. 3b dargestellt. Zuerst liest die Anwendung den an den Benutzer gelieferten Schlüssel, der in diesem Falle einem vorher erzeugten Schlüssel oder einem Testwert entspricht. Auf den Schlüssel wird durch den Schlüsselzeiger hingewiesen. Als nächstes ruft die Anwendung die Werterzeugungsfunktion auf. Diese Funktion nimmt die Kette alphanumerischer Zeichen und wandelt sie im Wege der Durchsuchung der Alias-Tabelle 404 in der vorher beschriebenen Weise in einen 32- Bitwert um. Wie in Fig. 3b beschrieben, wird als nächstes die Mischfunktionsroutine der Bibliothek 400 aufgerufen. Diese Routine nimmt den 32-Bitwert und ordnet seine Bits unter Benutzung des Verwürflerfeldes 402 um, um einen anderen 32-Bitwert zu bilden, der dem binären Eingabewert entspricht.
  • Wie in Fig. 2 dargestellt, wird diese Zahl an die Anwendung zurückgeliefert. Die Werte werden durch die Anwendung der Fig. 3b verglichen, und falls die geeigneten Abschnitte identisch zusammenpassen, wird der Schlüssel als gültig angesehen. Aus dem gültigen Wert, der aus dem dem Benutzer gelieferten Schlüssel abgeleitet ist, können bestimmte Informationen entnommen werden, wie dies hier erklärt ist. Ein solcher berechneter gültiger Schlüsselwert kann die Seriennummer der Systemmaschine, einen Produktkode und einen kodierten Wert enthalten, der die maximale Anzahl von Benutzern darstellt, die bei dem System zugelassen sind. Insbesondere kann der gültige 32-Bitschlüsselwert die folgenden Informationen enthalten:
  • 01 ... 19
  • CPU-Serien-Nr.
  • 20 ... 27
  • Produktcode
  • 28 ... 31
  • max. Benutzerzahl
  • Auch der gültige 32-Bitschlüsselwert kann Duplikatdaten enthalten, wie folgt:
  • 0 ... 6
  • Jahr-1990
  • 8 ... 15
  • Jahrestag
  • 16 ... 22
  • Jahr-1990
  • 23 ... 31
  • Jahrestag
  • Im Falle, dass der gültige Schlüsselwert die CPU-Seriennummer sowie einen Produktcode enthält, kann die Anwendung diese Werte durch Zugreifen auf solche Informationen vergleichen; und wenn sie zueinander passen, kann die Anwendung das maximale Benutzerfeld und die Verwendung dieses Wertes entnehmen. Im Falle, dass der gültige Schlüsselwert Duplikatdaten enthält, wird der Schlüsselwert durch Vergleichen der duplizierten Daten validiert.
  • Wie dargestellt, zeigt Fig. 2 auch die Benutzersystemumgebung 50. Diese Umgebung enthält nur die Routinen zum Verifizieren des Schlüssels. Wie gezeigt, liefert der Entwickler normalerweise den gültigen Schlüssel zusammen mit der Benutzerumgebungsanwendung, paketiert in einem Schweißverpackungsbehälter, wie er in der Softwareindustrie Standard ist. Der Benutzer steckt den Benutzerschlüssel ein, der der Anwendung beigelegt ist. Die Anwendung führt die Sequenz der Operationen der Fig. 3b durch. Wie weiter oben erläutert, involviert dies das Aufrufen der Werterzeugungsfunktionsroutine, die den Schlüssel in einen 32- Bitwert umwandelt. Anschließend wird die Mischfunktion aufgerufen, welche die 32-Bits umordnet, um den wirklichen binären 32-Bitwert zu bilden. Die für die Validierung benutzte Information wird aus dem Schlüsselwert abgeleitet und mit den bekannten Werten für die Anwendung verglichen, um festzustellen, ob der Schlüssel gültig ist. Falls er dies ist, kann die Anwendung zusätzliche Informationen entnehmen, wie etwa die maximale Anzahl von Benutzern. Die Anhänge IV und V stellen den Quellencode für die Funktionen der Fig. 3a und 3b bereit.
  • Aus dem Obigen geht hervor, auf welche Weise das Schutzschaltwerk der vorliegenden Erfindung in der Lage ist, Schlüsselwerte, die Softwarepakten zugeordnet sind, zu liefern, die nicht leicht dupliziert werden können, und die Informationen enthalten, welche im Rahmen von Lizenzverifikationen von Nutzen sind. Die Einzelheiten des Schutzschaltwerks wie auch die der Quellencodes brauchen nicht geschützt zu werden. In dieser Hinsicht muss nur eine minimale Menge an Informationen versteckt oder verborgen zu werden, wodurch das Ausmaß der normalerweise erforderlichen Schutzmaßnahmen vernngert wird.
  • Da weiter das Schutzschaltwerk nicht von der Formatierung oder vom Ordnen von Bits, Bytes, etc. abhängt, kann es benutzt werden, um gültige Schlüssel bei irgendwelchen Maschinentypen zu generieren. Es ist nicht erforderlich, dass solche Maschinen einen Pseudo-Zufallszahlengenerator haben. Ein weiterer Vorteil des Schutzschaltwerks besteht darin, dass es nur ein geringes Maß an Kodierung benötigt, um die erforderlichen Funktionen zu implementieren.
  • Für Fachleute auf diesem Gebiet dürfte klar sein, dass viele Änderungen am Schutzschaltwerk der vorliegenden Erfindung vorgenommen werden können. Beispielsweise können unterschiedliche Benutzeridentifikationsinformationen in Verbindung mit dem Schaltwerk verwendet werden. Auch können nur Teile des Schutzschaltwerks verwendet werden. Beispielsweise kann die Mischfunktion getrennt verwendet werden, um einen binären Eingabewert zu verschlüsseln. In ähnlicher Weise kann die Kodierer-/Dekodiererfunktion oder die Schlüsselherstellungs/-Wertherstellungsfunktion getrennt durchgeführt werden, um eine Binärwerteingabe in eine alphanumerische Kette von Zeichen zu kodieren/dekodieren. Anhang I Anhang II Anhang III Anhang IV Anhang V

Claims (2)

1. Gerät zum Schützen von Softwareelementen in einem Computersystem gegen nichtautorisiertes Kopieren und Verteilen durch Erzeugen von Benutzerschlüsseln aus binären Eingabewerten, und zum umgekehrten Transformieren von Benutzerschlüsseln in die genannten binären Eingabewerte, wobei das Gerät umfaßt:
- ein Eingaberegister (11) zum Speichern eines ersten binären n-Bit- Wertes, der eine vorbestimmte Anzahl von Bytes enthält, wobei der genannte erste binäre Wert in einen Benutzerschlüssel umgewandelt werden soll;
- einen Pseudo-Zufallszahlgenerator (16), der als Antwort auf einen Anfangswert eine wiederholbare Sequenz von Zufallszahlen generiert und der als Anwort auf einen Startwert eine designierte Anzahl von Zufallszahlsequenzen überspringt, und bei dem die genannten Anfangs- und Startwerte willkürliche Werte sind, die eine Sicherung erfordern, um eine Verdoppelung von gültigen Schlüsseln trotz Offenbarung des Schutzmechanismus' zu erhüten;
- einen Verwürfler (14), mit n Multibit-Containern (140-0 ... 140-31) zum Speichern von n Multibit-Zufallszahlen, die in der genannten wiederholbaren Sequenz enthalten sind;
- ein Ausgaberegister (18) zum Speichern eines zweiten binären n- Bit-Wertes; und
- Reorganisiereinrichtungen (140-0 ... 140-31, Fig. 1C; Fig. 4A) zum zufallsbestimmten Bewegen jedes der n Bits des ersten binären n Bitwertes in eine neue Bitposition des genannten Ausgaberegisters als Funktion von einer der genannten n Zufallszahlen, die in einem entsprechenden einzelnen Container der genannten Container gespeichert sind, und wobei
der genannte Verwürfler (14) weiter Einrichtungen (140-0 ... 140- 31; Fig. 1C; Fig. 4A) umfaßt zum Bilden der Exklusiv-ODER- Verknüpfung eines numerischen Wertes für jede Bitposition des genannten Eingaberegisters mit einem Zufallszahlwert eines entsprechenden Containers der genannten Container, um ein niederstwertiges Bit zu erzeugen, dessen Status entweder ein Komplement oder ein Nicht-Komplement einer entsprechenden Ausgabe der genannten Reorganisiereinrichtung (140-0 ... 140-31; Fig. 1C; Fig. 4A) zum Bewegen in das genannte Ausgaberegister (18) wählt;
und einen alphanumerischen Kodierer (20), der funktionsmäßig an den genannten Verwürfler (14) zum Empfangen des genannten binären n Bitwertes gekoppelt ist, um überlappende Abschnitte (200- 1a, 200-1b...) des genannten zweiten Binärwertes entsprechend der Gruppe von m Bits aus jedem Byte des genannten zweiten Binärwertes zu entnehmen, wobei m einen Wert unter demjenigen der Anzahl von Bits eines Byte besitzt, und um die genannten Gruppen von Bits als Indices in einer Tabelle (204) zum Verweisen auf unterschiedliche Zeichen von alphanumerischen Zeichen zu benutzten, die in der genannten Tabelle gespeichert sind, um eine Serie von alphanumerischen Zeichen entsprechend einem einzelnen Schlüssel der genannten Benutzerschlüssel zu erzeugen.
2. Verfahren zum Schützen von Softwareelementen in einem Computersystem gegen nichtautorisiertes Kopieren und Verteilen durch Erzeugen von Benutzerschlüsseln aus binären Eingabewerten, und zum umgekehrten Transformieren von Benutzerschlüsseln in die genannten binären Eingabewerte, wobei das Verfahren die folgenden Schritte umfaßt:
- (a) Speichern in einem Eingaberegister eines ersten binären n Bitwertes, der eine vorbestimmte Anzahl von Bytes enthält, wobei der genannte erste Binärwert in einen Benutzerschlüssel umgewandelt werden soll;
- (b) Erzeugen einer wiederholbaren Sequenz von Zufallszahlen durch Anwenden eines Anfangswertes bei einem Pseudo- Zufallszahlgenerator, der als Antwort auf einen Startwert eine vorbezeichnete Anzahl von Zufallszahlsequenzen überspringt;
- (c) Speichern von n Zufallszahlen in einer entsprechenden Anzahl von Multibit-Containerplätzen;
- (d) Verwürfeln der Bits des genannten ersten binären n Bitwertes durch zufallbestimmtes Bewegen jedes der genannten n Bits des genannten ersten binären n Bitwertes in eine neue Bit-Position eines Ausgaberegisters, als Funktion einer einzelnen Zahl der genannten n-Zufallszahlen, die in einem entsprechenden einzelnen Platz der genannten Behälterplätze gespeichert sind;
- (e) Zuweisen einer entsprechenden Anzahl von Bit- Positionswerten, definiert durch die Positionen des genannten Eingaberegisters, an den genannten ersten binären n Bitwert;
- (f) Bilden einer Exklusiv-ODER-Verknüpfung jedes der genannten Bit-Positionswerte mit einer entsprechenden Zahl der genannten n Multibit-Zufallszahlen, um n niederstwertige Bits zu erzeugen, die für die Bestimmung darüber benutzt werden, ob ein entsprechendes Bit der genannten binären n Bitwerte komplementiert werden muß, wenn es in die genannte neue Bitposition des genannten Ausgaberegisters bewegt wird;
- (g) Kodieren des genannten zweiten Binärwertes in eine Serie von alphanumerischen Zeichen, die als ein einzelner Schlüssel der genannten Benutzerschlüssel durch Entnehmen unterschiedlicher, einander überlappender, Abschnitte aus dem genannten zweiten Binärwert benutzbar sind, wobei die genannten unterschiedlichen Abschnitte denjenigen Gruppen von m Bits entsprechen, die aus jedem Byte des genannten zweiten Binärwertes entnommen werden, wobei m von ihnen einen Wert kleiner als denjenigen der Anzahl von Bits eines Bytes haben, und durch Benutzen jeder Gruppe von Bits als Indizes in einer Tabelle zum Verweisen auf unterschiedliche Zeichen von alphanumerischen Zeichen, die in der genannten Tabelle gespeichert sind, um die genannte Serie von alphanumerischen Zeichen zu erzeugen.
DE69330489T 1992-12-17 1993-11-18 Vorrichtung zum Schutz von Software Expired - Lifetime DE69330489T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/992,210 US5276738A (en) 1992-12-17 1992-12-17 Software data protection mechanism

Publications (2)

Publication Number Publication Date
DE69330489D1 DE69330489D1 (de) 2001-08-30
DE69330489T2 true DE69330489T2 (de) 2001-11-22

Family

ID=25538047

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69330489T Expired - Lifetime DE69330489T2 (de) 1992-12-17 1993-11-18 Vorrichtung zum Schutz von Software

Country Status (3)

Country Link
US (1) US5276738A (de)
EP (1) EP0614147B1 (de)
DE (1) DE69330489T2 (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5363448A (en) * 1993-06-30 1994-11-08 United Technologies Automotive, Inc. Pseudorandom number generation and cryptographic authentication
US5377270A (en) * 1993-06-30 1994-12-27 United Technologies Automotive, Inc. Cryptographic authentication of transmitted messages using pseudorandom numbers
US5734819A (en) * 1994-10-12 1998-03-31 International Business Machines Corporation Method and apparatus for validating system operation
DE69521977T2 (de) * 1994-12-13 2002-04-04 International Business Machines Corp., Armonk Verfahren und System zur gesicherten Programmenverteilung
US5758068A (en) * 1995-09-19 1998-05-26 International Business Machines Corporation Method and apparatus for software license management
US6067622A (en) * 1996-01-02 2000-05-23 Moore; Steven Jerome Software security system using remove function to restrict unauthorized duplicating and installation of an application program
US5933620A (en) * 1996-03-28 1999-08-03 Advanced Micro Devices, Inc. Method and apparatus for serializing microprocessor identification numbers
US5745389A (en) * 1996-04-04 1998-04-28 Bull Hn Information Systems Inc. System and mechanism for assigning pre-established electronic addresses to printed circuit boards
US5682474A (en) * 1996-04-09 1997-10-28 United Microelectronics Corp. Method of dynamic protection and its apparatus
US5946497A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. System and method for providing microprocessor serialization using programmable fuses
GB9624127D0 (en) * 1996-11-20 1997-01-08 British Telecomm Transaction system
US7212632B2 (en) * 1998-02-13 2007-05-01 Tecsec, Inc. Cryptographic key split combiner
US6885747B1 (en) 1997-02-13 2005-04-26 Tec.Sec, Inc. Cryptographic key split combiner
US6694433B1 (en) * 1997-05-08 2004-02-17 Tecsec, Inc. XML encryption scheme
CA2210199A1 (en) 1997-07-11 1999-01-11 Mitel Corporation Method and apparatus for the generation of non-linear confusion data
US8077870B2 (en) * 1998-02-13 2011-12-13 Tecsec, Inc. Cryptographic key split binder for use with tagged data elements
US7095852B2 (en) 1998-02-13 2006-08-22 Tecsec, Inc. Cryptographic key split binder for use with tagged data elements
US7079653B2 (en) * 1998-02-13 2006-07-18 Tecsec, Inc. Cryptographic key split binding process and apparatus
US7111173B1 (en) 1998-09-01 2006-09-19 Tecsec, Inc. Encryption process including a biometric unit
US6684330B1 (en) * 1998-10-16 2004-01-27 Tecsec, Inc. Cryptographic information and flow control
AU6494399A (en) * 1998-10-28 2000-05-15 Datamark Technologies Pte Ltd Methods of digital steganography for multimedia data
US7095851B1 (en) 1999-03-11 2006-08-22 Tecsec, Inc. Voice and data encryption method using a cryptographic key split combiner
JP4615128B2 (ja) * 1999-03-11 2011-01-19 テックセック インコーポレイティッド 暗号鍵スプリットコンバイナを用いる音声及びデータ暗号化方法
US6681212B1 (en) 1999-04-23 2004-01-20 Nianning Zeng Internet-based automated system and a method for software copyright protection and sales
DE29921698U1 (de) 1999-12-09 2000-03-02 Kalkowski, Klaus, 65830 Kriftel Vorrichtung zum Erzeugen und Ausgeben von Zufallsereignissen
US6754823B1 (en) * 2000-10-24 2004-06-22 Kurzweil Cyberart Technologies Technique for distributing software
US7085742B2 (en) * 2000-10-30 2006-08-01 Xybo Systems, Inc. Authenticating software licenses
EP2009634A1 (de) 2000-12-14 2008-12-31 ECD Systems, Inc. Systeme und Verfahren zur Modifikation optischer Medien
US7562396B2 (en) * 2001-08-21 2009-07-14 Ecd Systems, Inc. Systems and methods for media authentication
US7643393B2 (en) 2001-12-12 2010-01-05 Ecd Systems, Inc. Systems and methods for optical media modification
US7716485B2 (en) 2002-02-01 2010-05-11 Sca Ipla Holdings Inc. Systems and methods for media authentication
US7308250B2 (en) * 2004-03-16 2007-12-11 Broadcom Corporation Integration of secure identification logic into cell phone
US20060013489A1 (en) * 2004-07-16 2006-01-19 Pospischil Robert R Methods of representing a color with a compressed code
JP2007066271A (ja) * 2005-09-02 2007-03-15 Canon Inc 情報処理装置及びその制御方法、データ処理装置、並びにプログラム
GB0521664D0 (en) * 2005-10-25 2005-11-30 Cryptara Ltd A method of generating a random key
US8413136B2 (en) * 2009-05-08 2013-04-02 Microsoft Corporation Application virtualization
US8811615B2 (en) * 2009-08-05 2014-08-19 Verayo, Inc. Index-based coding with a pseudo-random source
US9269418B2 (en) * 2012-02-06 2016-02-23 Arm Limited Apparatus and method for controlling refreshing of data in a DRAM
IL235729A (en) 2014-11-17 2017-06-29 Kaluzhny Uri A device and method for securely storing information
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
US10419208B2 (en) 2016-06-02 2019-09-17 Wipro Limited Method and system for encrypting data
CA3072652C (en) * 2017-12-12 2024-06-11 Raytheon Canada Ltd. Rotary switch or other encoder having non-sequential unique bit pattern and method for design

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4176247A (en) * 1973-10-10 1979-11-27 Sperry Rand Corporation Signal scrambler-unscrambler for binary coded transmission system
US4278837A (en) * 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
IE53125B1 (en) * 1981-06-19 1988-07-06 Marconi Co Ltd Radio communications apparatus
US4593353A (en) * 1981-10-26 1986-06-03 Telecommunications Associates, Inc. Software protection method and apparatus
US4558176A (en) * 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
US4742543A (en) * 1983-12-22 1988-05-03 Frederiksen Jeffrey E Video transmission system
US4598170A (en) * 1984-05-17 1986-07-01 Motorola, Inc. Secure microprocessor
US4888798A (en) * 1985-04-19 1989-12-19 Oms, Inc. Modular software security
JPS63248246A (ja) * 1987-04-03 1988-10-14 Toshiba Corp 暗証照合方式
JPH0199159A (ja) * 1987-10-13 1989-04-18 Matsushita Electric Ind Co Ltd 端末認証方法
FR2641921B1 (fr) * 1988-12-30 1991-03-15 Portenseigne Radiotechnique Dispositif generateur de sequence pseudo-aleatoire

Also Published As

Publication number Publication date
EP0614147A2 (de) 1994-09-07
EP0614147A3 (en) 1995-09-27
US5276738A (en) 1994-01-04
EP0614147B1 (de) 2001-07-25
DE69330489D1 (de) 2001-08-30

Similar Documents

Publication Publication Date Title
DE69330489T2 (de) Vorrichtung zum Schutz von Software
DE69229531T2 (de) Datensicherheitseinrichtungen für programmierbare logische Halbleiterschaltungen
DE69634880T2 (de) Verfahren und gerät zum kontrollierten zugriff zu verschlüsselten datenakten in einem computersystem
DE19733829C2 (de) Verfahren zum Verschlüsseln bzw. Entschlüsseln einer Datenfolge
DE69604307T2 (de) Kodierungstechnik für software
DE3407642C2 (de)
DE69431390T2 (de) Erzeugung eines Geheimübertragungsschlüssels unter Gebrauch sequentieller Verknüpfung
DE4010828B4 (de) Verfahren zum Warten einer Industriesteuerung
DE2846495C2 (de) Zentraleinheit
DE3650335T2 (de) Rechenverfahren und -gerät für endlichfeldmultiplikation.
EP0155399A2 (de) Schutzanordnung zur Verhinderung der unerlaubten Ausführung eines Programms
DE2734456A1 (de) Datenabtastsystem zum bestimmen der gueltigkeit eines aufzeichnungstraegers
DE2417795C2 (de) Datenverarbeitungsanlage
DE602004004079T2 (de) Befehl zur berechnung eines sicherheits-nachricht-authentifizierungskodes
DE69636268T2 (de) Informationsverarbeitungsgerät zur Datenübertragung zu/von mehreren Registern durch Kurzwortbefehle
Kanovich Petri nets, Horn programs, linear logic and vector games
EP0189734B1 (de) Verfahren und Vorrichtung für die Umwandlung einer digitalen Datensequenz in die verschlüsselte Form
EP1164456A1 (de) Software-Schutzmechanismus
Cichon et al. Ordinal recursive bounds for Higman's theorem
WO2002091168A2 (de) Verfahren zum schützen eines rechners gegen manipulation von registerinhalten und rechner zum durchführen des verfahrens
DE2310553A1 (de) Vorrichtung zur durchfuehrung arithmetischer und logischer operationen
DE10124139A1 (de) Verfahren und Vorrichtung zur Sicherung der Datenübertragung zwischen einem Zentralprozessor und einem Speicher
Jacopin Classical AI planning as theorem proving: The case of a fragment of linear logic
DE2024304C3 (de) Adressenwandler zur Bestimmung eines Speicherplatzes in einem von mehreren Umlaufspeichern
DE69031421T2 (de) Gerät und verfahren zur signalverarbeitung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition