DE112013000357B4 - System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten - Google Patents

System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten Download PDF

Info

Publication number
DE112013000357B4
DE112013000357B4 DE112013000357.0T DE112013000357T DE112013000357B4 DE 112013000357 B4 DE112013000357 B4 DE 112013000357B4 DE 112013000357 T DE112013000357 T DE 112013000357T DE 112013000357 B4 DE112013000357 B4 DE 112013000357B4
Authority
DE
Germany
Prior art keywords
key
client
index
character
state
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
DE112013000357.0T
Other languages
English (en)
Other versions
DE112013000357T5 (de
Inventor
c/o IBM Japan Ltd. Tateishi Takaaki
c/o IBM Japan Ltd. Watanabe Yuji
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.)
GlobalFoundries Inc
Original Assignee
GlobalFoundries Inc
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 GlobalFoundries Inc filed Critical GlobalFoundries Inc
Publication of DE112013000357T5 publication Critical patent/DE112013000357T5/de
Application granted granted Critical
Publication of DE112013000357B4 publication Critical patent/DE112013000357B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/061Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying further key derivation, e.g. deriving traffic keys from a pair-wise master key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

Server, der zum Eingeben einer Zeichenfolge mit einem Client verbindbar ist und der einen Automaten aufweist, der einen nachfolgenden Zustand des Übergangs für jeden Zustand und jedes Zeichen definiert, der aufweist: eine Schlüsselketten-Generierungseinheit zum Generieren einer Schlüsselkette für jede Kombination aus Index, Zeichen und Zustand, die die Position jedes Zeichens in einer Zeichenfolge ausdrückt, wobei die Schlüsselkette verschlüsselte Schlüssel für den nächsten Index aufweist, die dem nachfolgenden Zustand des Übergangs von dem aktuellen Zustand entsprechen, entsprechend dem Zeichen auf der Grundlage des Schlüssels, der dem aktuellen Zustand entspricht, und eine Bereitstellungseinheit zum Austauschen von Daten mit einem Client und zum Bereitstellen einer Schlüsselkette für den Client, die jedem eingegebenen Schlüssel entspricht, aus einem Satz von Schlüsselketten für jeden Index in einem Zustand, der die eingegebenen Zeichen gegenüber dem Client verdeckt.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich auf einen Server, einen Client, ein Verfahren und ein Programm zum Authentifizieren, ob eine Zeichenfolge durch einen Automaten angenommen worden ist.
  • Hintergrund der Technik
  • Es ist ein System zum Authentifizieren bekannt, ob eine Zeichenfolge, die sich auf einem Client befindet, durch einen Automaten, der sich auf einem Server befindet, angenommen worden ist (siehe zum Beispiel Patentschrift 1).
  • Liste der Zitate
  • Patentliteratur
    • Patentliteratur 1 Offengelegte Patentveröffentlichung Nr. JP 2009-151 757 (A)
  • Nichtpatentliteratur
  • Nichtpatentliteratur 1
    • Michael J. Freedman, Kobbi Nissim und Benny Pinkas, „Efficient Private Matching and Set Intersection”, Advances in Cryptology EUROCRYPT 2004, Lecture Notes in Computer Science, 2004
  • Nichtpatentliteratur 2
    • Even, O. Goldreich und A. Lempel, „A Randomized Protocol for Signing Contracts”, Communications of the ACM, Band 28, Ausgabe 6, S. 637 bis 647, 1985
  • Kurzdarstellung der Erfindung
  • Technische Probleme
  • Es ist jedoch sehr schwierig zu authentifizieren, ob eine Zeichenfolge durch einen Automaten angenommen worden ist, ohne die Zeichenfolge, die sich auf dem Client befindet, gegenüber dem Server zu offenbaren und ohne den Automaten, der sich auf dem Server befindet, gegenüber dem Client zu offenbaren.
  • Lösung der Probleme
  • Ein erster Aspekt der vorliegenden Erfindung stellt einen Server bereit, der zum Eingeben einer Zeichenfolge mit einem Client verbindbar ist und der einen Automaten aufweist, der einen nachfolgenden Zustand des Übergangs für jeden Zustand und jedes Zeichen definiert. Der Server beinhaltet eine Schlüsselketten-Generierungseinheit zum Generieren einer Schlüsselkette für jede Kombination aus Index, Zeichen und Zustand, die die Position jedes Zeichens in einer Zeichenfolge ausdrückt, wobei die Schlüsselkette verschlüsselte Schlüssel für den nächsten Index aufweist, die dem nachfolgenden Zustand des Übergangs von dem aktuellen Zustand entsprechen, entsprechend dem Zeichen auf der Grundlage des Schlüssels, der dem aktuellen Zustand entspricht, und eine Bereitstellungseinheit zum Austauschen von Daten mit einem Client und zum Bereitstellen einer Schlüsselkette für den Client, die jedem eingegebenen Schlüssel entspricht, aus einem Satz von Schlüsselketten für jeden Index in einem Zustand, der die eingegebenen Zeichen gegenüber dem Client verdeckt. Außerdem werden ein Verfahren und ein Programm für eine Datenverarbeitung bereitgestellt, die durch diesen Server ausgeführt wird.
  • Ein zweiter Aspekt der vorliegenden Erfindung stellt einen Client zum Eingeben einer Zeichenfolge bereit, der in der Lage ist, Daten mit einem Server auszutauschen, der einen Automaten aufweist, der einen nachfolgenden Zustand des Übergangs für jeden Zustand und jedes Zeichen definiert. Der Client weist eine Empfangseinheit zum Austauschen von Daten mit dem Server und zum Empfangen einer Vielzahl von Schlüsselketten von dem Server, die einem eingegebenen Zeichen entsprechen, für jeden Index und eine Entschlüsselungseinheit zum Ermitteln eines Schlüssels, der dem nächsten Index entspricht, durch Durchführen einer Entschlüsselungsverarbeitung an der Vielzahl der empfangenen Schlüsselketten mithilfe von Schlüsseln auf, die durch die Entschlüsselungsverarbeitung, die dem vorherigen Index entspricht, in der sequentiellen Reihenfolge der Indizes ermittelt worden sind. Außerdem werden ein Verfahren und ein Programm für eine Datenverarbeitung bereitgestellt, die durch diesen Client ausgeführt wird.
  • Es ist zu beachten, dass die obige Kurzdarstellung der vorliegenden Erfindung nicht sämtliche Merkmale aufführen soll, die von der vorliegenden Erfindung benötigt werden. Darüber hinaus bilden auch Teilkombinationen dieser Gruppen von Merkmalen die vorliegende Erfindung.
  • Kurze Beschreibung der Zeichnungen
  • 1 stellt die Konfiguration des Authentifizierungssystems 10 in der vorliegenden Ausführungsform dar.
  • 2 stellt eine Funktionsblockkonfiguration des Servers 20 und des Clients 30 in der vorliegenden Ausführungsform dar.
  • 3 stellt einen Ablaufplan einer Verarbeitung, die durch den Server 20 und den Client 30 durchgeführt wird, in der vorliegenden Ausführungsform dar.
  • 4 stellt einen Ablaufplan des Prozesses zum Generieren eines Satzes von Schlüsselketten dar.
  • 5 stellt ein Beispiel für Schlüssel für verschiedene Zustände dar, die für jeden Index generiert werden.
  • 6 stellt ein Beispiel für eine Übergangstabelle für einen Automaten und Schlüsseltabellen zum Zuweisen eines Schlüssels zu dem nächsten Index in dem nachfolgenden Zustand dar, der jedem Zustand und jedem Zeichen für den ersten Index, den zweiten Index und den dritten Index entspricht.
  • 7 stellt ein Beispiel für einen Satz von Schlüsselketten dar, die für jede Kombination aus Indizes, Zeichen und Zustände generiert werden.
  • 8 stellt ein Beispiel für Endzustandsdaten dar.
  • 9 stellt ein Beispiel für indexierte Zustandsübergangswerte vom ersten Index bis zum dritten Index dar, wenn ein Binärzeichen „0” oder „1” eingegeben wird.
  • 10 stellt ein Beispiel für Sätze von Schlüsselketten dar, die indexierten Zustandsübergangswerten zugehörig sind.
  • 11 stellt ein Beispiel für den Datenübertragungsprozess dar, der mithilfe des datenschutzgerechten Schnittmengenprotokolls in dem Authentifizierungssystem 10 der vorliegenden Ausführungsform durchgeführt wird.
  • 12 stellt ein Beispiel für eine Vielzahl von verschlüsselten Antworttexten, die von dem Client 30 empfangen werden, und für eine Vielzahl von Schlüsselketten, die durch ein Entschlüsseln der Vielzahl von verschlüsselten Antworttexten ermittelt werden, in der vorliegenden Ausführungsform dar.
  • 13 stellt einen Ablaufplan des sequentiellen Entschlüsselungsprozesses für eine Vielzahl von Schlüsselketten in dem Client 30 dar.
  • 14 stellt ein Beispiel für einen Schlüssel dar, der mithilfe des sequentiellen Entschlüsselungsprozesses für eine Vielzahl von Schlüsselketten in dem Client 30 ermittelt wird.
  • 15 stellt die Konfiguration des Authentifizierungssystems 10 in einer Variante dar.
  • 16 stellt einen Ablaufplan einer Verarbeitung, die durch den Server 20 und den Client 30 durchgeführt wird, in der Variante dar.
  • 17 stellt ein Beispiel für einen Satz von Schlüsselketten für den ersten Index dar.
  • 18 stellt ein Beispiel für einen Satz von Schlüsselketten für den zweiten Index dar.
  • 19 stellt ein Beispiel für einen Satz von Schlüsselketten für den dritten Index dar.
  • 20 stellt ein Beispiel für Schlüssel dar, die in sequentieller Reihenfolge aus einem Teilsatz von Schlüsselketten für jeden Index entschlüsselt werden.
  • 21 stellt den Ablauf der Übermittlungsverarbeitung für eine nicht wahrnehmbare Übertragung von Schlüsselketten-Teilsätzen zwischen dem Server 20 und dem Client 30 in der Variante dar.
  • 22 stellt den Ablauf in der Fortsetzung von 21 dar.
  • 23 stellt den Ablauf in der Fortsetzung von 22 dar.
  • 24 stellt ein Beispiel für die Hardware-Konfiguration des Computers 1900 in der vorliegenden Ausführungsform dar.
  • Beschreibung einer Ausführungsform
  • Das Folgende stellt eine Beschreibung der vorliegenden Erfindung unter Bezugnahme auf eine Ausführungsform der vorliegenden Erfindung dar. Die vorliegende Ausführungsform beschränkt die vorliegende Erfindung jedoch nicht im Umfang der Ansprüche. Zudem sind sämtliche Kombinationen von Eigenschaften, die in der Ausführungsform erläutert werden, in der technischen Lösung der vorliegenden Erfindung nicht zwingend erforderlich.
  • 1 stellt die Konfiguration des Authentifizierungssystems 10 in der vorliegenden Ausführungsform dar. Das Authentifizierungssystem 10 beinhaltet in der vorliegenden Ausführungsform einen Server 20 und einen Client 30. Der Server 20 und der Client 30 sind über ein Netzwerk miteinander verbunden. Das Authentifizierungssystem 10 ermittelt in der vorliegenden Ausführungsform auf der Grundlage der Zeichenfolge, die in den Client 30 eingegeben wird, ob ein Automat, der sich auf dem Server 20 befindet, in den entsprechenden Endzustand übergegangen ist.
  • Der Client 30 gibt eine Zeichenfolge von einer externen Einheit ein, wobei es sich bei den in der Zeichenfolge enthaltenen Zeichen um einen beliebigen Zeichentyp handeln kann. Beispielsweise können sie Binärwerte mit „0” und „1” oder Zeichen sein, die durch ein Einzel-Byte dargestellt werden.
  • Der Server 20 weist einen Automaten auf, der einem Zustandsübergang entsprechend dem empfangenen Zeichen unterzogen wird. Der Automat definiert den nachfolgenden Zustand des Übergangs für jeden Zustand oder jedes Zeichen. Bei dem durch den Automaten empfangenen Zeichen handelt es sich um das Zeichen, das in den Client 30 eingegeben worden war. Der Automat stellt den regulären Ausdruck für einen Satz von Zeichenfolgen (eine Gruppe von Zeichenfolgen) dar, die im Voraus registriert worden sind. Der Automat empfängt jedes Zeichen in einer Zeichenfolge in sequentieller Reihenfolge vom Kopf aus und geht in sequentieller Reihenfolge für jedes Zeichen von dem Zeichen am Kopf aus in einen Zustand über. Nach dem Empfangen des Schlusszeichens und nachdem er einem Übergang unterzogen worden ist, gibt der Automat „angenommen” aus, wenn er in den entsprechenden Endzustand übergeht. Er gibt „nicht angenommen” aus, wenn er nicht in den entsprechenden Endzustand übergeht.
  • Auf einem solchen Server 20 und Client 30 wird die durch den Client 30 eingegebene Zeichenfolge gegenüber dem Server 20 verdeckt, und der Automat, der sich auf dem Server 20 befindet, wird gegenüber dem Client 30 verdeckt. Hier ermittelt der Automat, der sich auf dem Server 20 befindet, ob ein Übergang zu dem entsprechenden Endzustand stattgefunden hat, auf der Grundlage der in den Client 30 eingegebenen Zeichenfolge.
  • 2 stellt eine Funktionsblockkonfiguration des Servers 20 und des Clients 30 in der vorliegenden Ausführungsform dar. Der Server 20 weist eine Automatenspeichereinheit 42, eine Schlüsselgenerierungseinheit 44, eine Schlüsselketten-Generierungseinheit 46, eine Generierungseinheit 48 für indexierte Zustandsübergangswerte, eine Syntheseeinheit 50 und eine Bereitstellungseinheit 52 auf. Der Client 30 weist eine Eingabeeinheit 60, eine Generierungseinheit 62 für indexierte Zeichen, eine Empfangseinheit 64 und eine Entschlüsselungseinheit 66 auf.
  • Die Eingabeeinheit 60 des Clients 30 gibt jedes Zeichen in der Zeichenfolge einzeln ein. Die Eingabeeinheit 60 übermittelt jedes eingegebene Zeichen an die Generierungseinheit 62 für indexierte Zeichen.
  • Die Generierungseinheit 62 für indexierte Zeichen generiert ein indexiertes Zeichen für jedes Zeichen in der Zeichenfolge. Hier stellt der Index die Position eines Zeichens in der Zeichenfolge dar. Mit anderen Worten, er stellt die Reihenfolge dar, in der ein Zeichen dem Automaten bereitzustellen ist.
  • Außerdem handelt es sich bei einem Indexzeichen um einen Wert, der eine Gruppierung eines Zeichens und eines Indexes darstellt. Er wird zum Beispiel durch Zuweisen eines Wertes, der ein Zeichen darstellt, und eines Wertes, der einen Index darstellt, zu einer Einwegfunktion ermittelt. Bei einem indexierten Zeichen kann es sich auch um einen Wert handeln, der aus diesem Wert verschlüsselt oder der verdeckt wird, sodass das Zeichen und der Index schwierig zu erkennen sind. Die Generierungseinheit 62 für indexierte Zeichen übermittelt der Empfangseinheit 64 indexierte Zeichen, die aus jedem Zeichen in der Zeichenfolge generiert werden.
  • Die Automatenspeichereinheit 42 des Servers 20 speichert einen Automaten zum Ermitteln, ob die in den Client 30 eingegebene Zeichenfolge annehmbar ist. Die Automatenspeichereinheit 42 kann zum Beispiel eine Übergangstabelle beinhalten, die Zustandsübergänge, eine Gruppe eingebbarer Zeichen, eine Gruppe von Zuständen und den Anfangszustand und Endzustand darstellt.
  • Hier wird der Automat einem Zustandsübergang für jeden Index entsprechend der Übergangstabelle unterzogen. Mit anderen Worten, er wird jedes Mal, wenn von dem Kopf aus ein Zeichen in der Zeichenfolge bereitgestellt wird, einem Zustandsübergang unterzogen. Ein Übergang des Automaten von dem vorherigen Zustand zu einem nachfolgenden Zustand in Reaktion auf die Anwendung eines Zeichens wird als Zustandsübergang bezeichnet. Die Kombination des Zustands, des Zeichens und des nachfolgenden Zustands in einem Zustandsübergang wird als Zustandsübergangsbeziehung bezeichnet.
  • Die Schlüsselgenerierungseinheit 44 des Servers 20 generiert einen Schlüssel für jeden Index, der einer Vielzahl von Zuständen entspricht, die in dem Automaten enthalten sind. Die Schlüsselgenerierungseinheit 44 generiert außerdem einen Schlüssel, der jedem Zustand entspricht, der als Endzustand dient (der Endzustand, der aus dem Empfangen des Schlusszeichens in einer Zeichenfolge durch den Automaten resultiert). Ein Beispiel für einen Schlüssel, der durch die Schlüsselgenerierungseinheit 44 generiert wird, wird im Folgenden unter Bezugnahme auf 5 und sonstige Figuren erläutert.
  • Die Schlüsselketten-Generierungseinheit 46 des Servers 20 generiert eine Schlüsselkette, in der der Schlüssel für den nächsten Index entsprechend dem Endzustand des Übergangs auf der Grundlage des Zeichens aus dem aktuellen Zustand mithilfe des Schlüssels verschlüsselt wird, der dem Zustand für jede Kombination aus Indizes, Zeichen und Zustand entspricht. Die Schlüsselgenerierungseinheit 46 generiert eine Schlüsselkette, in der der Schlüssel, der dem Endzustand des Übergangs aus dem aktuellen Zustand entspricht, auf der Grundlage des Zeichens mithilfe des Schlüssels verschlüsselt wird, der dem aktuellen Zustand in dem Index entspricht, der dem Schlusszeichen der Zeichenfolge entspricht. Diese Schlüssel werden durch die Schlüsselgenerierungseinheit 44 generiert.
  • Darüber hinaus generiert die Schlüsselketten-Generierungseinheit 46 Endzustandsdaten, in denen ein Wert verschlüsselt wird, der ausdrückt, ob es sich bei dem Endzustand des Übergangs auf der Grundlage des Schlüssels, der dem Übergangsendzustand entspricht, um den Endzustand handelt, der im Voraus durch den Automaten bestimmt worden ist. Beispiele für Schlüsselkettensätze und Endzustandsdaten werden im Folgenden unter Bezugnahme auf 4, 7 und 8 erläutert.
  • Die Generierungseinheit 48 für indexierte Zustandsübergangswerte des Servers 20 generiert einen indexierten Zustandsübergangswert für jede Zustandsübergangsbeziehung. Hier handelt es sich bei einem indexierten Zustandsübergangswert um einen Wert, der eine Gruppierung von Zeichen und Indizes darstellt, die durch den Automaten für jeden Zustandsübergang annehmbar sind. Er wird zum Beispiel durch Zuweisen eines Wertes, der ein Zeichen darstellt, und eines Wertes, der einen Index darstellt, zu einer Einwegfunktion ermittelt. In dieser Situation handelt es sich bei der Einwegfunktion um dieselbe Einwegfunktion, die zum Generieren des indexierten Zeichens verwendet wird. Bei einem indexierten Zustandsübergangswert kann es sich auch um einen Wert handeln, der aus diesem Wert verschlüsselt oder der verdeckt wird, sodass das Zeichen und der Index schwierig zu erkennen sind. Ein Beispiel für einen indexierten Zustandsübergangswert wird im Folgenden unter Bezugnahme auf 9 und sonstige Figuren erläutert.
  • Die Syntheseeinheit 50 des Servers 20 ordnet einen indexierten Zustandsübergangswert, der durch die Generierungseinheit 48 für indexierte Zustandsübergangswerte generiert worden ist, für jeden Index jeder Schlüsselkette in einem Satz von Schlüsselketten zu, die durch die Schlüsselketten-Generierungseinheit 46 generiert worden sind. Die Syntheseeinheit 50 generiert einen Satz von Schlüsselketten, die einem indexierten Zustandsübergangswert zugehörig sind. Ein Beispiel für einen Satz von Schlüsselketten, die indexierten Zustandsübergangswerten zugehörig sind, wird im Folgenden unter Bezugnahme auf 10 und sonstige Figuren erläutert.
  • Die Bereitstellungseinheit 52 des Servers 20 tauscht Daten mit der Empfangseinheit 64 des Clients 30 aus. Darüber hinaus tauscht die Empfangseinheit 64 des Clients 30 Daten mit der Bereitstellungseinheit 52 des Servers 20 aus.
  • Genauer gesagt, die Bereitstellungseinheit 52 des Servers 20 tauscht Daten mit der Empfangseinheit 64 des Clients 30 aus und stellt dem Client 30 für jeden Index eine Schlüsselkette, die jedem eingegebenen Zeichen entspricht, aus einem Schlüsselkettensatz in einer Weise bereit, die das eingegebene Zeichen verdeckt. Mit anderen Worten, die Bereitstellungseinheit 52 stellt der Empfangseinheit 64 lediglich Schlüsselketten bereit, die Zeichenfolgen entsprechen, die durch die Eingabeeinheit 60 eingegeben worden sind. Sie stellt der Empfangseinheit 64 keine Schlüsselketten bereit, die Zeichenfolgen entsprechen, die nicht durch die Eingabeeinheit 60 eingegeben worden sind.
  • Darüber hinaus tauscht die Empfangseinheit 64 des Clients 30 Daten mit der Bereitstellungseinheit 52 des Servers 20 aus und empfängt von dem Server 20 für jeden Index eine Schlüsselkette, die einer eingegebenen Zeichenfolge entspricht, in einer Weise, die den Automaten verdeckt. Mit anderen Worten, die Empfangseinheit 64 empfängt von der Bereitstellungseinheit 52 lediglich Schlüsselketten, die Zeichenfolgen entsprechen, die durch die Eingabeeinheit 60 eingegeben worden sind. Sie empfängt von der Bereitstellungseinheit 52 keine Schlüsselketten, die Zeichenfolgen entsprechen, die nicht durch die Eingabeeinheit 60 eingegeben worden sind.
  • Hier übermitteln die Bereitstellungseinheit 52 und die Empfangseinheit 64 Schlüsselketten, die eingegebenen Zeichenfolgen entsprechen, mithilfe eines datenschutzgerechten Schnittmengenprotokolls, das Elemente der jeweiligen Sätze verdeckt und gleichzeitig das Vorhandensein von gemeinsam genutzten Elementen in den jeweiligen Sätzen erkennt. Auf diese Weise kann die Bereitstellungseinheit 52 der Empfangseinheit 64 Schlüsselketten bereitstellen, die eingegebenen Zeichen entsprechen, und gleichzeitig den Automaten gegenüber dem Client 30 verdecken. Darüber hinaus empfängt die Empfangseinheit 64 von der Bereitstellungseinheit 52 Schlüsselketten, die eingegebenen Zeichen entsprechen, und verdeckt gleichzeitig die eingegebene Zeichenfolge gegenüber dem Server 20.
  • Ein Beispiel für ein datenschutzgerechtes Schnittmengenprotokoll wird in der Nichtpatentliteratur 1 beschrieben. Außerdem wird ein Beispiel für eine Verarbeitung, die mithilfe eines datenschutzgerechten Schnittmengenprotokolls durchgeführt wird, im Folgenden unter Bezugnahme auf 11 und sonstige Figuren erläutert.
  • Die Bereitstellungseinheit 52 des Servers 20 stellt außerdem der Empfangseinheit 64 des Clients 30 einen Schlüssel, der dem Anfangszustand entspricht (das heißt, einen Schlüssel für den ersten Index, der dem Anfangszustand entspricht), und Endzustandsdaten bereit, die durch die Schlüsselketten-Generierungseinheit 46 generiert worden sind. Außerdem empfängt die Empfangseinheit 64 des Clients 30 von der Bereitstellungseinheit 52 des Servers 20 einen Schlüssel, der dem Anfangszustand entspricht, und Endzustandsdaten.
  • Die Entschlüsselungseinheit 66 ermittelt den Schlüssel, der dem nächsten Index entspricht, durch Entschlüsseln sämtlicher Schlüsselketten, die durch die Empfangseinheit 64 empfangen worden sind, mithilfe eines Schlüssels, der durch Durchführen einer Entschlüsselungsverarbeitung an dem vorherigen Index in der sequentiellen Reihenfolge der Indizes ermittelt worden ist. Die Entschlüsselungseinheit 66 führt eine Entschlüsselungsverarbeitung für den ersten Index mithilfe des Schlüssels für den Anfangszustand durch, der separat von dem Server 20 bezogen worden ist. Die Entschlüsselungseinheit 66 kann den Schlüssel, der dem Übergangsendzustand entspricht, durch Durchführen einer Entschlüsselungsverarbeitung entschlüsseln, die dem Schlussindex entspricht, der dem Schlusszeichen in der Zeichenfolge entspricht.
  • Nach dem Ermitteln des Schlüssels, der dem Endzustand entspricht, ermittelt die Entschlüsselungseinheit 66 die Endzustandsdaten mithilfe des entschlüsselten Schlüssels. Die Entschlüsselungseinheit 66 ermittelt, ob ein Übergang zu dem entsprechenden Endzustand stattgefunden hat, wenn die Ergebnisse der Entschlüsselung der Endzustandsdaten und der Wert, der den Endzustand darstellt, bezogen worden sind. Wenn der Wert, der den Endzustand darstellt, bezogen worden ist, gibt die Entschlüsselungseinheit 66 Daten aus, die angeben, dass die Zeichenfolge durch den Automaten angenommen worden ist. Wenn der Wert, der den Endzustand darstellt, nicht empfangen werden kann, gibt sie Daten aus, die angeben, dass die Zeichenfolge nicht durch den Automaten angenommen worden ist.
  • 3 stellt einen Ablaufplan einer Verarbeitung, die durch den Server 20 und den Client 30 durchgeführt wird, in der vorliegenden Ausführungsform dar.
  • Zuerst gibt der Client 30 in Schritt S11 eine Zeichenfolge ein. Der Client 30 kann eine Zeichenfolge mit einer vorgegebenen Anzahl von Zeichen eingeben oder kann eine Zeichenfolge mit variabler Länge eingeben. Wenn eine Zeichenfolge mit variabler Länge eingegeben wird, setzt der Client 30 den Server 20 über die Anzahl der eingegebenen Zeichen (das heißt, die Anzahl von Indizes) in Kenntnis.
  • Als Nächstes generiert der Client 30 in Schritt S12 ein indexiertes Zeichen, das eine Gruppe darstellt, die aus einem Index und einem eingegebenen Zeichen besteht, für jedes Zeichen in der eingegebenen Zeichenfolge. Bei einem indexierten Zeichen handelt es sich zum Beispiel um einen Wert, der durch Zuweisen eines Wertes, der einen Index darstellt, und eines Wertes, der ein eingegebenes Zeichen darstellt, zu einer Einwegfunktion ermittelt wird. Der Inhalt einer Einwegfunktion wird im Voraus durch den Server 20 und den Client 30 bestimmt.
  • Beispielsweise gibt der Client 30, wie im Folgenden in Gleichung 1 dargestellt, eine Zeichenfolge mit N Zeichen ein (wobei N eine Ganzzahl gleich oder größer als 2 ist).
  • Gleichung 1
    • X1 X2 X3 ... XN
  • In dieser Situation weist der Client 30 zum Beispiel einen Index eines Zeichens (das heißt, die Reihenfolge vom Kopf des Zeichens in der Zeichenfolge aus) und einen Wert, der das Zeichen darstellt, für jedes Zeichen in einer Zeichenfolge einer Einwegfunktion g() zu, wie im Folgenden in Gleichung 2 dargestellt. Auf diese Weise kann der Client 30 einen Wert berechnen, der eine Gruppe darstellt, die aus einem Index und einem eingegebenen Zeichen (einem indexierten Zeichen) besteht. Gleichung 2
    Figure DE112013000357B4_0002
  • Der Client 30 führt diesen Vorgang an sämtlichen Zeichen in der Zeichenfolge durch und generiert einen Satz indexierter Zeichen, wie im Folgenden durch Gleichung 3 angegeben. Als Nächstes speichert der Client 30 den Satz indexierter Zeichen im Speicher.
  • Gleichung 3
    • g(1, X1) g(2, X2) g(3, X3) ⋮ g(N, XN)
  • Unterdessen generiert der Server 20 in Schritt S13 eine Schlüsselkette, in der der Schlüssel für den nächsten Index entsprechend dem nächsten Zustand des Übergangs auf der Grundlage des Zeichens aus dem aktuellen Zustand mithilfe des Schlüssels verschlüsselt wird, der dem Zustand für jeden Index, jedes Zeichen und jeden Zustand entspricht. Außerdem wird eine Schlüsselkette, die einen verschlüsselten Schlüssel enthält, der dem nächsten Zustand des Übergangs entspricht, der durch das Zeichen verursacht wird, durch den Server 20 mithilfe eines Schlüssels generiert, der dem aktuellen Zustand in dem Index entspricht, der dem Schlusszeichen in der Zeichenfolge entspricht. Der Schlüsselketten-Generierungsprozess wird im Folgenden unter Bezugnahme auf den Ablaufplan in 4 ausführlich erläutert.
  • Als Nächstes generiert der Server 20 in Schritt S14 einen indexierten Zustandsübergangswert auf der Grundlage der Zustandsübergangsbeziehung. Ein Beispiel für einen indexierten Zustandsübergangswert ist ein Wert, der durch Zuweisen eines Wertes, der einen Index darstellt, und eines Wertes, der ein Zeichen darstellt, zu einer Einwegfunktion ermittelt wird, wie im Folgenden in Gleichung 4 dargestellt. Auf diese Weise kann der Server 20 einen Wert berechnen, der eine Gruppe darstellt, die aus einem Index und einem Zeichen (einem indexierten Zustandsübergangswert) besteht. Bei der Einwegfunktion zum Generieren des indexierten Zustandsübergangswerts handelt es sich um dieselbe Einwegfunktion, die durch den Client 30 zum Generieren eines indexierten Zeichens verwendet wird. Gleichung 4
    Figure DE112013000357B4_0003
  • In Schritt S14 generiert der Server 20 einen indexierten Zustandsübergangswert für jedes Zeichen, das durch den Automaten eingegeben werden kann, im Hinblick auf jeden Index, wie im Folgenden durch Gleichung 5 angegeben. In Gleichung 5 unten stellt σ die Anzahl der Zeichen dar, die durch den Automaten eingegeben werden können. Gleichung 5
    Figure DE112013000357B4_0004
  • Als Nächstes verknüpft der Server 20 in Schritt S15 den entsprechenden indexierten Zustandsübergangswert mit jeder der Vielzahl von generierten Schlüsselketten. Anschließend generiert der Server 20 einen Satz von Schlüsselketten mit zugehörigen indexierten Zustandsübergangswerten. Ein Beispiel für einen Satz von Schlüsselketten mit zugehörigen indexierten Zustandsübergangswerten wird im Folgenden unter Bezugnahme auf 10 und sonstige Figuren erläutert.
  • Als Nächstes übermitteln der Server 20 und der Client 30 in Schritt S16 eine Schlüsselkette, die einem eingegebenen Zeichen entspricht, mithilfe des datenschutzgerechten Schnittmengenprotokolls.
  • Genauer gesagt, der Client 30 überträgt übertragenen verschlüsselten Text an den Server 20, in dem ein Satz von indexierten Zeichen für jedes Zeichen in der eingegebenen Zeichenfolge verschlüsselt ist. Als Nächstes generiert der Server 20 einen verschlüsselten Antworttext mit verschlüsselten Werten, die zu jeder Schlüsselkette werden, die in dem Satz von Schlüsselketten enthalten ist, wenn der indexierte Zustandsübergangswert in dem Satz von indexierten Zeichen enthalten ist, der eine Gruppe von entsprechenden Indizes und entsprechenden Zeichen auf der Grundlage des übermittelten verschlüsselten Textes ausdrückt, und die nicht zu Schlüsselketten werden, wenn der indexierte Zustandsübergangswert nicht in dem Satz von indexierten Zeichen enthalten ist. Anschließend überträgt der Server den generierten verschlüsselten Antworttext an den Client 30.
  • Der Client 30 empfängt den verschlüsselten Antworttext von dem Server 20 und entschlüsselt den empfangenen verschlüsselten Antworttext. Auf diese Weise kann der Client 30 für jeden Index eine Schlüsselkette empfangen, die einem eingegebenen Zeichen entspricht.
  • Durch Durchführen dieser Verarbeitung kann der Server 20 dem Client 30 Schlüsselketten bereitstellen, die eingegebenen Zeichen entsprechen, und gleichzeitig den Automaten gegenüber dem Client 30 verdecken. Darüber hinaus kann der Client 30 von dem Server 20 Schlüsselketten empfangen, die eingegebenen Zeichen entsprechen, und gleichzeitig die eingegebene Zeichenfolge gegenüber dem Server 20 verdecken. Ein Beispiel für eine Verarbeitung, die mithilfe des datenschutzgerechten Schnittmengenprotokolls durchgeführt wird, wird weiter unten unter Bezugnahme auf den Ablaufplan in 11 erläutert.
  • Als Nächstes überträgt der Server 20 in Schritt S17 einen Schlüssel, der dem Anfangszustand entspricht (das heißt, einen Schlüssel für den ersten Index, der dem Anfangszustand entspricht), und Endzustandsdaten an den Client 30.
  • Als Nächstes verwendet der Client 30 in Schritt S18 die durch den Entschlüsselungsprozess ermittelten Schlüssel, die dem vorherigen Index entsprechen, in der sequentiellen Reihenfolge der Indizes, um den Entschlüsselungsprozess an jeder Schlüsselkette durchzuführen, die von dem Server 20 empfangen worden ist, und die Schlüssel, die dem nächsten Index entsprechen, zu entschlüsseln. In diesem Fall führt der Client 30 die Entschlüsselung, die dem ersten Index entspricht, mithilfe des Schlüssels für den Anfangszustand durch, der separat von dem Server 20 empfangen worden ist. Darüber hinaus kann der Client 30 bei der Verarbeitung, die dem Schlussindex entspricht, der dem Schlusszeichen in der Zeichenfolge entspricht, den Schlüssel entschlüsseln, der dem Endzustand des Übergangs entspricht, indem er jede der Schlüsselketten entschlüsselt, die durch die Empfangseinheit 64 empfangen worden sind.
  • Nach dem Ermitteln des Schlüssels, der dem Endzustand des Übergangs entspricht, bezieht der Client 30 die Endzustandsdaten mithilfe des entschlüsselten Schlüssels. Infolge des Beziehens der Endzustandsdaten stellt der Client 30 fest, dass ein Übergang zu dem entsprechenden Endzustand stattgefunden hat, wenn der Wert bezogen worden ist, der den Endzustand darstellt. Wenn der Wert, der den Endzustand darstellt, bezogen worden ist, gibt der Client 30 Daten aus, die angeben, dass die Zeichenfolge durch den Automaten angenommen worden ist. Wenn der Wert, der den Endzustand darstellt, nicht bezogen worden ist, werden Daten ausgegeben, die angeben, dass die Zeichenfolge nicht durch den Automaten angenommen worden ist.
  • Durch Durchführen dieser Verarbeitung können der Server 20 und der Client 30 mithilfe der Zeichenfolge, die in den Client 30 eingegeben worden ist, ermitteln, ob der Automat, der sich auf dem Server 20 befindet, den Übergang zu dem entsprechenden Endzustand vollzogen hat, und dabei die Zeichenfolge, die durch den Client 30 eingegeben worden ist, gegenüber dem Server 20 verdecken und dabei den Automaten, der sich auf dem Server 20 befindet, gegenüber dem Client 30 verdecken.
  • 4 stellt einen Ablaufplan des Prozesses zum Generieren eines Satzes von Schlüsselketten dar. 5 stellt ein Beispiel für Schlüssel für verschiedene Zustände dar, die für jeden Index generiert werden. 6 stellt ein Beispiel für eine Übergangstabelle für einen Automaten und Schlüsseltabellen zum Zuweisen eines Schlüssels zu dem nächsten Index in dem nachfolgenden Zustand dar, der jedem Zustand und jedem Zeichen für den ersten Index, den zweiten Index und den dritten Index entspricht.
  • Der Server 20 führt den Prozess von Schritt S31 bis Schritt S42 im Folgenden als Schlüsselkettensatz-Generierungsprozess in Schritt S13 von 3 durch.
  • Zuerst generiert der Server 20 in Schritt S31 für jeden Index einen Schlüssel, der jedem einer Vielzahl von Zuständen entspricht, die in dem Automaten enthalten sind. Der Server 20 generiert außerdem Schlüssel, die jedem Endzustand des Übergangs entsprechen.
  • In dieser Situation generiert der Server 20 Zufallszahlen mit verschiedenen Werten als Schlüssel. Wenn der Automat zum Beispiel drei Zustände aufweist (Zustand a, Zustand b, Zustand c) und drei Schlüssel in der Zeichenfolge enthalten sind, generiert der Server 20 Schlüssel, wie in 5 dargestellt.
  • Mit anderen Worten, wie in 5 dargestellt, generiert der Server 20 für den ersten Index ra0 als Schlüssel, der dem Zustand (a) entspricht, rb0 als Schlüssel, der dem Zustand (b) entspricht, und rc0 als Schlüssel, der dem Zustand (c) entspricht. Außerdem generiert der Server 20 für den zweiten Index ra1 als Schlüssel, der dem Zustand (a) entspricht, rb1 als Schlüssel, der dem Zustand (b) entspricht, und rc1 als Schlüssel, der dem Zustand (c) entspricht. Darüber hinaus generiert der Server 20 für den dritten Index ra2 als Schlüssel, der dem Zustand (a) entspricht, rb2 als Schlüssel, der dem Zustand (b) entspricht, und rc2 als Schlüssel, der dem Zustand (c) entspricht. Außerdem generiert der Server 20 für den Endzustand des Übergangs ra3 als Schlüssel, der dem Zustand (a) entspricht, rb3 als Schlüssel, der dem Zustand (b) entspricht, und rc3 als Schlüssel, der dem Zustand (c) entspricht.
  • Als Nächstes wiederholt der Server 20 in dem Schleifenprozess von Schritt S32 bis Schritt S41 den Prozess von Schritt S33 bis Schritt S40 für jeden Index. Außerdem wiederholt der Server 20 in dem Schleifenprozess von Schritt S33 bis Schritt S40 den Prozess von Schritt S34 bis Schritt S39 für jedes Zeichen. Außerdem wiederholt der Server 20 in dem Schleifenprozess von Schritt S34 bis Schritt S39 den Prozess von Schritt S35 bis Schritt S38 für jeden Zustand.
  • Mit anderen Worten, der Server 20 führt den Prozess von Schritt S35 bis Schritt S38 für jeden Index, jedes Zeichen und jeden Zustand wiederholt aus.
  • In Schritt S35 liest der Server 20 den Schlüssel, der einem Index und einem Zustand entspricht, die die Objekte der Ausführung sind, aus den Schlüsseln, die in Schritt S31 generiert worden sind.
  • Als Nächstes liest der Server 20 in Schritt S36 die Übergangstabelle des Automaten und identifiziert den nachfolgenden Zustand des Übergangs in Reaktion auf die Eingabe des zu verarbeitenden Zeichens in dem zu verarbeitenden Zustand.
  • Beispielsweise ist in dem in 6 dargestellten Beispiel für eine Übergangstabelle der nachfolgende Zustand „a”, wenn das Zeichen „0” in dem Zustand (a) eingegeben wird, und der nachfolgende Zustand ist „b”, wenn das Zeichen „1” in dem Zustand (a) eingegeben wird. Außerdem ist der nachfolgende Zustand „a”, wenn das Zeichen „0” in dem Zustand (b) eingegeben wird, und der nachfolgende Zustand ist „c”, wenn das Zeichen „1” in dem Zustand (b) eingegeben wird. Außerdem ist der nachfolgende Zustand „c”, wenn das Zeichen „0” in dem Zustand (c) eingegeben wird, und der nachfolgende Zustand ist „c”, wenn das Zeichen „1” in dem Zustand (c) eingegeben wird.
  • Als Nächstes liest der Server 20 in Schritt S37 den Schlüssel, der dem nachfolgenden Zustand entspricht, der in Schritt S36 identifiziert worden ist, aus den Schlüsseln, die in Schritt S31 generiert worden sind, für den nächsten zu verarbeitenden Index.
  • Beispielsweise liest der Server 20 den Schlüssel für den ersten Index, wie in der Schlüsseltabelle in 6(A) dargestellt. Mit anderen Worten, der Server 20 liest den Schlüssel „ra1”, wenn das Zeichen „0” in dem Zustand (a) eingegeben wird, den Schlüssel „rb1”, wenn das Zeichen „1” in dem Zustand (a) eingegeben wird, den Schlüssel „ra1”, wenn das Zeichen „0” in dem Zustand (b) eingegeben wird, den Schlüssel „rc1”, wenn das Zeichen „1” in dem Zustand (b) eingegeben wird, den Schlüssel „rc1”, wenn das Zeichen „0” in dem Zustand (c) eingegeben wird, und den Schlüssel „rc1”, wenn das Zeichen „1” in dem Zustand (c) eingegeben wird.
  • Außerdem liest der Server 20 zum Beispiel den Schlüssel für den zweiten Index, wie in der Schlüsseltabelle in 6(B) dargestellt. Mit anderen Worten, der Server 20 liest den Schlüssel „ra2”, wenn das Zeichen „0” in dem Zustand (a) eingegeben wird, den Schlüssel „rb2”, wenn das Zeichen „1” in dem Zustand (a) eingegeben wird, den Schlüssel „ra2”, wenn das Zeichen „0” in dem Zustand (b) eingegeben wird, den Schlüssel „rc2”, wenn das Zeichen „1” in dem Zustand (b) eingegeben wird, den Schlüssel „rc2”, wenn das Zeichen „0” in dem Zustand (c) eingegeben wird, und den Schlüssel „rc2”, wenn das Zeichen „1” in dem Zustand (c) eingegeben wird.
  • Außerdem liest der Server 20 zum Beispiel den Schlüssel für den dritten Index, wie in der Schlüsseltabelle in 6(C) dargestellt. Mit anderen Worten, der Server 20 liest den Schlüssel „ra3”, wenn das Zeichen „0” in dem Zustand (c) eingegeben wird, den Schlüssel „rb3”, wenn das Zeichen „1” in dem Zustand (a) eingegeben wird, den Schlüssel „ra3”, wenn das Zeichen „0” in dem Zustand (b) eingegeben wird, den Schlüssel „rc3”, wenn das Zeichen „1” in dem Zustand (b) eingegeben wird, den Schlüssel „rc3”, wenn das Zeichen „0” in dem Zustand (c) eingegeben wird, und den Schlüssel „rc3”, wenn das Zeichen „1” in dem Zustand (c) eingegeben wird.
  • Als Nächstes generiert der Server 20 in Schritt S38 eine Schlüsseländerung, in der der Schlüssel für den nächsten Index, der dem nächsten Zustand entspricht, der in Schritt 37 gelesen worden ist, mithilfe des Schlüssels des Indexes verschlüsselt wird, der dem Zustand entspricht, der in Schritt S35 gelesen worden ist. Das Verschlüsselungsschema für die Schlüsselkette kann zum Beispiel ein Diffie-Hellman-Verschlüsselungsschema sein, bei dem es sich um ein Geheimschlüssel-Verschlüsselungsschema mit einem Nachrichtenauthentifizierungscode (message authentication code, MAC) handelt.
  • Wenn der Prozess von Schritt S35 bis Schritt S38 durch den Server 20 für alle Indizes, alle Zeichen und alle Zustände ausgeführt worden ist und die Schlüsselkettengenerierung beendet ist, geht der Prozess zu Schritt S42 über.
  • Als Nächstes generiert der Server 20 in Schritt S42 Endzustandsdaten, in denen ein Wert, der angibt, ob es sich bei dem Endzustand des Übergangs um den Endzustand handelt, der durch den Automaten bestimmt worden ist, mithilfe des Schlüssels verschlüsselt ist, der dem Endzustand des Übergangs entspricht. Wenn der Server 20 den Prozess in Schritt S42 abgeschlossen hat, wird der Ablauf verlassen, und der Prozess wird beendet.
  • 7 stellt ein Beispiel für einen Satz von Schlüsselketten dar, die für jede Kombination aus Indizes, Zeichen und Zustände generiert werden. Der Server 20 kann einen Satz von Schlüsselketten als Ergebnis des Ausführens des Prozesses von Schritt S31 bis Schritt S41 in 4 generieren.
  • Wenn zum Beispiel eine Übergangstabelle und Schlüssel für den Automaten, wie in 6 dargestellt, generiert worden sind, kann der Server 20 einen Satz von Schlüsselketten generieren, die jeder Kombination von Index, Zeichen und Zustand entsprechen, wie in 7 dargestellt.
  • Enc(x, y) stellt das Verschlüsseln der Daten y durch den Schlüssel x mithilfe eines Verschlüsselungsschemas auf der Grundlage eines gemeinsamen Schlüssels dar. Bei einem Verschlüsselungsschema auf der Grundlage eines gemeinsamen Schlüssels handelt es sich um ein Verschlüsselungsschema, das denselben Schlüssel für die Verschlüsselung und die Entschlüsselung verwendet. Zu Beispielen zählen der Data Encryption Standard (DES) und der Advanced Encryption Standard (AES).
  • 8 stellt ein Beispiel für Endzustandsdaten dar. Der Server 20 kann Endzustandsdaten als Ergebnis des Ausführens des Prozesses in Schritt S42 in 4 generieren. Wenn zum Beispiel eine Übergangstabelle und Schlüssel für den Automaten generiert worden sind, wie in 6 dargestellt, und es sich bei dem entsprechenden Endzustand, der durch den Automaten bestimmt worden ist, um „a” handelt, kann der Server 20 Endzustandsdaten generieren, wie in 8 dargestellt.
  • Mit anderen Worten, der Server 20 generiert Endzustandsdaten, in denen ein Wert (im vorliegenden Beispiel „1”), der den entsprechenden Übergangsendzustand angibt, mithilfe des Schlüssels „ra3” verschlüsselt wird, der dem Endzustand des Übergangs „a” entspricht. Außerdem werden Endzustandsdaten generiert, in denen ein Wert (im vorliegenden Beispiel „0”), der einen ungeeigneten Übergangsendzustand angibt, mithilfe des Schlüssels „rb3” verschlüsselt wird, der dem Endzustand des Übergangs „b” entspricht. Außerdem werden Endzustandsdaten generiert, in denen ein Wert (im vorliegenden Beispiel „0”), der einen ungeeigneten Übergangsendzustand angibt, mithilfe des Schlüssels „rc3” verschlüsselt wird, der dem Endzustand des Übergangs „c” entspricht.
  • 9 stellt ein Beispiel für indexierte Zustandsübergangswerte vom ersten Index bis zum dritten Index dar, wenn ein Binärzeichen „0” oder „1” eingegeben wird. Der Server 20 kann indexierte Zustandsübergangswerte als Ergebnis des Ausführens des Prozesses in Schritt S14 in 3 generieren.
  • Wenn der Automat zum Beispiel Binärzeichen mit „0” oder „1” annimmt und die Anzahl der Zeichen, die in der Zeichenfolge vorhanden sind, drei beträgt, generiert der Server 20 indexierte Zustandsübergangswerte, wie in 9 dargestellt. Mit anderen Worten, der Server 20 generiert einen indexierten Zustandsübergangswert für jeden des ersten bis dritten Indexes und für jedes annehmbare Zeichen „0” und „1”.
  • 10 stellt ein Beispiel für Sätze von Schlüsselketten dar, die indexierten Zustandsübergangswerten zugehörig sind. Der Server 20 kann infolge des Ausführens des Prozesses in Schritt S15 von 3 indexierte Zustandsübergangswerte mit jeder einer Vielzahl von Schlüsselketten verknüpfen, die für jeden Index, jedes Zeichen und jeden Zustand generiert worden sind.
  • Wie in 10 dargestellt, verknüpft der Server 20 zum Beispiel einen indexierten Zustandsübergangswert f(1, 0), der eine Gruppe darstellt, die den ersten Index und das Zeichen „0” enthält, mit jeder Schlüsselkette, die dem Zeichen „0” in dem ersten Index entspricht. Außerdem verknüpft der Server 20 einen indexierten Zustandsübergangswert f(1, 1), der eine Gruppe darstellt, die den ersten Index und das Zeichen „1” enthält, mit jeder Schlüsselkette, die dem Zeichen „1” in dem ersten Index entspricht.
  • Darüber hinaus verknüpft der Server 20 zum Beispiel, wie in 10 dargestellt, einen indexierten Zustandsübergangswert f(2, 0), der eine Gruppe darstellt, die den zweiten Index und das Zeichen „0” enthält, mit jeder Schlüsselkette, die dem Zeichen „0” in dem zweiten Index entspricht. Außerdem verknüpft der Server 20 einen indexierten Zustandsübergangswert f(2, 1), der eine Gruppe darstellt, die den zweiten Index und das Zeichen „1” enthält, mit jeder Schlüsselkette, die dem Zeichen „1” in dem zweiten Index entspricht.
  • Darüber hinaus verknüpft der Server 20 zum Beispiel, wie in 10 dargestellt, einen indexierten Zustandsübergangswert f(3, 0), der eine Gruppe darstellt, die den dritten Index und das Zeichen „0” enthält, mit jeder Schlüsselkette, die dem Zeichen „0” in dem dritten Index entspricht. Außerdem verknüpft der Server 20 einen indexierten Zustandsübergangswert f(3, 1), der eine Gruppe darstellt, die den dritten Index und das Zeichen „1” enthält, mit jeder Schlüsselkette, die dem Zeichen „1” in dem dritten Index entspricht.
  • 11 stellt ein Beispiel für den Datenübertragungsprozess dar, der mithilfe des datenschutzgerechten Schnittmengenprotokolls in dem Authentifizierungssystem 10 der vorliegenden Ausführungsform durchgeführt wird. Der Server 20 und der Client 30 verwenden das im Folgenden von Schritt S51 bis Schritt S58 dargestellte datenschutzgerechte Schnittmengenprotokoll, um Schlüsselketten von dem Server 20 an den Client 30 zu senden, die den Zeichen entsprechen, die für jeden Index aus den Sätzen von generierten Schlüsselketten eingegeben worden sind.
  • Zuerst bezieht der Client 30 in Schritt S51 Sätze von indexierten Zeichen. In dem vorliegenden Beispiel bezieht der Client 30 N Sätze von indexierten Zeichen g1 bis gN, die dem ersten bis N-ten Zeichen X1 bis XN entsprechen, wie im Folgenden in Gleichung 6 dargestellt.
  • Gleichung 6
    • g(1, X1) = g1 g(2, X2) = g2 g(3, X3) = g3 ⋮ g(N, XN) = gN
  • Als Nächstes generiert der Client 30 in Schritt S52 ein Polynom P(x). Das Polynom P(x) ist eine Funktion, die gleich null wird, wenn ein beliebiges indexiertes Zeichen, das in dem Satz von indexierten Zeichen g1 bis gN enthalten ist, einer Variable x zugewiesen wird, und die ungleich null wird, wenn ein anderer Wert als eines dieser indexierten Zeichen zugewiesen wird. Mit anderen Worten, der Client 30 generiert das Polynom P(x), das ein beliebiges indexiertes Zeichen verwendet, das in dem Satz von indexierten Zeichen g1 bis gN enthalten ist, um die Variable x zu lösen.
  • Gleichung 7
    • P(x) = (x – g1)(x – g2)(x – g3) ... (x – gN) = lN·xN + lN-1·xN-1 + ... + l1x + l0
  • Als Nächstes generiert der Client 30, wie im Folgenden in Gleichung 8 dargestellt, in Schritt S53 eine Vielzahl von verschlüsselten Texten, in denen alle Koeffizienten in dem Polynom P(x) lN, lN – 1, ..., l0 und jede der vorgegebenen Konstanten (zum Beispiel „1”) mithilfe eines Verschlüsselungsschemas mit Homomorphismus (zum Beispiel additivem Homomorphismus) verschlüsselt werden. Beispielsweise verschlüsselt der Client 30 jeden Koeffizienten und die vorgegebenen Konstanten mithilfe erweiterter ElGamal-Verschlüsselung. E(m) stellt verschlüsselten Text dar, in dem unverschlüsselter Text m mithilfe eines Verschlüsselungsschemas mit additivem Homomorphismus verschlüsselt wird.
  • Gleichung 8
    • E(lN) E(lN-1) ⋮ E(l1) E(l0) E(l)
  • Hier hat der mithilfe eines Verschlüsselungsschemas mit additivem Homomorphismus verschlüsselte Text die im Folgenden in Gleichung 9 dargestellten Eigenschaften. In dieser Gleichung stellen m1, m2 und m unverschlüsselten Text dar.
  • Gleichung 9
    • E(m1) + E(m2) = E(m1 + m2) k·E(m) = E(k·m)
  • Wenn zwei verschlüsselte Texte E(m1), E(m2) in einem Verschlüsselungsschema mit additivem Homomorphismus bereitgestellt werden, ist das Ergebnis eines Addierens der verschlüsselten Texte (E(m1) + E(m2)) dasselbe wie bei verschlüsseltem Text, der verschlüsselt wird, nachdem der unverschlüsselte Text addiert worden ist (E(m1 + m2)). Darüber hinaus ist das Ergebnis eines k-maligen Addierens des verschlüsselten Textes (k·E(m)) dasselbe wie bei verschlüsseltem Text, der verschlüsselt wird, nachdem unverschlüsselter Text mit einem vorgegebenen Zahlenwert k (E(k·m)) multipliziert worden ist. Hier unterscheidet sich das Addieren von verschlüsseltem Text und das Addieren von unverschlüsseltem Text, der Einfachheit halber werden sie jedoch mithilfe desselben Operationszeichens „+” beschrieben.
  • Als Nächstes überträgt der Client 30 in Schritt S54 die Vielzahl von generierten, übertragenen, verschlüsselten Texten an den Server 20. In dieser Situation überträgt der Client 30 jeden übertragenen, verschlüsselten Text, sodass der Server 20 erkennen kann, dass sie einem der Koeffizienten entsprechen.
  • Unterdessen bezieht der Server 20 in Schritt S55 einen Satz von Schlüsselketten, die indexierten Zustandsübergangswerten zugehörig sind. In dem vorliegenden Beispiel bezieht der Server 20 einen Satz von Schlüsselketten, die indexierten Zustandsübergangswerten zugehörig sind, für jeden Index, wie im Folgenden in Gleichung 10 dargestellt. Hier stellt j den Wert eines Indexes dar. Gleichung 10
    Figure DE112013000357B4_0005
  • Als Nächstes generiert der Server 20 in Schritt S56 verschlüsselten Antworttext für jede der Schlüsselketten, die in dem Satz von Schlüsselketten enthalten sind (das heißt, für jeden Index, jedes Zeichen und jeden Zustand) auf der Grundlage der Vielzahl von übertragenen, verschlüsselten Texten, die von dem Client 30 übertragen worden sind. Genauer gesagt, der Server 20 generiert verschlüsselten Text, in dem Werte (zum Beispiel Zufallszahlen) für jede Schlüsselkette verschlüsselt werden, die in dem Satz von Schlüsselketten enthalten ist, die zu einer Schlüsselkette werden, wenn der entsprechende indexierte Zustandsübergangswert in dem Satz von indexierten Zeichen enthalten ist, und die nicht zu einer Schlüsselkette werden, wenn der entsprechende Zustandsübergangswert nicht in dem Satz von indexierten Zeichen enthalten ist, auf der Grundlage des übertragenen, verschlüsselten Textes.
  • Mit anderen Worten, der Server 20 generiert den im Folgenden in Gleichung 11 dargestellten verschlüsselten Antworttext mithilfe der Eigenschaften von quasi-isomorphem verschlüsselten Text, wenn der indexierte Zustandsübergangswert, der dem j-ten Index und dem Zeichen xσ entspricht, gleich f ist und die Schlüsselkette gleich S ist. Hier handelt es sich bei dem in Gleichung 11 dargestellten verschlüsselten Antworttext um den verschlüsselten Text E, in dem ein Wert, der durch Multiplizieren eines Wertes P(f), der das Ergebnis des Zuweisens eines indexierten Zustandsübergangswertes f zu einer Variable x in einem Polynom P(x) darstellt, mit einer Zufallszahl (r) ermittelt wird, und ein Wert, der durch Addieren der Schlüsselkette S ermittelt wird, mithilfe eines Verschlüsselungsschemas mit additivem Homomorphismus verschlüsselt werden.
  • Gleichung 11
    • Verschlüsselter Antworttext = E (r·P(f) + S)
  • Da P(f) = lN·fN + lN – 1·fN – 1 + ... + l0·f0 und die Funktion E() in dem verschlüsselten Antworttext quasi-isomorph sind, können sie in P(f) = r·{E(lN)·fN + E(lN – 1)·fN-1 + ... + E(l0)·f0 + E(S)} umgerechnet werden. Mit anderen Worten, der Server 20 berechnet Werte (fN, fN-1, ..., f1, f0), die durch Multiplizieren des indexierten Zustandsübergangswerts f mit der Potenz jeder der Zahlen für die Variable x in dem Polynom P(x) ermittelt werden. Als Nächstes berechnet der Server 20 Werte, in denen zu jedem der übertragenen verschlüsselten Texte (E(lN), E(lN – 1) ..., E(l1), E(l0)), in denen jeder Koeffizient des Polynoms mithilfe eines Verschlüsselungsschemas mit additivem Homomorphismus verschlüsselt worden ist, die Zahl der indexierten Zustandsübergangswerte (fN, fN-1, ..., f1, f0) addiert wird, multipliziert mit der Potenz der entsprechenden Zahl (in dem verschlüsselten Text), und diese werden addiert und kombiniert. Nach dem r-maligen Addieren der addierten und kombinierten Werte (in dem verschlüsselten Text) wird der verschlüsselte Text E(S), in dem die Schlüsselkette S mithilfe des Verschlüsselungsschemas E verschlüsselt worden ist, (in dem verschlüsselten Text) addiert. Auf diese Weise kann der Server 20 den oben in Gleichung 11 dargestellten verschlüsselten Antworttext generieren.
  • Der Server 20 generiert diese Art von verschlüsseltem Text für jede der Vielzahl von Schlüsselketten, die in dem Satz von Schlüsselketten enthalten sind. Wenn zum Beispiel verschlüsselter Antworttext für einen Satz von Schlüsselketten generiert wird, die den in Gleichung 10 dargestellten indexierten Zustandsübergangswerten zugehörig sind, werden drei verschlüsselte Antworttexte, die dem Zeichen „0” entsprechen, und drei verschlüsselte Antworttexte, die dem Zeichen „1” entsprechen, für jeden Index generiert, wie im Folgenden in Gleichung 12 dargestellt. Gleichung 12
    Figure DE112013000357B4_0006
  • Als Nächstes überträgt der Server 20 in Schritt S57 jeden der generierten verschlüsselten Texte an den Client 30.
  • Unterdessen entschlüsselt der Client 30 in Schritt S58 jeden der Vielzahl von verschlüsselten Antworttexten mithilfe eines Entschlüsselungsschlüssels, der dem in Schritt S53 verwendeten Verschlüsselungsschlüssel entspricht.
  • Hier sind die Lösung des Polynoms P(x) die indexierten Zeichen g1, g2, g3, ..., gN. Wenn der indexierte Zustandsübergangswert f, der dem Polynom P(x) zugewiesen ist, mit einem beliebigen der indexierten Zeichen g1, g2, g3, ... gN übereinstimmt, ist das Operationsergebnis des Polynoms P(x) daher gleich null. Folglich handelt es sich in diesem Fall bei dem Entschlüsselungsergebnis, das aus der Entschlüsselung des verschlüsselten Antworttextes ermittelt worden ist, um eine Schlüsselkette S.
  • Wenn der indexierte Zustandsübergangswert f, der dem Polynom P(x) zugewiesen ist, nicht mit einem beliebigen der indexierten Zeichen g1, g2, g3, ..., gN übereinstimmt, ist das Operationsergebnis des Polynoms P(x) demgegenüber ungleich null (zum Beispiel eine Zufallszahl). Folglich handelt es sich in diesem Fall bei dem Entschlüsselungsergebnis, das aus der Entschlüsselung des verschlüsselten Antworttextes ermittelt wurde, nicht um eine Schlüsselkette S. Auf diese Weise kann der Client 30 für jeden Index durch Entschlüsseln jedes einer Vielzahl von verschlüsselten Antworttexten eine Schlüsselkette beziehen, die einem eingegebenen Zeichen entspricht.
  • Auf diese Weise können der Server 20 und der Client 30 ein verdecktes Schnittmengen-Datenübertragungsprotokoll ausführen, um Schlüsselketten, die eingegebenen Zeichen entsprechen, für jeden Index von dem Server 20 zu dem Client 30 zu übermitteln und gleichzeitig die Zeichenfolge gegenüber dem Server 20 zu verdecken und die Schlüsselketten, die anderen Zeichen als den eingegebenen Zeichen entsprechen, gegenüber dem Client 30 zu verdecken.
  • 12 stellt ein Beispiel für eine Vielzahl von verschlüsselten Antworttexten, die von dem Client 30 empfangen werden, und für eine Vielzahl von Schlüsselketten, die durch ein Entschlüsseln der Vielzahl von verschlüsselten Antworttexten ermittelt werden, in der vorliegenden Ausführungsform dar. In dem vorliegenden Beispiel empfängt der Client 30 eine Vielzahl von verschlüsselten Texten wie zum Beispiel die in 12 dargestellten von dem Server 20.
  • Wenn es sich bei der eingegebenen Zeichenfolge um „010” handelt, entschlüsselt der Client 30 eine Vielzahl von verschlüsselten Antworttexten, die dem Zeichen „0” in dem ersten Index entsprechen, eine Vielzahl von verschlüsselten Antworttexten, die dem Zeichen „1” in dem zweiten Index entsprechen, und eine Vielzahl von verschlüsselten Antworttexten, die dem Zeichen „0” in dem dritten Index entsprechen. Dadurch können die entsprechenden Schlüsselketten bezogen werden. Dagegen bezieht der Client 30 unbekannte Werte (X) infolge eines Entschlüsselns sonstiger verschlüsselter Antworttexte.
  • Dadurch, dass er jeden einer Vielzahl von verschlüsselten Antworttexten entschlüsselt, unterscheidet der Client 30 nicht zwischen Schlüsselketten und unbekannten Werten. Diese werden zum Beispiel im Speicher gespeichert.
  • 13 stellt einen Ablaufplan des sequentiellen Entschlüsselungsprozesses für eine Vielzahl von Schlüsselketten in dem Client 30 dar. Der Client 30 entschlüsselt nacheinander die Schlüsselketten in Schritt S18, der in 3 dargestellt wird, und führt den Prozess im Folgenden von Schritt S61 bis zu Schritt 65 aus.
  • Zuerst führt der Client 30 den Prozess in Schritt S62 in der Reihenfolge der Indizes aus (den Schleifenprozess zwischen Schritt S61 und Schritt S63).
  • Genauer gesagt, entschlüsselt der Client 30 in Schritt S62 den Schlüssel, der dem nächsten Index entspricht, durch Entschlüsseln jeder der Schlüsselketten, die durch die Empfangseinheit 64 empfangen worden sind, mithilfe des Schlüssels, der für den vorherigen Index entschlüsselt worden ist. Hier kann der Client 30 den Entschlüsselungsprozess für sämtliche Indizes an allen Entschlüsselungsergebnissen der Vielzahl von verschlüsselten Texten ausführen, die durch die Empfangseinheit 64 empfangen worden sind. Mit anderen Worten, der Client 30 ermittelt sämtliche Entschlüsselungsergebnisse, ohne zwischen Schlüsselketten und unbekannten Werten zu unterscheiden.
  • Außerdem ermittelt der Client 30 in Schritt S62 die Schlüssel, die dem zweiten Index entsprechen, durch Entschlüsseln sämtlicher Schlüsselketten, die durch die Empfangseinheit 64 empfangen worden sind, mithilfe des Schlüssels für den Anfangszustand in der Entschlüsselung, die dem ersten Index entspricht. Außerdem kann der Client 30 in Schritt S62 die Schlüssel entschlüsseln, die dem Endzustand des Übergangs entsprechen, indem er sämtliche der Schlüsselketten, die durch die Empfangseinheit 64 empfangen worden sind, in einer Entschlüsselungsverarbeitung entschlüsselt, die dem Schlussindex entspricht, der dem Schlusszeichen in der Zeichenfolge entspricht.
  • Durch Durchführen dieser Entschlüsselungsverarbeitung kann der Client 30 jedes Mal, wenn der Entschlüsselungsprozess durchgeführt wird, der jedem Index entspricht, einen Schlüssel, der dem Übergangsendzustand des nächsten Indexes entspricht, aus einer beliebigen Schlüsselkette aus sämtlichen Schlüsselketten entschlüsseln, die durch die Empfangseinheit 64 empfangen worden sind. Außerdem kann der Client 30 in dem Entschlüsselungsprozess, der dem nächsten Index entspricht, mithilfe eines Schlüssels, der dem nächsten Index entspricht, einen Schlüssel entschlüsseln, der dem Übergangszustand des nächsten Indexes entspricht. Anschließend kann der Client 30 einen Schlüssel, der dem Endzustand des Übergangs entspricht, durch Ausführen des Entschlüsselungsprozesses entschlüsseln, der dem Schlussindex der Zeichenfolge entspricht.
  • Als Nächstes bezieht der Client 30 in Schritt S64 die Endzustandsdaten mithilfe eines Schlüssels, der dem Endzustand des Übergangs entspricht, der durch Ausführen des Entschlüsselungsprozesses ermittelt worden ist, der dem Schlussindex entspricht. Infolge des Beziehens der Endzustandsdaten kann der Client 30 entweder einen Wert, der den Endzustand angibt, oder einen Wert ermitteln, der den Endzustand nicht angibt.
  • Als Nächstes ermittelt der Client 30 in Schritt S65 aus den Ergebnissen des Prozesses in Schritt S64, ob ein Wert entschlüsselt worden ist, der den Endzustand angibt. Wenn ein Wert entschlüsselt worden ist, der den Endzustand angibt, gibt der Client 30 aus, dass die Zeichenfolge durch den Automaten angenommen worden ist, und der Prozess in dem Ablaufplan wird beendet. Wenn ein Wert entschlüsselt worden ist, der den Endzustand nicht angibt, gibt der Client 30 aus, dass die Zeichenfolge nicht durch den Automaten angenommen worden ist, und der Prozess in dem Ablaufplan wird beendet.
  • 14 stellt ein Beispiel für einen Schlüssel dar, der mithilfe des sequentiellen Entschlüsselungsprozesses für eine Vielzahl von Schlüsselketten in dem Client 30 entschlüsselt wird. Im vorliegenden Beispiel kann der Client, wenn es sich bei der eingegebenen Zeichenfolge um „010” handelt, zum Beispiel, wie in 14 dargestellt, den Schlüssel für den Übergangszustand des nächsten Indexes aus den Ergebnissen des Entschlüsselns sämtlicher einer Vielzahl von verschlüsselten Antworttexten beziehen, indem er die Entschlüsselungsverarbeitung in sequentieller Reihenfolge an den Schlüsselketten durchführt, die jedem Index entsprechen (den Ergebnissen, die eine Schlüsselkette oder einen unbekannten Wert beinhalten).
  • Mit anderen Worten, der Client 30 entschlüsselt jedes der Entschlüsselungsergebnisse der Vielzahl von verschlüsselten Antworttexten mithilfe des Schlüssels ra0 des Anfangszustands in dem Entschlüsselungsprozess, der dem ersten Index entspricht (dem Anfangsindex). (Hier beinhalten die Ergebnisse Schlüsselketten und unbekannte Werte.) Auf diese Weise kann der Client 30 den Schlüssel ra1, der dem zweiten Index entspricht, aus einem verschlüsselten Antworttext Enc(ra0, ra1), der dem Automatenzustand (Zustand a) in dem zweiten Index entspricht, aus den Entschlüsselungsergebnissen der Vielzahl von verschlüsselten Antworttexten beziehen.
  • Als Nächstes entschlüsselt der Client 30 jedes der Entschlüsselungsergebnisse der Vielzahl von verschlüsselten Antworttexten mithilfe des Schlüssels ra1, der während des Entschlüsselungsprozesses, der dem vorherigen Index entspricht, entschlüsselt worden ist, in dem Entschlüsselungsprozess, der dem zweiten Index entspricht. Auf diese Weise kann der Client 30 den Schlüssel ra2, der dem dritten Index entspricht, aus einem verschlüsselten Antworttext Enc(ra1, rb2), der dem Automatenzustand (Zustand b) in dem dritten Index entspricht, aus den Entschlüsselungsergebnissen der Vielzahl von verschlüsselten Antworttexten beziehen.
  • Als Nächstes entschlüsselt der Client 30 jedes der Entschlüsselungsergebnisse der Vielzahl von verschlüsselten Antworttexten mithilfe des Schlüssels rb2, der während des Entschlüsselungsprozesses, der dem vorherigen Index entspricht, entschlüsselt worden ist, in dem Entschlüsselungsprozess, der dem dritten Index entspricht. Auf diese Weise kann der Client 30 den Schlüssel ra3, der dem Endzustand des Übergangs entspricht, aus einem verschlüsselten Antworttext Enc(rb2, ra3), der dem Automatenzustand (Zustand a) des Endzustands des Übergangs entspricht, aus den Entschlüsselungsergebnissen der Vielzahl von verschlüsselten Antworttexten beziehen.
  • Nach dem Durchführen des Entschlüsselungsprozesses, der dem dritten Index (dem Schlussindex) entspricht, entschlüsselt der Client 30 die Endzustandsdaten End(ra3, 1) mithilfe des Schlüssels ra3, der dem Endzustand des Übergangs entspricht. Auf diese Weise kann der Client 30 einen Wert, der den entsprechenden Endzustand (zum Beispiel „1”) angibt, aus den Endzustandsdaten Enc(ra3, 1) beziehen.
  • 15 stellt die Konfiguration des Authentifizierungssystems 10 in einer Variante dar. Das Authentifizierungssystem 10 in dieser Variante weist im Wesentlichen identische Konfigurationselemente und Funktionen wie das Authentifizierungssystem 10 in der oben unter Bezugnahme auf 1 bis 14 erläuterten Ausführungsform auf. Daher ist in der Variante die Erläuterung der Konfigurationselemente und Funktionen weggelassen worden, die im Wesentlichen mit denjenigen in dem oben unter Bezugnahme auf 1 bis 14 erläuterten Authentifizierungssystem 10 identisch sind. Lediglich die Unterschiede werden erläutert.
  • Der Server 20 weist eine Automatenspeichereinheit 42, eine Schlüsselgenerierungseinheit 44, eine Schlüsselketten-Generierungseinheit 46 und eine Bereitstellungseinheit 52 auf. Der Client 30 weist eine Eingabeeinheit 60, eine Empfangseinheit 64 und eine Entschlüsselungseinheit 66 auf.
  • Die Bereitstellungseinheit 52 des Servers 20 tauscht Daten mit dem Client 30 aus und überträgt aus den Sätzen von Schlüsselketten für jeden Index mithilfe von nicht wahrnehmbaren Übertragungen Teilsätze, die den Zeichen entsprechen, die durch den Client 30 eingegeben worden sind, selektiv an den Client 30. Darüber hinaus tauscht die Empfangseinheit 64 des Clients 30 Daten mit der Bereitstellungseinheit 52 des Servers 20 aus und empfängt von dem Server 20 mithilfe von nicht wahrnehmbaren Übertragungen selektiv Teilsätze von Schlüsselketten für jeden Index, die eingegebenen Zeichenfolgen entsprechen.
  • Hier übermitteln die Bereitstellungseinheit 52 und die Empfangseinheit 64 Teilsätze von Schlüsselketten, die eingegebenen Zeichenfolgen entsprechen, mithilfe eines Protokolls einer nicht wahrnehmbaren Übertragung. Bei einer nicht wahrnehmbaren Übertragung handelt es sich um ein Protokoll zum Übertragen einer Nachricht mit einer Kennnummer, die durch die Empfangseinheit angegeben wird, aus M Nachrichten, die durch die Übertragungseinheit gespeichert werden, von einer Übertragungseinheit an eine Empfangseinheit, ohne dass die Empfangseinheit Nachrichten mit sonstigen Kennnummern empfängt und ohne dass die angegebene Kennnummer gegenüber der Übertragungseinheit bekanntgegeben wird. Ein Beispiel für eine nicht wahrnehmbare Übertragung wird in der oben aufgeführten Nichtpatentliteratur 2 beschrieben.
  • Durch Verwenden einer nicht wahrnehmbaren Übertragung kann die Bereitstellungseinheit 52 daher dem Client 30 einen Teilsatz von Schlüsselketten bereitstellen, die einem eingegebenen Zeichen entsprechen, und dabei die Teilsätze der anderen Schlüsselketten als diejenigen für die Zeichenfolge, die durch den Client 30 eingegeben worden ist, gegenüber dem Client 30 verdecken. Durch Verwenden einer nicht wahrnehmbaren Übertragung kann die Empfangseinheit 64 darüber hinaus von dem Server 20 Teilsätze von Schlüsselketten empfangen, die eingegebenen Zeichen entsprechen, und gleichzeitig die eingegebenen Zeichen gegenüber dem Server 20 verdecken.
  • Die Bereitstellungseinheit 52 des Servers 20 ordnet die Vielzahl von Schlüsselketten in dem Teilsatz von Schlüsselketten nach dem Index und überträgt sie an den Client 30. Auf diese Weise kann der Server 20 den Zustand des Automaten aus den Entschlüsselungsergebnissen nicht erschließen.
  • Die Entschlüsselungseinheit 66 des Clients 30 führt den Entschlüsselungsprozess an jeder Schlüsselkette durch, die in dem Teilsatz von Schlüsselketten enthalten ist, die entsprechend dem Index empfangen worden sind, um den Schlüssel, der dem nächsten Index entspricht, mithilfe des Schlüssels zu entschlüsseln, der in dem Entschlüsselungsprozess entschlüsselt worden ist, der dem vorherigen Index in der Reihenfolge der Indizes entspricht.
  • 16 stellt einen Ablaufplan einer Verarbeitung, die durch den Server 20 und den Client 30 durchgeführt wird, in der Variante dar.
  • Zuerst gibt der Client 30 in Schritt S71 die Zeichenfolge ein. Bei dem Prozess in Schritt S71 handelt es sich um denselben wie den Prozess in dem in 3 dargestellten Schritt S11.
  • Unterdessen generiert der Server 20 in Schritt S72 einen Satz von Schlüsselketten für jeden Index. Die in Schritt S72 durchgeführte Verarbeitung unterscheidet sich von der Verarbeitung in dem in 3 dargestellten Schritt S13 darin, dass sie für jeden Index durchgeführt wird. In allen übrigen Aspekten ist die Verarbeitung mit derjenigen in dem in 3 dargestellten Schritt S13 identisch.
  • Als Nächstes verwenden der Server 20 und der Client 30 in Schritt S73 bis Schritt S75 ein Protokoll für eine nicht wahrnehmbare Übertragung, um für jeden Index einen Teilsatz der Schlüsselketten, die den Zeichen entsprechen, die für den Index eingegeben worden sind, aus dem Satz von Schlüsselketten von dem Server 20 an den Client 30 zu übermitteln, die für den Index generiert worden sind. Mit anderen Worten, in dem Prozess für den ersten Index (Schritt S73) verwenden der Server 20 und der Client 30 eine nicht wahrnehmbare Übertragung, um einen Teilsatz von Schlüsselketten, die dem Zeichen entsprechen, das für den ersten Index eingegeben worden ist (das heißt, dem ersten Zeichen), aus den Sätzen von Schlüsselketten, die für den Satz von Schlüsselketten in dem ersten Index generiert worden sind, von dem Server 20 an den Client 30 zu übermitteln.
  • In dem Prozess für den zweiten Index (Schritt S74) verwenden der Server 20 und der Client 30 eine nicht wahrnehmbare Übertragung, um einen Teilsatz von Schlüsselketten, die dem Zeichen entsprechen, das für den zweiten Index eingegeben worden ist (das heißt, dem zweiten Zeichen), aus dem Satz von Schlüsselketten, die für die Sätze von Schlüsselketten in dem zweiten Index generiert worden sind, von dem Server 20 an den Client 30 zu übermitteln.
  • Anschließend führen der Server 20 und der Client 30 denselben Prozess für jeden Index von dem dritten Index bis zu dem N – 1-ten Index aus. Dann verwenden der Server 20 und der Client 30 in dem Prozess für den N-ten Index (Schritt S75) eine nicht wahrnehmbare Übertragung, um einen Teilsatz von Schlüsselketten, die dem Zeichen entsprechen, das für den N-ten Index eingegeben worden ist (das heißt, dem N-ten Zeichen), aus dem Satz von Schlüsselketten, die für die Sätze von Schlüsselketten in dem N-ten Index generiert worden sind, von dem Server 20 an den Client 30 zu übermitteln.
  • Eine Erläuterung eines Beispiels für den Prozess des Übermittelns eines Teilsatzes von Schlüsselketten, die einem eingegebenen Zeichen entsprechen, von dem Server 20 an den Client 30 mithilfe einer nicht wahrnehmbaren Übertragung wird im Folgenden unter Bezugnahme auf den Ablaufplan in 21 bis 23 gegeben.
  • Als Nächstes überträgt der Server 20 in Schritt S76 an den Client 30 einen Schlüssel, der dem Anfangszustand entspricht, und Endzustandsdaten.
  • Als Nächstes verwendet der Client 30 in Schritt S77 die in dem Entschlüsselungsprozess für den vorherigen Index entschlüsselten Schlüssel in der Reihenfolge der Indizes, um jeden Teilsatz der Schlüsselketten zu entschlüsseln, die den eingegebenen Zeichen in dem aktuellen Index entsprechen, die von dem Server 20 empfangen worden sind, und um in sequentieller Reihenfolge die Schlüssel zu entschlüsseln, die dem nächsten Index entsprechen.
  • Der Prozess in Schritt S77 unterscheidet sich von dem Prozess in Schritt S18 von 3 darin, dass eine Vielzahl von Schlüsselketten entschlüsselt werden, die in einem Teilsatz von Schlüsselketten enthalten sind, die den Zeichen entsprechen, die in den aktuellen Index eingegeben worden sind. In jedem anderen Aspekt ist der Prozess mit dem Prozess in Schritt S18 von 3 identisch.
  • Durch Durchführen dieser Verarbeitung können der Server 20 und der Client 30 auf der Grundlage der Zeichenfolge, die in den Client 30 eingegeben worden ist, ermitteln, ob der Automat, der sich auf dem Server 20 befindet, zu dem entsprechenden Endzustand übergegangen ist, und dabei die Zeichenfolge, die durch den Client 30 eingegeben worden ist, gegenüber dem Server 20 verdecken und dabei den Automaten, der sich auf dem Server 20 befindet, gegenüber dem Client 30 verdecken.
  • 17 stellt ein Beispiel für einen Satz von Schlüsselketten für den ersten Index dar. 18 stellt ein Beispiel für einen Satz von Schlüsselketten für den zweiten Index dar. 19 stellt ein Beispiel für einen Satz von Schlüsselketten für den dritten Index dar.
  • Infolge des Ausführens des Prozesses in Schritt S72 von 16 kann der Server 20 einen Satz von Schlüsselketten für jeden Index generieren. Wenn zum Beispiel eine Übergangstabelle für den Automaten und Schlüssel für jeden Index generiert werden, wie in 5 und 6 dargestellt, kann der Server 20 einen Satz von Schlüsselketten für den ersten Index generieren, wie etwa in 17 dargestellt.
  • Enc(x, y) stellt das Verschlüsseln der Daten y durch den Schlüssel x mithilfe eines Verschlüsselungsschemas auf der Grundlage eines gemeinsamen Schlüssels dar. Bei einem Verschlüsselungsschema auf der Grundlage eines gemeinsamen Schlüssels handelt es sich um ein Verschlüsselungsschema, das denselben Schlüssel für die Verschlüsselung und die Entschlüsselung verwendet. Zu Beispielen zählen das DES und das AES.
  • In ähnlicher Weise kann der Server 20 zum Beispiel auch einen Satz von Schlüsselketten für den zweiten Index generieren, wie in 18 dargestellt. In ähnlicher Weise kann der Server 20 zum Beispiel auch einen Satz von Schlüsselketten für den dritten Index generieren, wie in 19 dargestellt.
  • Die Sätze von Schlüsselketten für jeden Index werden in Teilsätze für jedes Zeichen unterteilt. Wie in 17, 18 und 19 dargestellt, beinhalten die Sätze von Schlüsselketten für den ersten Index, den zweiten Index und den dritten Index zum Beispiel Teilsätze von Schlüsselketten, die dem Zeichen „0” entsprechen, und Teilsätze von Schlüsselketten, die dem Zeichen „1” entsprechen.
  • Während der Übertragung an den Client 30 ordnet der Server 20 die Reihenfolge der Schlüsselketten in jedem Teilsatz willkürlich nach dem Index. Auf diese Weise kann der Client 30 den Zustand, der dem Automaten entspricht, aus der Reihenfolge der Schlüsselketten nicht erschließen.
  • 20 stellt ein Beispiel für Schlüssel dar, die in sequentieller Reihenfolge aus einem Teilsatz von Schlüsselketten für jeden Index entschlüsselt werden. Der Client 30 verwendet ein Protokoll für eine nicht wahrnehmbare Datenübertragung, um selektiv Teilsätze von Schlüsselketten, die den eingegebenen Zeichen für den aktuellen Index entsprechen, aus denjenigen zu empfangen, die jedem Index entsprechen.
  • Wenn zum Beispiel drei Zeichen „010” als Zeichenfolge eingegeben werden, empfängt der Client 30 den Teilsatz der Schlüsselkette, die dem ersten Zeichen „0” in dem ersten Index entspricht, und empfängt nicht die Teilsätze von Schlüsselketten, die dem anderen Zeichen entsprechen. Außerdem empfängt der Client 30 den Teilsatz der Schlüsselkette, die dem zweiten Zeichen „1” in dem zweiten Index entspricht, und empfängt nicht die Teilsätze von Schlüsselketten, die dem anderen Zeichen entsprechen. Außerdem empfängt der Client 30 den Teilsatz der Schlüsselkette, die dem dritten Zeichen „0” in dem dritten Index entspricht, und empfängt nicht die Teilsätze von Schlüsselketten, die dem anderen Zeichen entsprechen.
  • Als Nächstes ermittelt der Client 30 den Schlüssel des nächsten Indexes, der dem Zustand des Übergangs von dem aktuellen Zustand entspricht, durch Entschlüsseln jeder Schlüsselkette, die in dem Teilsatz von Schlüsselketten enthalten ist, die dem eingegebenen Zeichen entsprechen, das für den aktuellen Index empfangen worden ist, aus jedem Index in der Reihenfolge von dem Anfangszustand aus.
  • Zuerst entschlüsselt der Client 30 jede einer Vielzahl von Schlüsselketten, die in dem Teilsatz von Schlüsselketten enthalten sind, die dem eingegebenen Zeichen in dem ersten Index entsprechen, mithilfe des Schlüssels, der dem Anfangszustand entspricht (dem Schlüssel des ersten Indexes, der dem Anfangszustand entspricht). Auf diese Weise kann der Client 30 einen Schlüssel durch Entschlüsseln einer Schlüsselkette, die dem Anfangszustand entspricht, aus Teilsätzen von Schlüsselketten ermitteln, die dem eingegebenen Zeichen entsprechen.
  • Beispielsweise führt der Client 30 in dem in 20 dargestellten Beispiel den Entschlüsselungsprozess mithilfe des Schlüssels r0 des ersten Indexes, der dem Anfangszustand entspricht, an jedem Teilsatz von Schlüsselketten aus, die dem Zeichen „0” in dem ersten Index entsprechen. Auf diese Weise kann der Client 30 den Schlüssel ra1 des zweiten Indexes aus einer Schlüsselkette Enc(ra0, ra1) entschlüsseln, die dem Anfangszustand „1” des Zeichens „0” entspricht.
  • Außerdem entschlüsselt der Client 30 jede einer Vielzahl von Schlüsselketten, die in dem Teilsatz von Schlüsselketten enthalten sind, die dem eingegebenen Zeichen in dem zweiten Index und nachfolgenden Indizes entsprechen, mithilfe des Schlüssels, der in dem Entschlüsselungsprozess entschlüsselt worden ist, der dem vorherigen Index entspricht. Auf diese Weise kann der Client 30 den Schlüssel für den nächsten Index durch Entschlüsseln einer Schlüsselkette ermitteln, die dem Zustand entspricht, in den der Automat in dem aktuellen Index übergegangen ist.
  • Beispielsweise entschlüsselt der Client 30 in dem in 20 dargestellten Beispiel jeden Teilsatz von Schlüsselketten, die dem Zeichen „1” in dem zweiten Index entsprechen, mithilfe des Schlüssels ra1, der in dem Entschlüsselungsprozess entschlüsselt worden ist, der dem ersten Index entspricht. Auf diese Weise kann der Schlüssel rb2 des dritten Indexes durch den Client 30 aus Enc(ra1, rb2) entschlüsselt werden, der dem Zustand „a” des Zeichens „1” entspricht.
  • Beispielsweise entschlüsselt der Client 30 in dem in 20 dargestellten Beispiel außerdem jeden Teilsatz von Schlüsselketten, die dem Zeichen „0” in dem dritten Index entsprechen, mithilfe des Schlüssels rb2, der in dem Entschlüsselungsprozess des zweiten Indexes entschlüsselt worden ist. Auf diese Weise kann der Schlüssel ra3, der dem Endzustand des Übergangs entspricht, durch den Client 30 aus Enc(rb2, ra3) entschlüsselt werden, der dem Zustand „b” des Zeichens „0” entspricht.
  • Nach dem Entschlüsseln des Schlüssels, der dem Endzustand des Übergangs entspricht, entschlüsselt der Client 30 anschließend die Endzustandsdaten mithilfe des entschlüsselten Schlüssels. Infolge des Entschlüsselns der Endzustandsdaten ermittelt der Client 30, ob ein Übergang zu dem entsprechenden Endzustand stattgefunden hat, wenn der Wert bezogen worden ist, der den Endzustand darstellt.
  • Beispielsweise führt der Client 30 in dem in 20 dargestellten Beispiel den Entschlüsselungsprozess an den Endzustandsdaten Enc(ra3, 1) mithilfe des Schlüssels ra3 aus, der in dem dritten Index entschlüsselt worden ist. Auf diese Weise kann der Client 30 den Wert, der den Endzustand darstellt (zum Beispiel „1”) und Ausgabedaten entschlüsseln, die angeben, dass die Zeichenfolge durch den Automaten angenommen worden ist.
  • Folglich können der Server 20 und der Client 30 in der vorliegenden Ausführungsform ermitteln, ob eine Zeichenfolge durch den Automaten angenommen worden ist und dabei die Zeichenfolge, die durch den Client 30 eingegeben worden ist, gegenüber dem Server verdecken und den Automaten, der sich auf dem Server 20 befindet, gegenüber dem Client 30 verdecken.
  • 21 stellt den Ablauf der Übermittlungsverarbeitung für eine nicht wahrnehmbare Übertragung von Schlüsselketten-Teilsätzen zwischen dem Server 20 und dem Client 30 in der Variante dar. 22 stellt den Ablauf in der Fortsetzung von 21 dar. 23 stellt den Ablauf in der Fortsetzung von 22 dar.
  • Es folgt eine Erläuterung eines Beispiels für einen Datenübertragungsprozess mit nicht wahrnehmbaren Übertragungen, der an der Verarbeitung für jeden Index in Schritt S73 bis Schritt S75 ausgeführt wird, unter Bezugnahme auf 21, 22 und 23. Die nicht wahrnehmbaren Übertragungen, die in der vorliegenden Ausführungsform durchgeführt werden, sind nicht auf den im Folgenden erläuterten Prozess beschränkt. Sie können mithilfe eines weiteren Prozesses umgesetzt werden.
  • In diesem Beispiel können M Zeichen durch den Automaten empfangen werden (wobei M eine Ganzzahl ist, die gleich oder größer als 2 ist). Außerdem ist das Zeichen, das durch den Client 30 in den aktuellen Index eingegeben worden ist, das (i-te) Zeichen mit der Kennnr. i aus den M Zeichen.
  • Zuerst generiert der Server 20 in Schritt S81 „r”. Als Nächstes multipliziert der Server 20 in Schritt S82 „g” mit der Potenz „r”, um „gr” zu generieren.
  • Hier stellt „g” den Ursprung der Ordnung „q” dar. Es ist zu beachten, dass „q” eine beliebige Primzahl ist. Außerdem ist „g” ein Wert, der sowohl durch den Server 20 als auch durch den Client 30 bestimmt wird.
  • Außerdem ist „r” ein Wert, der zufällig aus einer zyklischen Gruppe „Zq” der Ordnung „q” ausgewählt wird. Außerdem sind die im Folgenden beschriebenen „r1” und „r2” Werte, die zufällig aus einer zyklischen Gruppe „Zq” der Ordnung „q” ausgewählt werden.
  • Als Nächstes generiert der Server 30 in Schritt S83 „T2, T3, T4, ..., TM”. T2, T3, T4, ..., TM sind (M – 1) Ganzzahlen, und es werden Kennnummern von 2 bis M zugewiesen. Als Nächstes überträgt der Server 20 in Schritt S84 „gr” und „T2, T3, T4, ..., TM” an den Client 30.
  • Aufgrund der Art des diskreten Logarithmus hat der Client 30 große Schwierigkeiten, „r” aus „gr” zu berechnen. Daher wird „r” gegenüber dem Client 30 verdeckt.
  • Als Nächstes empfängt der Client 30 in Schritt S85 eine Kennnummer, um das Zeichen, das in den aktuellen Index eingegeben worden ist, aus den M Zeichen zu identifizieren. In dem vorliegenden Beispiel empfängt der Client 30 „i” als Kennnummer. Hier ist „i” eine beliebige Zahl zwischen 1 und einschließlich M.
  • Als Nächstes wählt der Client 30 in Schritt S86 „Ti”, das der i-ten Kennnummer entspricht, aus „T2, T3, T4, ..., TM” aus. Wenn die Kennnr. i gleich 1 ist (wenn i = 1), wählt der Client 30 in Schritt S86 keinen Wert aus.
  • Als Nächstes generiert der Client 30 in Schritt S87 „r2”. Als Nächstes multipliziert der Client 30 in Schritt S88 „g” mit der Potenz „r2”, und generiert „gr2”.
  • Als Nächstes berechnet der Client 30 in Schritt S89 „PK1”. Genauer gesagt, der Client 30 verwendet „gr2” als „PK1” (PK1 = gr2), wenn gilt i = 1. Wenn gilt i ≠ 1, berechnet der Client 30 „Ti/gr2” und verwendet das berechnete „Ti/gr2” als „PK1” (PK1 = Ti/gr2).
  • Als Nächstes überträgt der Client 30 in Schritt S90 „PK1” an den Server 20. Aufgrund der Art des diskreten Logarithmus hat der Server 20 große Schwierigkeiten, „r2” aus „gr2” zu berechnen. Daher wird „r2” gegenüber dem Server 20 verdeckt.
  • Als Nächstes berechnet der Server 20 in Schritt S91 (PK1)r, (PK2)r, ..., (PKi)r, ..., (PKM)r auf der Grundlage von „r”, „T2, T3, T4, ..., TM” und des empfangenen „PK1”, wie im Folgenden in Gleichung (11) dargestellt.
  • Gleichung 13
    • (PK1)r = (PK1)r (PK2)r = T2 r/(PK1)r ⋮ (PKi)r = Ti r/(PK1)r = (gr2)r ⋮ (PKM)r = TM r/(PK1)r (11)
  • Hier wird (PKi)r zu g(r2·r), wie im Folgenden in Gleichung (12) dargestellt.
  • Gleichung 14
    • (PKi)r = Ti r/(PK1)r = Ti r/(Ti/gr2)r = (gr2)r = g(r2·r) (12)
  • Als Nächstes generiert der Server 20 in Schritt S92 „r1”.
  • Als Nächstes generiert der Server 20 in Schritt S93 M Verschlüsselungsschlüssel „S1, S2, ..., Si, ..., SM”, wie im Folgenden in Gleichung (13) dargestellt.
  • Gleichung 15
    • S1 = H((PK1)r, r1, 1) S2 = H((PK2)r, r1, 2) ⋮ Si = H((PKi)r, r1, i) ⋮ SN = H((PKM)r, r1, M) (13)
  • Als Nächstes gibt der Server 20 in Schritt S94 Teilsätze „Y1, Y2, ..., YM” von M Schlüsselketten für den Index ein. Mit anderen Worten, der Server 20 führt Eingaben von dem Teilsatz Y1 des Zeichens, das der Kennnr. i = 1 entspricht, bis zu dem Teilsatz YM des Zeichens durch, das der Kennnr. i = M, entspricht, die dem Index entspricht.
  • Als Nächstes verschlüsselt der Server 20 in Schritt S95 jeden der Teilsätze „Y1, Y2, ..., YM” der M Schlüsselketten mithilfe des entsprechenden in Schritt S93 generierten M Verschlüsselungsschlüssels „S1, S2, ..., Si, ..., SM”. Mit anderen Worten, der Server 20 verschlüsselt den Teilsatz Y1 der Schlüsselkette, die dem ersten Zeichen in dem Index entspricht, mithilfe des ersten Verschlüsselungsschlüssels „S1”.
  • Außerdem verschlüsselt der Server 20 den Teilsatz Y2 der Schlüsselkette, die dem ersten Zeichen in dem Index entspricht, mithilfe des zweiten Verschlüsselungsschlüssels „S2”. Außerdem verschlüsselt der Server 20 den Teilsatz Yi der Schlüsselkette, die dem i-ten Zeichen in dem Index entspricht, mithilfe des i-ten Verschlüsselungsschlüssels „Si”. Außerdem verschlüsselt der Server 20 den Teilsatz YM der Schlüsselkette, die dem M-ten Zeichen in dem Index entspricht, mithilfe des M-ten Verschlüsselungsschlüssels „SM”. Auf diese Weise kann der Server 20 die im Folgenden in Gleichung (14) dargestellten M verschlüsselten Texte generieren.
  • Gleichung 16
    • Enc(S1, Y1) Enc(S2, Y2) ⋮ Enc(Si, Yi) ⋮ Enc(SM, YM) (14)
  • Als Nächstes überträgt der Server 20 in Schritt S96 die M generierten verschlüsselten Texte an den Client 30. Als Nächstes überträgt der Server 20 in Schritt S97 „r1” an den Client 30.
  • Unterdessen berechnet der Client 30 in Schritt S98 „(gr)r2”, wobei es sich um ”gr” der Potenz ”r2” handelt. Hier wird (PKi)r zu g(r2·r), wie in Gleichung (12) dargestellt. Mit anderen Worten, „(gr)r2”, das in Schritt S98 durch den Client 30 berechnet worden ist, stellt „(PKi)r” dar.
  • Als Nächstes verwendet der Client 30 in Schritt S99 „(PKi)r”, „r1” und „i”, um den Verschlüsselungsschlüssel „Si” zu generieren, der der Kennnr. i entspricht. Da der Client 30 die anderen Werte als (PKi)r (zum Beispiel (PK1)r, (PK2)r und (PKM)r usw.) nicht generieren kann, können keine anderen Verschlüsselungsschlüssel als der Verschlüsselungsschlüssel „Si” generiert werden, der der Kennnr. i entspricht. Folglich kann der Client 30 keine anderen Teilsätze der Schlüsselkette als den Teilsatz Yj der Schlüsselkette beziehen, die dem Zeichen mit der Kennnr. i entspricht.
  • Als Nächstes entschlüsselt der Client 30 in Schritt S100 den Teilsatz Yj der Schlüsselkette aus dem verschlüsselten Text E(Si, Yj) mithilfe des Verschlüsselungsschlüssels „Si”, der in Schritt S99 generiert worden ist. Auf diese Weise kann der Client 30 den Teilsatz Yj der Schlüsselkette beziehen, die dem Zeichen mit der Kennnr. i entspricht.
  • Auf diese Weise können der Server 20 und der Client 30 den Teilsatz Yj der Schlüsselkette austauschen, die dem Zeichen mit der Kennnr. i entspricht, ohne dass der Client 30 die anderen Teilsätze der Schlüsselkette als den Teilsatz Yj der Schlüsselkette bezieht, die dem eingegebenen Zeichen mit der Kennnr. i für den Index entspricht, und wobei er gleichzeitig das Zeichen mit der Kennnr. i gegenüber dem Server 20 bekannt gibt.
  • 24 stellt ein Beispiel für die Hardware-Konfiguration des Computers 1900 in der vorliegenden Ausführungsform dar. Der Computer 1900 in der vorliegenden Ausführungsform ist ausgestattet mit einem peripheren CPU-Abschnitt, der eine CPU 2000, einen RAM 2020, eine Graphiksteuereinheit 2075 und eine Anzeige 2080 aufweist, die über eine Host-Steuereinheit 2082 miteinander verbunden sind, einem Eingabe-/Ausgabe-Abschnitt mit einer Datenübertragungs-Schnittstelle 2030, einem Festplattenlaufwerk 2040 und einem CD-ROM-Laufwerk 2060, die durch eine Eingabe-/Ausgabe-Steuereinheit 2084 mit der Host-Steuereinheit 2082 verbunden sind, und einem traditionellen Eingabe-/Ausgabe-Abschnitt, der einen ROM 2010, ein Diskettenlaufwerk 2050 und einen Eingabe-/Ausgabe-Chip 2070 aufweist, die mit der Eingabe-/Ausgabe-Steuereinheit 2084 verbunden sind.
  • Die Host-Steuereinheit 2082 ist mit dem RAM 2020, einer CPU 2000, die mit einer hohen Übertragungsrate auf den RAM 2020 zugreift, und einer Graphiksteuereinheit 2075 verbunden. Die CPU 2000 wird auf der Grundlage eines Programms betrieben, das in dem ROM 2010 und dem RAM 2020 gespeichert ist, und steuert die verschiedenen Einheiten. Die Graphiksteuereinheit 2075 bezieht die Bilddaten, die in dem Bildspeicher des RAM 2020 durch die CPU 2000 und sonstige Einheiten generiert worden sind, und zeigt diese Bilddaten auf der Anzeigeeinheit 2080 an. Alternativ kann die Graphiksteuereinheit 2075 einen Bildspeicher zum Speichern von Bilddaten beinhalten, die durch die CPU 2000 und sonstige Einheiten generiert werden.
  • Die Eingabe-/Ausgabe-Steuereinheit 2084 ist mit einer Host-Steuereinheit 2082, einer Datenübertragungs-Schnittstelle 2030, die als Eingabe-/Ausgabe-Einheit mit relativ hoher Geschwindigkeit dient, einem Festplattenlaufwerk 2040 und einem CD-ROM-Laufwerk 2060 verbunden. Die Datenübertragungs-Schnittstelle 2030 tauscht über ein Netzwerk Daten mit den übrigen Einheiten aus. Das Festplattenlaufwerk 2040 speichert die Programme und Daten, die durch die CPU 2000 in dem Computer 1900 verwendet werden. Das CD-ROM-Laufwerk 2060 liest Programme und Daten von der CD-ROM 2095 und stellt sie dem Festplattenlaufwerk 2040 über den RAM 2020 bereit.
  • Die Eingabe-/Ausgabe-Steuereinheit 2084 ist mit dem ROM 2010, dem Diskettenlaufwerk 2050 und der Eingabe-/Ausgabe-Einheit mit relativ geringer Geschwindigkeit des Eingabe-/Ausgabe-Chips 2070 verbunden. Der ROM 2010 speichert das Startprogramm, das beim Start durch den Computer 1900 ausgeführt wird, und/oder Programme, die sich auf Hardware in dem Computer 1900 stützen. Das Diskettenlaufwerk 2050 liest Programme oder Daten aus einem Diskettenlaufwerk 2090 und stellt die Programme und Daten dem Festplattenlaufwerk 2040 über den RAM 2020 bereit. Der Eingabe-/Ausgabe-Chip 2070 verbindet das Diskettenlaufwerk 2050 mit der Eingabe-/Ausgabe-Steuereinheit 2084. Verschiedene Typen von Eingabe-/Ausgabe-Einheiten sind über einen parallelen Anschluss, einen seriellen Anschluss, einen Tastaturanschluss, einen Mausanschluss usw. mit der Eingabe-/Ausgabe-Steuereinheit 2084 verbunden.
  • Ein Programm, das dem Festplattenlaufwerk 2040 über den RAM 2020 bereitgestellt wird, ist auf einem Aufzeichnungsmedium wie zum Beispiel einer Diskette 2090, einer CD-ROM 2095 oder einer IC-Karte gespeichert und wird durch den Benutzer bereitgestellt. Ein Programm wird aus dem Aufzeichnungsmedium gelesen, auf dem Festplattenlaufwerk 2040 im Innern des Computers 1900 über den RAM 2020 installiert und durch die CPU 2000 ausgeführt.
  • Ein Programm, das auf einem Computer 1900 installiert ist, um den Computer 1900 in die Lage zu versetzen, als Server 20 zu dienen, beinhaltet ein Automatenspeichermodul, ein Schlüsselgenerierungsmodul, ein Schlüsselketten-Generierungsmodul, ein Generierungsmodul für indexierte Zustandsübergangswerte, ein Synthesemodul und ein Bereitstellungsmodul. Dieses Programm oder die Module werden durch die CPU 2000 und sonstige Einheiten aktiviert, um den Computer 1900 in die Lage zu versetzen, als Automatenspeichereinheit 42, als Schlüsselgenerierungseinheit 44, als Schlüsselketten-Generierungseinheit 46, als Generierungseinheit 48 für indexierte Zustandsübergangswerte, als Syntheseeinheit 50 und als Bereitstellungseinheit 52 zu dienen.
  • Bei der in diesen Programmen beschriebenen Datenverarbeitung handelt es sich um spezifische Mittel, die durch Einlesen der Programme in den Computer 1900 aktiviert werden, sodass die Software mit den oben beschriebenen verschiedenen Typen von Hardware-Ressourcen zusammenarbeitet. Diese Datenverarbeitung dient als Automatenspeichereinheit 42, als Schlüsselgenerierungseinheit 44, als Schlüsselketten-Generierungseinheit 46, als Generierungseinheit 48 für indexierte Zustandsübergangswerte, als Syntheseeinheit 50 und als Bereitstellungseinheit 52. Diese spezifischen Mittel setzen Vorgänge und die Verarbeitung von Daten gemäß dem beabsichtigten Zweck des Computers 1900 in der vorliegenden Ausführungsform um, um einen dedizierten Server 20 für diesen beabsichtigten Zweck zusammenzustellen.
  • Ein Programm, das auf dem Computer 1900 installiert ist, um den Computer 1900 in die Lage zu versetzen, als Client 30 zu dienen, beinhaltet ein Eingabemodul, ein Generierungsmodul für indexierte Zeichen, ein Empfangsmodul und ein Entschlüsselungsmodul. Dieses Programm oder die Module werden durch die CPU 2000 und sonstige Einheiten aktiviert, um den Computer 1900 in die Lage zu versetzen, als Eingabeeinheit 60, als Generierungseinheit 62 für indexierte Zeichen, als Empfangseinheit 64 und als Entschlüsselungseinheit 66 zu dienen.
  • Bei der in diesen Programmen beschriebenen Datenverarbeitung handelt es sich um spezifische Mittel, die durch Einlesen der Programme in den Computer 1900 aktiviert werden, sodass die Software mit den oben beschriebenen verschiedenen Typen von Hardware-Ressourcen zusammenarbeitet. Diese Datenverarbeitung dient als Eingabeeinheit 60, als Generierungseinheit 62 für indexierte Zeichen, als Empfangseinheit 64 und als Entschlüsselungseinheit 66. Diese spezifischen Mittel setzen Vorgänge und die Verarbeitung von Daten gemäß dem beabsichtigten Zweck des Computers 1900 in der vorliegenden Ausführungsform um, um einen dedizierten Client 30 für diesen beabsichtigten Zweck zusammenzustellen.
  • Wenn der Computer 1900 zum Beispiel Daten mit einer externen Einheit austauscht, führt die CPU 2000 das Datenübertragungsprogramm aus, das in dem RAM 2020 geladen ist, und weist die Datenübertragungs-Schnittstelle 2030 in der Datenübertragungsverarbeitung auf der Grundlage des in dem Datenübertragungsprogramm beschriebenen Inhalts an. Die Datenübertragungs-Schnittstelle 2030 wird durch die CPU 2000 gesteuert und liest die übertragenen Daten, die in dem Übertragungspufferbereich einer Speichereinheit wie zum Beispiel des RAM 2020, des Festplattenlaufwerks 2040, der Diskette 2090 oder der CD-ROM 2095 gespeichert sind, oder schreibt Empfangsdaten, die aus dem Netzwerk empfangen werden, in einen Empfangspufferbereich der Speichereinheit. Auf diese Weise überträgt die Datenübertragungs-Schnittstelle 2030 übertragene und empfangene Daten an die Speichereinheit mithilfe des Verfahrens des direkten Speicherzugriffs (direct memory access, DMA). Alternativ überträgt die CPU 2000 übertragene und empfangene Daten durch Lesen von Daten aus der Quell-Speichereinheit oder -Datenübertragungs-Schnittstelle 2030, und überträgt, und durch Schreiben von Daten in die Ziel-Datenübertragungs-Schnittstelle 2030 oder -Speichereinheit.
  • Außerdem schreibt die CPU 2000 sämtliche Daten oder die erforderlichen Daten in den RAM 2020, beispielsweise über eine DMA-Übertragung, aus Dateien oder Datenbanken, die in einer externen Speichereinheit wie zum Beispiel einem Festplattenlaufwerk 2040, einem CD-ROM-Laufwerk 2060 (CD-ROM 2095) oder einem Diskettenlaufwerk 2050 (Diskette 2090) gespeichert sind, und führt verschiedene Arten von Verarbeitungen an den Daten in dem RAM 2020 durch. Die CPU 2000 schreibt anschließend die verarbeiteten Daten zum Beispiel über eine DMA-Übertragung in die externe Speichereinheit. Da der RAM 2020 den Inhalt der externen Speichereinheit während dieses Prozesses vorübergehend speichert, werden der RAM 2020 und die externe Speichereinheit im Allgemeinen in der vorliegenden Ausführungsform als Speicher oder Speichereinheit bezeichnet. Die verschiedenen Typen von Daten in den verschiedenen Typen von Programmen, Daten, Tabellen und Datenbanken der vorliegenden Ausführungsform werden in diesen Speichereinheiten gespeichert und sind die Ziele der Datenverarbeitung. Die CPU 2000 kann einen Teil des RAM 2020 in einem Cachespeicher halten und Daten in dem Cachespeicher lesen und in diesen schreiben. Hier führt der Cachespeicher einige der Funktionen des RAM 2020 durch. Daher wird diese Unterteilung in der vorliegenden Ausführungsform ausgenommen. Der Cachespeicher ist in dem RAM 2020, dem Speicher und/oder der Speichereinheit enthalten.
  • Die CPU 2000 führt außerdem verschiedene Arten von Verarbeitungen an Daten durch, die aus dem RAM 2020 gelesen werden, darunter die Vorgänge, Verarbeitungen, Bedingungsermittlung und Datenabruf und -ersetzung, die in der vorliegenden Ausführungsform beschrieben worden sind und durch eine Sequenz von Anweisungen in dem Programm angegeben werden, und schreibt die Ergebnisse in den RAM 2020. Wenn sie zum Beispiel eine Bedingungsermittlung durchführt, vergleicht die CPU 2000 verschiedene Typen von Variablen, die in der vorliegenden Ausführungsform beschrieben worden sind, mit anderen Variablen oder Konstanten, um zu ermitteln, ob Bedingungen wie etwa groß, klein, größer als, kleiner als oder gleich erfüllt worden sind. Wenn eine Bedingung erfüllt (oder nicht erfüllt) worden ist, verzweigt der Prozess zu einer anderen Sequenz von Anweisungen oder ruft eine Unterroutine auf.
  • Die CPU 2000 kann auch Daten abrufen, die in Dateidatenbanken innerhalb der Speichereinheit gespeichert sind. Wenn zum Beispiel eine Vielzahl von Einträgen einen Attributwert für ein zweites Attribut mit einem Attributwert für ein erstes Attribut verknüpft, kann die CPU 2000 einen Eintrag, der mit den Bedingungen übereinstimmt, die durch den Attributwert des ersten Attributs angegeben werden, aus der Vielzahl von Einträgen abrufen, die in der Speichereinheit gespeichert sind, und anschließend den Attributwert des zweiten Werts, der dem ersten Wert zugehörig ist, der eine vorgegebene Bedingung erfüllt, durch Lesen des Attributwerts des zweiten Attributs ermitteln, das in dem Eintrag gespeichert ist.
  • Ein oben beschriebenes Programm oder Modul kann in einem Aufzeichnungsmedium einer externen Einheit gespeichert sein. Anstelle einer Diskette 2090 oder einer CD-ROM 2905 kann es sich bei dem Aufzeichnungsmedium um ein optisches Aufzeichnungsmedium wie zum Beispiel eine DVD oder CD, ein magnetooptisches Aufzeichnungsmedium wie zum Beispiel ein MO, ein Bandmedium oder einen Halbleiterspeicher wie etwa eine IC-Karte handeln. Das Aufzeichnungsmedium kann auch eine Speichereinheit wie zum Beispiel eine Festplatte oder ein RAM sein, die in einem Server-System bereitgestellt wird, der mit einem dedizierten Datenübertragungs-Netzwerk oder dem Internet verbunden ist, und das Programm kann dem Computer 1900 über das Netzwerk bereitgestellt werden.
  • Die vorliegende Erfindung wurde anhand einer Ausführungsform erläutert, der technische Umfang ist jedoch nicht auf die oben beschriebene Ausführungsform beschränkt. Die Möglichkeit zahlreicher Änderungen und Verbesserungen an dieser Ausführungsform sollte für Fachleute ersichtlich sein. Ausführungsformen, die diese Änderungen und Verbesserungen beinhalten, fallen in den technischen Rahmen der vorliegenden Erfindung, wie aus der Beschreibung der Ansprüche deutlich werden sollte.
  • Die Reihenfolge der Ausführung von Vorgängen, Schritten und Prozessen in den Einheiten, Systemen, Programmen und Verfahren, die in den Ansprüchen, der Beschreibung und den Zeichnungen beschrieben worden sind, wurde mithilfe von Begriffen wie „vorherige” und „vorher” beschrieben. Diese Vorgänge, Schritte und Prozesse können jedoch in einer beliebigen Reihenfolge umgesetzt werden, sofern die Ausgabe des vorherigen Prozesses durch den nachfolgenden Prozess verwendet wird. Der funktionelle Ablauf in den Ansprüchen, der Beschreibung und der Zeichnung wurden der Einfachheit halber mithilfe von Begriffen wie zum Beispiel „zuerst” und „als Nächstes” erläutert. Der funktionelle Ablauf muss jedoch nicht zwingend in dieser Reihenfolge ausgeführt werden.
  • Bezugszeichenliste
  • 10
    Authentifizierungssystem
    20
    Server
    30
    Client
    42
    Automatenspeichereinheit
    44
    Schlüsselgenerierungseinheit
    46
    Schlüsselketten-Generierungseinheit
    48
    Generierungseinheit für indexierte Zustandsübergangswerte
    50
    Syntheseeinheit
    52
    Bereitstellungseinheit
    60
    Eingabeeinheit
    62
    Generierungseinheit für indexierte Zeichen
    64
    Empfangseinheit
    66
    Entschlüsselungseinheit
    1900
    Computer
    2000
    CPU
    2010
    ROM
    2020
    RAM
    2030
    Datenübertragungs-Schnittstelle
    2040
    Festplattenlaufwerk
    2050
    Diskettenlaufwerk
    2060
    CD-ROM-Laufwerk
    2070
    Eingabe-/Ausgabe-Chip
    2075
    Graphiksteuereinheit
    2080
    Anzeigeeinheit
    2082
    Host-Steuereinheit
    2084
    Eingabe-/Ausgabe-Steuereinheit
    2090
    Diskette
    2095
    CD-ROM

Claims (16)

  1. Server, der zum Eingeben einer Zeichenfolge mit einem Client verbindbar ist und der einen Automaten aufweist, der einen nachfolgenden Zustand des Übergangs für jeden Zustand und jedes Zeichen definiert, der aufweist: eine Schlüsselketten-Generierungseinheit zum Generieren einer Schlüsselkette für jede Kombination aus Index, Zeichen und Zustand, die die Position jedes Zeichens in einer Zeichenfolge ausdrückt, wobei die Schlüsselkette verschlüsselte Schlüssel für den nächsten Index aufweist, die dem nachfolgenden Zustand des Übergangs von dem aktuellen Zustand entsprechen, entsprechend dem Zeichen auf der Grundlage des Schlüssels, der dem aktuellen Zustand entspricht, und eine Bereitstellungseinheit zum Austauschen von Daten mit einem Client und zum Bereitstellen einer Schlüsselkette für den Client, die jedem eingegebenen Schlüssel entspricht, aus einem Satz von Schlüsselketten für jeden Index in einem Zustand, der die eingegebenen Zeichen gegenüber dem Client verdeckt.
  2. Server nach Anspruch 1, wobei der Client beinhaltet: eine Empfangseinheit zum Austauschen von Daten mit der Bereitstellungseinheit und zum Empfangen einer Vielzahl von Schlüsselketten von dem Server, die einem eingegebenen Zeichen entsprechen, für jeden Index, und eine Entschlüsselungseinheit zum Entschlüsseln eines Schlüssels, der dem nächsten Index entspricht, durch Durchführen einer Entschlüsselungsverarbeitung an der Vielzahl der empfangenen Schlüsselketten mithilfe von Schlüsseln, die durch die Entschlüsselungsverarbeitung, die dem vorherigen Index entspricht, in der sequentiellen Reihenfolge der Indizes ermittelt worden sind.
  3. Server nach Anspruch 2, wobei die Bereitstellungseinheit von dem Client einen übertragenen verschlüsselten Text empfängt, der einen Satz von indexierten Zeichen verschlüsselt, die Gruppen von Indizes und eingegebenen Zeichen für jedes Zeichen in der eingegebenen Zeichenfolge ausdrückt, und einen verschlüsselten Antworttext mit verschlüsselten Werten generiert und an den Client überträgt, die zu jeder Schlüsselkette werden, die in dem Satz von Schlüsselketten enthalten ist, wenn der indexierte Zustandsübergangswert in dem Satz von indexierten Zeichen enthalten ist, der eine Gruppe von entsprechenden Indizes und entsprechenden Zeichen auf der Grundlage des übermittelten verschlüsselten Textes ausdrückt, und die nicht zu Schlüsselketten werden, wenn der indexierte Zustandsübergangswert nicht in dem Satz von indexierten Zeichen enthalten ist.
  4. Server nach Anspruch 3, wobei die Empfangseinheit eine Entschlüsselungsverarbeitung an jedem verschlüsselten Antworttext durchführt, um eine Vielzahl von Schlüsselketten zu beziehen, und wobei die Entschlüsselungseinheit eine Entschlüsselungsverarbeitung an der Vielzahl von Schlüsselketten mithilfe von Schlüsseln, die in der Entschlüsselungsverarbeitung entschlüsselt worden sind, die dem vorherigen Index entspricht, in der sequentiellen Reihenfolge der Indizes durchführt, um die Schlüssel zu entschlüsseln, die dem nächsten Index entsprechen.
  5. Server nach Anspruch 4, wobei die Bereitstellungseinheit von dem Client übertragenen verschlüsselten Text empfängt, der mithilfe eines homomorphen Verschlüsselungsschemas die verschiedenen Koeffizienten eines Polynoms verschlüsselt, das gleich null wird, wenn ein indexiertes Zeichen zugewiesen wird, und das ungleich null wird, wenn ein anderer Wert als ein indexiertes Zeichen zugewiesen wird, und verschlüsselten Antworttext generiert und an den Client überträgt, der mithilfe desselben Verschlüsselungsschemas die Summe der Werte jeder Schlüsselkette, die in dem Satz von Schlüsselketten enthalten ist, und von Werten verschlüsselt, die durch Multiplizieren der indexierten Zustandsübergangswerte mit den zugewiesenen Werten in dem Polynom ermittelt worden sind.
  6. Server nach Anspruch 2, wobei die Bereitstellungseinheit Daten mit dem Client austauscht und über nicht wahrnehmbare Übertragungen einen Teilsatz des Satzes von Schlüsselketten für jeden Index selektiv überträgt, die den Zeichen entsprechen, die durch den Client eingegeben worden sind.
  7. Server nach Anspruch 6, wobei die Empfangseinheit Daten mit der Bereitstellungseinheit austauscht und selektiv von dem Server über eine nicht wahrnehmbare Übertragung einen Teilsatz von Schlüsselketten dem Index nach empfängt, die dem eingegebenen Zeichen entsprechen, und die Entschlüsselungseinheit die Schlüssel entschlüsselt, die dem nächsten Index entsprechen, indem sie den Entschlüsselungsprozess an jeder Schlüsselkette, die in dem empfangenen Teilsatz von Schlüsselketten enthalten ist, die dem vorherigen Index entsprechen, mithilfe von Schlüsseln, die durch die Entschlüsselungsverarbeitung ermittelt worden sind, die dem vorherigen Index entspricht, in der sequentiellen Reihenfolge der Indizes durchführt.
  8. Server nach Anspruch 7, wobei die Bereitstellungseinheit eine Vielzahl von Teilsätzen, die jedem Zeichen entsprechen, in dem Satz von Schlüsselketten dem Index nach mithilfe von Verschlüsselungsschlüsseln verschlüsselt, die jedem Zeichen entsprechen, und die verschlüsselten Teilsätze dem Client im Voraus bereitstellt und Daten mit dem Client austauscht und dem Client für jeden Index aus den Verschlüsselungsschlüsseln für jedes Zeichen in dem Index Verschlüsselungsschlüssel bereitstellt, die dem durch den Client eingegebenen Zeichen entsprechen, wobei die Verschlüsselungsschlüssel bereitgestellt werden, während gleichzeitig das eingegebene Zeichen gegenüber dem Client verdeckt wird.
  9. Server nach Anspruch 8, wobei der Client einen von einer Vielzahl von zuvor empfangenen Teilsätzen für jeden Index, der einem Zeichen entspricht, das durch den Server gesendet worden ist und das durch den Client eingegeben worden ist, mithilfe eines Verschlüsselungsschlüssels entschlüsselt, der dem Zeichen entspricht.
  10. Server nach Anspruch 6, wobei die Bereitstellungseinheit eine Vielzahl von Schlüsselketten dem Index nach ordnet und überträgt.
  11. Server nach Anspruch 1, wobei die Schlüsselketten-Generierungseinheit eine Schlüsselkette generiert, die einen Schlüssel, der dem Übertragungsendzustand entspricht, mithilfe eines Schlüssels verschlüsselt, der dem aktuellen Zustand in einem Index entspricht, der dem Schlusszeichen der Zeichenfolge entspricht, und Endzustandsdaten generiert, die einen Wert verschlüsseln, der angibt, ob es sich bei dem Übergangsendzustand, der den Schlüssel verwendet, der dem Übergangsendzustand entspricht, um den Endzustand handelt, der im Voraus durch den Automaten bestimmt worden ist.
  12. Client zum Eingeben einer Zeichenfolge, wobei der Client in der Lage ist, Daten mit einem Server auszutauschen, der einen Automaten aufweist, der einen nachfolgenden Zustand des Übergangs für jeden Zustand und jedes Zeichen definiert, der aufweist: eine Empfangseinheit zum Austauschen von Daten mit dem Server und zum Empfangen einer Vielzahl von Schlüsselketten von dem Server, die einem eingegebenen Zeichen entsprechen, für jeden Index, und eine Entschlüsselungseinheit zum Entschlüsseln eines Schlüssels, der dem nächsten Index entspricht, durch Durchführen einer Entschlüsselungsverarbeitung an der Vielzahl der empfangenen Schlüsselketten mithilfe von Schlüsseln, die durch die Entschlüsselungsverarbeitung, die dem vorherigen Index entspricht, in der sequentiellen Reihenfolge der Indizes ermittelt worden sind.
  13. Datenverarbeitungsverfahren in einem Server, der zum Eingeben einer Zeichenfolge mit einem Client verbindbar ist und der einen Automaten aufweist, der einen nachfolgenden Zustand des Übergangs für jeden Zustand und jedes Zeichen definiert, das aufweist: Generieren einer Schlüsselkette für jede Kombination aus Index, Zeichen und Zustand, die die Position jedes Zeichens in einer Zeichenfolge ausdrückt, wobei die Schlüsselkette verschlüsselte Schlüssel für den nächsten Index aufweist, die dem nachfolgenden Zustand des Übergangs von dem aktuellen Zustand entsprechen, entsprechend dem Zeichen auf der Grundlage des Schlüssels, der dem aktuellen Zustand entspricht; und Bereitstellen, durch Austauschen von Daten mit einem Client, einer Schlüsselkette für den Client, die jedem eingegebenen Schlüssel entspricht, aus einem Satz von Schlüsselketten für jeden Index in einem Zustand, der die eingegebenen Zeichen gegenüber dem Client verdeckt.
  14. Datenverarbeitungsverfahren in einem Client zum Eingeben einer Zeichenfolge, wobei der Client in der Lage ist, Daten mit einem Server auszutauschen, der einen Automaten aufweist, der einen nachfolgenden Zustand des Übergangs für jeden Zustand und jedes Zeichen definiert, das aufweist: Empfangen, durch Austauschen von Daten mit dem Server, einer Vielzahl von Schlüsselketten, die einem eingegebenen Zeichen entsprechen, für jeden Index von dem Server, und Entschlüsseln eines Schlüssels, der dem nächsten Index entspricht, durch Durchführen einer Entschlüsselungsverarbeitung an der Vielzahl der empfangenen Schlüsselketten mithilfe von Schlüsseln, die durch die Entschlüsselungsverarbeitung, die dem vorherigen Index entspricht, in der sequentiellen Reihenfolge der Indizes ermittelt worden sind.
  15. Programm, das einen Computer in die Lage versetzt, als Server nach Anspruch 1 zu dienen.
  16. Programm, das einen Computer in die Lage versetzt, als Client nach Anspruch 12 zu dienen.
DE112013000357.0T 2012-01-19 2013-01-10 System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten Expired - Fee Related DE112013000357B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012-009281 2012-01-19
JP2012009281 2012-01-19
PCT/JP2013/050263 WO2013108698A1 (ja) 2012-01-19 2013-01-10 文字列がオートマトンに受理されるか否かを認証するシステム

Publications (2)

Publication Number Publication Date
DE112013000357T5 DE112013000357T5 (de) 2014-08-28
DE112013000357B4 true DE112013000357B4 (de) 2018-02-15

Family

ID=48799124

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000357.0T Expired - Fee Related DE112013000357B4 (de) 2012-01-19 2013-01-10 System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten

Country Status (6)

Country Link
US (1) US9397986B2 (de)
JP (1) JP5593458B2 (de)
CN (1) CN104067556B (de)
DE (1) DE112013000357B4 (de)
GB (1) GB2512513B (de)
WO (1) WO2013108698A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112013000357B4 (de) 2012-01-19 2018-02-15 Globalfoundries Inc. System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten
US9281941B2 (en) * 2012-02-17 2016-03-08 International Business Machines Corporation Homomorphic evaluation including key switching, modulus switching, and dynamic noise management
HUP1300501A1 (hu) * 2013-08-26 2015-03-02 Pannon Szoftver Kft Automataelméleti alapú kriptográfiai berendezés és eljárás információk titkosítására és visszafejtésére
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
JP6763378B2 (ja) * 2015-06-18 2020-09-30 日本電気株式会社 暗号情報作成装置、暗号情報作成方法、暗号情報作成プログラム、及び、照合システム
CN105721140B (zh) * 2016-01-27 2019-03-15 北京航空航天大学 n取k的不经意传输方法和系统
US10812252B2 (en) 2017-01-09 2020-10-20 Microsoft Technology Licensing, Llc String matching in encrypted data
US11165563B2 (en) * 2017-06-15 2021-11-02 Intelligens Technologiak Kft. Symmetric key stream cipher cryptographic method and device
US11196539B2 (en) 2017-06-22 2021-12-07 Microsoft Technology Licensing, Llc Multiplication operations on homomorphic encrypted data
US10541805B2 (en) 2017-06-26 2020-01-21 Microsoft Technology Licensing, Llc Variable relinearization in homomorphic encryption
US10749665B2 (en) * 2017-06-29 2020-08-18 Microsoft Technology Licensing, Llc High-precision rational number arithmetic in homomorphic encryption
US11924348B2 (en) * 2021-02-27 2024-03-05 International Business Machines Corporation Honest behavior enforcement via blockchain

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090268908A1 (en) * 2008-04-29 2009-10-29 Daniel Martin Bikel Methods and Apparatus for Securely Classifying Data
US20110176672A1 (en) * 2009-12-07 2011-07-21 Shantanu Rane Method for Determining Functions Applied to Signals
US20110264920A1 (en) * 2010-04-27 2011-10-27 Fuji Xerox Co., Ltd. Systems and methods for communication, storage, retrieval, and computation of simple statistics and logical operations on encrypted data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001249511A1 (en) * 2000-03-31 2001-10-15 Vdg Inc. Authentication method and schemes for data integrity protection
US20050149739A1 (en) * 2003-12-31 2005-07-07 Hewlett-Packard Development Company, L.P. PIN verification using cipher block chaining
KR20120115425A (ko) * 2005-12-14 2012-10-17 엔디에스 리미티드 블록 사이퍼 암호화의 사용을 위한 방법 및 시스템
EP2056221A1 (de) 2007-10-30 2009-05-06 Mitsubishi Electric Corporation Geteilte Zustandsgeräte zum Abgleichen
WO2009104260A1 (ja) * 2008-02-20 2009-08-27 三菱電機株式会社 検証装置
FR2952778B1 (fr) * 2009-11-17 2011-12-23 Thales Sa Procede de transmission de donnees securise et systeme de chiffrement et de dechiffrement permettant une telle transmission
JP5198539B2 (ja) * 2010-11-05 2013-05-15 株式会社東芝 記憶装置、アクセス装置およびプログラム
KR101216995B1 (ko) * 2010-12-03 2012-12-31 충남대학교산학협력단 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
TW201243643A (en) * 2011-04-22 2012-11-01 Inst Information Industry Hierarchical encryption/decryption device and method thereof
CN102164369B (zh) * 2011-05-13 2013-09-25 南京邮电大学 基于自动机和生命游戏的无线传感器网络广播认证方法
DE112013000357B4 (de) 2012-01-19 2018-02-15 Globalfoundries Inc. System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090268908A1 (en) * 2008-04-29 2009-10-29 Daniel Martin Bikel Methods and Apparatus for Securely Classifying Data
US20110176672A1 (en) * 2009-12-07 2011-07-21 Shantanu Rane Method for Determining Functions Applied to Signals
US20110264920A1 (en) * 2010-04-27 2011-10-27 Fuji Xerox Co., Ltd. Systems and methods for communication, storage, retrieval, and computation of simple statistics and logical operations on encrypted data

Also Published As

Publication number Publication date
JPWO2013108698A1 (ja) 2015-05-11
JP5593458B2 (ja) 2014-09-24
US9397986B2 (en) 2016-07-19
GB2512513A (en) 2014-10-01
DE112013000357T5 (de) 2014-08-28
GB2512513B (en) 2015-01-07
WO2013108698A1 (ja) 2013-07-25
CN104067556A (zh) 2014-09-24
US20150033018A1 (en) 2015-01-29
CN104067556B (zh) 2017-05-24
GB201409577D0 (en) 2014-07-16

Similar Documents

Publication Publication Date Title
DE112013000357B4 (de) System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten
US11196541B2 (en) Secure machine learning analytics using homomorphic encryption
CN106127075B (zh) 一种云存储环境下基于隐私保护的可搜索加密方法
JP2019500645A (ja) 暗号プロトコルを用いたsqlベースのデータベースの保護
CN111898137A (zh) 一种联邦学习的隐私数据处理方法、设备及系统
US20170163413A1 (en) System and Method for Content Encryption in a Key/Value Store
US20130262866A1 (en) Large-scale data processing cloud computing system
CN108062485A (zh) 一种面向多服务器多用户的模糊关键字搜索方法
CN110061840A (zh) 数据加密方法、装置、计算机设备及存储介质
DE102012222034A1 (de) System zum prüfen der annahme eines string durch einen automaten
DE112018007433T5 (de) Registrierungsvorrichtung, servervorrichtung, durchsuchbares verschlüsselungssystem, durchsuchbares verschlüsselungs-verfahren, registrierungsprogramm und serverprogramm
DE202015104128U1 (de) Datenzugriffssystem
US10700934B2 (en) Communication control device, communication control method, and computer program product
DE112021005561T5 (de) Implementieren einer widerstandsfähigen deterministischen verschlüsselung
DE102019119831A1 (de) Verschlüsselungsschaltung zum Durchführen von virtuellen Verschlüsselungsoperationen
US11251945B2 (en) Secure aggregate maximum system, secure aggregate minimum system, secure computation apparatus, secure aggregate maximum method, secure aggregate minimum method, and program
CN106888213A (zh) 云密文访问控制方法及系统
CN106250453A (zh) 基于云存储的数值型数据的密文检索方法及装置
DE102015103251B4 (de) Verfahren und System zum Verwalten von Nutzerdaten eines Nutzerendgeräts
CN108932434A (zh) 一种基于机器学习技术的数据加密方法及装置
CN112734050A (zh) 文本模型的训练方法、识别方法、装置、设备及存储介质
CN109698812A (zh) 信息加密方法和装置、信息解密方法和装置及安全系统
DE202020005751U1 (de) Verwalten von Benutzeridentitäten in einem verwalteten Multi-Tenant-Dienst
DE102012222025B4 (de) System zum senden von nachrichten mittels oblivious transfer
CN116582258A (zh) 一种基于互联网和数据分析的企业管理信息共享系统

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GLOBALFOUNDRIES INC., KY

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R081 Change of applicant/patentee

Owner name: GLOBALFOUNDRIES INC., KY

Free format text: FORMER OWNER: GLOBALFOUNDRIES US 2 LLC (N.D.GES.DES STAATES DELAWARE), HOPEWELL JUNCTION, N.Y., US

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee