DE2937354A1 - Verfahren und einrichtung zur ueberwachung des gebrauchs eines programmierbaren rechners - Google Patents

Verfahren und einrichtung zur ueberwachung des gebrauchs eines programmierbaren rechners

Info

Publication number
DE2937354A1
DE2937354A1 DE19792937354 DE2937354A DE2937354A1 DE 2937354 A1 DE2937354 A1 DE 2937354A1 DE 19792937354 DE19792937354 DE 19792937354 DE 2937354 A DE2937354 A DE 2937354A DE 2937354 A1 DE2937354 A1 DE 2937354A1
Authority
DE
Germany
Prior art keywords
program
instructions
commands
uncoded
decoding
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.)
Withdrawn
Application number
DE19792937354
Other languages
English (en)
Inventor
William J Thomas
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.)
Individual
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
Application filed by Individual filed Critical Individual
Publication of DE2937354A1 publication Critical patent/DE2937354A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • 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/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Description

Hamburg, den 7. September 1979 229579 - 1574A IKlCF.
Priorität: 14. September 1978, U.S.A., Pat.Anm.Nr. 942 422
Anmelder;
UJilliam J. Thomas
23995 Schulties Road
Los Gatos, CaO-. 95030, U.S.A.
Verfahren und Einrichtung zur Überwachung des Gebrauchs eines programmierbaren Rechners
Die Erfindung bezieht sich auf eine Methode zur Kontrolle des Gebrauchs eines programmierbaren Rechners und betrifft insbesondere ein Verfahren und eine Einrichtung zur Verhütung einer unbefugten Veruielfältigung der Software für den Be-
030013/0870
trieb des Rechners und zur Verhütung einer unbefugten Abänderung der Betriebsdaten bzuj. des Rechenverfahrens des Rechners.
Information hat heutzutage kommerziellen Wert und ist deshalb ein vermögenswertes Handelsobjekt geworden. Dies hat zu einem beträchtlichen Wachstum der gesamten Rechnerindustrie geführt, und es wurden immer mehr Rechner eingesetzt, um Informationen oder Daten zu speichern, zu verarbeiten und für die verschiedensten Zwecke auszunutzen. Die Technik und Technologie bei der Hardware, d* h. also bei den Bausteinen oder Bauelementen der Rechner, macht ständig Fortschritte, und aufgrund der großen Investitionen, die auf dem Softu/are-Gebiet gemacht wurden, ist zu erwarten, daß in der Rechner-Software-Industrie sogar noch größere Fortschritte gemacht werden, mit dem Wachstum der Rechnerindustrie sind hinsichtlich des Schutzes von Software und Daten sowie der Sicherheit gegen einen lilißbrauch und der Geheimhaltung persönlicher Daten, die mit Rechnern erfaßt und verarbeitet werden, beträchtliche Probleme entstanden. Beispielsweise liefern die Hardware-Hersteller von Mikroprozessoren identische Geräte oder Anlagen an eine Vielzahl verschiedener Benutzer. Der typische Aufbau eines Mikroprozessors gestattet es den Benutzern, den Rechner mit Hilfe einer üblichen Programmiersprache, beispielsweise Cobol zu programmieren, wie dies in einer dreiteiligen Artikelserie von Robert Frankenberg beschrieben ist, die unter dem Titel "Unraveling the
030013/0870 - 3 -
Mystery in User microprogramming" im Juni 1977 in "Technology Profile" erschienen ist. Ein Problem ist auch, daß das von einem Benutzer für den Einsatz seines Rechners aufgeschriebene Programm kopiert und ohne Erlaubnis dessen, der das Programm aufgestellt hat, für den Betrieb des Rechners eines anderen Benutzers veru/endet werden kann. Zum Schutz gegen unbefugtes Kopieren von Software wurde bereits versucht, für den Benutzer eines Mikroprozessors ein Programm zu schreiben, für dessen Befehle die veröffentlichten Befehls- oder Operationscodes der Befehlsliste des Mikroprozessors verwendet werden. Der Programmurheber kann dann eine bestimmte Anzahl, beispielsweise 20, dieser Befehle nehmen und diese zu einem Befehl in Mikrocode reduzieren. Der Benutzer kann dann diesem einen Befehl eine neue Operation zuordnen und den Hersteller des Mikroprozessors anweisen, den Rechner dadurch zu modifizieren, daß er diesen neuen Operationsbefehl zusätzlich in den Befehlsvorrat aufnimmt, ohne dies irgend jemand bekanntzugeben oder zu publizieren. Deshalb müßte man von der Funktion des neuen Operationscodes Kenntnis haben, bevor die Funktion noch einmal mit der herausgegebenen Befehlsliste einer anderen Rechenanlage weitergegeben werden und das Programm mit dem neuen Ooerationscode auf einer solchen anderen Maschine laufen könnte.
Nachteilig ist bei diesem l/ersuch, daß die Reduktion der 20 Befehle zu einem Befehl in Mikrocode die Programmierung
030013/0870
komplizierter macht. Ferner müßte ein Kontrollspeicher des Mikroprozessors, bei dem es sich um ein Gedächtnis handelt, in u/elchem die Mikroprogramme gespeichert sind, und der durch eine Steuer-Zentraleinheit des Mikroprozessors als dessen Gedächtnis verwendet wird, modifiziert bzw. umgesteuert werden, damit außer den für die Standardprogramme des lilikroprogrammes erforderlichen Leitungen bzw. Verknüpfungen zusätzliche Leitungen für die Mikrocodierung zur Verfügung stehen.
Im Zusammenhang mit dam Gebiet des Datenschutzes und der Geheimhaltung von Rechnerdaten werden große Rechenanlagen mit vom Hersteller entwickelten Operationssystemen ausgerüstet, zu welchen auch Instruktionen mit Befehlscodes gehören. Solche Operationssysteme können beispielsweise benutzt werden, um Zugang zu einer in einem Rechner gespeicherten Information, wie z. B. Kontenaufzeichnungen einer Bank, zu erhalten. Es ist jedoch möglich, daß jemand ohne Befugnis, die Kontenaufzeichnungen der Bank zu ändern, Zugang zum Rechnerraum hat und das Bedienungspult des Rechners manipuliert, um das Befehlsystem abzuändern. Zur Lösung dieses Problems des Datenschutzes und der Geheimhaltung der in Rechnern gespeicherten Daten wurden schon verschiedene Lösungen vorgeschlagen, wie z. B. Verfahren zur Identitätskontrolle, mit welchen festgestellt morden kann, wet zum Zugang zu der im Rechner gespeicherten In-
- 5 030013/0870
ORIGINAL INSPECTED
formation befugt ist. Diese Verfahren schließen die Identifizierung der Fingerabdrucke oder der Stimme sowie die Verwendung computerlesbarer Identitätskarten ein. Es hat sich jedoch gezeigt, daß diese Lösungen nicht ganz zufriedenstellend sind, da empfohlen uiird, daß für den Betrieb des Rechners auch verwaltungsmäßige Kontrollen und Verfahren durchgeführt werden sollen. Diese Kontrollen und Verfahren reichen von der Auswahl eines sicheren Aufstellplatzes für den Rechner bis zu genau festgelegten Richtlinien und Verhaltungsmaßregeln, die im einzelnen festlegen, von wem und wie der Rechner benutzt werden darf. Eine umfanreiche Diskussion des Problems des Datenschutzes und der Geheimhaltung gespeicherter Daten findet sich in dem Buch "Modern Methods for Computer Security and Privacy", Hoffman,
Prentice-Hall, Inc., New Jersey 1977.
Diese Nachteile werden mit dem erfindungsgemäßen Verfahren zur Kontrolle des Gebrauchs eines programmierbaren Rechners,
der mit einer uncodierten oder bekannten Maschinensprache betrieben wird, vermieden.
Das erfindungsgemäße Verfahren zeichnet sich dadurch aus, daß die offenen oder nicht codierten Steuerbefehle eines für den Rechner verwendeten Programmes als eine Funktion des Ortes bzw. der Speicherstelle der Befehle im Informationsspeicher und als Funktion eines Maschinenzustandes
- 6 030013/0870
AO
codiert werden, und daß der Rechner durch einen zusätzlichen Decoder ergänzt wird, der nur diese in besonderer Weise codierten Operationsbefehle decodiert.
Eine erfindungsgemäße Einrichtung zur Kontrolle oder überwachung des Gebrauchs eines programmierbaren Rechners, der mit uncodierten oder in einer bekannten Maschinensprache erstellten Operationsbefehlen arbeitet, besitzt Informationsspeicher, in welchen vom Benutzer des Rechners geschaffene Programme und Programme des Operationssystems gespeichert sind, wobei jedes Programm Instruktionen mit uncodierten und codierten Befehlen enthält. Ferner besitzt der erfindungsgemäße Rechner Decoder zur Decodierung der codierten Befehle des vom Benutzer erstellten Programms und der codierten Befehle der Instruktionen des Betriebssystem-Programms,
sowie einen Schaltkreis zu Ausführungen der Instruktionen des vom Benutzer eingerichteten Programms und des Betriebssystem-Programms mit den decodierten und den uncodierten Befehlen.
Die Erfindung umfaßt also einerseits eine methode zur Kontrolle des Gebrauchs eines programmierbaren Rechners, dessen Betrieb durch bekannte Befehlscodes gesteuert wird. Das arfindungsgemäße Verfahren schließt aber die Codierung der bekannten Befehlscodes der Instruktionen oder Befehle eines auf dem Rechner zu verwendenden Programmes ein sowie eine
030013/0870
zusätzliche Decodierung der codierten Operationsbefehle zur Ausführung des vorgesehenen Programms.
Andererseits ermöglicht die Erfindung den Aufbau einer Einrichtung zur Überwachung des Gebrauchs eines mit bekannten Operationsbefehlen arbeitenden Rechners. Das erfindungsgemäße Gerät besitzt Einrichtungen zur Speicherung eines Programms mit codierten Operationsbefehlen und Einrichtung zur Ausführung dieser Befehle des Programms in Übereinstimmung mit den decodierten Operationsbefehlen.
Weitere Vorzüge und Merkmale der Erfindung ergeben sich aus den Ansprüchen sowie aus der nachfolgenden Beschreibung und der Zeichnung, in welchen die Erfindung anhand von Beispielen näher erläutert ist. Es zeigen:
Fig. 1A eine Anzahl von Befehlen eines in einem symbolischen Code geschriebenen Rechnerprogrammss,
Fig. 1B die in eine vom Rechner verarbeitbare Maschinensprache umgesetzten Befehle gemäß Fig. 1A,
Fig. 1C die erfindungsgemäß codierten, in Fig. 1B angegebenen Befehle,
Fig. 2 eine Tafel mit 16 Möglichkeiten Null bis Neun und A - F in hexadezimaler Schreibweise,
- 8 -030013/0870
2937384
Fig. 3 einen zur Codierung der Befehle gemäß Fig. 1B in die Befehle gemäß Fig. 1C einsetzbaren logischen Schaltkreis,
Fig. 4A
Fig. 4E ein Blockschaltbild eines erfindungsgemäO aufgebauten Rechners und
Fig. 5 eine UJahrheitstabelle zur Verdeutlichung der Arbeite· weise der Erfindung.
Als ein Beispiel uiird die Erfindung im folgenden mit Bezug auf einen speziellen Rechner beschrieben, und zwar einen mikroprozessor mit der li)odell-l\!r. HCS6502 der Herstellerfirma mOS Technology, Inc. , Norristown, Pa., jetzt Commandor Business Machines of Palo Alto, California. Selbstverständlich ist jedoch die Erfindung auch bei anderen Rechnertypen einschl. Mikroprozessoren und größeren Rechnern oder Rechenanlagen anwendbar. Ebenfalls beispielsweise tuird die Erfindung unter Verwendung der hexadezimalen Schreibweise beschrieben, da viele Digitalrechner, einschl. des im vorliegenden Beispiel verwendeten, ein Zählsystem vertuenden, das auf der Basis 16 aufgebaut ist.
Für Rechner werden bekanntlich Befehlscodes als Darstellung
030013/0870
der durchzuführenden, speziellen Operationen, so daß diese vom Rechner ausgeführt werden können. Es ist üblich, daß diese Befehlscodes vom fflaschinenhersteller als Betriebsanleitung oder -Vorschrift in Form einer Befehlsliste veröffentlicht werden, in welcher die Befehlscodes symbolisch und in Maschinensprache angegeben sind. Die Befehlsliste des MCS6502-Mikroprozessors hat beispielsweise 45 Befehlscodes wie z. B. die Symbole LDA (load accumulator with memory) für "Übertrage/Wert aus Arbeitsspeicher in Akkumulator" und
JIVIP (jump to new location) für "springe zu neuer Speicherstelle".
In Fig. 1 ist ein Teil eines in symbolischem Code geschriebenen Programms dargestellt. Dabei sind sieben getrennte Befehle von SEC bis 3ΓΠΡ gezeigt. Der Befehl LDA P0IIMTL beispielsweise die Bedeutung: Übertrage von der Speicherstelle P0IIMTL in den Akkumulator. In Maschinensprache, siehe Fig. 1B, heißt dieser Befehl A5 FA, wobei A5 ein Operationscode einer veröffentlichten Maschinensprache ist und dem Symbol LDA entspricht, während FA entsprechend mit P0INTL übereinstimmt. Entsprechend hat die weitere, beispielsweise herausgegegriffene Anweisung DEC PLINTH in Fig. 1A die Bedeutung "Verringere den Informationsspeicher um 1 von der Speicherstelle POIIMTH". Der entsprechende Befehl in Maschinensprache gemäß Fig. 1B lautet C6, was bekannte Maschinensprache ist,und FB.
- 10 -
030013/0870
Es ist also zu erkennen, daO für die sieben Befehle des in Fig. 1A gezeigten Teiles eines Programmes sieben entsprechende Befehle in Maschinensprache gemäß Fig. 1B vorhanden sind.
Die Befehle gemäß Fig. 1B sind normalerweise in einem Informationsspeicher gespeichert, aus welchem Sie vom Mikroprozessor herausgeholt warden, uienn sie vom Programm zur Ausführung aufgerufen werden.
Wie in Fig. 1B veranschaulicht ist, ist jeder Befehl in einer Speicherstelle gespeichert. Beispielsweise ist der Befehl 38 an der Speicherstelle 1E07, der Befehl AS FA an der Speicherstelle 1EOB, der Befehl E9 01 an der Speicherstelle 1EOA usw. gespeichert. Nach der vorliegenden Erfindung sind aber die Operationscodes dieser Befehle an diesen Speicherstellen nicht in der bekannten Maschinensprache gespeichert, sondern in einer codierten Form, luie sie durch Vergleich der Figuren 1B und 1C ersichtlich ist. So ist der Befehlscode 38 in bekannter Maschinensprache an der Speicherstelle 1E07 als Befehlscode: 30 in codierter Maschinensprache gespeichert und der Befehlscode A5 in bekannter Maschinensprache ist an der Speicherstelle 1E08 als Befehlscode 87 in codierter Maschinensprache gespeichert. Bevor die Art der Codierung der Befehle näher erläutert wird, sollte, noch festgestellt
- 11 -
030013/0870
werden, daß die Befehle im Informationsspeicher bekanntlich als eine Bit-Folge gespeichert sind. So steht die Instruktion an der Speicherstelle 1E07, d. h. der Befehlscode 3B aus den Bits 0011 für die Ziffer 3 und den Bits 1000 für die Ziffer 8, siehe Fig. 1B und Fig. 2. Entsprechend uiäre die Instruktion an der Speicherstelle 1Ε0Θ in Bit-Form 1010 (für A), 0101 (für 5), 1111 (für F) und 1010 (für A).
Fig. 3 zeigt eine Schaltung zur Umsetzung oder Codierung der Befehle aus der in Fig. 1B gezeigten Form in die aus Fig. 1C ersichtliche Form. Ein Exklusiv-ODER-Gatter 12 hat zuiei Eingänge 14 und 16 für den Empfang des hohen oder H-Byte bzut. des niedrigen oder L-Byte der Speicheradresse, an u/elcher die entsprechende Instruktion zu speichern ist. Ein Exklusiv-ODER-Gatter 18 besitzt einen mit dem Ausgang des Gatters 12 verbundenen Eingang 20 und einen u/eiteren Eingang 22 zum Empfang des Bytes des Befehlscodes in uncodierter IKlaschinensprache gemäS Fig. 1B. Ein Festspeicher 24 (RQm) ist über eine Leitung 26 mit dem Ausgang des Gatters 18 verbunden, und an seinem Ausgang 2B erscheinen die Operationsbefehle in der gem. Fig. 1C codierten Form. Der RQW-Speicher 24 hat eine gespeicherte Informationstabelle, die aus einer Anzahl codierter Befehle zusammengesetzt ist.
In der niaschinensprache gemäQ Fig. 1B vorliegende Befehle werden uiie folgt codiert: Das Η-Byte und das L-Byte der
- 12 -
030013/0870
Adresse werden durch das Exklusiv-ÜDER-Gatter 12 verknüpft, Dann wird das Ergebnis bzw. das Ausgangssignal des Gatters 12 durch das Exklusiv-ODER-Gatter 18 mit dem Befehlscode auf der Leitung 22 verknüpft. Das Ausgangssignal auf der Leitung 26 ist dann eine Adresse einer Speicherstelle im ROIYl-Speicher 24, durch dessen Ansprechen sein Inhalt an der von der Adresse angesteuerten Stelle als Ausgangssignal auf der Leitung 28 erscheint.
Am Beispiel der beiden Operationscodes 38 und A5 nach Fig.1B wird im folgenden die Codierung oder Umsetzung in die Operationscodes 30 und 87 nach Fig. 1C verdeutlicht. Die Instruktion des Operationscode 38 ist in codierter Form an der Speicherstelle 1E07 zu speichern, während die nächste Instruktion mit dem Operationscode A5 in codierter Form an der Speicherstelle 1E08 gespeichert werden soll.
Für die erste in Fig. 1B dargestellte Information luird der Adressenteil 1E auf die Leitung 14 gegeben und im Exklusiv-ODER-Gatter 12 mit dem auf der Leitung 16 eingegebenen Adressenteil 07 verknüpft. In hexadezimaler Schreibweise kann diese Funktion wie folgt dargestellt werden:
1E - 0001 1110
οχ - Poop Pin
19 0001 1001
Am Ausgang des Gatters 12 erscheint also das der Zahl 19
030013/0870
entsprechende Digital-Wort 0001 1001. Dieses Ausgangssignal des Gatters 12 auf der Leitung 20 ujird dann über das Exklusiv-ODER-Gatter 18 mit dem Operationscode 38 auf der Leitung 22 wie folgt verknüpft:
19 0001 1001
β
38 0011 1000
21 0010 0001
Am Ausgang des Gatters 18 erscheint somit ein der Adresse 21 für den ROffl-Speicher 24 entsprechendes Digital-Ulort 0010 0001 Der Inhalt des ROM-Speichers 24 an der mit der Adresse 21 angesteuerten Speicherstelle ist dann der codierte Befehl 30 oder in digitaler Form 0011 0000.
Für die nächste Instruktion luird der Adressenteil 1E auf der Leitung 14 über das Exklusiu-ODER-Gatter mit dem Adressenteil 08 auf der Leitung 16 uiie folgt verknüpft:
1E 0001 1110
β
08. 0000 1000
16 0001 0110
Das Ergebnis dieser Operation ist also eine Zahl 16. Dieser Ausgang des Gatters 12 auf der Leitung 20 und der Befehls-
- 14 -
030013/0870
code Α5 auf der Leitung 22 werden dann durch das Gatter uÜB folgt verknüpft:
16 0001 0110
β
1010 0101
B3 1011 0011
Das auf der Leitung 26 erscheinende Ergebnis ist also B3 oder in digitaler Form 1011 0011, welches die nächste Adresse für den ROIti-Speicher 24 ist. Der Inhalt des ROlKl-Speichers 24 an der von der Adresse B3 angesteuerten Speicherstelle ist 87 bzuj. 1000 0111, der dann auf der Leitung 28 als codierter Operationsbefehl erscheint.
Die beiden vorstehenden Beispiele verdeutlichen, ωie die Instruktionen in uncodierter Maschinensprache nach Fig.1B codiert oder umgesetzt werden in die Instruktionen nach Fig. 1C. Die Tabelle des ROM-Speichers 24 ist derart, daß mit jeder unterschiedlichen Adresse auf der Leitung 26 ein anderer Inhalt bztu. ein anderer codierter Befehl erreicht bzui. angesprochen wird.
Fig. 4A zeigt schematisch vereinfacht einen Teil eines Rechners oder Rechensystems 30, das mit den in Fig. 1C angegebenen Instruktionen mikroprogrammiert ist. Das Sy-
- 15 030013/0870
βtem 30 weist einen mikroprozessor 32 auf, und zwar das obenerwähnte modell mCS6502. Ein Oscillator 34 bildet einen Zeit- oder Taktgeber für das System 30, und ein Rücketelleingang RES auf einer Leitung 36 dient zum Rückstellen oder Starten des Mikroprozessors 32 aus einem Ruhe- oder "Aus"-Zustand. Der Mikroprozessor 32 liefert Information an eine Anzahl von Sammelschienen oder Bussen einschl. Adress-Bussen AB0-AB7 bzw. AB8-AB15 für die Zuführung von L- und Η-Adressen sowie Datenbusse DB0-DB7. Die Leitungen 3B und 40 bilden bei dieser Darstellung die Adress-Busse AB7_q bzw. ftB.c ot während die Leitung 42 den Daten-Bus DB» q-bildet. Der mikroprozessor 32 liefert ferner auf einer Leitung 44 ein Lese/Schreib-Signal sowie ein Synchronisiersignal auf einer Leitung 46. Das Signal auf der Leitung 44 ist ein Η-Signal, wenn Daten gelesen werden und ein L-Signal, wenn Daten geschrieben werden. Das Synchronisiersignal auf der Leitung 46 dient zur Identifizierung, wenn der mikroprozessor 32 bei der Ausführung einer Instruktion einen Operationcode auswählt. Dieses Synchronisiersignal geht während des Zugriffs zum Qperationscode auf H.
Die Adresseninformationen auf den Leitungen 38 und 40 werden beispielsweise durch Treiber 48 bzw. 50 verstärkt und als L-Byte-Adressen auf den Bussen AX7 Q oder der Leitung 54 und als H-Byte-Adressen auf den Bussen AX-jg^g bzw. der Leitung 56 bereitgestellt. Für einen Schreibvor-
- 16 030013/0870
gang werden die Daten auf der Leitung 42 durch einen Treiber 52 verstärkt und auf den Bussen DX? „ bziu. der Leitung 58 bereitgestellt.
Die in Fig. 1C dargestellten Instruktionen sind in Speichern mit feetem Zugriff oder RAM-Speichern 60 und 62 gespeichert. Jeder der Speicher 60 und 62 besitzt acht Informationsspeicher mit einer Speicherkapazität von 8X1. Die RAMs 60 und 62 werden durch die Bit-Information auf den Adress-Bussen AX0-AX11 auf Leitungen 54 und 56 angesteuert. Daten werden über die Leitung 5B in die RAHIs 60 und 62 eingegeben, wobei auf der Leitung 44 ein L-Signal erscheint. Ein Leitungspaar 64 und 66 für ein Chip-UJähl-Signal "CS1 und ein Chip-Steuer-Signal CE1 dienen zur Ausgabe der Instruktionen im RAIK) 60 an der von einer Adresse angesteuerten Speicherstelle, wobei auf der Leitung 44 das Signal H liegt. Ein weiteres Leitungspaar 6B und 70 für ein Chip-UJählsignal TfS2 und ein Chip-Steuer-Signal CE2 dienen zur Ausgabe der Instruktionen und Daten im Speicher 62 an der adressierten Speicherstelle, wobei auf der Leitung 44 wiederum das Signal H liegt.
Fig. 4A zeigt ferner zwei ROIfl-Speicher 72 und 74, die mit der Information auf den Adressen-Bussen AX0-AX8 adressiert sind. Die Speicher 72 und 74 werden an den adressierten Speicherstellen mit einem Chip-Steuersignal CEQ auf einer
- 17
030013/0870
Leitung 76 gesteuert. Die Speicher 72 und 74 speichern wenigstens einen Teil der Software für den Betrieb des Systems 30. Beispielsweise können die Speicher 72 und 74 die Exekutiv-Programme des Rechensystems speichern, welche die organisatorischen Operationen für das System 30 ausführen, wie z. B. die Überprüfung auf Fehlfunktionen des Systems oder die Prüfung der Priorität der Zuordnung oder übertragung einer Anzahl von zusätzlich zu den in Fig.1C angegebenen, in den Speichern 60 und 62 gespeicherten Programmen, die über den mikroprozessor 32 laufen.
Die Exekutiv-Programme sind aus einer Anzahl von Instruktionen zusammengesetzt, die an verschiedenen Speicherstellen in den Speichern 72 und 74 gespeichert sind, und wobei ein Teil dieser Instruktionen die Operationsbefehle für den mikroprozessor 32 einschließt. Ähnlich wie bereits oben beschrieben, sind die Operationsbefehle der in den Speichern 72 und 74 gespeicherten Instruktionen in Abhängigkeit von ihrer Speicherstelle und dem jeweiligen bekannten bzw. uncodierten Operationsbefehl der Befehlsliste des Mikroprozessors 32 codiert. Die in den Speichern 72 und 74 gespeicherten Instruktionen werden mit einem Schaltkreis codiert, der im wesentlichen mit dem Schaltkreis 10 gemäß Fig. 3 übereinstimmt, mit der Ausnahme, daß ein dem ROIfI 24 entsprechender ROM-Speicher eine von der Tabelle des ROM/verschiedene Tabelle
- 18 -030013/0870
besitzt, um für diese Exekutivprogramm-Instruktionen eine von den codierten Befehlscodes der in den RA(YIs 60 und 62 gespeicherten Instruktionen abweichende Codierung zu erhalten. Die Gründe für diesen Unterschied der Codierung werden unten noch erläutert.
Ein Treiber 78 empfängt die Ausgangs-Instruktionen von den RATiIs 60, 62 auf einer Leitung 80 und verstärkt die Signale auf dieser Leitung. Die verstärkten Instruktions-Signale werden dann über eine Leitung 82 den Eingängen C« und C-eines Multiplexers 84, einem ROTiI 86 und einem weiteren ROTH 88 zugeführt. Der Treiber 78 wird über den Ausgang eines NOR-Gatters 90 gesteuert, welches zwei Eingangsleitungen bzw. 94 für Chip-UJählsignale CS1 und CS2 aufweist. Die Ausgangs-Instruktionen auf einer Leitung 96 von den RO(YIs 72 und 74 werden ebenfalls den Eingängen C2 und C- des Multiplexers 84, dem ROM 86 und dem ROIYl 88 zugeführt.
Die ROIYIs 86 und 88 speichern Informationstabellen für die Decodierung der codierten Operationsbefehle, die in den Speichern 60, 62 bzw. 72, 74 gespeichert sind. Der ROItI Θ6 ist mit der Information auf der Leitung 82 oder 96 adressiert
und antwortet durch Bereitstellung des Inhalts der adressierten Speicherstelle auf einer Leitung 98 an einem Eingang eines Exklusiv-ODER-Gatters 100. Der ROIYl 88 ist mit der Information auf der Leitung 82 oder 96 adressiert und
030013/0870
spricht durch Bereitstellung des Inhalts der adressierten Speicherstelle auf einer Leitung 101 an, die mit einem Eingang eines u/eiteren Exklusiv-ÜDER-Gatters 102 verbunden ist. Der jeweils andere Eingang der beiden Gatter 100 und 102 ist mit einer Signalleitung 104 verbunden. Das auf der Leitung 104 erscheinende Signal ist das Ergebnis einer Vtrknüpfung in einem Exklusiv-ODER-Gatter 106, dessen zwei
Eingänge an die Signalleitungen 54 bzui. 56 angeschlossen sind. Die Ausgangssignale'der Gatter 100 und 102 werden über Leitungen 108 und 110 den Eingängen C1 und CQ des Multiplexers 64 zugeführt.
Ein NAND-Gatter-Paar 112 und 114 ist mit seinen jeweiligen Ausgangsleitungen 116 und 118 an den multiplexer 84 angeschlossen. Auf den Ausgangsleitungen 116 und 118 erscheinende Signale dienen zur Steuerung des Multiplexers 84, um die Eingänge C„, C1, C2 oder C3 auszuwählen. Der multiplexer 84 ist angesteuert bzw. bereit, wenn das über einen Inverter 120 auf der Leitung 44 zugeführte Lese/Schreib-Signal H ist. Der Ausgang des multiplexers auf einer Leitung 121 ist zur Ausführung einer Instruktion über die Leitung 42 zum mikroprozessor 32 zurückgeführt. Diese Leitung 42 oder Daten-Busse
DB7 η hat eine hohe Impedanz, wenn auf der Leitung 44 das Lese/Schreib-Signal H ist.
In Fig. 4A.ist ferner ein Treiber 135 dargestellt, der In-
030013/0870
formation von einem nicht dargestellten I/O-Register zuführt, welches zur Übertragung von Instruktionen und Daten in das gezeigte Rechensystem 30 dient.
Fig. 4B zeigt das Blockschaltbild einer Schaltung 122 zur Steuerung der NAND-Gatter 112 und 114. Ein Decoder 124 ist an die Adress-Busse AX10-AX12 angeschlossen, um die Adresseninformation auf diesen Leitungen zu decodieren. Ein NAND-Gatter 126 ist mit den Adressbussen AX13, AX** -ic verbunden, um die Information auf diesen Leitungen zu decodieren und den Decoder 124 Über eine Leitung 127 anzusteuern bzui. vorzubereiten.
Ziuei Flip-Flops 128 und 130 besitzen über Leitungen 124a, 124b, 124c und 124d mit Ausgängen des Decotfers, wie dargestellt, verbundene Eingänge. Die Ausgangsinformationen auf den Leitungen 124a bis 124d dienen zum Setzen und Rückstellen der Flip-Flops 128, 130, wie im folgenden beschrieben. Der Flip-Flop 128 ist mit seinem Ausgang Q über die Leitung mit einem Eingang des NAND-Gatters 114 verbunden, siehe auch Fig. 4A. Dieser Flip-Flop u/ird durch das Rückstellsignal RES auf der Leitung 36 rückgestellt. Der Flip-Flop 130 ist mit einem ü-Ausgang über eine Leitung 134 mit einem Eingang des NAND-Gatters 112 verbunden. Das Rückstellsignal RES dient auch zur Rückstellung dieses Flip-Flop 130 über die Leitung 36. Am jeweils anderen Eingang der beiden
-X-
030013/0870
·ρ·
NAND-Gatter 112 und 114 liegt das Synchronisiersignal auf der Leitung 46. Fig. 5 zeigt die UJahrheitstabelle zur Auswahl der Eingänge CQ, C-., C„ oder C3 von den Ausgangssignalen der Gatter 112 und 114 auf den Leitungen 116 und 118.
Fig. 4C zeigt einen logischen Schaltkreis 170 zur Erzeugung der Signale CE1, CS1 und "CS^. Die Adress-Busse A^15-8 der Leitung 56 sind an einen Treiber 172 angeschlossen, der die Eingangssignale verstärkt und durch Inversion umkehrt, um die Ausgangssignale auf den Bussen Kx._ R der Leitung zu erzeugen. Die Busse AY12 ~ ^1C sind als Eingänge mit
einem UND-Gatter 174 verbunden. Das Ausgangssignal des UND-Gatters 174 auf einer Leitung 176 geht über einen Verstärker 178, um das Signal CE1 zu erzeugen,und über einen Inverter 179, um das Signal TTs",. zu erzeugen, während das Ausgangssignal unmittelbar das Signal CS1 bildet.
Gemäß Fig.4D sind die Adress-Busse AX9-AX15 unmittelbar an ein UND-Gatter 180 angeschlossen, um das Signal CEQ zu erzeugen. Nach Fig. 4E sind die Adress-Busse AX12 und
Ä"x als Eingänge eines UND-Gatters 182 geschaltet. 13-15
Der Ausgang dieses UND-Gatters 182 ist zu einem Verstärker 184 und einem Inverter 186 geführt, um die Signale CE_ bzui. CfS2 zu erzeugen. Der Ausgang des UND-Gatters 182 liefert direkt das Signal CS2.
030013/0870
Der Decoder 124 und das NAND-Gatter 126, siehe mieder Fig.4B, dient zur Decodierung des Adress-Zwischenraums (Busse AX10-12, AT13 und AX14-15) > u»o uieder RAm-, Rum- oder l/0-Register sind. Deshalb wird ein nicht gezeigter Programm-Zähler in fflikroprozessor 32 nie, wenn das Programm korrekt läuft, eine Adresse erzeugen, die eine Aktivierung des Decoders 124 bewirken würde. Statt dessen kann eine von einem Operanden einer Instruktion erzeugte Adresse, d. h. eine Adresse, die eine Instruktion erzeugt, eher als eine Adresse, die der Programmzähler erzeugt, dafUr sorgen, daß der Decoder 124 aktiv utird. Eine derartige Instruktion uiird nicht in üblicher Weise verwendet. Sie wird weder in ein RAHfI- oder ein I/O-Register geschrieben, noch aus einem RAffl-, HOfil- oder
i/O-Register gelesen oder abgetastet. Statt dessen wird der Instruktionsoperand über den Decoder 124 zum Setzen oder Rückstellen des Flip-Flop 12B oder 130 verwendet.
Dies wird im folgenden an einem Beispiel verdeutlicht, bei welchem die folgende Tabelle in einem Rechner 30 die Befehls-Operanden angibt, die zur Ausführung des Setzens und Rückstellens der Flip-Flops 128, 130 bestimmt sind: Operand FF 128 FF130 D800-DBFF -- Setzen DCOO-DFFF -- Rückstellen D400-D7FF Rückstellen — D000-D3FF Setzen Setzen
030013/0870
Die in Fig. 4B gezeigte Schaltung 122 ist eine schaltungstechnische Verwirklichung dieser Tabelle.
FUr den Betrieb uiird jetzt angenommen, daß ein Programm auf dem mikroprozessor 32 läuft und daß die in Fig. 1C angegebenen, codierten Instruktionen herausgegriffen und ausgeführt werden. Hierfür muß der Flip-Flop 130 gesetzt sein. Demzufolge werden vor der Instruktion an der Speicherstelle 1E07 des RAM 62 die folgenden Instruktionen gespeichert:
1E04 AD
1E05 00
1E06 DB
Die Instruktion AD ist ein Operationsbefehl der veröffentlichten Instruktionsliste des IK1CS6501 -Mikroprozessors in uncodierter Maschinensprache, die dem symbolischen Code LDA entspricht. Die Instruktionen 00 und Dß sind die zum Setzen des Flip-Flop dienenden Operanden.
Sobald das Programm läuft, uiird der Programmzähler im mikroprozessor 32 inkrementiert, d. h. um einen bestimmten Betrag erhöht, um auf den Leitungen 3B und 40 eine der Stelle 1E04 entsprechende Adresse bereitzustellen. Der RAM62 uiird also an diese Speicherstelle 1E04 adressiert,
durch das Signal "CS"2 auf der Leitung 68 ausgewählt und
030013/0870
durch das Signal CE2 auf der Leitung 70 angesteuert, um dadurch den uncodiertan Operationsbefehl AD auszugeben. Dieser Operationsbefehl AD u/ird dann über den Treiber 7Θ und die Leitung 82 zum multiplexer 84 gegeben. Zu diesem Zeitpunkt liest der Mikroprozessor 32, so daß das Less/ Schreib-Signal auf der Leitung 44 hoch (H) ist, welches Signal dann durch den Inverter 120 umgekehrt wird, um den Multiplexer 84 anzusteuern. Da der mikroprozessor 32 einen Operationsbefehl herausgreift, ist gleichzeitig das Synchro nisiersignal auf der Leitung 46 hoch (H) und liefert dadurch eine logische 1 als ein Eingangssignal an die Gatter 112 und 114.
Da der Decoder 124 keinen der Operanden aus der oben angegebenen Tabelle decodiert, werden zu dieser Zeit auch die Flip-Flops 128 und 130 rückgestellt, siehe Fig. 4B, d. h. auf den Leitungen 132 und 134 erscheint eine logische 0. Dies ist der Fall beim Einschalten oder Wiederanläufen, wenn das Signal RES vorübergehend auf seinen niedrigen Pegel L geht. An den anderen, mit den Leitungen 132 und 134 verbundenen Eingängen liegt daher eine logische 0. Auf den Leitungen 116 und 118 erscheint demzufolge eine logische 1, so daß gemäß Uiahrheitstabelle in Fig. 5 der Eingag C3 des Multiplexers 84 ausgewählt tuird. Der Operationsbefehl AD tuird somit über die Leitungen 121 und 42 zum Mikroprozessor 32 übertragen.
-yf-
030013/0870
Anschließend uiird der Programmzähler inkrementiert, um über die Leitungen 38 und 40 eine der Speicherstelle 1E05 des RAIYI 62 entsprechende Adresse auszulösen. Dadurch wird der RA(KI 62 ausgewählt und angesteuert, um den letzten geltenden Teil 00 des Instruktionsoperanden über den Treiber und die Leitung 82 an den Multiplexer 84 auszugeben. Zu diesem Zeitpunkt ist das Synchronisiersignal auf der Leitung 46 niedrig (L), uieil kein Qperationsbefehl herausgegriffen wird. Deshalb wird den beiden Gattern 112 und 114 auf der Leitung 46 eine logische 0 zugeführt, wodurch auf den Leitungen 116 und 118 eine logische 1 erzeugt wird. Somit wird also wieder der Eingang C„ des Multiplexers 84 ausgewählt und der Operandenteil 00 dem (mikroprozessor 32 über die Leitungen 121 und 42 zugeführt.
Danach schaltet der Programmzähler weiter, um eine der Speicherstelle 1E06 entsprechende Adresse zu erzeugen. Am Ausgang des RACiI 62 erscheint daraufhin der vorrangig geltende Teil D8 des Instruktionsoperanden und wird über den Treiber 78 und die Leitung 82 dem multiplexer 84 und schließlich über den Eingang C, dem Mikroprozessor 32 zugeführt. Anschließend bringt der mikroprozessor 32 die Operanden-Adresse DBOO über Leitungen 38 und 40 zu den Adress-Bussen AX10-AX15. Eine ausführliche Beschreibung dieses Schrittes findet sich in "MCS6500 microcomputer Family Hardware Manual", Seite A-3, Abschnitt A.2.3 der
03001 3/0870
mOS Technology, Inc., August 1975. Da die Busse AX15, AX14 und Ä"X13 gemäß Fig. 4ßmit dem Gatter 126 verbunden sind und eine logische 1 als Signal führen, erscheint auf der Ausgangsleitung 127 des Gatters 126 eine logische 0, um den Decoder 124 in Betrieb zu setzen. Der Decoder 124 decodiert dann die auf den Bussen AX1G bis AX12 ankommenden Eingangssignale, um auf der zum Flip-Flop 130 führenden Leitung 124c einen wirksamen, niedrigen Signalpegel bzui. eine logische 0 zu erzeugen. Dieser aktive,, niedrige Signalpegel setzt daher den Flip-Flop 130, um eine logische 1 auf der Leitung 134 zu erzeugen. Der Flip-Flop 128 bleibt zu dieser Zeit rückgestellt, um auf der Leitung 132 eine logische 0 zu erzeugen.
Anschließend luird der Programmzähler im mikroprozessor 32 erhöht, um über die Leitungen 38 und 40 eine der Speicherstelle 1E07 entsprechende Adresse bereitzustellen. Infolge dessen uiird der RAm 62 an der Speicherstelle 1E07 adressiert und durch die Signale auf den Leitungen 68 und 70 ausgewählt und angesteuert, um den in Fig. 1C angegebenen, codierten Operationsbefehl 30 auszugeben. Der Code 30, in hexadezi maler Schreibweise 0011 0000, wird dann über den Treiber 78 und über die Leitung 82 dem multiplexer 84, dem ROIYI 86 und dem ROm 88 zugeführt. Zu dieser Zeit liest der mikroprozessor 32, so daß das Signal auf der Leitung 44 hoch ist und nach Umkehrung durch den Inverter 120 den multiplexer 84 ansteuert. Gleichzeitig ist das Synchronisiersignal auf
030013/0870
der Leitung 46 hoch, u/eil der Mikroprozessor 32 einen Operationsbefehl herausgreift. Die Ausgangssignale der Gatter 112 und 114 sind deshalb 0 bztu. 1, weil zu diesem Zeitpunkt der Flip-Flop 130 gesetzt und der Flip-Flop 128 rückgestellt sind. Deshalb wählt der multiplexer 84 gemäß der in Fig. 5 gezeigten UJahrheitstabelle den Eingang C1 aus, an dem die vom Exklusiv-ODER-Gatter 100 kommende Leitung 108 angeschlossen ist.
Der ROiYI 86 hat eine zur Tabelle des ROCfI 24 inverse Tabelle zur Decodierung der codierten Operationsbefehle. D. h., daß der Inhalt des ROIYI 86 bei einer gegebenen Adresse auf der vom Treiber 78 kommenden Leitung 82 für eine codierte Instruktion die korrespondierende Adresse auf der Leitung 26 für den ROIYI 24 ist. UJe η η der codierte Operationsbefehl 30 ist, ist die Ausgangsinformation des ROIYI 86 die Zahl 21 oder in hexadezimaler Schreibweise 0010 0001, die der obenerwähnten Adresse für den ROIYI 24 entspricht.
Die Zahl bzw. das Signal 21 wird dann einem Eingang des Gatters 100 zugeführt. Der andere Eingang des Gatters 100 ist über die Leitung 104 mit dem Ausgang des Exklusiv-ODERr Gatters 106 verbunden. Die Eingangssignale für das Gatter 106 sind die hohen und niedrigen Bytes auf den Adress-Bussen der Leitungen 54 und 56, die zu diesem Zeitpunkt der Speicherstelle 1E07 entsprechen. Diese Exklusiv-ODER-Operation
030013/0870
ist daher:
IE - 0001 1110
07 - 0000 0111
19 0001 1001
Das Signal auf der Leitung 104 ist also 0001 1001, uias der Zahl 19 entspricht. Die Exklusiv-ODER-Funktion des Gatters 100 läuft dann uiie folgt ab:
19 0001 1000
8
2_1 0010 0001
38 0011 1000
Demzufolge ist das Ausgangssignal des Gatters 100 das dem decodierten üperationscode 38 entsprechende Signal 0011 1000. Dieses Signal wird dann durch den multiplexer 94 über die Leitungen 121 und 42 dem mikroprozessor 32 zugeführt, um den Schritt des Herausgreifens des decodierten Uperationsbefehles der speziellen Instruktion abzuschließen. Danach wertet der Mikroprozessor 32 diesen dscodierten Operationsbefehl aus, um die spezielle erste in Fig. 1C angegebene Instruktion durchzuführen. Nachdem der erste Befehl ausgeführt ist, u/ird der Programmzähler des Mikroprozessors 32 erhöht, um den nächsten in Fig.1C
030013/0870
angegebenen Befehl an der Adrassanstelle 108 herauszugreifen.
Ähnlich wie vorstehend beschrieben, wird dann der codierte Operationsbefehl dieser Instruktion aus dem RAIiI 62 herausgeholt und über den Treiber 78 dem multiplexer 84, dem ROM 86 und dem ROM 88 zugeführt. Ferner wird ähnlich uiie oben beschrieben der Eingang C1 des Multiplexers 84 ausgewählt. Der codierte Operationsbafahl 87 wird durch den ROHl 86, das Gatter 100 und das Gatter 106 in den decodierten Operationsbefehl A5 umgewandelt. Der mikroprozessor 32 empfängt dann den Code A5 über die Leitungen 121 und 42, um den durch diesen Code definierten Befehl auszuführen. Ebenfalls entsprechend uiie vorher ujird der Programmzähler im Mikroprozessor
32 jedesmal inkrementiart bzw. erhöht, wenn ein Byte einer Instruktion erfaßt wurde. Diese Erläuterungen zeigen also, daß jeder codierte Operationsbefehl an den in Fig.1C angegebenen Spaicherstellen im RAFH 62 für die Verarbeitung durch den Mikroprozessor 32 decodiert wird. Es wird jetzt angenommen, daß die Exekutiv-Programme des in den ROIKIs 72 und 74 gespeicherten Befehlssystems ausgeführt warden sollen. Es wird also wie bei der obigen Beschreibung des Setzens und Rückstallens der Flip-Flops 128 und 130 davon ausgegangen, daß vorher in den ROMs 72 und 74 eine Instruktion mit einem
Operanden im Bereich von DOOO bis D3FF gespeichert wurde. Eine solche Instruktion ist vor der codierten Folge der Instruktionen des Exekutiv-Programms gespeichert. Deshalb
-χ-
030013/0870
erzeugt der Mikroprozessor 32 ähnlich wie oben beschrieben nach dem Herausgreifen des am meisten signifikanten bziu. geltenden Teils eines Operanden in dem genannten Bereich eine Adresse, die vom Decoder 124 zu decodieren ist. Ea ist deshalb aus der oben angegebenen Tabelle und Fig. 4B zu erkennen, daß ein aktiv/er, niedriger Signalpegel auf der Leitung 124a erscheint, um die Flip-Flops 128 und zu setzen.
Der Programmzähler im Mikroprozessor 32 wird dann erhöht, um auf den Bussen 38 und 40 eine Adresse zu erzeugen für den Zugang zu den folgenden Instruktionen des Exekutivprogrammes. Insbesondere werden die ROffls 72 und 74 durch das Signal CEQ bei der auf den Adress-Bussen AX^-AX- erzeugten Adresse angesteuert, um den codierten Operationsbefehl dieser folgenden Instruktion auf der Leitung 96 bereitzustellen. Dieser Code wird dem multiplexer 84, dem ROIKl 86 und dem ROHI 88 zugeführt. Zu diesem Zeitpunkt sind die Eingangssignale auf den Leitungen 46, 132 und 134 logisch 1 wegen des Herausgreifens eines Operationscodes und des Setzens der Flip-Flops 128, 130. In Übereinstimmung mit der Wahrheit stabeile in Fig. 5 wird der Eingang CQ des multiplexers 84 ausgewählt.
Ferner decodiert der ROfH 88 den codierten Operationsbefehl auf der Leitung 96 gemäß seiner Tabelle. Ent-
030013/0870
sprechend dem ROIYI Θ6 ist die Tabelle des ROIYI 88 iv/ers zur Tabelle des nicht dargestellten ROW, der zur Codierung der Operationsbefehle der Exekutiv-Programm-Instruktionen vorgesehen ist. Das Ausgangssignal des ROf(I 88 auf der Leitung 101 wird dann mit dem Ausgangssignal des Gatters 106 auf der Leitung 104 im Exklusiv-ODER-Gatter 102 verknüpft, wodurch der decodierte Operationsbefehl über den multiplexer 84 zum Mikroprozessor 32 übertragen wird. Der mikroprozessor 32 führt dann die Instruktion in Übereinstimmung mit dem decodierten Operationsbefehl aus. Dieser decodierte Befehl des Exekutiv-Programms kann beispielsweise der Code A5 sein, bei dem es sich um die Instruktion für das Laden eines akkumulativen Registers oder Akkumulators handelt.
Bei den oben gegebenen Beispielen war angenommen worden, daß der mikroprozessor 32 eine Instruktion mit einem codierten Operationsbefehl auszuführen hatte, d. h. entweder eine im RAm 62 oder in dem ROMs 72, 74 gespeicherte Instruktion. (Die schon angedeutet, kann es beim Ablauf eines Programms sein, daß Instruktionen mit uncodierten Operationsbefehlen in den RAMs 60, 62 oder den ROMs 72, 74 gespeichert sind. Ähnlich wie schon erläutert, wird eine gespeicherte und ausgeführte Instruktion mit einem Operanden im Bereich von DCOO - DFFF den Flip-Flop 130 aufgrund eines aktiven niedrigen Signales auf der Leitung 124d zurückstellen. Ferner
wird ein Operand im Bereich D400 bis D7FF den Flip-Flop
030013/0870
durch ein aktiv/es Signal mit niedrigem Pegel auf der Leitung 124b zurückstellen. Dann u/erden nach der UJahrheitstaf el in Fig. 5 die Eingänge C„ oder C3 des Multiplexers 84 durch die Ausgangssignale der Gatter 112 und 114 ausgewählt. Wenn entsprechend eine uncodierte Instruktion aus den RATiIs 60,62 oder den ROWs 72, 74 herausgenommen iuird, uiird diese zur Ausführung direkt v/om Speicher über den multiplexer 84 zum mikroprozessor 32 übertragen.
Die vorliegende Erfindung zeigt also eine vorteilhafte Methode, durch welche die Software gegen unbefugtes Kopieren oder unbefugten Gebrauch geschützt ujerden kann. Besonders vorteilhaft ist dabei, daß das Hardware-System 30 von einem Hersteller gebaut und an mehrere verschiedene Benutzer verkauft werden kann. Jeder Käufer und Benutzer eines dieser Systeme 30 kann für den Einsatz des Systems für einen bestimmten Zweck sein eigenes Programm schreiben. Der Benutzer kann sein Programm beispielsweise in einer höheren Programmiersprache oder einer symbolischen Sprache, wie in Fig. 1A angegeben, schreiben und dieses Programm dann in ein in Fig.1B gezeigtes Format in Maschinensprache umsetzen, und ziuar unter Verwendung der bekannten vom mikroprozessor 32 verwendeten Operationsbefehle.
Die höhere Programmiersprache nach Fig. 1A oder das Maschinensprache-Programm nach Fig. 1B können auf einer Scheibe oder
Platte gespeichert werden, die dann an den Hersteller des
030013/0870
Systems gegeben wird. Dieser setzt dann das Programm mit einer Schaltung 10 gemäß Fig. 3 in das codierte fflaschinensprachenformat gemäß Fig. 1C um und gibt das codierte, beispielsweise mieder auf einer Platte gespeicherte Programm an dan Benutzer des Hechensystems zurück. Der Hersteller rüstet ferner das System 30 mit dem ROfH 86 aus, dessen Dacodiertaballe Bbenso wie die Tabelle des zur Codierung benutzten ROfil 24 ein nur für den jeweiligen Benutzer erstelltes Unikat ist. Deshalb uiäre irgend jemand, dar den Be-
nutzar-iilaschinencode nach Fig. 1C hat, nicht in dar Lage, das Programm auf einem anderen System 30 richtig laufen zu lassen. UJenn das Programm gemäß Fig. 1C auf einem anderen System 30 laufen würde, würden nämlich dem Mikroprozessor
über den Multiplexer 84 falsche Operationsbefehla zugeführt. Dies liegt daran, daß der ROM 86 eines solchen anderen Systems den Benutzercode beispielsweise den codierten Operationsbefehl 30 an der Speicherstelle 1E07 nicht richtig decodieren würde. Da somit jedes vom Hersteller gelieferte System 30 eine andere Tabelle für den ROM 86 hat, kann ein vom Benutzer ergänztes, für ein System 30 codiertes Programm nicht richtig auf einem anderen System 30 laufen. Natürlich wird das codierte Programm, wie schon erwähnt, nur dann richtig auf dem 5ystem des Benutzers laufen, wenn der Flip-Flop 130 durch einen Instruktions-Operanden gesetzt ist.
Die Erfindung stellt außerdem sicher, daß beispielsweise
030013/0870
ein unbefugter Zugang zu einer Datenablage oder Datei ausgeschlossen ist. Dies ist dadurch gewährleistet, daß der Hersteller die Operationscodes des Rechensystems für jedes System 30 verschieden codiert. So ujürde beispielsweise das vom Hersteller eingegebene und in den ROIKl 72 und 74 gespeicherte Exekutivprogramm abweichend von einem Exekutivprogramm in anderen Systemen 30 codiert. Wollte also jemand ohne Befugnis versuchen, das Rechensystem zu seinem eigenen Vorteil abzuändern oder dazu zu benutzen, Zugang zu aufgezeichneten Daten zu erhalten, müßte er Kenntnis haben von dem Codieischema des Rechensystems.
Die Codierung der Operationsbefehle der Instruktionen hat den Worteil, daß es verhältnismäßig schwierig ist, das System aufzubrechen, um ein Programm zu kopieren oder an aufgezeichnete Daten zu gelangen, ohne dazu berechtigt zu sein. Für diese Sicherheit des erfindungsgemäßen Systems gibt es eine Reihe von Gründen. Erstens werden die Operationsbefehle als eine Funktion der Speicherstelle der Instruktion indan RAlIs 60, 62 und den RUMs 72, 74 codiert und decodiert. Beispielsweise ist der Code A5 an der Speichersteile 1E08 abgelegt, wobei der codierte Uperationsbefehl 87 ist. UJenn der gleiche Operationsbefehl an der Speichersteile 1E17 gespeichert wäre, würde er aufgrund des vorgegebenen Inhalts der ROdIs 24 und 86 oder 88 anders codiert
sein. Zweitens wird die Codierung und Decodierung der
030013/0870
Operationsbefehle als Funktion des Zustandes des Systems 30 ausgeführt. D. h., daß ein Codier- und Decodierschema benutzt wird, wenn das System 30 das worn Denutzer ergänzte Programm verarbeitet, während für das gleiche System 30 ein anderes Codier- und Decodierschema benutzt wird, tuenn das
Betriebssystem läuft.
Ein weiterer Vorteil der Erfindung besteht darin, daQ auch bereits vorhandene Rechen'systeme nachträglich mit der Decodier-Hardujare ausgerüstet werden können, und zwar durch zusätzlichen Einbau der ROhIs 86 und/oder 88 und der zugehörigen Logik luie z. B. der Gatter 100, 102 und 106 und des Decoders 124. Ferner kann ein System 30 bereits bei der Herstellung mit den ROffls 86 und/oder 88 ausgerüstet werden, die vorzugsweise auf einem Chip im Mikroprozessor 32 eingebaut werden. Das bedeutet, daß diese ROTiIs bei einem Versuch, die Codes zu knacken, nicht aus dem mikroprozessor 32 ausgebaut werden könnten.
Ferner würde jede unbefugte Vervielfältigung eines mit ROHIs 86 und 88 ausgerüsteten Systems 30 oder der Codierten Software ein ganz bestimmtes, nur einmal vorhandenes Bild oder Muster haben. Der Inhalt der ROtfs 86 oder 88 oder einer
Kopie der codierten Programme würde also eine Identifizierung der Quelle der kopierten Hardware oder Software
ermögliche'n. -ST-
030013/0870
HO
Die Erfindung bietet also die Möglichkeit, Vereinbarungen oder Verträgen über unbefugtes Vervielfältigen Geltung zu verschaffen und deren wirksame Kontrolle und Überwachung sicherzustellen.
Ferner ist zu ermähnen, daß eine Aufzeichnung der decodierten Instruktionen auf den Leitungen 108 und 110 wegen der Schaltungsschleifen und Sprünge der Programme keine Entschlüsselung des codierten Programms ermöglichen würde. Dies hängt damit zusammen, daß der Programmzähler des Mikroprozessors nicht immer um einen gleichen Betrag weitergeschaltet wird, um die nächste Speicherstelle anzusteuern. Statt dessen führen Verzweigungen und Sprünge dazu, daß der Betrieb des Programmzählers jeweils mit neuen UJerten eingeleitet wird. Selbst wenn davon ausgegangen wird, daß Instruktionsströme zweimal auftreten, ist es nicht einfach, ein Programm über alle auftretenden Code-Folgen aufzuschlüsseln, auch wenn die ursprünglichen Aufzeichnungen zur Verfügung stehen. Ohne diese Aufzeichnungen ist es aber praktisch unmöglich, durch freie Entscheidung über die Eingangssignale ein Programm durch sämtliche Code-Folgen anzuregen bzw. anzusteuern.
Sogar mit vollständiger Kenntnis der Erfindung und des Inhalte der an ein codiertes Programm angepaßten ROMs B6 und 88 ist eine Entschlüsselung und damit eine Rückgewinnung des unöodierten Programms praktisch unmöglich und mindestens sehr
030013/0870
schwierig. Beim Versuch einer Entschlüsselung könnte z. B. ein unter dem Namen Disassembler bekanntes Computer-Programm verwendet werden. Um die Entschlüsselung einzuleiten,
ist jedoch die Kenntnis der ursprünglichen Speicherstelle des Programms für den Disassembler notwendig. Bei Verzweigungen oder Sprüngen des Datenflusses wird jedoch der Disassembler versuchen, diese Daten als Instruktion zu interpretieren. Der Disassembler arbeitet dann nicht mehr einwandfrei, bis er zufällig aufgrund einer Instruktion wieder synchronisiert wird. Es ist übliche Praxis, bei Rechnern wie z. B. dem System 30 die Codes und Daten zu verschachtelt
Der Disassembler müßte außerdem sowohl wissen, welcher Decodierzustand wirksam ist, als auch den Decodierzustand des Betriebssystems kennen. Der Decodierzustand, das ist der Zustand des Flip-Flops 128, 130 ist vom Zugriff in Speiche.rreihenfolge abhängig und nicht von der Speicherstelle. Die Entschlüsselung des Programmes mit einem Disassembler ist deshalb fast unmöglich.
Es sind auch andere als die schon beschriebenen Ausführungsformen der Erfindung möglich. Oeispielsweise kann die Funktion der RGMs 86 und 88 auch mit Hilfe von RAffl-Schnellspeichern durchgeführt werden. Dies ist beispielsweise in der Weise möglich, daß das Betriebssystem in ein codiertes Programm A geladen bzw. eingegeben wird.
030013/0870
Das Betriebssystem bringt dann den Rechner 30 in einen codierten Betriebszustand und bringt Verzweigungen zum anfänglichen Betriebscode des Programms A ein. Das Programm A lädt dann seinerseits einen RAM-Decoder mit einer neuen Decodiertabelle und gibt dann ein codiertes Programm B ein, das mit dem Inhalt des RALI-Decoders decodiert werden kann. Das Programm A steuert dann den RAfil-Decoder und die Verzweigungen zum Programm B.
Zwar wurde bisher nur die Codierung der Operationsbefehle der Instruktionen beschrieben, jedoch können auch die Operanden dieser Instruktionen codiert werden. Z. B. können in einem System, bei welchem vom Benutzer zusammengestellte Instruktionen in einem Raum gespeichert sind, sowohl die Operationsbefehle als auch die Operanden dieser Instruktionen in einer codierten Form gespeichert sein. Diese Codierung kann, wie bereits beschrieben, beispielsweise in Form einer Funktion der Speicherstelle der Instruktion sowie des fflaschinenzustandes verwirklicht werden. Ein System wie z. 3. das System 30 könnte dann mit Decodern zur Decodierung der codierten Uperationsbefehle und Operanden dieser Instruktionen eingesetzt werden. Die Hardware wie z. 3. der
Mikroprozessor 32 dieses Systems würde dann ein Signal besitzen, das nicht nur das Herausholen der Operationsbefehle identifiziert, sondern auch das Herausholen der
Operanden. Beispielsweise kann dafür gesorgt werden, daß
030013/0870
das Synchronisiersignal auf der Leitung 46 jedesmal seinen hohen Signalpegel annimmt, wenn ein Operationscode oder ein Operand einer Instruktion aus dem ROIYI herausgenommen wird, um ähnlich uiie schon beschrieben, eine Decodierung auszuführen.
Bei einer weiteren vereinfachten Ausführungsform der Erfindung könnte mit einem einzelnen ROTil-Tabellenspeicher eine von der Speicherstelle oder dem filaschinenzustand des Rechners unabhängige Decodierung durchgeführt werden. Für jedes System 30 würde ein R0Π1, wie z. B. der ROdI 24, eine ganz spezielle Codiertabelle zum Verschlüsseln eines bekannten Operationscodes einer zu speichernden Instruktion aufweisen. Entsprechend hätte dabei ein einzelner Decodier-ROTiI, wie z. B. der ROTiI 86, eine Tabelle zur Decodierung dieser verschlüsselten Operationscodes.
Bei dem bisher erläuterten Codierverfahren wurden die Instruktionen als Funktion sowohl des Tflaschinenzustandes des Rechners als auch der Speicherstelle codiert. Bei einer UJeiterbi ldung der Erfindung können die Instruktionen zur weiteren Komplizierung der Codierung auch noch als Funktion einer früheren Codierung verschlüsselt werden. Insbesondere
können die Instruktionen zusätzlich zur Codierung als Funktion der Speicherstelle und des Rechnerzustandes auch auf der Basis eines codierten Operationscodes der Instruktion
030013/0870
codiert werden, die der gerade zu codierenden Instruktion vorausging. Bei Verwendung eines PN-Generators wird bei-
spielsuieise die erste Instruktion nach dem Einschalten des Generators mit der Speicherstelle dieser Instruktion in den Generator eingegeben. Das Ausgangssignal des Generators ist dann eine Instruktion mit einem verschlüsselten Operationscode. Ohne Rückstellung des PN-Generators wird dann die
lien
nächste Instruktion in/Generator gegeben, dessen Ausgangssignal dann eine Instruktion mit einem verschlüsselten Operationscode ist, die eine Funktion sowohl der vorherigen Instruktion als auch dieser nächsten Instruktion ist. Diese etwas kompliziertere Codierung erschwert die Entschlüsselung zusätzlich, so daß die Sicherheit gegen einen unbefugten Gebrauch des Rechners noch erhöht wird.
η nsprüche
030013/0870
L e e r s e i t

Claims (12)

Ansprüche
1. Verfahren zur Kontrolle das Gebrauchs eines programmierbaren Rechners, gekennzeichnet durch eine Codierung v/on Instruktionen eines Hechnerprogramms und eine Decodierung dieser Programminstruktionen zur Durchführung des Programms .
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Instruktionen als eine Funktion ihrer Speicherstelle codiert werden.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Instruktionen als Funktion eines Betriebszustandes des Rechners codiert werden.
4. Verfahren nach einem der v/orhergehenden Ansprüche, dadurch gekennzeichnet, daß ein Programm mit uncodierte Uperationsbefehle einschließenden Instruktionen aufgestellt wird und die uncodiorten Uperationsbefehle der Instruktionen dieses Programms in uperationsbefehle einer Maschinensprache umgesetzt werden.
5. Verwendung des Verfahrens nach einem der vorhergehenden Ansprüche zur Kontrolle des Gebrauchs eines mit Operations·
- 43 -
0300 1 3/0870
ORIGINAL INSPECTED
befahlen in einer uncodierten Maschinen- bzw. Programmiersprache arbeitenden Rechners, ujobei uncodierte üperationsbefehle eines Programms codiert und diese codierten Operationsbefehle zur Durchführung des Programms mit einem zusätzlichen Decodierer des Rechnars decodiert werden.
6.)Einrichtung zur Kontrolle oder Überwachung des Gebrauchs eines mit üperationsbefehlen in uncodierter Maschinensprache betriebenen uechners, insbesondere zur Durchführung eines Verfahrens nach einem der Ansprüche 1-4, gekennzeichnet durch Mittel zur Speicherung eines Instruktionen mit codierten üperationsbefehlen einschließenden Programmes in Maschinensprache, durch Mittel zur Decodierung der codierten Operationsbefehle der Programm-Instruktionen und durch Mittel zur Ausführung der Instruktionen des Programms in Übereinstimmung mit den decodierten Operationsbafehlen.
7. Elinrichtunn nach Anspruch 6, dadurch gekennzeichnet, daß die Speichermittel Mittel zur Speicherung eines v/om Maschinenbenutzer ergänzten Programms oder eines Betriebssystemprogrammes einschl. der codierten Operationsbefehle umfassen, und daß die Decodiermittel
Mittel zur Umsetzung der codierten Operationsbefehle
- 44 -
030013/0870
dar Programminstruktionen in uncodierte Operationsbafahle umfassen.
8. Einrichtung nach Anspruch 6, dadurch gekennzeichnet, daß die Decodiermittel Mittel zur Umsetzung der codierten Operationsbefehle der Programminstruktion in uncodierte Operationsbefehle als sine Funktion dar Speicherstelle der Instruktionen in den Speichermitteln aufweist.
9. Einrichtung zur Kontrolle des Gebrauchs eines aufgrund von Operationsbefehlen in uncodierter Maschinensprache arbeitenden, programmierbaren Rechners, insbesondere zur Durchführung eines V/erfahrens nach einem der Ansprüche 1 bis 4, gekennzeichnet durch Speichermittel für ein worn Maschinenbenutzer erstelltes Programm und ein Betriebssystemprogramm mit uncodierte und codierte. Operationsbefehle einschließenden Programminstruktionen, durch erste Decodiermittel zur Entschlüsselung der codierten Uperationsbefehle der Instruktion des vom Benutzer erstellten Programms, durch zweite Decodiermittel zur Entschlüsselung der codierten uperationsbefahle der
Instruktionen des Detriebssystemprogramms und durch Uittel zur Ausführung der beiden die decodierten und
uncodierten uperationsbefehle aufweisenden Programme.
10. Einrichtung nach Anspruch 9, dadurch gekennzeichnet,
0300 13/0870 -45-
daß die mittel zur Ausführung der Programminstruktionen Mittel zur Auswahl der decodierten Operationsbefehle des vom Denutzer erstellten Programms oder des Betriebssystemprogrammes aufweisen.
11. Einrichtung nach Anspruch 9, dadurch gekennzeichnet,
daß die ersten und zweiten Decodiermittel jeu/eils mittel zur Umsetzung der codierten Üperationsbefehle der Instruktionen in uncodierte Operationsbefehle als Funktion der Speicherstelle der Instruktionen in den Speichermitteln aufweisen.
12. Einrichtung nach Anspruch 11, dadurch gekennzeichnet, daß die Umsetzmittel der beiden Decodiereinrichtungen einen ROTiI (Read only memory)-Speicher mit einer Code-Umsetztabelle umfassen.
030013/0870
DE19792937354 1978-09-14 1979-09-13 Verfahren und einrichtung zur ueberwachung des gebrauchs eines programmierbaren rechners Withdrawn DE2937354A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/942,422 US4246638A (en) 1978-09-14 1978-09-14 Method and apparatus for controlling usage of a programmable computing machine

Publications (1)

Publication Number Publication Date
DE2937354A1 true DE2937354A1 (de) 1980-03-27

Family

ID=25478045

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19792937354 Withdrawn DE2937354A1 (de) 1978-09-14 1979-09-13 Verfahren und einrichtung zur ueberwachung des gebrauchs eines programmierbaren rechners

Country Status (3)

Country Link
US (1) US4246638A (de)
JP (1) JPS5541598A (de)
DE (1) DE2937354A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3335387A1 (de) * 1983-09-29 1985-04-11 Siemens Ag Verfahren zur verhinderung des ablaufs eines programms auf fuer den ablauf dieses programms nicht zugelassenen rechnern
EP0455064A2 (de) * 1990-05-03 1991-11-06 National Semiconductor Corporation Datenverschlüsselungsvorrichtung und Verfahren zur Datenverschlüsselung

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4465901A (en) * 1979-06-04 1984-08-14 Best Robert M Crypto microprocessor that executes enciphered programs
US4319079A (en) * 1979-09-13 1982-03-09 Best Robert M Crypto microprocessor using block cipher
US4506325A (en) * 1980-03-24 1985-03-19 Sperry Corporation Reflexive utilization of descriptors to reconstitute computer instructions which are Huffman-like encoded
US4513174A (en) * 1981-03-19 1985-04-23 Standard Microsystems Corporation Software security method using partial fabrication of proprietary control word decoders and microinstruction memories
US4446519A (en) * 1981-05-26 1984-05-01 Corban International, Ltd. Method and apparatus for providing security for computer software
JPS5865470A (ja) * 1981-10-15 1983-04-19 日本電気株式会社 ソフトウエア保護回路
US4488001A (en) * 1981-12-17 1984-12-11 Ncr Corporation Intellectual properties protection device
JPS58116571A (ja) * 1981-12-29 1983-07-11 富士通株式会社 マイクロコンピユ−タに於ける命令暗号化方式及びその実施に使用されるマイクロコンピユ−タ
US4525599A (en) * 1982-05-21 1985-06-25 General Computer Corporation Software protection methods and apparatus
US4523271A (en) * 1982-06-22 1985-06-11 Levien Raphael L 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
JPS6010336A (ja) * 1983-06-30 1985-01-19 Fujitsu Ltd プログラム盗用防止モニタ方式
US4573119A (en) * 1983-07-11 1986-02-25 Westheimer Thomas O Computer software protection system
US4621334A (en) * 1983-08-26 1986-11-04 Electronic Signature Lock Corporation Personal identification apparatus
US4633388A (en) * 1984-01-18 1986-12-30 Siemens Corporate Research & Support, Inc. On-chip microprocessor instruction decoder having hardware for selectively bypassing on-chip circuitry used to decipher encrypted instruction codes
JPS60167033A (ja) * 1984-02-08 1985-08-30 Konami Kogyo Kk マイクロコンピユ−タにおけるプログラムコ−ド復号化装置
US4847902A (en) * 1984-02-10 1989-07-11 Prime Computer, Inc. Digital computer system for executing encrypted programs
US4646234A (en) * 1984-02-29 1987-02-24 Brigham Young University Anti-piracy system using separate storage and alternate execution of selected proprietary and public portions of computer programs
US4598170A (en) * 1984-05-17 1986-07-01 Motorola, Inc. Secure microprocessor
EP0171456A1 (de) * 1984-08-17 1986-02-19 Thomas O. Westheimer Anordnung zur Sicherung von Computer-Software
GB2163577B (en) * 1984-08-23 1988-01-13 Nat Res Dev Software protection device
US4644493A (en) * 1984-09-14 1987-02-17 International Business Machines Corporation Implementing a shared higher level of privilege on personal computers for copy protection of software
US4757533A (en) * 1985-09-11 1988-07-12 Computer Security Corporation Security system for microcomputers
US4882752A (en) * 1986-06-25 1989-11-21 Lindman Richard S Computer security system
JPS6358538A (ja) * 1986-08-29 1988-03-14 Hitachi Ltd ソフトウエア保護方式
US4796181A (en) * 1986-10-24 1989-01-03 Wiedemer John D Billing system for computer software
US5047928A (en) * 1986-10-24 1991-09-10 Wiedemer John D Billing system for computer software
US5155680A (en) * 1986-10-24 1992-10-13 Signal Security Technologies Billing system for computing software
US4817140A (en) * 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US5109413A (en) * 1986-11-05 1992-04-28 International Business Machines Corporation Manipulating rights-to-execute in connection with a software copy protection mechanism
US5099516A (en) * 1989-06-12 1992-03-24 Dell Corporate Services Corporation Digital computer code word identification system
US5095525A (en) * 1989-06-26 1992-03-10 Rockwell International Corporation Memory transformation apparatus and method
US5499295A (en) * 1993-08-31 1996-03-12 Ericsson Inc. Method and apparatus for feature authorization and software copy protection in RF communications devices
US5481610A (en) * 1994-02-28 1996-01-02 Ericsson Inc. Digital radio transceiver with encrypted key storage
US20060206397A1 (en) * 1995-02-13 2006-09-14 Intertrust Technologies Corp. Cryptographic methods, apparatus and systems for storage media electronic right management in closed and connected appliances
US7143290B1 (en) * 1995-02-13 2006-11-28 Intertrust Technologies Corporation Trusted and secure techniques, systems and methods for item delivery and execution
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US7133846B1 (en) * 1995-02-13 2006-11-07 Intertrust Technologies Corp. Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management
US7069451B1 (en) 1995-02-13 2006-06-27 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US7133845B1 (en) * 1995-02-13 2006-11-07 Intertrust Technologies Corp. System and methods for secure transaction management and electronic rights protection
DE69637733D1 (de) * 1995-02-13 2008-12-11 Intertrust Tech Corp Systeme und verfahren für ein sicheres übertragung
US7095854B1 (en) * 1995-02-13 2006-08-22 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6658568B1 (en) * 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7124302B2 (en) * 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US7165174B1 (en) 1995-02-13 2007-01-16 Intertrust Technologies Corp. Trusted infrastructure support systems, methods and techniques for secure electronic commerce transaction and rights management
JP2000503154A (ja) * 1996-01-11 2000-03-14 エムアールジェイ インコーポレイテッド デジタル所有権のアクセスと分配を制御するためのシステム
US20050021477A1 (en) * 1997-01-29 2005-01-27 Ganapathy Krishnan Method and system for securely incorporating electronic information into an online purchasing application
US7062500B1 (en) 1997-02-25 2006-06-13 Intertrust Technologies Corp. Techniques for defining, using and manipulating rights management data structures
US7092914B1 (en) 1997-11-06 2006-08-15 Intertrust Technologies Corporation Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6308256B1 (en) * 1999-08-18 2001-10-23 Sun Microsystems, Inc. Secure execution of program instructions provided by network interactions with processor
WO2002082429A2 (en) 2000-12-14 2002-10-17 Ecd Systems, Inc. Systems and methods for optical media modification
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
US7117507B2 (en) * 2002-06-03 2006-10-03 Sumisho Computer Systems Corporation Software atomization
US7281017B2 (en) * 2002-06-21 2007-10-09 Sumisho Computer Systems Corporation Views for software atomization
US8880901B2 (en) * 2006-05-25 2014-11-04 Red Hat, Inc. Secure address handling in a processor
US9047458B2 (en) * 2009-06-19 2015-06-02 Deviceauthority, Inc. Network access protection
US9047450B2 (en) * 2009-06-19 2015-06-02 Deviceauthority, Inc. Identification of embedded system devices
US8726407B2 (en) * 2009-10-16 2014-05-13 Deviceauthority, Inc. Authentication of computing and communications hardware
AU2011100168B4 (en) 2011-02-09 2011-06-30 Device Authority Ltd Device-bound certificate authentication
AU2011101295B4 (en) 2011-06-13 2012-08-02 Device Authority Ltd Hardware identity in multi-factor authentication layer
AU2011101297B4 (en) 2011-08-15 2012-06-14 Uniloc Usa, Inc. Remote recognition of an association between remote devices
US9143496B2 (en) 2013-03-13 2015-09-22 Uniloc Luxembourg S.A. Device authentication using device environment information
US9286466B2 (en) 2013-03-15 2016-03-15 Uniloc Luxembourg S.A. Registration and authentication of computing devices using a digital skeleton key
KR102128199B1 (ko) 2019-04-01 2020-06-29 손정우 고속 면직물 제직용 복합호제의 조성물

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3609697A (en) * 1968-10-21 1971-09-28 Ibm Program security device
US3889242A (en) * 1971-10-04 1975-06-10 Burroughs Corp Modifiable computer function decoder
US3962539A (en) * 1975-02-24 1976-06-08 International Business Machines Corporation Product block cipher system for data security
US4037214A (en) * 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4120030A (en) * 1977-03-11 1978-10-10 Kearney & Trecker Corporation Computer software security system
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3335387A1 (de) * 1983-09-29 1985-04-11 Siemens Ag Verfahren zur verhinderung des ablaufs eines programms auf fuer den ablauf dieses programms nicht zugelassenen rechnern
EP0455064A2 (de) * 1990-05-03 1991-11-06 National Semiconductor Corporation Datenverschlüsselungsvorrichtung und Verfahren zur Datenverschlüsselung
EP0455064A3 (en) * 1990-05-03 1991-11-21 National Semiconductor Corporation Data encryption device and method for data encryption

Also Published As

Publication number Publication date
JPS5541598A (en) 1980-03-24
US4246638A (en) 1981-01-20

Similar Documents

Publication Publication Date Title
DE2937354A1 (de) Verfahren und einrichtung zur ueberwachung des gebrauchs eines programmierbaren rechners
DE69634880T2 (de) Verfahren und gerät zum kontrollierten zugriff zu verschlüsselten datenakten in einem computersystem
DE1499722C2 (de) Einrichtung zur Modifizierung von Informationswörtern
DE2540975C2 (de) Datenverarbeitungseinrichtung zur Ausführung mehrerer gleichzeitig ablaufender Prozesse
DE2555963C2 (de) Einrichtung zur Funktionsmodifizierung
EP0097725B1 (de) Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen
DE2714805C2 (de)
EP0449265B1 (de) Zufallszahlengenerator
DE1499200B2 (de) Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung
DE2023354A1 (de) Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit
DE1269393B (de) Mikroprogramm-Steuerwerk
EP1164456B1 (de) Software-Schutzmechanismus
EP3891642B1 (de) Verfahren zur sicherung der vertrauenswürdigkeit von quellcodes
DE2801518A1 (de) Datenverarbeitungssystem mit speicher-schutzeinrichtung
DE2358593A1 (de) Datenverarbeitungsanordnung und bei dieser verwendbare steuerschaltung
DE1115488B (de) Datenverarbeitungssystem
DE3705736A1 (de) Verfahren zum sichern von programmen und zur integritaetskontrolle gesicherter programme
DE1266026B (de) Verfahren und Anordnung zum Verhüten einer Änderung eines Speichermhaltes
DE19626972A1 (de) Verfahren und Vorrichtung zur vorläufigen Freigabe für die Anwendung eines von einer elektronischen Kassette geschützten Programms
EP1636700A1 (de) Verfahren zum nachladen einer software in den bootsektor eines programmierbaren lesespeicher
EP1022659B1 (de) Schaltungsanordnung zur elektonischen Datenverarbeitung
DE3121046A1 (de) Arithmetik-logikeinheit mit bit-manipulation
DE2622140C3 (de) Einrichtung zur Steuerung manueller Operationen
DE1474080A1 (de) Einrichtung zum Normieren und Bilden des Stellenfaktors einer Zahl
DE2936801C2 (de) Steuereinrichtung zur Ausführung von Instruktionen

Legal Events

Date Code Title Description
8139 Disposal/non-payment of the annual fee