-
VERFAHREN UND EINRICHTUNG
-
ZUR VERSCHLUESSELTEN DATENUEBERTRAGUNG IN DATENVERARBEITUNGSANLAGN
Die Erfindung betrifft ein Verfahren und eine Einrichtung zur verschlüsselten Datenübertragung
in Datenverarbeitungsanlagen, gemäss dem Oberbegriff von Patentanspruch 1 bzw. 6.
-
Die zum Betreiben von Datenverarbeitungsanlagen erforderlichen Betriebsprogramme
sowie auch Anwenderprogramme stellen einen erheblichen materiellen Wert dar, der
denjenigen der Anlage selbst nicht selten bei weitem übertrifft. Es ist hinlänglich
bekannt, dass derartige Programme immer wieder unberechtigterweise kopiert werden,
wodurch den Programmherstellern beträchtliche materielle Schäden entstehen. Es ist
daher nicht verwunderlich, dass die Programmhersteller Verfahren zum Schutz ihrer
Werke anwenden, um das unberechtigte Kopieren von berechtigt in den Verkehr gebrachten
Programmen zu unterbinden. Erschwerend wirkt sich die Notwendigkeit aus, von jedem
erworbenen Programm Sicherheitskopien anfertigen zu müssen, um gegen Beschädigungen
des Programmträgers oder gegen Fehlmanipulationen geschützt zu sein. Ausserdem hat
es sich erwiesen, dass bisher keines der bekannten Schutzverfahren absolute Gewähr
gegen Raubkopien bieten kann, da der relativ hohe Marktpreis guter Programme zu
erheblichen Anstrengungen auf der Seite von "Knack"-Spezialisten ermuntert. Es sind
sogar Programme zum Ueberwinden von Nopierschutz-:lassnahmen auf dem Markt erhältlich.
-
Es ist Aufgabe der vorliegenden Erfindung, ein Verfahren und eine
Einrichtung der eingangs definierten Art dahingehend weiterzuentwickeln, dass eine
Möglichkeit zur Verschlüsselung von Programmen durch den Programmhersteller geschaffen
wird, wobei die Entschlüsselung nur über einen durch den Programmhersteller selbst
zu definierenden Code möglich sein soll.
-
Diese Aufgabe wird erfindungsgemäss durch die in den Patentansprüchen
1 und 6 definierten Merkmale gelöst.
-
l Damit wird erreicht, dass vorn Programmhersteller verschlüsselte
Programme nur mit Hilfe eines durch den Programmhersteller selbst definierten Schlüssels
innerhalb der Zentraleinheit des Rechners entschlüsselt werden können. Nur ein mit
der "richtigen" Decodierung ausgestatteter Prozessor kann die geschützten Programme
oder Programmteile verarbeiten. Durch eine dynamische und nicht mehr statische Gestaltung
der Befehlsdecodierung, also durch eine von entsprechenden Signalen gesteuerte Beeinflussung
der Befehlsdecodierung, wird das Aufdecken eines Programmschutzes entscheidend erschwert,
so dass ohne subtile Kenntnisse der angewendeten Verschlüsselungsart ein unberechtigtes
Auslesen und Kopieren solcher Programme nicht mehr möglich ist. Die berechtigte
Benutzung der Programme wird dagegen durch die beanspruchten Massnahmen ermöglicht,
ohne dass der Benutzer irgendwelche Einschränkungen im Ablauf gegenüber dem Standard-Prozessor
in Kauf nehmen müsste.
-
Im folgenden wird die Erfindung anhand bevorzugter Ausführungsbeispiele
mit Hilfe der Zeichnungen näher erläutert.
-
Es zeigen: Fig. 1 die prinzipielle Organisation eines Prozessors unter
Einschluss eines ersten Ausführungsbeispiels der Erfindung,
Fig.
2 ein zweites Ausführungsbeispiel der Erfindung, Fig. 3 ein drittes Ausführungsbeispiel
und Fig. 4 ein weiteres Ausführungsbeispiel.
-
Gemäss der Darstellung nach Fig. 1 enthält ein handelsüblicher Prozessor
drei Bustypen , über welche er mit seiner Peripherie kommuniziert: einen Datenbus
1, einen Adressbus 2 und einen Steuerbus 3. Mittels des Adressbus 2, welcher im
Beispiel einen Pufferspeicher 11 enthält und welcher unidirektional ausgebildet
ist, bestimmt der Prozessor den zu aktivierenden Teil der Peripherie. Der Datenbus
1, welcher bidirektional ausgebildet ist, ermöglicht den Austausch von Daten. Dabei
liefert der Steuerbus 3 die notwendigen Steuerinformationen, z.B. Signale zur Festlegung
der Richtung des beabsichtigten Datenflusses.
-
Zur elektrisch einwandfreien Ankopplung und Anpassung an die Gegebenheiten
der Peripherie ist in der Datenbus leitung eine Treiberschaltung 4 vorgesehen, welche
den äusseren Datenbus 1 mit einem internen Datenbus 5 verkoppelt. Dabei dient der
interne Datenbus 5 unter anderem dem folgenden Informationsaustausch: - vom äusseren
Datenbus 1 zu internen Arbeitsregistern 6 und umgekehrt, - vom äusseren Datenbus
1 bzw. von den internen Arbeitsregistern 6 zu einer arithmetischen und logischen
Recheneinheit (ALU) 7 und zurück, - vom äuseren Datenbus 1 zu einem internen Instruktionsregister
8.
-
Im Instruktionsregister 8 werden Operationscodes abgelegt, die dann
einem Instruktionsdecoder 9 zugeführt werden.
-
Dieser liefert schliesslich die notwendigen Informationen an eine
Ablaufsteuerung 10.
-
Der Programmablauf in einem derartigen Prozessor besteht im Abarbeiten
einer vorgegebenen Sequenz von Befehlen. Dabei besteht jeder Befehl aus einem Operationscode
und, sofern vorhanden, einem oder mehreren Operanden. Aus der Interpretation des
Operationscodes im Instruktionsdecoder 9 folgt für jeden Befehl: - wie viele Operanden
eingelesen werden müssen, - wo die Operanden abgelegt werden sollen und wie sie
interpretiert werden müssen, - welche Operation durchzuführen ist.
-
Diese Art der Befehlsdecodierung ist gemäss dem Stand der Technik
durch die Hersteller der Prozessoren fest vorgegeben.
-
Die grundsätzliche Idee der vorliegenden Erfindung, die im folgenden
anhand weiterer Ausführungsbeispiele noch näher erläutert wird, liegt im Durchbrechen
der fest vorgegebenen Befehlsdecodierung. Stattdessen wird dem Programmhersteller
eine Möglichkeit geboten, auf die Art der Befehlsdecodierung selbst Einfluss zu
nehmen. Im Beispiel nach Fig. 1 kann dies durch programmierbare Beeinflussung der
Befehlsdecodierung im Instruktionsdecoder 9 geschehen. Es kann aber auch durch dem
Prozessorhersteller vorbehaltene Auslegung separater Schaltungsteile geschehen;
und zwar auf einem Chip oder in einer Hybridschaltung, wie dies später noch erläutert
wird.
-
Bei beiden Lösungen kann nur ein mit Mitteln zur "richtigen" Decodierung
ausgestatteter Prozessor die geschützten Programme oder Programmteile verarbeiten.
-
Das Beispiel einer speziellen Befehlsdecodierung sei im folgenden
am Beispiel eines 8-Bit-Prozessors erläutert.
-
Der Operationscode besteht in diesem Fall aus einer 8 Bit breiten
Informationseinheit, auch Byte genannt. Gemäss dem Stand der Technik ist normalerweise
jedem Operationscode-Byte auf eindeutige Art eine bestimmte Operation zugeordnet.
-
Ein bestimmtes Byte möge z.B. bedeuten: "Addiere den Inhalt des internen
Registers X mit dem Inhalt des Akkumulators und speichere das Resultat im Akkumulator".
-
Im gewählten Beispiel beträgt der Befehlsvorrat 2 hoch 8 = 256 mögliche
Befehle, wobei aber in der Regel nicht alle 256 Bit-Kombinationen als Operationscode
zugelassen sind.
-
Nach der Erfindung wird nun die Zuordnung eines bestimmten Bytes zu
einem bestimmten Befehl nach definierten Regeln fortlaufend vertauscht. Dies hat
zur Folge, dass nach einer solchen Vertauschung ein vorgegebenes Operationscode-Byte
einen völlig anderen Befehl bedeuten kann.
-
Dieses Durcheinanderwürfeln kann in einer lexikografischen Tabelle
dargestellt werden, welche darüber Aufkunft gibt, in welches neue Byte ein Operationscode
abgebildet wurde.
-
Durch Anwenden dieser Tabelle auf ein vorhandenes Programm wird das
Programm ~verschlüsselt". Es ist damit nur noch für denjenigen verständlich, der
den entsprechenden Schlüssel, d.h. die Tabelle kennt.
-
Gemäss der Erfindung wird diese Tabelle in den Befehlsdecoder eingebaut
bzw. in Form eines Speicherelementes mit speziellen Prozessoranschlüssen verbunden.
Damit ist ein verschlüsseltes Programm nur in Verbindung mit einem Prozessor funktionsfähig,
welchem die richtige Operationscode-Tabelle zugeordnet ist.
-
Durch die Kopplung eines zu schützenden Programms mit einem verschlossenen
definierten Bauteil, welches einen Schlüssel in nicht auslesbarer Form enthält,
besitzt der Programmhersteller bzw. der Vertreiber eines zu schützenden Programms
die l'döglichkeit, die rechtmässige Verwendung seines Programms zu kontrollieren.
Vorraussetzung ist, dass das Programm nur zusammen mit dem verschlossenen Bauteil
verkauft wird.
-
In einem Ausführungsbeispiel, das anhand von Fig. 2 erläutert wird,
ist gegenüber dem Beispiel nach Fig. 1 der programmierbare Instruktionsdecoder 9
auf einen Bereich ausserhalb des eigentlichen Prozessors verlegt.
-
Im einzelnen sind bei einer externen Instruktionsdecodierung gemäss
Fig. 2 der Ausgang 20 des Prozessor-internen Instruktionsregisters und der Eingang
22 der Ablaufsteuerung 23 aus dem Prozessor herausgeführt und mit einem externen
Speicherelement 24 verbunden, welches als Instruktionsdecoder dient.
-
Zum Schutz vor unbefugtem Auslesen können der umrandete Rumpfprozessor
und der Speicher 24 auf einer Hybridschaltung integriert sein.
-
Grundsätzlich sind zur Realisierung der Erfindung gemäss dem heu#tigen
Stand der Halbleitertechnik beispielsweise folgende Wege möglich: - Maskenprogrammierung
- einmalige Programmierung im Feld, z.B. nach dem "fusible link"-Verfahren, - Feldprogrammierung
mit Löschmöglichkeit durch Ultraviolettstrahlung (EPRO£#1)
- Feldprogrammierung
mit elektrischer Löschmöglichkeit (EEPROM), - Realisation als flüchtiger Speicher
(RMj1), der eine Pufferbatterie zur Erhaltung der Muster zur Befehlsdecodierung
erfordert.
-
In Abwandlung des zuvor beschriebenen Ausführungsbeispiels, welches
eine programmierbare Instruktionsdecodierung vollständig ausserhalb des Prozessors
vorsieht, ist in dem Ausfiihrungsbeispiel nach Fig. 3 ein üblicher Instruktionsdecoder
32 auf dem Prozessor-Chip selbst angeordnet. Ein externer Speicher 35 in Form eines
PROM, EPROM, EEPROil oder RAM nimmt eine Zuordnungstabelle auf, mit welcher die
Individualisierung des Instruktionsdecoders erreicht wird. Der Speicher 35 ist mit
dem Ausgang 33 des auf dem Prozessor-Chip angeordneten Instruktionsregisters 34
sowie mit dem Eingang 31 des Instruktionsdecoders 32 verbunden.
-
Gemäss einem weiteren Ausführungsbeispiel, welches anhand von Fig.
4 erläutert wird, ist entweder für jede Adresse im Adressraum oder für Gruppen von
Adressen eine andere Instruktionsdecodierung wirksam. Zu diesem Zweck ist der Adressbus
40 innerhalb des Prozessors dem Instruktionsdecoder 41 zugeführt.
-
In Abwandlung dieses Beispiels und in Anlehnung an das Beispiel nach
Fig. 3 kann eine adressenabhängige Instruktionsdecodierung auch mit Hilfe des extern
angeordneten Speichers 35 gemäss Fig. 3 erreicht werden. Der Adressbus wird dann
ausserhalb des Prozessor-Chips über Leitung 36 mit diesem Speicher verbunden.
-
In einer Kombination der Ausführungsbeispiele nach den Figuren 2 und
4 kann der Adressbus auch auf den ausserhalb des Prozessors angeordneten Instruktionsdecoder
24 geführt sein.
-
In einer weiteren Abwandlung der bisher beschriebenen Ausführungsbeispiele
kann die im Speicher 35 aktivierte Tabelle für Prozessoren, welche Instruktionen
mit mehreren Wörtern verarbeiten, vom gerade verarbeiteten Wort (Byte) abhängig
gemacht werden.
-
Da die meisten Prozessoren die verfügbare Menge von Operationen nicht
vollständig ausnutzen, lässt sich z.B. die im Prozessor-internen Speicher eingespeicherte
Zuordnungstabelle derart auslegen, dass ungleiche Operationscodes gleiche Operationen
zur Folge haben. Damit ergibt sich eine zusätzliche Erschwerung gegenüber Versuchen,
die Zuordnungstabelle für die Operationscodes zu knacken.
-
B E Z U G 5 Z E 1 C H E N L 1 5 T E 1 Datenbus 2 Adressbus 3 Steuerbus
4 Treiberschaltung 5 interner Datenbus 6 Arbeitsregister 7 ALU 8 Instruktionsregister
9 Befehlsdecoder 10 Ablaufsteuerung 11 Pufferspeicher 20 Ausgang 21 Instruktionsregister
22 Eingang 23 Ablaufsteuerung 24 Speicherelement (Instruktionsdecoder) 31 Eingang
32 Instruktionsdecoder 33 Ausgang 34 Instruktionsregister 35 externer Speicher 36
#Leitung 40 Adressbus 41 Instruktionsdecoder