DE60320437T2 - Vorrichtung zur einbettung und erkennung von wasserzeichen - Google Patents

Vorrichtung zur einbettung und erkennung von wasserzeichen Download PDF

Info

Publication number
DE60320437T2
DE60320437T2 DE60320437T DE60320437T DE60320437T2 DE 60320437 T2 DE60320437 T2 DE 60320437T2 DE 60320437 T DE60320437 T DE 60320437T DE 60320437 T DE60320437 T DE 60320437T DE 60320437 T2 DE60320437 T2 DE 60320437T2
Authority
DE
Germany
Prior art keywords
watermark
program
code
section
check code
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.)
Expired - Fee Related
Application number
DE60320437T
Other languages
English (en)
Other versions
DE60320437D1 (de
Inventor
Yuji Ota-ku SATO
Takao Kokubunji-shi YAMAGUCHI
Junichi Machida-shi SATO
Ichiro Shiromi 1-chome Chou-ku TAKEI
Tomoaki Shiromi 1-chome Chou-ku ITO
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Original Assignee
Panasonic Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp filed Critical Panasonic Corp
Publication of DE60320437D1 publication Critical patent/DE60320437D1/de
Application granted granted Critical
Publication of DE60320437T2 publication Critical patent/DE60320437T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Processing (AREA)

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft eine Wasserzeichen-Einfügevorrichtung, die ein Wasserzeichen in ein Programm einfügt, um die illegale Verwendung und Verteilung des Programms zu verhindern und zu unterdrücken, sowie eine Wasserzeichen-Extrahiervorrichtung.
  • Hintergrund der Technik
  • Mit der Weiterentwicklung von Computernetzwerken ist es heute allgemein verbreitet, dass Computerprogramme über Netzwerke verteilt werden. Da ein Computerprogramm auf einfache Weise kopiert werden kann, besteht die Möglichkeit einer illegalen sekundären Verteilung von Programmkopien sowie eines Diebstahls oder eines Manipulierens von Algorithmen in Programmen. Dementsprechend besteht ein Bedarf an dem Schützen der Programme vor solch einer illegalen Verwendung.
  • Ein Beispiel einer herkömmlichen Technologie zum Schützen von Programmen ist ein Verfahren, bei dem ein elektronisches Wasserzeichen in ein Programm eingefügt wird. Mit diesem Verfahren wird ein Programm mit unterschiedlichen Wasserzeichen, die für jedes Verteilungsziel eingebettet sind, verteilt. Dann wird in dem Fall einer illegalen Verwendung das Wasserzeichen von dem Programm des illegalen Benutzers extrahiert, und dieses Wasserzeichen wird analysiert. Durch diese Vorrichtung kann die Quelle des Umlaufs auf einfache Weise erfasst werden.
  • Ein tatsächliches Verfahren zum Einfügen von Wasserzeichen wird beispielsweise in der Ungeprüften Japanischen Offenlegungsschrift Nr. 2000-76064 (Seiten 3 bis 4, 2, 7) offenbart.
  • Mit diesem Verfahren wird zuerst der Code ohne Abhängigkeitsverhältnis zu der Reihenfolge der Ausführung erfasst. Als Nächstes wird in den erfassten Teil eine Scheinvariablen-Operation eingefügt. Anschließend wird die Reihenfolge der Ausführung des erfassten Teils, der die Scheinvariablen-Operation enthält, auf Zufallsbasis umgeschaltet.
  • Mittels einer solchen Verarbeitung wird ein Mechanismus implementiert, der diese Reihenfolge der Ausführung als elektronisches Wasserzeichen für jedes Verteilungsziel ändert.
  • Ein Problem mit dem herkömmlichen Verfahren des Einfügens eines elektronischen Wasserzeichens in ein Programm besteht jedoch darin, dass es einfach ist, ein Wasserzeichen auf Basis eines Kollusionsangriffes zu ändern oder zu löschen.
  • Ein „Kollusionsangriff" ist ein Angriff, bei dem die Einfügungsorte von Wasserzeichendaten durch Finden der Unterschiede in einer Vielzahl von Programmen, in die Wasserzeichen eingefügt worden sind, identifiziert werden.
  • Wenn für jedes Verteilungsziel ein unterschiedliches Wasserzeichen in ein Programm eingefügt wird, würden, wenn Unterschiede zwischen den Programmen, die zu jedem Verteilungsziel gefunden werden, lediglich die Orte, an denen Wasserzeichen eingefügt worden sind, als Unterschiede zu Tage treten. Dementsprechend besteht ein Problem dahingehend, dass die Einfügungsorte von Wasserzeichen auf einfache Weise identifiziert werden können und dass ein Wasserzeichen auf einfache Weise gelöscht oder geändert werden kann.
  • Collberg, C. S., 2002 („Watermarking, Tamper-Proofing, and obfuscation – Tools for Software Protection", IEEE, ISSN: 0098 bis 5598) spiegelt die grundlegende Funktionalität von Manipulationssicherheit wieder. Es offenbart das Verfahren, bei dem die empfangende Seite des Programms, das Verteilungsziel, einen Wert eines Codes, der an der Verteilungsquelle berechnet wird, mit dem Wert des Wasserzeichen-Prüfcodes, einem Code zum Manipulationsschutz, der an dem Verteilungsziel berechnet wird, vergleicht. Die Verteilungsquelle des Programms fügt ein Wasserzeichen, das sich für jedes Verteilungsziel des Programms unterscheidet, sowie einen Wasserzeichen-Prüfcode, der sich für jedes Verteilungsziel des Programms unterscheidet, ein. Demzufolge sind sowohl der Wasserzeichen-Prüfcode, der Manipulationsschutz-Code und das Wasserzeichen selbst für jedes Verteilungsziel des Programms unterschiedlich.
  • Offenbarung der Erfindung
  • Es ist eine Aufgabe der vorliegenden Erfindung, das einfache Generieren eines Programms, das ein Wasserzeichen hat und normal arbeitet, durch Einfügen eines Wasserzeichens auf eine Weise, bei der der Einfügungsort des Wasserzeichens nicht identifiziert werden kann, zu verhindern.
  • Die vorliegende Erfindung generiert ein Wasserzeichen anhand von Kennungsinformationen, die ein Programmziel eindeutig identifizieren, fügt das generierte Wasserzeichen in ein Programm ein und verhindert, dass das Programm ordnungsgemäß arbeitet, wenn das Wasserzeichen manipuliert ist, und fügt darüber hinaus denselben Wasserzeichen-Prüfode ein, um zu prüfen, ob das Wasserzeichen in einem Programm ungeachtet des Verteilungsziels manipuliert ist.
  • Mittels dieser Vorrichtung ist es möglich, das Erfassen eines Wasserzeichen-Prüfcodes, der ein Wasserzeichen darstellt, mit Hilfe eines Kollusionsangriffes zu verhindern. Als ein Ergebnis kann ein Verteilungsziel kein Programm generieren, das kein Wasserzeichen hat und normal arbeitet und ist dementsprechend nicht in der Lage, ein Programm illegal in Umlauf zu bringen.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Konfigurationsdiagramm eines Systems zur Verhinderung der illegalen Verteilung von Programmen, das mittels eines Einfügens von Wasserzeichen in Übereinstimmung mit der Ausführungsform 1 der vorliegenden Erfindung implementiert wird;
  • 2 ist ein Konfigurationsdiagramm einer Wasserzeichen-Einfügevorrichtung in Übereinstimmung mit der Ausführungsform 1;
  • 3 ist ein Konfigurationsdiagramm einer Wasserzeichen-Extrahiervorrichtung in Übereinstimmung mit der Ausführungsform 1;
  • 4 ist ein Ablaufplan, der die Funktionsweise eines Wasserzeichen-Einfügeabschnittes in Übereinstimmung mit der Ausführungsform 1 darstellt;
  • 5 ist eine Zeichnung, die einen Programmcode darstellt, der generiert wird, wenn Ausführungsform 1 angewendet wird;
  • 6 ist ein Ablaufplan, der die Funktionsweise eines Wasserzeichen-Erfassungsabschnittes der Ausführungsform 1 darstellt;
  • 7 ist ein Ablaufplan, der die Funktionsweise eines Wasserzeichen-Einfügeabschnittes in Übereinstimmung mit der Ausführungsform 2 der vorliegenden Erfindung darstellt;
  • 8 ist eine Zeichnung, die einen Programmcode darstellt, der durch einen Wasserzeichen-Einfügeabschnitt in Übereinstimmung mit der Ausführungsform 2 generiert wird;
  • 9 ist ein Ablaufplan, der die Funktionsweise eines Wasserzeichen-Einfügeabschnittes in Übereinstimmung mit der Ausführungsform 3 der vorliegenden Erfindung darstellt;
  • 10 ist eine Zeichnung, die einen Programmcode darstellt, der durch einen Wasserzeichen-Einfügeabschnitt in Übereinstimmung mit der Ausführungsform 3 generiert wird;
  • 11 ist ein 1 Konfigurationsdiagramm eines Systems zur Verhinderung der illegalen Verteilung von Programmen, das mittels eines Einfügens von Wasserzeichen in Übereinstimmung mit der Ausführungsform 4 der vorliegenden Erfindung implementiert wird;
  • 12 ist ein Konfigurationsdiagramm einer Wasserzeichen-Einfügevorrichtung in dem Beispiel 5;
  • 13 ist ein Ablaufplan, der die Funktionsweise eines Scheincode-Einfügeabschnittes und eines Wasserzeichen-Einfügeabschnittes in dem Beispiel 5 darstellt;
  • 14 ist ein Beispiel eines Programmcodes, der durch einen Wasserzeichen-Einfügeabschnitt in dem Beispiel 5 generiert wird;
  • 15 ist ein Ablaufplan der die Funktionsweise eines Wasserzeichen-Erfassungsabschnittes in dem Beispiel 5 darstellt;
  • 16 ist ein Ablaufplan der die Funktionsweise eines Wasserzeichen-Einfügeabschnittes von dem Beispiel 6 der vorliegenden Erfindung; und
  • 17 ist eine Zeichnung, die einen Programmcode zeigt, der durch einen Wasserzeichen-Einfügeabschnitt in Übereinstimmung mit dem Beispiel 6 generiert wird.
  • Beste Art und Weise des Ausführens der Erfindung
  • (Ausführungsform 1)
  • Im Folgenden wird in Bezug auf die beigefügten Zeichnungen ein System zur Verhinderung der illegalen Verteilung von Programmen, das eine Wasserzeichen-Einfügevorrichtung und eine Wasserzeichen-Extrahiervorrichtung in Übereinstimmung mit der Ausführungsform 1 der vorliegenden Erfindung umfasst, beschrieben.
  • 1 ist ein Konfigurationsdiagramm eines Systems zur Verhinderung der illegalen Verteilung von Programmen, das mittels eines Einfügens von Wasserzeichen in Übereinstimmung mit der Ausführungsform 1 der vorliegenden Erfindung implementiert wird.
  • Zuerst führt zu dem Zeitpunkt der Programmverteilung die Verteilungsquelle 10 Verteilung mit einem unterschiedlichen Wasserzeichen, das mittels einer Wasserzeichen-Einfügevorrichtung 20 für jedes Verteilungsziel 40a und 40b eingefügt wird, durch (hierbei wird angenommen, dass die sekundäre Verteilung durch Verteilungsziele nicht authorisiert ist).
  • Durch Durchführen von Verteilung mit Wasserzeichen, die auf diese Weise eingebettet werden, kann in dem Fall eines Programmumlaufs durch eine illegale sekundäre Verteilung beispielsweise die Verteilungsquelle 10 das Verteilungsziel bestätigen, indem mittels einer Wasserzeichen-Extrahiervorrichtung 30 das Wasserzeichen aus dem in Umlauf zu dem Umlaufziel 50 gebrachten Programm extrahiert wird und die Umlaufquelle (Verteilungsziel) 40a oder 40b identifiziert wird.
  • Des Weiteren werden die Verteilungsziele 40a oder 40b die Identifizierung als die Umlaufquelle fürchten und werden so von einer illegalen Verteilung absehen.
  • Auf diese Weise unterdrückt das System zur Verhinderung der illegalen Verteilung von Programmen die illegale Verteilung mittels Wasserzeichen.
  • Im Folgenden wird die Wasserzeichen-Einfügevorrichtung 20 in Übereinstimmung mit der Ausführungsform 1 unter Verwendung von 2 beschrieben. 2 ist ein Konfigurationsdiagramm einer Wasserzeichen-Einfügevorrichtung in Übereinstimmung mit der Ausführungsform 1.
  • Die Wasserzeichen-Einfügevorrichtung 20 wird mit einem Programm-Eingabeabschnitt 201 bereitgestellt. Bei dem Programm-Eingabeabschnitt 201 handelt es sich um eine Vorrichtung zum Eingeben eines Programmcodes, der ein Wasserzeichen eingibt. Der Programm-Eingabeabschnitt 201 gibt einen Programmcode an einen Wasserzeichen-Einfügeabschnitt 202 aus.
  • Der Wasserzeichen-Einfügeabschnitt 202 ist eine Vorrichtung zum Erzeugen eines Wasserzeichens, das tatsächlich in ein Programm anhand von Kennungsinformationen, die durch einen Abschnitt zum Generieren von Kennungsinformationen 205 generiert werden, eingebettet wird, und zum Eingeben des Wasserzeichens in den Programmcode, der von dem Programm-Eingabeabschnitt 201 ausgegeben wird. Wenn es sich bei dem Programmcode, der durch den Programm-Eingabeabschnitt 201 ausgegebenen wird, um den Quellencode handelt, kompiliert der Wasserzeichen-Einfügeabschnitt 202 den Quellencode und leitet den Wasserzeichen-Einfügungsort an einen Abschnitt zum Speichern von Wasserzeicheninformationen 206 als eine Assemblercode-Zeilennummer weiter.
  • Bei einem Programm-Ausgabeabschnitt 203 handelt es sich um eine Vorrichtung, mit der ein Wasserzeichen-Einfügeabschnitt 202 einen eingegebenen Programmcode ausgibt.
  • Ein Wasserzeichendaten-Eingabeabschnitt 204 gibt Wasserzeichendaten ein. Bei den eingegebenen Wasserzeichendaten handelt es sich um Informationen, die ein Verteilungsziel eindeutig spezifizieren, die die Verteilungsziel-Adresse, die Telefonnummer, die Firma, die E-Mail-Adresse, und so weiter umfassen. Verteilungsquellen-Informationen können ebenfalls in die Wasserzeichendaten eingegeben werden.
  • Der Abschnitt zum Generieren von Kennungsinformationen 205 generiert Kennungsinformationen, die eindeutig anhand von Wasserzeichendaten bestimmt werden, die durch den Wasserzeichendaten-Eingabeabschnitt 204 eingegeben werden. Bei den Kennungsinformationen kann es sich um die eingegebenen Daten selbst handeln, oder es kann sich um Daten handeln, die durch Verschlüsseln der eingegebenen Daten erhalten werden. Darüber hinaus kann es sich bei den Kennungsinformationen um eine Kennung zum eindeutigen Spezifizieren von Wasserzeichendaten in einer Datenbank, die Wasserzeichendaten unterhält, handeln.
  • In den Ausführungsformen der vorliegenden Erfindung wird ein Modus verwendet, durch den ein Wasserzeichen auf Basis der Kennungsinformationen generiert wird, es ist jedoch nicht zwingend erforderlich, dass die Wasserzeichen auf Basis von Kennungsinformationen generiert werden, und es ist ausreichend, dazu befähigt zu sein, ein Verteilungsziel eindeutig anhand eines Wasserzeichens zu spezifizieren. So ist es beispielsweise auch akzeptabel, ein Verteilungsziel dazu zu befähigen, eindeutig dadurch spezifiziert zu werden, dass in die Software eine Sequenznummer 1 bis N als Wasserzeichen eingegeben wird, dass die Software der Sequenznummer i an das Verteilungsziel A verteilt wird, dass die Software der Sequenznummer j an das Verteilungsziel B verteilt wird, und so weiter und so fort.
  • Der Abschnitt zum Speichern von Wasserzeicheninformationen 206 ist eine Vorrichtung zum Speichern eines Einfügungsortes eines Wasserzeichens, das durch den Wasserzeichen-Einfügeabschnitt 202 eingefügt wird. Genauer gesagt, wird die Assemblercode-Zeilennummer des Codes, in den ein Wasserzeichen eingefügt wird, gespeichert.
  • Im Folgenden wird eine Wasserzeichen-Extrahiervorrichtung 30 in Übereinstimmung mit der Ausführungsform 1 unter Verwendung von 3 beschrieben. 3 ist ein Konfigurationsdiagramm der Wasserzeichen-Extrahiervorrichtung 30 in Übereinstimmung mit der Ausführungsform 1.
  • Bei dem Programm-Eingabeabschnitt 301 handelt es sich um eine Vorrichtung zum Eingeben eines Programms, in das ein Wasserzeichen eingegeben wird.
  • Ein Wasserzeichen-Erfassungsabschnitt 302 zerlegt ein Programm, das von Programm-Eingabeabschnitt 301 ausgegeben wird und extrahiert ein eingegebenes Wasserzeichen von dem Wasserzeichen-Einfügungsort (Assemblercode-Zeilennummer), der von einem Abschnitt zum Speichern von Wasserzeicheninformationen 305 erhalten wird. Der Wasserzeichen-Erfassungsabschnitt 302 generiert anschließend Kennungsinformationen anhand des extrahierten Wasserzeichens und leitet diese Kennungsinformationen zu einem Abschnitt zum Speichern von Kennungsinformationen 304 weiter.
  • Bei dem Abschnitt zum Speichern von Kennungsinformationen 304 handelt es sich um eine Vorrichtung zum Generieren von Informationen über Verteilungsziele anhand von Kennungsinformationen, die von dem Wasserzeichen-Erfassungsabschnitt 302 erhalten werden. Wenn es sich bei den Kennungsinformationen um eine Datenkennung einer Datenbank handelt, erhält der Abschnitt zum Speichern von Kennungsinformationen 304 Informationen zu Verteilungszielen durch Extrahieren der Daten von der Kennung. Wenn es sich bei den Kennungsinformationen um Verschlüsselungsdaten von Informationen zu Verteilungszielen handelt, erhält der Abschnitt zum Speichern von Kennungsinformationen 304 die Informationen zu Verteilungszielen durch Durchführen von Entschlüsselung.
  • Der Abschnitt zum Speichern von Wasserzeicheninformationen 305 ist eine Vorrichtung zum Speichern eines Wasserzeichen-Einfügungsortes eines verteilten Programms. Informationen zum Wasserzeichen-Einfügungsort werden von dem Abschnitt zum Speichern von Wasserzeicheninformationen 206 der Wasserzeichen-Einfügevorrichtung 20 erhalten.
  • Bei dem Ausgabeabschnitt 303 handelt es sich um eine Vorrichtung zum Ausgeben von erhaltenen Informationen zu Verteilungszielen.
  • Im Folgenden wird ein Wasserzeichen-Einfügeabschnitt 202 in Übereinstimmung mit der Ausführungsform 1 unter Verwendung von 4 beschrieben. 4 ist ein Ablaufplan, der die Funktionsweise des Wasserzeichen-Einfügeabschnittes 202 in Übereinstimmung mit der Ausführungsform 1 darstellt.
  • Zuerst generiert ein Wasserzeichen-Einfügeabschnitt 202 mittels einer Generierungsfunktion F(1) die Wasserzeichen X1 und X2 so, dass sie tatsächlich anhand von Kennungsinformationen I von den Informationen zu dem Verteilungsziel 40 in das Programm eingefügt werden (Schritt 401).
  • Anschließend konfiguriert der Wasserzeichen-Einfügeabschnitt 202 die Funktion F21, die die Konstante C1 ausgibt, sowie die Funktion F22, die die Konstante C2 ausgibt, wenn die Wasserzeichen X1 und X2 als Eingabe verwendet werden (Schritt 402).
  • Anschließend bettet der Wasserzeichen-Einfügeabschnitt 202 eine Gleichung in den Programmcode ein, die das Wasserzeichen X1 und das Wasserzeichen X2 einer Variablen val1 und einer Variablen val2 zuweist (Schritt 403).
  • Anschließend bettet der Wasserzeichen-Einfügeabschnitt 202 eine Gleichung in den Programmcode ein, die die Funktion F21 (val1, val2) der Variablen val3 zuweist, und die die Funktion F22 (val1, val2) der Variablen val4 zuweist (Schritt 404).
  • Anschließend bettet der Wasserzeichen-Einfügeabschnitt 202 eine Bedingungsverzweigung als einen Wasserzeichen-Prüfcode in den Programmcode ein, die bestimmt, ob die Variable val3 und die Konstante C1 miteinander übereinstimmen, und die das Programm anhält, wenn sie nicht miteinander übereinstimmen, und bettet eine Bedingungsverzweigung ein, die bestimmt, ob die Variable val4 und die Konstante C2 miteinander übereinstimmen und die das Programm anhält, wenn sie nicht miteinander übereinstimmen (Schritt 405).
  • Anschließend speichert der Wasserzeichen-Einfügeabschnitt 202 die Orte, an denen das Wasserzeichen und der Wasserzeichen-Prüfode in den Schritten 403 bis 405 eingefügt wurden, in dem Abschnitt zum Speichern von Wasserzeicheninformationen 206 (Schritt 406).
  • Auf diese Weise fügt der Wasserzeichen-Einfügeabschnitt 202 das Wasserzeichen und den Wasserzeichen-Prüfcode in das Programm ein.
  • Der Wasserzeichen-Einfügeabschnitt 202 gibt die Gleichungen und die Bedingungsverzweigungen (Wasserzeichen-Prüfcode), die in den Schritten 403 bis 405 eingefügt wurden, in der Reihenfolge der Ausführung des Programms ein. Eine Bedingung für die Funktion F1 besteht darin, dass eine inverse Funktion der Funktion F1 vorhanden sein sollte, die I eindeutig anhand der Wasserzeichen X1 und X2 generiert, und eine Bedingung für die Funktion F2 besteht darin dass F21 (X1, X2) == C1 und dass F22 (X1, X2) == C2 für nichts Anderes als für die Wasserzeichen X1 und X2 zutreffen sollten („==” zeigt an, dass die Werte miteinander übereinstimmen).
  • So wird beispielsweise ein Fall betrachtet, in dem die Kennungsinformationen = 12345678 sind, F1 eine Funktion ist, die einen 8-stelligen Wert in zwei Werte von der 4. Stelle an unterteilt, F21 (x, y) und F22 (x, y) lineare Funktionen mit 2 Variablen sind, und die Konstanten C1 = 2345 und C2 = 5678 sind.
  • In diesem Fall werden zuerst das Wasserzeichen X1 = 1234 und das Wasserzeichen X2 = 5678 anhand der Funktion F1 generiert. Die Funktionen F21 und F22 werden konfiguriert, indem a1, a2, b1 und b2 gesucht werden, die die Bedingung a1 × 1234 + b1 × 5678 = 2345 und die Bedingung a2 × 1234 + b2 × 5678 = 5678 erfüllen. So erfüllen beispielsweise die Werte von a1 = 1, a2 = 0,195667, a2 = 3,700972 und b2 = 0,195667 die Bedingungen.
  • Ein Beispiel des Programmcodes, der generiert wird, wenn die Ausführungsform 1 angewendet wird, ist in 5 dargestellt.
  • In 5 bezeichnet 500a ein Basisprogramm, das die grundlegende Eingabe durch den Programm-Eingabeabschnitt 201 bildet. Die Programme 500b und 500c sind Programme zum Einfügen von Wasserzeichen, in die ein Wasserzeichen und Wasserzeichen-Prüfcode in das Basisprogramm 500a eingegeben wurden.
  • Zuerst fügt in Schritt 403 der Wasserzeichen-Einfügeabschnitt 202 das Wasserzeichen X1a (1234), das Wasserzeichen X1b (5678) sowie das Wasserzeichen X2a (1111) und das Wasserzeichen X2b (2222), die anhand von unterschiedlichen Kennungsinformationen Ia (12345678) und Ib (11112222) generiert wurden, in die Programme 500b und 500c ein (der Teil, der in der Zeichnung durch die Referenznummer 501 gekennzeichnet ist).
  • Als Nächstes fügt in Schritt 404 der Wasserzeichen-Einfügeabschnitt 202 die gegenseitig voneinander abweichenden Funktionen F21 und F22 jeweils in die Programme zum Einfügen von Wasserzeichen 500b und 500c ein (der Teil, der in der Zeichnung durch die Referenznummer 502 gekennzeichnet ist).
  • Anschließend bettet in Schritt 405 der Wasserzeichen-Einfügeabschnitt 202 als Wasserzeichen-Prüfcode eine Bedingungsverzweigung in den Programmcode ein, die bestimmt, ob die Variable val3 und die Konstante C1 (2345) miteinander übereinstimmen und die das Programm anhält, wenn sie nicht miteinander übereinstimmen ((0) bestätigen), und er bettet eine Bedingungsverzweigung ein, die bestimmt, ob die Variable val4 und die Konstante C2 (5678) miteinander übereinstimmen und die das Programm anhält, wenn sie nicht miteinander übereinstimmen ((0) bestätigen) (der Teil, der in der Zeichnung durch die Referenznummer 503 gekennzeichnet ist).
  • Der Punkt, der an dieser Stelle zu beachten ist, ist der, dass, wenn die Unterschiede zwischen den zwei Programmen 500b und 500c identifiziert werden, die Teile 501 und 502, die das Wasserzeichen bilden, erfasst werden, jedoch werden die Bedingungsverzweigungen 503, die den Wasserzeichen-Prüfcode bilden, nicht erfasst. Demzufolge kann, selbst wenn ein Wasserzeichen-Einfügungsort mittels eines Kollusionsangriffes auf die Programme 500b und 5001 erfasst wird, und ein Ändern oder Löschen des erfassten Teils durchgeführt wird, ein Ändern oder ein Löschen nicht an den Bedingungsverzweigungen 503, die den Wasserzeichen-Prüfcode bilden, durchgeführt werden. Dementsprechend erfüllt der Teil des Wasserzeichen-Prüfcodes 503 nicht die Bedingungen, und das Programm arbeitet nicht weiter.
  • Auf diese Weise ist es in dem Fall eines einfachen Verfahrens des Änderns oder des Löschens von lediglich einem Ort, der mittels eines Kollusionsangriffes erfasst wird, möglich, die Akquisition eines Programms zu verhindern, das normal arbeitet, wenn sämtliche Wasserzeichen gelöscht werden.
  • Im Sinne einer verständlichen Beschreibung wird in 5 der Quellencode verwendet, dasselbe trifft jedoch auch zu, wenn ein binärer Code verwendet wird. Auch in dem Fall der Bedingungsverzweigungen 503 wird die Verarbeitung so durchgeführt, dass das Programm angehalten wird, wenn die Bedingungserklärung wahr ist, es ist jedoch auch möglich, die Verarbeitung so durchzuführen, dass Werte von Variablen in dem Programm (unter Verwendung von a++ beispielsweise) geändert werden, so dass, anstatt das Programm anzuhalten, das Programm abnormal arbeitet.
  • Darüber hinaus werden in der Ausführungsform 1 zwei Elemente des Wasserzeichens anhand der Kennungsinformationen generiert, es ist jedoch auch möglich, drei oder mehr Elemente des Wasserzeichens zu generieren.
  • Im Folgenden wird ein Wasserzeichen-Erfassungsabschnitt 302 in Übereinstimmung mit der Ausführungsform 1 unter Verwendung von 6 beschrieben. 6 ist ein Ablaufplan, der die Funktionsweise des Wasserzeichen-Erfassungsabschnittes 302 von der Ausführungsform 1 darstellt.
  • Zuerst zerlegt der Wasserzeichen-Erfassungsabschnitt 302 den Programmausführungscode (Schritt 1001).
  • Anschließend bezieht sich der Wasserzeichen-Erfassungsabschnitt 302 auf den Abschnitt zum Speichern von Wasserzeicheninformationen 305, erhält gespeicherte Informationen, in denen der Wasserzeichen-Einfügungsort in dem Programm gespeichert ist (das heißt, eine Zeilennummer, die den Einfügungsort anzeigt), und basierend darauf spezifiziert der Wasserzeichen-Erfassungsabschnitt 302 den Einfügungsort des Wasserzeichens X1 und des Wasserzeichens X2. Anschließend extrahiert der Wasserzeichen-Erfassungsabschnitt 302 das Wasserzeichen X1 und das Wasserzeichen X2 aus dem Programm (Schritt 1002).
  • Anschließend generiert der Wasserzeichen-Erfassungsabschnitt 302 Kennungsinformationen unter Verwendung der inversen Funktion der Funktion F1, die verwendet wird, wenn die Wasserzeichen X1 und X2 generiert werden (Schritt 1003).
  • Auf diese Weise erhält der Wasserzeichen-Erfassungsabschnitt 302 die Kennungsinformationen und führt eine Spezifizierung des Verteilungsziels 40 durch.
  • Wenn mit dem voranstehend beschriebenen Verfahren die Reihenfolge der Codeausführung mittels einer Optimierung oder eines „Verschleierns" (das das Lesen schwieriger macht) durch ein Verteilungsziel oder ein Umlaufziel eines Ausführungscodes umgeschaltet wird, ist es möglich, dass die Assemblercode-Zeilennummer eines Wasserzeichen-Einfügungsortes geändert wird, wodurch die Akquisition des Wasserzeichens verhindert wird. Unter Anbetracht einer solchen Möglichkeit kann die Verarbeitung in Schritt 1002 zu einer Verarbeitung geändert werden, bei der eine Zuweisungsanweisung in den Zeilen um die Assemblercode-Zeilennummer gesucht wird, die den Einfügungsort anzeigt, und der operierende Teil der Zuweisungsanweisung wird extrahiert.
  • Wie dies voranstehend beschrieben worden ist, ist in Übereinstimmung mit der Ausführungsform 1 der Wasserzeichen-Prüfcode (Teil 503 in 5) derselbe ungeachtet des Verteilungsziels, und dementsprechend ist es möglich, zu verhindern, dass der Wasserzeichen-Prüfcode (Teil 503 in 5) mittels eines Kollusionsangriffes als ein Unterschied erfasst wird. Demzufolge kann der Einfügungsort des Wasserzeichen-Prüfcodes nicht durch einen Kollusionsangriff erfasst werden. Als ein Ergebnis kann in dem Fall eines einfachen Verfahrens des Änderns oder des Löschens von lediglich einem Ort, der mittels eines Kollusionsangriffes erfasst wird, keine Änderung beziehungsweise kein Löschen sämtlicher Wasserzeichen durchgeführt werden, und es ist nicht möglich, ein Programm ohne ein Wasserzeichen (oder mit einem geänderten Wasserzeichen) zu generieren, das normal arbeitet. Auf diese Weise kann ein Verteilungsziel kein Programm generieren, das kein Wasserzeichen aufweist und normal arbeitet, und dementsprechend kann das Verteilungsziel ein Programm nicht illegal in den Umlauf bringen.
  • Es ist des Weiteren auch ein Modus möglich, bei dem die Verarbeitung, die durch die Wasserzeichen-Einfügevorrichtung 20 und die Wasserzeichen-Extrahiereinrichtung 30 durchgeführt wird, in Form eines Programms vorliegt und durch einen Universalcomputer ausgeführt wird.
  • (Ausführungsform 2)
  • Die Ausführungsform 2 liefert einen Fall, in dem eine Person, die versucht, ein Programm illegal zu verteilen, den Versuch unternimmt, den Wasserzeichen-Prüfcode der Ausführungsform 1 durch Erfassen des Wasserzeichens mittels eines Kollusionsangriffes, durch Erfassen des Ortes, an dem eine Variable, die durch eine Funktion generiert wird, in dem erfassten Wasserzeichen verwendet wird, (Teil der in 5 durch die Referenznummer 503 gekennzeichnet ist) und durch Ändern oder Löschen des erfassten Ortes zu ändern oder zu löschen.
  • Genauer gesagt, wird das Wasserzeichen verwendet, und der Wasserzeichen-Prüfcode, der erforderlich ist, damit das Programm normal arbeiten kann, wird in das Programm eingefügt.
  • Durch diese Vorrichtung ist es möglich zu verhindern, dass ein Programm normal arbeitet, wenn der Wasserzeichen-Prüfcode unter Verwendung des Wasserzeichens erfasst wird und mittels der voranstehend beschriebenen Vorgehensweise geändert oder gelöscht wird.
  • Im Folgenden wird die Ausführungsform 2 auf ausführlichere Weise beschrieben. Der Unterschied zwischen der Wasserzeichen-Einfügevorrichtung in der Ausführungsform 2 und der Wasserzeichen-Einfügevorrichtung 20 in der Ausführungsform 1 liegt in der Funktionsweise des Wasserzeichen-Einfügeabschnittes 202.
  • Im Folgenden wird die Funktionsweise des Wasserzeichen-Einfügeabschnittes der Ausführungsform 2 unter Verwendung von 7 beschrieben. 7 ist ein Ablaufplan, der die Funktionsweise des Wasserzeichen-Einfügeabschnittes der Ausführungsform 2 darstellt.
  • Die Operationen, die in den Schritten 601 und 602 durchgeführt werden, sind dieselben, wie die Operationen, die in den Schritten 401 und 402 durchgeführt werden, die in der Ausführungsform 1 beschrieben worden sind, und dementsprechend werden an dieser Stelle die Beschreibungen davon weggelassen.
  • Anschließend generiert der Wasserzeichen-Einfügeabschnitt die Funktion F3, die die Konstante C3 so generiert, dass C1 + C2 + C3 = 0 ist, anhand des Wasserzeichens X1 und des Wasserzeichens X2 (Schritt 603).
  • Anschließend bettet der Wasserzeichen-Einfügeabschnitt eine Gleichung in den Programmcode ein, die das Wasserzeichen X1 und das Wasserzeichen X2 den Variablen val1 und val2 zuweist (Schritt 604).
  • Anschließend bettet der Wasserzeichen-Einfügeabschnitt eine Gleichung in den Programmcode ein, die die Funktion F21 (val1, val2) der Variablen val3 zuweist und die die Funktion F22 (val1, val2) der Variablen val4 zuweist (Schritt 605).
  • Anschließend bettet der Wasserzeichen-Einfügeabschnitt eine Bedingungsverzweigung als den Wasserzeichen-Prüfcode in den Programmcode ein, die bestimmt, ob die Variable val3 und die Konstante C1 miteinander übereinstimmen, und die das Programm anhält, wenn sie nicht miteinander übereinstimmen, und er bettet eine Bedingungsverzweigung als den Wasserzeichen-Prüfcode in den Programmcode ein, die bestimmt, ob die Variable val4 und die Konstante C2 miteinander übereinstimmen, und die das Programm anhält, wenn sie nicht miteinander übereinstimmen (Schritt 606).
  • Anschließend bettet der Wasserzeichen-Einfügeabschnitt eine Gleichung ein, die der Variablen val5 die Funktion F3 (val1, val2) zuweist (Schritt 607).
  • Anschließend fügt der Wasserzeichen-Einfügeabschnitt einen Code als Wasserzeichen-Prüfcode in das Programm ein, der val3 + val4 + val5 zu einer Entscheidungserklärung hinzuaddiert, die den ursprünglichen Code 0 bestimmt (Schritt 608).
  • Anschließend speichert der Wasserzeichen-Einfügeabschnitt 202 die Orte, an denen das Wasserzeichen und der Wasserzeichen-Prüfode in den Schritten 604 bis 608 eingefügt wurden, in dem Abschnitt zum Speichern von Wasserzeicheninformationen 206 (Schritt 609).
  • Auf diese Weise fügt der Wasserzeichen-Einfügeabschnitt 202 ein Wasserzeichen in das Programm ein.
  • Die Punkte, die an dieser Stelle zu beachten sind, bestehen darin, dass die Variablen val3, val4 und val5, die durch einen Kollusionsangriff erfasst werden, in val3 + val4 + val5 enthalten sind, die in Schritt 608 eingefügt werden, und dass val3 + val4 + val5 in den 0-Teil der Entscheidungserklärung eingefügt wird, die sich auf den Betrieb des Programms bezieht. Wenn als Ergebnis ein illegaler Benutzer einen Versuch unternimmt, die Variablen (val3, val4, val5) mittels eines Kollusionsangriffes zu erfassen und einen Ort unter Verwendung der Variablen, die durch eine Funktion unter Verwendung der erfassten Variablen generiert werden, ändert oder löscht, wird eine Entscheidungserklärung in Bezug auf den Betrieb des Programms ebenfalls geändert oder gelöscht. Auf diese Weise wird das Programm nicht normal arbeiten und kann dementsprechend nicht illegal verwendet werden.
  • Im Folgenden wird ein Programmcode, der unter Verwendung eines Wasserzeichen-Einfügeabschnittes generiert wird, in Übereinstimmung mit der Ausführungsform 2 unter Verwendung von 8 beschrieben.
  • In 8 bezeichnet 800a ein Basisprogramm, das die grundlegende Eingabe durch den Programm-Eingabeabschnitt 201 bildet, und 800b bezeichnet ein Programm zum Einfügen von Wasserzeichen, in dem ein Wasserzeichen in das Basisprogramm 800a eingefügt worden ist.
  • In das Programm 800b wird in Schritt 604 ein Wasserzeichen in den Teil eingefügt, der durch die Referenznummer 701 angezeigt wird, und Berechnungsgleichungen (Code) für die Wasserzeichenprüfung werden in den Teil eingefügt, der durch die Referenznummer 702 angezeigt wird.
  • Anschließend wird in dem Programm 800b das Verarbeitungsergebnis von Schritt 608 in den Teil eingefügt, der durch die Referenznummer 703 angezeigt wird. Des Weiteren wird in dem Schritt 606 in das Programm 800b der Wasserzeichen-Prüfcode in den Teil eingefügt, der durch die Referenznummer 704 angezeigt wird.
  • Das Ergebnis des Generierens des Programms 800b besteht auf diese Weise darin, dass, wenn eine Person, die den Versuch unternimmt, eine illegale Verwendung durchzuführen, den Wasserzeichen-Prüfcode 703 von dem Programm 800b mittels eines Kollusionsangriffes erfasst und den Wasserzeichen-Prüfode ändert oder löscht, da der Wasserzeichen-Prüfcode 703 ein Code ist, der sich auf die Spezifizierungen bezieht (bezogen auf die Programmeingabe/Programmausgabe in den ursprünglichen Code), das Programm nicht normal arbeiten wird, wenn dieser Code gelöscht wird.
  • Um lediglich die Entscheidungserklärung des Wasserzeichen-Prüfcodes 703 innerhalb des Wasserzeichens zu ändern, ist es erforderlich, die Programmspezifizierungen zu verstehen und zu wissen, dass der Wasserzeichen-Prüfcode ein spezifizierungsbezogener Code ist. Es nimmt Zeit in Anspruch, um die Struktur eines Programms zu verstehen, und das Löschen des Wasserzeichens kann nicht mittels einer mechanischen Verarbeitung durchgeführt werden.
  • Die Bedingung C1 + C2 + F3 = 0 muss an dieser Stelle nicht zutreffen. In diesem Fall kann C1 + C2 + F3 in eine Entscheidungserklärung eingefügt werden, die den Wert verwendet, der durch C1 + C2 + F3 erhalten wird. Wenn beispielsweise C1 + C2 + F3 = 1 ist, wird der Wert 1 einer Entscheidungserklärung, die den Wert 1 bestimmt, mit C1 + C2 + F3 umgeschaltet.
  • Wie dies voranstehend beschrieben worden ist, wird, wenn ein Ort (Teil, der in 8 mit 703 gekennzeichnet wird), an dem die Variablen, die durch Funktionen generiert werden, die in dem Wasserzeichen (701, 702) verwendet werden, das mittels eines Kollusionsangriffes erfasst wird, erfasst wird und geändert oder gelöscht wird, wird es unmöglich, dass das Programm normal arbeitet. Das bedeutet, es kann unmöglich gemacht werden, ein Programm ohne ein Wasserzeichen (oder mit einem geänderten Wasserzeichen) zu generieren, das normal arbeitet, wodurch es möglicht gemacht wird, die illegale Verteilung eines Programms zu verhindern.
  • Beispiel 3
  • Das Beispiel 3 ändert einen Code um einen Ort herum, an dem das Wasserzeichen und der Wasserzeichen-Prüfcode eingegeben werden, oder es ändert alle Codes durch Durchführen einer Verarbeitung, wie beispielsweise eines „Verschleierns". Demzufolge wird ein Code, der ein anderer ist als ein Wasserzeichen, durch einen Kollusionsangriff erfasst, wodurch es möglich gemacht wird, dass die Änderung des Wasserzeichens oder das Löschen des Wasserzeichens auf Basis eines Kollusionsangriffes mit Sicherheit verhindert werden.
  • Im Folgenden wird das Beispiel 3 auf ausführlichere Weise beschrieben. Der Unterschied zwischen der Wasserzeichen-Einfügevorrichtung in dem Beispiel 3 und der Wasserzeichen-Einfügevorrichtung 20 in der Ausführungsform 1 liegt in der Funktionsweise des Wasserzeichen-Einfügeabschnittes 202.
  • Im Folgenden wird die Funktionsweise des Wasserzeichen-Einfügeabschnittes 202 des Beispiels 3 unter Verwendung von 9 beschrieben. 9 ist ein Ablaufplan, der die Funktionsweise des Wasserzeichen-Einfügeabschnittes 202 des Beispiels 3 darstellt.
  • Zuerst weist der Wasserzeichen-Einfügeabschnitt 202 der Variablen i einen Anfangswert von 1 zu (Schritt 800). Anschließend unterteilt der Wasserzeichen-Einfügeabschnitt 202 die Kennungsinformationen in n Elemente an Informationen und erzeugt Wasserzeichen X(1), X(2) ... X(n) (Schritt 801).
  • Anschließend erfasst der Wasserzeichen-Einfügeabschnitt 202 einen Schleifenabschnitt (obgleich für die Erklärungen) in dem Programmquellen-Code (Schritt 802) und fügt ein Wasserzeichen X(i) in die Schleife ein (Schritt 803).
  • Anschließend „verschleiert" der Wasserzeichen-Einfügeabschnitt 202 den Schleifenabschnitt des Einfügungsortes durch Anwenden des Verfahrens, das in dem Dokument „Method for Scrambling Programs Containing Loops" (Monden et al., Technical Report of IEICE D-I, Bnd. J80-D-I, Nr. 7, Seiten 644 bis 652, Juli 1997) beschrieben ist (Schritt 804). Hierbei gibt es eine Reihe von Varianten in dem Verfahren zum Verschleiern des Programms, und die Variante wird auf Zufallsbasis ausgewählt (oder so ausgewählt, dass das Verschleiern, das auf einem Programm, das in der Vergangenheit verteilt worden ist, nicht doppelt angewendet wird).
  • Anschließend bestimmt der Wasserzeichen-Einfügeabschnitt 202, ob die Variable i kleiner ist oder der Anzahl von Elementen des Wasserzeichens n entspricht (Schritt 805), und wenn die Variable i kleiner ist als die Anzahl von Elementen des Wasserzeichens n oder dieser entspricht, erhöht der Wasserzeichen-Einfügeabschnitt 202 die Variable i (Schritt 806) und geht zu der Verarbeitung in Schritt 802 über. Wenn im Gegensatz dazu in dem Schritt 805 bestimmt wird, dass die Variable i nicht kleiner ist als die Anzahl von Elementen des Wasserzeichens n oder dieser entspricht, das heißt, wenn alle Wasserzeichen eingegeben worden sind, kompiliert der Wasserzeichen-Einfügeabschnitt 202 als Nächstes den Quellencode und speichert die Assemblercode-Zeilennummern, an denen Wasserzeichen eingegeben worden ist, gibt das Programm aus und beendet die Verarbeitung (Schritt 807).
  • Im Folgenden wird der Programmcode, der durch den Wasserzeichen-Einfügeabschnitt 202 in Übereinstimmung mit dem Beispiel 3 generiert wird, unter Verwendung von 10 beschrieben. In 10 bezeichnet 900a ein Basisprogramm, das die grundlegende Eingabe durch den Programm-Eingabeabschnitt 201 bildet. Die Programme 900b und 900c sind Programme zum Einfügen von Wasserzeichen, in denen das Wasserzeichen 901 in das Basisprogramm 900a eingegeben worden ist.
  • In den Programmen 900b und 900c unterscheidet sich die Implementierung entsprechend dem Verschleiern, jedoch werden die Spezifizierungen (Beziehung zur Programmeingabe/Programmausgabe) nicht verändert. Wenn die Unterschiede zwischen den Programmen 900b und 900c identifiziert werden, da auch der Programmcode an Orten modifiziert worden ist, die andere sind als der Ort des Wasserzeichens, werden die Nicht-Wasserzeichen-Teile 902a und 902b ebenfalls als Unterschiede erfasst.
  • Dementsprechend ist es, um die Wasserzeichen der Programme 900b und 900c zu ändern oder zu löschen, erforderlich, die Programme zu analysieren und herauszufinden, welche Teile Wasserzeichen sind, die sich nicht auf die Programmspezifizierungen beziehen. Da das Bestimmen, ob sich ein Teil auf die Programmspezifizierungen bezieht, ein Verständnis der Programmspezifizierungen voraussetzt, erweist es sich als schwierig, ein Wasserzeichen, das unter Verwendung dieses Verfahrens eingebettet wird, auf mechanische Weise zu löschen.
  • Wie dies voranstehend beschrieben worden ist, fungiert in Übereinstimmung mit dem Beispiel 3 der Wasserzeichen-Einfügeabschnitt 202 auch als eine Änderungsvorrichtung, die die Verarbeitung des Verschleierns so durchführt, dass Programmspezifizierungen nicht in Teilen beeinträchtigt werden, die andere sind als ein Ort, an dem ein Programmwasserzeichen eingefügt wird, so dass ein Nicht-Wasserzeichen-Code in Teilen, die sich auf Programmspezifizierungen beziehen, durch einen Kollusionsangriff erfasst wird. Es erweist sich auf diese Weise als schwierig, einen Ort des Einfügens des Wasserzeichens auf Basis eines Kollusionsangriffes zu identifizieren. Als ein Ergebnis ist es möglich, ein Ändern oder ein Löschen des Wasserzeichens mit Sicherheit zu verhindern und einen illegalen Umlauf des Programms zu verhindern.
  • (Ausführungsform 4)
  • In der Ausführungsform 4 wird eine Wasserzeichen-Einfügevorrichtung an einem Verteilungsziel bereitgestellt, und ein Wasserzeichen wird einem verteilten Programm an dem Verteilungsziel zugewiesen.
  • Im Folgenden wird die Konfiguration eines Systems zum Verhindern der illegalen Verteilung von Programmen in Übereinstimmung mit der Ausführungsform 4 unter Verwendung von 11 beschrieben. 11 ist ein Konfigurationsdiagramm eines Systems zum Verhindern der illegalen Verteilung von Programmen, das mittels des Einfügens von Wasserzeichen in Übereinstimmung mit der Ausführungsform 4 der vorliegenden Erfindung implementiert wird. Teilen, die mit Teilen identisch sind, die bereits beschrieben worden sind, werden dieselben Referenzcodes zugewiesen, wie ihre entsprechenden voranstehend beschriebenen Teile.
  • In diesem System verteilt die Verteilungsquelle 1100 zuerst jeweils Kennungsinformationen 1101 und Kennungsinformationen 1102 an das Verteilungsziel 1110 und an das Verteilungsziel 1120, wobei die Kennungsinformationen jeweils das Verteilungsziel 1110 und das Verteilungsziel 1120 eindeutig bestimmen.
  • In Reaktion darauf speichern die Verteilungsziele 1110 und 1120 die Kennungsinformationen 1101 und 1102 in den Wasserzeichen-Einfügevorrichtungen 20a und 20b.
  • Anschließend verteilt die Verteilungsquelle 1100 ein Programm 1103 an das Verteilungsziel 1110 und das Verteilungsziel 1120.
  • In Reaktion darauf generieren die Verteilungsziele 1110 und 1120 Programme 1111 und 1121, in denen Wasserzeichen unter Verwendung der Wasserzeichen-Einfügevorrichtungen 20a und 20b in das verteilte Programm 1103 eingefügt werden.
  • Die Wasserzeichen-Einfügevorrichtungen 20a und 20b können Wasserzeichen-Einfügevorrichtungen in Übereinstimmung mit der Ausführungsform 1 oder 2 sein.
  • Anschließend senden die Wasserzeichen-Einfügevorrichtungen 20a und 20b Speicherinformationen 1104 und 1105 an die Verteilungsquelle 1100, und die Verteilungsquelle 1100 behält die Speicherinformationen 1104 und 1105 ein.
  • Wenn das Verteilungsziel 1110 illegale sekundäre Verteilung zu dem Umlaufziel 1130 durchführt, erhält die Verteilungsquelle 1100 das in Umlauf gebrachte Programm 1112 und gibt es zusammen mit den Speicherinformationen 1104 und 1105 in die Wasserzeichen-Extrahiervorrichtung 30 ein. Anschließend akquiriert die Verteilungsquelle 1100 Kennungsinformationen 1107, die das Verteilungsziel 1110 oder das Verteilungsziel 1120 mittels der Wasserzeichen-Extrahiervorrichtung 30 spezifizieren. Anschließend vergleicht die Verteilungsquelle 1100 die Kennungsinformationen 1101 und 1102, die zu den Verteilungszielen 1110 und 1120 verteilt worden sind, mit den erfassten Kennungsinformationen 1107 und identifiziert das Verteilungsziel 1110 oder 1120, das das Programm illegal in Umlauf gebracht hat.
  • Wie dies voranstehend beschrieben worden ist, ist es in Übereinstimmung mit der Ausführungsform 4 möglich, auf einfache Weise ein Programm an eine nicht spezifizierte Anzahl von Verteilungszielen zu verteilen, und Wasserzeichen an den Verteilungszielen einzufügen. Diese Art von Modus ist effektiv, wenn er auf ein System angewendet wird, in dem es wünschenswert ist, auf einfache Weise Programme lediglich zu verteilen, wie beispielsweise eine Programmverteilung unter Verwendung eines digitalen Rundsendens, Multicasting oder Rundsendens über ein IP-Netzwerk, und so weiter.
  • Beispiel 5
  • Das Beispiel 5 ändert ein Programm durch Hinzuaddieren eines Scheincodes, der nicht die Programmspezifizierungen beeinträchtigt, an einem Ort, an dem ein Verfahren des Einfügens von Wasserzeichen oder ein anderes Verfahren implementiert wird. Als ein Ergebnis wird ein Code, der ein anderer ist als ein Wasserzeichen, an unterschiedlichen Orten erfasst, wenn ein Kollusionsangriff ausgeführt wird, wodurch es möglich wird, dass die Änderung des Wasserzeichens oder das Löschen des Wasserzeichens auf Basis eines Kollusionsangriffes mit Sicherheit verhindert wird.
  • Im Folgenden wird eine Wasserzeichen-Einfügevorrichtung 1200 in Übereinstimmung mit dem Beispiel 5 unter Verwendung von 12 beschrieben. 12 ist ein Konfigurationsdiagramm einer Wasserzeichen-Einfügevorrichtung von dem Beispiel 5.
  • Die Funktionsweise des Programm-Eingabeabschnittes 201 der Wasserzeichen-Einfügevorrichtung 1200 in Übereinstimmung mit dem Beispiel 5 ist identisch mit der des Programm-Eingabeabschnittes 201 der Wasserzeichen-Einfügevorrichtung 20 in anderen Ausführungsformen.
  • Die Wasserzeichen-Einfügevorrichtung 1200 ist mit einem Scheincodeverfahren-Eingabeabschnitt 1203 bereitgestellt, der ein redundantes Scheincode-Verfahren eingibt, das die Ausführung einer Programmausgabe durch den Programm-Eingabeabschnitt 201 nicht beeinträchtigt. Der Scheincodeverfahren-Eingabeabschnitt 1203 gibt ein eingegebenes Scheincode-Verfahren an einen Scheincodeverfahren-Einfügeabschnitt 1201 aus.
  • Bei dem Scheincodeverfahren-Einfügeabschnitt 1201 handelt es sich um eine Vorrichtung zum Addieren eines Scheincode-Verfahrens, das durch den Scheincodeverfahren-Eingabeabschnitt 1203 eingegeben wird, als einen Bereich zum Einbetten eines Wasserzeichens. Der Scheincodeverfahren-Einfügeabschnitt 1201 gibt ein Programm, zu dem ein Scheincode-Verfahren hinzuaddiert worden ist, an einen Scheincode-Einfügeabschnitt 1202 aus.
  • Der Scheincode-Einfügeabschnitt 1202 ist eine Änderungsvorrichtung zum Durchführen von Änderung ohne das Ändern von Programmspezifizierungen durch Einfügen eines Scheincode-Paares, das für die Programmausführungsergebnisse nicht erforderlich ist, an Orten, an denen sämtliche Programmverfahren (sämtliche Verfahren einschließlich dem Scheincode-Verfahren) implementiert werden, ohne die Programmausführung zu beeinträchtigen. Ein Beispiel eines Scheincodes, der eingefügt wird, ist das PUSH/POP-Paar.
  • Der Wasserzeichen-Einfügeabschnitt 202, der Programm-Ausgabeabschnitt 203, der Wasserzeichendaten-Eingabeabschnitt 204, und der Abschnitt zum Generieren von Kennungsinformationen 205 sind jeweils identisch mit dem Wasserzeichen-Einfügeabschnitt 202, dem Programm-Ausgabeabschnitt 203, dem Wasserzeichendaten-Eingabeabschnitt 204, und dem Abschnitt zum Generieren von Kennungsinformationen 205 der Wasserzeichen-Einfügevorrichtung 20 in anderen Ausführungsformen oder Beispielen.
  • Der Abschnitt zum Speichern von Wasserzeicheninformationen 1204 speichert Informationen hinsichtlich der Entsprechung zwischen den Zeichen, numerischen Werten und Symbolen, die in den Wasserzeichen und Bitzeichenketten verwendet werden, sowie Informationen hinsichtlich der Entsprechung zwischen den Bitzeichenketten und den Anweisungscodes für Wasserzeichen, die durch den Wasserzeichen-Einfügeabschnitt 202 eingefügt worden sind. Der Abschnitt zum Speichern von Wasserzeicheninformationen 1204 hält darüber hinaus auch einen Verfahrensnamen und eine Zeilennummer als die Identifizierungsinformationen für ein Scheincode-Verfahren, das zum Einfügen von Wasserzeichen verwendet wird. Wenn darüber hinaus verschlüsselte Daten als die Wasserzeichendaten verwendet werden, speichert der Abschnitt zum Speichern von Wasserzeicheninformationen 1204 auch Schlüsselinformationen für das Verschlüsseln von den Daten.
  • Auf diese Weise kann ein Wasserzeichen-Einfügungsort auf einfache Weise unter Verwendung der Identifizierungsinformationen identifiziert werden, und ein Wasserzeichen kann auf einfache Weise erfasst werden.
  • Im Folgenden wird eine Wasserzeichen-Extrahiervorrichtung 30 in Übereinstimmung mit dem Beispiel 5 beschrieben. Der Unterschied zwischen der Wasserzeichen-Extrahiervorrichtung 30 in Übereinstimmung mit dem Beispiel 5 und einer Wasserzeichen-Extrahiervorrichtung 30 in anderen Ausführungsformen oder Beispielen liegt in der Funktionsweise des Abschnittes zum Speichern von Wasserzeicheninformationen 305.
  • Der Wasserzeichen-Erfassungsabschnitt 302 akquiriert die Identifizierungsinformationen eines Verfahrens, die für das Einfügen von Wasserzeichen verwendet werden, die von dem Abschnitt zum Speichern von Wasserzeicheninformationen 305 in einem Programm erhalten werden, das von dem Programm-Eingabeabschnitt 301 ausgegeben wird und überprüft das Verfahren, das durch die Identifizierungsinformationen angezeigt wird.
  • Anschließend extrahiert der Wasserzeichen-Erfassungsabschnitt 302 das Wasserzeichen, das in das Programm eingefügt wurde, durch Umwandeln von einem Anweisungscode in eine Bitzeichenkette und von der Bitzeichenkette in Zeichen, einen numerischen Wert oder ein Symbol unter Verwendung der Entsprechung zwischen Zeichen, numerischen Werten und Symbolen, die in Wasserzeichen und Bitzeichenketten verwendet werden, und der Entsprechung zwischen Bitzeichenketten und Anweisungs-Codes, die von dem gleichen Abschnitt zum Speichern von Wasserzeicheninformationen 305 erhalten werden.
  • Der Wasserzeichen-Erfassungsabschnitt 302 generiert Kennungsinformationen anhand eines extrahierten Wasserzeichens und gibt diese an den Abschnitt zum Speichern von Kennungsinformationen 304 aus.
  • Bei dem Abschnitt zum Speichern von Wasserzeicheninformationen 305 handelt es sich um eine Vorrichtung zum Halten von Identifizierungsinformationen eines Verfahrens, bei dem ein Wasserzeichen eingefügt wird. Der Abschnitt zum Speichern von Wasserzeicheninformationen 305 speichert darüber hinaus auch Entsprechung zwischen Zeichen, numerischen Werten und Symbolen, die in einem Wasserzeichen eines verteilten Programms verwendet werden und Bitzeichenketten, sowie Entsprechung zwischen Bitzeichenketten und Anweisungs-Codes. Wenn darüber hinaus ein eingefügtes Wasserzeichen verschlüsselt ist, hält der Abschnitt zum Speichern von Wasserzeicheninformationen 305 auch den Schlüssel für die Entschlüsselung der Daten. Der Abschnitt zum Speichern von Wasserzeicheninformationen 305 erhält die Entsprechung zwischen Zeichen, numerischen Werten und Symbolen und Bitzeichen ketten, sowie die Entsprechung zwischen Bitzeichenketten und Anweisungs-Codes, die Identifizierungsinformationen für ein Verfahren, bei dem ein Wasserzeichen eingefügt wird, sowie einen Schlüssel für die Entschlüsselung von verschlüsselten Daten aus dem Abschnitt zum Speichern von Wasserzeicheninformationen 1204.
  • Im Folgenden wird die Funktionsweise des Abschnittes zum Einfügen von Scheincodes 1202 und einem Wasserzeichen-Einfügeabschnitt 202 des Beispiels 5 unter Verwendung von 13 beschrieben. 13 ist ein Ablaufplan, der die Funktionsweise des Abschnittes zum Einfügen von Scheincodes 1202 und des Wasserzeichen-Einfügeabschnittes 202 des Beispiels 5 darstellt.
  • Zuerst weist der Abschnitt zum Einfügen von Scheincodes 1202 der Variable i einen Anfangswert von 1 zu (Schritt 1300). Anschließend generiert der Wasserzeichen-Einfügeabschnitt 202 das Wasserzeichen S anhand der Kennungsinformationen unter Verwendung der Entsprechung zwischen Zeichen, numerischen Werten und Symbolen und Bitzeichenketten (Schritt 1301).
  • Anschließend erfasst der Abschnitt zum Einfügen von Scheincodes 1202 einen Verfahrensabschnitt (Ort, an dem ein Verfahren implementiert wird) in dem Programm (Schritt 1302) und bestimmt, ob die Variable i kleiner ist als die Gesamtanzahl an Verfahren in dem Programm oder dieser entspricht (Schritt 1303), und wenn die Variable i kleiner ist als die Gesamtanzahl an Verfahren oder dieser entspricht, fügt er einen im Wesentlichen unnötigen Scheincode ein, der die Programmspezifizierungen nicht beeinträchtigt (Schritt 1304).
  • Es gibt eine Anzahl von Varianten des Scheincodes, der hierbei eingefügt wird, und die Variante wird auf Zufallsbasis ausgewählt oder so ausgewählt, dass der Scheincode nicht kopiert wird, der in ein Programm in der Vergangenheit eingefügt wurde. Das heißt, der Scheincode wird so eingefügt, dass der Scheincode durch einen Kollusionsangriff extrahiert wird.
  • Als Nächstes bestimmt der Wasserzeichen-Einfügeabschnitt 202, ob der erfasste Verfahrensabschnitt ein Scheincode-Verfahren ist (Schritt 1305), und wenn es sich um ein Scheincode-Verfahren handelt, fügt er das Wasserzeichen S durch Anwenden des Ver fahrens ein, das in dem Dokument „A Watermarking Method for Computer Program" (Monden et al., 1998, Symposium an Cryptography and Information Security, SCIS, 98-9.2.A, Januar, 1998) beschrieben ist (Schritt 1306).
  • Hierbei behält der Wasserzeichen-Einfügeabschnitt 202 auch die Identifizierungsinformationen zum Scheincode-Verfahren ein (Schritt 1307).
  • Anschließend erhöht der Wasserzeichen-Einfügeabschnitt 202 die Variable i (Schritt 1308) und geht zu der Verarbeitung in Schritt 1302 über.
  • Wenn im Gegensatz dazu in Schritt 1303 von der Variable i bestimmt wird, dass sie nicht kleiner ist als die Gesamtanzahl von Verfahren oder dieser entspricht, das heißt, wenn der Scheincode in sämtlichen Verfahren eingefügt worden ist, und wenn das Wasserzeichen in einem Scheincode-Verfahren davon eingefügt worden ist, gibt der Wasserzeichen-Einfügeabschnitt 202 ein Programm aus, in das ein Wasserzeichen eingebettet worden ist (Schritt 1309).
  • Mit einem Programm, das durch den Wasserzeichen-Einfügeabschnitt 202 in Übereinstimmung mit dem Beispiel 5 generiert worden ist, unterscheidet sich die Implementierung entsprechend dem Einfügen des Scheincodes, die Spezifizierungen (Beziehung zu der Programmeingabe/Programmausgabe) bleiben jedoch unverändert. Da darüber hinaus unterschiedliche Scheincodes durch die jeweiligen Programme eingefügt werden, werden, wenn Unterschiede zwischen den Programmen identifiziert werden, um ein Verfahren zum Einfügen eines Wasserzeichens zu identifizieren, Verfahren, die andere sind, als ein Verfahren, bei dem ein Wasserzeichen eingefügt wird, ebenfalls als Unterschiede erfasst.
  • Dementsprechend ist es, um ein Wasserzeichen eines Programms zu ändern oder zu löschen, erforderlich, das Programm zu analysieren und herauszufinden, bei welchem Verfahren es sich um ein Scheincode-Verfahren zum Einfügen eines Wasserzeichens, das sich nicht auf die Programmspezifizierungen bezieht, handelt. Da das Bestimmen, ob es sich bei einem Teil um einen Teil handelt, der sich auf die Programmspezifizierungen bezieht, das Verständnis der Programmspezifizierungen erfordert, erweist es sich als schwierig, ein Wasserzeichen, das unter Verwendung dieses Verfahrens eingebettet worden ist, mechanisch zu löschen.
  • Ein Programmcode, der in Übereinstimmung mit dem Beispiel 5 generiert worden ist, ist in 1 dargestellt.
  • Das Programm, das in 14 durch die Referenznummer 1600a bezeichnet wird, ist das Basis-Quellenprogramm. Das Programm, das aus dem Kompilieren dieses Programms 1600a resultiert, wird von dem Programm-Eingabeabschnitt 210 in die Wasserzeichen-Einfügevorrichtung 1200 eingegeben. Im Sinne einer verständlichen Beschreibung wird das Programm 1600b, das aus dem Zerlegen eines kompilierten Programms 1600a resultiert, an dieser Stelle der Beschreibung verwendet.
  • Das Programm 1600a und das Programm 1600d sind Programme, bei denen unterschiedliche Wasserzeichen und Scheincodes eingefügt werden. In den Programmen 1600a bis 1600d bezeichnet das Verfahren A2 ein Scheincode-Verfahren, und die Nummer vor jeder Anweisungs-Mnemonik bezeichnet die Zeilennummer.
  • Zuerst generiert in Schritt 1301 der Wasserzeichen-Einfügeabschnitt 202 das Wasserzeichen S1 (100111 001101 101000 000000 000001) und das Wasserzeichen S2 (100111 001101 101000 000000 000010) mit 6 Bits pro Zeichen anhand von jeweils unterschiedlichen Kennungsinformationen I1 ((C)01) und I2 ((C)02) für die Verwendung von Programmen zum Einfügen von Wasserzeichen 1600c und 1600d.
  • Anschließend erfasst in Schritt 1302 der Abschnitt zum Einfügen von Scheincodes 1202 einen Verfahrensabschnitt in einem Programm zum Einfügen von Wasserzeichen, und fügt in Schritt 1304 voneinander unterschiedliche Scheincodes in A1 ein, bei dem es sich um kein Scheincode-Verfahren handelt (der Teil, der in 14 durch die Referenznummer 1601 bezeichnet wird).
  • Des Weiteren bettet, wenn es sich bei dem Verfahren um das Scheincode-Verfahren A2 handelt, in Schritt 1306 der Wasserzeichen-Einfügeabschnitt 202 als Wasserzeichen nur die Anzahl von Bits, die den Anweisungen zugewiesen wurden, die dem Einbetten von den Wasserzeicheninformationen S1 und S2 unterliegen, in das Programm zum Einfügen von Wasserzeichen 1600b ein.
  • In diesem Beispiel handelt es sich bei iconst_0 in dem Verfahren A2 des Programms 1600b um eine Anweisung, die dem Einbetten unterliegt, und ihr werden 2-Bit-Informationen zugewiesen, und das Einbetten wird durch Durchführen von Extrahieren von 2 Bits von S1 und S2 durchgeführt (der Teil, der in 14 durch die Referenznummer 1602 bezeichnet wird).
  • Hierbei führt der Wasserzeichen-Einfügeabschnitt 202 das Extrahieren von den Bits unterer Ordnung eines jeden Zeichens durch, und wenn das Extrahieren für das gesamte Zeichen abgeschlossen ist, führt er das Extrahieren der Bits unterer Ordnung des nächsten Zeichens durch.
  • Der Abschnitt zum Einfügen von Scheincodes 1202 führt dieselbe Art von Einfügen von Scheincodes für das Verfahren A2 wie für das Verfahren A1 durch (der Teil, der in 14 durch die Referenznummer 1603 gekennzeichnet ist).
  • Wenn die Verteilungsziele der Programme 1600c und 1600d in Kollusion sind, und Unterschiede zwischen den Programmen gefunden werden, um den Wasserzeichen-Einfügungsort zu identifizieren, werden die Teile, die durch die Referenznummern 1601 und 1603 angezeigt werden, bei denen es sich nicht um ein Wasserzeichen handelt, ebenfalls zusammen mit dem Wasserzeichen 1602 erfasst, wodurch es sich als schwierig erweist, einen Wasserzeichen-Einfügungsort auf Basis eines Kollusionsangriffes zu identifizieren.
  • Auf diese Weise ist es möglich, das mechanische Ändern oder Löschen eines Wasserzeichens zu verhindern, und es ist möglich, zu verhindern, dass Programme auf illegale Weise in Umlauf gebracht werden.
  • Im Folgenden wird unter Verwendung von 15 die Funktionsweise des Wasserzeichen-Erfassungsabschnittes 302 in Übereinstimmung mit dem Beispiel 5 beschrieben. 15 ist ein Ablaufplan, der die Funktionsweise des Wasserzeichen-Erfassungsabschnittes 302 des Beispiels 5 darstellt.
  • Zuerst akquiriert der Wasserzeichen-Erfassungsabschnitt 302 Informationen zum Identifizieren von Scheincodes von dem Abschnitt zum Speichern von Wasserzeicheninformationen 305 (Schritt 1500).
  • Anschließend erfasst der Wasserzeichen-Erfassungsabschnitt 302 einen Scheincode-Verfahrensabschnitt, in dem ein Scheincode-Verfahren implementiert wird und einen Verfahrensabschnitt in dem Programm unter Verwendung der akquirierten Identifizierungsinformationen (Schritt 1501) und extrahiert das Wasserzeichen S von dem Scheincode-Verfahrensabschnitt unter Verwendung der Entsprechung zwischen Bitzeichenketten und Anweisungscodes, die in einem Abschnitt zum Speichern von Wasserzeicheninformationen 305 gespeichert sind (Schritt 1502).
  • Der Wasserzeichen-Erfassungsabschnitt 302 generiert Kennungsinformationen, die das Verteilungsziel des Programms eindeutig identifizieren, anhand der Informationen, die in dem Abschnitt zum Speichern von Kennungsinformationen 304 gespeichert sind, und anhand des extrahierten Wasserzeichens S (Schritt 1503), gibt die Kennungsinformationen aus (Schritt 1504) und beendet die Verarbeitung.
  • Auf diese Weise kann der Wasserzeichen-Erfassungsabschnitt 302 auf einfache Weise einen Scheincode-Verfahrensabschnitt und einen Verfahrensabschnitt unter Verwendung der Kennungsinformationen erfassen, und er kann das Verteilungsziel des Programms durch Extrahieren des Wasserzeichens S aus dem Scheincode-Verfahrensabschnitt identifizieren. Als ein Ergebnis kann verhindert werden, dass Programme illegal in Umlauf gebracht werden.
  • Wie dies voranstehend beschrieben worden ist, ist es in Übereinstimmung mit dem Beispiel 5 möglich, in ein Programm nicht nur ein Wasserzeichen sondern auch einen Scheincode, der ein Ausführungscode-Paar umfasst, einzufügen, wodurch die Spezifizierungen nicht beeinträchtigt werden. Als ein Ergebnis wird ein Nicht-Wasserzeichen-Code an unterschiedlichen Orten erfasst, wenn ein Kollusionsangriff durchgeführt wird, wodurch es möglich wird, ein Ändern oder ein Löschen des Wasserzeichens auf Basis eines Kollusionsangriffes mit Sicherheit zu verhindern.
  • (Beispiel 6)
  • Das Beispiel 6 ändert ein Programm durch Umschalten der Reihenfolge der Teile, die andere sind als ein Wasserzeichen-Einfügungsort, oder des Codes des gesamten Programms. Als ein Ergebnis wird ein Nicht-Wasserzeichen-Code an unterschiedlichen Orten erfasst, wenn ein Kollusionsangriff durchgeführt wird, wodurch es möglich wird, ein Ändern oder ein Löschen des Wasserzeichens auf Basis eines Kollusionsangriffes mit Sicherheit zu verhindern.
  • Im Folgenden wird das Beispiel 6 auf ausführlichere Weise beschrieben. Der Unterschied zwischen der Wasserzeichen-Einfügevorrichtung in dem Beispiel 6 und der Wasserzeichen-Einfügevorrichtung 20 in der Ausführungsform 1 liegt in der Funktionsweise des Wasserzeichen-Einfügeabschnittes 202.
  • Im Folgenden wird die Funktionsweise des Wasserzeichen-Einfügeabschnittes 202 des Beispiels 6 unter Verwendung von 16 beschrieben. 16 ist ein Ablaufplan, der die Funktionsweise des Wasserzeichen-Einfügeabschnittes 202 darstellt.
  • Zuerst weist der Wasserzeichen-Einfügeabschnitt 202 der Variable i einen Anfangswert von 1 zu (Schritt 1601). Anschließend generiert der Wasserzeichen-Einfügeabschnitt 202 das Wasserzeichen S anhand der Kennungsinformationen (unterschiedlich für jedes Verteilungsziel) zum Einbetten in den Code (Programm) (Schritt 1602).
  • Anschließend extrahiert der Wasserzeichen-Einfügeabschnitt 202 Code-Teile innerhalb des Programms, die die Spezifizierungen nicht beeinträchtigen, das heißt, die es zulassen, dass die Spezifizierungen aufrecht erhalten werden, selbst wenn ihre Reihenfolge umgeschaltet wird (Schritt 1603). Hierbei bedeutet ein Code-Teil einen Teil eines Programms, das aus einer Vielzahl von Codes gebildet ist.
  • Anschließend bestimmt der Wasserzeichen-Einfügeabschnitt 202, ob die Variable i kleiner ist als die Anzahl (N) von Code-Teilen, die es den Spezifizierungen ermöglicht, selbst dann aufrechterhalten zu werden, wenn ihre Reihenfolge umgeschaltet wird, oder dieser entspricht (Schritt 1604), und wenn die Variable i kleiner ist als die Anzahl (N), schaltet er die Reihenfolge des Codes, der in diesem Code-Teil enthalten ist, um (Schritt 1605), erhöht die Variable i (Schritt 1606) und geht zu dem Schritt 1604 über.
  • Wenn die Variable i nicht kleiner ist als N oder dieser Anzahl N entspricht, fügt der Wasserzeichen-Einfügeabschnitt 202 das Wasserzeichen S in de Code ein (Schritt 1607), kompiliert den Quellencode, speichert die Assemblercode-Zeilennummer, an der das Wasserzeichen S eingegeben wurde, gibt das Programm aus und beendet die Verarbeitung (Schritt 1608).
  • Auf diese Weise wandelt der Wasserzeichen-Einfügeabschnitt 202 die Teile, andere Teile sind als ein Ort, an dem ein Wasserzeichen eingegeben wird, um, wobei die Spezifizierungen aufrecht erhalten werden, durch Umschalten der Reihenfolge der Code-Teile, die es den Spezifizierungen ermöglichen, selbst dann aufrecht erhalten zu werden, wenn ihre Reihenfolge umgeschaltet wird.
  • Im Folgenden wird ein Programmcode, der durch den Wasserzeichen-Einfügeabschnitt 202 in Übereinstimmung mit dem Beispiel 6 generiert wird, unter Verwendung von 17 beschrieben. Das Programm 1700a ist ein ursprüngliches Programm, das durch den Programm-Eingabeabschnitt 201 eingegeben worden ist. Die Programme 1700b und 1700c sind Programme, in denen unterschiedliche Wasserzeichen 1702b und 1702c für jedes Verteilungsziel in das ursprüngliche Programm 1700a eingegeben worden sind.
  • Die Programme 1700b und 1700 enthalten Code-Teile 1701b und 1701c, sowie 1703b und 1703c. Die Code-Teile 1701b und 1701c, sowie 1703b und 1703c sind nicht Code-Teile zum Einfügen eines Wasserzeichens, das in dem ursprünglichen Programm 1700a enthalten ist, und in diesen Code-Teilen 1701b und 1701c, sowie 1703b und 1703c wird die Codesequenz der Code-Teile 1701a und 1701b, die es ermöglichen, dass die Spezifizierungen selbst dann aufrecht erhalten werden, wenn ihr Code, der umgeschaltet wird, geändert.
  • Auf diese Weise wurden das Programm 1700b und das Programm 1700c zu unterschiedlichen Anweisungssequenzen in Bezug auf das Programm 1700a ungewandelt, jedoch wurden die allgemeinen Spezifizierungen nicht geändert. Das bedeutet, in dem Programm 1700b und in dem Programm 1700c wurde das Programm 1700a umgewandelt, während seine Spezifizierungen aufrecht erhalten wurden. Wenn die Unterschiede zwischen den Programmen 1700b und 1700c identifiziert werden, werden, da der Programmcode ebenfalls an Orten modifiziert worden ist, die andere sind als die Wasserzeichen-Einfügungsorte, auch die Nicht-Wasserzeichen-Teile 1701b, 1701c, 1703b und 1703c als Unterschiede erfasst.
  • Dementsprechend ist es, um die Wasserzeichen der Programme 1700b oder 1700c zu ändern oder zu löschen, erforderlich, die Programme zu analysieren und herauszufinden, welche Teile Wasserzeichen sind, die die Programmspezifizierungen nicht beeinträchtigen. Da das Bestimmen, ob ein Teil die Programmspezifizierungen nicht beeinträchtigt, ein Verständnis der Programmspezifizierungen erfordert, erweist es sich als schwierig, ein Wasserzeichen, das unter Verwendung dieses Verfahrens eingebettet worden ist, auf mechanische Weise zu löschen.
  • Wie dies voranstehend in dem Beispiel 6 beschrieben worden ist, arbeitet der Wasserzeichen-Einfügeabschnitt 202 als eine Umwandlungsvorrichtung, die von Programmteilen, die andere sind als die Orte, an denen ein Programmwasserzeichen eingefügt worden ist, die Programmteile erfasst, die es zulassen, dass die Programmspezifizierungen selbst dann aufrecht erhalten werden, wenn die Anweisungssequenz umgeschaltet wird, und er führt die Umwandlung der Sequenz von Programmteilen durch, deren Anweisungssequenz ohne ein Beeinträchtigen der Programmspezifizierungen umgeschaltet werden kann, das heißt, während die Programmspezifizierungen aufrecht erhalten werden. Demzufolge werden Programmteile, die die Programmspezifizierungen nicht beeinträchtigen, die den Nicht-Wasserzeichen-Code umfassen, durch einen Kollusionsangriff erfasst. Als Ergebnis ist es möglich, das Ändern und Löschen eines Wasserzeichens mit Sicherheit zu verhindern und ein illegales in Umlauf bringen von Programmen zu verhindern.
  • Darüber hinaus werden in Übereinstimmung mit dem Beispiel 6 in Bezug auf die Sequenzumwandlung von Programmteilen, für die das Umschalten der Anweisungssequenz kein Problem darstellt, Permutationen von Anweisungserklärungen innerhalb eines Programms gefunden, und die Umwandlung wird in Übereinstimmung mit einer Permutation durchgeführt, die so ausgewählt wird, das sie für jedes Verteilungsziel unterschiedlich ist. Als ein Ergebnis unterscheiden sich die Anweisungssequenzen von Programmteilen, für die das Umschalten der Anweisungssequenz kein Problem darstellt, für jedes Verteilungsziel voneinander. Es erweist sich auf diese Weise als schwierig, einen Programmteil zu identifizieren, für den das Umschalten der Anweisungssequenz kein Problem darstellt, und es ist möglich, das Ändern oder das Löschen eines Wasserzeichens mit Sicherheit zu verhindern.
  • Als ein Verfahren, das ein anderes ist, als die Umwandlung in Übereinstimung mit Permutationen von Anweisungssequenzen, kann die Reihenfolge von Programmteilen, für die das Umschalten der Anweisungssequenz kein Problem darstellt, für jedes Verteilungsziel unterschiedlich gestaltet werden, indem die Umwandlung auf Zufallsbasis erfolgt.
  • Es ist darüber hinaus auch möglich, historische Informationen zu der Sequenzumwandlung des Codes zu halten, die in Codeteilen enthalten sind, für die das Umschalten der Sequenz kein Problem darstellt, und die historischen Informationen zum Durchführen der Umwandlung von Codeteilen zu verwenden, für die das Umschalten der Sequenz kein Problem darstellt, so dass sie für jedes Verteilungsziel unterschiedlich sind.
  • Durch diese Vorrichtung kann die Sequenzumwandlung des Codes, der in Codeteilen enthalten ist, für die das Umschalten der Sequenz kein Problem darstellt, auf einfache und zuverlässige Weise für jedes Verteilungsziel unterschiedlich gestaltet werden.
  • Industrielle Anwendbarkeit
  • Wie dies voranstehend beschrieben worden ist, ist es in Übereinstimmung mit der vorliegenden Erfindung möglich, ein Wasserzeichen so einzufügen, dass es sich als schwierig erweist, den Wasserzeichen-Einfügungsort zu identifizieren, und dementsprechend ist die vorliegende Erfindung in einem breiten Bereich, einschließlich dem in Umlauf bringen von Computerprogrammen unter Verwendung eines Netzwerkes anwendbar.

Claims (7)

  1. Wasserzeichen-Einfügevorrichtung (20), die umfasst einen Wasserzeichen-Einfügeabschnitt (202), der in ein Programm ein Wasserzeichen einfügt, das sich ja nach Verteilungsziel des Programms unterscheidet und ein Code-Einfügeabschnitt, der in das Programm einen Wasserzeichen-Prüfcode einfügt, der verhindert, dass das Programm ordnungsgemäß arbeitet, wenn das Wasserzeichen manipuliert ist; wobei der Wasserzeichen-Prüfcode unabhängig von dem Verteilungsziel identisch ausgeführt ist; wobei, damit das Programm ordnungsgemäß arbeitet, der Wasserzeichenprüfcode erforderlich ist; dadurch gekennzeichnet, dass Variablen Funktionen von Werten des Wasserzeichens zugewiesen werden, wobei die Summe der Funktionen der Werte 0 beträgt; die Summe der Variablen als Wasserzeichen-Prüfcode in einer Entscheidungserklärung des Programms so hinzugefügt wird, dass das Ergebnis der Entscheidungserklärung des Programms nicht beeinflusst wird, wenn das Wasserzeichen und der Wasserzeichen-Prüfcode nicht manipuliert worden sind, ansonsten jedoch beeinflusst wird.
  2. Wasserzeichen-Einfügevorrichtung (20) nach Anspruch 1, wobei das Wasserzeichen aus Kennungsinformationen generiert wird, die ein Verteilungsziel des Programms eindeutig bestimmen.
  3. Wasserzeichen-Einfügevorrichtung nach Anspruch 1, das des Weiteren einen Funktions-Einfügeabschnitt umfasst, der eine Funktion definiert, die eine vorgegebene Konstante von dem Wasserzeichen ausgibt und einen Ausdruck einfügt, der die Funktion einer Variablen in dem Programm zuweist; wobei der Wasserzeichen-Prüfcode eine Bedingungsverzweigung ist, die bestimmt, ob die Variable und die Konstante gleich sind, und, wenn die Variable und die Konstante nicht gleich sind, das Programm anhält; und der Wasserzeichen-Prüfcode unabhängig von dem Verteilungsziel identisch ausgeführt ist.
  4. System zum Verhindern der illegalen Verteilung von Programmen, das umfasst: die Wasserzeichen-Einfügevorrichtung (20) nach Anspruch 1; einen Programm-Eingabeabschnitt (301), der eine Programm eingibt, in das die Wasserzeichen-Einfügevorrichtung (20) nach Anspruch 1 das Wasserzeichen und den Wasserzeichen-Prüfcode eingefügt hat; einen Wasserzeichen-Erfassungsabschnitt (302), der das Wasserzeichen aus dem Programm extrahiert und Kennungsinformationen generiert, die das Verteilungsziel auf Basis des Wasserzeichens eindeutig identifizieren; wobei ein Verteilungsziel auf Basis der generierten Kennungsinformationen identifiziert wird.
  5. System zum Verhindern der illegalen Verteilung von Programmen nach Anspruch 4, wobei die Wasserzeichen-Einfügevorrichtung (20) an dem Verteilungsziel bereitgestellt wird.
  6. Wasserzeichen-Einfügeverfahren, dass die folgenden Schritte umfasst: Einfügen eines Wasserzeichens in ein Programm, dass sich je nach Verteilungsziel des Programms unterscheidet; Verhindern, dass das Programm ordnungsgemäß arbeitet, wenn das Wasserzeichen manipuliert ist; Einfügen eines Wasserzeichen-Prüfcodes in das Programm, der unabhängig von dem Verteilungsziel des Programms identisch ist; wobei, damit das Programm ordnungsgemäß arbeitet, der Wasserzeichen-Prüfcode erforderlich ist; dadurch gekennzeichnet, dass Variablen Funktionen von Werten des Wasserzeichens zugewiesen werden, wobei die Summe der Funktionen der Werte 0 beträgt; die Summe der Variablen als Wasserzeichen-Prüfcode in einer Entscheidungserklärung des Programms so hinzugefügt wird, dass das Ergebnis der Entscheidungserklärung des Programms nicht beeinflusst wird, wenn das Wasserzeichen und der Wasserzeichen-Prüfcode nicht manipuliert worden sind, ansonsten jedoch beeinflusst wird.
  7. Programm zum Einfügen von Wasserzeichen, das einen Computer veranlasst in ein Programm ein Wasserzeichen einzufügen, dass sich je nach Programm-Verteilungsziel unterscheidet; zu verhindern, dass das Programm ordnungsgemäß arbeitet, wenn das Wasserzeichen manipuliert ist; in das Programm einen Wasserzeichen-Prüfcode einzufügen, der unabhängig von dem Verteilungsziel des Programms identisch ist; wobei, damit das Programm ordnungsgemäß arbeitet, der Wasserzeichen-Prüfcode erforderlich ist; dadurch gekennzeichnet, dass Variablen Funktionen von Werten des Wasserzeichens zugewiesen werden, wobei die Summe der Funktionen der Werte 0 beträgt; die Summe der Variablen als Wasserzeichen-Prüfcode in einer Entscheidungserklärung des Programms so hinzugefügt wird, dass das Ergebnis der Entscheidungserklärung des Programms nicht beeinflusst wird, wenn das Wasserzeichen und der Wasserzeichen-Prüfcode nicht manipuliert worden sind, ansonsten jedoch beeinflusst wird.
DE60320437T 2002-10-25 2003-10-21 Vorrichtung zur einbettung und erkennung von wasserzeichen Expired - Fee Related DE60320437T2 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
JP2002311815 2002-10-25
JP2002311815 2002-10-25
JP2003133566 2003-05-12
JP2003133566 2003-05-12
JP2003324805A JP2004362532A (ja) 2002-10-25 2003-09-17 透かし挿入装置および透かし取出装置
JP2003324805 2003-09-17
PCT/JP2003/013405 WO2004038531A2 (en) 2002-10-25 2003-10-21 Watermark insertion apparatus and watermark extraction apparatus

Publications (2)

Publication Number Publication Date
DE60320437D1 DE60320437D1 (de) 2008-05-29
DE60320437T2 true DE60320437T2 (de) 2009-05-20

Family

ID=32180306

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60320437T Expired - Fee Related DE60320437T2 (de) 2002-10-25 2003-10-21 Vorrichtung zur einbettung und erkennung von wasserzeichen

Country Status (6)

Country Link
US (1) US20050262347A1 (de)
EP (1) EP1554640B1 (de)
JP (1) JP2004362532A (de)
AU (1) AU2003301627A1 (de)
DE (1) DE60320437T2 (de)
WO (1) WO2004038531A2 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702125B2 (en) * 2003-02-05 2010-04-20 Digimarc Corporation Watermarking systems and methods
US20040202324A1 (en) * 2003-04-11 2004-10-14 Matsushita Electric Industrial Co., Ltd Program electronic watermark processing apparatus
GB2418498B (en) * 2004-09-23 2009-08-05 Farhan Khan Software mapping
KR100652009B1 (ko) * 2004-11-24 2006-12-01 한국전자통신연구원 핑거 프린팅 코드를 이용한 공모 구매자 식별 방법
ATE425503T1 (de) * 2004-12-22 2009-03-15 Ericsson Telefon Ab L M Wasserzeichenmarkierung eines computerprogrammcodes
JP2009517972A (ja) 2005-11-29 2009-04-30 トムソン ライセンシング デジタルコンテンツを保護する方法及び装置
WO2008010508A1 (fr) * 2006-07-18 2008-01-24 Panasonic Corporation dispositif de génération de commande
US20080046875A1 (en) * 2006-08-16 2008-02-21 Gad Haber Program Code Identification System and Method
CN101506817B (zh) * 2006-08-21 2010-11-10 耶德托公司 控制数字内容的分发
US8417948B2 (en) * 2006-12-13 2013-04-09 Sony Corporation Computer scripting engine to extract and execute steganographically hidden scripts in carrier scripts
JP2012043322A (ja) * 2010-08-23 2012-03-01 Kddi Corp ソフトウェアの不正流用検出装置、ソフトウェアの不正流用検出方法およびプログラム
JP2012084071A (ja) * 2010-10-14 2012-04-26 Toshiba Corp デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置
NL2006658C2 (en) * 2011-04-22 2012-10-23 Media Cowboyz B V Method and system for detecting violation of intellectual property rights of a digital file.
US9275199B2 (en) 2011-06-28 2016-03-01 Link-Busters IP B.V. Method and system for detecting violation of intellectual property rights of a digital file
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
JP5275432B2 (ja) 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
JP5275482B2 (ja) 2012-01-16 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
US9047448B2 (en) * 2013-01-14 2015-06-02 Apple Inc. Branch auditing in a computer program
CN103714271B (zh) * 2013-09-30 2016-10-26 南通大学 一种Java软件水印植入虚方法的永假式构造方法
CN104200139B (zh) * 2014-09-12 2017-11-24 南通大学 一种Java软件水印虚方法中指令代码的生成方法
US9600672B1 (en) * 2014-12-04 2017-03-21 Amazon Technologies, Inc. Dynamic function switching
CN108700864B (zh) * 2016-01-11 2021-05-07 西门子股份公司 可编程逻辑控制器中网络攻击弹性控制的程序随机化
FR3059441B1 (fr) * 2016-11-25 2020-06-26 Institut Mines-Telecom / Telecom Bretagne Procede d'extraction de donnees d'une base de donnees tatouees selon un mecanisme de tatouage reversible.
US10534898B2 (en) 2017-01-18 2020-01-14 International Business Machines Corporation Code identification
US11269976B2 (en) * 2019-03-20 2022-03-08 Saudi Arabian Oil Company Apparatus and method for watermarking a call signal

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4625076A (en) * 1984-03-19 1986-11-25 Nippon Telegraph & Telephone Public Corporation Signed document transmission system
US5287408A (en) * 1992-08-31 1994-02-15 Autodesk, Inc. Apparatus and method for serializing and validating copies of computer software
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
US5745569A (en) * 1996-01-17 1998-04-28 The Dice Company Method for stega-cipher protection of computer code
US5892899A (en) * 1996-06-13 1999-04-06 Intel Corporation Tamper resistant methods and apparatus
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US6230268B1 (en) * 1997-09-12 2001-05-08 International Business Machines Corporation Data control system
US6330549B1 (en) * 1997-10-30 2001-12-11 Xerox Corporation Protected shareware
JP3865347B2 (ja) * 1998-09-01 2007-01-10 日立ソフトウエアエンジニアリング株式会社 プログラムへの透かしの挿入方法及びシステム
US6697948B1 (en) * 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
US6898706B1 (en) * 1999-05-20 2005-05-24 Microsoft Corporation License-based cryptographic technique, particularly suited for use in a digital rights management system, for controlling access and use of bore resistant software objects in a client computer
US7770016B2 (en) * 1999-07-29 2010-08-03 Intertrust Technologies Corporation Systems and methods for watermarking software and other media
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US7287166B1 (en) * 1999-09-03 2007-10-23 Purdue Research Foundation Guards for application in software tamperproofing
US6304972B1 (en) * 2000-01-03 2001-10-16 Massachusetts Institute Of Technology Secure software system and related techniques
US6829710B1 (en) * 2000-03-14 2004-12-07 Microsoft Corporation Technique for producing, through watermarking, highly tamper-resistant executable code and resulting “watermarked” code so formed
US7350204B2 (en) * 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
US20060010430A1 (en) * 2001-05-04 2006-01-12 Thales Device and process for the signature, the marking and the authentication of computer programs
CA2350029A1 (en) * 2001-06-08 2002-12-08 Cloakware Corporation Sustainable digital watermarking via tamper-resistant software
US7581103B2 (en) * 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
US7269740B2 (en) * 2001-08-01 2007-09-11 Sas Validy Method to protect software against unwanted use with a “variable principle”
US7549147B2 (en) * 2002-04-15 2009-06-16 Core Sdi, Incorporated Security framework for protecting rights in computer software
US20050055312A1 (en) * 2003-08-18 2005-03-10 Wilson Kelce Steven Software control flow watermarking

Also Published As

Publication number Publication date
WO2004038531B1 (en) 2005-02-03
WO2004038531A2 (en) 2004-05-06
DE60320437D1 (de) 2008-05-29
AU2003301627A1 (en) 2004-05-13
WO2004038531A9 (en) 2004-07-15
US20050262347A1 (en) 2005-11-24
WO2004038531A3 (en) 2004-11-25
EP1554640A2 (de) 2005-07-20
AU2003301627A8 (en) 2004-05-13
JP2004362532A (ja) 2004-12-24
EP1554640B1 (de) 2008-04-16

Similar Documents

Publication Publication Date Title
DE60320437T2 (de) Vorrichtung zur einbettung und erkennung von wasserzeichen
DE69634880T2 (de) Verfahren und gerät zum kontrollierten zugriff zu verschlüsselten datenakten in einem computersystem
DE69733989T2 (de) Verfahren zur Extrahierung von Daten und Verfahren zur Verdeckerung von Daten
DE60033500T2 (de) Wasserzeicheneinbettung und -detektion
DE69534757T2 (de) System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
DE60219350T2 (de) System und verfahren zum sicheren austauschen des hauptschlüssels in einer persönlichen sicherheitsvorrichtung
DE60315996T2 (de) Verfahren und vorrichtung zur datenbewegung mittels sperren
EP1618519A2 (de) Verfahren zur verarbeitung von daten
DE2734456A1 (de) Datenabtastsystem zum bestimmen der gueltigkeit eines aufzeichnungstraegers
DE2949351A1 (de) Verfahren und vorrichtung zur absicherung von dokumenten sowie dabei verwendetes dokument
DE602004000106T2 (de) System zur Verbindung geheimer Daten zu einem Computer System mit Toleranz für Hardwareänderungen
WO2006120001A1 (de) Tragbarer datenträger mit sicherer datenverarbeitung
DE69826778T2 (de) Vorrichtungen zum Verschlüsseln und Entschlüsseln einer Schlüsselwiedergewinnungsbedingung
EP1798653A1 (de) Verfahren und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms
EP1158384A1 (de) Sicherheits-Datenverarbeitungseinheit sowie dazugehöriges Verfahren
DE60035290T2 (de) Verfahren und Vorrichtung zum Auffinden unerlaubter Kopien digitaler Objekte mittels Fingerabdruck
DE60305555T2 (de) Selbst wiederherstellendes Programm, Programmerzeugungsmethode und Vorrichtung, Informationsbearbeitungsvorrichtung und Programm
DE3705736A1 (de) Verfahren zum sichern von programmen und zur integritaetskontrolle gesicherter programme
DE102010009458A1 (de) Hardware-Einrichtung
DE60212169T2 (de) Laden von software
EP1810442A1 (de) Vorrichtung und verfahren zum detektieren einer manipulation eines informationssignals
DE19816356A1 (de) Verfahren zum Einbringen manipulationssicherer digitaler Fingerabdrücke in elektronische Dokumente
DE102019206302A1 (de) Verfahren und Vorrichtung zum Übertragen eines Boot-Codes mit verbesserter Datensicherheit
DE112020005818B4 (de) Authentifikatorverwaltungsvorrichtung, authentifikatorverwaltungsprogramm und authentifikatorverwaltungsverfahren
DE3335387A1 (de) Verfahren zur verhinderung des ablaufs eines programms auf fuer den ablauf dieses programms nicht zugelassenen rechnern

Legal Events

Date Code Title Description
8381 Inventor (new situation)

Inventor name: SATO, YUJI, OTA-KU, TOKYO 144-0046, JP

Inventor name: YAMAGUCHI, TAKAO, KOKUBUNJI-SHI, TOKYO 185-002, JP

Inventor name: SATO, JUNICHI, MACHIDA-SHI, TOKYO 195-0053, JP

Inventor name: TAKEI, ICHIRO, SHIROMI 1-CHOME, CHOU-KU, OSAKA, JP

Inventor name: ITO, TOMOAKI, SHIROMI 1-CHOME, CHOU-KU, OSAKA , JP

8327 Change in the person/name/address of the patent owner

Owner name: PANASONIC CORP., KADOMA, OSAKA, JP

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee