-
Die vorliegende Erfindung betrifft
eine Vorrichtung und ein Verfahren zum Übersetzen von Informationen
wie beispielsweise Quellendateien, die codiert sind, um die Sicherheit
der Informationen zu wahren.
-
In letzter Zeit ist die dezentralisierte
Entwicklung von Software unter Verwendung von Computernetzen, etc.
populär
geworden, und einhergehend mit diesem Trend sind viele Techniken
bezüglich
der Verschlüsselung
zum Wahren der Sicherheit von Informationen entwickelt worden. Wenn
zum Beispiel ein Entwickler A gewisse Informationen I zu einem Entwickler
B unter Verwendung eines Netzes, etc. übertragen möchte, codiert der Entwickler
A die Informationen I und überträgt die Informationen
I über
ein Netz zu dem Entwickler B. Der Entwickler B empfängt die
Informationen I und stellt die Informationen I wieder her. In diesem
Fall findet eine Technik zum Codieren und Decodieren von Informationen
breite Verwendung.
-
Es gibt jedoch den Fall, daß der Entwickler
A den Entwickler B in die Lage versetzen möchte, die Informationen I,
die der Entwickler A besitzt, für
einen Prozeß P
zu verwenden, den der Entwickler B besitzt, aber die Sicherheit
der Informationen I gegenüber
Außenseitern
des Prozesses P (Bedienern, etc.) wahren möchte. Dies ist zum Beispiel
dann der Fall, wenn es erforderlich ist, eine Programmquelle eines neuen
Produktes entsprechend den Informationen I in solch einer Umgebung
zu kompilieren, daß auch andere
Personen als die betreffenden darauf zugreifen können. Wenn die Informationen
I vor dem Kompilieren decodiert werden, besteht in diesem Fall die Möglichkeit,
daß die
Informationen I nach außen
dringen können,
auch wenn die Quellendatei, nachdem sie codiert ist, zu dem Entwickler
B übertragen
wird. Daher kann die Sicherheit des Inhaltes der Quellendatei nicht
vollständig
gewahrt werden.
-
Herkömmlicherweise ist das Wahren
der Sicherheit der Informationen unter Verwendung einer Codiertechnik
auf den Schutz der Informationen vor einem Dritten gerichtet, der
weder der Informationsanbieter A noch der Informationsempfänger B ist. Zum
Beispiel wird bei einem "Datenübertragungsverfahren", das in der japanischen
offengelegten Patentveröffentlichung
Nr. 7-162409 beschrieben ist, ein Modul zum Decodieren von codierten
Daten verändert
und immer nach einer gewissen Zeitperiode wieder kompiliert, und
der Objektcode des Moduls wird zu einem Nutzer der codierten Daten übertragen.
Daher ist es für
einen Dritten schwierig, die codierten Daten zu decodieren.
-
Dieses Datenübertragungsverfahren dient jedoch
zum Wahren der Sicherheit der Daten gegenüber einem Dritten, und ein
Empfänger
der Daten kann die Daten vor der Verschlüsselung unter Verwendung des
Objektcodes (der einen Decodiererschlüssel enthält) des Decodiermoduls leicht
erhalten.
-
Wenn eine codierte Quellendatei übertragen wird,
indem sukzessive ein Befehl C1 zum Decodieren und ein existierender
Kompiliererbefehl C2 ausgeführt
werden, kann der Empfänger
die Quellendatei kompilieren und eine Objektcodedatei (ausführbarer
Modul) bilden. Wenn die Befehle C1 und C2 jedoch einfach sukzessive
ausgeführt
werden, ist es für einen
Ingenieur, der mit einem Betriebssystem [operating system (OS)]
und seinen Befehlen vertraut ist, ein leichtes, das Ausführungsresultat
des Befehls C1 zu erhalten. Daher ist es schwierig, die Sicherheit
des Inhaltes der Quellendatei gegenüber dem Empfänger zu
wahren.
-
Da es bei dem herkömmlichen
Datenübertragungsverfahren
möglich
ist, wie oben beschrieben, daß Quelleninformationen
durchsickern können,
verteilt ein Softwareanbieter einen ausführbaren Modul nach dem Kompilieren.
Dann wird die Software in dem System eines Nutzers kundenspezifisch
ange paßt,
indem der gegebene ausführbare
Modul direkt bearbeitet wird.
-
Bei dieser Operation wird jedoch
nur ein Teil des ursprünglichen
ausführbaren
Moduls verwendet, der eine Fülle
von Optionen enthält,
und es sind auch viele Teile in dem verteilten ausführbaren
Modul vorhanden, die für
einen Nutzer unnötig
sind. Aus diesem Grund muß ein
ausführbarer
Modul mit unnötiger
Größe in einem
System installiert werden, und dies stellt ein Problem dar.
-
Obwohl auch die Herstellung eines
ausführbaren
Moduls, der durch einen Anbieter gemäß dem Wunsch eines Nutzers
kundenspezifisch angepaßt wird,
und die Verteilung des Moduls in Betracht gezogen werden kann, wird
in diesem Fall die Arbeit eines Anbieters mühsam, und dem Anbieter wird
eine zu große
Last aufgebürdet,
falls die Anzahl von Nutzern zunimmt.
-
"A
chosen-plaintext attack on the Microsoft BASIC protection" (Assem et al), Computers
and Security, Elsevier Science Publishers, Amsterdam, NL, Bd. 5,
Nr. 1, 1. März
1986, Seiten 36–45,
erörtert,
wie der Microsoft-Basic-Intepretierer
einen Befehl vorsieht, der das zur Zeit im Speicher befindliche
Programm schützt,
indem es in einem verschlüsselten Format
auf der Platte gesichert wird; wie ein Nutzer solch ein geschütztes Programm
zum Laufen bringen kann, dabei aber nicht auf das Quellenprogramm
zugreifen kann; und wie die Autoren einen gewählten Klartextangriff nutzten,
um die Codierung zu brechen; das Verschlüsselungsverfahren konnte ohne
weiteres aus der Chiffrierung von sorgfältig gewählten Klartextprogrammen abgeleitet
werden. Als Resultat wurde ein Paar von MBASIC-Programmen entwickelt,
die zum Entschlüsseln
eines geschützten
Programms für
einen Interpretierer in der Lage waren.
-
Filter: Decrypt – Template For A Decrypt Source
Filter (Seite im Online-Handbuch), 19. Dezember 1995, beschreibt
ein Modell für
ein Entschlüsselungsquellenfilter
und erklärt,
daß es
mit einem Entschlüsselungsalgorithmus
kombiniert werden kann, um ein Entschlüsselungsfilter zu entwickeln.
-
Es ist eine Aufgabe der vorliegenden
Erfindung, eine Übersetzungsvorrichtung
und ein Übersetzungsverfahren
vorzusehen, um Nutzer mit einer Vielfalt an Software sicher zu versehen,
ohne dabei einem Anbieter eine zu große Last aufzubürden.
-
Die vorliegende Erfindung ist in
den beigefügten
unabhängigen
Ansprüchen
definiert, worauf jetzt Bezug genommen werden sollte. Bevorzugte Merkmale
können
den ihnen beigefügten
Unteransprüchen
entnommen werden.
-
Die Übersetzungsvorrichtung der
vorliegenden Erfindung umfaßt
eine Eingabeeinheit, eine Wiederherstellungseinheit, eine Übersetzereinheit
und eine Ausgabeeinheit.
-
Gemäß dem ersten Aspekt der vorliegenden Erfindung
teilt die Eingabeeinheit codierte Informationen in eine Vielzahl
von Teilen und gibt die Informationen der Wiederherstellungseinheit
ein, und die Wiederherstellungseinheit stellt die Originalinformationen
für jeden
Teil der codierten Informationen wieder her. Dann übersetzt
die Übersetzereinheit
die Originalinformationen, und die Ausgabeeinheit gibt das Resultat
der Übersetzung
aus.
-
Codierte Informationen, die einzugeben
sind, sind zum Beispiel eine codierte Quellendatei, und die Wiederherstellungseinheit
decodiert die Informationen und stellt eine Quellendatei in ihrem
Zustand vor der Verschlüsselung
wieder her, und die Übersetzungseinheit
kompiliert die decodierte Quellendatei und bildet einen ausführbaren
Modul.
-
Dabei decodiert die Wiederherstellungseinheit
nicht alle codierten Informationen auf einmal, sondern sie decodiert
die Informationen nach und nach für jeden geteilten Teil der
Informationen. Dann übersetzt
die Übersetzereinheit
die Originalinformationen für
jeden decodierten Teil der Informationen.
-
Gemäß dem zweiten Aspekt der vorliegenden
Erfindung gibt die Eingabeeinheit codierte Informationen ein, und
die Übersetzungseinheit
führt einen
Prozeß zum
Wiederherstellen der Originalinformationen aus den codierten Informationen
innerhalb des Umfangs des Übersetzungsprozesses
aus und übersetzt
die Informationen, ohne daß die
Originalinformationen nach außen
dringen können.
Dann gibt die Ausgabeeinheit das Resultat der Übersetzung aus.
-
Die Übersetzungsvorrichtung übersetzt
nicht alle codierten Informationen, nachdem sie decodiert worden
sind, sondern sie decodiert die Informationen innerhalb des Umfangs
des Übersetzungsprozesses. Dabei
führt die Übersetzereinheit
einen verschmolzenen Prozeß aus
den Wiederherstellungs- und Übersetzungsprozessen
aus und erzeugt das Resultat der Übersetzung aus den codierten
Informationen.
-
1 zeigt
das Prinzip der vorliegenden Erfindung.
-
2 zeigt
eine Konfiguration eines Kompilierers.
-
3 zeigt
den Datenfluß.
-
4 ist
ein Flußdiagramm,
das einen Übersetzungsprozeß zeigt.
-
5 ist
ein Flußdiagramm,
das einen Wiederherstellungsprozeß zeigt.
-
6 ist
ein Flußdiagramm,
das einen Analyseprozeß zeigt.
-
7 zeigt
den ersten Codier-/Decodierprozeß.
-
8 zeigt
den zweiten Codierprozeß.
-
9 zeigt
den zweiten Decodierprozeß.
-
10 zeigt
einen Kundenanpassungsprozeß.
-
11 ist
ein Flußdiagramm,
das den Kundenanpassungsprozeß zeigt.
-
12 zeigt
eine Konfiguration einer Informationsverarbeitungsvorrichtung.
-
13 zeigt
Speichermedien.
-
Die Ausführungsformen der vorliegenden
Erfindung sind unten unter Bezugnahme auf die Zeichnungen detailliert
beschrieben.
-
1 zeigt
das Prinzip einer Übersetzungsvorrichtung
der vorliegenden Erfindung. Die in 1 gezeigte Übersetzungsvorrichtung
umfaßt
eine Eingabeeinheit 1, eine Wiederherstellungseinheit 2,
eine Übersetzereinheit 3 und
eine Ausgabeeinheit 4.
-
Gemäß dem ersten Prinzip der vorliegenden Erfindung
teilt die Eingabeeinheit 1 codierte Daten in eine Vielzahl
von Teilen und gibt die codierten Informationen der Wiederherstellungseinheit 2 ein,
und die Wiederherstellungseinheit 2 stellt die Originalinformationen
für jeden
Teil der codierten Informationen wieder her. Dann übersetzt
die Übersetzereinheit 3 die
Originalinformationen, und die Ausgabeeinheit 4 gibt das
Resultat der Übersetzung
aus.
-
Codierte Informationen, die einzugeben
sind, sind beispielsweise eine codierte Quellendatei, und die Wiederherstellungseinheit 2 decodiert
die Informationen und stellt eine Quellendatei in dem Zustand vor
der Verschlüsselung
wieder her, und die Übersetzereinheit 3 kompiliert
die decodierte Quellendatei und bildet einen ausführbaren
Modul.
-
Dabei decodiert die Wiederherstellungseinheit 2 nicht
alle codierten Informationen gleichzeitig, sondern sie decodiert
die Informationen für
jeden geteilten Teil der Informationen nach und nach. Dann übersetzt
die Übersetzereinheit 3 die
Originalinformationen für
jeden decodierten Teil der Informationen.
-
Gemäß solch einem Prozeß werden
die Originalinformationen für
jeden Teil der Informationen wiederhergestellt, aber es werden nicht
alle Informationen gleichzeitig wiederhergestellt. Deshalb ist es für einen
Nutzer einer Übersetzervorrichtung
schwierig, alle Originalinformationen zu erfassen, und dadurch kann
die Übersetzung
ausgeführt
werden, während
die Sicherheit der Originalinformationen gewahrt wird.
-
Nutzer können auch leicht und sicher
mit Software versehen werden, die viele Optionen enthält. Darüber hinaus
kann das Übersetzungsresultat durch
das Bezeichnen von Übersetzungsoptionen
in dem System eines Nutzers auch kundenspezifisch angepaßt werden.
-
Gemäß dem zweiten Prinzip der vorliegenden
Erfindung gibt die Eingabeeinheit 1 codierte Informationen
ein, und die Übersetzereinheit 3 führt einen
Prozeß zum
Wiederherstellen der Originalinformationen aus den codierten Informationen
innerhalb des Umfangs des Übersetzungsprozesses
aus und übersetzt
die Informationen, ohne daß die
Originalinformationen nach außen
dringen können.
Dann gibt die Ausgabeeinheit 4 das Resultat der Übersetzung aus.
-
Die Übersetzungsvorrichtung übersetzt
nicht alle codierten Informationen gleichzeitig, nachdem sie decodiert
worden sind, sondern sie decodiert die Informationen innerhalb des
Umfangs des Übersetzungsprozesses.
Dabei führt
die Übersetzereinheit 3 einen
verschmolzenen Prozeß aus
den Wiederherstellungs- und Übersetzungsprozessen
aus und erzeugt das Resultat der Übersetzung aus den codierten
Informationen.
-
Gemäß solch einem Prozeß werden
die Originalinformationen nur innerhalb der Übersetzereinheit 3 wiederhergestellt und
können
aus der Übersetzungsvorrichtung
nie nach außen
dringen. Deshalb ist es für
einen Nutzer der Übersetzungsvorrichtung schwierig,
alle Originalinformationen zu erfassen, und dadurch kann die Übersetzung
ausgeführt
werden, während
die Sicherheit der Originalinformationen gewahrt wird.
-
Nutzer können auch leicht und sicher
mit Software versehen werden, die viele Übersetzungsoptionen enthält. Weiterhin
kann das Übersetzungsresultat
durch das Bezeichnen von Übersetzungsoptionen
in dem System eines Nutzers auch kundenspezifisch angepaßt werden.
-
Zum Beispiel entsprechen die Eingabeeinheit 1,
die in 1 gezeigt ist,
die Wiederherstellungseinheit 2, die Übersetzereinheit 3 und
die Ausgabeeinheit 4 einer Lesereinheit 21, einer
Decodierereinheit 22, einer Analysatoreinheit 23 bzw.
einer Back-End-Einheit 12, die in 2 gezeigt und später beschrieben sind.
-
Es ist erforderlich, Informationen
einer Quellendatei an Nutzer sicher zu verteilen und gemäß dem Wunsch
eines Nutzers zu übersetzen
(kompilieren), um Software in dem Computersystem eines Nutzers kundenspezifisch
anzupassen. In diesem Fall ist es wünschenswert, die Quellendatei
unter Verwendung eines gewissen Verfahrens zu codieren und die Quellendatei
zu verteilen.
-
Ferner ist es erforderlich, daß auch ein
Empfänger,
der einen Decodiererschlüssel
für codierte
Informationen besitzt, die Originalinformationen eines gewissen
Prozesses (oder einer Vorrichtung) nicht von außen erhalten kann, und es ist
wünschenswert, daß die Decodierfunktion
der Quellendatei in einem Kompilierprozeß (oder einer Vorrichtung)
enthalten ist. Die vorliegende Erfindung kann solch einem Wunsch
gerecht werden und kann auf verschiedenen Gebieten der Industrie
breite Verwendung finden.
-
2 zeigt
eine Konfiguration eines Sprachkompilierers dieser Ausführungsform.
Der in 2 gezeigte Kompilierer
umfaßt
eine Front-End-Einheit 11 und eine Back-End-Einheit 12.
Die Front-End-Einheit 11 umfaßt weiter eine Lesereinheit 21,
eine Decodierereinheit 22 und eine Analysatoreinheit 23.
-
Wenn die Lesereinheit 21 codierte
Daten 24 (eine codierte Quellendatei) liest, decodiert
die Decodierereinheit 22 die Daten in gewissen Einheiten
und gibt die decodierten Daten der Analysatoreinheit 23 ein.
Dann werden die in der Decodierereinheit 22 gespeicherten
decodierten Daten automatisch verworfen, nachdem sie der Analysatoreinheit 23 eingegeben
sind. Die Analysatoreinheit 23 führt Analyseprozesse wie beispielsweise
eine Textelementanalyse (lexikalische Analyse), eine syntaktische
Analyse, eine semantische Analyse, etc. für die eingegebenen Informationen
in der Eingangsordnung aus. Dann wiederholen die Decodierereinheit 22 und
die Analysatoreinheit 23 dieselben Prozesse, bis keine
codierten Daten 24 mehr vorhanden sind.
-
Wenn keine codierten Daten 24 mehr
vorhanden sind und ein Zwischentext 25, der ein Programm
ist, das in einer Zwischensprache geschrieben ist, von der Front-End-Einheit 11 ausgegeben wird,
optimiert die Back-End-Einheit 12 die Daten und bildet
Objektcodes auf der Basis des Zwischentextes 25.
-
Gemäß solch einem Kompilierer wird
die eingegebene codierte Quellendatei in Einheiten von vorbestimmter
Mindestgröße durch
die Decodierereinheit 22 decodiert. Da dieser Decodierprozeß ein interner
Prozeß des
Kompilierers ist und die Informationen unmittelbar nach dem Decodieren
in den vorbestimmten Einheiten verworfen werden, kann der Nutzer
nicht alle Informationen der decodierten Quellendatei von außerhalb
des Kompilierers erfassen, auch wenn der Nutzer den Decodiererschlüssel besitzt.
-
3 zeigt
den Datenfluß in
dem in 2 gezeigten Kompilierer.
In 3 gibt die Lesereinheit 21 die
codierte Quellendatei 24 einem Puffer 31 für codierte
Daten in gewissen Einheiten ein, und die Decodierereinheit 22 decodiert
die Daten in dem Puffer 31 für codierte Daten und gibt die
decodierten Daten einem Puffer 32 für uncodierte Daten ein. Der
Puffer 31 für
codierte Daten und der Puffer 32 für uncodierte Daten sind in
einem Speicher vorgesehen.
-
Dann analysiert die Analysatoreinheit 23 die Daten
in dem Puffer 32 für
uncodierte Daten in der Reihenfolge und bildet einen Zwischentext 25 in
dem Speicher, und die Back-End-Einheit 12 bildet
eine ausführbare
Datei 33 aus dem Zwischentext 25.
-
4 ist
ein Flußdiagramm,
das einen Übersetzungsprozeß (Kompilierungsprozeß) mit dem
in 2 gezeigten Kompilierer
zeigt. Zuerst beurteilt die Lesereinheit 21 gemäß einer
magischen Zahl, die eine Datei in den Eingangsdaten 41 besitzt,
ob die gegebenen Eingangsdaten 41 codiert sind oder nicht (Schritt
S1). Falls die Daten codiert sind, gibt die Lesereinheit 21 eine
vorbestimmte Anzahl von Bytes N der Daten dem Puffer 31 für codierte
Daten ein. Die Decodierereinheit 22 stellt Quellendaten
aus den Daten, die dem Puffer 31 für codierte Daten eingegeben wurden,
wieder her und überträgt die Daten
zu dem Puffer 32 für
uncodierte Daten (Schritt S2).
-
Dann liest die Analysatoreinheit 23 die
Quellendaten aus dem Puffer 32 für uncodierte Daten, analysiert
nur den Leseabschnitt der Daten und expandiert die Daten zu einem
Zwischentext 25 (Schritt S3). Die Lesereinheit 21 beurteilt
dann, ob noch weitere Eingangsdaten 41 vorhanden sind oder
nicht (Schritt S4). Die N-Byte-Übertragung
durch die Le sereinheit 21, der Wiederherstellungsprozeß durch
die Decodierereinheit 22 und der Analyseprozeß durch die
Analysatoreinheit 23 werden wiederholt, bis keine Eingangsdaten 41 mehr
vorhanden sind.
-
Bei dieser Wiederholung werden Daten
in dem Puffer 31 für
codierte Daten und in dem Puffer 32 für uncodierte Daten durch neue
Eingangsdaten immer überschrieben
und gelöscht.
Deshalb wird in dem Puffer 32 für uncodierte Daten nie die
gesamte Quellendatei reproduziert. Wenn keine Eingangsdaten 41 mehr
vorhanden sind, wird dann automatisch ein Zwischentext 25 gebildet,
der den gesamten Eingangsdaten entspricht.
-
Wenn die Eingangsdaten 41 andererseits von
Natur aus Quellendateien mit niedriger Sicherheitspriorität sind und
bei Schritt S1 nicht codiert sind, überträgt die Lesereinheit 21 die
gesamte Eingabe zu dem Puffer 32 für uncodierte Daten, und die
Analysatoreinheit 23 konvertiert die gesamten Eingangsdaten
in einen Zwischentext 25. In diesem Fall werden alle Eingangsdaten 41 bei
der einen Übertragung verarbeitet.
-
Falls bei Schritt S4 keine Eingangsdaten 41 mehr
vorhanden sind, optimiert die Back-End-Einheit 12 den gebildeten
Zwischentext 25 (Schritt S5) und bildet Codes durch die
Prozesse der Registerzuordnung und Instruktionsplanung (Schritt
S6). Dann gibt die Back-End-Einheit 12 ein Objektprogramm 42 (ausführbares
Programm) entsprechend der in 3 gezeigten
ausführbaren
Datei 33 aus.
-
5 ist
ein Flußdiagramm,
das ein Beispiel für
Prozesse zeigt, die bei den in 4 gezeigten Schritten
S2, S3 und S4 ausgeführt
werden. Zum Beispiel wird angenommen, daß auf der Seite des Anbieters
einer Quellendatei 16 Bytes der folgenden Originaldaten in einer
Datei "Daten 1" gespeichert sind.
ABCDEFGHIJKLMNOP
-
Wenn diese Daten codiert werden und
in einer Datei "Daten
2" gespeichert werden,
wird der Inhalt der Daten wie folgt sein:
BCDEFGHIJKLMNOPQ
-
Obwohl bei diesem Beispiel ein Caeser-Schlüssel verwendet
wird, kann auch ein anderer Schlüssel
verwendet werden. Wenn eine Datei "Daten 2" dem Kompilierer als codierte Quellendatei 24 eingegeben
wird, öffnet
zuerst die Lesereinheit 21 die Datei (Schritt S11) und
liest vier Bytes der codierten Daten in den Puffer 31 für codierte
Daten (Schritt S12). Bei dem obigen Beispiel werden "BCDE", welche die ersten
vier Bytes sind, in den Puffer 31 für codierte Daten gelesen.
-
Dann decodiert die Decodierereinheit 22 die codierten
Daten und überträgt die Daten
zu dem Puffer 32 für
uncodierte Daten (Schritt S13). Bei diesem Beispiel werden "BCDE" decodiert, und "ABCD", welche die Originaldaten
sind, werden zu dem Puffer 32 für uncodierte Daten übertragen.
-
Dann führt die Analysatoreinheit 23 eine
Textelementanalyse für
die Daten in dem Puffer 32 für uncodierte Daten aus, und
wenn ein Textelement erkannt wird, konvertiert sie die Daten in
der Ordnung in einen Zwischentext 25 (Schritt S14). Bei
diesem Beispiel wird die Textelementanalyse der Daten "ABCD" ausgeführt.
-
Dann werden die Prozesse der Schritte
S12, S13 und S14 wiederholt, bis keine Daten mehr in der codierten
Quellendatei 24 vorhanden sind (Schritt S15). Wenn in der
codierten Quellendatei 24 keine Daten mehr vorhanden sind,
wird der Prozeß der Front-End
beendet, und die Lesereinheit 21 schließt die Datei.
-
Da gemäß solch einem Wiederherstellungsprozeß Daten
in dem Puffer 32 für
uncodierte Daten sequentiell gelöscht
werden, werden die Originaldaten "ABCDEFGHIJKLMNOP" nie zusammen reproduziert. Demzufolge
kann die Übersetzung
von Daten ausgeführt
werden, während
die Sicherheit der Daten gewahrt wird.
-
6 ist
ein Flußdiagramm,
das ein Beispiel für
den bei Schritt S3 von 4 auszuführenden Analyseprozeß zeigt.
Wenn die Lesereinheit 21 Zeichen in einer Quellendatei
liest, verändert
sich die Eingangsquelle in Abhängigkeit
davon, ob die Quellendatei codiert ist oder nicht, das heißt, ob die
Datei über
die Decodierereinheit 22 geleitet wird oder nicht. Falls
die Datei codiert ist, liest die Analysatoreinheit 23 Zeichen
aus dem Puffer 32 für
uncodierte Daten zum Speichern der Daten, die von der Decodierereinheit 22 ausgegeben
wurden. Falls die Datei nicht codiert ist, liest die Analysatoreinheit 23 Zeichen
direkt aus der Datei selbst.
-
Zuerst beurteilt die Analysatoreinheit 23,
ob die Eingangsdatei eine codierte Quellendatei ist oder nicht (Schritt
S21), und falls die Datei eine uncodierte Quellendatei ist, öffnet sie
die Datei (Schritt S22). Dabei zeigt ein Dateizeiger Fp auf die
Anfangsposition der Datei.
-
Dann beurteilt die Analysatoreinheit 23 wieder,
ob die Datei eine codierte Quellendatei ist oder nicht (Schritt
S23), und falls die Datei eine codierte Quellendatei ist, liest
sie ein Zeichen aus dem Puffer 32 für uncodierte Daten (Schritt
S24) und beurteilt, ob der Puffer leer ist oder nicht (Schritt S25).
-
Falls der Puffer 32 für uncodierte
Daten leer ist, instruiert die Analysatoreinheit 23 die
Decodierereinheit 22 zu arbeiten, und die Decodierereinheit 22 stellt
einen Teil der codierten Quellendatei wieder her (Schritt S26),
und die Prozesse ab Schritt S24 werden wiederholt. Falls der Puffer 32 für uncodierte
Daten nicht leer ist, führt
die Analysatoreinheit 23 eine Textelementanalyse für schon
gelesene Zeichen aus (Schritt S27) und wiederholt dann die Prozesse
ab Schritt S23.
-
Falls bei Schritt S23 festgestellt
wird, daß die Datei
eine uncodierte Quellendatei ist, liest die Analysatoreinheit 23 ein
Zeichen ab der Position, auf die der Zeiger Fp zeigt (Schritt S28),
und führt
den Prozeß bei
Schritt S27 aus und wiederholt dann die Prozesse ab Schritt S23.
Dabei wird der Zeiger Fp auf die Position des nächsten Zeichens gestellt.
-
Gemäß solch einem Analyseprozeß werden, falls
die Quellendatei codiert ist, Zeichen aus dem Puffer 32 für uncodierte
Daten gelesen, und immer dann, wenn kein Zeichen in dem Puffer ist,
wird die Decodierereinheit 22 instruiert zu arbeiten. Deshalb wird
nie mehr als eine vorbestimmte Anzahl von Bytes der Quellendaten
in dem Puffer 32 für
uncodierte Daten reproduziert.
-
Übrigens
kann in dieser Ausführungsform solch
ein öffentlich
bekanntes System zum Speichern wie zum Beispiel ein gemeinsamer
Schlüssel
oder öffentlicher
Schlüssel
außerhalb
des Kompilierers als Decodiererschlüssel für den Wiederherstellungsprozeß einer
Chiffre verwendet werden. Wenn jedoch kein eigener Verschlüsselungsalgorithmus
in Besitz ist, besteht in der Tat die hohe Wahrscheinlichkeit, daß übertragene
Informationen durch einen anderen Decodierer decodiert werden können.
-
Bei einem Verfahren, bei dem nur
ein externer Decodiererschlüssel
in Besitz ist, besteht ferner das Risiko, da andere beliebige Eingangsdaten
auch unter Verwendung des Schlüssels
und des Decodieralgorithmus eines Kompilierers codiert werden können, daß der Kompilierer
für andere
Zwecke als für
den ursprünglichen
Zweck verwendet werden kann. Wenn ein Kompilierer nur für einen
gewissen feststehenden Zweck zu verwenden ist, ist dieses Verfahren
deshalb nicht empfehlenswert.
-
Daher wird in jenem Fall verhindert,
daß der Kompilierer
für andere
Zwecke als zum Kompilieren einer spezifischen Quellendatei verwendet
wird, indem ein Decodiererschlüssel
innerhalb des Kompilierers in Besitz ist.
-
7 zeigt
ein Konfigurationsbeispiel für solch
einen Codier-/Decodierprozeß.
In 7 umfaßt die Codiererseite
zum Senden einer Quellendatei (SRC) Codierer 51 und 52,
und der Kompilierer auf der Decodiererseite umfaßt einen internen Decodierer 53 und
einen Decodierer 54. Ein gemeinsamer Schlüssel CF
ist sowohl in dem Codierer 51 als auch in dem internen
Decodierer 53 im Binärcode
eingebaut, auf den von außen
nicht zugegriffen werden kann. Für
den Verschlüsselungsalgorithmus
wird zum Beispiel ein DES (Data Encryption Standard) verwendet.
-
Zuerst codiert die Codierereinheit 52 eine Quellendatei
SRC unter Verwendung eines anderen gemeinsamen Schlüssels CT1,
der sich von CF unterscheidet, und bildet eine codierte Quellendatei. Die
Codierereinheit 51 codiert den gemeinsamen Schlüssel CT1
unter Verwendung des internen gemeinsamen Schlüssels CF und bildet einen codierten gemeinsamen
Schlüssel
CT2. Sowohl die codierte Quellendatei als auch CT2 werden von der
Codiererseite zu der Decodiererseite übertragen.
-
Wenn CT2 empfangen wird, stellt der
interne Decodierer 53 den gemeinsamen Schlüssel CT1
aus CT2 unter Verwendung des internen gemeinsamen Schlüssels CF
wieder her und leitet den gemeinsamen Schlüssel CT1 zu dem Decodierer 54 weiter. Der
Decodierer 54 decodiert die codierte Quellendatei unter
Verwendung des gemeinsamen Schlüssels CT1
und stellt somit die Quellendatei SRC wieder her.
-
Obwohl bei diesem Beispiel ein Verfahren verwendet
wird, bei dem ein interner gemeinsamer Schlüssel in einem Kompilierer in
Besitz ist, ist die vorliegende Erfindung nicht unbedingt auf dieses Verfahren
begrenzt. Anstelle des Codierens und Übertragens einer gesamten Quellendatei
kann die Quellendatei in eine Vielzahl von Teilen geteilt werden,
und jeder Teil kann codiert und übertragen
werden. In diesem Fall ist es praktisch, wenn die Wiederherstellungseinheit
des Kompilierers für
die Teileinheit verwendet wird. Weiterhin kann nicht nur ein gemeinsames
Schlüsselsystem
sondern auch ein öffentliches
Schlüsselsystem
auf dieselbe Weise verarbeitet werden.
-
8 zeigt
ein Konfigurationsbeispiel für
einen Codierprozeß auf
der Basis eines öffentlichen Schlüsselsystems,
und 9 zeigt ein Konfigurationsbeispiel
des Decodierprozesses. Bei diesem Beispiel wird die Kombination
aus einem DES, der ein gemeinsames Schlüsselsystem ist, und einem RSA (Rivest-Shamir-Adleman),
nämlich
einem öffentlichen
Schlüsselsystem,
verwendet, und zwei Sätze von
privatem Schlüssel/öffentlichem
Schlüssel
von RSA werden verwendet.
-
In 8 codiert
ein DES-Codierer 61 der Codiererseite Quellencodes (SC)
gemäß dem DES
unter Verwendung eines gemeinsamen Schlüssels C1 und bildet einen codierten
Quellencode (ESC). In der Zwischenzeit codiert ein RSA-Codierer 62 den
gemeinsamen Schlüssel
C1 gemäß dem RSA
unter Verwendung eines privaten Schlüssels Is und bildet einen codierten
gemeinsamen Schlüssel
C2. Ferner codiert der RSA-Codierer C2 gemäß dem RSA unter Verwendung
eines öffentlichen
Schlüssels
Fp und bildet einen codierten gemeinsamen Schlüssel C3. Sowohl der codierte
Quellencode ESC als auch C3 wird von der Codiererseite zu der Decodiererseite übertragen.
-
Wenn in 9 C3 empfangen wird, stellt ein RSA-Decodierer 63 der
Decodiererseite C2 aus C3 gemäß dem RSA
unter Verwendung des eingebauten privaten Schlüssels Fs wieder her und speichert C2
in einem internen Puffer. Ferner stellt der RSA-Decodierer 63 C1
aus C2 gemäß dem RSA
unter Verwendung eines öffentlichen
Schlüssels
Ip wieder her und speichert C1 in dem internen Puffer. Dann decodiert
ein DES-Decodierer 64 den codierten Quellencode unter Verwendung
des wiederhergestellten gemeinsamen Schlüssels C1 und stellt den Quellencode
wieder her.
-
Dann werden die Quellencodes durch
einen Kompilierer 65 kompiliert und in Objektcodes (Maschinencodes)
konvertiert. Da Quellencodes in gewissen Einheiten wiederhergestellt
werden, wird der DES-Decodierer 64 in der Tat von einer Front-End-Einheit
des Kompilierers 65 wiederholt aufgerufen.
-
Bei den in 8 und 9 gezeigten
Beispielen werden insgesamt fünf
Schlüssel
verwendet, das heißt,
ein gemeinsamer Schlüssel
C1, ein privater Schlüssel
Is der Codiererseite, ein öffentlicher Schlüssel Ip
der Codiererseite, ein privater Schlüssel Fs der Decodiererseite
und ein öffentlicher
Schlüssel Fp
der Decodiererseite. Davon sind Is und Ip und Fp und Fs RSA-Kombinationen
aus einem Codiererschlüssel
bzw. einem Decodiererschlüssel,
und der öffentliche
Schlüssel
Ip wird von der Codiererseite im voraus an die Decodiererseite verteilt.
Gemäß solch einem
Verfahren kann dann, wenn derselbe codierte Quellencode an eine
Vielzahl von Nutzern verteilt wird, die Sicherheit von Chiffren
unter Verwendung von verschiedenen Kombinationen von Is und Ip für jeden
Nutzer verbessert werden.
-
Unter Verwendung eines wie oben beschriebenen
Kompilierers können
Anwendungen, die durch einen Anbieter verteilt werden, in dem System
eines Nutzers kundenspezifisch angepaßt werden, und dadurch kann
die Größe von Anwendungen
reduziert werden.
-
Zum Beispiel wird angenommen, daß ein Informationsurheber
A (Anbieter) und ein Informationsempfänger B (Nutzer) zu unabhängigen Systemen gehören und
der Urheber A eine Vielzahl von Informationen besitzt, einen Teil
oder alle der Informationen codiert, die Informationen zu dem System
des Empfängers
B sendet und die Übersetzung
der Informationen in diesem System ausgeführt wird. Gemäß solch
einem Prozeß können Anwendungen
auf der Seite des Empfängers
B unter Verwendung der Quelleninformationen einzigartig kundenspezifisch
angepaßt
werden, während
die Sicherheit der Quelleninformationen, die durch den Urheber A
gespeichert wurden, gewahrt wird.
-
10 zeigt
ein Beispiel für
solch einen Kundenanpassungsprozeß. In 10 packt der Anbieter A eine codierte
Quelle 71, Profilinformationen 72, einen Kompilierer 73,
etc. in ein Paket 74 und sendet es an den Nutzer B. Profilinformationen
stellen Informationen zum Optimieren eines Programms dar, das die
Verzweigungswahrscheinlichkeit von Prozessen und die Bezeichnung
von Subroutinen (Sprungziel eines Funktionsaufrufs) enthält.
-
Ein Installierer 75 des
Nutzers B expandiert das Paket 74 in dem Speicher und paßt die Anwendung
gemäß Instruktionen
des Nutzers kundenspezifisch an. Dabei verarbeitet der Kompilierer 73 die Quelle 71,
Profilinformationen 72, etc. gemäß den Instruktionen und bildet
einen kundenspezifisch angepaßten
ausführbaren
Modul 76. Falls der Kompilierer 73 schon in dem
System des Nutzers B vorhanden ist, wird der Kompilierer 73 in
dem Paket 74 weggelassen.
-
11 ist
ein Flußdiagramm,
welches den Kundenanpassungsprozeß zeigt. Zuerst packt das System
des Anbieters A Informationen, die für den Kundenanpassungsprozeß benötigt werden,
wie etwa die codierte Quelle 71, Profilinformationen 72, den
Kompilierer 73, etc. und eine Kundenanpassungsproze durinstruktionsdatei
gemäß einem
vorbestimmten Format/Namen (Schritt S31). Dann überträgt das System des Anbieters
A das Paket 74 über ein
Speichermedium wie zum Beispiel eine CD-ROM (Kompaktplatten-Nur-Lese-Speicher)
oder ein Netz, etc. zu dem Nutzer B.
-
In dem System des Nutzers B expandiert
der Installierer 75 das Paket 74 in einem Arbeitsbereich des
Speichers (Schritt S32), und der Nutzer B bezeichnet Übersetzungsoptionen
gemäß einem
Systemmenü,
das durch die Kundenanpassungsprozedurinstruktionsdatei angezeigt
wird (Schritt S33). In diesem Fall werden zum Beispiel die folgenden Übersetzungsoptionen
selektiert.
- 1. Selektion einer zu verwendenden
Profilinformationsdatei
- (a) Gebrauch 1: Nutzung einer Profilinformationsdatei entsprechend
Gebrauch 1.
- (b) Gebrauch 2: Nutzung einer Profilinformationsdatei entsprechend
Gebrauch 2. ...
- (n) Gebrauch n: Nutzung einer Profilinformationsdatei entsprechend
Gebrauch n.
- 2. Selektion der Optimierungsoption
- (a) 01: Weitestgehende Reduzierung der Größe von zu bildenden Objektcodes
(Binärcodes).
- (b) 02: Reduzierung der Größe von zu
bildenden Objektcodes (Binärcodes),
indem die Laufgeschwindigkeit über
einem gewissen Niveau beibehalten wird.
- (c) 03: Größtmögliche Erhöhung der
Laufgeschwindigkeit.
- 3. Selektion einer zu verbindenden Klassenbibliothek (eine Vielzahl
von Klassenbibliotheken kann selektiert werden) LIB1, LIB2, LIB3,
...
-
Dann bildet der Installierer 75 Kompiliereroptionsinformationen 77,
die für
den Nutzer geeignet sind, gemäß dieser
selektierten Eingabe und aus den Architekturinformationen des Systems
(CPU-Informationen, Speichergröße, etc.).
In den Optionsinformationen 77 sind Befehle für den Kompilierer 73,
etc. beschrieben.
-
Dann führt der Kompilierer 73 den
in 4 gezeigten Übersetzungsprozeß unter
Verwendung der Optionsinformationen 77 aus und bildet einen ausführbaren
Modul 76 aus der Quelle 71 (Schritt S34). Da der
auf diese Weise gebildete ausführbare Modul 76 gemäß den Instruktionen
optimiert wird, wenn die Kundenanpassung erfolgt, stellt die Größe des ausführbaren
Moduls 76 ein erforderliches Minimum für den Nutzer B dar.
-
Dann löscht der Installierer 75 Daten
wie etwa die Quelle 71, die in dem Arbeitsbereich, etc. expandiert
wurden. Wenn kein Wartungsplan vorhanden ist oder der Arbeitsbereich
klein ist, löscht
der Installierer 75 ferner den Kompilierer 73 (Schritt
S35) und beendet den Prozeß.
-
Indem eine codierte Korrekturdatei
oder patch file, die einem Teil der Quelle 71 entspricht,
anstelle der Quelle 71 gesendet wird und Korrekturexpansionsinstruktionen
in der Kundenanpassungsprozedurinstruktionsdatei beschrieben werden,
kann die Softwarewartung auch bei derselben Prozedur ausgeführt werden.
In diesem Fall findet hauptsächlich eine
binäres
patch Verwendung. Falls eine Funktion zum Festlegen von Paßwörtern auf
der Seite des Informationsurhebers eingebaut ist, kann die Funktion bei
der Kundenanpassung bezeichnet werden.
-
Mit "Übersetzung" ist ein allgemeiner
Konvertierungsprozeß gemeint,
nicht nur der Kompilierungsprozeß von Quellendateien, wie er
oben beschrieben ist, sondern auch ein beliebiger Übersetzungsprozeß zum Konvertieren
von Informationen, die in einer gewissen Sprache geschrieben sind,
in Informationen in einer anderen Sprache. Zum Beispiel können Dokumente,
die in Englisch geschrieben sind, in Dokumente in Japanisch übersetzt
werden, und Programme, die in einer gewissen Programmiersprache
geschrieben sind, können
in Programme in einer anderen Sprache konvertiert werden.
-
Das jeweilige System eines Anbieters
und eines Nutzers wird zum Beispiel unter Verwendung einer Informationsverarbeitungsvorrichtung
(Computer) konfiguriert, wie sie in 12 gezeigt
ist. Die Informationsverarbeitungsvorrichtung von 12 umfaßt eine CPU (zentrale Verarbeitungseinheit) 81, einen
Speicher 82, eine Eingabevorrichtung 83, eine Ausgabevorrichtung 84,
eine externe Speichervorrichtung 85, einen Medientreiber 86 und
einen Netzverbinder 87, die über einen Bus 88 miteinander
verbunden sind.
-
In dem Speicher 82 werden
Programme und Daten gespeichert, die für den Prozeß zu verwenden sind. Für den Speicher 82 werden
zum Beispiel ein ROM (Nur-Lese-Speicher), ein RAM (Speicher mit wahlfreiem
Zugriff), etc. verwendet. Die CPU 81 führt die erforderlichen Prozesse
durch den Ablauf der in dem Speicher 82 gespeicherten Programme
aus.
-
Die Eingabevorrichtung 83 hat
zum Beispiel die Form einer Tastatur, einer Zeigevorrichtung, eines
Berührungsfeldes,
etc., die verwendet werden, um Instruktionen und Informationen von
dem Bediener einzugeben. Die Ausgabevorrichtung 84 hat
zum Beispiel die Form einer Anzeige, eines Druckers, etc., die verwendet
werden, um Anfragen an den Bediener, das Resultat von Prozessen,
etc. auszugeben.
-
Die externe Speichervorrichtung 85 hat
zum Beispiel die Form einer Magnetplatte, einer optischen Platte,
einer magneto-optischen Platte, etc. Diese externe Speichervorrichtung 85 speichert
die obengenannten Programme und Daten, die auch verwendet werden
können,
indem sie in den Speicher 82 geladen werden, falls es erforderlich
ist.
-
Der Medientreiber 86 treibt
ein tragbares Speichermedium 89 an und greift auf den aufgezeichneten
Inhalt zu. Für
das tragbare Speichermedium 89 werden ein beliebiges computerlesbares
Speichermedium wie etwa eine Speicherkarte, eine Diskette, eine
CD-ROM, eine optische Platte, eine magneto-optische Platte, etc.
verwendet. Dieses tragbare Speichermedium 89 wird für einen
Anbieter verwendet, um Informationen an Nutzer zu verteilen. Die obengenannten
Programme und Daten, die in dem tragbaren Speichermedium 89 gespeichert
sind, können
auch verwendet werden, indem sie in den Speicher 82 geladen
werden, falls es erforderlich ist.
-
Der Netzverbinder 87 kommuniziert
mit einer Vorrichtung des Anbieters oder des Nutzers über ein beliebiges
Netz (Kommunikationsleitung) und führt Datenkonvertierungen aus.
Somit können
Informationen von einem Anbieter zu einem Nutzer übertragen werden.
Die obengenannten Programme und Daten können auch von einer externen
Vorrichtung empfangen werden und verwendet werden, indem sie in
den Speicher 82 geladen werden, falls es erforderlich ist.
-
13 zeigt
computerlesbare Speichermedien zum Zuführen von Programmen und Daten
zu der Informationsverarbeitungsvorrichtung, die in 12 gezeigt ist. Die in dem tragbaren
Speichermedium 89 gespeicherten Programme und Daten und
eine externe Datenbank 90 werden in den Speicher 82 geladen.
Dann führt
die CPU 81 die erforderlichen Prozesse aus, indem die Programme
unter Verwendung der Daten ablaufen.
-
Gemäß der vorliegenden Erfindung
kann eine Vielfalt an Software leicht und sicher für Nutzer vorgesehen
werden, indem der Wiederherstellungsprozeß und der Übersetzungsprozeß von Chiffren verschmolzen
werden. Deshalb können
Anwendungen, die von einem Anbieter verteilt werden, in dem System
eines Nutzers kundenspezifisch angepaßt werden, und dadurch kann
die Größe von Anwendungen
reduziert werden.