DE2937354A1 - Verfahren und einrichtung zur ueberwachung des gebrauchs eines programmierbaren rechners - Google Patents
Verfahren und einrichtung zur ueberwachung des gebrauchs eines programmierbaren rechnersInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 24
- 238000012544 monitoring process Methods 0.000 title claims description 6
- 230000015654 memory Effects 0.000 claims description 67
- 230000006870 function Effects 0.000 claims description 18
- 238000011022 operating instruction Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 101001005952 Rattus norvegicus H-2 class II histocompatibility antigen gamma chain Proteins 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- PQNFLJBBNBOBRQ-UHFFFAOYSA-N indane Chemical compound C1=CC=C2CCCC2=C1 PQNFLJBBNBOBRQ-UHFFFAOYSA-N 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 101100252542 Arabidopsis thaliana ROH1 gene Proteins 0.000 description 1
- 241000656145 Thyrsites atun Species 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/101—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
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
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
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
2λ
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.
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)
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
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)
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)
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 |
EP0175487A3 (de) * | 1984-08-23 | 1989-03-08 | Btg International Limited | Softwaresicherungsvorrichtung |
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 | ソフトウエア保護方式 |
US5155680A (en) * | 1986-10-24 | 1992-10-13 | Signal Security Technologies | Billing system for computing software |
US5047928A (en) * | 1986-10-24 | 1991-09-10 | Wiedemer John D | Billing system for computer software |
US4796181A (en) * | 1986-10-24 | 1989-01-03 | Wiedemer John D | Billing system for computer software |
US5109413A (en) * | 1986-11-05 | 1992-04-28 | International Business Machines Corporation | Manipulating rights-to-execute in connection with a software copy protection mechanism |
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 |
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 |
US6157721A (en) * | 1996-08-12 | 2000-12-05 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
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 |
US7124302B2 (en) | 1995-02-13 | 2006-10-17 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US7133845B1 (en) * | 1995-02-13 | 2006-11-07 | Intertrust Technologies Corp. | System 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 |
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
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 |
US7069451B1 (en) | 1995-02-13 | 2006-06-27 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
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 |
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 |
CN1312549C (zh) * | 1995-02-13 | 2007-04-25 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的***和方法 |
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 |
AU1690597A (en) | 1996-01-11 | 1997-08-01 | Mitre Corporation, The | System for controlling access and distribution of digital property |
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 |
US7376073B2 (en) | 2000-12-14 | 2008-05-20 | Ecd Systems, Inc. | Optical storage medium having distortion regions, and a method of modifying an optical storage medium to include distortion regions |
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 |
US9047450B2 (en) * | 2009-06-19 | 2015-06-02 | Deviceauthority, Inc. | Identification of embedded system devices |
US9047458B2 (en) * | 2009-06-19 | 2015-06-02 | Deviceauthority, Inc. | Network access protection |
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)
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 |
-
1978
- 1978-09-14 US US05/942,422 patent/US4246638A/en not_active Expired - Lifetime
-
1979
- 1979-09-13 DE DE19792937354 patent/DE2937354A1/de not_active Withdrawn
- 1979-09-13 JP JP11681379A patent/JPS5541598A/ja active Pending
Cited By (3)
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 | |
DE2555963C2 (de) | Einrichtung zur Funktionsmodifizierung | |
DE2714805C2 (de) | ||
EP0449265B1 (de) | Zufallszahlengenerator | |
DE2540975A1 (de) | Multi-mikro-prozessor-einheit | |
DE1499200B2 (de) | Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung | |
DE2023354A1 (de) | Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit | |
DE1269393B (de) | Mikroprogramm-Steuerwerk | |
DE2234867A1 (de) | Anordnung in datenverarbeitungsanlagen zum steuern der verarbeitung zweier voneinander unabhaengiger programme | |
DE2318069A1 (de) | Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix | |
EP0097725A1 (de) | Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen | |
EP1164456B1 (de) | Software-Schutzmechanismus | |
EP3891642B1 (de) | Verfahren zur sicherung der vertrauenswürdigkeit von quellcodes | |
DE2801518A1 (de) | Datenverarbeitungssystem mit speicher-schutzeinrichtung | |
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 | |
DE602004007368T2 (de) | Verfahren zum verwalten eines in einem umprogrammierbaren onboard-system heruntergeladenen ausführbaren codes | |
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 |