-
Beschreibung
-
Die Erfindung bezieht sich auf eine Anordnung zum Schutz von in einer
Datenverarbeitungsanlage gespeicherten Programmen gegen unerlaubtes Kopieren.
-
In Datenverarbeitungsanlagen gespeicherte Programme können bei Kenntnis
der Befehle und der Bedienung der jeweiligen Datenverarbeitungsanlage relativ leicht
kopiert werden. Daher besteht die Gefahr, daß die Programme auf Datenträger kopiert
und ohne Erlaubnis anderweitig benutzt werden.
-
Der Erfindung liegt die Aufgabe zugrunde, eine auch nachträglich
ohne großen Aufwand in eine Datenverarbeitungsanlge einfügbare Anordnung zu entwickeln,
mit der gespeicherte Programme gegen unerlaubtes Kopieren geschützt werden können.
-
Die Aufgabe wird erfindungsgemäß durch die im Anspruch 1 beschriebenen
Maßnahmen gelöst. Der Speicher kann an bestimmten Stellen im Ablauf des Programms
geladen und abgefragt werden. Eine Bedingung für den einwandfreien Ablauf des Programms
besteht dann darin, daß für z. B. mindestens ein vorgegebenens Datenwort das zugeordnete,
schaltungsmäßig verschlüsselte Wort festgestellt wird. Ist dies nicht der Fall,
dann wird der Ablauf des Programms unter- bzw. abgebrochen. Diese Bedingung läßt
sich im Programm häufiger und z. B. mit verschiedenen Wörtern ausführen.
-
Bei einer zweckmäßigen Ausführungsform ist der gesonderte Speicher
an den Daten- und Adreßbus der Datenverarbeitungsanlage angeschlossen und in einem
Gehäuse vergossen angeordnet. Der Speicher ist daher nur durch eine Zerstörung des
Gehäuses zugänglich.
-
Eine Zerstörung des Gehäuses verursacht im allgemeinen auch eine Zerstörung
des Speichers. Es muß daher beim Zerstören des Gehäuses damit gerechnet werden,
daß die Codierung des Speichers nicht mehr feststellbar ist. Wegen des relativ hohen
Aufwandes bei der Zerstörung des Gehäuses und des Risikos, trotz der Zerstörung
die Codierung nicht feststellen zu können, ist ein weitgehender Schutz der Programme
gegen unerlaubtes Kopieren gewährleistet.
-
Vorzugsweise besteht der gesonderte Speicher aus Flipflops, deren
Ein- und Ausgänge hinsichtlich der Stellen eines Adressen- und/oder Datenworts vertauscht
sind. Je nach dem binären Wert der Stellen des eingespeicherten Datenworts ergeben
sich bei dieser Anordnung durch die Codierung verschiedene Ausgangswörter. Es lassen
sich daher Befehle zum Schutz gegen Kopieren des Programms einfügen, wobei die Befehle
mit unterschiedlichen Daten arbeiten.
-
Es ist auch günstig, wenn der Speicher einen Zähler aufweist. Bei
dieser Anordnung lassen sich ebenfalls unterschiedliche Speicherinhalte und damit
durch die Codierung veränderte unterschiedliche Ausgangswörter erzeugen, die im
Rahmen von Befehlen einen Schutz des Programms gegen Kopieren gewährleisten.
-
Bei einer anderen zweckmäßigen Ausführungsform weist der Speicher
ein Schieberegister auf, das Rückkopplungen enthält, durch die Abweichungen der
Ausgabedaten von den Eingabedaten erzeugt werden. Mit dieser Anordnung läßt sich
auch in Verbindung mit den oben beschriebenen Maßnahmen eine sehr wirkungsvolle
Verschlüsselung mit einer Vielzahl unterschiedlicher Wörter erreichen.
-
Vorzugsweise sind den Ausgängen des Speichers auf vorgebbare Inhalte
hin ansprechende Zeitverzögerungsschaltungen nachgeschaltet, die jeweils mit gleichen
oder unterschiedlichen Zeitverzögerungen vom Speicherinhalt abweichende Daten erzeugen.
Die umcodierten Ausgangssignale stehen bei dieser Anordnung nur für eine begrenzte
Zeit zur Verfügung. Diese Realzeit-Bedingung ist hinsichtlich der Art und Dauer
der
Befehle zu berücksichtigen, die im Programm als Kopierschutz eingefügt sind.
-
Ein Verfahren zur Durchführung mit einer der in den Ansprüchen 1
bis 6 beschriebenen Vorrichtung besteht erfindungsgemäß darin, daß im Programm Ladebefehle
und Lesebefehle für den Speicher sowie Vergleichsbefehle für die bei vorgegebenen
Einlesedaten der Speicher auftretenden von den Einlesedaten abweichenden Auslesedaten
verarbeitet werden, und daß im Falle der Nichtübereinstimmung der verglichenen Daten
auf einen Löschbefehl oder Stoppbefehl übergegangen wird.
-
Das Programm läuft demnach nur ab, wenn bestimmte Daten, die durch
die Codierung der Speicher vorgegeben werden, vorhanden sind.
-
Vorzugsweise werden die Zähler über Befehle mit Zählsignalen versorgt.
wobei nach einer vorgebbaren Zahl von Befehlen ein Vergleich mit einer den Zählerinhalt
nach der Umcodierung entsprechenden Zahl durchgeführt wird.
-
Die Vergleichsoperationen werden im Hinblick auf die eingestellten
Verzögerungszeiten so gelegt, daß die Vergleiche vor Ablauf der Verzögerungszeiten
stattfinden. Dabei muß die Dauer des jeweiligen Befehls, der die Zeitverzögerungsschaltungen
über die Ladung der Speicher anstößt, und die Dauer des Vergleichsvorgangs kleiner
als die Verzögerungszeit sein.
-
Besonders günstig ist es, durch den Speicher Adressen zu verändern.
Beispielsweise wird durch eine über den Speicher geänderte Adresse der Inhalt einer
Speicherzelle ausgelesen, der für den weiteren Programmablauf unerläßlich ist.
-
Die Erfindung wird im folgenden an Hand von in einer Zeichnung dargestellten
Ausführungsbeispielen näher erläutert, aus denen sich weitere Merkmale sowie Vorteile
ergeben: Es zeigen: Fig. 1 ein Schaltbild einer Anordnung zum Schutz von in einer
Datenverarbeitungsanlage ablaufenden Programmen gegen unerlaubtes Kopieren, Fig.
2 nähere Einzelheiten der in Fig. 1 dargestellten Anordnung, Fig. 3 ein Diagramm
des zeitlichen Verlaufs von Ausgangssignalen einer Zeitverzögerungsschaltungen enthaltenden
Anordnung zum Schutz von Programmen gegen unerlaubtes Kopieren.
-
Ein Bediengerät 1, bei dem es sich um einen Home-oder Personal-Computer
mit einem Bildschirm 21 und einer Tastatur 22 handeln kann, ist über ein Kabel 2
mit einem programmierbaren Steuergerät 3 verbunden. In einem nicht näher bezeichneten
Speicher des Bediengeräts 1 befindet sich ein Programm für die Eingabe von Daten
in das Steuergerät 3, die Abrufung von Daten aus dem Steuergerät 3 und die Änderung
von Daten im Steuergerät 3. Das programmierbare Steuergerät weist einen Bus 4 auf,
an den ein Mikroprozessor 5, ein EPROM 6 sowie Eingabe-/Ausgabeschaltungen 8 angeschlossen
sind, über die das Steuergerät 3 mit einem Prozeß gekoppelt werden kann.
-
Das im Bedienungsgerät 1 vorhandene Programm für den Datenverkehr
mit dem Steuergerät 3 soll gegen unerlaubtes Kopieren geschützt werden. Hierfür
ist ein Speicher 7 im Bediengerät 1 an dessen internen Bus 20 angeschlossen. Der
Speicher 7 ist durch Befehle des Bediengeräts 1 adressierbar. Es handelt sich um
einen RAM-Speicher, der von den übrigen Speichern der aus dem Bediengerät 1 und
dem Steuergerät bestehenden Datenverarbeitungsanlage gesondert angeordnet ist.
-
Die Ausgänge des Speichers 7 sind derart codiert, daß
zumindest für
einen bestimmten Speicherinhalt eine davon abweichende und für den Ablauf des Programms
notwendige Information ausgebbar ist. Der Speicher 7 befindet sich in einem undurchsichtigen,
vergossenen Gehäuse. Die Speicherelemente sind ohne Zerstörung des Gehäuses nicht
zugänglich.
-
Der Speicher 7 enthält vorzugsweise eine Reihe von D-Flipflops 9,
10, 11, 12, 13, 14, 15, 16, deren D-Eingänge an die Leitungen des Bus 3 angeschlossen
sind. Die Ausgänge der D-Flipflops 9 bis 16 sind in anderer Reihenfolge an den Leitungen
des Bus 3 gelegt Die Flipflops 9 bis 16 werden gemeinsam über zwei Steuerleitungen
17, 18 zur Eingabe von Daten angeregt, d.h. adressiert.
-
Nach dem Einlesen eines bestimmten Worts in die acht Flipflops 9 bis
16 steht also am Ausgang infolge der Vertauschung der Ein- und Ausgänge ein anderes
Wort zur Verfügung.
-
Dieses Wort wird in dem den Ablauf des Datenverkehrs zwischen Bediengerät
1 und Steuergerät 3 steuernden Programm ausgewertet. Die Auswertung geschieht vorzugsweise
dadurch, daß im Programm Einlese- und Auslesebefehle für die D-Flipflops 9 bis 16
vorgesehen sind. Die ausgelesenen Daten, die durch die Codierung von den eingelesenen
Daten abweichen, werden in bestimmter Weise, beispielsweise durch Vergleich, ein
Programm verarbeitet. Wenn der Vergleich Nichtübereinstimmung ergibt, dann wird
das Programm z. B. gelöscht oder angehalten.
-
Der Speicher 7 kann auch an den internen Daten-und/oder Adreßbus
des Steuergeräts 3 angeschlossen sein. Es ist auch möglich, den Speicher an einen
nicht dargestellten seriellen Bus, oder an eine sonstige Schnittstelle des Steuergeräts
3 anzuschließen. Weiterhin können verschiedene Speicher an verschiedene Schnittstellen
des Bediengeräts 1 oder des Steuergeräts 3 angeschlossen sein.
-
Der Schutz der Software im Bediengerät wird somit durch die Verbindung
der durch den Speicher 7 realisierten Hardware und durch eine an die Gegebenheiten
des Speichers 7 angepaßte Software erreicht. Die Hardware und die Software sind
mit einem "Schlüssel" und einem "Schloß" vergleichbar.
-
Durch einen Speicher 7 für Adressen und/oder Daten lassen sich Umcodierungen
erreichen, die für denjenigen, der die Hardwarecodierungen nicht kennt, undurchsichtig
sind. Der Speicher 7 kann einen nicht dargestellten Zähler enthalten, dessen Ausgänge
so an den Bus 3 angeschlossen sind, daß die Stellenwerte vertauscht sind. Es wird
also eine andere Zahl auf den Bus 3 übertragen als im Zähler enthalten ist. Die
Vertauschung wird in dem für den Datenverkehr zwischen Bediengerät 1 und Steuergerät
3 bestimmten Programm berücksichtigt. Stehen dem Programm nicht die durch die Vertauschung
der Stellenwerte erzeugten Daten und/oder Adressen zur Verfügung, dann wird das
Programm beendet bzw. gelöscht.
-
Es ist auch günstig, als Speicher 7 ein Schieberegister vorzusehen,
das durch Rückkopplungen so eingestellt ist, daß die eingegebene Taktfolge nicht
mit dem Wert übereinstimmt, der an den Ausgängen parallel zur Verfügung steht. Das
Schieberegister kann zusätzlich zu den Flipflops und dem Zähler vorgesehen werden.
Während die Art der Eingabe der Daten und/oder Adressen in das Schieberegister sich
von der Dateneingabe in die Flipflops und den Zähler unterscheidet, ist die Auswertung
des Inhalts nicht anders als bei den Flipflops und dem Zähler.
-
Einem oder mehreren Ausgängen des Speichers sind
zweckmäßigerweise
Zeitverzögerungsschaltungen, insbesondere retriggerbare Monoflops, nachgeschaltet
Hierdurch wird ein Realzeitverhalten in die Verschlüsselung eingefügt. Die Fig.
3 zeigt die an den Triggereingang eines retriggerbaren Flipflops gelegten Impulse
und das Ausgangssignal 20, das dann ohne Änderung erhalten bleibt, wenn die Triggerimpulse
innerhalb einer bestimmten Taktzeit aufeinanderfolgen.
-
Das Ausgangssignal 20 wird zu Zeitpunkten tt, t2 abgefragt, die gegenüber
dem jeweiligen Beginn des Triggersignals 19 um eine die Verzögerungszeit des Monoflop
überschreitende Zeitspanne verschoben sind. Es muß also ein Triggerimpuls mit einem
entsprechenden Befehl erzeugt worden sein, damit eine Abfrage zu den angegebenen
Zeitpunkten ein positives Ergebnis liefert, das den weiteren Ablauf des Programms
ermöglicht.
-
- Leerseite -