WO2021070234A1 - データアクセス方法、データ記憶システム、サーバ装置、クライアント装置、およびプログラム - Google Patents

データアクセス方法、データ記憶システム、サーバ装置、クライアント装置、およびプログラム Download PDF

Info

Publication number
WO2021070234A1
WO2021070234A1 PCT/JP2019/039563 JP2019039563W WO2021070234A1 WO 2021070234 A1 WO2021070234 A1 WO 2021070234A1 JP 2019039563 W JP2019039563 W JP 2019039563W WO 2021070234 A1 WO2021070234 A1 WO 2021070234A1
Authority
WO
WIPO (PCT)
Prior art keywords
key
data
search
array
server device
Prior art date
Application number
PCT/JP2019/039563
Other languages
English (en)
French (fr)
Inventor
敦謙 市川
浩気 濱田
Original Assignee
日本電信電話株式会社
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 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to JP2021550965A priority Critical patent/JP7218817B2/ja
Priority to US17/642,703 priority patent/US20220329419A1/en
Priority to PCT/JP2019/039563 priority patent/WO2021070234A1/ja
Publication of WO2021070234A1 publication Critical patent/WO2021070234A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2115Third party
    • 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/16Obfuscation or hiding, e.g. involving white box
    • 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/46Secure multiparty computation, e.g. millionaire problem

Definitions

  • the present invention relates to a cryptographic application technique, and particularly to a technique for accessing encrypted data stored in an external storage while concealing the contents of data and the contents of data access.
  • the bias of the physical memory address referenced in the external storage can be identified, the bias of the access tendency (hereinafter referred to as "access pattern"). It is conceivable that information will be leaked by analyzing.
  • Non-Patent Document 1 discloses a technique for accessing data while keeping the data, search key, and access pattern secret.
  • the search key is single, that is, one search key is used for one data in order to access the data while keeping the data, the search key, and the access pattern secret. It needed to be addressed. However, considering its usefulness as data storage, it is desirable that a plurality of search keys can be set for one data.
  • An object of the present invention is to enable data access by an arbitrary number of search keys while keeping all data, search keys, and access patterns concealed in view of the above technical problems.
  • the data access method of one aspect of the present invention is a data access method executed by a data storage system including a server device and a client device, and k and m are integers of 2 or more.
  • i is an integer of 2 or more and m or less
  • the data storage section of the server device has a data array for storing k data elements consisting of data and the first key associated with the data, and the first key.
  • a data index randomly generated based on the data, a data table including at least one hash table for storing k or more data records consisting of a first key and data, and a key of the server device are stored.
  • a key relationship array for storing k key relationship elements consisting of the first key and other keys associated with data, a key relationship index randomly generated based on the other keys, and the first key relationship element.
  • Each m-1 key-related table including at least one hash table for storing k or more key-related records consisting of one key and another key is stored, and a search key is generated for the client device.
  • the unit generates m search keys, the key-related sequence transmitter of the server device sends the i-th key-related array to the client device, and the key-related array search unit of the client device receives it from the server device.
  • the first key of the key relation element is retained as the found search key, and the key relation index of the client device is generated.
  • the unit sends the key relationship index generated based on the i-th search key to the server device, and the key relationship table search unit of the server device reads from the key relationship table using the key relationship index received from the client device.
  • the key-related record is sent to the client device and the key-related record reference part of the client device matches the i-th search key, the first key of the key-related record is found.
  • the key relationship that is held as a search key and the key relationship array return unit of the client device sets the key relationship element consisting of the found search key and the i-th search key to the empty element of the i-th key relationship array.
  • the search key found in the data array received from the server device by the data array transmitter of the server device, the data array transmitter of the server device, and the data array search unit of the client device, which sends the array to the server device. Or the first inspection If there is a data element that matches the search key, the data of that data element is held as found data, and if the data index generator of the client device holds the found search key, it is found.
  • a data index is generated based on the search key and the found search key is not retained, a data index is generated based on the first search key, the generated data index is sent to the server device, and the server
  • the data table search unit of the device sends the data record read from the data table to the client device using the data index received from the client device, and the data record reference section of the client device finds the data record received from the server device. If the searched key or the first search key is matched, the data of the data record is retained as the discovered data, and the data array return unit of the client device retains the discovered data and the discovered search key.
  • an arbitrary number of search keys can be kept secret while all of the data, the search keys, and the access pattern are kept secret. Data can be accessed by.
  • FIG. 1 is a diagram illustrating a functional configuration of a data storage system.
  • FIG. 2 is a diagram illustrating a functional configuration of the server device.
  • FIG. 3 is a diagram illustrating a functional configuration of the client device.
  • FIG. 4 is a diagram illustrating a data read processing procedure.
  • FIG. 5 is a diagram illustrating a processing procedure for generating a hash table.
  • FIG. 6 is a diagram illustrating a functional configuration of a computer.
  • the data storage system 100 includes, for example, a server device 1 and a client device 2.
  • the server device 1 and the client device 2 are each connected to the communication network 9.
  • the communication network 9 is a circuit-switched or packet-switched communication network configured so that each connected device can communicate with each other.
  • the Internet LAN (Local Area Network), WAN (Wide Area Network). Etc. can be used.
  • the server device 1 included in the data storage system 100 includes, for example, a data storage unit 101, a key-related storage unit 102, a key-related array transmission unit 11, a key-relationship table search unit 12, and a data array transmission unit.
  • a data table search unit 14, a data transmission unit 15, and a key-related transmission unit 16 are provided.
  • the client device 2 included in the data storage system 100 includes a search key generation unit 20, a key relationship array search unit 21, a key relationship index generation unit 22, a key relationship record reference unit 23, and a key relationship.
  • the data access method of the first embodiment is realized by performing the processing of each step shown in FIGS. 4 and 5 in cooperation with the server device 1 and the client device 2.
  • the server device 1 and the client device 2 are configured by loading a special program into, for example, a publicly known or dedicated computer having a central processing unit (CPU: Central Processing Unit), a main storage device (RAM: Random Access Memory), and the like. It is a special device that has been made.
  • the server device 1 and the client device 2 execute each process under the control of the central processing unit, for example.
  • the data input to the server device 1 and the client device 2 and the data obtained by each process are stored in, for example, the main storage device, and the data stored in the main storage device is read to the central processing unit as necessary. It is issued and used for other processing.
  • At least a part of each processing unit of the server device 1 and the client device 2 may be configured by hardware such as an integrated circuit.
  • Each storage unit included in the server device 1 is, for example, a main storage device such as RAM (Random Access Memory), an auxiliary storage device composed of a hard disk, an optical disk, or a semiconductor memory element such as a flash memory, or a relational device. It can be configured with middleware such as a database or key value store.
  • the server device 1 is a tower type or rack mount type server computer.
  • the client device 2 is a desktop type or laptop type personal computer, a smartphone, a tablet terminal, or the like.
  • m search keys v 1 , v 2 ,..., v m are associated with each data D.
  • m is a predetermined integer of 2 or more. It is assumed that the data stored in the server device 1 and the data transmitted and received between the server device 1 and the client device 2 are all encrypted with the private key of the client device 2.
  • the data storage unit 101 of the server device 1 has a hierarchical structure of a data array that can store k elements and a hash table that can store k or more records, and is a data table that can store kd T records in total. And are remembered.
  • k and d are predetermined integers of 2 or more
  • T is the number of stages in the hierarchy.
  • the data table has d-1 hash table for storing k records in the first stage, d-1 hash table for storing kd records in the second stage, and 3 stages.
  • the hash table is an array in which a predetermined number of records can be randomly arranged and stored, and records can be referenced using one index unique to each record. That is, the hash table stores the record (u, d) consisting of the index u and the data body d at a random position (memory address) in the array, and stores the record (u, d) using the index u. It is an array that can uniquely identify the location.
  • Each element of the data array stores an element (v 1 , D) (hereinafter, also referred to as a "data element”) consisting of the first key v 1 and the data body D.
  • Each hash table in the data table has its own unique identifier e.
  • Each record in the hash table is a randomly generated index r 1 e based on the pair of the first key v 1 and the data body D, the first key v 1 and the hash table identifier e (hereafter, A record (r 1 e , v 1 , D) (hereinafter, also referred to as a "data record”) in which a "data index”) is set is stored.
  • the index is generated using the pseudo-random function F s. That is, when the hash table is generated, r 1 e ⁇ F s (v 1 , e) is calculated to generate the index r 1 e.
  • the key relationship storage unit 102 of the server device 1 has a hierarchical structure of a key relationship array that can store k elements and a hash table that can store k or more records, and can store kd T records in total. Each key relation table and m-1 are stored. Where m is the maximum number of search keys.
  • the key relation table has d-1 hash tables for storing k records in the first stage and d-1 hash tables for storing kd records in the second stage. Have d-1 hash table for storing 2 kd records in the T-stage, and d-1 hash table for storing kd T-1 records in the T stage. It is configured in. That is, the key relationship storage unit 102 stores m-1 sets of arrays and tables having the same structure as the arrays and tables stored in the data storage unit 101.
  • Each element of the key relation array stores an element (v 1 , v i ) consisting of the first key v 1 and the i-th key v i (hereinafter, also referred to as "key relation element").
  • i is each integer of 2 or more and m or less.
  • Each hash table in the key relationship table has its own unique identifier e.
  • Each record in the hash table is a randomly generated index r i e based on the pair of the first key v 1 and the i-th key v i , based on the i-th key v i and the hash table identifier e.
  • key relationship index (hereinafter also referred to as a "key relationship index”) record that was set (r i e, v 1, v i) ( hereinafter also referred to as a "key relationship record”) for storing.
  • the index is generated using the pseudo-random function F s. That is, when the hash table is generated, r i e ⁇ F s (v i , e) is calculated to generate the index r i e.
  • step S20 the search key generation unit 20 of the client device 2 generates m search keys (v 1 q , v 2 q , ..., v m q ).
  • m search keys any number of search keys out of m search keys may be set as dummies. That is, it is possible to set all m search keys to perform a search, or to set one or more m-1 or less search keys to perform a search.
  • the search key generation unit 20 transmits a signal to the server device 1 to request data access.
  • step S11 to step S24 are repeatedly executed for the second search key v 2 q to the m th search key v m q.
  • the processing for the i-th search key v i q will be described. Note that i is an integer of 2 or more and m or less.
  • step S11 the key-related array transmission unit 11 of the server device 1 reads the i-th key-related array from the key-relationship storage unit 102 and transmits it to the client device 2.
  • step S22 the key relationship index generation unit 22 of the client device 2 sets dummy data in x when the found search key ⁇ is set, and sets dummy data in x, and when the found search key ⁇ is not set, Set the search key v i q to x and generate the index r i e ⁇ F s (x, e) using the pseudo-random function F s.
  • Dummy data is a value that cannot be set as a search key, and is a different value for each data access. For example, it may be a value obtained by concatenating a predetermined fixed value (for example, “dummy”) with the number of data accesses.
  • the key relationship index generation unit 22 transmits the generated index r i e to the server device 1.
  • step S12 the key relationship table search unit 12 of the server device 1 uses the index r i e received from the client device 2 to make the key relationship table stored in the key relationship storage unit 102 smaller (that is, in a shallow hierarchy). ) Refer to the table in order from the hash table. Key relationship table search unit 12 transmits the key record read from the relationship table (r i e, v 1, v i) to the client device 2.
  • the key-related record reference unit 23 transmits a record in which the key v i of the received record is rewritten into dummy data to the server device 1. If the found search key ⁇ is not set, the received record is transmitted to the server device 1 as it is.
  • the key-related array return unit 24 transmits the updated i-th key-related array to the server device 1.
  • step S13 the data array transmission unit 13 of the server device 1 reads the data array from the data storage unit 101 and transmits it to the client device 2.
  • step S14 the data table search unit 14 of the server device 1 uses the index r 1 e received from the client device 2 to use the smaller (that is, shallow hierarchy) hash table of the data tables stored in the data storage unit 101. Refer to the table in order from.
  • the data table search unit 14 transmits the records (r 1 e , v 1 , D) read from the data table to the client device 2.
  • the data D to be set may be rewritten with desired data. This corresponds to updating the data that matches the desired search key among the data stored in the server device 1 with the desired data. Further, dummy data may be set to desired data. This corresponds to writing new data in which a new search key is set when there is no data matching the desired search key in the data stored in the server device 1.
  • the data array return unit 28 transmits the updated data array to the server device 1.
  • the server device 1 updates the data array stored in the data storage unit 101 with the data array received from the client device 2.
  • Each step shown in FIG. 5 is executed when the number of times each step shown in FIG. 4 is executed is a multiple of k.
  • one element is added to the key relation array and the data array by one data access. Therefore, when the number of data accesses is a multiple of k, k elements are stored in the key relation array and the data array, respectively.
  • hash tables in the t-stage are filled. That is, there are d-1 hash tables that store k elements in the first stage, d-1 hash tables that store kd elements in the second stage, and so on, kd t- in the t stage. hash table storing one element d-1 or filled and, it is assumed that total kd t number of elements are stored in the data table and key relationship table. On the other hand, it is assumed that the hash table in the t + 1th stage has a vacancy, that is, the number of filled hash tables is less than d-1.
  • step S15 the data transmission unit 15 of the server device 1 is composed of the data array stored in the data storage unit 101 or the first key v 1 and data D stored in the hash table up to the t-th stage of the data table. Elements (v 1 , D) are read, and all elements (v 1 , D) are transmitted to the client device 2.
  • the data transmission unit 15 may read and transmit each element one by one, or may read and transmit all the elements together.
  • step S16 the key-relationship transmission unit 16 of the server device 1 and the key-relationship array stored in the key-relationship storage unit 102 or the first key v 1 stored in the hash table up to the t-th stage of the key-relationship table.
  • the element (v 1 , v i ) consisting of the i-th key v i is read, and all the elements (v 1 , v i ) are transmitted to the client device 2.
  • the key-related transmission unit 16 may read and transmit each element one by one, or may read and transmit all the elements together.
  • step S29 the data table generation unit 29 of the client device 2 regenerates a data table in which a new unique identifier e'is set in each hash table included in the data table.
  • the data table generation unit 29 sets the first key v 1 and the new identifier e'for all the data sequences stored in the data storage unit 101 or the first key v 1 stored in the data table. Based on the index r 1 e' ⁇ F s (v 1 , e') is regenerated.
  • the data table generation unit 29 stores all the records (r 1 e' , v 1 , D) including the regenerated index r 1 e' , the first key v 1, and the data D. Is regenerated.
  • step S30 the key relation table generation unit 30 of the client device 2 regenerates the key relation table in which a new unique identifier e'is set in each hash table included in the key relation table.
  • the key relation table generation unit 30 performs the i-th key for all the i-th key relation array stored in the key relation storage unit 102 or the i-th key v i stored in the i-th key relation table. Regenerate the index r i e' ⁇ F s (v i , e') based on v i and the new identifier e'.
  • the key relation table generation unit 30 is a record (r i e' , v 1 , v i ) composed of the regenerated index r i e' , the first key v 1 and the i-th key v i. Regenerate the i-th key relationship table that stores all of.
  • the client device 2 transmits the regenerated key-related table and data table to the server device 1.
  • the server device 1 updates the key relationship table and the data table stored in the key relationship storage unit 102 and the data storage unit 101 with the key relationship table and the data table received from the client device 2.
  • the server device 1 empties all the elements of the key-related array and the data array stored in the key-related storage unit 102 and the data storage unit 101.
  • the new identifier e'generated by the data table generation unit 29 or the key relationship table generation unit 30 may be held by the client device 2, or may be concealed by a method such as encryption and held by the server device 1. May be good.
  • the data storage system 100 of the second embodiment includes N ( ⁇ 2) server devices 1 1 , ..., 1 N.
  • one of the server devices 1 1 , ..., 1 N holds the hash table for each layer of the data table.
  • the first-stage hash table of the data table is held by the first server device 1 1
  • the second-stage hash table of the data table is held by the second server device 1 2 . It does not prevent a server device 1 n from holding a hash table of a plurality of layers.
  • the data The hash tables in the first and third stages of the table may be held by the first server device 1 1, and the hash tables in the second and fourth stages of the data table may be held by the second server device 1 2.
  • the key relationship storage unit 102 of the second embodiment holds one of the server devices 1 1, ..., 1 N for each layer of the key relationship table.
  • the data table generation unit 29 of the second embodiment generates a hash table of a hierarchy not held by the server device 1. Generation procedure is similar to the data table generation unit 29 of the first embodiment, the identifier e 'and the index r 1 e' of the hash table, since it is necessary to confidential from the server device 1, the client device 2 Generate.
  • the data transmission unit 15 of the server device 1 1 There sends a set (v 1, D) of the first key v 1 and the data D to be stored in one row of the hash table to the server device 1 2, the data table generation unit 29 of the server device 1 2 1 Generate a hash table for the stage.
  • the data transmission unit 15 of the server device 1 2 transmits the pair (v 1 , D) of the first key v 1 and the data D to be stored in the hash table of the second stage to the server device 1 1 .
  • data table generating unit 29 of the server device 1 2 generates a hash table of the first stage.
  • the key relation table generation unit 30 of the second embodiment generates a hash table of a hierarchy not held by the server device 1 in the same manner as the data table generation unit 29.
  • the client device 2 has a function of generating a hash table
  • each of the plurality of server devices 1 has a function
  • the server device 1 and the client device 2 Each has a function of generating a hash table, and the server device 1 and the client device 2 generate a hash table by a secret hash while communicating with each other.
  • server device 1 When a plurality of server devices 1 1 , ..., 1 N exist in the data storage system 100, either server device 1 is used for each layer of the data table or the key-related table as in the data storage system of the second embodiment. n may hold the hash table, or the hash table of the same number of stages may be duplicated and shared among a plurality of server devices 1 1 , ..., 1 N.
  • the data table generation unit 30 of the third embodiment generates a hash table of the hierarchy held by the server device 1 while communicating with the client device 2.
  • a hash table is duplicated and shared among a plurality of server devices 1 1 , ..., 1 N
  • one of the server devices 1 n generates a hash table on behalf of the other server devices 1 n' (. It can be duplicated and shared to n ⁇ n').
  • any method may be used.
  • data may be received one by one by a normal communication method, or a plurality of data may be collectively received by using Private Information Retrieval or table reference by secret calculation while keeping the reference position of the hash table concealed.
  • the program that describes this processing content can be recorded on a computer-readable recording medium.
  • the computer-readable recording medium may be, for example, a magnetic recording device, an optical disk, a photomagnetic recording medium, a semiconductor memory, or the like.
  • the distribution of this program is carried out, for example, by selling, transferring, renting, etc., portable recording media such as DVDs and CD-ROMs on which the program is recorded. Further, the program may be stored in the storage device of the server computer, and the program may be distributed by transferring the program from the server computer to another computer via a network.
  • a computer that executes such a program first stores, for example, a program recorded on a portable recording medium or a program transferred from a server computer in its own storage device. Then, when the process is executed, the computer reads the program stored in its own storage device and executes the process according to the read program. Further, as another execution form of this program, a computer may read the program directly from a portable recording medium and execute processing according to the program, and further, the program is transferred from the server computer to this computer. Each time, the processing according to the received program may be executed sequentially. In addition, the above processing is executed by a so-called ASP (Application Service Provider) type service that realizes the processing function only by the execution instruction and result acquisition without transferring the program from the server computer to this computer. May be.
  • the program in this embodiment includes information to be used for processing by a computer and equivalent to the program (data that is not a direct command to the computer but has a property of defining the processing of the computer, etc.).
  • the present device is configured by executing a predetermined program on the computer, but at least a part of these processing contents may be realized by hardware.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Power Engineering (AREA)

Abstract

任意の個数の検索キーによるデータアクセスを可能とする。検索キーを生成する(S20)。キー関係配列を送信する(S11)。キー関係配列に合致する要素が存在する場合、発見された検索キーを保持する(S21)。キー関係索引を送信する(S22)。キー関係索引を用いて読み出したレコードを送信する(S12)。レコードが検索キーに合致する場合、発見された検索キーを保持する(S23)。発見された検索キーをキー関係配列の空の要素に設定して送信する(S24)。データ配列を送信する(S13)。データ配列に合致する要素が存在する場合、発見されたデータを保持する(S25)。データ索引を送信する(S26)。データ索引を用いて読み出したレコードを送信する(S14)。レコードが検索キーに合致する場合、発見されたデータを保持する(S27)。所望のデータをデータ配列の空の要素に設定して送信する(S28)。

Description

データアクセス方法、データ記憶システム、サーバ装置、クライアント装置、およびプログラム
 本発明は、暗号応用技術に関し、特にデータの内容とデータアクセスの内容を秘匿しながら外部ストレージに記憶された暗号化データへアクセスする技術に関する。
 近年、クラウドサービスなど外部ストレージへデータを委託する需要が増している。こうしたサービスは利用者(クライアント)が十分なローカル記憶領域を持たなくとも、大量のデータの保存とアクセスが可能という点で有用である。一方で、外部ストレージを利用するクライアントのプライバシを保護するためには、「データの内容の秘匿」と「データアクセス(検索)の内容の秘匿」の2つが必要となる。データの内容はそれ自体がクライアントのプライバシに関わるものであり、暗号化など何らかの方法で秘匿化された状態で保存される必要がある。また、データを検索する際のキーワードなどからデータの内容が推測され得ることを考慮すれば、データそのものや検索キーを秘匿したままでデータにアクセスできることが望ましい。加えて、データや検索キーが秘匿されている場合であっても、外部ストレージにおいて参照される物理メモリアドレスの偏りが識別できてしまう場合、アクセス傾向の偏り(以下、「アクセスパターン」と呼ぶ)を分析することで情報が漏洩してしまうことが考えられる。
 これらの問題を解決するために、データ、検索キー、およびアクセスパターンを秘匿したままデータアクセスを行う技術が、非特許文献1に開示されている。
O. Goldreich and R. Ostrovsky, "Software protection and simulation on oblivious RAMs," Journal of the ACM, vol. 43(3), pp. 431-473, May 1996.
 非特許文献1に記載された従来技術では、データ、検索キー、およびアクセスパターンを秘匿したままデータアクセスを行うために、検索キーが単独である、すなわち1つのデータに対して1つの検索キーが対応されていることが必要であった。しかしながら、データストレージとしての有用性を考慮すれば、1つのデータに対して複数の検索キーが設定できることが望ましい。
 この発明の目的は、上記のような技術的課題に鑑みて、データ、検索キー、およびアクセスパターンのすべてを秘匿したまま、任意の個数の検索キーによるデータアクセスを可能とすることである。
 上記の課題を解決するために、この発明の一態様のデータアクセス方法は、サーバ装置とクライアント装置とを含むデータ記憶システムが実行するデータアクセス方法であって、k, mは2以上の整数であり、iは2以上m以下の各整数とし、サーバ装置のデータ記憶部に、データとデータに紐づく第一キーとからなるデータ要素をk個記憶するためのデータ配列と、第一キーに基づいてランダムに生成されたデータ索引と第一キーとデータとからなるデータレコードをk個以上記憶するための少なくとも1個のハッシュテーブルを含むデータテーブルと、が記憶されており、サーバ装置のキー関係記憶部に、第一キーとデータに紐づく他のキーとからなるキー関係要素をk個記憶するためのキー関係配列と、他のキーに基づいてランダムに生成されたキー関係索引と第一キーと他のキーとからなるキー関係レコードをk個以上記憶するための少なくとも1個のハッシュテーブルを含むキー関係テーブルと、がそれぞれm-1個記憶されており、クライアント装置の検索キー生成部が、m個の検索キーを生成し、サーバ装置のキー関係配列送信部が、i番目のキー関係配列をクライアント装置へ送信し、クライアント装置のキー関係配列検索部が、サーバ装置から受信したi番目のキー関係配列の中にi番目の検索キーに合致するキー関係要素が存在する場合、当該キー関係要素の第一キーを発見された検索キーとして保持し、クライアント装置のキー関係索引生成部が、i番目の検索キーに基づいて生成したキー関係索引をサーバ装置へ送信し、サーバ装置のキー関係テーブル検索部が、クライアント装置から受信したキー関係索引を用いてキー関係テーブルから読み出したキー関係レコードをクライアント装置へ送信し、クライアント装置のキー関係レコード参照部が、サーバ装置から受信したキー関係レコードがi番目の検索キーに合致する場合、当該キー関係レコードの第一キーを発見された検索キーとして保持し、クライアント装置のキー関係配列返送部が、発見された検索キーとi番目の検索キーとからなるキー関係要素をi番目のキー関係配列の空の要素に設定したキー関係配列をサーバ装置へ送信し、サーバ装置のデータ配列送信部が、データ配列をクライアント装置へ送信し、クライアント装置のデータ配列検索部が、サーバ装置から受信したデータ配列の中に発見された検索キーまたは1番目の検索キーに合致するデータ要素が存在する場合、当該データ要素のデータを発見されたデータとして保持し、クライアント装置のデータ索引生成部が、発見された検索キーを保持している場合、発見された検索キーに基づいてデータ索引を生成し、発見された検索キーを保持していない場合、1番目の検索キーに基づいてデータ索引を生成し、生成されたデータ索引をサーバ装置へ送信し、サーバ装置のデータテーブル検索部が、クライアント装置から受信したデータ索引を用いてデータテーブルから読み出したデータレコードをクライアント装置へ送信し、クライアント装置のデータレコード参照部が、サーバ装置から受信したデータレコードが発見された検索キーまたは1番目の検索キーに合致する場合、当該データレコードのデータを発見されたデータとして保持し、クライアント装置のデータ配列返送部が、発見されたデータおよび発見された検索キーを保持している場合、所望のデータと発見された検索キーとからなるデータ要素をデータ配列の空の要素に設定し、それ以外の場合、所望のデータと1番目の検索キーとからなるデータ要素をデータ配列の空の要素に設定し、更新されたデータ配列をサーバ装置へ送信する。
 この発明によれば、複数の検索キーが最終的に1つのデータを参照するようにシステムを構築することにより、データ、検索キー、およびアクセスパターンのすべてを秘匿したまま、任意の個数の検索キーによるデータアクセスが可能となる。
図1は、データ記憶システムの機能構成を例示する図である。 図2は、サーバ装置の機能構成を例示する図である。 図3は、クライアント装置の機能構成を例示する図である。 図4は、データ読み出しの処理手順を例示する図である。 図5は、ハッシュテーブル生成の処理手順を例示する図である。 図6は、コンピュータの機能構成を例示する図である。
 以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
 [第一実施形態]
 図1を参照して、第一実施形態のデータ記憶システムの構成例を説明する。データ記憶システム100は、例えば、サーバ装置1およびクライアント装置2を含む。本実施形態では、サーバ装置1およびクライアント装置2はそれぞれ通信網9へ接続される。通信網9は、接続される各装置が相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN(Local Area Network)、WAN(Wide Area Network)などを用いることができる。
 データ記憶システム100に含まれるサーバ装置1は、例えば、図2に示すように、データ記憶部101、キー関係記憶部102、キー関係配列送信部11、キー関係テーブル検索部12、データ配列送信部13、データテーブル検索部14、データ送信部15、およびキー関係送信部16を備える。データ記憶システム100に含まれるクライアント装置2は、例えば、図3に示すように、検索キー生成部20、キー関係配列検索部21、キー関係索引生成部22、キー関係レコード参照部23、キー関係配列返送部24、データ配列検索部25、データ索引生成部26、データレコード参照部27、データ配列返送部28、データテーブル生成部29、およびキー関係テーブル生成部30を備える。サーバ装置1とクライアント装置2とが協調しながら図4、5に示す各ステップの処理を行うことにより第一実施形態のデータアクセス方法が実現される。
 サーバ装置1およびクライアント装置2は、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。サーバ装置1およびクライアント装置2は、例えば、中央演算処理装置の制御のもとで各処理を実行する。サーバ装置1およびクライアント装置2に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。サーバ装置1およびクライアント装置2の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。サーバ装置1が備える各記憶部は、例えば、RAM(Random Access Memory)などの主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリ(Flash Memory)のような半導体メモリ素子により構成される補助記憶装置、またはリレーショナルデータベースやキーバリューストアなどのミドルウェアにより構成することができる。サーバ装置1は、具体的には、タワー型もしくはラックマウント型のサーバコンピュータである。クライアント装置2は、具体的には、デスクトップ型もしくはラップトップ型のパーソナルコンピュータ、スマートフォン、タブレット端末などである。
 図4を参照して、第一実施形態のデータ記憶システム100が実行するデータアクセス方法のうちデータ読み出しの処理手続きを説明する。
 以下の説明では、各データDにはm個の検索キーv1, v2, …, vmが紐づくとする。ここで、mは2以上の所定の整数である。なお、サーバ装置1が記憶するデータと、サーバ装置1とクライアント装置2との間で送受信されるデータは、すべてクライアント装置2の秘密鍵で暗号化されているものとする。
 サーバ装置1のデータ記憶部101には、k個の要素を記憶できるデータ配列と、k個以上のレコードを記憶できるハッシュテーブルが階層構造をもち、全体でkdT個のレコードを記憶できるデータテーブルと、が記憶されている。ここで、k, dは2以上の所定の整数であり、Tは階層の段数である。データテーブルは、1段目にk個のレコードを記憶するためのハッシュテーブルをd-1個もち、2段目にkd個のレコードを記憶するためのハッシュテーブルをd-1個もち、3段目にkd2個のレコードを記憶するためのハッシュテーブルをd-1個もち・・・、T段目にkdT-1個のレコードを記憶するためのハッシュテーブルをd-1個もつように構成されている。すなわち、階層が深くなるにつれて記憶できる個数がd倍ずつ増えるハッシュテーブルが各階層にd-1個ずつ構成されている。
 ハッシュテーブルは、所定の数のレコードをランダムに並べて記憶することができ、かつ、レコード毎に固有の1つの索引を用いてレコードの参照を行うことができる配列である。すなわち、ハッシュテーブルは、索引uとデータ本体dからなるレコード(u, d)を配列内のランダムな位置(メモリアドレス)に保存し、かつ、索引uを用いてレコード(u, d)が格納された位置を一意に特定できる配列である。
 データ配列の各要素は、1番目のキーv1とデータ本体Dとからなる要素(v1, D)(以下、「データ要素」とも呼ぶ)を記憶する。データテーブルの各ハッシュテーブルは、それぞれが固有の識別子eをもつ。ハッシュテーブルの各レコードは、1番目のキーv1とデータ本体Dとの組に、1番目のキーv1とハッシュテーブルの識別子eとに基づいてランダムに生成された索引r1 e(以下、「データ索引」とも呼ぶ)を設定したレコード(r1 e, v1, D)(以下、「データレコード」とも呼ぶ)を記憶する。索引は、疑似ランダム関数Fsを用いて生成される。すなわち、ハッシュテーブルを生成する際に、r1 e←Fs(v1, e)を計算して、索引r1 eを生成する。
 サーバ装置1のキー関係記憶部102には、k個の要素を記憶できるキー関係配列と、k個以上のレコードを記憶できるハッシュテーブルが階層構造をもち、全体でkdT個のレコードを記憶できるキー関係テーブルと、がそれぞれm-1個記憶されている。ここで、mは検索キーの最大数である。キー関係テーブルは、1段目にk個のレコードを記憶するためのハッシュテーブルをd-1個もち、2段目にkd個のレコードを記憶するためのハッシュテーブルをd-1個もち、3段目にkd2個のレコードを記憶するためのハッシュテーブルをd-1個もち・・・、T段目にkdT-1個のレコードを記憶するためのハッシュテーブルをd-1個もつように構成されている。すなわち、キー関係記憶部102は、データ記憶部101に記憶された配列およびテーブルと同じ構造をもつ配列およびテーブルをm-1組記憶する。
 キー関係配列の各要素は、1番目のキーv1とi番目のキーviとからなる要素(v1, vi)(以下、「キー関係要素」とも呼ぶ)を記憶する。ここで、iは2以上m以下の各整数である。キー関係テーブルの各ハッシュテーブルは、それぞれが固有の識別子eをもつ。ハッシュテーブルの各レコードは、1番目のキーv1とi番目のキーviとの組に、i番目のキーviとハッシュテーブルの識別子eとに基づいてランダムに生成された索引ri e(以下、「キー関係索引」とも呼ぶ)を設定したレコード(ri e, v1, vi)(以下、「キー関係レコード」とも呼ぶ)を記憶する。索引は、疑似ランダム関数Fsを用いて生成される。すなわち、ハッシュテーブルを生成する際に、ri e←Fs(vi, e)を計算して、索引ri eを生成する。
 ステップS20において、クライアント装置2の検索キー生成部20は、m個の検索キー(v1 q, v2 q, …, vm q)を生成する。ただし、m個の検索キーのうち任意の個数の検索キーをダミーに設定してもよい。すなわち、m個すべての検索キーを設定して検索を行うこともできるし、1個以上m-1個以下の検索キーを設定して検索を行うこともできる。検索キー生成部20は、サーバ装置1に対して、データアクセスを要求する旨の信号を送信する。
 ステップS11からステップS24までの処理は、2番目の検索キーv2 qからm番目の検索キーvm qまでを対象にして、繰り返し実行する。以下では、i番目の検索キーvi qに対する処理として説明する。なお、iは2以上m以下の整数である。
 ステップS11において、サーバ装置1のキー関係配列送信部11は、キー関係記憶部102からi番目のキー関係配列を読み出し、クライアント装置2へ送信する。
 ステップS21において、クライアント装置2のキー関係配列検索部21は、サーバ装置1から受信したi番目のキー関係配列の中にi番目の検索キーvi qに合致する要素が存在するか否かを判定する。検索キーvi qに合致する要素が存在する場合、その要素のキーv1を発見された検索キーφ=v1として保持する。
 ステップS22において、クライアント装置2のキー関係索引生成部22は、発見された検索キーφが設定されている場合、xにダミーデータを設定し、発見された検索キーφが設定されていない場合、xに検索キーvi qを設定し、疑似ランダム関数Fsを用いて索引ri e←Fs(x, e)を生成する。ダミーデータは検索キーとして設定され得ない値であり、データアクセス毎に異なる値とする。例えば、所定の固定値(例えば“dummy”)にデータアクセス回数を連結した値とすればよい。キー関係索引生成部22は、生成した索引ri eをサーバ装置1へ送信する。
 ステップS12において、サーバ装置1のキー関係テーブル検索部12は、クライアント装置2から受信した索引ri eを用いて、キー関係記憶部102に記憶されたキー関係テーブルのうち小さい(すなわち浅い階層の)ハッシュテーブルから順に、テーブル参照を行う。キー関係テーブル検索部12は、キー関係テーブルから読み出したレコード(ri e, v1, vi)をクライアント装置2へ送信する。
 ステップS23において、クライアント装置2のキー関係レコード参照部23は、サーバ装置1から受信したレコード(ri e, v1, vi)がi番目の検索キーvi qに合致する場合、そのレコードのキーv1を発見された検索キーφ=v1として保持する。キー関係レコード参照部23は、発見された検索キーφが設定されている場合、受信したレコードのキーviをダミーデータに書き換えたレコードをサーバ装置1へ送信する。発見された検索キーφが設定されていない場合、受信したレコードをそのままサーバ装置1へ送信する。
 ステップS24において、クライアント装置2のキー関係配列返送部24は、発見された検索キーφが設定されている場合、発見された検索キーφ=v1とi番目の検索キーvi qとの組(v1, vi q)を、サーバ装置1から受信したi番目のキー関係配列の空いている(すなわち、空の要素が記憶されている)位置に設定する。発見された検索キーφが設定されていない場合、ダミーデータとi番目の検索キーvi qとの組を、サーバ装置1から受信したi番目のキー関係配列の空いている位置に設定する。キー関係配列返送部24は、更新されたi番目のキー関係配列をサーバ装置1へ送信する。
 ステップS13において、サーバ装置1のデータ配列送信部13は、データ記憶部101からデータ配列を読み出し、クライアント装置2へ送信する。
 ステップS25において、クライアント装置2のデータ配列検索部25は、発見された検索キーφが設定されている場合、サーバ装置1から受信したデータ配列の中に発見された検索キーφに合致する要素が存在するか否かを判定する。発見された検索キーφに合致する要素が存在する場合、その要素のデータDを発見されたデータπ=Dとして保持する。また、データ配列検索部25は、発見された検索キーφが設定されていない場合、サーバ装置1から受信したデータ配列の中に1番目の検索キーv1 qに合致する要素が存在するか否かを判定する。1番目の検索キーv1 qに合致する要素が存在する場合、その要素のデータDを発見されたデータπ=Dとして保持する。
 ステップS26において、クライアント装置2のデータ索引生成部26は、発見されたデータπが設定されている場合、xにダミーデータを設定し、発見されたデータπが設定されておらず、発見された検索キーφが設定されている場合、xに発見された検索キーφ=v1を設定し、発見されたデータπが設定されておらず、発見された検索キーφも設定されていない場合、xに1番目の検索キーv1 qを設定し、疑似ランダム関数Fsを用いて索引r1 e←Fs(x, e)を生成する。データ索引生成部26は、生成した索引r1 eをサーバ装置1へ送信する。
 ステップS14において、サーバ装置1のデータテーブル検索部14は、クライアント装置2から受信した索引r1 eを用いて、データ記憶部101に記憶されたデータテーブルのうち小さい(すなわち浅い階層の)ハッシュテーブルから順に、テーブル参照を行う。データテーブル検索部14は、データテーブルから読み出したレコード(r1 e, v1, D)をクライアント装置2へ送信する。
 ステップS27において、クライアント装置2のデータレコード参照部27は、発見された検索キーφが設定されており、サーバ装置1から受信したレコード(r1 e, v1, D)が発見された検索キーφに合致する場合、そのレコードのデータDを発見されたデータπ=Dとして保持する。発見された検索キーφが設定されておらず、サーバ装置1から受信したレコード(r1 e, v1, D)が1番目の検索キーv1 qに合致する場合、そのレコードのデータDを発見されたデータπ=Dとして保持する。
 ステップS28において、クライアント装置2のデータ配列返送部28は、発見されたデータπおよび発見された検索キーφが設定されている場合、発見されたデータπ=Dと発見された検索キーφ=v1との組(v1, D)を、サーバ装置1から受信したデータ配列の空いている位置に設定する。発見されたデータπが設定されており、発見された検索キーφが設定されていない場合、発見されたデータπ=Dと1番目の検索キーv1 qとの組(v1 q, D)を、サーバ装置1から受信したデータ配列の空いている位置に設定する。発見されたデータπが設定されていない場合、ダミーデータと1番目の検索キーv1 qとの組を、サーバ装置1から受信したデータ配列の空いている位置に設定する。このとき、設定するデータDを所望のデータで書き換えてもよい。これは、サーバ装置1に記憶されたデータのうち所望の検索キーに合致するデータを所望のデータで更新することに相当する。また、ダミーデータを所望のデータに設定してもよい。これは、サーバ装置1に記憶されたデータに所望の検索キーに合致するデータが存在しないときに新たな検索キーが設定された新たなデータを書き込むことに相当する。データ配列返送部28は、更新されたデータ配列をサーバ装置1へ送信する。
 サーバ装置1は、クライアント装置2から受信したデータ配列で、データ記憶部101に記憶されたデータ配列を更新する。
 図5を参照して、第一実施形態のデータ記憶システム100が実行するデータアクセス方法のうちハッシュテーブル生成の処理手続きを説明する。
 図5に示す各ステップは、図4に示す各ステップを実行した回数がkの倍数となったとき、実行される。上述したデータ読み出しの処理手順に従えば、1回のデータアクセスによりキー関係配列およびデータ配列に1個の要素が追加される。そのため、データアクセス回数がkの倍数となったときは、キー関係配列およびデータ配列にそれぞれk個の要素が記憶されていることになる。
 なお、以下ではt段目のハッシュテーブルまですべて埋まっているものと仮定する。すなわち、1段目のk個の要素を記憶するハッシュテーブルがd-1個、2段目のkd個の要素を記憶するハッシュテーブルがd-1個・・・、t段目のkdt-1個の要素を記憶するハッシュテーブルがd-1個埋まっており、全体でkdt個の要素がデータテーブルおよびキー関係テーブルに記憶されているものとする。一方、t+1段目のハッシュテーブルには空きがある、すなわち、埋まっているハッシュテーブルがd-1個未満であるとする。
 ステップS15において、サーバ装置1のデータ送信部15は、データ記憶部101に記憶されたデータ配列またはデータテーブルのt段目までのハッシュテーブルに記憶された1番目のキーv1とデータDとからなる要素(v1, D)を読み出し、すべての要素(v1, D)をクライアント装置2へ送信する。データ送信部15は、各要素を1つずつ読み出して送信してもよいし、すべての要素をまとめて読み出して送信してもよい。
 ステップS16において、サーバ装置1のキー関係送信部16は、キー関係記憶部102に記憶されたキー関係配列またはキー関係テーブルのt段目までのハッシュテーブルに記憶された1番目のキーv1とi番目のキーviとからなる要素(v1, vi)を読み出し、すべての要素(v1, vi)をクライアント装置2へ送信する。キー関係送信部16は、データ送信部15と同様に、各要素を1つずつ読み出して送信してもよいし、すべての要素をまとめて読み出して送信してもよい。
 ステップS29において、クライアント装置2のデータテーブル生成部29は、データテーブルに含まれる各ハッシュテーブルに新たな固有の識別子e'を設定したデータテーブルを再生成する。まず、データテーブル生成部29は、データ記憶部101に記憶されたデータ配列またはデータテーブルに記憶されていた1番目のキーv1すべてについて、1番目のキーv1と新たな識別子e'とに基づいて索引r1 e'←Fs(v1, e')を再生成する。続いて、データテーブル生成部29は、再生成された索引r1 e'と1番目のキーv1とデータDとからなるレコード(r1 e', v1, D)をすべて記憶するデータテーブルを再生成する。
 ステップS30において、クライアント装置2のキー関係テーブル生成部30は、キー関係テーブルに含まれる各ハッシュテーブルに新たな固有の識別子e'を設定したキー関係テーブルを再生成する。まず、キー関係テーブル生成部30は、キー関係記憶部102に記憶されたi番目のキー関係配列またはi番目のキー関係テーブルに記憶されていたi番目のキーviすべてについて、i番目のキーviと新たな識別子e'とに基づいて索引ri e'←Fs(vi, e')を再生成する。続いて、キー関係テーブル生成部30は、再生成された索引ri e'と1番目のキーv1とi番目のキーviとからなるレコード(ri e', v1, vi)をすべて記憶するi番目のキー関係テーブルを再生成する。
 クライアント装置2は、再生成したキー関係テーブルおよびデータテーブルをサーバ装置1へ送信する。サーバ装置1は、クライアント装置2から受信したキー関係テーブルおよびデータテーブルで、キー関係記憶部102およびデータ記憶部101に記憶されていたキー関係テーブルおよびデータテーブルを更新する。サーバ装置1は、キー関係記憶部102およびデータ記憶部101に記憶されていたキー関係配列およびデータ配列の各要素をすべて空にする。データテーブル生成部29またはキー関係テーブル生成部30で生成した新たな識別子e'は、クライアント装置2が保持していてもよいし、暗号化などの方法で秘匿化してサーバ装置1に保持させてもよい。
 上述のようにハッシュテーブルを生成することにより、すべてのデータは暗号化され、かつ、データへのアクセスは疑似ランダム関数により生成されたランダムな索引により行われる。さらに、各データはハッシュテーブルによりランダムな位置に記憶されており、かつ、同じハッシュテーブルに対して複数回同じ索引により参照されることはない(一度参照されたデータは以降必ずダミーデータで参照されるため)。したがって、サーバ装置1からはデータ、検索キー、およびアクセスパターンを識別することはできない。
 [第二実施形態]
 第一実施形態では、サーバ装置とクライアント装置とが1台ずつ存在するデータ記憶システムを説明した。しかしながら、サーバ装置は複数台存在してもよい。第二実施形態では、サーバ装置が複数台存在する場合の構成について説明する。
 第二実施形態のデータ記憶システム100は、N(≧2)台のサーバ装置11, …, 1Nを含む。第一実施形態では、ハッシュテーブルを生成する機能をクライアント装置2が備えたが、第二実施形態では、各サーバ装置1n(n=1, …, N)が備える。すなわち、サーバ装置1nは、データテーブル生成部29およびキー関係テーブル生成部30をさらに備える。また、クライアント装置2は、データテーブル生成部29およびキー関係テーブル生成部30を備えない。
 第二実施形態のデータ記憶部101は、データテーブルの階層毎に、サーバ装置11, …, 1Nのうちのいずれかがハッシュテーブルを保持するものとする。例えば、データテーブルの1段目のハッシュテーブルは1台目のサーバ装置11が保持し、データテーブルの2段目のハッシュテーブルは2台目のサーバ装置12が保持する。あるサーバ装置1nが複数の階層のハッシュテーブルを保持することは妨げず、例えば、2台のサーバ装置11, 12が存在するとき、データテーブルの階層数が4であるとしたら、データテーブルの1,3段目のハッシュテーブルは1台目のサーバ装置11が保持し、データテーブルの2,4段目のハッシュテーブルは2台目のサーバ装置12が保持すればよい。
 第二実施形態のキー関係記憶部102は、データ記憶部101と同様に、キー関係テーブルの階層毎に、サーバ装置11, …, 1Nのうちのいずれかが保持する。
 第二実施形態のデータテーブル生成部29は、そのサーバ装置1が保持していない階層のハッシュテーブルを生成する。生成の手順は、第一実施形態のデータテーブル生成部29と同様であるが、ハッシュテーブルの識別子e'と索引r1 e'は、サーバ装置1から秘匿する必要があるため、クライアント装置2が生成する。例えば、1段目のハッシュテーブルを1台目のサーバ装置11が保持し、2段目のハッシュテーブルを2台目のサーバ装置12が保持するとき、サーバ装置11のデータ送信部15が1段目のハッシュテーブルに記憶するべき1番目のキーv1とデータDとの組(v1, D)をサーバ装置12へ送信し、サーバ装置12のデータテーブル生成部29が1段目のハッシュテーブルを生成する。同様に、サーバ装置12のデータ送信部15が2段目のハッシュテーブルに記憶するべき1番目のキーv1とデータDとの組(v1, D)をサーバ装置11へ送信し、サーバ装置12のデータテーブル生成部29が1段目のハッシュテーブルを生成する。
 第二実施形態のキー関係テーブル生成部30は、データテーブル生成部29と同様に、そのサーバ装置1が保持していない階層のハッシュテーブルを生成する。
 [第三実施形態]
 ハッシュテーブルの生成は、(1)テーブル作成者が索引とデータ位置の関係を知ることができる方法、(2)テーブル作成者が索引とデータ位置の関係を知らないまま生成する方法、の2通りが存在する。(2)の方法ではクライアントとサーバの通信を必要とする。(2)の方法は、「秘匿ハッシュ」と呼ばれる。秘匿ハッシュの詳細な構成方法は、例えば、非特許文献1に開示されている。第一実施形態では、(1)の方法を前提にデータ記憶システムを構成した。第三実施形態では、(2)秘匿ハッシュを用いたデータ記憶システムを構成する方法を説明する。
 第一実施形態では、ハッシュテーブルを生成する機能をクライアント装置2が備え、第二実施形態では、複数のサーバ装置1がそれぞれ備えたが、第三実施形態では、サーバ装置1とクライアント装置2とがそれぞれハッシュテーブルを生成する機能を備え、サーバ装置1とクライアント装置2とが相互に通信しながら秘匿ハッシュによりハッシュテーブルの生成を行う。
 データ記憶システム100に複数のサーバ装置11, …, 1Nが存在する場合、第二実施形態のデータ記憶システムのように、データテーブルまたはキー関係テーブルの階層毎に、いずれかのサーバ装置1nがハッシュテーブルを保持してもよいし、複数のサーバ装置11, …, 1N間で同じ段数のハッシュテーブルを複製して共有してもよい。
 第三実施形態のデータテーブル生成部30は、そのサーバ装置1が保持している階層のハッシュテーブルを、クライアント装置2と通信しながら生成する。ハッシュテーブルを複製して複数のサーバ装置11, …, 1N間で共有する場合、そのうちの1台のサーバ装置1nが代表してハッシュテーブルを生成し、他のサーバ装置1n'(n≠n')へ複製して共有すればよい。
 [その他の変形例]
 サーバ装置1のキー関係テーブル検索部12やデータテーブル検索部14において、ハッシュテーブル上のレコードを参照する際に、その方法はどのようなものでもよい。例えば、通常の通信方式によって逐一データを受信してもよいし、複数のデータをまとめてPrivate Information Retrievalや秘密計算による表参照を用いてハッシュテーブルの参照位置を秘匿したまま受信してもよい。
 以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
 [プログラム、記録媒体]
 上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムを図6に示すコンピュータの記憶部1020に読み込ませ、制御部1010、入力部1030、出力部1040などに動作させることにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
 この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
 また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
 このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
 また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (8)

  1.  サーバ装置とクライアント装置とを含むデータ記憶システムが実行するデータアクセス方法であって、
     k, mは2以上の整数であり、iは2以上m以下の各整数とし、
     上記サーバ装置のデータ記憶部に、データと上記データに紐づく第一キーとからなるデータ要素をk個記憶するためのデータ配列と、上記第一キーに基づいてランダムに生成されたデータ索引と上記第一キーと上記データとからなるデータレコードをk個以上記憶するための少なくとも1個のハッシュテーブルを含むデータテーブルと、が記憶されており、
     上記サーバ装置のキー関係記憶部に、上記第一キーと上記データに紐づく他のキーとからなるキー関係要素をk個記憶するためのキー関係配列と、上記他のキーに基づいてランダムに生成されたキー関係索引と上記第一キーと上記他のキーとからなるキー関係レコードをk個以上記憶するための少なくとも1個のハッシュテーブルを含むキー関係テーブルと、がそれぞれm-1個記憶されており、
     上記クライアント装置の検索キー生成部が、m個の検索キーを生成し、
     上記サーバ装置のキー関係配列送信部が、i番目のキー関係配列を上記クライアント装置へ送信し、
     上記クライアント装置のキー関係配列検索部が、上記サーバ装置から受信したi番目のキー関係配列の中にi番目の検索キーに合致するキー関係要素が存在する場合、当該キー関係要素の第一キーを発見された検索キーとして保持し、
     上記クライアント装置のキー関係索引生成部が、i番目の検索キーに基づいて生成したキー関係索引を上記サーバ装置へ送信し、
     上記サーバ装置のキー関係テーブル検索部が、上記クライアント装置から受信したキー関係索引を用いて上記キー関係テーブルから読み出したキー関係レコードを上記クライアント装置へ送信し、
     上記クライアント装置のキー関係レコード参照部が、上記サーバ装置から受信したキー関係レコードがi番目の検索キーに合致する場合、当該キー関係レコードの第一キーを上記発見された検索キーとして保持し、
     上記クライアント装置のキー関係配列返送部が、上記発見された検索キーとi番目の検索キーとからなるキー関係要素をi番目のキー関係配列の空の要素に設定したキー関係配列を上記サーバ装置へ送信し、
     上記サーバ装置のデータ配列送信部が、上記データ配列を上記クライアント装置へ送信し、
     上記クライアント装置のデータ配列検索部が、上記サーバ装置から受信したデータ配列の中に上記発見された検索キーまたは上記1番目の検索キーに合致するデータ要素が存在する場合、当該データ要素のデータを発見されたデータとして保持し、
     上記クライアント装置のデータ索引生成部が、上記発見された検索キーを保持している場合、上記発見された検索キーに基づいてデータ索引を生成し、上記発見された検索キーを保持していない場合、1番目の検索キーに基づいてデータ索引を生成し、生成されたデータ索引を上記サーバ装置へ送信し、
     上記サーバ装置のデータテーブル検索部が、上記クライアント装置から受信したデータ索引を用いて上記データテーブルから読み出したデータレコードを上記クライアント装置へ送信し、
     上記クライアント装置のデータレコード参照部が、上記サーバ装置から受信したデータレコードが上記発見された検索キーまたは1番目の検索キーに合致する場合、当該データレコードのデータを上記発見されたデータとして保持し、
     上記クライアント装置のデータ配列返送部が、上記発見されたデータおよび上記発見された検索キーを保持している場合、所望のデータと上記発見された検索キーとからなるデータ要素を上記データ配列の空の要素に設定し、それ以外の場合、所望のデータと上記1番目の検索キーとからなるデータ要素を上記データ配列の空の要素に設定し、更新されたデータ配列を上記サーバ装置へ送信する、
     データアクセス方法。
  2.  請求項1に記載のデータアクセス方法であって、
     上記サーバ装置のキー関係送信部が、上記キー関係配列または上記キー関係テーブルに記憶されている上記第一キーと上記他のキーとの組をすべて上記クライアント装置へ送信し、
     上記サーバ装置のデータ送信部が、上記データ配列または上記データテーブルに記憶されている上記第一キーと上記データとの組をすべて上記クライアント装置へ送信し、
     上記クライアント装置のキー関係テーブル生成部が、i番目のキー関係配列またはi番目のキー関係テーブルに記憶されていた上記他のキーすべてについて、当該他のキーに基づいて生成したキー関係索引と上記第一キーと上記他のキーとからなるキー関係レコードを記憶するi番目のキー関係テーブルを生成し、
     上記クライアント装置のデータテーブル生成部が、上記データ配列または上記データテーブルに記憶されていた上記第一キーすべてについて、当該第一キーに基づいて生成したデータ索引と上記第一キーと上記データとからなるデータレコードを記憶するデータテーブルを生成する、
     データアクセス方法。
  3.  請求項2に記載のデータアクセス方法であって、
     dは2以上の整数であり、Tは1以上の整数であり、tはT以下の各整数であり、
     上記データテーブルは、kdT個以下のデータレコードを記憶しており、t段目にkdt-1個のデータレコードを記憶するためのd-1個のハッシュテーブルを含む階層構造をもち、
     上記キー関係テーブルは、kdT個以下のキー関係レコードを記憶しており、t段目にkdt-1個のキー関係レコードを記憶するためのd-1個のハッシュテーブルを含む階層構造をもつ、
     データアクセス方法。
  4.  請求項3に記載のデータアクセス方法であって、
     上記データ記憶システムは、複数台の上記サーバ装置を含み、
     各サーバ装置のデータ記憶部は、上記データテーブルのうち所定の階層のハッシュテーブルであって、他のサーバ装置が記憶していない階層のハッシュテーブルを記憶しており、
     各サーバ装置のキー関係記憶部は、上記i番目のキー関係テーブルのうち所定の階層のハッシュテーブルであって、他のサーバ装置が記憶していない階層のハッシュテーブルを記憶している、
     データアクセス方法。
  5.  サーバ装置とクライアント装置とを含むデータ記憶システムであって、
     k, mは2以上の整数であり、iは2以上m以下の各整数とし、
     上記サーバ装置は、
     データと上記データに紐づく第一キーとからなるデータ要素をk個記憶するためのデータ配列と、上記第一キーに基づいてランダムに生成されたデータ索引と上記第一キーと上記データとからなるデータレコードをk個以上記憶するための少なくとも1個のハッシュテーブルを含むデータテーブルと、を記憶するデータ記憶部と、
     上記第一キーと上記データに紐づく他のキーとからなるキー関係要素をk個記憶するためのキー関係配列と、上記他のキーに基づいてランダムに生成されたキー関係索引と上記第一キーと上記他のキーとからなるキー関係レコードをk個以上記憶するための少なくとも1個のハッシュテーブルを含むキー関係テーブルと、をそれぞれm-1個記憶するキー関係記憶部と、
     i番目のキー関係配列を上記クライアント装置へ送信するキー関係配列送信部と、
     上記クライアント装置から受信したキー関係索引を用いて上記キー関係テーブルから読み出したキー関係レコードを上記クライアント装置へ送信するキー関係テーブル検索部と、
     上記データ配列を上記クライアント装置へ送信するデータ配列送信部と、
     上記クライアント装置から受信したデータ索引を用いて上記データテーブルから読み出したデータレコードを上記クライアント装置へ送信するデータテーブル検索部と、
     を含み、
     上記クライアント装置は、
     m個の検索キーを生成する検索キー生成部と、
     上記サーバ装置から受信したi番目のキー関係配列の中にi番目の検索キーに合致するキー関係要素が存在する場合、当該キー関係要素の第一キーを発見された検索キーとして保持するキー関係配列検索部と、
     i番目の検索キーに基づいて生成したキー関係索引を上記サーバ装置へ送信するキー関係索引生成部と、
     上記サーバ装置から受信したキー関係レコードがi番目の検索キーに合致する場合、当該キー関係レコードの第一キーを上記発見された検索キーとして保持するキー関係レコード参照部と、
     上記発見された検索キーとi番目の検索キーとからなるキー関係要素をi番目のキー関係配列の空の要素に設定したキー関係配列を上記サーバ装置へ送信するキー関係配列返送部と、
     上記サーバ装置から受信したデータ配列の中に上記発見された検索キーまたは上記1番目の検索キーに合致するデータ要素が存在する場合、当該データ要素のデータを発見されたデータとして保持するデータ配列検索部と、
     上記発見された検索キーを保持している場合、上記発見された検索キーに基づいてデータ索引を生成し、上記発見された検索キーを保持していない場合、1番目の検索キーに基づいてデータ索引を生成し、生成されたデータ索引を上記サーバ装置へ送信するデータ索引生成部と、
     上記サーバ装置から受信したデータレコードが上記発見された検索キーまたは1番目の検索キーに合致する場合、当該データレコードのデータを上記発見されたデータとして保持するデータレコード参照部と、
     上記発見されたデータおよび上記発見された検索キーを保持している場合、所望のデータと上記発見された検索キーとからなるデータ要素を上記データ配列の空の要素に設定し、それ以外の場合、所望のデータと上記1番目の検索キーとからなるデータ要素を上記データ配列の空の要素に設定し、更新されたデータ配列を上記サーバ装置へ送信するデータ配列返送部と、
     を含むデータ記憶システム。
  6.  k, mは2以上の整数であり、iは2以上m以下の各整数とし、
     データと上記データに紐づく第一キーとからなるデータ要素をk個記憶するためのデータ配列と、上記第一キーに基づいてランダムに生成されたデータ索引と上記第一キーと上記データとからなるデータレコードをk個以上記憶するための少なくとも1個のハッシュテーブルを含むデータテーブルと、を記憶するデータ記憶部と、
     上記第一キーと上記データに紐づく他のキーとからなるキー関係要素をk個記憶するためのキー関係配列と、上記他のキーに基づいてランダムに生成されたキー関係索引と上記第一キーと上記他のキーとからなるキー関係レコードをk個以上記憶するための少なくとも1個のハッシュテーブルを含むキー関係テーブルと、をそれぞれm-1個記憶するキー関係記憶部と、
     i番目のキー関係配列をクライアント装置へ送信するキー関係配列送信部と、
     上記クライアント装置から受信したキー関係索引を用いて上記キー関係テーブルから読み出したキー関係レコードを上記クライアント装置へ送信するキー関係テーブル検索部と、
     上記データ配列を上記クライアント装置へ送信するデータ配列送信部と、
     上記クライアント装置から受信したデータ索引を用いて上記データテーブルから読み出したデータレコードを上記クライアント装置へ送信するデータテーブル検索部と、
     を含むサーバ装置。
  7.  k, mは2以上の整数であり、iは2以上m以下の各整数とし、
     m個の検索キーを生成する検索キー生成部と、
     サーバ装置から受信したi番目のキー関係配列の中にi番目の検索キーに合致するキー関係要素が存在する場合、当該キー関係要素の第一キーを発見された検索キーとして保持するキー関係配列検索部と、
     i番目の検索キーに基づいて生成したキー関係索引を上記サーバ装置へ送信するキー関係索引生成部と、
     上記サーバ装置から受信したキー関係レコードがi番目の検索キーに合致する場合、当該キー関係レコードの第一キーを上記発見された検索キーとして保持するキー関係レコード参照部と、
     上記発見された検索キーとi番目の検索キーとからなるキー関係要素をi番目のキー関係配列の空の要素に設定したキー関係配列を上記サーバ装置へ送信するキー関係配列返送部と、
     上記サーバ装置から受信したデータ配列の中に上記発見された検索キーに合致するデータ要素が存在する場合、当該データ要素のデータを発見されたデータとして保持するデータ配列検索部と、
     1番目の検索キーに基づいて生成したデータ索引を上記サーバ装置へ送信するデータ索引生成部と、
     上記サーバ装置から受信したデータレコードが上記発見された検索キーまたは1番目の検索キーに合致する場合、当該データレコードのデータを上記発見されたデータとして保持するデータレコード参照部と、
     上記発見されたデータおよび上記発見された検索キーを保持している場合、所望のデータと上記発見された検索キーとからなるデータ要素を上記データ配列の空の要素に設定し、それ以外の場合、所望のデータと上記1番目の検索キーとからなるデータ要素を上記データ配列の空の要素に設定し、更新されたデータ配列を上記サーバ装置へ送信するデータ配列返送部と、
     を含むクライアント装置。
  8.  請求項6に記載のサーバ装置または請求項7に記載のクライアント装置としてコンピュータを機能させるためのプログラム。
PCT/JP2019/039563 2019-10-08 2019-10-08 データアクセス方法、データ記憶システム、サーバ装置、クライアント装置、およびプログラム WO2021070234A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021550965A JP7218817B2 (ja) 2019-10-08 2019-10-08 データアクセス方法、データ記憶システム、サーバ装置、クライアント装置、およびプログラム
US17/642,703 US20220329419A1 (en) 2019-10-08 2019-10-08 Data access method, data storage system, server apparatus, client apparatus, and program
PCT/JP2019/039563 WO2021070234A1 (ja) 2019-10-08 2019-10-08 データアクセス方法、データ記憶システム、サーバ装置、クライアント装置、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/039563 WO2021070234A1 (ja) 2019-10-08 2019-10-08 データアクセス方法、データ記憶システム、サーバ装置、クライアント装置、およびプログラム

Publications (1)

Publication Number Publication Date
WO2021070234A1 true WO2021070234A1 (ja) 2021-04-15

Family

ID=75437329

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/039563 WO2021070234A1 (ja) 2019-10-08 2019-10-08 データアクセス方法、データ記憶システム、サーバ装置、クライアント装置、およびプログラム

Country Status (3)

Country Link
US (1) US20220329419A1 (ja)
JP (1) JP7218817B2 (ja)
WO (1) WO2021070234A1 (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100046755A1 (en) * 2005-12-07 2010-02-25 Fiske Software Llc Cryptography related to keys with signature
US8386529B2 (en) * 2010-02-21 2013-02-26 Microsoft Corporation Foreign-key detection
AU2011331955A1 (en) * 2010-11-22 2013-05-30 Mineraltree, Inc. System and method for secure financial transactions
WO2014141802A1 (ja) * 2013-03-12 2014-09-18 ソニー株式会社 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム
JP6208586B2 (ja) * 2014-01-16 2017-10-04 株式会社日立製作所 検索可能暗号処理システムおよび検索可能暗号処理方法
CN107077469B (zh) * 2014-10-21 2020-11-27 三菱电机株式会社 服务器装置、检索系统、终端装置以及检索方法
US10067967B1 (en) * 2015-01-27 2018-09-04 Barefoot Networks, Inc. Hash table storing reduced search key
US10733171B2 (en) * 2018-04-03 2020-08-04 Sap Se Database lock management with cache-optimized hash table

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BOYLE ELETTE, GILBOA NIV, ISHAI YUVAL: "Function secret sharing", FUNCTION SECRET SHARING, 26 April 2015 (2015-04-26), pages 1 - 30, XP055816586, Retrieved from the Internet <URL:https://www.iacr.org/archive/eurocrypt2015/90560300/90560300.pdf> [retrieved on 20200131] *
EYAL KUSHILEVITZ; TAMER MOUR: "Sub-logarithmic distributed oblivious RAM with small block size", 17 November 2018 (2018-11-17), pages 1 - 42, XP081420514, Retrieved from the Internet <URL:https://arxiv.org/abs/1802.05145> [retrieved on 20200131] *
HAMADA, KOKI ET AL.: "Sublinearlocal complexity and constant round secret computing array access algorithm", ABSTRACTS OF 2019 SYMPOSIUM ON CRYPTOGRAPHY AND INFORMATION SECURITY, 15 January 2019 (2019-01-15), pages 1 - 6 *

Also Published As

Publication number Publication date
JPWO2021070234A1 (ja) 2021-04-15
JP7218817B2 (ja) 2023-02-07
US20220329419A1 (en) 2022-10-13

Similar Documents

Publication Publication Date Title
Goodrich et al. Oblivious RAM simulation with efficient worst-case access overhead
US8930691B2 (en) Dynamic symmetric searchable encryption
Liu et al. DivORAM: Towards a practical oblivious RAM with variable block size
US7574579B2 (en) Metadata management system for an information dispersed storage system
Chang et al. Oblivious RAM: A dissection and experimental evaluation
US7818518B2 (en) System for rebuilding dispersed data
JP4810611B2 (ja) 暗号化されたデータの検索
CN101587479B (zh) 面向数据库管理系统内核的数据加解密系统及其方法
US20150095642A1 (en) Client computer for querying a database stored on a server via a network
US10742628B2 (en) Secured cloud storage broker with enhanced security
JP6449093B2 (ja) 秘匿化データベースシステム及び秘匿化データ管理方法
Li et al. Towards privacy-preserving storage and retrieval in multiple clouds
US11256662B2 (en) Distributed ledger system
US9141824B2 (en) Dynamic database update in multi-server private information retrieval scheme
EP2511848A2 (en) Multiple independent encryption domains
Huang et al. Outsourced private information retrieval
US8364979B1 (en) Apparatus, system, and method to efficiently search and modify information stored on remote servers, while hiding access patterns
WO2021070234A1 (ja) データアクセス方法、データ記憶システム、サーバ装置、クライアント装置、およびプログラム
JP5948238B2 (ja) データ管理方法およびデータ管理装置
JP6467091B1 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
Wang et al. Secure dynamic SSE via access indistinguishable storage
di Vimercati et al. Access Privacy in the Cloud.
CN116383876A (zh) 一种基于不经意随机访问的隐私安全计算方法
CN116094798A (zh) 支持动态用户更新的去中心化加密云存储安全去重方法
Haunts et al. Azure Key Vault Usage Patterns

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19948331

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021550965

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19948331

Country of ref document: EP

Kind code of ref document: A1