DE69330489T2 - Vorrichtung zum Schutz von Software - Google Patents
Vorrichtung zum Schutz von SoftwareInfo
- 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
Links
- 230000000295 complement effect Effects 0.000 claims description 7
- 238000000034 method Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 230000001131 transforming effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 43
- 230000001681 protective effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 240000001973 Ficus microcarpa Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation 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
- Die vorliegende Erfindung bezieht sich auf Datenschutzsysteme, und insbesondere auf Systeme, die im Rahmen der Software-Lizenzvergabeüberprüfung von Nutzen sind.
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1992
- 1992-12-17 US US07/992,210 patent/US5276738A/en not_active Expired - Lifetime
-
1993
- 1993-11-18 EP EP93118579A patent/EP0614147B1/de not_active Expired - Lifetime
- 1993-11-18 DE DE69330489T patent/DE69330489T2/de not_active Expired - Lifetime
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 |