PROCESS FOR PREVENTING THE EXECUTION OF A PROGRAMME IN A COMPUTER WHICH IS NOT ALLOWED TO EXECUTE SAID PROGRAMME

Abstract: This method is intended to provide a facility for ensuring that a program can only be executed on a permitted target computer. For this purpose, individual instructions in the program are replaced by incorrect instructions and a first table records the instructions that have been replaced and what the correct instructions are. The modified program is compressed to a first checksum by means of a first code and then the first table is combined with this first checksum, using a reversible cryptographically secure transformation function, to give a second table. The DES method is used for the transformation function. The target computer, to which the modified program and the second table are sent, compresses the modified program by means of a second code to a second checksum and combines the second checksum with the second table using the transformation function. Only if the first code and the second code are identical will the result of the combining operation in the target computer produce the first table again, by means of which the original program can be restored from the modified program. To compress the modified program or encode the tables, a coding chip can be used in which the code at the target computer is contained in such a way that it can neither be read nor modified from outside. Finally, the chip can be connected to the target computer in such a way that any separation is immediately detectable. <IMAGE>

Description: Verfahren zur Verhinderung des Ablaufs eines Programms auf für den Ablauf dieses Programms nicht zugelassenen Rechnern Die Erfindung bezieht sich auf ein Verfahren zur Verhinderung des Ablaufs eines ursprünglichen Programms auf für den Ablauf dieses Programms nicht zugelassenen Rechnern. Programme oder Software, die für einen Rechnertyp geschrieben wurden, sind gewöhnlich auf jeder Maschine dieses Rechnertyps ablauffähig. Im Falle eines Verkaufs von Programmen oder bei selektiven Lizenzen soll ein Weitergeben der Programme an Unberechtigte oder ein Kopieren der Programme durch Unberechtigte verhindert werden. Bisher wurde versucht, das unberechtigte Weitergeben von Programmen mit Hilfe von Verträgen oder durch Blockieren des Kopierbefehls zu verhindern. Diese Verfahren sind jedoch sehr unzuverlässig. Bei der Datenübertragung über Leitungen ist es bekannt, die Daten zu verschlüsseln, wenn diese geheimgehalten werden sollen. Es sind dabei verschiedene Verschlüsselungsverfahren bekannt geworden. Ein Beispiel dafür ist das DES-Verfahren, das in FIPS PUB 46 (Federal Information Processing Standard Publication) vom 15.Jan. 1977 erläutert ist. Dieses DES-Verfahren ist weiterhin in1,Elektronische Rechenanlagen', 22. Jahrgang 1980, Heft 6, Seite 276 bis 280 und in Electronics/21.6.1979 Seite 107 bis 120 beschrieben. Nachdem DES-Verfahren werden die zu übertragenden Daten auf der Sendeseite mit Hilfe eines Schlüssels so verschlüsselt, dass nur der Empfänger mit demselben Schlüssel diese Daten wieder entschlüsseln kann. Für weitere Einzelheiten wird auf die angegebenen Literaturstellen verwiesen. Die der Erfindung zugrundeliegende Aufgabe besteht darin, ein Verfahren anzugeben, das gewährleistet, dass ein Programm nur noch auf einem zugelassenen 1Rechner, dem sog. Zielrechner, laufen kann und das somit verhindert, dass ein Programm auf für den Ablauf dieses Programm nicht zugelassenen Rechnern verwendet wird. Diese Aufgabe wird dadurch gelöst, dass das ursprüngliche Programm durch Ersetzen einzelner Befehle durch unrichtige Befehle in ein verändertes Programm umgewandelt wird, dass in einer ersten Tabelle festgehalten wird, welche Befehle unrichtig sind und wie die richtigen Befehle lauten, dass das veränderte Programm mit Hilfe eines ersten Schlüssels zu einer ersten Prüfsumme komprimiert wird, dass die erste Tabelle und die erste Prüfsumme nach einer umkehrbaren kryptögrafisch sicheren Transformationsfunktion zu einer zweiten Tabelle verknüpft wird, dass das veränderte Programm und die zweite Tabelle den Rechnern zugeführt wird, dass in den Rechnern das veränderte Programm mit einem zweiten Schlüssel zu einer zweiten Prüfsumme komprimiert wird, und dass die zweite Prüfsumme mit der zweiten Tabelle nach der Transformationsfunktion verknüpft wird, wobei als Ergebnis der Verknüpfung nur dann wieder die erste Tabelle entsteht, wenn der zweite Schlüssel mit dem ersten Schlüssel identisch ist. Diese Aufgabe wird weiterhin dadurch gelöst, dass einzelne Befehle des ursprünglichen Programms nach dem DES-Verfahren mit Hilfe eines ersten Schlüssels verschlüsselt werden, dass beim Ablauf des Programms im Zielrechner bei Auftreten von verschlüsselten Befehlen diese einem im Zielrechner angeordneten Entschlüsselungsbaustein zugeführt werden, und dass nur der Rechner mit dem Entschlüsselungsbaustein mit dem ersten Schlüssel die verschlüsselten Befehle nach dem DES-Verfahren so entschlüsselt, dass das ursprüngliche Programm wieder entsteht. Die Erzeugung der Prüfsumme kann auf einfache Weise dadurch erfolgen, dass das veränderte Programm in Blöcke aufgeteilt wird, dass der erste Block nach dem DES-Verfahren mit dem Schlüssel zu einem ersten Wert verschlüsselt wird, dass der zweite Block nach dem DES-Verfahren mit dem ersten Wert als Schlüssel zu einem zweiten Wert verschlüsselt wird, dass aufeinanderfolgend jeder bisher nicht behandelte Block des veränderten Programms nach dem DES-Verfahren mit dem Wert der vorhergehenden Verschlüsselung als Schlüssel verschlüsselt wird und dass der Wert der Verschlüsselung des letzten Blockes mit dem Wert der vorhergehenden Verschlüsselung die Prüfsumme darstellt. Zur Erzeugung der ersten Prüfsumme wird dann der dem ausgewählten Zielrechner zugeordnete Schlüssel verwendet. Diesen Schlüssel verwendet dann auch der Zielrechner bei der Erzeugung der zweiten Prüfsumme, die mit der ersten Prüfsumme identisch sein muss. Zweckmässig ist es, als Transformatior#unktion das DES Verfahren zu verwenden. Dann wird die zweite Tabelle dadurch erzeugt, dass die erste Tabelle in Blöcke aufgeteilt wird, dass jeder Block der ersten Tabelle mit Hilfe der ersten Prüfsumme als Schlüssel nach dem DES-Verfahren verschlüsselt wird und dass die verschlüsselten Blöcke zur zweiten Tabelle zusammengefasst werden. Entsprechend wird dann im Zielrechner zur Erzeugung der ersten Tabelle aus der zweiten Tabelle vorgegangen. Hier wird jeder Block der zweiten Tabelle mit Hilfe der zweiten Prüfsumme als Schlüssel nach dem DES-Verfahren entschlüsselt und die entschlüsselten Blöcke zur ersten Tabelle zusammengesetzt. Die Verschlüsselung bzw. Entschlüsselung der Tabellen und die Erzeugung der Prüfsummen kann in einem Verschlüs selungsbaustein mit einem bekannt aufgebauten DES-Funktionsblock erfolgen. Der Verschlüsselungsbaustein zur Durchführung des Verfahrens besteht dann zweckmässigerweise aus dem DES Funktionsblock, einem Datenregister, in das die zu bearbeitenden Daten blockweise eingespeichert werden und das mit dem DES Funktionsblock verbunden ist, aus einem Schlüsselregister zur Aufnahme des Schlüssels, das mit dem DES Funktionsblock verbunden ist, und aus einer Steuereinheit, die zur Steuerung mit dem Datenregister, dem DES Funktionsblock und mit dem Schlüsselregister verbunden ist. Ein Zugriff zum Schlüssel im Zielrechner wird dann verhindert, wenn der Schlüssel in einem von aussen nicht lesbaren und von aussen nicht löschbaren Festspeicher gespeichert ist, der mit dem Schlüsselregister verbunden ist. Ein- und derselbe Verschlüsselungsbaustein kann für die Verschlüsselung als auch für die Entschlüsselung verwendet werden, wenn vor dem Schlüsselregister ein mit der Steuereinheit verbundener Multiplexer angeordnet ist, von dem jeweils ein Eingang mit dem Ausgang des DES Funktionsblocks, mit dem Ausgang des Festspeichers und mit externen Leitwsenzum Anlegen eines Schlüssels verbunden ist, wobei in Abhängigkeit eines Steuersignals von der Steuereinheit einer der Eingänge zum Schlüsselregister durchgeschaltet wird. Das erfindungsgemässe Verfahren setzt somit nur voraus, dass alle Rechner des zu schützenden Typs den Verschlüsselungsbaustein besitzen, der nicht von den Rechnern zu trennen ist. Jedem Rechner wird dabei in dem von aussen nicht lesbaren und nicht löschbaren Speicher ein Schlüssel eindeutig zugeordnet. Das zu schützende Programm wird z.B. vom Hersteller nach dem Verfahren so modifiziert, dass eine ablauffähige Version nur auf dem Zielrechner mit dem korrekten Schlüssel entsteht. Das Kopieren des veränderten Programms braucht somit nicht mehr verhindert zu werden, da Kopien für andere als den Zielrechner nutzlos sind. Anhand eines Ausführungsbeispiels, das in den Figuren dargestellt ist, wird die Erfindung weiter erläutert. Es zeigen Fig. 1 und Fig. 2 das erfindungsgemässe Verfahren aufge teilt in einzelne Schritte in einem Ablaufdiagramm, Fig. 3 Ausschnitte beim Senderechner und beim Zielrechner, die zur Verschlüsselung bzw. Entschlüsselung des Programms verwendet werden, Fig. 4 einen Aufbau des Entschlüsselungs- bzw. Verschlüs selungsbausteins. In Fig. 1 sind die Verfahrensschritte gezeigt, die auf der Sendeseite beim Senderechne Sq rchgeführt werden, um das Programm. zu verschlüsseln. In einem ersten Schritt S1 werden in dem ursprünglichen Programm PRE einige ausgewählte Befehle, z.B. Sprungbe- fehle, durch ähnliche aber unrichtige Befehle erse-tzt. Da- bei entsteht dann das veränderte Programm PRV. Im Schritt S2 werden in einer ersten Tabelle die richtigeQ Befehle- aufgenommen und weiterhin festgelegt, an welcher Stelle des ursprünglichen Programms PRE diese Befehle stehen. Die erste Tabelle ist mit TAE bezeichnet. Im Schritt S3 wird nun das veränderte Programm -PR-V in Blöcke mr. von z.B. jeweils 64 bit aufgeteilt (i = O...k). Entsprechendes wird mit der ersten Tabelle TAE durchgeführt. Hier wird im Schritt S4 die Tabelle TAE in Blöcke tl (1 = 1...n) von ebenfalls z.B. 64 bit aufgeteilt. Nun erfolgt die Erzeugung der ersten Prüfsumme. Im Schritt S5 wird der erste Block t- des veranderten Programms PRV mit Hilfe des ersten Schlüssels ID einer DES Verschlüsselung unterzogen. Dabei entsteht ein erster Wert C0-. Im Schritt S6 wird der nächste Block m1 des veränderten Programms PRV nach dem DES Verfahren verschlüsselt. Nur wird diesmal als Schlüssel der erste Wert GO der vorhergehenden Verschlüsselung des Blockes n herangezogen. Dabei entsteht der zweite Wert C1. Dieser Vorgang wiederholt sich nunmehr solange, bis der letzte Block mk des veränderten Programms PV mit dem Wert der vorhergehenden Verschlüsselung nach dem DES Verfahren verknüpft worden ist und somit der Wert Ck entstanden ist. Das heisst der Block m. des veränderten Programms PRV wird jeweils mit í -1 nach dem DES Verfahren zu Ci verknüpft. Dieser Vorgang ist dann beendet, wenn der Block mk bearbeitet ist und der Wert Ck entstanden ist. Dieser Wert Ck entspricht der ersten Prüfsumme CS. Die erste Prüfsumme CS wird nun weiterhin zur Verschlüsselung der ersten Tabelle TAE verwendet. Für diese Verschlüsselung wird wiederum das DES-Verfahren verwendet. Dazu werden die einzelnen Blöcke ti der ersten Tabelle TAE jeweils nach dem DES-Verfahren mit Hilfe der ersten Prüfsumme CS zu verschlüsselten Blöcken Zl verknüpft Schritt S7), die im Schritt S8 zu der verschlüsselten, zweiten Tabelle TAV zusammengesetzt wird. Fig. 2 zeigt, wie die Entschlüsselung beim Zielrechner ZR erfolgt. Dem Zielrechner ZR wird das verschlüsselte Programm oder veränderte Programm PRV übergeben und die verschlüsselte Tabelle oder zweite Tabelle TAV. Der Zielrechner ZR bildet nun ebenfalls aus dem geänderten Programm PRV eine Prüfsumme, die zweite Prüfsumme. Dazu wird im Schritt S9 zunächst das veränderte Programm PRV in Blöcke mi von jeweils z.B. 64 bit aufgeteilt, der Block ma im Schritt S10 nach dem DES-Verfahren mit Hilfe des Schlüssels ED zu Cg verschlüsselt, anschliessend im Schritt S11 der Block m1 mit Hilfe von C0 nach dem DES-Verfahren weiter verschlüsselt und dieser Vorgang entsprechend dem Schritt S6 der Fig. 1 so lange durchgeführt, bis der Block mk verschlüsselt ist. Als Ergebnis dieser Komprimierung entsteht dann die zweite Prüfsumme CS = C, die mit der ersten Prüfsumme nach Fig. 1 identisch ist, wenn die Schlüssel LD (Schritt S5, Schritt S10) identisch sind. Nunmehr kann aus der Prüfsumme CS beim Zielrechner ZR wieder die erste Tabelle erzeugt werden. Dazu wird die Transformationsfunktion verwendet, die schon zur Verschlüsselung der ersten Tabelle TAE verwendet worden ist. Zunächst wird also beim Zielrechner ZR die zweite Tabelle TAV wieder in Blöcke Z1 (1= 1 ... n) von z.B. jeweils 64 bit aufgeteilt (Schritt S12) und anschliessend erfolgt im Schritt S13 die Entschlüsselung nach dem DES Verfahren. Das heisst die einzelnen Blöcke Zl werden mit der zweiten Prüfsumme GS als Schlüssel entschlüsselt. Dabei entstehen die einzelnen Blöcke t-l, die im Schritt S14 wieder zur ersten Tabelle TAE zusammengesetzt werden. Aus der ersten Tabelle TAE und aus dem geänderten Programm PRV kann im Schritt S15 wieder das ursprüngliche Programm PRE entwickelt werden. Dieses ursprüngliche Programm PRE kann dann im Zielrechner ZR laufen. Im Ausführungsbeispiel der Fig. 1 und der Fig. 2 wird das DES-Verfahren jeweils zweimal beim Senderechner SR und beim Zielrechner ZR verwendet. Mit Hilfe des DES-Verfahrens wird zunächst das veränderte Programm PRV zu einer Prüfsumme CS komprimiert, wobei bei der ersten Verschlüsselung der Schlüssel ID verwendet wird. Weiterhin wird das DES-Verfahren zur Verschlüsselung der ersten Tabelle bzw. zur Entschlüsselung der zweiten Tabelle verwendet, wobei als Schlüssel jeweils die Prüfsumme verwendet wird. Bei der Verschlüsselung der ersten Tabelle bzw. bei der Entschlüsselung der zweiten Tabelle kann als Transformationsfunktion auch eine andere Funktion verwendet werden, z.B. die Exklusiv-ODER-Funktion. Es muss nur gewährleistet sein, dass die herangezogene Funktion eine umkehrbare kryptografisch sichere Transformationsfunktion ist. Aus Fig. 3 ergibt sich das Zusammenwirken des Senderechners SR und des Zielrechners ZR. Diese sind z.B. über einen Bus BU verbunden, an dem noch weitere Rechner RR angeschlossen sind. Eine Übertragung der Daten vom Senderechner zu den Zielrechnern kann z.B. auch über Magnetband oder Magnetplatte erfolgen. Im Senderechner SR wird das veränderte Programm PRV blockweise in einem Register RP gespeichert, entsprechend wird die erste Tabelle TAE blockweise in einem Register RT gespeichert. Vom Register RP wird das veränderte Programm PRV dem Bus BU zugeführt, es wird weiterhin einem Verschlüsselungsbaustein MDV1 zugeführt, an dem der Schlüssel ID1 anliegt. Der Verschlüsselungsbaustein MDV1 komprimiert das veränderte Programm PRV zur Prüfsumme CS. Diese Prüfsumme CS wird nun dazu verwendet, um die erste Tabelle TAE zu verschlüsseln. Dies erfolgt im zweiten Verschlüsselungsbaustein MDV2. Das Ergebnis der Verschlüsselung ist dann die zweite Tabelle TAE, die dem Bus BU zugeführt wird. Der Zielrechner ZR erhält vom Bus BU das veränderte Programm PRV und die verschlüsselte Tabelle TAV. Der Zielrechner ZR komprimiert das veränderte Programm PRV im Verschlüsselungsbaustein MDE1 mit Hilfe des Schlüssels ID2 zur zweiten Prüfsumme CS. Wenn der Schlüssel ID2 im Zielrechner ZR und der Schlüssel ID1 im Senderechner SR identisch sind, sind auch die Prüfsummen CS im Senderechner SR und im Zielrechner ZR identisch. Die Prüfsumme CS wird nun im Zielrechner ZR dazu verwendet, um die verschlüsselte Tabelle TAV wieder zu entschlüsseln. Dies geschieht im Entschlüsselungsbaustein MDE2 mit Hilfe der Prüfsumme CS als Schlüssel. Am Ausgang des Entschlüsselungsbausteins MDE2 wird die erste Tabelle TAE abgegeben. Aus der ersten Tabelle TAE und dem veränderten Programm PRV kann dann leicht wieder das ursprüngliche Programm gebildet werden, das z.B. im Register ER gespeichert wird. Das ursprüngliche Programm PRE kann dann in den weiteren Einheiten EA des Zielrechners ZR verarbeitet werden. Rechner PR, die nicht den Schlüssel ID1 ( ID2) kennen, können dagegen das veränderte Programm PRV nicht mehr in das ursprüngliche Programm PRE verwandeln und können somit das Programm PRE nicht verwenden. Aus Fig. 4 ergibt sich ein möglicher Aufbau des Verschlüsselungsbausteins MDV bzw. des Entschlüsselungsbausteins MDE. Im Baustein ist zunächst der DES Funktionsblock DES enthalten, der in bekannter Weise aufgebaut ist (vgl. Electronics, 21.6.1979, S.107 ff). Mit dem DES Funktionsblock DES ist ein Datenregister DREG verbunden, in dem die zu verschlüsselnden Daten zwischengespeichert werden. Dieses Datenregister DREG kann z.B. 64 bit breit sein, um jeweils einen Block m des Programms oder einen Block t der Tabelle aufzunehmen. An den DES Funktionsblock DES ist weiterhin ein Schlüsselregister KRG angeschlossen, in dem der bei dem DES-Verfahren verwendete Schlüssel eingespeichert wird. Um den Baustein vielfältig verwendbar zu machen, ist vor dem Schlüsselregister KRG ein Multiplexer MUX angeordnet, über den einer von drei Eingängen zum Schlüsselregister KRG durch geschaltet werden können. Es ist dabei möglich, den Ausgang des Funktionsblocks DES zum Schlüsselregister KRG durchzuschalten, es ist weiterhin möglich, ein an eine externe Leitung LX angelegten Schlüssel ID zum Schlüsselregister zu übertragen und schliesslich kann ein Festspeicher PROM mit dem Schlüsselregister verbunden werden. Im Festspeicher PROM kann dann der Schlüssel gespeichert sein, der von aussen nicht beeinflussbar und nicht zugänglich sein darf. Die Steuerung des Multiplexers MUX, des Funktionsblocks DES und der Datenregister DREG und KRG übernimmt eine Steuereinheit SG, die entsprechend den der Steuereinheit SG zugeführten Befehlen BF Steuersignale erzeugt. Zum Beispiel können folgende Befehle BF verwendet werden: Lade Datenregister DREG, um Daten mi, tl in das Datenregister einzuspeichern; Lade Schlüsselregister KRG, z.B. mit dem Schlüssel über die externe Leitung LX, #t#lüsselregister KRG mit dem Inhalt des Festspei- chers PROM, Lade Schlüsselregister PROM,KRG mit dem Ausgangswert vom Funktionsblock DES, Verschlüssele oder Entschlüssele die ama##unktionsblock an- liegenden Daten mit dem Schlüssel ID. Der Verschlüsselungsbaustein MD wird beim Senderechner SR z.B. auf folgende Weise verwendet: Das veränderte Programm PRV wird in 64 bit breiten Blöcken mO bis mk nacheinander in das Datenregister DRG eingespeichert. In das Schlüsselregister KRG wird über die Leitung LX der Schlüssel ID des Zielrechners ZR geladen. Anschliessend erfolgt die DES Verschlüsselung im Funktionsblock DES. Dann wird das Schlüsselregister KRG mit dem Ausgangswert C des Funktionsblocks DES geladen. In das Datenregister wird der Block m1 übernommen, der dann im Funktionsblock DES mit dem Schlüssel CO verschlüsselt wird. Der letzte Schritt wird solange wiederholt, bis der Block mk verarbeitet ist. Dann erscheint als Ausgangswert C des Funktionsblocks DES die Prüfsumme. Diese wird ebenfalls in das Schlüsselregister KRG übernommen. Mit der Prüfsumme als Schlüssel kann dann die erste Tabelle verschlüsselt werden. Dazu werden die einzelnen Blöcke tl an das Datenregister DREG nacheinander angelegt und von dort dem Funktionsblock DES zugeführt, in dem die Verschlüsselung mit Hilfe der Prüfsumme als Schlüssel erfolgt. Am Ausgang des Funktionsblockes DES wird dann die verschlüsselte Tabelle in Blöcken Zl abgegeben. Der letzte Schritt wird ebenfalls solange durchgeführt, bis der letzte Block tn der ersten Tabelle verschlüsselt ist. Die Verwendung des Verschlüsselungsbausteins MD beim Zielrechner SR kann in ähnlicher Weise erfolgen. Unterschiedlich ist nur, dass der Schlüssel ID diesmal vom Festspeicher PROM in das Schlüsselregister KRG geladen wird, dass dem Datenregister DREG die Blöcke Z1 nacheinander zugeführt wird und dass dann blockweise die Entschlüsselung von Z1 mit der Prüfsumme durchgeführt wird, die vorher mit Hilfe des im Festspeicher PROM gespeicherten Schlüssel gebildet worden ist Der Baustein MD kann also sowohl für die Verschlüsselung, als auch für die Entschlüsselung verwendet werden. Er kann sowohl für die Komprimierung des veränderten Programms PRV zur Prüfsumme CS als auch zur Verschlüsselung der Tabelle TAE bzw. Entschlüsselung der Tabelle TAV verwendet werden. Bei der vorgehend beschriebenen Anwendung des Bausteins MD wurde das gesamte Programm über den Baustein geführt. Es ist auch möglich, innerhalb eines Programms nur einzelne Befehle, z.B. Sprungbefehle zu verändern. Tritt dann im Programmablauf ein derartiger veränderter Befehl auf, dann wird dieser veränderte Befehl dem Baustein MD zugeführt, der dann diesen Befehl entschlüsselt. Dazu wird der im Festspeicher PROM gespeicherte Schlüssel verwendet. Nur der Rechner, der den richtigen Schlüssel hat, kann den veränderten Befehl so entschlüsseln, dass sich ein sinnvoller Programmablauf ergibt. Das erfindungsgemässe Verfahren ist nur dann sicher, wenn der verwendete Schlüssel ID geheimbleibt. Es muss also verhindert werden, dass au#s dem Baustein MD der Schlüssel entnommen werden kann. Dies kann dadurch verhindert werden, dass der Festspeicher PROM im Baustein MD integriert ist und nur intern gelesen werden kann.Weiterhin könnte der Baustein in einem Plastikmaterial vergossen sein, um den Zugriff zu den Festspeicheranschlüssen schwierig zu machen. Der Baustein MD müsste zusätzlich mit dem Zielrechner so verbunden sein, dass er ohne Zerstörung z.B. eines Siegels von diesem nicht entfernt werden kann. 13 Patentansprüche 4 Figuren

Claims: Process for preventing the execution of a program on computers not authorized to execute said program, characterized in that the program (PRE) is converted into an altered program (PRV) by replacing individual instructions by incorrect instructions, in that it is recorded in a first table (TAE) which instructions are incorrect and what the correct instructions are, in that the altered program (PRV) is compressed with the aid of a first key (ID1) to form a first checksum (CS), in that the first table (TAE) is combined with the first checksum in accordance with a reversible, cryptographically secure transformation function to form a second table (TAV), in that the altered program (PRV) and the second table (TAV) are supplied to the computers (ZR, RR), in that the altered program is compressed with a second key (ID2) to form a second checksum in the computers, and in that the second checksum is combined with the second table in accordance with the transformation function, the result of the combination only producing the first table (TAE) again if the second key (ID2) is identical to the first key (ID1). Process according to Claim 1, characterised in that the altered program (PRV) is divided into blocks (m i ), in that the first block (m₀) is encrypted in accordance with the DES method with the key (ID) to form a first value (C₀), in that the second block (m₁) is encrypted in accordance with the DES method with the first value (C₀) as key to form a second value (C₁), in that each block (m i ) of the altered program is successively encrypted in accordance with the DES method with the value (C i - 1 ) of the preceding encryption as key, and in that the value (C k ) of the encryption of the last block (m k ) with the value (C k - 1 ) of the preceding encryption represents the checksum (CS). Process according to Claim 2, characterised in that the key (ID2) assigned to the selected target computer is used for generating the first checksum. Process according to Claim 2, characterised in that the key (ID2) stored in the target computer (ZR) is used for generating the second checksum. Process according to one of Claims 1 to 4, characterised in that the DES method is used as the transformation function. Process according to one of Claims 1 to 5, characterised in that the first table (TAE) is divided into blocks (t₁), in that each block of the first table is encrypted with the aid of the first checksum (CS) as key in accordance with the DES method, and in that the encrypted blocks (Z₁) are combined to form the second table (TAV). Process according to Claim 6, characterised in that the second table (TAV) is divided into blocks (Z₁), in that each block of the second table (TAV) is decrypted with the aid of the second checksum as key in accordance with the DES method, and in that the decrypted blocks are combined to form the first table (TAE). Process according to one of the preceding claims, characterised in that the generation of the checksum or of the second table from the first table or of the first table from the second table, or the decryption of the altered instructions is carried out in an encrytion module (MD) which contains a DES function block (DES). Circuit arrangement for carrying out the process according to Claim 8, characterised by the encrytion module (MD), consisting of a data register (DREG), into which the data to be processed are written block-by-block and which is connected to the function block (DES), of a key register (KRG) for storing the key, which is connected to the function block (DES), and of a control unit (SG) which is connected to the data register, the function block and the key register for the purpose of control. Circuit arrangement according to Claim 9, characterised in that the key of the target computer (ZR) is stored in a read-only memory (PROM) which can neither be read nor erased from the outside, and which is connected to the key register (KRG). Circuit arrangement according to Claim 10, characterised in that a multiplexer (MUX) connected to the control unit (SG) is arranged before the key register (KRG), one input of which multiplexer is in each case connected to the output of the function block (DES), to the output of the read-only memory (PROM) and to an external line (LX) for the application of a key, one of the inputs to the key register (KRG) being switched through by the control unit (SG) as a function of a control signal. Circuit arrangement according to one of Claims 9 to 11, characterised in that the encrytion module (MD) is connected to the target computer (ZR) in such a way that a disconnection is detectable.

Inventors: MUELLER-SCHLOER, CHRISTIAN, DR., Müller-Schloer, Christian, Dr.
Applicants: SIEMENS AKTIENGESELLSCHAFT
Application year: 1984
Main classification: G06F12
IPC codes: G06F21, G06F1