DE102012222034A1 - System zum prüfen der annahme eines string durch einen automaten - Google Patents

System zum prüfen der annahme eines string durch einen automaten Download PDF

Info

Publication number
DE102012222034A1
DE102012222034A1 DE102012222034A DE102012222034A DE102012222034A1 DE 102012222034 A1 DE102012222034 A1 DE 102012222034A1 DE 102012222034 A DE102012222034 A DE 102012222034A DE 102012222034 A DE102012222034 A DE 102012222034A DE 102012222034 A1 DE102012222034 A1 DE 102012222034A1
Authority
DE
Germany
Prior art keywords
state
server
client
key
character
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.)
Ceased
Application number
DE102012222034A
Other languages
English (en)
Inventor
Yuji Watanabe
Takaaki Tateishi
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102012222034A1 publication Critical patent/DE102012222034A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • 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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3013Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
    • 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
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • G10L15/183Speech classification or search using natural language modelling using context dependencies, e.g. language models
    • G10L15/19Grammatical context, e.g. disambiguation of the recognition hypotheses based on word sequence rules
    • G10L15/193Formal grammars, e.g. finite state automata, context free grammars or word networks
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Problem Prüfen, ob ein String angenommen wurde durch einen Automaten. Mittel zur Lösung Ein Server wird bereitgestellt, der zur Eingabe eines String mit einem Client verbunden werden kann, einen Automaten aufweist, dessen Zustand gemäß empfangenen Zeichen wechselt und auf der Grundlage der Zeichen feststellt, ob der Automat zu einem Endzustand gewechselt hat. Der Server empfängt von dem Client in den Zeichen, die in dem String enthalten sind, eine Codierfolge, deren Elemente, die den Zeichen entsprechen, Werte sind, die einen Non-Unity-Wert unter Verwendung eines Verschlüsselungsschemas, das einen Homomorphismus aufweist, verschlüsseln und deren Elemente, die nicht den Zeichen entsprechen, Werte sind, die einen Unity-Wert unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln; erzeugt in Reaktion auf das Empfangen der Codierfolge Austauschdaten, die einen Schlüssel eines nachfolgenden Zustands, der jedem aus einer Vielzahl von vorhergehenden Zuständen des Automaten entspricht, auf der Grundlage der Codierfolge unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln; verschlüsselt Austauschdaten mit dem entsprechenden Schlüssel des vorhergehenden Zustands; und sendet die verschlüsselten Austauschdaten zu dem Client.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich auf einen Server, einen Client, ein Verfahren und ein Programm zum Prüfen, ob ein String durch einen Automaten angenommen wurde.
  • Technischer Hintergrund
  • Ein System zum Prüfen, ob ein String, über den ein Client verfügt, durch einen Automaten, über den ein Server verfügt, angenommen wurde, ist bekannt (siehe z. B. Patent-Dokument 1).
  • Zitatliste
  • Patentliteratur
    • Ofengelegte Patentveröffentlichung Nr. 2009-151757
  • Zusammenfassung der Erfindung
  • Technische Probleme
  • Es ist jedoch sehr schwierig zu prüfen, ob ein String durch einen Automaten angenommen wurde, ohne den durch den Client gehaltenen String dem Server offen zu legen, und ohne den durch den Server gehaltenen Automaten dem Client offen zu legen.
  • Problemlösung
  • Ein erster Aspekt der vorliegenden Erfindung stellt einen Server bereit, der zur Eingabe eines String mit einem Client verbunden werden kann, der einen Automaten aufweist, dessen Zustand in Übereinstimmung mit empfangenen Zeichen wechselt und der auf der Grundlage der Zeichen feststellt, ob der Automat zu einem Endzustand gewechselt hat, wobei der Server aufweist: Empfangen von dem Client in den Zeichen, die in dem String enthalten sind, einer Codierfolge, deren Elemente, die den Zeichen entsprechen, Werte sind, die einen Non-Unity-Wert unter Verwendung eines ersten Verschlüsselungsschemas, das einen Homomorphismus aufweist, verschlüsseln und deren Elemente, die nicht den Zeichen entsprechen, Werte sind, die einen Unity-Wert unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln; in Reaktion auf das Empfangen der Codierfolge Erzeugen von Austauschdaten, die einen Schlüssel eines nachfolgenden Zustands, der jedem von einer Vielzahl von vorhergehenden Zuständen des Automaten entspricht, auf der Grundlage der Codierfolge unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln; Verschlüsseln von Austauschdaten mit dem entsprechenden Schlüssel des vorhergehenden Zustands; und Senden der verschlüsselten Austauschdaten zu dem Client. Außerdem werden ein Verfahren und ein Programm zur Informationsverarbeitung für diesen Server bereitgestellt.
  • Ein zweiter Aspekt der vorliegenden Erfindung ist ein Client, der mit einem Server verbunden werden kann, der einen Automaten aufweist, dessen Zustand in Übereinstimmung mit empfangenen Zeichen wechselt, der die Eingabe eines String empfängt und auf der Grundlage des String feststellt, ob der Automat zu einem Endzustand gewechselt hat, wobei der Client aufweist: Senden zu dem Server in den Zeichen, die in dem String enthalten sind, einer Codierfolge, deren Elemente, die den Zeichen entsprechen, Werte sind, die einen Non-Unity-Wert unter Verwendung eines ersten Verschlüsselungsschemas, das einen Homomorphismus aufweist, verschlüsseln und deren Elemente, die nicht den Zeichen entsprechen, Werte sind, die einen Unity-Wert unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln; und von dem Server Empfangen von Chiffriertext, der Austauschdaten unter Verwendung eines entsprechenden Schlüssels eines vorhergehenden Zustands verschlüsselt, wobei die Austauschdaten in Reaktion auf das Empfangen der Codierfolge erzeugt werden, um einen Schlüssel eines nachfolgenden Zustands, der jedem aus einer Vielzahl von vorhergehenden Zuständen des Automaten entspricht, auf der Grundlage der Codierfolge unter Verwendung des ersten Verschlüsselungsschemas zu verschlüsseln. Ein Programm wird außerdem für diesen Client bereitgestellt.
  • Es sollte angemerkt werden, dass nicht vorgesehen ist, dass die obige Zusammenfassung der vorliegenden Erfindung sämtliche erforderlichen Merkmale der vorliegenden Erfindung aufzählt. Außerdem bilden Unterkombinationen aus diesen Gruppen von Charakteristiken ebenfalls die vorliegende Erfindung.
  • Kurzbeschreibung der Zeichnungen
  • 1 zeigt die Konfiguration des Prüfsystems 10 in der vorliegenden Ausführungsform.
  • 2 zeigt eine Konfiguration von Funktionsblöcken des Client 20 und des Servers 30 in der vorliegenden Ausführungsform.
  • 3 zeigt einen Ablaufplan der Verarbeitung, die durch den Client 20 in der vorliegenden Ausführungsform ausgeführt wird.
  • 4 zeigt ein Beispiel von Chiffriertext, der unter Verwendung des ersten Verschlüsselungsschemas erzeugt wird.
  • 5 zeigt einen Ablaufplan der Verarbeitung, die durch den Server 30 in der vorliegenden Ausführungsform ausgeführt wird.
  • 6 zeigt ein Beispiel einer Übergangstabelle für einen Automaten, über den der Server 30 verfügt, in der vorliegenden Ausführungsform.
  • 7 zeigt eine Schlüsseltabelle, die eine Vielzahl von Schlüsseln vorhergehender Zustände enthält, die vorhergehenden Zuständen entsprechen, wenn ein bestimmtes Zeichen eingegeben wird.
  • 8 zeigt eine Schlüsseltabelle, die eine Vielzahl von Schlüsseln nachfolgender Zustände enthält, die nachfolgenden Zuständen entsprechen, wenn ein bestimmtes Zeichen eingegeben wird.
  • 9 zeigt einen Ablaufplan des Vorgangs zum Erzeugen von Austauschdaten, der durch den Server 30 in der vorliegenden Ausführungsform ausgeführt wird.
  • 10 zeigt einen Ablaufplan des Entschlüsselungsvorgangs, der durch den Client 20 in der vorliegenden Ausführungsform ausgeführt wird.
  • 11 zeigt ein Beispiel des Datenübergangs, bei dem Codierfolgen, die einer Vielzahl von Zeichen entsprechen, nebeneinander angeordnet sind und vom Client 20 zu dem Server 30 gesendet werden.
  • 12 zeigt ein Beispiel eines String, der in den Client 20 eingegeben wird, und ein Beispiel eines Automaten, über den der Server 30 verfügt.
  • 13 zeigt ein Beispiel der Codierfolge, wenn der String ”010” eingegeben wurde.
  • 14 zeigt ein Beispiel einer Übergangstabelle für einen Automaten und eine Tabelle von Schlüsseln nachfolgender Zustände, die dem ersten Zeichen, dem zweiten Zeichen und dem dritten Zeichen entsprechen.
  • 15 zeigt ein Verarbeitungsbeispiel, bei dem Austauschdaten für jeden vorhergehenden Zustand aus der Codierfolge des ersten Zeichens erzeugt werden.
  • 16 zeigt ein Verarbeitungsbeispiel, bei dem Austauschdaten für jeden vorhergehenden Zustand aus der Codierfolge des zweiten Zeichens erzeugt werden.
  • 17 zeigt ein Verarbeitungsbeispiel, bei dem Austauschdaten für jeden vorhergehenden Zustand aus der Codierfolge des dritten Zeichens erzeugt werden.
  • 18 zeigt ein Beispiel verschlüsselter Austauschdaten, die den ersten bis dritten Zeichen entsprechen, und verschlüsselter Daten des Endzustands, die von dem Server 30 zu dem Client 20 gesendet werden.
  • 19 zeigt ein Beispiel einer Reihenfolge für den Entschlüsselungsvorgang, der durch den Client 20 ausgeführt wird.
  • 20 zeigt ein Beispiel der Hardware-Konfiguration des Computers 1900 in der vorliegenden Ausführungsform.
  • Beschreibung von Ausführungsformen
  • Es folgt eine Erläuterung der vorliegenden Erfindung unter Bezugnahme auf eine Ausführungsform der vorliegenden Erfindung. Die vorliegende Ausführungsform begrenzt jedoch nicht die vorliegende Erfindung in dem Umfang der Ansprüche. Außerdem sind nicht alle Kombinationen aus den in der Ausführungsform erläuterten Charakteristiken notwendigerweise in der technischen Lösung der vorliegenden Erfindung erforderlich.
  • 1 zeigt die Konfiguration des Prüfsystems 10 in der vorliegenden Ausführungsform. Das Prüfsystem 10 in der vorliegenden Ausführungsform enthält einen Client 20 und einen Server 30. Das Prüfsystem 10 in der vorliegenden Ausführungsform ermittelt, ob ein Automat, über den der Server 30 verfügt, auf der Grundlage des in den Client 20 eingegebenen String in den korrekten Endzustand übergegangen ist.
  • In den Client 20 wird ein String von einer externen Einheit eingegeben. Die in dem String enthaltenen Zeichen können von jedem Zeichentyp sein. Sie können z. B. Binärwerte mit ”0” und ”1” sein oder Zeichen sein, die durch ein einzelnes Byte repräsentiert werden.
  • Der Server 30 weist einen Automaten auf, dessen Zustand in Reaktion auf ein empfangenes Zeichen wechselt. Das durch den Automaten empfangene Zeichen ist ein Zeichen, das in den Client 20 eingegeben wird. Der Automat repräsentiert den üblichen Ausdruck einer Gruppe von im Voraus registrierten Strings (Gruppe von Strings). Der Automat empfängt nacheinander jedes Zeichen in dem String vom Anfang an und wechselt nach dem ersten Zeichen die Zustände nacheinander mit jedem Zeichen. Nachdem der Automat das letzte Zeichen empfangen hat und einen Wechsel ausgeführt hat, gibt er ”angenommen” aus, wenn der Wechsel zu dem korrekten Endzustand erfolgte, und ”nicht angenommen” aus, wenn der Wechsel nicht zu dem korrekten Endzustand erfolgte.
  • Der Client 20 erzeugt eine Codierfolge in Übereinstimmung mit jedem eingegebenen Zeichen und sendet eine Codierfolge zu dem Server 30 für jedes eingegebene Zeichen in dem String. Eine Codierfolge wird später genauer erläutert.
  • In Reaktion auf das Empfangen einer Codierfolge von dem Client 20 erzeugt der Server 30 verschlüsselte Austauschdaten und sendet diese zu dem Client 20. Austauschdaten werden später genauer erläutert. Der Client 20 und der Server 30 tauschen Codierfolgen und verschlüsselte Austauschdaten für jedes eingegebene Zeichen in dem String aus.
  • Beginnend mit dem ersten Zeichen entschlüsselt der Client 20 nacheinander die verschlüsselten Austauschdaten, die für jedes Zeichen empfangen werden. Wenn die Austauschdaten für das letzte Zeichen entschlüsselt wurden und der Wert, der eine Annahme angibt, aus den Austauschdaten für das letzte Zeichen entschlüsselt wurde, ermittelt der Client 20 auf der Grundlage des eingegebenen String, dass der Automat den Wechsel zu dem korrekten Endzustand ausgeführt hat. Auf diese Weise kann das Prüfsystem 10 in der vorliegenden Ausführungsform ermitteln, ob ein Automat, über den ein Server 30 verfügt, auf der Grundlage eines String, der in einen Client 20 eingegeben wurde, den Wechsel zu dem korrekten Endzustand ausgeführt hat.
  • 2 zeigt eine Funktionsblock-Konfiguration des Client 20 und des Servers 30 in der vorliegenden Ausführungsform. Der Client 20 weist eine Zeicheneingabeeinheit 32, eine Ablaufsteuerungseinheit 34, eine erste Verschlüsselungseinheit 36, eine clientseitige Sendeeinheit 38, eine clientseitige Empfangseinheit 40, eine clientseitige Schlüsselspeichereinheit 42, eine zweite Entschlüsselungseinheit 44, eine erste Entschlüsselungseinheit 46 und eine Ermittlungseinheit 48 auf. Der Server 30 weist außerdem eine serverseitige Empfangseinheit 52, eine Automatenspeichereinheit 54, eine Schlüsselerzeugungseinheit 56, eine serverseitige Schlüsselspeichereinheit 58, eine Austauschdaten-Erzeugungseinheit 60, eine zweite Verschlüsselungseinheit 62 und eine serverseitige Sendeeinheit 64 auf.
  • Die Zeicheneingabeeinheit 32 gibt alle Zeichen, die in einem String enthalten sind, beginnend mit dem ersten Zeichen einzeln nacheinander ein. Die Ablaufsteuerungseinheit 34 erzeugt eine Folge in Reaktion auf ein Zeichen, das durch die Zeicheneingabeeinheit 32 eingegeben wird, in der ein Element, das das Zeichen spezifiziert, als ein Non-Unity-Wert wiedergegeben wird, und in der die Elemente, die das Zeichen nicht spezifizieren, als ein Unity-Wert wiedergegeben werden. Eine Folge wird später unter Bezugnahme auf 3 genauer beschrieben.
  • Die erste Verschlüsselungseinheit 36 verschlüsselt die Elemente, die in der Folge enthalten sind, die durch die Ablaufsteuerungseinheit 34 unter Verwendung eines ersten Verschlüsselungsschemas, das einen Homomorphismus aufweist, erzeugt wird. Ein erstes Verschlüsselungsschema und eine Codierfolge werden später unter Bezugnahme auf 3 genauer erläutert. Die clientseitige Sendeeinheit 38 ordnet eine Codierfolge, die durch die erste Verschlüsselungseinheit 36 erzeugt wird, einem Zeichen zu und sendet die zugeordnete Codierfolge zu dem Server 30.
  • Auf diese Weise sendet der Client 20 in Reaktion auf ein Zeichen zu dem Server 30 eine Codierfolge, in der das Element, das das Zeichen identifiziert, ein Wert ist, in welchen ein Non-Unity-Wert unter Verwendung eines ersten Verschlüsselungsschemas, das einen Homomorphismus aufweist, verschlüsselt wurde, und bei dem die Elemente, die das Zeichen nicht identifizieren, Werte sind, in die ein Unity-Wert unter Verwendung des ersten Verschlüsselungsschemas verschlüsselt wurde.
  • Die serverseitige Empfangseinheit 52 empfängt die Codierfolge von dem Client 20. Die Automatenspeichereinheit 54 speichert einen Automaten zum Ermitteln, ob ein String, der in den Client 20 eingegeben wurde, angenommen wurde.
  • Eine Schlüsselerzeugungseinheit 56 erzeugt einen Schlüssel eines nachfolgenden Zustands in Übereinstimmung mit den nachfolgenden Zuständen des Automaten in Reaktion auf jedes Zeichen in dem String, der in den Client 20 eingegeben wurde. Ein Schlüssel eines nachfolgenden Zustands wird später unter Bezugnahme auf 5 genauer erläutert.
  • Die serverseitige Schlüsselspeichereinheit 58 speichert die Schlüssel nachfolgender Zustände, die den nachfolgenden Zuständen des Automaten zugeordnet sind, als Schlüssel vorhergehender Zustände, die den vorhergehenden Zuständen entsprechen, wenn das nächste Zeichen eingegeben wurde. Ein Schlüssel eines vorhergehenden Zustands wird später unter Bezugnahme auf 5 genauer beschrieben.
  • Die Austauschdaten-Erzeugungseinheit 60 potenziert in Reaktion auf das Empfangen einer Codierfolge jedes Element in der empfangenen Codierfolge mit dem Schlüssel eines nachfolgenden Zustands in Übereinstimmung mit dem nachfolgenden Zustand, zu dem von dem vorhergehenden Zustand gewechselt wurde, der den vorhergehenden Zuständen des Automaten entspricht, in Reaktion auf die Eingabe eines Zeichens, das durch ein Element spezifiziert wird. Anschließend erzeugt die Austauschdaten-Erzeugungseinheit 60 Austauschdaten, in die der Schlüssel eines nachfolgenden Zustands unter Verwendung des ersten Verschlüsselungsschemas verschlüsselt wurde, indem die Elemente, die mit dem Schlüssel eines nachfolgenden Zustands potenziert wurden, unter Verwendung einer Operation, die dem ersten Verschlüsselungsschema entspricht, kombiniert werden. Die Austauschdaten-Erzeugungseinheit 60 erzeugt außerdem in Übereinstimmung mit den Zuständen des Automaten Daten eines Endzustand, die einen Wert ”angenommen” angeben, wenn der Zustand der korrekte Endzustand ist, und einen Wert ”nicht angenommen” angeben, wenn der Zustand nicht der korrekte Endzustand ist. Das Verfahren zum Erzeugen von Austauschdaten wird später unter Bezugnahme auf 9 genau erläutert.
  • Die zweite Verschlüsselungseinheit 62 verschlüsselt die Austauschdaten, die für die vorhergehenden Zustände des Automaten unter Verwendung des entsprechenden Schlüssels eines vorhergehenden Zustands erzeugt wurden. Die zweite Verschlüsselungseinheit 62 verschlüsselt außerdem die Daten des Endzustands für alle Zustände des Automaten unter Verwendung des Schlüssels eines nachfolgenden Zustands, der dem letzten Zeichen in dem String entspricht. Der Verschlüsselungsvorgang der Austauschdaten wird unter Bezugnahme auf 5 genau erläutert. In Reaktion auf das Empfangen einer Codierfolge sendet die serverseitige Sendeeinheit 64 verschlüsselte Austauschdaten zu dem Client 20.
  • Auf diese Weise erzeugt der Server 30 in Reaktion auf das Empfangen einer Codierfolge Austauschdaten, bei denen der Schlüssel eines nachfolgenden Zustands unter Verwendung des ersten Verschlüsselungsschemas basierend auf der Codierfolge und in Übereinstimmung mit den vorhergehenden Zuständen des Automaten verschlüsselt wurde, verschlüsselt die Austauschdaten unter Verwendung des entsprechenden Schlüssels eines vorhergehenden Zustands und sendet die verschlüsselten Austauschdaten zu dem Client 20.
  • Die clientseitige Empfangseinheit 40 empfängt verschlüsselte Austauschdaten von dem Server 30 in Reaktion auf das Senden einer Codierfolge, die einem Zeichen entspricht. Außerdem empfängt die clientseitige Empfangseinheit 40 die verschlüsselten Daten des Endzustands in Übereinstimmung mit jedem Zustand des Automaten. Die clientseitige Schlüsselspeichereinheit 42 speichert einen einzigen Schlüssel eines vorhergehenden Zustands in Übereinstimmung mit jedem Zeichen in einem String. Im Einzelnen erfasst und speichert die Schlüsselspeichereinheit 42 im Voraus einen einzigen Schlüssel eines vorhergehenden Zustands für das erste Zeichen in dem String. In Reaktion auf das Empfangen aller Zeichen, die nicht das erste Zeichen in dem String sind, speichert die clientseitige Schlüsselspeichereinheit 42 den Schlüssel des nachfolgenden Zustands, der dem Zeichen entspricht, das zuvor durch die erste Entschlüsselungseinheit 46 entschlüsselt wurde, als den Schlüssel eines vorhergehenden Zustands.
  • Die zweite Entschlüsselungseinheit 44 entschlüsselt die verschlüsselten Austauschdaten, die durch die clientseitige Empfangseinheit 40 empfangen werden, unter Verwendung des Schlüssels des vorhergehenden Zustands für das entsprechende Zeichen, das in der clientseitigen Schlüsselspeichereinheit 42 gespeichert ist. Die zweite Entschlüsselungseinheit 44 kann von den Gruppen von Austauschdaten lediglich eine Gruppe von Austauschdaten entschlüsseln, wenn das Zeichen korrekt ist.
  • Die erste Entschlüsselungseinheit 46 entschlüsselt den Schlüssel des nachfolgenden Zustands unter Verwendung des ersten Verschlüsselungsschemas aus der einen Gruppe von Austauschdaten, die von den Gruppen von Austauschdaten durch die zweite Entschlüsselungseinheit 44 entschlüsselt wurde. Mit anderen Worten, die erste Entschlüsselungseinheit 46 entschlüsselt den Schlüssel des nachfolgenden Zustands aus der einen Gruppe von Austauschdaten, die durch die zweite Entschlüsselungseinheit 44 unter Verwendung des Entschlüsselungsschlüssels entschlüsselt wurde, der dem Entschlüsselungsschlüssel entspricht, der in dem ersten Verschlüsselungsschema durch die erste Verschlüsselungseinheit 36 verwendet wurde, um die Elemente der Folge zu verschlüsseln, die dem Zeichen entsprechen.
  • Die erste Entschlüsselungseinheit 46 entschlüsselt die Daten des Endzustands unter Verwendung des entschlüsselten Schlüssels des Endzustands, nachdem die Entschlüsselung, die dem letzten Zeichen in dem String entspricht, abgeschlossen wurde. Die erste Entschlüsselungseinheit 46 schreibt den entschlüsselten Schlüssel des nachfolgenden Zustands in die clientseitige Speichereinheit 42 als den Schlüssel des vorhergehenden Zustands für das nächste Zeichen, wenn die Entschlüsselung, die einem anderen Zeichen als dem letzten Zeichen in dem String entspricht, abgeschlossen wurde. Die erste Entschlüsselungseinheit 46 leitet den Wert ”angenommen” oder ”nicht angenommen” zu der Feststellungseinheit 48, wenn die Daten des Endzustands und der Wert ”angenommen” oder ”nicht angenommen” entschlüsselt wurden.
  • Wenn die zweite Entschlüsselungseinheit 44 Austauschdaten in der Mitte eines String nicht entschlüsseln kann oder ein Wert ”nicht angenommen” durch die erste Entschlüsselungseinheit 46 entschlüsselt wurde, ermittelt die Feststellungseinheit 48 auf der Grundlage des eingegebenen String, dass der Automat, über den der Server 30 verfügt, nicht zu dem korrekten Endzustand gewechselt hat. Wenn die erste Entschlüsselungseinheit 46 einen Wert ”angenommen” entschlüsselt hat, ermittelt die Feststellungseinheit 48 auf der Grundlage des eingegebenen String, dass der Automat, über den der Server 30 verfügt, zu dem korrekten Endzustand gewechselt hat.
  • Auf diese Weise entschlüsselt der Client 20 nacheinander ab dem ersten Zeichen die empfangenen verschlüsselten Austauschdaten, die den Zeichen entsprechen. Wenn die Austauschdaten, die dem letzten Zeichen entsprechen, entschlüsselt wurden und Daten, die eine Annahme angeben, empfangen wurden, ermittelt der Client 20, dass der Automat in Reaktion auf den eingegebenen String zu dem korrekten Endzustand gewechselt hat. Auf diese Weise kann das Prüfsystem 10 auf der Grundlage eines String, der in einen Client 20 eingegeben wird, ermitteln, ob ein Automat, über den ein Server 30 verfügt, zu dem Endzustand des Übergangs gewechselt hat.
  • 3 zeigt einen Ablaufplan der Verarbeitung, die durch den Client 20 in der vorliegenden Ausführungsform ausgeführt wird. 4 zeigt ein Beispiel von Chiffriertext, der unter Verwendung des ersten Verschlüsselungsschemas erzeugt wurde.
  • Wenn ein String eingegeben wird, wählt der Client 20 die Zeichen in dem eingegebenen String einzeln nacheinander aus und führt die Verarbeitung von Schritt S11 bis Schritt S14 an jedem der Zeichen aus.
  • Zuerst gibt der Client 20 im Schritt S11 ein Zeichen ein. In der vorliegenden Ausführungsform wird das Zeichen Xσ, das als das σ-te Zeichen (Index σ) in der Gruppe Σ von eingebbaren Zeichen spezifiziert ist, eingegeben. Wenn die Zeichen z. B. unter Verwendung eines einzigen Byte ausgedrückt werden, gibt der Client 20 alle Zeichen vom 0-ten bis 255-ten ein.
  • Anschließend setzt der Client 20 im Schritt S12 das eingegebene Zeichen in eine Folge V' um. Im Einzelnen erzeugt der Client 20 eine Folge, die Elemente für eine Anzahl |Σ| von Zeichen in der Gruppe Σ von eingebbaren Zeichen enthält. Wenn z. B. ein Zeichen eingegeben wird, das durch ein einziges Byte ausgedrückt wird, enthält die hergestellte Folge 256 Elemente.
  • Die hergestellte Folge weist eine eindeutige Zuordnung zu den Zeichen auf, die in der Gruppe Σenthalten sind. Wenn z. B. ein Zeichen durch ein einziges Bit ausgedrückt wird (ein Zeichen, das durch ”0” oder ”1” ausgedrückt wird), gibt es in der Folge zwei Elemente, wobei das erste Element ”0” entspricht und das zweite Element ”1” entspricht.
  • Der Client 20 verwendet dann die hergestellte Folge, um eine Folge zu erzeugen, bei der ein Element, das ein durch die Zeicheneingabeeinheit 32 eingegebenes Zeichen spezifiziert, ein Non-Unity-Wert ist, und Elemente, die keines dieser Zeichen spezifizieren, Unity-Werte sind. Hier ist ein Unity-Wert ein Unity-Wert in einer binären Operation in Übereinstimmung mit dem ersten Verschlüsselungsschema, das später beschrieben wird. Das wird später genauer beschrieben, aber der Unity-Wert ist ”0” oder ein Unity-Wert in einer Additionsoperation, und ein Non-Unity-Wert ist ein vorgegebener numerischer Wert, der von ”0” verschieden ist (z. B. ”1”), wenn das erste Verschlüsselungsschema ein Verschlüsselungsschema mit einem additiven Homomorphismus ist. Der Unity-Wert ist ”1” oder ein Unity-Wert in einer Multiplikationsoperation, und ein Non-Unity-Wert ist ein vorgegebener numerischer Wert, der von ”1” verschieden ist, wenn das erste Verschlüsselungsschema ein Verschlüsselungsschema mit einem multiplikativen Homomorphismus ist.
  • In der vorliegenden Ausführungsform ist das erste Verschlüsselungsschema ein Verschlüsselungsschema mit einem additiven Homomorphismus. Wie nachstehend in Gleichung 1 gezeigt, erzeugt somit der Client 20 eine Codierfolge V', bei der das Element, das ein Zeichen Xσ spezifiziert (Element bσ im Index σ), ”1” ist und die Elemente, die kein Zeichen spezifizieren (die Elemente, die von jenen mit einem Index σ verschieden sind), sind ”0”. Gleichung 1
    Figure 00130001
  • Es wird angemerkt, dass bx Werte der Elemente mit dem Index x repräsentiert, die in der Folge enthalten sind. Dabei ist x eine ganze Zahl im Bereich 0 ≤ x ≤ (|Σ| – 1). σ ist ebenfalls der Index, der das Zeichen Xσ in der Zeichengruppe Σ spezifiziert und eine ganze Zahl im Bereich 0 ≤ σ ≤ (|Σ| – 1) ist.
  • Anschließend verschlüsselt im Schritt S13 der Client 20 unter Verwendung des ersten Verschlüsselungsschemas jedes der Elemente, die in der Folge enthalten sind, die durch die Ablaufsteuerungseinheit 34 erzeugt wird, um eine Codefolge V zu erzeugen. Auf diese Weise kann der Client 20 in Übereinstimmung mit dem Zeichen eine Codefolge erzeugen, bei der das Element, das das Zeichen spezifiziert, ein Wert ist, der durch Verschlüsseln eines Non-Unity-Werts unter Verwendung des ersten Verschlüsselungsschema erhalten wird, und die Werte, die das Zeichen nicht spezifizieren, Werte sind, die durch Verschlüsseln eines Unity-Werts unter Verwendung des ersten Verschlüsselungsschemas enthalten werden.
  • Das erste Verschlüsselungsschema ist ein Verschlüsselungsschema mit öffentlichem Schlüssel, das Identifikationsprobleme (IND-CPA) in Bezug auf selektive Klartext-Angriffe erfüllt und einen Homomorphismus (additiven Homomorphismus oder multiplikativen Homomorphismus) aufweist. Der Chiffriertext eines Verschlüsselungsschemas mit einem additiven Homomorphismus weist z. B. die Charakteristiken auf, die nachfolgend in Gleichung (12) angegeben sind. Dabei repräsentieren m1, m2 und m Klartext.
  • Gleichung 2
    • E(m1)·E(m2) = E(m1 + m2) (E(m))k = E(k·m) (12)
  • Wenn in einem Verschlüsselungsschema mit additivem Homomorphismus zwei Chiffriertexte E(m1), E(m2) bereitgestellt werden, sind die Ergebnisse der Addition der Chiffriertexte (E(m1)·E(m2)) gleich dem Chiffriertext (E(m1 + m2)), der durch Ausführen der Verschlüsselung nach dem Addieren der Klartexte erhalten wird. Außerdem ist das Ergebnis des Potenzierens des Chiffriertexts mit einem vorgegebenen numerischen Wert k ((E(m))k) gleich Chiffriertext (E(k·m)), der durch Ausführen der Verschlüsselung nach dem Potenzieren des Klartexts mit dem numerischen Wert k erhalten wird.
  • Außerdem ist das erste Verschlüsselungsschema wie z. B. in 4 gezeigt ein Schema, bei dem der Chiffriertext in jeder Verschlüsselungsoperation verschieden ist, selbst wenn der gleiche Chiffriertext verschlüsselt wird. Mit anderen Worten, bei dem ersten Verschlüsselungsschema ist Chiffriertext, der bei einem ersten Mal erhalten wird, wenn ein vorgegebener Klartext unter Verwendung eines Verschlüsselungsschlüssels verschlüsselt wird, von Chiffriertext verschieden, der bei einem zweiten Mal erhalten wird, wenn der gleiche Klartext unter Verwendung desselben Verschlüsselungsschlüssels verschlüsselt wird. Derselbe Klartext kann jedoch entschlüsselt werden, indem die beiden Chiffriertexte verwendet werden, die beim ersten und zweiten Mal erhalten wurden. Auf diese Weise kann der Client 20 die Notwendigkeit der Feststellung eliminieren, ob jedes Element in einer Folge Chiffriertext darstellt, der durch Verschlüsseln eines Unity-Werts erhalten wird, oder Chiffriertext darstellt, der durch Verschlüsseln eines Non-Unity-Werts erhalten wird.
  • Ein Verschlüsselungsschema, von dem bekannt ist, dass es diese Charakteristiken aufweist, ist ein Expansions-ElGamal-Verschlüsselungsschema. In der vorliegenden Ausführungsform erzeugt der Client 20 die nachfolgend in Gleichung (13) gezeigte Codierfolge unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas als das erste Verschlüsselungsschema.
  • Gleichung 3
    • V = [E(b0), E(b1), E(b2), ..., E(bσ), ..., E(b|Σ|-1)] = [E(0), E(0), E(0), ..., E(1), ..., E(0)] (13)
  • Mit anderen Worten, in der vorliegenden Ausführungsform erzeugt der Client 20 eine Verschlüsselungsfolge V, in der das Element, das das Zeichen Xσ (ein Element mit dem Index σ) spezifiziert, Chiffriertext ist, bei dem ”1” unter Verwendung des Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt wurde, und die Elemente, die ein Zeichen nicht spezifizieren (die Elemente, die von jenen mit dem Index a verschieden sind), sind Chiffriertext, bei dem ”0” unter Verwendung des Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt wurde.
  • Anschließend sendet der Client 20 im Schritt S14 die erzeugte Codierfolge zu dem Server 30. In dieser Situation sendet der Client 20 eine Codierfolge, bei der die Reihenfolge der Zeichen, die dem String entsprechen, bekannt ist. Der Client 20 sendet z. B. die Verschlüsselungsfolgen in der Reihenfolge der Zeichen. Der Client 20 kann eine Verschlüsselungsfolge gemeinsam mit einem Index senden, der die Reihenfolge der Zeichen angibt.
  • 5 zeigt einen Ablaufplan der Verarbeitung, die in der vorliegenden Ausführungsform durch den Server 30 ausgeführt wird. 6 zeigt ein Beispiel einer Übergangstabelle für einen Automaten, über den in der vorliegenden Ausführungsform der Server 30 verfügt. 7 zeigt eine Schlüsseltabelle, die eine Vielzahl von Schlüsseln vorhergehender Zustände enthält, die vorhergehenden Zuständen entsprechen, wenn ein bestimmtes Zeichen eingegeben wird. 8 zeigt eine Schlüsseltabelle, die eine Vielzahl von Schlüsseln nachfolgender Zustände enthält, die nachfolgenden Zuständen entsprechen, wenn ein bestimmtes Zeichen eingegeben wird.
  • Zunächst empfängt der Server 30 im Schritt S21 eine Codierfolge in Übereinstimmung mit allen Zeichen von dem Client 20. Der Server 30 führt vom Schritt S22 bis zum Schritt S30 die Verarbeitung an einer empfangenen Codierfolge aus. In dieser Situation führt der Server 30 vom Schritt S22 bis zum Schritt S30 die Verarbeitung an allen Zeichen beginnend mit der Codierfolge, die dem ersten Zeichen entspricht, nacheinander aus.
  • Der Server 30 führt z. B. vom Schritt S22 bis zum Schritt S30 die Verarbeitung an den Codierfolgen in der empfangenen Reihenfolge, wenn die Codierfolgen von dem Client 20 gesendet werden, in der Reihenfolge der Zeichen aus. Außerdem führt der Server 30 vom Schritt S22 bis zum Schritt 33 die Verarbeitung an den Codierfolgen in der Reihenfolge des Index, wenn die Codierfolgen von dem Client 20 gesendet werden, gemeinsam mit einem Index, der die Reihenfolge der Zeichen angibt, aus.
  • Anschließend liest der Server 30 im Schritt S22 den Automaten. Der Automat enthält eine Übergangstabelle, die die Zustandswechsel, eine Gruppe von Zuständen, den Anfangszustand und den korrekten Endzustand repräsentiert. Die Zustandswechsel, die durch den Automaten ausgeführt werden, sind z. B. in der in 6 gezeigten Übergangstabelle repräsentiert. Der Server 30 kann auf diese Übergangstabelle Bezug nehmen, um den nächsten Zustand (nachfolgenden Zustand) zu identifizieren, zu dem aus dem momentanen Zustand (vorhergehenden Zustand) gewechselt werden soll, wenn ein vorgegebenes Zeichen bereitgestellt wird.
  • In der vorliegenden Ausführungsform weist der Automat z. B. (|Q|) Zustände auf, die durch q0 bis q|Q| – 1 dargestellt werden. In der vorliegenden Ausführungsform kann der Automat außerdem (|Σ|) Zeichen von x0 bis x|Σ| – 1 annehmen. Der Automat wechselt in der vorliegenden Ausführungsform zu dem j-ten nachfolgenden Zustand qj, wenn das σ-te Zeichen Xσ in dem i-ten vorhergehenden Zustand qi bereitgestellt wurde. Dabei sind i und j ganze Zahlen zwischen 0 und der Zustandsanzahl (|Q| – 1).
  • Anschließend liest der Server 30 im Schritt S23 die Schlüssel vorhergehender Zustände, die den vorhergehenden Zuständen entsprechen. In der vorliegenden Ausführungsform speichert der Server 30 wie in 7 gezeigt Schlüssel vorhergehender Zustände S0 bis S|Q| – 1, die den vorhergehenden Zuständen q0 bis q|Q| – 1 entsprechen, und ruft sie ab. Diese Schlüssel vorhergehender Zustände sind dieselben wie die Schlüssel nachfolgender Zustände für die vorhergehenden Zeichen und die Werte ändern sich jedes Mal, wenn ein Zeichen eingegeben wird. Der Schlüssel eines vorhergehenden Zustands, der dem anfänglichen Zeichen entspricht, wird zuvor erzeugt. In der vorliegenden Ausführungsform liest der Server 30 den Schlüssel Sj eines vorhergehenden Zustands, der dem i-ten vorhergehenden Zustand qi entspricht, wenn ein Zeichen eingegeben wird.
  • Anschließend erzeugt der Server 30 im Schritt S24 Schlüssel nachfolgender Zustände für jeden nachfolgenden Zustand. Hier sind die Schlüssel nachfolgender Zustände Zufallszahlen, die den nachfolgenden Zuständen des Automaten zugehörig sind. In der vorliegenden Ausführungsform erzeugt der Server 30 wie in 8 gezeigt Schlüssel r0 bis r|Q| – 1 für alle nachfolgenden Zustände q0 bis q|Q| – 1. Diese Schlüssel nachfolgender Zustände weisen Werte auf, die sich jedes Mal ändern, wenn ein Zeichen eingegeben wird. In der vorliegenden Ausführungsform liest der Server 30 z. B. den Schlüssel rj eines nachfolgenden Zustands für den j-ten nachfolgenden Zustand qj, wenn ein Zeichen eingegeben wird.
  • Anschließend führt der Server 30 vom Schritt S25 bis zum Schritt S28 die Schleifenverarbeitung für alle vorhergehenden Zustände aus. In der vorliegenden Ausführungsform führt der Server 30 die Verarbeitung im Schritt S26 und im Schritt S27 für alle vorhergehenden Zustände q0 bis q|Q| – 1 aus.
  • Im Schritt S26 erzeugt der Server 30 Austauschdaten, in denen ein Schlüssel eines nachfolgenden Zustands, der dem nachfolgenden Zustand entspricht, zu dem von dem vorhergehenden Zustand in Reaktion auf das Eingeben eines der Codierfolge entsprechenden Zeichens gewechselt wird, unter Verwendung des ersten Verschlüsselungsschemas verschlüsselt ist. Der vorhergehende Zustand soll z. B. qi sein und das Zeichen, das der empfangenen Codierfolge entspricht, soll Xσ sein (mit anderen Worten, die empfangene Codierfolge wird aus dem Zeichen Xσ erzeugt). In diesem Fall ist der nachfolgende Zustand, zu dem in Reaktion auf das Zeichen Xσ gewechselt wird, das im vorhergehenden Zustand qi eingegeben wird, qj wie in 6 angegeben. Außerdem lautet der Schlüssel des nachfolgenden Zustands, der dem nachfolgenden Zustand qj entspricht, rj wie in 8 gezeigt.
  • Deswegen erzeugt der Server 30 wie in Gleichung (14) gezeigt als Austauschdaten Ci Chiffriertext, in dem rj mit dem ersten Verschlüsselungsschema verschlüsselt ist, wenn der vorhergehende Zustand qi ist und das Zeichen, das der empfangenen Codierfolge entspricht, Xσ ist. Das Verfahren zum Erzeugen von Austauschdaten wird später unter Bezugnahme auf 9 genauer erläutert.
  • Gleichung 4
    • Austauschdaten für nachfolgenden Zustand qi (Schlüssel rj des nachfolgenden Zustands) = E(rj) = Ci (14)
  • Anschließend verschlüsselt der Server 30 im Schritt S27 die erzeugten Austauschdaten unter Verwendung des entsprechenden Schlüssels des vorhergehenden Zustands. In diesem Fall verschlüsselt der Server 30 die Austauschdaten unter Verwendung eines Verschlüsselungsschemas mit privatem Schlüssel unter Verwendung eines Nachrichten-Authentifizierungscodes (MAC). In der vorliegenden Ausführungsform verschlüsselt z. B. der Server 30 die Austauschdaten unter Verwendung eines Diffie-Hellman-Schlüssels.
  • Im Schritt S28 überspringt der Server 30 die Schleife und bringt den Vorgang zum Schritt S29 voran, wenn die Verarbeitung im Schritt S26 und im Schritt S27 an allen vorhergehenden Zuständen ausgeführt wurde.
  • Anschließend führt der Server 30 die Verarbeitung im Schritt S29 aus, wenn eine Codierfolge, die dem letzten Zeichen des String entspricht, empfangen wurde. Der Server 30 überspringt die Verarbeitung im Schritt S29 und bringt den Vorgang zum Schritt S30, wenn die Codierfolge, die einem von dem letzten Zeichen in dem String verschiedenen Zeichen entspricht, empfangen wurde.
  • Wenn im Schritt S29 die Codierfolge, die dem letzten Zeichen des String entspricht, empfangen wurde, erzeugt der Server 30 Daten eines Endzustands, die einen ”angenommen” angebenden Wert repräsentieren, wenn der Zustand der korrekte Endzustand unter den Zuständen des Automaten ist, oder einen ”nicht angenommen” angebenden Wert repräsentieren, wenn der Zustand nicht der korrekte Endzustand ist. Anschließend verschlüsselt der Server 30 die Daten des Endzustands, die für die Zustände des Automaten erzeugt wurden, unter Verwendung des erzeugten Schlüssels des nachfolgenden Zustands, der dem letzten Zeichen des String entspricht.
  • Anschließend sendet der Server 30 im Schritt S30 die Austauschdaten, die für alle vorhergehenden Zustände erzeugt und verschlüsselt wurden, zu dem Client 20. Der Server 30 sendet außerdem zu dem Client 20 Daten des Endzustands, die für die Zustände erzeugt und verschlüsselt werden, wenn die Codierfolge, die dem letzten Zeichen entspricht, empfangen wurde. In diesem Fall sortiert der Server 30 willkürlich und sendet für jede Codierfolge die Austauschdaten, die für alle vorhergehenden Zustände des Automaten verschlüsselt wurden. Außerdem sendet der Server 30 in diesem Fall zu dem Client 20 verschlüsselte Austauschdaten, damit die Reihenfolge von Zeichen, die der empfangenen Codierfolge zugehörig sind, klar ist. Der Server 30 sendet z. B. zu dem Client 20 verschlüsselte Austauschdaten, denen ein Index, der die Reihenfolge der Zeichen angibt, oder Informationen, die die entsprechenden Codierfolgen identifizieren, angefügt wurde.
  • In der vorliegenden Ausführungsform werden Austauschdaten C0 bis C|Q| – 1 in Übereinstimmung mit vorhergehenden Zuständen q0 bis q|Q| – 1 erzeugt. In diesem Fall verschlüsselt der Server 30 wie in Gleichung (15) gezeigt die Austauschdaten C0 bis C|Q| – 1 unter Verwendung des entsprechenden Schlüssels des vorhergehenden Zustands S0 bis S|Q| – 1. Enc(x, y) repräsentiert das Verschlüsseln von Daten y mit einem Diffie-Hellman-Schlüssel x. Gleichung 5
    Figure 00200001
  • Wenn die Verarbeitung des letzten Zeichens in dem String abgeschlossen wurde, beendet der Server 30 den Ablauf. Wenn die Verarbeitung eines Zeichens, das von dem letzten Zeichen in dem String verschieden ist, abgeschlossen wurde, speichert der Server 30 im Schritt S30 die Schlüssel der nachfolgenden Zustände r0 bis rq|Q| – 1 in Übereinstimmung mit den nachfolgenden Zuständen q0 bis q|Q| – 1 als die Schlüssel vorhergehender Zustände für das nächste Zeichen. Dann kehrt der Server 30 zum Beginn des Vorgangs zurück und führt den Vorgang an den Codierfolgen aus, die dem nächsten Zeichen zugehörig sind.
  • 9 zeigt einen Ablaufplan des Vorgangs zum Erzeugen von Austauschdaten, der in der vorliegenden Ausführungsform durch den Server 30 ausgeführt wird. Der Server 30 führt die Verarbeitung vom Schritt S31 bis zum Schritt S37 aus, die nachfolgend als der Vorgang zum Erzeugen von Austauschdaten im Schritt S26 von 5 erläutert ist.
  • Zuerst führt der Server 30 im Schritt S31 bis zum Schritt S36 die Schleifenverarbeitung für alle Elemente in der empfangenen Codierfolge aus. In der vorliegenden Ausführungsform führt der Server 30 die Verarbeitung vom Schritt S32 bis zum Schritt S35 für alle Elemente vom 0-ten Element bis zum (|Σ| – 1)-ten Element aus.
  • Im Schritt S32 spezifiziert der Server 30 das Zeichen, das dem Element entspricht, das verarbeitet werden soll. Es gibt z. B. zwei Elemente in der Codierfolge, wenn ein Zeichen eingegeben wird, das durch ein einziges Bit ausgedrückt wird. In diesem Fall spezifiziert der Server 30 z. B. ”0” als das Zeichen, das dem Element entspricht, wenn das erste Element in der Codierfolge verarbeitet werden soll, und spezifiziert ”1” als das Zeichen, das dem Element entspricht, wenn das zweite Element in der Codierfolge verarbeitet werden soll. Hier soll der Server 30 das Zeichen Xσ, das dem σ-ten Zeichen entspricht, spezifizieren.
  • Anschließend spezifiziert der Server 30 im Schritt S33 den nachfolgenden Zustand, zu dem aus dem vorhergehenden Zustand gewechselt werden soll, in Reaktion auf das Zeichen, das durch das Element spezifiziert ist, das eingegeben wird, auf der Grundlage des vorhergehenden Zustands und des spezifizierten Zeichens, das verarbeitet werden soll. Hier soll der vorhergehende Zustand, der durch den Server 30 verarbeitet werden soll, qi sein. In diesem Fall bezieht sich der Server 30 auf die Übergangstabelle für den Automaten (z. B. die Übergangstabelle in 6) und spezifiziert qj als den nachfolgenden Zustand, zu dem aus dem vorhergehenden Zustand qi in Reaktion auf die Eingabe des Zeichens Xσ gewechselt werden soll.
  • Anschließend wählt der Server 30 im Schritt S34 aus den Schlüsseln eines nachfolgenden Zustands, die im Schritt S24 erzeugt wurden, den Schlüssel eines nachfolgenden Zustands aus, der dem spezifizierten nachfolgenden Status qj entspricht. Hier wählt der Server 30 rj aus der Tabelle von erzeugten Schlüsseln eines nachfolgenden Zustands (z. B. aus der Tabelle von 8) als den Schlüssel eines nachfolgenden Zustands aus, der dem nachfolgenden Zustand qj entspricht.
  • Anschließend potenziert der Server 30 im Schritt S35 das Zielelement mit dem Schlüssel rj eines nachfolgenden Zustands. Hier wird das σ-te Element E(bσ) mit dem Schlüssel rj eines nachfolgenden Zustands potenziert wie in Gleichung (16) gezeigt.
  • Gleichung 6
    • E(bσ)rj = E(bσ × rj) (16)
  • Folglich ist wegen der Charakteristiken des ersten Verschlüsselungsschemas (additiver Homomophismus) der Wert (bσ × rj), der durch Potenzieren des Werts (bσ) mit dem Schlüssel rj eines nachfolgenden Zustands vor der Verschlüsselung des Elements unter Verwendung des ersten Verschlüsselungsschemas erhalten wird, gleich dem unter Verwendung des ersten Verschlüsselungsschemas verschlüsselten Chiffriertext.
  • Anschließend überspringt der Server 30 im Schritt S36 die Schleife und bringt den Vorgang zum Schritt S37 voran, wenn die Verarbeitung vom Schritt S32 bis Schritt S35 an allen Elementen ausgeführt wurde, die in der Codierfolge enthalten sind.
  • Im Schritt S37 kombiniert der Server 30 die Elemente, die mit den Schlüsseln der nachfolgenden Zustände potenziert wurden, unter Verwendung einer Operation, die dem ersten Verschlüsselungsschema entspricht. Der Server 30 verwendet die Ergebnisse dieser Kombination als die Austauschdaten, die dem nachfolgenden Zustand entsprechen.
  • In der vorliegenden Ausführungsform ist das erste Verschlüsselungsschema ein Verschlüsselungsschema, das einen additiven Homomorphismus aufweist, so dass der Server die Elemente, die mit den Schlüsseln der nachfolgenden Zustände potenziert wurden, unter Verwendung einer Additionsoperation kombiniert. Wenn das erste Verschlüsselungsschema ein Verschlüsselungsschema wäre, das einen multiplikativen Homomophismus aufweist, würde der Server 30 die Elemente unter Verwendung einer Multiplikationsoperation kombinieren.
  • Wie in Gleichung (17) gezeigt, wird eine Additionsoperation an den Elementen vom 0-ten Element bis zum (|Σ| – 1)-ten Element ausgeführt, um Austauschdaten zu erzeugen. Hier repräsentieren b0, b1, ..., bσ, ..., b(|Σ| – 1) die Werte der Elemente vor der Verschlüsselung unter Verwendung des ersten Verschlüsselungsschemas. Außerdem repräsentieren rΔ(qi, x0), rΔ(qi, x1), ..., rΔ(qi, xσ), ..., rΔ(qi, x|Σ| – 1) die Schlüssel nachfolgender Zustände, die verwendet werden, um die Potenz der Elemente zu erhöhen. Gleichung 7
    Figure 00230001
  • In der Codierfolge ist das Element, das das Zeichen spezifiziert, ein Wert, der durch Verschlüsseln eines Non-Unity-Werts unter Verwendung des ersten Verschlüsselungsschemas erhalten wird, und die Elemente, die nicht das Zeichen spezifizieren, sind Werte, die durch Verschlüsseln eines Unity-Werts unter Verwendung des ersten Verschlüsselungsschemas erhalten werden. Das erste Verschlüsselungsschema weist z. B. einen additiven Homomophismus auf und die Codierfolge V enthält wie in Gleichung (18) gezeigt ”1”, die ein Non-Unity-Wert der Additionsoperation für das Element bσ ist, das dem Zeichen Xσ entspricht, und ”0”, die ein Unity-Wert der Additionsoperation für die Elemente ist, die von dem Element bσ verschieden sind, das dem Zeichen Xσ entspricht.
  • Gleichung 8
    • V = [E(b0), E(b1), E(b2), ..., E(bσ), ..., E(b|Σ| – 1)] = [E(0), E(0), E(0), ..., E(1), ..., E(0)] (18)
  • Deswegen werden, wenn das Element in Gleichung (18) in Gleichung (17) eingesetzt wird, die Austauschdaten wie nachfolgend in Gleichung (19) gezeigt umgesetzt. Mit anderen Worten sind alle Elemente 0, die von dem Element verschieden sind, das dem Zeichen Xσ entspricht, und das Element, das dem Zeichen Xσ entspricht, ist der Wert des Schlüssels des nachfolgenden Zustands. Folglich sind die Austauschdaten Chiffriertext (E(rj)), bei dem das erste Verschlüsselungsschema verwendet wurde, um den Schlüssel rj des nachfolgenden Zustands zu verschlüsseln, der dem nachfolgenden Zustand qj entspricht, zu dem in Reaktion auf die Eingabe des Zeichens Xσ in Übereinstimmung mit der Codierfolge von dem vorhergehenden Zustand qi gewechselt wird.
  • Gleichung 9
    • Austauschdaten = E(0)·E(0)·...·E(rΔ(qj, xσ))·...·E(0) = E(rΔ(qj, xσ)) = E(rj) (19)
  • Wie oben beschrieben, kann der Server 30 die Verarbeitung vom Schritt S31 bis zum Schritt S37 ausführen, um Austauschdaten zu erzeugen, bei denen der erste Verschlüsselungsschlüssel verwendet wird, um den Schlüssel des nachfolgenden Zustands, der dem nachfolgenden Zustand entspricht, zu verschlüsseln, zu dem von dem vorhergehenden Zustand in Reaktion auf die Eingabe eines Zeichens, das der Codierfolge entspricht, gewechselt wird.
  • 10 zeigt einen Ablaufplan des Entschlüsselungsvorgangs, der in der vorliegenden Ausführungsform durch den Client 20 ausgeführt wird.
  • Zunächst empfängt der Client 20 im Schritt S41 verschlüsselte Austauschdaten von dem Server 30 in Reaktion auf das Empfangen einer Codierfolge, die einem Zeichen entspricht, das in dem String enthalten ist. Wenn die Codierfolge, die dem letzten Zeichen in dem String entspricht, gesendet wird, empfängt der Client 20 außerdem verschlüsselte Daten des Endzustands zusammen mit den verschlüsselten Austauschdaten. Der Client 20 führt die Verarbeitung vom Schritt S42 bis zum Schritt S51 an den verschlüsselten Austauschdaten aus, die empfangen wurden. In diesem Fall führt der Client 20 eine Verarbeitung an den verschlüsselten Austauschdaten gemäß der Reihenfolge der entsprechenden Zeichen aus.
  • Anschließend liest und speichert der Client 20 im Schritt S42 den Schlüssel des vorhergehenden Zustands, der dem entsprechenden Zeichen zugehörig ist. Der Client 20 empfängt z. B. von dem Server 30 den Schlüssel des vorhergehenden Zustands, der dem ersten Zeichen in dem String entspricht, und speichert diesen im Voraus. Außerdem speichert der Client 20 den Schlüssel des nachfolgenden Zustands, der dem vorhergehenden Zeichen entspricht, als den Schlüssel des vorhergehenden Zustands für die Zeichen, die von dem ersten Zeichen in dem String verschieden sind.
  • Anschließend führt der Client 20 die Schleifenverarbeitung vom Schritt S43 zum Schritt S46 für jede Gruppe von Austauschdaten aus. Im Schritt S44 entschlüsselt der Client 20 die verschlüsselten Austauschdaten, die unter Verwendung des abgerufenen Schlüssels des vorhergehenden Zustands verarbeitet werden sollen.
  • Hier kann der Client 20 eine Gruppe der verschlüsselten Austauschdaten entschlüsseln, wenn der Automat korrekt in einen anderen Zustand gewechselt hat, wenn das entsprechende Zeichen eingegeben wurde. Wenn der Automat korrekt in einen anderen Zustand gewechselt hat, wenn das entsprechende Zeichen eingegeben wurde, kann der Client 20 keine weiteren verschlüsselten Austauschdaten entschlüsseln.
  • Anschließend ermittelt der Client 20 im Schritt S45, ob die Austauschdaten entschlüsselt werden konnten (Schritt S45). Wenn eine Entschlüsselung möglich war (Ja im Schritt S45), geht der Client 20 im Vorgang zum Schritt S47 vor. Wenn keine Entschlüsselung möglich war (Nein im Schritt S45), geht der Client 20 im Vorgang zum Schritt S46 über.
  • Im Schritt S46 ermittelt der Client 20, ob die Verarbeitung lm Schritt S44 und im Schritt S45 für sämtliche Austauschdaten beendet wurde. Wenn die Verarbeitung für einige der Austauschdaten noch nicht beendet wurde, führt der Client 20 den Vorgang zum Schritt S43 zurück und führt die Verarbeitung vom Schritt S44 bis zum Schritt S45 an dem nächsten Satz von Austauschdaten aus. Wenn die Verarbeitung für sämtliche Austauschdaten beendet wurde, d. h. wenn einige der Austauschdaten nicht entschlüsselt werden konnten, ermittelt der Client 20, dass der Automat, über den der Server 30 verfügt, auf der Grundlage des eingegebenen String (nicht angenommen) nicht zu dem korrekten Endzustand wechseln konnte, und der Ablauf endet.
  • Wenn die Austauschdaten entschlüsselt werden konnten (Ja im Schritt S45), entschlüsselt der Client 20 im Schritt S47 weiterhin die entschlüsselten Austauschdaten unter Verwendung des ersten Verschlüsselungsschemas, um den Schlüssel des nachfolgenden Zustands zu entschlüsseln. Mit anderen Worten, der Client 20 entschlüsselt den Schlüssel des nachfolgenden Zustands in den entschlüsselten Austauschdaten unter Verwendung eines Entschlüsselungsschlüssels, der dem Verschlüsselungsschlüssel entspricht, der verwendet wurde, als die Elemente in der Codierfolge, die dem Zeichen entsprechen, unter Verwendung des ersten Verschlüsselungsschemas verschlüsselt wurden.
  • Anschließend ermittelt der Client 20 im Schritt S48, ob die Verarbeitung dem letzten Zeichen entsprach (Schritt S48). Wenn ermittelt wird, dass die Verarbeitung nicht dem letzten Zeichen entsprach (Nein im Schritt S48), geht die Verarbeitung zum Schritt S49 über. Im Schritt S49 sichert der Client 20 den entschlüsselten Schlüssel des nachfolgenden Zustands als den Schlüssel des vorhergehenden Zustands, der dem nächsten Zeichen entspricht. Wenn dann die Verarbeitung im Schritt S49 beendet wurde, wiederholt der Client 20 die Verarbeitung vom Schritt S41, um die Verarbeitung auszuführen, die dem nächsten Zeichen entspricht.
  • Wenn der Client 20 ermittelt hat, dass die Verarbeitung dem letzten Zeichen entspricht (Ja im Schritt S49), geht der Vorgang zum Schritt S50 über. Im Schritt S50 entschlüsselt der Client 20 die Daten des Endzustands unter Verwendung des entschlüsselten Schlüssels des nachfolgenden Zustands. In diesem Fall entschlüsselt der Client 20 die Daten des Endzustands Satz für Satz. Anschließend ermittelt der Client 20 im Schritt S51, ob der Wert ”angenommen” in den entschlüsselten Daten des Endzustands entschlüsselt wurde.
  • Wenn ermittelt wurde, dass der Wert ”angenommen” nicht entschlüsselt wurde (Nein im Schritt S51), ermittelt der Client 20, dass der Automat, über den der Server 30 verfügt, auf der Grundlage des eingegebenen String (nicht angenommen) nicht zu dem korrekten Endzustand gewechselt ist, und der Ablauf endet. Wenn ermittelt wurde, dass der Wert ”angenommen” entschlüsselt wurde (Ja im Schritt S51), ermittelt der Client 20, dass der Automat, über den der Server 30 verfügt, auf der Grundlage des eingegebenen String (angenommen) zu dem korrekten Endzustand gewechselt ist, und der Ablauf endet.
  • Wie oben erwähnt, kann das Prüfsystem 10 in der vorliegenden Ausführungsform prüfen, ob ein String durch einen Automaten angenommen wurde, ohne den String, der in den Client 20 eingegeben wurde, dem Server 30 offen zu legen und ohne den Automaten, über den der Server 30 verfügt, dem Client 20 offen zu legen. Somit werden in dem Prüfsystem 10 der vorliegenden Ausführungsform lediglich spezifische Informationen von dem Server 30 zu dem Client 20 geleitet und Informationen, die in den Client 20 eingegeben werden (wie etwa ein Passwort oder persönliche Informationen) werden dem Server 30 nicht offen gelegt.
  • 11 zeigt ein Beispiel eines Datenübergangs, bei dem Codierfolgen, die einer Vielzahl von Zeichen entsprechen, nebeneinander angeordnet sind und von dem Client 20 zu dem Server 30 gesendet werden. Der Client 20 und der Server 30 können den Sendevorgang und den Empfangsvorgang gleichzeitig an mehr als einem Zeichen ausführen.
  • Mit anderen Worten sammelt der Client 20 eine Vielzahl von Codierfolgen (z. B. N Codierfolgen), die einer Vielzahl von Zeichen (z. B. N Zeichen) entsprechen, die in dem eingegebenen String enthalten sind, und sendet diese parallel zu dem Server 30. Der Server 30 erzeugt dann verschlüsselte Austauschdaten, die einer Vielzahl von Zeichen (N Zeichen) entsprechen, in Reaktion auf das Empfangen einer Vielzahl von Codierfolgen (z. B. N Codierfolgen). Der Server 30 sendet dann die verschlüsselten Austauschdaten für die Vielzahl von Zeichen parallel zu dem Client 20.
  • Der Client 20 decodiert dann von den verschlüsselten Austauschdaten für das erste Zeichen nacheinander die verschlüsselten Austauschdaten für die Vielzahl von Zeichen. Auf diese Weise können der Client 20 und der Server 30 den Sendevorgang und den Empfangsvorgang gleichzeitig ausführen.
  • 12 zeigt ein Beispiel eines String, der in den Client 20 eingegeben wird, und ein Beispiel eines Automaten, über den der Server 30 verfügt. Das Folgende ist eine Erläuterung der Operationen, die unter Verwendung dieses spezifischen Beispiels durch den Client 20 und den Server 30 ausgeführt werden.
  • In diesem Beispiel gibt der Client 20 den String ”010” mit einer Länge (N) ”3” ein. Außerdem weist der Automat, über den der Server 30 verfügt, drei Zustände auf (”a”, ”b” und ”c”) und gibt Zeichen ”0” und ”1” ein. Der Automat weist außerdem einen Anfangszustand Q0 ”1” und einen korrekten Endzustand ”a” auf.
  • Bei diesem Beispiel wechselt der Automat zum Zustand ”a”, wenn das Zeichen ”0” im Zustand ”a” eingegeben wird, und wechselt zum Zustand ”b”, wenn das Zeichen ”1” im Zustand ”a” eingegeben wird. Außerdem wechselt der Automat zum Zustand ”a”, wenn das Zeichen ”0” im Zustand ”b” eingegeben wird, und wechselt zum Zustand ”c”, wenn das Zeichen ”1” im Zustand ”b” eingegeben wird. Außerdem wechselt der Automat zum Zustand ”c”, wenn das Zeichen ”0” im Zustand ”c” eingegeben wird, und wechselt zum Zustand ”c”, wenn das Zeichen ”1” im Zustand ”c” eingegeben wird.
  • 13 zeigt ein Beispiel der Codierfolge, wenn der String ”010” eingegeben wurde. In Reaktion auf das erste Zeichen ”0” erzeugt der Client 20 eine Folge V1', bei der der vorgegebene Non-Unity-Wert ”1” in dem ersten Element angeordnet ist und der Unity-Wert ”0” in dem zweiten Element angeordnet ist. Anschließend verschlüsselt der Client 20 die zwei Elemente in der Folge V1' unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas, um eine Codierfolge (V1 = [E(1), E(0)]) zu erzeugen.
  • In Reaktion auf das zweite Zeichen ”1” erzeugt der Client 20 eine Folge V2', bei der der Unity-Wert ”0” in dem ersten Element angeordnet ist und der vorgegebene Non-Unity-Wert ”1” in dem zweiten Element angeordnet ist. Anschließend verschlüsselt der Client 20 die zwei Elemente in der Folge V2' unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas, um eine Codierfolge (V2 = [E(0), E(1)]) zu erzeugen.
  • In Reaktion auf das dritte Zeichen ”0” erzeugt der Client 20 eine Folge V3', bei der der vorgegebene Non-Unity-Wert ”1” in dem ersten Element angeordnet ist und der Unity-Wert ”0” in dem zweiten Element angeordnet ist. Anschließend verschlüsselt der Client 20 die zwei Elemente in der Folge V3 unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas, um eine Codierfolge (V3 = [E(1), E(0)]) zu erzeugen.
  • 14 zeigt ein Beispiel einer Übergangstabelle für einen Automaten und eine Tabelle der Schlüssel nachfolgender Zustände, die dem ersten Zeichen, dem zweiten Zeichen und dem dritten Zeichen entsprechen. Als die Schlüssel nachfolgender Zustände für das erste Zeichen erzeugt der Server 30 wie in 14(A) gezeigt den Schlüssel ra1 des nachfolgenden Zustands, der dem Zustand ”a” entspricht, den Schlüssel rb1 des nachfolgenden Zustands, der dem Zustand ”b” entspricht, und den Schlüssel rc1 des nachfolgenden Zustands, der dem Zustand ”c” entspricht. Im Ergebnis enthält die Schlüsseltabelle der Schlüssel nachfolgender Zustände für das erste Zeichen, wie der Übergangstabelle des Automaten zugewiesen, ra1 für das Zeichen ”0” im Zustand ”a”, rb1 für das Zeichen ”1” im Zustand ”a”, ra1 für das Zeichen ”0” im Zustand ”b”, rc1 für das Zeichen ”1” im Zustand ”b”, rc1 für das Zeichen ”0” im Zustand ”c” und rc1 für das Zeichen ”1” im Zustand ”c”.
  • Als die Schlüssel des nachfolgenden Zustands für das zweite Zeichen erzeugt der Server 30 wie in 14(B) gezeigt den Schlüssel ra2 des nachfolgenden Zustands, der dem Zustand ”a” entspricht, den Schlüssel rb2 des nachfolgenden Zustands, der dem Zustand ”b” entspricht, und den Schlüssel rc2 des nachfolgenden Zustands, der dem Zustand ”c” entspricht. Im Ergebnis enthält die Schlüsseltabelle der Schlüssel nachfolgender Zustände für das zweite Zeichen, wie der Übergangstabelle des Automaten zugewiesen, ra2 für das Zeichen ”0” im Zustand ”a”, rb2 für das Zeichen ”1” im Zustand ”a”, ra2 für das Zeichen ”0” im Zustand ”b”, rc2 für das Zeichen ”1” im Zustand ”b”, rc2 für das Zeichen ”0” im Zustand ”c” und rc2 für das Zeichen ”1” im Zustand ”c”.
  • Als die Schlüssel des nachfolgenden Zustands für das dritte Zeichen erzeugt der Server 30 wie in 14(C) gezeigt den Schlüssel ra3 des nachfolgenden Zustands, der dem Zustand ”a” entspricht, den Schlüssel rb3 des nachfolgenden Zustands, der dem Zustand ”b” entspricht, und den Schlüssel rc3 des nachfolgenden Zustands, der dem Zustand ”c” entspricht. Im Ergebnis enthält die Schlüsseltabelle für eine Annahme bzw. Nichtannahme des dritten Zeichens, wie der Übergangstabelle des Automaten zugewiesen, ra3 für das Zeichen ”0” im Zustand ”a”, rb3 für das Zeichen ”1” im Zustand ”a”, ra3 für das Zeichen ”0” im Zustand ”b”, rc3 für das Zeichen ”1” im Zustand ”b”, rc3 für das Zeichen ”0” im Zustand ”c” und rc3 für das Zeichen ”1” im Zustand ”c”.
  • 15 zeigt ein Verarbeitungsbeispiel, bei dem Austauschdaten für jeden vorhergehenden Zustand aus der Codierfolge des ersten Zeichens erzeugt werden.
  • Der Server 30 führt die folgende Verarbeitung aus, wenn Austauschdaten für jeden vorhergehenden Zustand aus der Codierfolge für das erste Zeichen erzeugt werden.
  • Wenn wie in 15(A) gezeigt Austauschdaten für den Zustand ”a” des ersten Zeichens erzeugt werden, potenziert der Server 30 das erste Element E(1) der Codierfolge V1 des ersten Zeichens mit dem Schlüssel ”ra1” des nachfolgenden Zustands, der dem Zustand ”a” und dem Zeichen ”0” in der Schlüsseltabelle für das erste Zeichen zugewiesen ist. Außerdem potenziert der Server 30 das zweite Element E(0) der Codierfolge V1 des ersten Zeichens mit dem Schlüssel ”rb1” des nachfolgenden Zustands, der dem Zustand ”a” und dem Zeichen ”1” in der Schlüsseltabelle für das erste Zeichen zugewiesen ist. Anschließend verbindet der Server 30 die Elemente, die mit dem Schlüssel des nachfolgenden Zustands potenziert wurden, unter Verwendung einer Additionsoperation. Auf diese Weise kann der Server 30 dem vorhergehenden Zustand ”a” entsprechende Austauschdaten erzeugen, in denen der Schlüssel ra1 des nachfolgenden Zustands unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas, basierend auf dem Wesen eines Verschlüsselungsschemas mit einem additiven Homomorphismus, verschlüsselt ist.
  • Wenn wie in 15(B) gezeigt Austauschdaten für den Zustand ”b” des ersten Zeichens erzeugt werden, potenziert der Server 30 das erste Element E(1) der Codierfolge V1 des ersten Zeichens mit dem Schlüssel ”ra1” des nachfolgenden Zustands. Der Server 30 potenziert außerdem das zweite Element E(0) der Codierfolge V1 des ersten Zeichens mit dem Schlüssel ”rc1” des nachfolgenden Zustands. Anschließend führt der Server 30 eine Additionsoperation aus, um diese zu verbinden. Auf diese Weise kann der Server 30 dem vorhergehenden Zustand ”b” entsprechende Austauschdaten erzeugen, in denen der Schlüssel ra1 des vorhergehenden Zustands unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt wurde.
  • Wenn wie in 15(C) gezeigt Austauschdaten für den Zustand ”c” des ersten Zeichens erzeugt werden, potenziert der Server 30 das erste Element E(1) der Codierfolge V1 des ersten Zeichens mit dem Schlüssel ”rc1” des nachfolgenden Zustands.
  • Außerdem potenziert der Server 30 das zweite Element E(0) der Codierfolge V1 des ersten Zeichens mit dem Schlüssel ”rc1” des nachfolgenden Zustands. Anschließend führt der Server 30 eine Additionsoperation aus, um diese zu verbinden. Auf diese Weise kann der Server 30 dem vorhergehenden Zustand ”c” entsprechende Austauschdaten erzeugen, in denen der Schlüssel rc1 des vorhergehenden Zustands unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt wurde.
  • Bei den Austauschdaten für das erste Zeichen kann der Server 30 lediglich Austauschdaten für den Anfangszustand ”a” erzeugen.
  • 16 zeigt ein Verarbeitungsbeispiel, bei dem Austauschdaten für jeden vorhergehenden Zustand aus der Codierfolge des zweiten Zeichens erzeugt werden. Der Server 30 führt die folgende Verarbeitung aus, wenn Austauschdaten für jeden vorhergehenden Zustand aus der Codierfolge für das zweite Zeichen erzeugt werden.
  • Wenn wie in 16(A) gezeigt Austauschdaten für den Zustand ”a” des zweiten Zeichens erzeugt werden, potenziert der Server 30 das erste Element E(0) der Codierfolge V2 des zweiten Zeichens mit dem Schlüssel ”ra2” des nachfolgenden Zustands. Außerdem potenziert der Server 30 das zweite Element E(1) der Codierfolge V2 des zweiten Zeichens mit dem Schlüssel ”rb2” des nachfolgenden Zustands. Anschließend verbindet der Server 30 die Elemente unter Verwendung einer Additionsoperation. Auf diese Weise kann der Server 30 dem vorhergehenden Zustand ”a” entsprechende Austauschdaten erzeugen, in denen der Schlüssel rb2 des nachfolgenden Zustands unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt ist.
  • Wenn wie in 16(B) gezeigt Austauschdaten für den Zustand ”b” des zweiten Zeichens erzeugt werden, potenziert der Server 30 das erste Element E(0) der Codierfolge V2 des zweiten Zeichens mit dem Schlüssel ”ra2” des nachfolgenden Zustands. Der Server 30 potenziert außerdem das zweite Element E(1) der Codierfolge V2 des zweiten Zeichens mit dem Schlüssel ”rc2” des nachfolgenden Zustands. Anschließend führt der Server 30 eine Additionsoperation aus, um diese zu verbinden. Auf diese Weise kann der Server 30 dem vorhergehenden Zustand ”b” entsprechende Austauschdaten erzeugen, in denen der Schlüssel rc2 des vorhergehenden Zustands unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt wurde.
  • Wenn wie in 16(C) gezeigt Austauschdaten für den Zustand ”c” des zweiten Zeichens erzeugt werden, potenziert der Server 30 das erste Element E(0) der Codierfolge V2 des zweiten Zeichens mit dem Schlüssel ”rc2” des nachfolgenden Zustands. Außerdem potenziert der Server 30 das zweite Element E(1) der Codierfolge V2 des zweiten Zeichens mit dem Schlüssel ”rc2” des nachfolgenden Zustands. Anschließend führt der Server 30 eine Additionsoperation aus, um diese zu verbinden. Auf diese Weise kann der Server 30 dem vorhergehenden Zustand ”c” entsprechende Austauschdaten erzeugen, in denen der Schlüssel rc2 des vorhergehenden Zustands unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt wurde.
  • 17 zeigt ein Verarbeitungsbeispiel, bei dem Austauschdaten für jeden vorhergehenden Zustand aus der Codierfolge des dritten Zeichens erzeugt werden. Der Server 30 führt die folgende Verarbeitung aus, wenn Austauschdaten für jeden vorhergehenden Zustand aus der Codierfolge für das dritte Zeichen erzeugt werden.
  • Wenn wie in 17(A) gezeigt Austauschdaten für den Zustand ”a” des dritten Zeichens erzeugt werden, potenziert der Server 30 das erste Element E(1) der Codierfolge V1 des dritten Zeichens mit dem Schlüssel ”ra3” des nachfolgenden Zustands. Außerdem potenziert der Server 30 das zweite Element E(0) der Codierfolge V1 des dritten Zeichens mit dem Schlüssel ”rb3” des nachfolgenden Zustands. Anschließend verbindet der Server 30 die potenzierten Elemente unter Verwendung einer Additionsoperation. Auf diese Weise kann der Server 30 dem vorhergehenden Zustand ”a” entsprechende Austauschdaten erzeugen, in denen der Schlüssel ”rb3” des nachfolgenden Zustands unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt ist.
  • Wenn wie in 17(B) gezeigt Austauschdaten für den Zustand ”b” des dritten Zeichens erzeugt werden, potenziert der Server 30 das erste Element E(1) der Codierfolge V1 des dritten Zeichens mit dem Schlüssel ”ra3” des nachfolgenden Zustands. Der Server 30 potenziert außerdem das zweite Element E(0) der Codierfolge V1 des dritten Zeichens mit dem Schlüssel ”rc3” des nachfolgenden Zustands. Anschließend führt der Server 30 eine Additionsoperation aus, um diese zu verbinden. Auf diese Weise kann der Server 30 dem vorhergehenden Zustand ”b” entsprechende Austauschdaten erzeugen, in denen der Schlüssel ra3 des vorhergehenden Zustands unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt wurde.
  • Wenn wie in 17(C) gezeigt Austauschdaten für den Zustand ”c” des dritten Zeichens erzeugt werden, potenziert der Server 30 das erste Element E(1) der Codierfolge V1 des dritten Zeichens mit dem Schlüssel ”rc3” des nachfolgenden Zustands. Außerdem potenziert der Server 30 das zweite Element E(0) der Codierfolge V1 des dritten Zeichens mit dem Schlüssel ”rc3” des nachfolgenden Zustands. Anschließend führt der Server 30 eine Additionsoperation aus, um diese zu verbinden. Auf diese Weise kann der Server 30 dem vorhergehenden Zustand ”c” entsprechende Austauschdaten erzeugen, in denen der Schlüssel ”rc3” des vorhergehenden Zustands unter Verwendung eines Expansions-ElGamal-Verschlüsselungsschemas verschlüsselt wurde.
  • 18 zeigt ein Beispiel von verschlüsselten Austauschdaten, die den ersten bis dritten Zeichen entsprechen, und von verschlüsselten Daten eines Endzustands, die von dem Server 30 zu dem Client 20 gesendet werden.
  • Der Server 30 erzeugt Chiffriertext (Enc(ra0, E(ra1)), in dem die Austauschdaten für den vorhergehenden Zustand ”a” des ersten Zeichens unter Verwendung des Schlüssels ”ra0” des vorhergehenden Zustands, der dem vorhergehenden Zustand ”a” des ersten Zeichens entspricht, verschlüsselt wurden. Außerdem erzeugt der Server 30 Chiffriertext (Enc(rb0, E(ra1)), in dem die Austauschdaten für den vorhergehenden Zustand ”b” des ersten Zeichens unter Verwendung des Schlüssels ”rb0” des vorhergehenden Zustands, der dem vorhergehenden Zustand ”b” des ersten Zeichens entspricht, verschlüsselt wurden. Außerdem erzeugt der Server 30 Chiffriertext (Enc(rc0, E(rc1)), in dem die Austauschdaten für den vorhergehenden Zustand ”c” des ersten Zeichens unter Verwendung des Schlüssels ”rc0” des vorhergehenden Zustands, der dem vorhergehenden Zustand ”c” des ersten Zeichens entspricht, verschlüsselt wurden.
  • Dann sendet der Server 30 den Chiffriertext zu dem Client 20. In diesem Fall sortiert der Server 30 die verschlüsselten Austauschdaten für jeden vorhergehenden Zustand willkürlich und sendet diese zu dem Client 20. Die Schlüssel ra0, rb0, rc0 vorhergehender Zustände für das erste Zeichen werden im Voraus erzeugt. Der Server 30 kann Austauschdaten, die dem Anfangszustand ”a” entsprechen, erst in der Verarbeitung für das erste Zeichen erzeugen.
  • Der Server 30 erzeugt Chiffriertext (Enc(ra1, E(rb2)), in dem die Austauschdaten für den vorhergehenden Zustand ”a” des zweiten Zeichens unter Verwendung des Schlüssels ”ra1” des vorhergehenden Zustands, der dem vorhergehenden Zustand ”a” des zweiten Zeichens entspricht, verschlüsselt wurden. Der Server 30 erzeugt außerdem Chiffriertext (Enc(rb1, E(rc2)), in dem die Austauschdaten für den vorhergehenden Zustand ”b” des zweiten Zeichens unter Verwendung des Schlüssels ”rb1” des vorhergehenden Zustands, der dem vorhergehenden Zustand ”b” des zweiten Zeichens entspricht, verschlüsselt wurden. Der Server 30 erzeugt außerdem Chiffriertext (Enc(rc1, E(rc2)), in dem die Austauschdaten für den vorhergehenden Zustand ”c” des zweiten Zeichens unter Verwendung des Schlüssels ”rc1” des vorhergehenden Zustands, der dem vorhergehenden Zustand ”c” des zweiten Zeichens entspricht, verschlüsselt wurden.
  • Anschließend sendet der Server 30 den Chiffriertext zu dem Client 20. In diesem Fall sortiert der Server 30 z. B. die verschlüsselten Austauschdaten für jeden vorhergehenden Zustand willkürlich und sendet diese zu dem Client 20. Die Schlüssel ra1, rb1, rd1 vorhergehender Zustände für das zweite Zeichen sind die Schlüssel nachfolgender Zustände, die für das erste Zeichen erzeugt werden.
  • Der Server 30 erzeugt Chiffriertext (Enc(ra2, E(ra3)), in dem die Austauschdaten für den vorhergehenden Zustand ”a” des dritten Zeichens unter Verwendung des Schlüssels ”ra2” des vorhergehenden Zustands, der dem vorhergehenden Zustand ”a” des dritten Zeichens entspricht, verschlüsselt wurden. Der Server 30 erzeugt außerdem Chiffriertext (Enc(rb2, E(ra3)), in dem die Austauschdaten für den vorhergehenden Zustand ”b” des dritten Zeichens unter Verwendung des Schlüssels ”rb2” des vorhergehenden Zustands, der dem vorhergehenden Zustand ”b” des dritten Zeichens entspricht, verschlüsselt wurden. Der Server 30 erzeugt außerdem Chiffriertext (Enc(rc2, E(rc3)), in dem die Austauschdaten für den vorhergehenden Zustand ”c” des dritten Zeichens unter Verwendung des Schlüssels ”rc2” des vorhergehenden Zustands, der dem vorhergehenden Zustand ”c” des dritten Zeichens entspricht, verschlüsselt wurden.
  • Anschließend sendet der Server 30 den Chiffriertext zu dem Client 20. In diesem Fall sortiert der Server 30 z. B. die verschlüsselten Austauschdaten für jeden vorhergehenden Zustand willkürlich und sendet diese zu dem Client 20. Die Schlüssel ra2, rb2, rc2 vorhergehender Zustände für das dritte Zeichen sind die Schlüssel nachfolgender Zustände, die durch den Server 30 für das zweite Zeichen erzeugt werden.
  • Der Server 30 erzeugt außerdem Chiffriertext (Enc(ra3, accept), in dem der Wert, der angibt, dass der Zustand ”a” der korrekte Endzustand (accept (annehmen)) ist, unter Verwendung des Schlüssels ”ra3” des nachfolgenden Zustands des dritten Zeichens, der dem Zustand ”a” entspricht, verschlüsselt wurde. Der Server 30 erzeugt außerdem Chiffriertext (Enc(rb3, reject), in dem der Wert, der angibt, dass der Zustand ”b” nicht der korrekte Endzustand (reject (zurückweisen)) ist, unter Verwendung des Schlüssels ”rb3” des nachfolgenden Zustands, der dem Zustand ”b” entspricht, verschlüsselt wurde. Der Server 30 erzeugt außerdem Chiffriertext (Enc(rc3, reject), in dem der Wert, der angibt, dass der Zustand ”c” nicht der korrekte Endzustand (reject (zurückweisen)) ist, unter Verwendung des Schlüssels ”rc3” des nachfolgenden Zustands des dritten Zeichens, der dem Zustand ”c” entspricht, verschlüsselt wurde.
  • Der Server 30 sendet anschließend den Chiffriertext zu dem Client 20. In diesem Fall sortiert der Server 30 z. B. die verschlüsselten Daten des Endzustands für jeden vorhergehenden Zustand willkürlich und sendet diese zu dem Client 20.
  • 19 zeigt ein Beispiel einer Reihenfolge für den Entschlüsselungsvorgang, der durch den Client 20 ausgeführt wird.
  • Zunächst entschlüsselt der Client 20 die Austauschdaten, die in Übereinstimmung mit dem ersten Zeichen unter Verwendung des Schlüssels des vorhergehenden Zustands, der dem ersten Zeichen entspricht, verschlüsselt wurden. Der Client 20 empfängt im Voraus von dem Server 30 den Schlüssel ra0 des vorhergehenden Zustands, der dem Anfangszustand ”a” entspricht, als den Schlüssel des vorhergehenden Zustands, der dem ersten Zeichen entspricht. Somit kann der Client 20 die Austauschdaten (E(ra1)), die dem Zustand ”a” entsprechen, durch Ausführen des Entschlüsselungsvorgangs an den verschlüsselten Austauschdaten, die dem ersten Zeichen entsprechen, entschlüsseln. Der Client 20 entschlüsselt einen einzelnen Satz Austauschdaten, wenn der Server 30 lediglich die verschlüsselten Austauschdaten sendet, die dem Anfangszustand entsprechen.
  • Anschließend entschlüsselt der Client 20 die entschlüsselten Austauschdaten (E(ra1)) unter Verwendung des Schlüssels, der dem Verschlüsselungsschlüssel entspricht, der zum Erzeugen der Codierfolge für das erste Zeichen verwendet wurde. Auf diese Weise kann der Client 20 den Schlüssel ”ra1” des nachfolgenden Zustands entschlüsseln, der dem nachfolgenden Zustand ”a” entspricht, zu dem gewechselt wird, wenn das Zeichen ”0” in einem Anfangszustand ”a” eingegeben wird.
  • Anschließend entschlüsselt der Client 20 die verschlüsselten Austauschdaten, die dem zweiten Zeichen entsprechen, unter Verwendung des Schlüssels des vorhergehenden Zustands, der dem zweiten Zeichen entspricht. Der Schlüssel des vorhergehenden Zustands, der dem zweiten Zeichen entspricht, ist der Schlüssel ”ra1” des nachfolgenden Zustands, der aus den Austauschdaten für das erste Zeichen entschlüsselt wurde. Somit kann der Client 20 Austauschdaten (E(rb2)), die einem Zustand ”a” entsprechen, durch Entschlüsseln der verschlüsselten Austauschdaten, die dem zweiten Zeichen entsprechen, entschlüsseln.
  • Anschließend entschlüsselt der Client 20 die entschlüsselten Austauschdaten (E(rb2)) unter Verwendung des Schlüssels, der dem Verschlüsselungsschlüssel entspricht, der zum Erzeugen der Codierfolge für das zweite Zeichen verwendet wird. Auf diese Weise kann der Client 20 den Schlüssel ”rb2” des nachfolgenden Zustands für das zweite Zeichen entschlüsseln, der dem nachfolgenden Zustand ”b” entspricht, zu dem gewechselt wird, wenn das Zeichen ”1” im vorhergehenden Zustand ”a” eingegeben wird.
  • Anschließend entschlüsselt der Client 20 die verschlüsselten Austauschdaten, die dem dritten Zeichen entsprechen, unter Verwendung des Schlüssels des vorhergehenden Zustands, der dem dritten Zeichen entspricht. Der Schlüssel des vorhergehenden Zustands, der dem dritten Zeichen entspricht, ist der Schlüssel ”rb2” des nachfolgenden Zustands, der aus den Austauschdaten für das zweite Zeichen entschlüsselt wurde. Somit kann der Client 20 Austauschdaten (E(ra3)), die dem Zustand ”b” entsprechen, durch das Entschlüsseln der verschlüsselten Austauschdaten, die dem dritten Zeichen entsprechen, entschlüsseln.
  • Anschließend entschlüsselt der Client 20 die entschlüsselten Austauschdaten (E(ra3)) unter Verwendung des Verschlüsselungsschlüssels, der zum Erzeugen der Codierfolge für das dritte Zeichen verwendet wird. Auf diese Weise kann der Client 20 den Schlüssel ”ra3” des nachfolgenden Zustands für das dritte Zeichen entschlüsseln, der dem nachfolgenden Zustand ”a” entspricht, zu dem gewechselt wird, wenn das Zeichen ”0” im Zustand ”b” eingegeben wird.
  • Anschließend entschlüsselt der Client 20 die verschlüsselten Daten des Endzustands unter der Vielzahl von Zuständen unter Verwendung des entschlüsselten Schlüssels ”rc3” des nachfolgenden Zustands, der dem dritten Zeichen entspricht. Auf diese Weise kann der Client 20 den Wert ”angenommen” aus den Daten des Endzustands, die dem Zustand ”a” entsprechen, entschlüsseln.
  • Durch Ausführen der oben beschriebenen Verarbeitung können der Client 20 und der Server 30 prüfen, ob ein String durch einen Automaten angenommen wurde, ohne dass der in den Client 20 eingegebene String dem Server 30 offen gelegt wird und ohne dass der Automat, über den der Server 30 verfügt, dem Client 20 offen gelegt wird.
  • 20 zeigt ein Beispiel der Hardware-Konfiguration des Computers 1900 in der vorliegenden Ausführungsform. Der Computer 1900 in der vorliegenden Ausführungsform ist mit einem peripheren Abschnitt der CPU, der eine CPU 2000, einen RAM 2020, eine Grafik-Steuereinheit 2075 und eine Anzeige 2080 aufweist, die untereinander durch eine Host-Steuereinheit 2082 verbunden sind, mit einem Eingabe/Ausgabe-Abschnitt, der eine Datenübertragungsschnittstelle 2030, ein Festplattenlaufwerk 2040 und ein CD-ROM-Laufwerk 2060 aufweist, die durch eine Eingabe/Ausgabe-Steuereinheit 2084 mit der Host-Steuereinheit 2082 verbunden sind, und mit einem Altdaten-Eingabe/Ausgabe-Abschnitt ausgestattet, 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, der CPU 2000, die mit einer hohen Übertragungsrate auf den RAM 2020 zugreift, und der Grafik-Steuereinheit 2075 verbunden. Die CPU 2000 wird auf der Grundlage eines Programms betrieben, das im ROM 2010 und im RAM 2020 gespeichert ist, und steuert die verschiedenen Einheiten. Die Grafik-Steuereinheit 2075 erfasst die Bilddaten, die in dem Bildspeicher des RAM 2020 durch die CPU 2000 und andere Einheiten erzeugt werden, und zeigt diese Bilddaten auf der Anzeigeeinheit 2080 an. Die Grafik-Steuereinheit 2075 kann alternativ einen Bildspeicher zum Speichern von Bilddaten enthalten, die durch die CPU 2000 und andere Einheiten erzeugt werden.
  • Die Eingabe/Ausgabe-Steuereinheit 2084 ist mit der Host-Steuereinheit 2082, der Datenübertragungs-Steuereinheit 2030, die als eine verhältnismäßig schnelle Eingabe/Ausgabe-Einheit dient, dem Festplattenlaufwerk 2040 und dem CD-ROM-Laufwerk 2060 verbunden. Die Datenübertragungs-Steuereinheit 2030 steht über ein Netzwerk mit den anderen Einheiten in Datenverbindung. Das Festplattenlaufwerk 2040 speichert die Programme und Daten, die in dem Computer 1900 durch die CPU 2000 verwendet werden. Das CD-ROM-Laufwerk 2060 liest Programme und Daten vom CD-ROM 2095 stellt sie über den RAM 2020 dem Festplattenlaufwerk 2040 bereit.
  • Die Eingabe/Ausgabe-Steuereinheit 2084 ist mit dem ROM 2010, dem Diskettenlaufwerk 2050 und der verhältnismäßig langsamen Eingabe/Ausgabe-Einheit des Eingabe/Ausgabe-Chips 2070 verbunden. Der ROM 2010 speichert das Boot-Programm, das durch den Computer 1900 beim Hochfahren ausgeführt wird, und/oder Programme, die auf Hardware in dem Computer 1900 basieren. Das Diskettenlaufwerk 2050 liest Programme oder Daten von einem Diskettenlaufwerk 2090 und stellt die Programme und Daten über den RAM 2020 dem Festplattenlaufwerk 2040 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, seriellen Anschluss, Tastaturanschluss, Mausanschluss usw. mit der Eingabe/Ausgabe-Steuereinheit 2084 verbunden.
  • Ein Programm, das über den RAM 2020 dem Festplattenlaufwerk 2040 bereitgestellt wird, ist auf einem Aufzeichnungsmedium wie etwa einer Diskette 2090, einem CD-ROM 2095 oder einer IC-Karte gespeichert und wird durch den Benutzer bereitgestellt. Ein Programm wird von dem Aufzeichnungsmedium, das in dem Festplattenlaufwerk 2040 in dem Computer 1900 installiert ist, über den RAM 2020 gelesen und durch die CPU 2000 ausgeführt.
  • Ein in dem Computer 1900 installiertes Programm, um den Computer 1900 zu befähigen, als ein Client 20 zu funktionieren, enthält ein Zeicheneingabemodul, ein Ablaufsteuerungsmodul, ein erstes Verschlüsselungsmodul, ein clientseitiges Sendemodul, ein clientseitiges Empfangsmodul, ein clientseitiges Schlüsselspeichermodul, ein zweites Entschlüsselungsmodul, ein erstes Entschlüsselungsmodul und ein Feststellungsmodul. Diese Programme oder Module werden durch die CPU 2000 usw. aktiviert, um den Computer 1900 zu befähigen, als eine Zeicheneingabeeinheit 32, eine Ablaufsteuerungseinheit 34, eine erste Verschlüsselungseinheit 36, eine clientseitige Sendeeinheit 38, eine clientseitige Empfangseinheit 40, eine clientseitige Schlüsselspeichereinheit 42, eine zweite Entschlüsselungseinheit 44, eine erste Entschlüsselungseinheit 46 und eine Feststellungseinheit 48 zu funktionieren.
  • Die Informationsverarbeitung, die in diese Programme geschrieben ist, stellt spezielle Mittel dar, die durch das Lesen der Programme in den Computer 1900 aktiviert werden, so dass die Software mit den verschiedenen Typen von Hardware-Ressourcen, die oben beschrieben wurden, zusammenwirkt. Diese Informationsverarbeitung funktioniert als eine Zeicheneingabeeinheit 32, eine Ablaufsteuerungseinheit 34, eine erste Verschlüsselungseinheit 36, eine clientseitige Sendeeinheit 38, eine clientseitige Empfangseinheit 40, eine clientseitige Schlüsselspeichereinheit 42, eine zweite Entschlüsselungseinheit 44, eine erste Entschlüsselungseinheit 46 und eine Feststellungseinheit 48. Diese speziellen Mittel realisieren Operationen und die Verarbeitung von Informationen in Übereinstimmung mit dem vorgesehenen Zweck des Computers 1900 in der vorliegenden Ausführungsform, um einen geeigneten Client 20 für den vorgesehenen Zweck zu bilden.
  • Ein in dem Computer 1900 installiertes Programm, um den Computer 1900 zu befähigen, als ein Server 30 zu funktionieren, enthält ein serverseitiges Empfangsmodul, ein Automaten-Speichermodul, ein Schlüsselerzeugungsmodul, ein serverseitiges Schlüsselspeichermodul, ein Austauschdaten-Erzeugungsmodul, ein zweites Verschlüsselungsmodul und ein serverseitiges Sendemodul. Diese Programme oder Module werden durch die CPU 2000 usw. aktiviert, um den Computer 1900 zu befähigen, als eine serverseitige Empfangseinheit 52, eine Automaten-Speichereinheit 54, eine Schlüsselerzeugungseinheit 56, eine serverseitige Schlüsselspeichereinheit 58, eine Austauschdaten-Erzeugungseinheit 60, eine zweite Verschlüsselungseinheit 62 und eine serverseitige Sendeeinheit 64 zu funktionieren.
  • Die Informationsverarbeitung, die in diese Programme geschrieben ist, stellt spezielle Mittel dar, die durch das Lesen der Programme in den Computer 1900 aktiviert werden, so dass die Software mit den verschiedenen Typen von Hardware-Ressourcen, die oben beschrieben wurden, zusammenwirkt. Diese Informationsverarbeitung funktioniert als eine serverseitige Empfangseinheit 52, eine Automaten-Speichereinheit 54, eine Schlüsselerzeugungseinheit 56, eine serverseitige Schlüsselspeichereinheit 58, eine Austauschdaten-Erzeugungseinheit 60, eine zweite Verschlüsselungseinheit 62 und eine serverseitige Sendeeinheit 64. Diese speziellen Mittel realisieren Operationen und die Verarbeitung von Informationen in Übereinstimmung mit dem vorgesehenen Zweck des Computers 1900 in der vorliegenden Ausführungsform, um einen geeigneten Server 30 für diesen vorgesehenen Zweck zu bilden.
  • Wenn der Computer 1900 z. B. mit einer externen Einheit Daten austauscht, führt die CPU 2000 das in den RAM 2020 geladene Datenübertragungsprogramm aus und instruiert die Datenübertragungs-Schnittstelle 2030 bei der Datenübertragungsverarbeitung auf der Grundlage des Verarbeitungsinhalts, der in das Datenübertragungsprogramm geschrieben ist. Die Datenübertragungs-Schnittstelle 2030 wird durch die CPU 2000 gesteuert und liest die übertragenen Daten, die in dem Sendepufferbereich einer Speichereinheit wie etwa des RAM 2020, des Festplattenlaufwerks 2040, der Diskette 2090 oder des CD-ROM 2095 gespeichert sind, oder schreibt Empfangsdaten, die vom Netzwerk empfangen werden, in einen Empfangspufferbereich der Speichereinheit. Auf diese Weise übermittelt die Datenübertragungs-Schnittstelle 2030 gesendete und empfangene Daten an die Speichereinheit unter Verwendung des Direktspeicherzugriff-(DMA-)Verfahrens. Alternativ übermittelt die CPU 2000 gesendete und empfangene Daten durch Lesen von Daten von der Quellen-Speichereinheit oder Datenübertragungs-Schnittstelle 2030 und Schreiben von Daten zu der Ziel-Datenübertragungs-Schnittstelle 2030 oder Speichereinheit.
  • Außerdem schreibt die CPU 2000 sämtliche Daten oder die erforderlichen Daten z. B. über einen DMA-Transfer von Dateien oder Datenbanken, die in einer externen Speichereinheit wie etwa dem Festplattenlaufwerk 2040, dem CD-ROM-Laufwerk 2060 (CD-ROM 2095) oder dem Diskettenlaufwerk 2050 (Diskette 2090) gespeichert sind, in den RAM 2020 und führt an den Daten in dem RAM 2020 verschiedene Typen der Verarbeitung aus. Die CPU 2000 schreibt dann die verarbeiteten Daten z. B. über einen DMA-Transfer in die externe Speichereinheit. Da der RAM 2020 während dieses Vorgangs die Inhalte der externen Speichereinheit vorübergehend speichert, werden der RAM 2020 und die externe Speichereinheit in der vorliegenden Ausführungsform allgemein als Speicher, Speichereinheit oder Speichereinrichtung bezeichnet. Die verschiedenen Typen der Informationen in den verschiedenen Typen von Programmen, Daten, Tabellen und Datenbanken der vorliegenden Ausführungsform werden in diesen Speichereinheiten gespeichert und stellen die Zielobjekte der Informationsverarbeitung dar. Die CPU 2000 kann einen Teil des RAM 2020 im Cache-Speicher halten und Daten von dem Cache-Speicher lesen und in diesen schreiben. Hier führt der Cache-Speicher einige der Funktionen des RAM 2020 aus. Deswegen ist diese Unterteilung in der vorliegenden Ausführungsform ausgeschlossen. Der Cache-Speicher ist in dem RAM 2020, dem Speicher und/oder der Speichereinheit enthalten.
  • Die CPU 2000 führt außerdem verschiedene Typen der Verarbeitung an Daten aus, die von dem RAM 2020 gelesen werden, einschließlich der Operationen, Verarbeitung, Bedingungsbestimmung und Abruf und Ersetzung von Informationen, die in der vorliegenden Ausführungsform beschrieben und durch eine Befehlsfolge in dem Programm angegeben sind, und schreibt die Ergebnisse in den RAM 2020. Wenn z. B. eine Bedingungsbestimmung ausgeführt wird, vergleicht die CPU 2000 verschiedene Typen von Variablen, die in der vorliegenden Ausführungsform beschrieben sind, mit anderen Variablen oder Konstanten, um festzustellen, ob Bedingungen wie etwa groß, klein, größer als, kleiner als oder gleich erfüllt wurden. Wenn eine Bedingung erfüllt wurde (oder nicht erfüllt wurde), verzweigt der Vorgang zu einer anderen Befehlsfolge oder ruft eine Unterroutine auf.
  • Die CPU 2000 kann außerdem Informationen abrufen, die in Dateien oder Datenbanken in der Speichereinheit gespeichert sind. Wenn z. B. eine Vielzahl von Einträgen einen Attributwert für ein zweites Attribut einem Attributwert für ein erstes Attribut zuordnen, kann die CPU 2000 einen Eintrag abrufen, der den Bedingungen entspricht, die durch den Attributwert des ersten Attributs unter der Vielzahl von Einträgen, die in der Speichereinheit gespeichert sind, angegeben sind, und dann den Attributwert des zweiten Werts erhalten, der dem ersten Wert zugehörig ist, der eine vorgegebene Bedingung erfüllt, indem der Attributwert des zweiten Attributs, das in dem Eintrag gespeichert ist, gelesen wird.
  • Ein Programm oder Modul, das oben beschrieben wurde, kann in einem Aufzeichnungsmedium einer externen Einheit gespeichert sein. Anstelle einer Diskette 2090 oder eines CD-ROM 2095 kann das Aufzeichnungsmedium ein optisches Aufzeichnungsmedium sein wie etwa eine DVD oder CD, ein magnetooptisches Aufzeichnungsmedium wie etwa MO, ein Bandmedium oder ein Halbleiterspeicher wie z. B. eine IC-Karte. Das Aufzeichnungsmedium kann außerdem eine Speichereinheit wie etwa eine Festplatte oder ein RAM sein, die in einem Serversystem vorgesehen sind, das mit einem geeigneten Datenübertragungs-Netzwerk oder dem Internet verbunden ist, und das Programm kann dem Computer 1900 über das Netzwerk bereitgestellt werden.
  • Die vorliegende Erfindung wurde unter Verwendung einer Ausführungsform erläutert, der technische Umfang der vorliegenden Erfindung ist jedoch nicht auf die oben beschriebene Ausführungsform beschränkt. Die Möglichkeit vieler Änderungen und Verbesserungen an dieser Ausführungsform sollte für den Fachmann klar sein. Ausführungsformen, die diese Änderungen und Verbesserungen enthalten, liegen im technischen Umfang der vorliegenden Erfindung, wie aus der Beschreibung der Ansprüche klar sein sollte.
  • Die Reihenfolge der Ausführung von Operationen, Schritten und Vorgängen in den Einheiten, Systemen, Programmen und Verfahren, die in den Ansprüchen, der Beschreibung und den Zeichnungen beschrieben sind, wurden unter Verwendung von Ausdrücken wie ”vorhergehend” und ”vorherig” beschrieben. Diese Operationen, Schritte und Vorgänge können jedoch in jeder Reihenfolge realisiert werden, solange die Ausgabe des vorhergehenden Vorgangs durch den nachfolgenden Vorgang verwendet wird. Der Funktionsablauf in den Ansprüchen, der Beschreibung und den Zeichnungen wurde zur Einfachheit unter Verwendung von Ausdrücken wie ”zuerst” und ”als Nächstes” erläutert. Der Funktionsablauf muss jedoch nicht notwendigerweise in dieser Reihenfolge ausgeführt werden.
  • Bezugszeichenliste
  • 10
    Prüfsystem
    20
    Client
    30
    Server
    32
    Zeicheneingabeeinheit
    34
    Ablaufsteuerungseinheit
    36
    erste Verschlüsselungseinheit
    38
    clientseitige Sendeeinheit
    40
    clientseitige Empfangseinheit
    42
    clientseitige Schlüsselspeichereinheit
    44
    zweite Entschlüsselungseinheit
    46
    erste Entschlüsselungseinheit
    48
    Feststellungseinheit
    52
    serverseitige Empfangseinheit
    54
    Automatenspeichereinheit
    56
    Schlüsselerzeugungseinheit
    58
    serverseitige Schlüsselspeichereinheit
    60
    Austauschdaten-Erzeugungseinheit
    62
    zweite Verschlüsselungseinheit
    64
    serverseitige Sendeeinheit
    1900
    Computer
    2000
    CPU
    2010
    ROM
    2020
    RAM
    2030
    Datenübertragungsschnittstelle
    2040
    Festplattenlaufwerk
    2050
    Diskettenlaufwerk
    2060
    CD-ROM-Laufwerk
    2070
    Eingabe/Ausgabe-Chip
    2075
    Grafik-Steuereinheit
    2080
    Anzeigeeinheit
    2082
    Host-Steuereinheit
    2084
    Eingabe/Ausgabe-Steuereinheit
    2090
    Diskette
    2095
    CD-ROM

Claims (15)

  1. Server, der zur Eingabe eines String mit einem Client verbunden werden kann, der einen Automaten aufweist, dessen Zustand in Übereinstimmung mit empfangenen Zeichen wechselt und der auf der Grundlage der Zeichen feststellt, ob der Automat zu einem Endzustand gewechselt hat, wobei der Server aufweist: Empfangen von dem Client in den Zeichen, die in dem String enthalten sind, einer Codierfolge, deren Elemente, die den Zeichen entsprechen, Werte sind, die einen Non-Unity-Wert unter Verwendung eines ersten Verschlüsselungsschemas, das einen Homomorphismus aufweist, verschlüsseln und deren Elemente, die nicht den Zeichen entsprechen, Werte sind, die einen Unity-Wert unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln; in Reaktion auf das Empfangen der Codierfolge Erzeugen von Austauschdaten, die einen Schlüssel eines nachfolgenden Zustands, der jedem von einer Vielzahl von vorhergehenden Zuständen des Automaten entspricht, auf der Grundlage der Codierfolge unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln; Verschlüsseln von Austauschdaten mit dem entsprechenden Schlüssel des vorhergehenden Zustands; und Senden der verschlüsselten Austauschdaten zu dem Client.
  2. Server nach Anspruch 1, wobei der Client von dem Server verschlüsselte Austauschdaten, die jedem von einer Vielzahl von vorhergehenden Zuständen des Automaten entsprechen, empfängt; jeden von einer Vielzahl von Sätzen der Austauschdaten unter Verwendung eines Schlüssels eines vorhergehenden Zustands, der durch den Client gespeichert wird, und des ersten Verschlüsselungsschemas verschlüsselt; und einen einzigen entschlüsselten Schlüssel eines nachfolgenden Zustands als einen Schlüssel eines vorhergehenden Zustands zum Entschlüsseln von Austauschdaten, die von dem Server in Übereinstimmung mit dem nächsten Zeichen empfangen werden, speichert.
  3. Server nach Anspruch 2, wobei das erste Verschlüsselungsschema ein Verfahren ist, das in jedem Verschlüsselungsvorgang einen anderen Chiffriertext aufweist, selbst wenn der gleiche Klartext verschlüsselt wird, und/oder wobei das erste Verschlüsselungsschema ein Verschlüsselungsschema mit einem additiven Homomorphismus ist und/oder wobei das erste Verschlüsselungsschema ein Expansions-ElGamal-System ist und/oder wobei das erste Verschlüsselungsschema ein Verschlüsselungssystem mit einem multiplikativen Homomorphismus ist.
  4. Server nach Anspruch 3, wobei der Schlüssel des nachfolgenden Zustands eine Zufallszahl ist, die einer Vielzahl von nachfolgenden Zuständen in dem Automaten zugehörig ist.
  5. Server nach Anspruch 4, wobei der Server aufweist: eine Empfangseinheit zum Empfangen einer Codierfolge von dem Client; und eine Austauschdaten-Erzeugungseinheit zum Erzeugen von Austauschdaten, die einen Schlüssel eines nachfolgenden Zustands unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln, indem jedes Element in der empfangenen Codierfolge in Übereinstimmung mit der Vielzahl von vorhergehenden Zuständen des Automaten mit dem Schlüssel des nachfolgenden Zustands potenziert wird, der dem nachfolgenden Zustand entspricht, zu dem von dem vorhergehenden Zustand auf der Grundlage eines eingegebenen Zeichens, das durch das Element spezifiziert wird, gewechselt wird, und indem die Vielzahl von Elementen, die mit dem Schlüssel des nachfolgenden Zustands potenziert werden, unter Verwendung einer Operation gemäß dem ersten Verschlüsselungsschema kombiniert werden.
  6. Server nach Anspruch 5, wobei der Server aufweist: eine Schlüsselerzeugungseinheit zum Erzeugen von Schlüsseln nachfolgender Zustände, die jedem Zeichen in dem String und jedem aus einer Vielzahl von nachfolgenden Zuständen des Automaten entsprechen; eine serverseitige Schlüsselspeichereinheit zum Speichern der Schlüssel nachfolgender Zustände, die jedem aus der Vielzahl von nachfolgenden Zuständen zugehörig sind, als eine Vielzahl von Schlüsseln vorhergehender Zustände, die jedem aus einer Vielzahl von vorhergehenden Zuständen entsprechen, wenn das nächste Zeichen eingegeben wird; und eine Verschlüsselungseinheit zum Verschlüsseln der Austauschdaten, die gemäß der Vielzahl von nachfolgenden Zuständen des Automaten unter Verwendung des entsprechenden Schlüssels eines vorhergehenden Zustands erzeugt werden.
  7. Server nach Anspruch 5, wobei der Client ferner eine clientseitige Schlüsselspeichereinheit aufweist zum Speichern des entschlüsselten Schlüssels eines nachfolgenden Zustands als den Schlüssel des vorhergehenden Zustands zum Entschlüsseln der Vielzahl von Datenzuständen, die von dem Server in Übereinstimmung mit dem nächsten Zeichen empfangen werden.
  8. Server nach Anspruch 5, wobei die Austauschdaten-Erzeugungseinheit jedes Element in der Codierfolge mit einem Wert, der ”angenommen” bedeutet, anstelle des Schlüssels des vorhergehenden Zustands potenziert, wenn der Zustand nach dem Wechsel von dem vorhergehenden Zustand der korrekte Endzustand des Automaten ist; und wobei Client ferner eine Feststellungseinheit zum Feststellen aufweist, ob der Automat zu dem korrekten Endzustand gewechselt hat, auf der Grundlage des String, wenn der Wert, der ”angenommen” bedeutet, aus den Austauschdaten entschlüsselt wurde.
  9. Server nach Anspruch 1, wobei der Client eine Vielzahl von Codierfolgen, die jedem aus der Vielzahl von in dem String enthaltenen Zeichen entsprechen, parallel zu dem Server sendet.
  10. Server nach Anspruch 9, wobei der Server Austauschdaten, die jedem aus der Vielzahl von vorhergehenden Zuständen des Automaten für jedes aus der Vielzahl von Zeichen entsprechen, parallel zu dem Client sendet; und wobei der Client die Austauschdaten für jedes aus der Vielzahl von Zeichen nacheinander beginnend mit den Austauschdaten, die dem ersten Zeichen entsprechen, entschlüsselt.
  11. Server nach Anspruch 1, wobei der Server in Reaktion auf das Empfangen einer Codierfolge für jede Codierfolge Austauschdaten, die in Übereinstimmung mit jedem der vorhergehenden Zustände des Automaten verschlüsselt sind, sortiert und sendet.
  12. Client, der mit einem Server verbunden werden kann, der einen Automaten aufweist, dessen Zustand in Übereinstimmung mit empfangenen Zeichen wechselt, der die Eingabe eines String empfängt und auf der Grundlage des String feststellt, ob der Automat zu einem Endzustand gewechselt hat, wobei der Client aufweist: Senden zu dem Server in den Zeichen, die in dem String enthalten sind, einer Codierfolge, deren Elemente, die den Zeichen entsprechen, Werte sind, die einen Non-Unity-Wert unter Verwendung eines ersten Verschlüsselungsschemas, das einen Homomorphismus aufweist, verschlüsseln und deren Elemente, die nicht den Zeichen entsprechen, Werte sind, die einen Unity-Wert unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln; und von dem Server Empfangen von Chiffriertext, der Austauschdaten unter Verwendung eines entsprechenden Schlüssels eines vorhergehenden Zustands verschlüsselt, wobei die Austauschdaten in Reaktion auf das Empfangen der Codierfolge erzeugt werden, um einen Schlüssel eines nachfolgenden Zustands, der jedem aus einer Vielzahl von vorhergehenden Zuständen des Automaten entspricht, auf der Grundlage der Codierfolge unter Verwendung des ersten Verschlüsselungsschemas zu verschlüsseln.
  13. Verfahren zur Informationsverarbeitung für einen Server, der zur Eingabe eines String mit einem Client verbunden werden kann, mit einem Automaten, dessen Zustand gemäß empfangenen Zeichen wechselt, wobei der Server auf der Grundlage des String feststellt, ob der Automat zu einem Endzustand gewechselt hat, wobei das Verfahren aufweist: Empfangen von dem Client in den in dem String enthaltenen Zeichen einer Codierfolge, deren Elemente, die den Zeichen entsprechen, Werte sind, die unter Verwendung eines ersten Verschlüsselungsschemas, das einen Homomorphismus aufweist, einen Non-Unity-Wert verschlüsseln, und deren Elemente, die nicht den Zeichen entsprechen, Werte sind, die unter Verwendung des ersten Verschlüsselungsschemas einen Unity-Wert verschlüsseln; in Reaktion auf das Empfangen der Codierfolge Erzeugen von Austauschdaten, die einen Schlüssel eines nachfolgenden Zustands, der jedem aus einer Vielzahl von vorhergehenden Zuständen des Automaten entspricht, auf der Grundlage der Codierfolge unter Verwendung des ersten Verschlüsselungsschemas verschlüsseln; Verschlüsseln der Austauschdaten mit dem entsprechenden Schlüssel des vorhergehenden Zustands; und Senden der verschlüsselten Austauschdaten zu dem Client.
  14. Programm, das einen Computer befähigt, als ein Server gemäß Anspruch 1 zu funktionieren.
  15. Programm, das einen Computer befähigt, als ein Client gemäß Anspruch zu funktionieren.
DE102012222034A 2011-12-16 2012-12-03 System zum prüfen der annahme eines string durch einen automaten Ceased DE102012222034A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011-276303 2011-12-16
JP2011276303A JP5843261B2 (ja) 2011-12-16 2011-12-16 文字列がオートマトンに受理されるか否かを認証するシステム

Publications (1)

Publication Number Publication Date
DE102012222034A1 true DE102012222034A1 (de) 2013-06-20

Family

ID=48522284

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012222034A Ceased DE102012222034A1 (de) 2011-12-16 2012-12-03 System zum prüfen der annahme eines string durch einen automaten

Country Status (5)

Country Link
US (1) US8891760B2 (de)
JP (1) JP5843261B2 (de)
CN (1) CN103164660B (de)
DE (1) DE102012222034A1 (de)
GB (1) GB2498063B (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6244728B2 (ja) * 2013-08-07 2017-12-13 富士通株式会社 情報処理方法及びプログラム
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
JP6349841B2 (ja) * 2014-03-25 2018-07-04 富士通株式会社 暗号文処理装置、暗号文処理方法、暗号文処理プログラムおよび情報処理装置
WO2016038665A1 (ja) * 2014-09-08 2016-03-17 パスロジ株式会社 認証システム、ならびに、リマインダ端末
CN105763525A (zh) * 2014-12-19 2016-07-13 北大方正集团有限公司 一种识别码生成方法和识别码解密方法及装置
US11165563B2 (en) 2017-06-15 2021-11-02 Intelligens Technologiak Kft. Symmetric key stream cipher cryptographic method and device
CN112637233B (zh) * 2020-12-29 2022-12-13 深圳大学 一种基于多用户数据的安全求均值方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1001419B1 (de) * 1998-11-09 2004-03-03 Matsushita Electric Industrial Co., Ltd. Vorrichtung und Verfahren zur Datenumsetzung in einem Urheberrechtsschutzsystem
FR2892847B1 (fr) * 2005-11-03 2007-12-21 St Microelectronics Sa Procede de memorisation de donnees dans un circuit de memoire pour automate de reconnaissance de caracteres de type aho-corasick et citcuit de memorisation correspondant.
US7953895B1 (en) * 2007-03-07 2011-05-31 Juniper Networks, Inc. Application identification
WO2008135951A1 (en) * 2007-05-08 2008-11-13 Koninklijke Philips Electronics N.V. Method and a system for performing an oblivious query issued by a first party on a string provided by a second party
EP2056221A1 (de) 2007-10-30 2009-05-06 Mitsubishi Electric Corporation Geteilte Zustandsgeräte zum Abgleichen
CN102231181B (zh) * 2009-10-22 2014-08-06 鸿富锦精密工业(深圳)有限公司 用于文件加密的计算机系统及文件加密方法
US8433892B2 (en) * 2011-03-30 2013-04-30 Mitsubishi Electric Research Laboratories, Inc. Privacy-preserving probabilistic inference based on hidden Markov models

Also Published As

Publication number Publication date
GB2498063A (en) 2013-07-03
CN103164660B (zh) 2016-05-18
US8891760B2 (en) 2014-11-18
GB2498063B (en) 2013-11-13
JP2013128175A (ja) 2013-06-27
JP5843261B2 (ja) 2016-01-13
US20130170638A1 (en) 2013-07-04
CN103164660A (zh) 2013-06-19

Similar Documents

Publication Publication Date Title
DE102012222034A1 (de) System zum prüfen der annahme eines string durch einen automaten
DE112013000357B4 (de) System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten
DE3883287T2 (de) Steuerung der Anwendung von Geheimübertragungsschlüsseln durch in einer Erzeugungsstelle hergestellte Steuerwerte.
DE69614944T2 (de) System und Verfahren zur transparenten Integrierung von verschlüsselten Funktionen von einer IC-Karte mit kryptographischen Diensten auf Basis des Hauptrechners
DE69534192T2 (de) Verfahren zur gemeinsamen Nutzung einer geheimen Information, zur Erzeugung einer digitalen Unterschrift und zur Ausführung einer Beglaubigung in einem Kommunikationssystem mit mehreren Informationsverarbeitungseinrichtungen und Kommunikationssystem zur Anwendung dieses Verfahrens
DE69935913T2 (de) Leckresistente aktualisierung eines indexierten kryptographischen schlüssels
DE112020005620T5 (de) Sichere föderation verteilter stochastischer gradientenabstiege
DE102012218576B4 (de) Verschlüsseln von Daten und Charakterisierungsdaten, die den gültigen Inhalt einer Spalte beschreiben
DE112014007083T5 (de) Servervorrichtung, Suchsystem, Endgerätevorrichtung, Suchverfahren, Serverprogramm und Endgeräteprogramm
DE102013204530A1 (de) Einrichtung und Verfahren zum Verschlüsseln von Daten
DE3631992A1 (de) Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens
DE112018007468T5 (de) Geheime-Suche-Einrichtung und Geheime-Suche-Verfahren
DE112016000790B4 (de) Instanziierung von Broadcast-Verschlüsselungsschemata zur Laufzeit
DE202015104128U1 (de) Datenzugriffssystem
DE102019205130A1 (de) Datenanalyse-Server, Datenanalysesystem und Datenanalyseverfahren
DE69834296T2 (de) Verschlüsselungsvorrichtung und rechnerlesbares Aufzeichnungsmedium mit Ausführungsprogramm
DE102019119831A1 (de) Verschlüsselungsschaltung zum Durchführen von virtuellen Verschlüsselungsoperationen
DE102019107699A1 (de) Sichere Kommunikation in einem nichtdeterministischen Netzwerk
DE69621168T2 (de) Verfahren und System zur Software-Codierung und -Decodierung
DE102021130812A1 (de) Implementieren einer opportunistischen authentifizierung von verschlüsselten daten
DE102008054354A1 (de) Sichere Codierung von Spannungsdaten vieler Zellen bei Hybridfahrzeugen
EP2678772B1 (de) Verschlüsseltes rechnen
CN116578645A (zh) 基于数据加密的分布式存储系统
DE112012005046B4 (de) Koordinieren von Schreiboperationsabfolgen in einem Datenspeichersystem
DE69612335T2 (de) System und Verfahren zur Kommunikation von verschlüsselten Nachrichten unter Verwendung von RSA mit modularer Reduktion für schnelle Entschlüsselung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final