WO2014141802A1 - 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム - Google Patents

情報処理装置、情報処理システム、および情報処理方法、並びにプログラム Download PDF

Info

Publication number
WO2014141802A1
WO2014141802A1 PCT/JP2014/053261 JP2014053261W WO2014141802A1 WO 2014141802 A1 WO2014141802 A1 WO 2014141802A1 JP 2014053261 W JP2014053261 W JP 2014053261W WO 2014141802 A1 WO2014141802 A1 WO 2014141802A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
information
keyword
document
nodes
Prior art date
Application number
PCT/JP2014/053261
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 ソニー株式会社
Publication of WO2014141802A1 publication Critical patent/WO2014141802A1/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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure

Definitions

  • the present disclosure relates to an information processing apparatus, an information processing system, an information processing method, and a program. More specifically, the present invention relates to an information processing apparatus, an information processing system, an information processing method, and a program that perform data storage and search processing using a database.
  • a server or database that can be used from a user terminal via a network is called a cloud server, a cloud database, or a cloud system.
  • a user can store document data and image data in a large-capacity database on a network without storing them in a small storage means such as a personal PC or a portable terminal. It becomes possible.
  • a cloud-type database is under the control of a third party and has a configuration that can be used by various users. Therefore, there is a risk of data leaking due to unauthorized access by the database administrator or unauthorized access by other users.
  • One means for preventing data leakage is to encrypt data and store it in a database. That is, as shown in FIG. 1, the information processing apparatus 10 such as the user A's PC encrypts and stores the data in the cloud database 20 connected via the network 15.
  • the database 20 is a cloud database managed by a third party and accessible by various users.
  • the database 20 is provided with data storage areas for various users, and each user can use only a database area (user area) assigned to the user.
  • the information processing apparatus 10 of the user A can use a part of the database 20 as a dedicated area of the information processing apparatus 10 of the user A, that is, the dedicated area 21 for the user A.
  • the other user area 22 is set so that it cannot be accessed from the information processing apparatus 10 of the user A.
  • Such access restriction is realized by using a password, for example. That is, when using the database 20, the information processing apparatus 10 of the user A transmits a preset password to the database side 20.
  • the data processing unit on the database 20 side confirms the match between the input password and the pre-registered password, and permits the data access to the user A dedicated area 21 only to the information processing apparatus 10 of the user A only when they match.
  • the possibility of data leakage when unauthorized access occurs can be reduced.
  • the user A searches the data stored in the database 20, for example, a keyword search is executed.
  • the search keyword input by the user A is transmitted from the information processing apparatus 10 of the user A to the database 20.
  • An unauthorized database administrator or an eavesdropper of network transfer data analyzes the keyword used for data search to estimate the stored data of user A, and analyzes user A's preference and interest based on the search keyword. There is a possibility that the privacy of the user A is infringed.
  • FIG. 2 shows a configuration example for preventing leakage of search keywords.
  • the user A30 has an information processing device 31 dedicated to the user A and an index database 32 dedicated to the user A.
  • the index database 32 is a database that stores correspondence data between a keyword (KW) and a file ID that is identification data of a data file including the keyword.
  • User A inputs a document search keyword (KW) to the information processing apparatus 31.
  • the index database 32 outputs a document file ID (File ID) associated with the input keyword to the information processing apparatus 31.
  • User A transmits the acquired file ID to the cloud database 40. This is the file ID 51 shown in the figure.
  • the database 40 performs a database search based on the received file ID 51, acquires the file 52 in which the file ID 51 is set, and transmits the file 52 to the information processing apparatus 31 of the user A30.
  • the file 52 to be transmitted is encrypted data, and is decrypted and viewed on the information processing apparatus 31 side of the user A30.
  • the keyword (KW) input by the user is not transmitted on the network or the database side. Therefore, it is possible to reduce the possibility that the leakage of the keyword, the analysis of the stored data of the user A based on the analysis of the keyword, the interest preference of the user A, and the like are illegally analyzed.
  • a user who does not hold the index database 32 as shown in FIG. 2 sends a query (Query) that is a search expression including a keyword (KW) from the information processing apparatus 31 to the database 40.
  • Query a query that is a search expression including a keyword (KW) from the information processing apparatus 31 to the database 40.
  • KW keyword
  • the database 40 acquires a document file including a keyword included in the query 61 received from the information processing apparatus 31 of the user A and transmits the document file to the information processing apparatus 31 on the user side. If such processing is performed, there is a possibility that an unauthorized database administrator or the like may perform estimation of a search document based on an input keyword, analysis of a user's interest preference, or the like as described above.
  • Patent Literature 1 Patent No. 4772220
  • Patent Literature 2 Patent No. 4347264
  • Patent Literature 3 Japanese Patent Laid-Open No. 2011-198079 disclose conventional data retrieval systems for encrypted data.
  • Patent Document 4 Japanese Patent Laid-Open No. 2010-164835
  • Data stored in the database is encrypted data.
  • a keyword contained in plain text data before encryption is used for searching the data stored in the database.
  • C Data including the keyword is extracted from the encrypted data in the database without transmitting the keyword over the network.
  • the user A30 stores the documents A, B, C... In the cloud database 40 using the information processing apparatus 31.
  • the stored documents A, B, and C are encrypted data.
  • a Bloom filter is set as an index corresponding to each document.
  • An index composed of the Bloom filter is stored in the database 40 in association with each document.
  • the user A When the user A stores the documents A, B, C...
  • the user A In the database 40, the user A is associated with each of the documents A, B, and C so that the stored documents can be searched based on the keywords. Update the Bloom filter.
  • the Bloom filter is a bit string having an initial value set to all zeros.
  • an example of a Bloom filter consisting of a bit string of a total of 9 bits at addresses 00 to 08 is shown.
  • An example of a filter update process corresponding to document A will be described. Assume that the document A is a document including the keywords KW1 and KW2.
  • (a) filter update (index generation) of user A in FIG. 4 uses information processing device 31 and uses a plurality of address generation functions H1, H2,.
  • This address is an address indicating each bit position of a bit string constituting a Bloom filter that is an index corresponding to a database stored document.
  • the value of the bit position corresponding to the calculated address (01, 03, 04, 08) is changed from 0 to 1.
  • the result after the update is a bit string of the Bloom filter corresponding to the document A in the database 40 shown in FIG.
  • the Bloom filter for document A is Initial value: 000000000000 After update: 010110001 It is changed to such bit string data.
  • the Bloom filter having this bit string is stored in the database as the corresponding index of document A.
  • An address is calculated by substituting the keyword included in each document into an address generation function, and the Bloom filter bit at the calculated address position is changed from 0 to 1. Then, the index corresponding to each document is stored in the database 40 in association with each document.
  • words included in the document before encryption can be used.
  • the address generation functions H1, H2,... For example, a hash function such as a pseudo-random function (PRF: Pseudo-random function) using preset keys K1, K2,. That is, the address generation function Hn is a pseudorandom function to which the key Kn is applied.
  • PRF pseudo-random function
  • H1 and H2 are used, but more functions may be used.
  • the number of bits of the Bloom filter is also shown in the figure as an example of a 9-bit configuration, but an arbitrary number of bits can be set.
  • a Bloom filter having a bit string corresponding to each document is generated as an index corresponding to each document and stored in the database 40.
  • the user A can perform data search based on the keywords without outputting the keywords KW1, KW2,... To the database 40 via the network.
  • the user A As shown in (b) data search of the user A30 in FIG. 4, the user A generates an address in the information processing apparatus 31, for example, by substituting the search keyword (KW2) into the address generation functions H1 and H2.
  • the information processing apparatus 31 transmits this generated address (01, 03) to the database 40.
  • the database 40 searches for an index in which the designated position of the reception address (01, 03) is set to [1], that is, a Bloom filter. For example, the Bloom filter of document A is extracted.
  • the document associated with the extraction filter is provided to the information processing apparatus 31 of the user A as a search result based on the keywords KW1 and KW2.
  • the keywords: KW1, KW2,... are not supplied to the database 40 via the network, and the data search based on the keywords is possible.
  • a document number (j) which is a document identifier, is set for each document stored in the database, and the address generation function is changed according to the document number (j).
  • a configuration in which an address generation function is applied has also been proposed.
  • a user A30 shown in FIG. 5 uses the information processing apparatus 31 to store the documents A, B, C. These stored documents are encrypted data.
  • a bit string composed of a bit value generated from a document name and a bit position is set as an initial value as a corresponding index of each document.
  • the initial value of the bit string associated with the document A is 0101001, It consists of the above bit string. This initial value is set based on the document name of the document A stored in the database, and in many cases, it becomes a different bit string depending on each document name. Further, the information processing apparatus 31 of the user A calculates an address indicating the bit position of the bit string by using an address generation / replacement PRP (Pseudo-random permutation) using a keyword included in the document A, for example, the keyword: KW1. .
  • This address generation / replacement can be configured, for example, by outputting a ciphertext obtained by encrypting an input as a plaintext using a block cipher algorithm and a key.
  • PRP (KW1) 05
  • the address (05) is calculated based on the keyword KW1 included in the document A.
  • the initial data of the bit string which is an index associated with the document A stored in the database is updated.
  • the bit value at the bit position specified by the calculated address (05) is changed.
  • bit string corresponding to each document is updated by changing the bit value at the position designated by the address calculated from the keyword included in each document.
  • This updated bit string is stored in the database as an index corresponding to each document in association with the document.
  • the data search processing based on the keyword (KW1) by the user A30 sequentially executes the following processing.
  • Step 1 In the information processing apparatus 31, an address is calculated according to PRP (KW1), and the calculated address is transmitted to the database 40.
  • Step 2 On the database 40 side, initial data of a bit string corresponding to each document is calculated. This initial data is calculated based on the document name and bit position of each stored document.
  • Step 3 On the database 40 side, the bit value of the address position received from the information processing device 31 is compared between the calculated initial data of each document and the update data stored in the database.
  • Step 4 If the bit values at the designated address positions of the initial data and the update data are equal, the document does not include the keyword (KW1), and if the bit values are different, it is determined that the document includes the keyword (KW1). To do.
  • a document including the keyword (KW1) is extracted. Even in this processing configuration, since it is not necessary to transmit the search keyword to the database via the network, it is possible to prevent leakage of the search keyword.
  • the method using the Bloom filter described with reference to FIG. 4 the method using the bit string based on the document name described with reference to FIG. 5, and the data search based on the keyword is performed in any of these methods.
  • this is an index set corresponding to each of the database stored documents at the time of keyword search for checking whether or not the stored document includes a search keyword.
  • the Bloom filter or the method of examining all bit strings there is a problem that the load of search processing increases in proportion to the increase in stored documents.
  • a search method for reducing such an increase in processing load a method using a document link structure corresponding to a keyword has been proposed. Hereinafter, this method will be described with reference to FIG.
  • FIG. 6 shows the correspondence between documents (documents 1, 2, 3,... N) stored in the database and keywords (KW 1, 2, 3,... M) included in each document.
  • Matrix data (document-KW matrix) is shown.
  • Each document contains a checked KW in the matrix.
  • document 1 is a document including KW2 and KW3
  • document 2 is a document including KW1 and KW4.
  • the above-described Bloom filter or bit string corresponds to an index indicating which keyword is included for each document shown in FIG.
  • this is a method in which the document correspondence index 71 shown in FIG.
  • the above-described method using the Bloom filter or the bit string corresponds to the document correspondence index method shown in FIG.
  • the search process for determining whether or not each document includes a specific KW there is a process of checking all document-corresponding indexes indicating the keyword (KW) included in each document from document 1 to document n. Necessary.
  • the method described below is a keyword-corresponding document link method shown in FIG. 6B, and is a method that can efficiently extract a document including a specific keyword.
  • a link structure connecting document information of documents including a specific keyword (KW) is set, and the specific keyword (KW) is sequentially traced. ) Can be efficiently detected.
  • a document link corresponding to one keyword (KW3) shown in FIG. 6 is set as a link of a document including KW3.
  • documents including the keyword (KW3) are document 1, document 4, and document n.
  • the document link corresponding to KW3 is set as a link structure in which the document information of each of document 1, document 4, and document n is connected.
  • FIG. 7A shows an example of a document link structure set corresponding to the keyword (KW3).
  • the documents including the keyword (KW3) are document 1, document 4, and document n.
  • the document link corresponding to KW3 is The head node is set as KW3, and the following is set as a link structure in which document 1, document 4, document n, dummy, and dummy nodes are connected.
  • the data of each node (1) Document ID as a document identifier, (2) Next node key, (3) Address of next node It is configured as encrypted data of these data.
  • nodes also have the same data structure. Note that the node of KW3, which is the first node, does not include the document ID, and has a data configuration including the key of the next node and the address of the next node.
  • the database stores this document link structure for each keyword.
  • a document link having the specified keyword as a root node first node
  • the document is sequentially written according to the selected document link.
  • Extract the ID A document corresponding to the extracted document ID can be extracted as a document including a specified keyword.
  • the processing load is reduced. For example, if the number of documents having one specific keyword increases, the node of the document link The number also increases in proportion to the number of sentences, and there is a problem that the processing load increases proportionally as the number of documents increases.
  • the present disclosure has been made in view of, for example, the above-described problem, and can perform data search including data including a search key efficiently without disclosing a search key such as a keyword during data search processing.
  • An information processing system, an information processing method, and a program are provided.
  • the first aspect of the present disclosure is: A data processing unit that generates a keyword unit index having a tree-type link structure of keyword units for document search;
  • the data processing unit A keyword having a link structure of node information in which node information is associated with each node constituting a tree structure in which a plurality of lower nodes are branched and connected to each node from a root node which is the highest node to a leaf node which is the lowest node.
  • Generate unit index As node information to the leaf node, (1a) a document identifier for each document; (1b) state information indicating whether or not the document corresponding to the document identifier includes a specific keyword; Store As node information to higher nodes other than leaf nodes, (2a) Document identifiers of all leaf nodes included in the lower nodes; (2b) The documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or do not include all, or include and do not include, or these three states can be determined. State information, Is in an information processing apparatus that generates a keyword unit index that stores.
  • the data processing unit encrypts the node information with a node key corresponding to the node, and the node key is included in the node information of the upper node directly connected in the tree structure.
  • the data processing unit stores the address information for accessing the node information in the node information of the upper node directly connected in the tree structure.
  • the data processing unit stores an encrypted document corresponding to a document identifier set in node information of a leaf node of the keyword unit index in a database of a server.
  • the server is requested to execute processing using the keyword unit index.
  • the data processing unit performs an access address of node information of a root node of the keyword unit index and a decryption unit in a document search process to which the keyword unit index is applied.
  • a key is transmitted to the server.
  • the data processing unit associates an access address of the node information of the root node of the keyword unit index corresponding to each keyword and a decryption key with each keyword.
  • the keyword correspondence management data is generated and stored in the storage unit.
  • the data processing unit when deleting a document corresponding to a document identifier recorded as node information of a leaf node of the keyword unit index from the database, The state information of the leaf node node information is changed to an invalid value.
  • the data processing unit generates a keyword unit index in which a dummy node having no corresponding document is set as a leaf node, and the dummy node is associated with a newly stored document in the database.
  • a keyword unit index that can be used as a node to generate is generated.
  • the data processing unit performs a process of increasing the tree structure hierarchy of the existing keyword unit index according to an increase in newly stored documents in the database.
  • the second aspect of the present disclosure is: A communication unit for transmitting and receiving data to and from the client; A storage unit storing an encrypted document, and a keyword unit index having a tree-structured link structure of a keyword unit applied to search of the encrypted document; A data processing unit that performs data search processing in response to a data search request from a client; The communication unit is Receiving an access address and a decryption key of node information of a root node which is the highest node of the keyword unit index from the client; The data processing unit According to the access address, obtain node information of the root node of the keyword unit index of the specific keyword, decrypt with the decryption key, (A) Document identifiers of all leaf nodes included in the lower nodes; (B) Whether the documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or not all, or includes and does not include, or these three states can be determined.
  • State information an access address and decryption key of node information of a lower node, Obtain each information of (a), (b), (c) above, According to the search request form from the client and the setting of the state information, the information processing apparatus executes acquisition of node information of a lower node or generation of a search result.
  • the data processing unit determines whether or not the search request from the client includes a specific specified document (Docx) including a specific keyword (KWy).
  • Docx a specific specified document
  • the designated document (Docx) is set according to the setting.
  • the state information is a setting indicating that leaf nodes included in the lower nodes include those that include the keyword and those that do not include the keyword.
  • the node information of the lower nodes is sequentially analyzed, and all the leaf nodes included in the lower nodes are keyed. Or include word, or when the state information has been obtained with a setting of not including all, to generate a determination result in accordance with the state information.
  • the data processing unit includes state information included in node information of a processing target node, and leaf nodes included in lower nodes include and do not include keywords. If the setting indicates that the nodes are mixed, one subordinate node including a leaf node associated with the designated document (Docx) is selected from a plurality of subordinate nodes directly connected to the processing target node. Analyzes the node information of the node, and when the state information with the setting that all the leaf nodes included in the lower nodes include or do not include the keyword is obtained, the determination result according to the state information is generated To do.
  • the data processing unit determines whether or not the search request from the client includes each of the documents stored in the storage unit including a specific keyword (KWy). In the case of a search request for a result, if the state information acquired from the node information is a setting in which all the leaf nodes included in the lower nodes include or do not include all keywords, the storage is performed according to the setting.
  • a determination result as to whether each of the documents stored in the section includes a specific keyword (KWy) is generated, and the state information includes a case where a leaf node included in a lower node includes and does not include a keyword If it is set to indicate that the node is to be used, the node information of the lower nodes is sequentially analyzed, and all leaf nodes included in the lower nodes are Or containing de, or when the state information has been obtained with a setting of not including all, to generate a determination result in accordance with the state information.
  • the data processing unit includes state information included in node information of a processing target node, and leaf nodes included in lower nodes include and do not include keywords. If the setting indicates that the nodes are mixed, a plurality of lower nodes directly connected to the processing target node are sequentially selected to analyze the node information, and all the leaf nodes included in the lower nodes include keywords or all The determination result according to the obtained state information is generated without performing the node information acquisition process of the lower nodes below the node having the node information in which the state information having the setting of “not present” is set.
  • the third aspect of the present disclosure is: An information processing system having a client that performs a data search request and a server that executes data continuous operation in response to a request from the client,
  • the server A storage unit storing an encrypted document, and a keyword unit index having a tree-structured link structure of a keyword unit applied to search of the encrypted document;
  • a data processing unit that performs data search processing in response to a data search request from a client;
  • the client transmits an access address of node information of a root node that is the highest node of the keyword unit index and a decryption key to the server,
  • the data processing unit of the server According to the access address, obtain node information of the root node of the keyword unit index of the specific keyword, decrypt with the decryption key, (A) Document identifiers of all leaf nodes included in the lower nodes; (B) Whether the documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or not all, or includes
  • State information (C) an access address and decryption key of node information of a lower node, Obtain each information of (a), (b), (c) above,
  • the information processing system executes acquisition of node information of a lower node or generation of a search result in accordance with a search request form from the client and the setting of the state information.
  • the client generates an encrypted document and a keyword unit index that is a search index for the encrypted document, and transmits the generated keyword to the server.
  • the encrypted document received from the client and the keyword unit index are stored in the storage unit.
  • the fourth aspect of the present disclosure is: An information processing method executed in an information processing apparatus,
  • the information processing apparatus includes a data processing unit that generates a keyword unit index having a tree-structured link structure of keyword units for document search,
  • the data processing unit is A keyword having a link structure of node information in which node information is associated with each node constituting a tree structure in which a plurality of lower nodes are branched and connected to each node from a root node which is the highest node to a leaf node which is the lowest node.
  • Generate unit index As node information to the leaf node, (1a) a document identifier for each document; (1b) state information indicating whether or not the document corresponding to the document identifier includes a specific keyword; Store As node information to higher nodes other than leaf nodes, (2a) Document identifiers of all leaf nodes included in the lower nodes; (2b) The documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or do not include all, or include and do not include, or these three states can be determined. State information, There is an information processing method for generating a keyword unit index storing.
  • the fifth aspect of the present disclosure is: An information processing method executed in an information processing apparatus,
  • the information processing apparatus includes a communication unit that performs data transmission / reception with a client, an encrypted document, and a storage unit that stores a keyword unit index having a tree unit type link structure of a keyword unit applied to search of the encrypted document,
  • a data processing unit for performing a data search process in response to a data search request from a client
  • the communication unit is Receiving an access address and a decryption key of node information of a root node which is the highest node of the keyword unit index from the client;
  • the data processing unit is According to the access address, obtain node information of the root node of the keyword unit index of the specific keyword, decrypt with the decryption key, (A) Document identifiers of all leaf nodes included in the lower nodes; (B) Whether the documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or not all, or includes and does not include,
  • State information an access address and decryption key of node information of a lower node, Obtain each information of (a), (b), (c) above, In the information processing method of acquiring the node information of the lower node or generating the search result according to the search request form from the client and the setting of the state information.
  • the sixth aspect of the present disclosure is: A program for executing information processing in an information processing apparatus;
  • the information processing apparatus includes a data processing unit that generates a keyword unit index having a tree-structured link structure of keyword units for document search,
  • the program is stored in the data processing unit.
  • the seventh aspect of the present disclosure is: A program for executing information processing in an information processing apparatus;
  • the information processing apparatus includes a communication unit that performs data transmission / reception with a client, an encrypted document, and a storage unit that stores a keyword unit index having a tree unit type link structure of a keyword unit applied to search of the encrypted document,
  • a data processing unit for performing a data search process in response to a data search request from a client The communication unit is Receiving an access address and a decryption key of node information of a root node which is the highest node of the keyword unit index from the client;
  • the program is stored in the data processing unit.
  • a process of obtaining node information of a root node of a keyword unit index of a specific keyword, and a decryption process with the decryption key are executed, (A) Document identifiers of all leaf nodes included in the lower nodes; (B) Whether the documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or not all, or includes and does not include, or these three states can be determined.
  • State information (C) an access address and decryption key of node information of a lower node, Each information of (a), (b), (c) is acquired, According to the search request form from the client and the setting of the state information, there is a program for executing acquisition of node information of a lower node or generation of a search result.
  • the program of the present disclosure is a program provided by, for example, a storage medium to an information processing apparatus or a computer system that can execute various program codes. By executing such a program by the program execution unit on the information processing apparatus or the computer system, processing according to the program is realized.
  • system is a logical set configuration of a plurality of devices, and is not limited to one in which the devices of each configuration are in the same casing.
  • the server stores the encrypted document and the keyword unit index of the tree-type link structure applied to the search.
  • the client transmits the address of the root node, which is the highest node of the keyword unit index, and the decryption key to the server.
  • the server obtains the node information of the root node of the keyword unit index according to the address, decrypts it with the decryption key, and (a) the document identifiers of all the leaf nodes included in the lower node, and (b) included in the lower node.
  • FIG. 9 shows an information processing apparatus (client) 100, which is a user terminal connected via a network 150, and a server 200 including a database as a large-capacity storage unit.
  • the server 200 is a cloud server and can be accessed from various user terminals.
  • the information processing apparatus of each user borrows a part of the data storage area from the database of the server 200 as an occupied area and stores various data. Furthermore, data search can be performed as necessary to obtain search result data, for example, a result of extracting a document including a specific keyword.
  • one information processing apparatus (client) 100 is shown as a user terminal, but this shows a typical example of a user terminal, and the server 200 includes many other information not shown.
  • User terminals can be accessed.
  • Clients that are user terminals include various communication terminals such as PCs and mobile terminals.
  • the database of the server 200 stores a large number of encrypted documents (Doc1, Doc2, Doc3...) Transmitted from the information processing apparatus (client) 100. Further, keyword unit indexes (KW1-index, KW2-index%) For application to retrieval of these encrypted documents are stored.
  • the encrypted documents (Doc1, Doc2, Doc3%) are encrypted in the information processing apparatus (client) 100 on the user side, transmitted to the server 200 via the network 150, and stored in the database.
  • the keyword unit index is also generated on the information processing apparatus (client) 100 side of the user, transmitted to the server 200 via the network 150, and stored in the database.
  • the user information processing apparatus (client) 100 determines a keyword to be applied to the search. Next, information for executing a data search using a keyword unit index corresponding to the determined keyword is transmitted to the server 200.
  • the server 200 executes processing that applies a keyword unit index by applying a root node address and a root node key, which are information received from the information processing apparatus (client) 100 of the user, and generates a search result to perform information processing.
  • a root node address and a root node key which are information received from the information processing apparatus (client) 100 of the user.
  • the information for executing the data search using the keyword unit index transmitted from the client to the server includes, for example, a root node address and a root node key. Details of the data search process using the keyword unit index will be described later.
  • Keyword unit index is index information applied to the search of the encrypted documents (Doc1, Doc2, Doc3%) Stored in the database.
  • FIG. 10 is a diagram illustrating a configuration example of keyword unit index information corresponding to a certain keyword (KWn).
  • the keyword unit index can be indicated by a tree structure (tree structure) as shown in FIG. 10, that is, a multi-part tree structure composed of a plurality of node hierarchies and connecting a plurality of lower nodes to one upper node.
  • tree structure a tree structure composed of a plurality of node hierarchies and connecting a plurality of lower nodes to one upper node.
  • FIG. 10 is a binary tree configuration in which two child nodes are set immediately below the parent node, but the configuration is not limited to a binary tree, and may be a three or more multi-tree configuration.
  • the highest node of the tree structure shown in FIG. 10 is called a vertex node (root node) 301 and the lowest node is called a leaf node (leaf node) 303.
  • a node between the vertex node (root node) 301 and the leaf node (leaf node) 303 is called an intermediate node 302.
  • Each of these nodes is associated with node-specific node information.
  • the data (1, 1) to (4, 8) shown in each node position in the figure is information added for explanation, and is node position information (x, y) indicating the node position.
  • x indicates a layer level position from the highest layer in the tree structure
  • y is a value indicating the number of the node from the left in the same layer level.
  • Each of the documents stored in the database of the server 200 is associated with each leaf node (leaf node) 303 that is a terminal (lowermost layer) node of the tree structure.
  • node information including information such as a document ID and state is set in all the nodes from the vertex node 301 to the leaf node 303.
  • the node information of the leaf node 303 stores a document ID as a document identifier indicating one document corresponding to the leaf node.
  • Each numerical value of [1] to [8] in the leaf node 303 shown in the figure indicates the document ID.
  • the document ID range information corresponding to the leaf node set as the lower node of each node is stored as the document ID.
  • the node information of each node stores state information in addition to the document ID.
  • the state information is one of the following three pieces of information. (1) ⁇ : All documents corresponding to the own node or the lower node include the keyword (KW). (2) X: All the documents corresponding to the own node or the lower node do not include the keyword (KW). (3) ⁇ : Documents corresponding to the own node or lower nodes include those that include the keyword (KW) and those that do not. In the state information, any one of the three types of ⁇ , ⁇ , and ⁇ is set.
  • the node information set for each node includes some information in addition to the document ID and state information described above.
  • a configuration example of the node information will be described with reference to FIG. Node information, which is information associated with each node, includes the following information as shown in FIG. (1) Document ID (2) State information (3) Key of left child node (4) Address of left child node (5) Key of right child node (6) Address of right child node
  • Each data of (6) is included, and these data are set as data encrypted with a key (node key) set corresponding to each node.
  • the key of the left child node is a key (node key) applied to the encryption of the node information of the left child node among the lower nodes directly connected to the own node. This node key is applied to decryption of the node information of the left child node.
  • the address of the left child node is an address indicating a storage position as access information of the node information of the left child node among the lower nodes directly connected to the own node. For example, it is constituted by offset information from the head of the data area in which keyword unit index data is recorded. By referring to this address, it is possible to acquire node information of the left child node among the lower nodes directly connected to the own node.
  • the key of the right child node is a key (node key) applied to the encryption of the node information of the right child node among the lower nodes directly connected to the own node. This node key is applied to decryption of the node information of the right child node.
  • the address of the right child node is an address indicating the storage position as the access information of the node information of the right child node among the lower nodes directly connected to the own node. By referring to this address, it is possible to acquire node information of the right child node among the lower nodes directly connected to the own node.
  • Each of these data (1) to (6) is set as encrypted data encrypted with a node key corresponding to the node.
  • no child node is set to a leaf node (leaf node) that is the lowest node in the tree structure.
  • dummy data such as all zeros is stored in the key and address data of the child node in the node information of these leaf nodes.
  • the keyword unit index is configured as a set of node information associated with each node of the tree structure.
  • FIG. 12 shows an example of the entire configuration of keyword index information corresponding to one keyword.
  • FIG. 12 is a four-level tree structure having eight leaf nodes shown in FIG. 10, that is, the entire data of the keyword unit index composed of node information of each of the nodes (1, 1) to (4, 8). It is a figure which shows an example.
  • Kn11 is the node key of the node at the node position (1, 1).
  • b shows the concatenated data of data a and data b.
  • Enc (a, b) indicates that the data is encrypted data with the key a for the data b. That is, the above-described formula indicating the node information indicates that the concatenated data composed of (document ID) to (the address of the right child node) is data encrypted with the node key Kn11.
  • the nodes at other node positions (2, 1) to (4, 8) also have node information encrypted by applying the node keys (Kn21 to Kn48) of the respective nodes to the same concatenated data. .
  • a set of node information of all nodes constituting these tree structures is generated as a keyword unit index corresponding to one keyword. As described above, this keyword unit index is generated in the information processing apparatus (client) 100 on the user side shown in FIG. 9, transmitted to the server 200, and stored in the database of the server 200 together with the encrypted document.
  • FIG. 13 is a diagram illustrating an example of a data storage processing sequence in which an encrypted document and a keyword unit index are transmitted and stored from the client 100, which is an information processing apparatus of the user, to the database of the server 200.
  • the client 100 is shown on the left and the server 200 is shown on the right. Details of each process will be described below in the order of steps shown in the figure.
  • Step S101 the client 100 determines a keyword to be set as a search key from words included in a document stored in the database of the server 200, and will be described with reference to a keyword unit index, that is, FIG. 10 to FIG. Generate a keyword unit index.
  • the keyword unit index is, for example, data configured by node information corresponding to each node of the tree structure shown in FIG. 10, and specifically, is configured as aggregate data of a plurality of node information as shown in FIG. .
  • a keyword unit index is generated for each set keyword. For example, when n keywords: KW1, KW2, KW3... KWn are determined as keywords, n keyword unit indexes corresponding to each keyword are generated.
  • the keyword unit index is configured as a set of encrypted data of a plurality of node information.
  • the node information address of the vertex node (root node) and the encryption key of the node information of the vertex node (root node) are required as initial information.
  • the client When generating a keyword unit index, the client generates initial information necessary for processing the generated keyword unit index in advance as keyword correspondence management data and stores it in a storage unit in the client.
  • Fig. 14 shows an example of keyword correspondence management data generated by the client.
  • the root node of the keyword unit index corresponding to each keyword is associated with the p keywords (KW1, KW2, KW3,... KWp) determined by the user.
  • the root node key applied to the encryption of the node information of the root node are recorded.
  • a keyword unit index corresponding to the keyword (KW1) determined by the user that is, a keyword unit index having the configuration described with reference to FIGS. 10 to 12
  • Information corresponding to the keyword (KW1) is generated as information corresponding to the keyword (KW1) as follows:
  • Data is recorded.
  • These data are recorded as management data corresponding to the keyword (KW1).
  • the keyword correspondence management data shown in FIG. 14 is stored in a memory in the information processing apparatus (client) 100 on the user side.
  • the information is transmitted from the information processing apparatus (client) 100 on the user side to the server 200. This process will be described in detail later.
  • Step S102 In step S101, when the generation of the keyword unit index described with reference to FIGS. 10 to 12 and the processing for generating the keyword correspondence management data shown in FIG. The process of S102 is executed.
  • step S102 the document stored in the database of the server 200 is encrypted to generate encrypted documents (Doc1, Doc2,).
  • the key applied to document encryption may be an arbitrary key generated by the client 100. However, since the encryption key will be applied to the decryption of the encrypted document acquired from the database of the server 200 by data retrieval at a later date, it is stored in the memory of the client 100 in association with the identifier (document ID) of each document. It is preferable to keep it.
  • Step S103 When the generation of the keyword unit index in step S101 and the generation of the encrypted document in step S102 are completed, the client 100 executes the process of step 103.
  • step S103 the client 100 transmits the encrypted document generated in step S102 and the keyword unit index generated in step S101 to the server 200.
  • step S104 the server 200 stores the encrypted document and keyword unit index received from the client 100 in the database.
  • the encrypted document and the keyword unit index are stored in the database of the server 200 through a series of processes in steps S101 to S104 shown in FIG. Note that the user can sequentially create a new encrypted document and additionally store it in the database of the server 200. In addition, the encrypted document stored in the database of the server 200 can be deleted at an arbitrary timing. Further, the keyword unit index can be appropriately updated in accordance with the process of adding or deleting a document. Details of this keyword unit index update processing will be described later.
  • the information processing apparatus 100 stores a program defining processing steps according to the flowchart of FIG. 15 in a memory.
  • the program is executed to execute processing according to the flowchart shown in FIG.
  • the flow shown in FIG. 15 is a flow showing a generation processing sequence of one keyword unit index corresponding to one keyword (KWx).
  • a plurality of keywords (KW1, KW2,...) are set
  • the keyword unit index corresponding to each keyword is executed for each keyword (KW1, KW2,%)
  • FIG. Will be generated.
  • the processing of each step shown in the flow will be described sequentially.
  • Step S201 First, in step S201, a leaf node (leaf node) corresponding to each document stored in the database is set as a new child node having a tree structure as shown in FIG. 10, for example, and the corresponding leaf node (leaf node) is set. Node information to be generated. Note that the node information has the data configuration described above with reference to FIG.
  • the node information corresponding to the leaf node (leaf node) is set as follows, for example.
  • As the document ID a document identifier of a document corresponding to each leaf node is set.
  • the state is set to ⁇ .
  • the leaf node (leaf node) correspondence document does not include the keyword (KWx)
  • the state is set to x. Since no child node is set in the leaf node, dummy data such as all 0 is stored in the child node address and key data area. If the node information of the leaf node corresponding to each database storage document is generated, the process proceeds to step S202.
  • Step S202 In step S202, the following processing is executed. From the child node for which node information is generated in step S201, a pair of child nodes is selected in units of two nodes in the order of document IDs corresponding to each node, and a parent node is set in units of child node pairs (pairs). The document ID and state information in the node information of the set parent node are set.
  • the document ID and state information in the node information of the parent node are set as follows.
  • the document ID is set in a range including all document IDs corresponding to leaf nodes (leaf nodes) below the parent node.
  • State information is set as follows.
  • step S203 an encryption key is generated for each of the left and right child nodes directly connected to the parent node generated in step S202. That is, a node key for each child node for encrypting the node information of the child node is generated.
  • This encryption key may be an arbitrary key generated by the client. Further, the node information of the child node is encrypted with the generated node key. Next, the generated node key is stored as node information of the parent node directly connected to the child node.
  • Step S204 the addresses indicating the node information recording positions of the left and right child nodes directly connected to the parent node generated in step S202 are stored as the node information of the parent node.
  • the address for example, offset information from the data head of the data area in which the keyword unit index is recorded can be applied. Steps S202 to S204 are performed for all child nodes in the same hierarchy.
  • Step S205 Next, in the keyword unit index generation process, it is determined whether or not the root node has been reached. Specifically, this is executed as a process of determining whether or not there is only one parent node generated in step S202, that is, whether or not it is the only parent node corresponding to the root node.
  • step S205 If it is determined that the parent node generated in step S202 is the only parent node and has reached the root node, the determination in step S205 is Yes and the process proceeds to step S207. On the other hand, if the parent node generated in step S202 is not the only parent node but a plurality of parent nodes, it is determined that the root node has not been reached, the determination in step S205 is No, and the process proceeds to step S206.
  • Step S206 If the determination in step S205 is No, that is, if the parent node generated in step S202 is not the only parent node but a plurality of parent nodes, it is determined that the root node has not been reached, and the process proceeds to step S206. .
  • step S206 the processing from step S202 onward is executed with the parent node generated in step S202 as the new child node and the new child node as the processing target.
  • step S205 the determination process of “reach the root node?” Is Yes, and the process proceeds to step S207.
  • Step S207 Finally, in step S207, an encryption key (root node key) for encrypting the node information of the root node is generated, and the node information of the root node is encrypted with the generated root node key.
  • root node key an encryption key for encrypting the node information of the root node
  • a keyword unit index having the tree structure described with reference to FIG. 10 is generated.
  • the keyword unit index is configured as a set of encrypted data of node information corresponding to the node shown in FIG.
  • step S101 in the sequence diagram of FIG. 13 a process according to the flowchart shown in FIG. 15 is executed to generate a keyword unit index.
  • one keyword unit index is generated for one keyword. Therefore, when the user on the client side sets a plurality of keywords, the process according to the flowchart shown in FIG. 15 is executed for each of the set keywords to generate a number of keyword unit indexes equal to the number of keywords.
  • FIG. 16 is a diagram showing a basic sequence between the client 100 and the server 200 when performing a data search process. The processing of each step will be described sequentially.
  • Step S301 the information processing apparatus (client) 100 on the user side determines a keyword to be applied to document search. Next, the root node address and root node key of the keyword unit index corresponding to the determined keyword are acquired. These root node address and root node key are acquired from the keyword correspondence management data described above with reference to FIG.
  • Step S302 the client 100 transmits the root node address and the root node key corresponding to the keyword applied to the search acquired in step S301 to the server.
  • search mode information indicating what kind of search is performed is also transmitted.
  • the search mode information is information indicating which search is performed, for example, among the following search modes.
  • Search Mode 1 Processing for designating a database storage document (Docx) and confirming whether or not this designated document (Docx) includes a specific keyword (KWy).
  • Search mode 2 Processing to extract all database stored documents including a specific keyword (KWy). For example, information on which of these search processes is performed is transmitted to the server.
  • search mode 1 the document identifier (document ID) of the designated document is also transmitted to the server.
  • Step S303 the server 200 acquires the node information of the root node of the keyword unit index according to the root node address received from the client 100.
  • the acquired node information of the root node is encrypted data, and this encrypted data is decrypted with the node key received from the client to acquire the node information of the root node.
  • the node information includes the information described above with reference to FIG. That is, (1) Document ID (2) State information (3) Left child node key (4) Left child node address (5) Right child node key (6) Right child node address These pieces of information are included.
  • Step S304 the server 200 executes a search process according to the designated search mode according to the search mode information received from the client.
  • the search process is executed as a node information acquisition process from the keyword unit index.
  • Step S305 the server 200 transmits the search result obtained by the search process in step S304 to the client 100.
  • the basic sequence of the data search process based on the keyword set on the client side is executed according to the sequence shown in FIG.
  • the data search process is performed by transmitting the root node address of the keyword unit index and the root node key without transmitting the keyword itself from the client, and processing the keyword unit index by the server 200 applying these data. .
  • the processing executed by the server 200 differs depending on the data search mode specified by the client.
  • search Processing Example 1 Processing for designating a database storage document (Docx) and confirming whether or not this designated document (Docx) includes a specific keyword (KWy).
  • Search Processing Example 2 Processing for extracting all database stored documents including a specific keyword (KWy).
  • the process shown in FIG. 17 is a process executed on the server side. It is assumed that the server has received the following data from the client.
  • A The address of the root node in the keyword unit index corresponding to the keyword (KWy)
  • B an encryption key (root node key) of node information corresponding to the root node in the keyword unit index corresponding to the keyword (KWy);
  • C Document identifier (document ID) of designated document (Docx)
  • the server receives the data (a) to (c) and executes processing according to the flow shown in FIG.
  • the server stores a program for executing processing according to the flow shown in FIG. 17 in a memory, and executes this program in a data processing unit having a CPU.
  • a program for executing processing according to the flow shown in FIG. 17 in a memory, and executes this program in a data processing unit having a CPU.
  • Step S401 First, in step S401, the server acquires the encrypted node information of the root node based on the root node address of the keyword unit index corresponding to the keyword (KWy) received from the client. Furthermore, a decryption process is performed on the acquired encrypted node information by applying a key (root node key) received from the client to acquire node information.
  • Step S402 Next, in step S402, the state information included in the node information of the root node of the keyword unit index corresponding to the keyword (KWy) acquired in step S401 is confirmed.
  • the state information is data indicating any of the following information.
  • any one of the three types of ⁇ , ⁇ , and ⁇ is set.
  • Step S404 is when the state information in the node information acquired in step S403 is ⁇ , that is, when a document corresponding to the own node or a lower node includes or does not include a specific keyword (KWy). It is a process to be executed.
  • a child node including the document x (Docx) as a lower leaf node (leaf node) is selected from the child nodes immediately below the node corresponding to the acquired node information, and node information of the selected child node is obtained. Decrypt.
  • step S404 After execution of the process of step S404, the process returns to step S402, and the process of step S402, that is, the process of confirming the state information in the node information is performed on the node information of the child node acquired in step S404.
  • Step S405 is a process executed when the state information in the node information acquired in step S403 is ⁇ , that is, when all the documents corresponding to the own node or the lower node include a specific keyword (KWy). If this determination is made in step S403, it is determined in step S405 that the document x (Docx) includes the keyword (Kwy), and the process ends.
  • step S405 The processing result when the processing of step S405 is executed is as follows. “Document x (Docx) contains keyword (Kwy)” As a result, the server 200 notifies the client 100 of this result.
  • Step S406 is a process executed when the state information in the node information acquired in step S403 is x, that is, when all the documents corresponding to the own node or the lower node do not include a specific keyword (KWy). If this determination is made in step S403, it is determined in step S406 that the document x (Docx) does not include the keyword (Kwy), and the process ends.
  • step S406 The processing result when the processing of step S406 is executed is as follows. “Document x (Docx) does not include keyword (Kwy)” As a result, the server 200 notifies the client 100 of this result.
  • step S405 or step S406 when the process of step S405 or step S406 is executed, the process ends, and a determination result is generated as to whether or not the document x (Docx) designated by the client includes the keyword y (KWy). The client is notified.
  • the tree structure in FIG. 18 is a tree structure of the keyword unit index corresponding to the keyword y (KWy), and the document 4 at the node position (4, 4) is a document designated by the client. In other words, it is assumed that the client is seeking a determination processing result as to whether or not the document 4 includes the keyword y (KWy).
  • is set as the state information of the document 4
  • the document 4 is a document including the keyword y (KWy).
  • this information is encrypted data and cannot be obtained immediately.
  • the server acquires the encrypted node information of the root node (1, 1) shown in FIG. 18 according to the root node address received from the client. Further, decryption processing is executed by applying the encryption key of the root node acquired from the client to acquire node information of the root node (1, 1). Furthermore, the state information of the node information of the root node (1, 1) is confirmed. It is confirmed that this state information is ⁇ .
  • This series of processing corresponds to each processing of steps S401 to S403 in the flow of FIG. 17, as shown in FIG. That is, this corresponds to the processing of steps S401 and S402 in the flow of FIG. 17, and further, the state information in the node information is determined to be ⁇ in the determination of step S403, and the process proceeds to step S404.
  • step S404 a child node including the document x (Docx) as a lower node is selected and the node information of the child node is decoded.
  • document x document 4 is included in the lower nodes on the child node side of node position (2,1) among the two child nodes directly connected to the root node of node position (1,1). ing. Accordingly, in step S404, the child node at the node position (2, 1) is selected. This process is the process shown in FIG.
  • the node information of the child node at the selected node position (2, 1) is decoded to acquire the node information, and the state information of the acquired node information is confirmed. It is confirmed that this state information is ⁇ .
  • This series of processing is the processing shown in FIG. That is, this corresponds to the process of steps S404 and S402 in the flow of FIG. 17 and the process of proceeding to step S404 when the state information in the node information is determined to be ⁇ in the determination of step S403.
  • step S404 a child node including the document x (Docx) as a lower node is selected and the node information of the child node is decoded.
  • document x document 4 is included in the child nodes on the child node side of node position (3, 2) among the two child nodes directly connected to the node at node position (2, 1). Yes. Accordingly, in step S404, the child node at the node position (3, 2) is selected. This process is the process shown in FIG.
  • the node information of the child node at the selected node position (3, 2) is decoded to acquire the node information, and the state information of the acquired node information is confirmed. It is confirmed that this state information is ⁇ .
  • This series of processing is the processing shown in FIG. That is, this corresponds to the process of steps S404 and S402 in the flow of FIG. 17 and the process of proceeding to step S404 when the state information in the node information is determined to be ⁇ in the determination of step S403.
  • step S404 a child node including the document x (Docx) as a lower node is selected and the node information of the child node is decoded.
  • step S404 the child node at the node position (4, 4) is selected. This process is the process shown in FIG.
  • the node information of the child node at the selected node position (4, 4) is decoded to acquire the node information, and the state information of the acquired node information is confirmed. It is confirmed that this state information is ⁇ .
  • This series of processing is the processing shown in FIG. That is, this corresponds to the processing of steps S404 and S402 in the flow of FIG. 17, and further, the state information in the node information is determined as ⁇ in the determination of step S403, and the processing proceeds to step S405.
  • step S405 it is determined that the document x (Docx) is a document including the keyword y (KWy), and the process ends.
  • the state of the root node (1, 1) of the tree structure is ⁇
  • the state of the selection node (2, 1) of the second layer is also ⁇
  • the selection node (3, 2) of the third layer The state of is also ⁇ .
  • the state of the root node (1, 1) of the tree structure of the keyword unit index is ⁇
  • the state of the leaf node corresponding to the document set below the root node is ⁇ at that time. It is confirmed that there is. Therefore, in such a setting, whether or not the document x (Docx) includes the keyword y (KWy) is determined by checking the state information of the root node and decoding the node information of the nodes below the second layer. Processing can be terminated without executing analysis.
  • FIG. 19 shows an example of processing when the document x to be verified as to whether or not the keyword y (KWy) is included is document 1, and in the case where the state of the node (3, 1) in the third layer is ⁇ . It is a figure explaining a processing sequence.
  • the server acquires the encrypted node information of the root node (1, 1) shown in FIG. 19 according to the root node address received from the client. Further, decryption processing is executed by applying the encryption key of the root node acquired from the client to acquire node information of the root node (1, 1). Furthermore, the state information of the node information of the root node (1, 1) is confirmed. It is confirmed that this state information is ⁇ .
  • This series of processing corresponds to each processing of steps S401 to S403 in the flow of FIG. 17, as shown in FIG. That is, this corresponds to the processing of steps S401 and S402 in the flow of FIG. 17, and further, the state information in the node information is determined to be ⁇ in the determination of step S403, and the process proceeds to step S404.
  • step S404 a child node including the document x (Docx) as a lower node is selected and the node information of the child node is decoded.
  • document x document 1 is included in the lower nodes on the child node side of node position (2,1) among the two child nodes directly connected to the root node of node position (1,1). ing. Accordingly, in step S404, the child node at the node position (2, 1) is selected. This process is the process shown in FIG.
  • the node information of the child node at the selected node position (2, 1) is decoded to acquire the node information, and the state information of the acquired node information is confirmed. It is confirmed that this state information is ⁇ .
  • This series of processing is the processing shown in FIG. That is, this corresponds to the process of steps S404 and S402 in the flow of FIG. 17 and the process of proceeding to step S404 when the state information in the node information is determined to be ⁇ in the determination of step S403.
  • step S404 a child node including the document x (Docx) as a lower node is selected and the node information of the child node is decoded.
  • document x document 1 is included in the child nodes on the child node side of node position (3, 1) among the two child nodes directly connected to the node at node position (2, 1). Yes. Accordingly, in step S404, the child node at the node position (3, 1) is selected. This process is the process shown in FIG.
  • the node information of the child node at the selected node position (3, 1) is decoded to acquire the node information, and the state information of the acquired node information is confirmed. It is confirmed that this state information is ⁇ .
  • the state of the root node (1, 1) of the tree structure is ⁇
  • the state of the selection node (2, 1) of the second layer is also ⁇
  • the selection node (3 of the third layer , 1) is ⁇ .
  • processing is performed only by acquiring higher-level node information without acquiring state information of the lowermost leaf node (4, 1) corresponding to the designated document (Doc1). Can be completed.
  • any node information of the node from the document-corresponding leaf node to the root node to be analyzed is ⁇
  • the state of the document-corresponding leaf node set below that node is all ⁇ . It can be determined that the document includes a keyword.
  • the state of the leaf node corresponding to the document set below that node is ⁇ , It can be determined that the document does not include a keyword.
  • the target document includes a specific keyword before analyzing the node information corresponding to the target document. Is realized.
  • the number of documents set as leaf nodes is N, it is determined whether or not a keyword is included. Even in the worst case where all the states of the nodes higher than the leaf node are ⁇ , the number of nodes that require analysis processing is logN + 1. In addition, the number of nodes required for analysis processing when the state of the root node is ⁇ or ⁇ is 1 for the root node only. Therefore, the number of nodes required for analysis processing when using a tree structure is in the range of 1 to (logN + 1).
  • the process shown in FIG. 20 is a process executed on the server side. It is assumed that the server has received the following data from the client.
  • the server receives the data (a) to (b) and executes processing according to the flow shown in FIG.
  • the server stores a program for executing processing according to the flow shown in FIG. 20 in a memory, and executes this program in a data processing unit having a CPU.
  • Tree structure node setting (2) Document ID, (3) presence of keywords, It is a table that associates each of these data.
  • the node setting of the tree structure has a data configuration that is combined with the layer configuration from the root node (1, 1) in the uppermost layer to the leaf nodes (4, 1) to (4, 8) in the lowermost layer.
  • the document ID is the document ID of the document corresponding to the leaf node.
  • the presence / absence of a keyword is a field for recording a result obtained according to the processing according to the flow shown in FIG. Note that the table shown in FIG. 21B is a table after completion of processing obtained by recording the result obtained according to the processing according to the flow shown in FIG. 20 in the column “(3) Presence / absence of keyword”. .
  • Step S501 the server acquires the encrypted node information of the root node based on the root node address of the keyword unit index corresponding to the keyword (KWy) received from the client. Further, a decryption process using the key received from the client is executed on the obtained encrypted node information to obtain node information.
  • Step S502 the state information included in the node information of the root node of the keyword unit index corresponding to the keyword (KWy) acquired in step S501 is confirmed.
  • the state information is data indicating any of the following information.
  • any one of the three types of ⁇ , ⁇ , and ⁇ is set.
  • Step S504 is when the state information in the node information acquired in Step S503 is ⁇ , that is, when a document corresponding to the own node or the lower node includes a specific keyword (KWy) and does not include it. It is a process to be executed.
  • the node information is acquired by sequentially decrypting the encrypted node information of the child node immediately below the node corresponding to the acquired node information, and the processing from step S502 onward is performed on the node information of the acquired child node. . That is, the state information is confirmed, and the processes of steps S504 to S506 are performed according to the confirmation result.
  • step 504 processing is sequentially executed for a plurality of child nodes. That is, S504 ⁇ S502 ⁇ S503 This series of processing is sequentially executed for each of a plurality of child nodes.
  • Step S505 is a process executed when the state information in the node information acquired in step S503 is “ ⁇ ”. If this determination is made in step S503, it is determined in step S505 that the document ID recorded in the node information of the own node, that is, all the documents corresponding to the own node or the lower node include a specific keyword (KWy). To do.
  • Step S506 is processing to be executed when the state information in the node information acquired in step S503 is x.
  • the document ID recorded in the node information of the own node that is, all the documents corresponding to the own node or the lower node do not include a specific keyword (KWy). judge.
  • the keyword “no keyword (KW)” in the table of FIG. 21 described above does not include the keyword.
  • the identification data (x) shown is recorded.
  • the tree structure in FIG. 22 is a keyword unit index tree structure corresponding to the keyword y (KWy).
  • the eight documents corresponding to the nodes of the leaf nodes (4, 1) to (4, 8) in the lowermost layer obtain the determination processing result as to whether or not the keyword y (KWy) includes the keyword y.
  • the server acquires the encrypted node information of the root node (1, 1) shown in FIG. 22 according to the root node address received from the client. Further, decryption processing is executed by applying the encryption key of the root node acquired from the client to acquire node information of the root node (1, 1). Furthermore, the state information of the node information of the root node (1, 1) is confirmed. It is confirmed that this state information is ⁇ .
  • This series of processing corresponds to each processing of steps S501 to S503 in the flow of FIG. 20, as shown in FIG. That is, it corresponds to the process of steps S501 and S502 of the flow of FIG. 20, and the state information in the node information is determined to be ⁇ in the determination of step S503, and the process proceeds to step S504.
  • step S504 the encrypted node information of the child node immediately below the node corresponding to the acquired node information is sequentially decrypted to acquire node information, and the processing of step S502 and subsequent steps is performed on the acquired node information of the child node. . That is, for a node (2, 1) and a node (2, 2) shown in FIG. 22, this series of processing is executed from S504 ⁇ S502 ⁇ S503.
  • FIG. 22 shows only the processing of the node (2, 1) as a typical processing example.
  • the node information is obtained by decrypting the encrypted node information of the node (2, 1), and the processing from step S502 is performed on the obtained node information. That is, the state information of the acquired node information is confirmed. It is confirmed that this state information is ⁇ .
  • the node information is obtained by sequentially decrypting the encrypted node information of the child node immediately below the node corresponding to the acquired node information. Perform the following process. That is, for a node (3, 1) and a node (3, 2) shown in FIG. 22, this series of processing is executed from S504 ⁇ S502 ⁇ S503.
  • step S504 the node information is obtained by decrypting the encrypted node information of the node (3, 1), and the processing from step S502 is performed on the obtained node information. That is, the state information of the acquired node information is confirmed. It is confirmed that this state information is ⁇ .
  • This series of processing is the processing shown in FIG. That is, this corresponds to the processing of steps S504 and S502 in the flow of FIG. 20, and further, the state information in the node information is determined as ⁇ in the determination of step S503, and the processing proceeds to step S505.
  • Similar processing is executed for the other nodes.
  • node information with state information of ⁇ it is determined that all the documents corresponding to the leaf nodes below it contain keywords, so analysis of the lower nodes of that node is unnecessary It becomes.
  • node information whose state information is “x” it is determined that all the documents corresponding to the lower leaf nodes do not include the keyword, so that the analysis of the lower nodes of the node is unnecessary.
  • the target document includes a specific keyword before analyzing the node information corresponding to the target document. Is realized.
  • the above-described keyword unit index is an index having a binary tree structure in which two child nodes are set immediately below one parent node.
  • the processing shown in the flowchart of FIG. 23 is executed in the information processing apparatus (client) 100 of the user.
  • the information processing apparatus 100 stores a program defining processing steps according to the flowchart of FIG. 23 in a memory.
  • the data processing unit of the information processing apparatus 100 that is, the data processing unit including a CPU having a program execution function
  • the program is executed, and processing according to the flowchart shown in FIG. 23 is executed.
  • FIG. 23 is a flow showing a generation processing sequence of one keyword unit index corresponding to one keyword (KWx).
  • a plurality of keywords (KW1, KW2,...) are set, processing according to the flow shown in FIG. 23 is executed for each keyword (KW1, KW2,).
  • the processing of each step shown in the flow will be described sequentially.
  • Step S701 First, in step S701, a leaf node (leaf node) corresponding to each document stored in the database is set as a new child node of the tree structure of the k-ary tree, and node information corresponding to the set leaf node (leaf node) is set. Is generated. Note that the node information has the data configuration described above with reference to FIG.
  • the node information corresponding to the leaf node (leaf node) is set as follows, for example.
  • As the document ID a document identifier of a document corresponding to each leaf node is set.
  • the state is set to ⁇ .
  • the leaf node (leaf node) correspondence document does not include the keyword (KWx)
  • the state is set to x. For example, dummy data such as all 0 is set as the child node address and key data. If the node information of the leaf node corresponding to each database storage document is generated, the process proceeds to step S702.
  • Step S702 the following processing is executed.
  • a set of child nodes is set in units of k nodes in the order of document IDs corresponding to each node from the child nodes for which node information is generated. Note that k ⁇ 2. Further, a parent node is set in units of the set k child node sets. Further, the document ID and state information in the node information of the parent node are determined.
  • the document ID and state information in the node information of the parent node are set as follows.
  • the document ID is set in a range including all document IDs corresponding to leaf nodes (leaf nodes) below the parent node.
  • step S703 an encryption key for each child node directly connected to the parent node generated in step S702 is generated. That is, a node key corresponding to each child node that encrypts the node information of the child node is generated. This encryption key may be an arbitrary key generated by the client. Further, the node information of the child node is encrypted with the generated node key. Next, the generated node key is stored as node information of the parent node directly connected to the child node.
  • Step S704 an address indicating the node information recording position of the child node directly connected to the parent node generated in step S702 is stored as node information of the parent node.
  • the address for example, offset information from the data head of the data area in which the keyword unit index is recorded can be applied. Steps S702 to S704 are performed for all child nodes in the same hierarchy.
  • Step S705 Next, in the keyword unit index generation process, it is determined whether or not the root node has been reached. Specifically, this is executed as a process of determining whether or not there is only one parent node generated in step S702, that is, whether or not it is the only parent node corresponding to the root node.
  • step S705 If it is determined that the parent node generated in step S702 is the only parent node and has reached the root node, the determination in step S705 is Yes, and the process proceeds to step S707. On the other hand, if the parent node generated in step S702 is not the only parent node but a plurality of parent nodes, it is determined that the root node has not been reached, the determination in step S705 is No, and the process proceeds to step S706.
  • Step S706 If the determination in step S705 is No, that is, if the parent node generated in step S702 is not the only parent node but a plurality of parent nodes, it is determined that the root node has not been reached, and the process proceeds to step S706. .
  • step S706 the processing from step S702 onward is executed with the parent node generated in step S702 as the new child node and the new child node as the processing target.
  • step S702 a tree structure having a k-ary tree structure is constructed sequentially from the lower leaf node (leaf node) toward the upper layer.
  • the parent node generated in step S702 becomes the only parent node.
  • Step S707 an encryption key for encrypting the node information of the root node is determined, and the node information of the root node is encrypted with the determined key.
  • a keyword unit index having a tree structure of k-ary tree structure is generated.
  • step S101 of the sequence diagram of FIG. 13 processing according to the flowchart shown in FIG. 23 is executed to generate a keyword unit index.
  • one keyword unit index is generated for one keyword. Therefore, when the user on the client side sets a plurality of keywords, the process according to the flowchart shown in FIG. 23 is executed for each of the set keywords to generate a number of keyword unit indexes equal to the number of keywords.
  • the client 100 stores the encrypted document (Doc1, Doc2, Doc3%) In the database of the server 200 and also stores the keyword unit index.
  • the client can add and store a new document in the database of the server 200, and can also delete the document stored in the database.
  • the leaf node which is the lowest layer node of the keyword unit index
  • the keyword unit index is used. It is necessary to update the data to change the configuration of the leaf node (leaf node) that is the lowermost node of the node.
  • the data update processing of such a keyword unit index will be described.
  • FIG. 24 is a diagram for explaining an example of a keyword unit index update process when the document 3 or the document 4 is deleted.
  • Intermediate nodes 4 to 4 are set.
  • the state of the parent node is also updated. Since the state of the lower node is only ⁇ , the state of the parent node is updated to ⁇ .
  • the document non-corresponding node generated by deleting the document 3 can be used as a node corresponding to the additional stored document when a document to be additionally stored in the database is generated.
  • FIG. 24B shows the index update process when the document 4 (Doc4) is deleted from the database.
  • the state information of the node information of the node corresponding to the deleted document is set to an invalid value, and further, the state information of the upper node is updated as necessary according to this change.
  • the lowermost leaf nodes (leaf nodes) of the keyword unit index are set to nodes associated with one document.
  • all the leaf nodes do not necessarily have to be associated with any of the database stored documents, and a node (dummy node) that is not associated with the document may be set.
  • Such a dummy node can be used as a corresponding node of the new document when a new database storage document is generated.
  • An example of a tree structure of the keyword unit index having dummy nodes is shown in FIG.
  • dummy nodes can be used as nodes corresponding to the newly added document when a new database storage document is generated in the future.
  • the state information of the upper node in which all the states of the lower nodes are invalid values [ ⁇ ] is set to invalid values [ ⁇ ].
  • the document is associated with a lower level below that node. It is possible to determine that there is no leaf node, and it is possible to omit the decoding process of the node information up to the lower nodes, thereby enabling efficient processing.
  • the tree structure of the keyword unit index is configured by associating the lowermost leaf node (leaf node) with each database storage document. Therefore, the number of documents stored in the database needs to be equal to or less than the number of leaf nodes (leaf nodes) in the lowest layer.
  • a node corresponding to the document 5 cannot be set.
  • the number of hierarchies of the keyword unit index is increased to increase the number of leaf nodes. That is, the node of the dotted line part shown in FIG. 26 is additionally set, and a four-layer tree structure having eight leaf nodes and a new root node 403 is set as a new keyword unit index.
  • the leaf nodes in the three-layer tree structure 400 are used as they are as leaf nodes in the new four-layer tree structure. It becomes possible. Further, the node information of each node in the three-level tree structure 400 can be used without being changed.
  • the dummy node can be used as a corresponding node for future additional stored documents.
  • FIG. 27 illustrates a hardware configuration example of an information processing apparatus corresponding to a client or a server that executes processing according to the above-described embodiment.
  • a CPU (Central Processing Unit) 501 functions as a data processing unit that executes various processes according to a program stored in a ROM (Read Only Memory) 502 or a storage unit 508. For example, the data processing according to each flowchart described above is executed.
  • ROM Read Only Memory
  • a RAM (Random Access Memory) 503 stores programs executed by the CPU 501, data, and the like. For example, a program defining each data processing sequence described above is stored.
  • the RAM also includes a register that stores data to be applied to each process described above, and also includes a memory area that is used as a work area.
  • the CPU 501, ROM 502, and RAM 503 are connected to each other by a bus 504.
  • the CPU 501 is connected to an input / output interface 505 via a bus 504.
  • the input / output interface 505 is connected to an input unit 506 including various switches, a keyboard, a mouse, and a microphone, and an output unit 507 including a display and a speaker. Yes.
  • the CPU 501 executes various processes in response to a command input from the input unit 506 and outputs a processing result to the output unit 507, for example.
  • the storage unit 508 connected to the input / output interface 505 includes, for example, a hard disk and stores programs executed by the CPU 501 and various data.
  • the drive 510 connected to the input / output interface 505 drives a removable medium 511 such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory such as a memory card, and executes data recording or reading.
  • a removable medium 511 such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory such as a memory card
  • the technology disclosed in this specification can take the following configurations. (1) having a data processing unit that generates a keyword unit index having a tree-structured link structure of keyword units for document search;
  • the data processing unit A keyword having a link structure of node information in which node information is associated with each node constituting a tree structure in which a plurality of lower nodes are branched and connected to each node from a root node which is the highest node to a leaf node which is the lowest node.
  • Generate unit index As node information to the leaf node, (1a) a document identifier for each document; (1b) state information indicating whether or not the document corresponding to the document identifier includes a specific keyword; Store As node information to higher nodes other than leaf nodes, (2a) Document identifiers of all leaf nodes included in the lower nodes; (2b) The documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or do not include all, or include and do not include, or these three states can be determined. State information, Information processing apparatus for generating a keyword unit index that stores.
  • the data processing unit stores the encrypted document corresponding to the document identifier set in the node information of the leaf node of the keyword unit index in a database of the server, and in the keyword search of the encrypted document,
  • the information processing apparatus according to any one of (1) to (3), wherein a server is requested to execute processing using the keyword unit index.
  • the data processing unit transmits the access address of the node information of the root node of the keyword unit index and the decryption key to the server (4) ).
  • the data processing unit generates keyword correspondence management data in which the access address of the node information of the root node of the keyword unit index corresponding to each keyword and the decryption key are associated with each keyword, and the storage unit
  • the information processing apparatus according to any one of (1) to (5), which is stored in a storage device.
  • the data processing unit sets the state information of the node information of the leaf node corresponding to the deleted document as an invalid value.
  • the data processing unit generates a keyword unit index in which a dummy node having no corresponding document is set as a leaf node, and uses the dummy unit index that can be used as a node corresponding to a newly stored document in the database.
  • the information processing apparatus according to any one of (1) to (7) to be generated.
  • a communication unit that transmits and receives data to and from the client;
  • a storage unit storing an encrypted document, and a keyword unit index having a tree-structured link structure of a keyword unit applied to search of the encrypted document;
  • a data processing unit that performs data search processing in response to a data search request from a client;
  • the communication unit is Receiving an access address and a decryption key of node information of a root node which is the highest node of the keyword unit index from the client;
  • the data processing unit According to the access address, obtain node information of the root node of the keyword unit index of the specific keyword, decrypt with the decryption key, (A) Document identifiers of all leaf nodes included in the lower nodes; (B) Whether the documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or not all, or includes and does not include, or these three states can be determined.
  • State information an access address and decryption key of node information of a lower node, Obtain each information of (a), (b), (c) above, An information processing apparatus that executes acquisition of node information of a lower node or generation of a search result according to a search request form from the client and setting of the state information.
  • the search request from the client is a search request for obtaining a determination result as to whether or not the specific designated document (Docx) includes a specific keyword (KWy)
  • the acquired state information is set so that all the leaf nodes included in the lower nodes include keywords or not include all keywords, whether the designated document (Docx) includes a specific keyword (KWy) according to the settings
  • the state information is a setting indicating that the leaf nodes included in the lower nodes include those that include the keyword and those that do not include the keyword, sequentially
  • the node information of the node is analyzed, and the leaf nodes included in the lower nodes include all or none of the keywords.
  • the search request from the client is a search request for obtaining a determination result as to whether or not each of the documents stored in the storage unit includes a specific keyword (KWy)
  • the state information acquired from the information is a setting that all or not all the leaf nodes included in the lower nodes include keywords, each of the documents stored in the storage unit is specified according to the setting.
  • the state information is a setting indicating that leaf nodes included in lower nodes include and do not include a keyword
  • the information processing apparatus According to (10) for generating a judgment result according to the state information.
  • An information processing system including a client that performs a data search request and a server that performs data continuous operation in response to a request from the client,
  • the server A storage unit storing an encrypted document, and a keyword unit index having a tree-structured link structure of a keyword unit applied to search of the encrypted document;
  • a data processing unit that performs data search processing in response to a data search request from a client;
  • the client transmits an access address of node information of a root node that is the highest node of the keyword unit index and a decryption key to the server,
  • the data processing unit of the server According to the access address, obtain node information of the root node of the keyword unit index of the specific keyword, decrypt with the decryption key,
  • State information an access address and decryption key of node information of a lower node, Obtain each information of (a), (b), (c) above, An information processing system for acquiring node information of a lower node or generating a search result according to a search request mode from the client and the setting of the state information.
  • the client generates an encrypted document and a keyword unit index that is an index for searching the encrypted document, and transmits the generated keyword to the server.
  • the server receives the encrypted document, the keyword received from the client, The information processing system according to (15), wherein the unit index is stored in the storage unit.
  • the information processing apparatus includes a data processing unit that generates a keyword unit index having a tree-structured link structure of keyword units for document search,
  • the data processing unit is A keyword having a link structure of node information in which node information is associated with each node constituting a tree structure in which a plurality of lower nodes are branched and connected to each node from a root node which is the highest node to a leaf node which is the lowest node.
  • Generate unit index As node information to the leaf node, (1a) a document identifier for each document; (1b) state information indicating whether or not the document corresponding to the document identifier includes a specific keyword; Store As node information to higher nodes other than leaf nodes, (2a) Document identifiers of all leaf nodes included in the lower nodes; (2b) The documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or do not include all, or include and do not include, or these three states can be determined. State information, Information processing method for generating a keyword unit index storing.
  • the information processing apparatus includes a communication unit that performs data transmission / reception with a client, an encrypted document, and a storage unit that stores a keyword unit index having a tree unit type link structure of a keyword unit applied to search of the encrypted document, A data processing unit for performing a data search process in response to a data search request from a client,
  • the communication unit is Receiving an access address and a decryption key of node information of a root node which is the highest node of the keyword unit index from the client;
  • the data processing unit is According to the access address, obtain node information of the root node of the keyword unit index of the specific keyword, decrypt with the decryption key, (A) Document identifiers of all leaf nodes included in the lower nodes; (B) Whether the documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or not all, or includes and does not include, or these three states can be determined.
  • State information an access address and decryption key of node information of a lower node, Obtain each information of (a), (b), (c) above, An information processing method for acquiring node information of a lower node or generating a search result according to a search request form from the client and setting of the state information.
  • the information processing apparatus includes a data processing unit that generates a keyword unit index having a tree-structured link structure of keyword units for document search,
  • the program is stored in the data processing unit.
  • the information processing apparatus includes a communication unit that performs data transmission / reception with a client, an encrypted document, and a storage unit that stores a keyword unit index having a tree unit type link structure of a keyword unit applied to search of the encrypted document, A data processing unit for performing a data search process in response to a data search request from a client,
  • the communication unit is Receiving an access address and a decryption key of node information of a root node which is the highest node of the keyword unit index from the client;
  • the program is stored in the data processing unit.
  • a process of obtaining node information of a root node of a keyword unit index of a specific keyword, and a decryption process with the decryption key are executed, (A) Document identifiers of all leaf nodes included in the lower nodes; (B) Whether the documents corresponding to the document identifiers of the leaf nodes included in the lower nodes all include keywords, or not all, or includes and does not include, or these three states can be determined.
  • State information (C) an access address and decryption key of node information of a lower node, Each information of (a), (b), (c) is acquired, A program for executing acquisition of node information of a lower node or generation of a search result according to a search request form from the client and setting of the state information.
  • the series of processes described in the specification can be executed by hardware, software, or a combined configuration of both.
  • the program recording the processing sequence is installed in a memory in a computer incorporated in dedicated hardware and executed, or the program is executed on a general-purpose computer capable of executing various processing. It can be installed and run.
  • the program can be recorded in advance on a recording medium.
  • the program can be received via a network such as a LAN (Local Area Network) or the Internet and installed on a recording medium such as a built-in hard disk.
  • the various processes described in the specification are not only executed in time series according to the description, but may be executed in parallel or individually according to the processing capability of the apparatus that executes the processes or as necessary.
  • the system is a logical set configuration of a plurality of devices, and the devices of each configuration are not limited to being in the same casing.
  • the server stores the encrypted document and the keyword unit index of the tree-type link structure applied to the search.
  • the client transmits the address of the root node, which is the highest node of the keyword unit index, and the decryption key to the server.
  • the server obtains the node information of the root node of the keyword unit index according to the address, decrypts it with the decryption key, and (a) the document identifiers of all the leaf nodes included in the lower node, and (b) included in the lower node.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

キーワード検索の適用キーワードの漏えいを防止するとともに、効率的な検索を実現する。サーバは暗号化文書と、検索に適用する木構造型リンク構造のキーワード単位インデックスを格納する。クライアントはキーワード単位インデックスの最上位ノードであるルートノードのアドレスと復号用鍵をサーバに送信する。サーバは、アドレスに従ってキーワード単位インデックスのルートノードのノード情報を取得して復号用鍵で復号して、(a)下位ノードに含まれるリーフノード全ての文書識別子と、(b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、全て含まないか、混在するか、これらを判別可能としたステート情報等を取得し、ステート情報の設定に基づいて、検索結果を効率的に取得する。

Description

情報処理装置、情報処理システム、および情報処理方法、並びにプログラム
 本開示は、情報処理装置、情報処理システム、および情報処理方法、並びにプログラムに関する。さらに詳細には、データベースを利用したデータ格納や検索処理を行なう情報処理装置、情報処理システム、および情報処理方法、並びにプログラムに関する。
 昨今、大容量のデータを格納可能な大型データベースをネットワーク上に設置し、多くのユーザのPCや携帯端末からアクセス可能として、ユーザデータを格納し、逐次、抽出可能としたデータベース提供サービスの利用が盛んになっている。
 ネットワークを介してユーザ端末から利用可能なサーバやデータベースはクラウドサーバ、クラウドデータベース、あるいはクラウドシステム等と呼ばれる。
 このようなクラウドデータベースを利用することで、ユーザは、文書データや画像データを個人のPCや携帯端末等の小型の記憶手段に格納することなく、ネットワーク上の大容量のデータベースに格納することが可能となる。
 しかし、このようなクラウド型のデータベースは、第三者の管理下にあり、また様々なユーザによって利用可能な構成となっている。従って、データベース管理者の不正や、他のユーザによる不正アクセスによって、データが漏えいする恐れがある。
 データ漏えいを防止する一つの手段として、データを暗号化してデータベースに格納する方法がある。
 すなわち、図1に示すように、ユーザAのPC等の情報処理装置10がネットワーク15を介して接続されたクラウド型のデータベース20にデータを暗号化して格納する。
 データベース20は、第三者によって管理され、様々なユーザによってアクセス可能なクラウドデータベースである。データベース20は、様々なユーザ用のデータ格納領域が設けられており、各ユーザは自己に割り当てられたデータベース領域(ユーザ領域)のみを利用可能な構成となっている。例えばユーザAの情報処理装置10は、データベース20の一部をユーザAの情報処理装置10の専用領域、すなわちユーザA専用領域21として利用することが可能である。その他のユーザ領域22は、ユーザAの情報処理装置10からはアクセスできない設定となっている。
 このようなアクセス制限は、例えばパスワードの利用によって実現される。すなわち、ユーザAの情報処理装置10は、データベース20を利用するに際して、予め設定したパスワードをデータベース側20に送信する。データベース20側のデータ処理部は、入力パスワードと予め登録したパスワードとの一致確認を行い、一致した場合にのみ、ユーザAの情報処理装置10にユーザA専用領域21に対するデータアクセスを許可する。
 ユーザA専用領域21に暗号化データを格納することで、不正アクセスが発生した場合のデータ漏えいの可能性を低減することができる。
 しかし、ユーザAが、データベース20に格納したデータを検索する場合、例えばキーワード検索が実行される。この検索処理に際して、ユーザAの入力した検索キーワードがユーザAの情報処理装置10からデータベース20に送信される。
 不正なデータベース管理者やネットワーク転送データの盗聴者などは、データ検索に利用したキーワードを解析してユーザAの格納データを推定し、また検索キーワードに基づいてユーザAの嗜好や、興味などの解析を行う可能性があり、ユーザAのプライバシーが侵害される恐れがある。
 図2に、検索キーワードの漏えいを防止するための一構成例を示す。
 ユーザA30は、ユーザA専用の情報処理装置31と、ユーザA専用のインデックスデータベース32を有する。
 インデックスデータベース32は、キーワード(KW)とキーワードの含まれるデータファイルの識別データであるファイルIDとの対応データを格納したデータベースである。
 ユーザAは、情報処理装置31に文書検索用のキーワード(KW)を入力する。インデックスデータベース32は、入力キーワードに対応付けられた文書ファイルID(File ID)を情報処理装置31に出力する。
 ユーザAは、取得したファイルIDをクラウドデータベース40に送信する。図に示すファイルID51である。
 データベース40は、受信したファイルID51に基づいて、データベース検索を行い、ファイルID51の設定されたファイル52を取得してユーザA30の情報処理装置31に送信する。
 なお、送信されるファイル52は暗号化データであり、ユーザA30の情報処理装置31側で復号して閲覧される。
 この図2に示す構成を用いることで、ユーザの入力したキーワード(KW)は、ネットワーク上にもデータベース側にも送信されることはない。従って、キーワードの漏えいやキーワードの解析によるユーザAの格納データの解析やユーザAの興味嗜好などが不正に解析される可能性は低減される。
 しかし、この図2に示すようなインデックスデータベース32を保持しないユーザは、図3に示すように、情報処理装置31からデータベース40に対して、キーワード(KW)を含む検索式であるクエリ(Query)61を生成してデータベース40に送信するしかない。
 データベース40は、ユーザAの情報処理装置31から受信するクエリ61に含まれるキーワードを含む文書ファイルを取得してユーザ側の情報処理装置31に送信する。
 このような処理を行なうと、前述したように不正なデータベース管理者等によって、入力キーワードに基づく検索文書の推定や、ユーザの興味嗜好の解析などが行われる可能性が発生する。
 検索キーワードの漏えいを防止して、データベースからキーワードを含むデータを検索または抽出する構成について、いくつか提案されている。
 暗号化データに対するデータ検索システムについて開示した従来技術としては、例えば、特許文献1(特許第4722620号公報)、特許文献2(特許第4347264号公報)、特許文献3(特開2011-198079号公報)、特許文献4(特開2010-164835号公報)などがある。
 以下、複数の従来技術の概略について説明する。
 なお、以下において説明する処理は、以下の構成を前提としている。
 (a)データベースに格納するデータは暗号化データである。
 (b)データベース格納データの検索には、暗号化前の平文データに含まれるキーワード利用する。
 (c)キーワードをネットワーク上に送信することなく、データベースの暗号化データからキーワードを含むデータを抽出する。
 (1)ブルームフィルタ(Bloom Filter)を適用した構成
 まず、図4を参照して、ブルームフィルタ(Bloom Filter)を適用した構成例について説明する。
 ユーザA30は、情報処理装置31を利用して、クラウド型のデータベース40に文書A,B,C・・・を格納するものとする。
 なお、格納文書A,B,Cは暗号化データである。
 データベース40に格納される文書A,B,C・・・の各々には、各文書に対応するインデックスとして、ブルームフィルタ(Bloom Filter)が設定される。このブルームフィルタからなるインデックスが各文書に対応付けられてデータベース40に格納される。
 ユーザAは、文書A,B,C・・・をデータベース40に格納する際に、これらの格納文書をキーワードに基づいて検索可能とするために、各文書A,B,Cに対応付けられたブルームフィルタを更新する。
 なお、ブルームフィルタは初期値がオール0の設定を持つビット列である。
 図には、アドレス00~08の合計9ビットのビット列からなるブルームフィルタの例を示している。
 文書Aに対応するフィルタの更新処理例について説明する。
 文書AがキーワードKW1、KW2を含む文書であるとする。
 図4のユーザAの(a)フィルタ更新(インデックス生成)に示すように、ユーザA30は、情報処理装置31を利用して、予め準備された複数のアドレス生成関数H1,H2・・・を利用し、これらのアドレス生成関数に、文書Aに含まれるキーワードKW1,KW2を代入してアドレスを算出する。
 例えば、
 H1(KW1)=04、
 H2(KW1)=08、
 H1(KW2)=03、
 H2(KW1)=01、
 このようなアドレスを算出する。
 このアドレスは、データベース格納文書に対応するインデックスであるブルームフィルタを構成するビット列の各ビット位置を示すアドレスである。
 文書Aのブルームフィルタについて、上記の算出アドレス(01,03,04,08)に対応するビット位置の値を0から1に変更する。
 この更新後の結果が、図4に示すデータベース40内の文書Aに対応するブルームフィルタのビット列である。
 文書A対応のブルームフィルタは、
 初期値:000000000が、
 更新後:010110001
 このようなビット列データに変更される。
 このビット列を持つブルームフィルタを文書Aの対応インデックスとしてデータベースに格納する。
 他の文書B,C・・・についても、同様に、各文書に含まれるキーワードをアドレス生成関数に代入してアドレスを算出して、算出したアドレス位置のブルームフィルタのビットを0から1に変更して、各文書対応のインデックスとして各文書に対応付けてデータベース40に格納する。
 なお、アドレス生成関数を適用した演算処理に適用するキーワードKW1,KW2・・・は、暗号化前の文書に含まれるワードを利用可能である。
 また、アドレス生成関数H1,H2・・としては、例えば予め設定した鍵K1,K2・・・を利用した疑似乱数関数(PRF:Pseudo-random function)等のハッシュ関数を利用する。
 すなわち、アドレス生成関数Hnは、鍵Knを適用した疑似乱数関数である。
 なお、図に示す例ではアドレス生成関数を、H1,H2の2種類としているが、さらに多くの関数を利用してもよい。また、ブルームフィルタのビット数も、図には9ビット構成の例を示しているが、任意のビット数の設定が可能である。
 このように、各文書に対応するインデックスとして、各文書対応のビット列を持つブルームフィルタを生成してデータベース40に格納する。
 データベース40に文書を格納した後、ユーザAはキーワードKW1,KW2・・・を、ネットワークを介してデータベース40に出力することなく、キーワードに基づくデータ検索を行うことが可能となる。
 図4のユーザA30の(b)データ検索に示すように、ユーザAは、情報処理装置31において、例えば、検索用キーワード(KW2)をアドレス生成関数H1,H2に代入してアドレスを生成する。図に示す例では、
 H1(KW2)=03、
 H2(KW2)=01、
 これらのアドレスが生成される。
 情報処理装置31は、この生成アドレス(01,03)をデータベース40に送信する。データベース40は、受信アドレス(01,03)の指定位置が[1]に設定されたインデックス、すなわちブルームフィルタを検索する。例えば文書Aのブルームフィルタを抽出する。
 この抽出フィルタに対応付けられた文書を、キーワードKW1,KW2に基づく検索結果として、ユーザAの情報処理装置31に提供する。
 このように、文書対応のインデックスとしてブルームフィルタを適用した構成では、キーワード:KW1,KW2・・・がネットワークを介してデータベース40側に供給されることなく、キーワードに基づくデータ検索が可能となる。
 しかし、図4を参照して説明したブルームフィルタは、異なる文書であってもキーワードが類似すると、類似する文書のブルームフィルタのビット列が類似してしまい、ブルームフィルタの設定から、類似文書が類推できてしまうという問題がある。
 このような問題を解決するために、データベースに格納する各文書に文書識別子である文書番号(j)を設定し、文書番号(j)に応じてアドレス生成関数を変更して、文書番号固有のアドレス生成関数を適用する構成についても提案されている。
 しかし、上記構成としても、異なる文書に対応するブルームフィルタには類似のビット配列となるものが発生し得るという問題は残存する。
 また、文書に対応するキーワード数が増加するにつれて、ブルームフィルタのビット値[1]の数が増加し、ブルームフィルタのビット値[1]の数に基づいて各文書に含まれるキーワード数が予測されてしまうという問題がある。
 なお、ブルームフィルタを用いたデータ検索処理については、例えば特許文献1(特許第4722620号公報)に記載がある。
 (2)文書名とビット位置に基づいて生成したビットストリングを利用した構成
 次に、データベースに格納する文書に対応付けたインデックスとして、文書名とビット位置に基づいて生成したビットストリングを生成して利用する構成例について、図5を参照して説明する。
 図5に示すユーザA30は、情報処理装置31を利用して、クラウド型のデータベース40に文書A,B,C・・・を格納するものとする。
 なお、これらの格納文書は暗号化データである。
 データベース40に格納される文書の各々には、各文書の対応インデックスとして、文書名とビット位置から生成されるビット値によって構成されるビットストリングが初期値として設定される。
 図5に示す例では、文書Aに対応付けられたビットストリングの初期値は、
 010110001、
 上記のビット列から構成される。
 この初期値は、データベースに格納する文書Aの文書名に基づいて設定され、多くの場合、各文書名に応じて異なるビット列となる。
 さらに、ユーザAの情報処理装置31は、文書Aに含まれるキーワード、例えばキーワード:KW1を用いたアドレス生成置換PRP(Pseudo-random permutation)を用いて、ビットストリングのビット位置を示すアドレスを算出する。このアドレス生成置換は、たとえばブロック暗号アルゴリズムと鍵を用いて入力を平文として暗号化した暗号文を出力とすることにより構成可能である。
 例えば図5に示す例では、
 PRP(KW1)=05
 であり、文書Aに含まれるキーワードKW1に基づいて、アドレス(05)が算出されたとする。
 この算出アドレス(05)に従って、データベースに格納される文書Aに対応付けられたインデックスであるビットストリングの初期データを更新する。具体的には、算出アドレス(05)によって指定されるビット位置のビット値を変更する。
 この図に示す例では、
 ビットストリング初期データのアドレス(05)のビット値=0を、ビット値=1に変更する。
 このように、まず、各文書の文書名等に基づいて設定されるビットストリングの初期データを設定し、
 次に、各文書に含まれるキーワードから算出するアドレスの指定する位置のビット値を変更して各文書対応のビットストリングを更新する。
 この更新ビットストリングを各文書に対応するインデックスとして、文書に対応付けてデータベースに格納する。
 ユーザA30によるキーワード(KW1)に基づくデータ検索処理は、以下の処理を順次、実行する。
 (ステップ1)情報処理装置31において、PRP(KW1)に従ってアドレスを算出し、算出アドレスをデータベース40送信する。
 (ステップ2)データベース40側において、各文書対応のビットストリングの初期データを算出する。この初期データは、各格納文書の文書名とビット位置に基づいて算出する。
 (ステップ3)データベース40側において、算出した各文書の初期データと、データベースに格納された更新データについて、情報処理装置31から受信したアドレス位置のビット値を比較する。
 (ステップ4)初期データと更新データの指定アドレス位置のビット値が等しければ、その文書にキーワード(KW1)は含まれず、ビット値が異なる場合は、その文書にキーワード(KW1)が含まれると判定する。
 このようなステップでキーワード(KW1)の含まれる文書が抽出される。
 この処理構成においても、やはり、検索キーワードをネットワークを介してデータベースに送信する必要がないため、検索キーワードの漏えいを防止することができる。
 しかし、図4を参照して説明したブルームフィルタを用いた方式、図5を参照して説明した文書名等に基づくビットストリングを用いた方式、これらいずれの方式においても、キーワードに基づくデータ検索を行う場合、データベース側の処理として、格納文書の各々に対応して設定されたインデックスであるブルームフィルタ、またはビットストリングを、全て調べる必要がある。
 この処理負荷は格納文書数の増加に伴い、比例関係で増加することになり、格納文書数が多い場合、データ検索に要する処理コストが増大してしまうという問題がある。
  (3)キーワード対応の文書リンク構造を用いた方式
 上述したように、格納文書が、検索キーワードを含むか否かを調べるキーワード検索に際して、データベース格納文書の各々に対応して設定されたインデックスであるブルームフィルタ、またはビットストリングの全てを調べる方式では、格納文書の増大に伴い、検索処理の負荷が比例して増加してしまうという問題が発生する。
 このような処理負荷の増大を低減する検索方式として、キーワード対応の文書リンク構造を利用した方式が提案されている。以下、この方式について、図6以下を参照して説明する。
 図6には、データベースに格納された文書(文書1,2,3,・・・n)と、各文書に含まれるキーワード(KW1,2,3,・・・m)との対応関係を示すマトリクスデータ(文書-KWマトリクス)を示している。各文書は、マトリクス中のチェックされたKWを含む。例えば文書1は、KW2とKW3を含む文書であり、文書2は、KW1、KW4を含む文書である。
 上述したブルームフィルタ、またはビットストリングは、図6に示す1つの文書ごとに、どのキーワードを含むかを示すインデックスに相当する。すなわち、図6に示す文書対応インデックス71を各文書に設定して検索を実行する方式である。
 すなわち、上述したブルームフィルタ、またはビットストリングを利用した方式は、図6(a)に示す文書対応インデックス方式に対応する。この方式では、各文書が特定のKWを含むか否かを判定する検索処理に際して、各文書に含まれるキーワード(KW)を示す文書対応のインデックスを、文書1から文書nまで全て確認する処理が必要となる。
 一方、以下に説明する方式は、図6の(b)に示すキーワード対応文書リンク方式であり、特定のキーワードを含む文書を効率的に抽出可能な方式である。
 図6の(b)に示すキーワード対応文書リンク方式は、特定のキーワード(KW)を含む文書の文書情報を接続したリンク構造を設定し、このリンク構造を順次たどることで、特定のキーワード(KW)を含む文書を効率的に検出可能としている。
 例えば、図6に示す1つのキーワード(KW3)に対応する文書リンクは、KW3を含む文書のリンクとして設定される。図6の文書-KWマトリクスデータに示すように、キーワード(KW3)を含む文書は、文書1、文書4、文書nである。この場合、KW3対応の文書リンクは、文書1、文書4、文書nの各文書の文書情報を接続したリンク構造として設定される。
 図7を参照して、文書リンク構造の具体例について説明する。図7(1)には、キーワード(KW3)に対応して設定される文書リンク構造例を示している。
 文書-KWマトリクスデータに示すように、キーワード(KW3)を含む文書は、文書1、文書4、文書nである。
 図7(1)に示すように、KW3対応の文書リンクは、
 先頭ノードをKW3として、以下、文書1、文書4、文書n、ダミー、ダミーの各ノードを接続したリンク構造として設定される。
 なお、各ノードのデータは、図に示すように、
 (1)文書識別子としての文書ID、
 (2)次ノードの鍵、
 (3)次ノードのアドレス
 これらのデータの暗号化データとして構成される。
 例えば図に示す文書4のノードのデータは、
 (1)文書識別子としての文書ID=文書4の文書識別子、
 (2)次ノードの鍵=次ノードである文書nのノードのノードデータの復号に適用する鍵、
 (3)次ノードのアドレス=次ノードである文書nのノードのノード位置(メモリ中の記憶位置)を示すアドレス、
 これらの各データをこのノードに対応する鍵で暗号化した暗号化データにより構成される。
 他のノードも同様のデータ構成を有する。
 なお、先頭ノードであるKW3のノードには、文書IDは含まれず、次ノードの鍵と、次ノードのアドレスが含まれるデータ構成となる。
 データベースには、各キーワード単位でこの文書リンク構造が格納され、キーワード検索を行う場合には、指定キーワードをルートノード(先頭ノード)とする文書リンクを選択して、選択した文書リンクに従って順次、文書IDを抽出する。抽出した文書IDに対応する文書を、指定キーワードを含む文書として抽出することができる。
 この文書リンク構造を用いるデータ検索処理の利点と欠点について、図8を参照して説明する。
 利点としては、特定のキーワードを含む文書を抽出する場合、そのキーワード対応の文書リンクを選択して順次、リンクをたどるのみでキーワードを含む文書を選択できるという点がある。
 先に説明したブルームフィルタやビットストリングのような文書対応インデックスを利用すると、全ての文書に対応するインデックスを全て検証しなければならず、検索時間が長くなるが、この文書リンク構造を利用すれば、特定のキーワードを含む文書リンクが予め設定されているので、キーワードを含まない文書についてのインデックスを確認家する必要がなくなり、検索時間を短縮できる。
 一方、欠点としては、図8に示すように、以下の欠点がある。
 (欠点1)あるキーワード(KW)がp個の文書に含まれるとすると,ある文書がこのKWを含むかを調べるのに、最悪、p回の処理(暗号化データの復号処理と解読処理)が必要になる。
 (欠点2)あるキーワード(KW)を含む文書を全てリストアップするには,必ずp回の処理(暗号化データの復号処理と解読処理)が必要になる。
 このように、文書リンク構造を用いたデータ検索処理においても、直線的な一次元リンクを順次、辿り、各ノード対応データの復号処理と解読処理を順次、実行することが必要となる。
 前述のブルームフィルタやビットストリングのような文書対応インデックスを利用した構成に比較すれば、処理負荷は軽減されるが、例えば、1つの特定のキーワードを持つ文書数が増加すれば、文書リンクのノード数も文章数の増加に伴い比例関係で増加することになり、文書数の増大に伴って処理負荷も比例して増大してしまうという問題がある。
特許第4722620号公報 特許第4347264号公報 特開2011-198079号公報 特開2010-164835号公報
 本開示は、例えば上述の問題に鑑みてなされたものであり、データ検索処理に際して、キーワード等の検索キーを開示することなく、かつ効率的に検索キーを含むデータを検索可能とする情報処理装置、情報処理システム、および情報処理方法、並びにプログラムを提供することを目的とする。
 本開示の第1の側面は、
 文書検索用のキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを生成するデータ処理部を有し、
 前記データ処理部は、
 最上位ノードであるルートノードから最下位ノードであるリーフノードまで、各ノードに複数の下位ノードを分岐接続した木構造を構成する各ノードにノード情報を対応付けたノード情報のリンク構造を有するキーワード単位インデックスを生成し、
 前記リーフノードにはノード情報として、
 (1a)文書個別の文書識別子と、
 (1b)前記文書識別子に対応する文書が特定のキーワードを含むか否かを示すステート情報、
 を格納し、
 リーフノード以外の上位ノードにはノード情報として、
 (2a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (2b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 を格納したキーワード単位インデックスを生成する情報処理装置にある。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、前記ノード情報を、ノード対応のノード鍵で暗号化し、ノード鍵を、木構造において直結する上位ノードのノード情報中に格納する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、前記ノード情報アクセス用のアドレス情報を、木構造において直結する上位ノードのノード情報中に格納する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、前記キーワード単位インデックスのリーフノードのノード情報中に設定された文書識別子に対応する暗号化文書をサーバのデータベースに格納し、該暗号化文書のキーワード検索において、前記サーバに前記キーワード単位インデックスを利用した処理の実行を要求する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、前記キーワード単位インデックスを適用した文書検索処理に際して、前記キーワード単位インデックスのルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記サーバに送信する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、各キーワードに対応するキーワード単位インデックスのルートノードのノード情報のアクセス用アドレスと、復号用鍵を、各キーワードに対応付けたキーワード対応管理データを生成して記憶部に格納する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、前記キーワード単位インデックスのリーフノードのノード情報として記録した文書識別子に対応する文書をデータベースから削除した場合、削除文書対応のリーフノードのノード情報のステート情報を無効値に変更する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、リーフノードとして対応文書の無いダミーノードを設定したキーワード単位インデックスを生成し、ダミーノードを、データベースに対する新規格納文書に対応するノードとして利用可能としたキーワード単位インデックスを生成する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、データベースに対する新規格納文書の増加に応じて、既存のキーワード単位インデックスの木構造の階層を増加させる処理を行なう。
 さらに、本開示の第2の側面は、
 クライアントとのデータ送受信を行う通信部と、
 暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、
 クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
 前記通信部は、
 前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記クライアントから受信し、
 前記データ処理部は、
 前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得して、前記復号用鍵で復号して、
 (a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
 上記(a),(b)、(c)の各情報を取得し、
 前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行する情報処理装置にある。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、クライアントからの検索要求が、特定の指定文書(Docx)が特定のキーワード(KWy)を含むか否かの判定結果を求める検索要求である場合において、ノード情報から取得したステート情報が、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定である場合は、その設定に従って指定文書(Docx)が特定のキーワード(KWy)を含むか否かの判定結果を生成し、前記ステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定であることが確認された場合は、順次、下位ノードのノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が得られた時点で、該ステート情報に従った判定結果を生成する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、処理対象ノードのノード情報に含まれるステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定である場合、前記処理対象ノードに直結する複数の下位ノードから、前記指定文書(Docx)が対応付けられたリーフノードを下位に含む1つの下位ノードを選択して該下位ノードのノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が得られた時点で、該ステート情報に従った判定結果を生成する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、クライアントからの検索要求が、記憶部に格納された文書の各々が特定のキーワード(KWy)を含むか否かの判定結果を求める検索要求である場合において、ノード情報から取得したステート情報が、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定である場合は、その設定に従って、記憶部に格納された文書の各々が特定のキーワード(KWy)を含むか否かの判定結果を生成し、前記ステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定である場合は、順次、下位ノードのノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が得られた時点で、該ステート情報に従った判定結果を生成する。
 さらに、本開示の情報処理装置の一実施態様において、前記データ処理部は、処理対象ノードのノード情報に含まれるステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定である場合、前記処理対象ノードに直結する複数の下位ノードを順次、選択してノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が設定されたノード情報を有するノード以下の下位ノードのノード情報取得処理を行なうことなく、得られたステート情報に従った判定結果を生成する。
 さらに、本開示の第3の側面は、
 データ検索要求を行うクライアントと、クライアントからの要求に応じてデータ連作を実行するサーバを有する情報処理システムであり、
 前記サーバは、
 暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、
 クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
 前記クライアントは、前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記サーバに送信し、
 前記サーバのデータ処理部は、
 前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得して、前記復号用鍵で復号して、
 (a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
 上記(a),(b)、(c)の各情報を取得し、
 前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行する情報処理システムにある。
 さらに、本開示の情報処理システムの一実施態様において、前記クライアントは、暗号化文書と、前記暗号化文書の検索用インデックスであるキーワード単位インデックスを生成して前記サーバに送信し、前記サーバは、前記クライアントから受信する暗号化文書と、キーワード単位インデックスを記憶部に格納する。
 さらに、本開示の第4の側面は、
 情報処理装置において実行する情報処理方法であり、
 前記情報処理装置は、文書検索用のキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを生成するデータ処理部を有し、
 前記データ処理部が、
 最上位ノードであるルートノードから最下位ノードであるリーフノードまで、各ノードに複数の下位ノードを分岐接続した木構造を構成する各ノードにノード情報を対応付けたノード情報のリンク構造を有するキーワード単位インデックスを生成し、
 前記リーフノードにはノード情報として、
 (1a)文書個別の文書識別子と、
 (1b)前記文書識別子に対応する文書が特定のキーワードを含むか否かを示すステート情報、
 を格納し、
 リーフノード以外の上位ノードにはノード情報として、
 (2a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (2b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 を格納したキーワード単位インデックスを生成する情報処理方法にある。
 さらに、本開示の第5の側面は、
 情報処理装置において実行する情報処理方法であり、
 前記情報処理装置は、クライアントとのデータ送受信を行う通信部と、暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
 前記通信部が、
 前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記クライアントから受信し、
 前記データ処理部が、
 前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得して、前記復号用鍵で復号して、
 (a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
 上記(a),(b)、(c)の各情報を取得し、
 前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行する情報処理方法にある。
 さらに、本開示の第6の側面は、
 情報処理装置において情報処理を実行させるプログラムであり、
 前記情報処理装置は、文書検索用のキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを生成するデータ処理部を有し、
 前記プログラムは、前記データ処理部に、
 最上位ノードであるルートノードから最下位ノードであるリーフノードまで、各ノードに複数の下位ノードを分岐接続した木構造を構成する各ノードにノード情報を対応付けたノード情報のリンク構造を有するキーワード単位インデックスを生成する処理を実行させ、
 前記リーフノードにはノード情報として、
 (1a)文書個別の文書識別子と、
 (1b)前記文書識別子に対応する文書が特定のキーワードを含むか否かを示すステート情報、
 を格納し、
 リーフノード以外の上位ノードにはノード情報として、
 (2a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (2b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 を格納したキーワード単位インデックスを生成させるプログラムにある。
 さらに、本開示の第7の側面は、
 情報処理装置において情報処理を実行させるプログラムであり、
 前記情報処理装置は、クライアントとのデータ送受信を行う通信部と、暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
 前記通信部が、
 前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記クライアントから受信し、
 前記プログラムは、前記データ処理部に、
 前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得する処理と、前記復号用鍵での復号処理を実行させて、
 (a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
 上記(a),(b)、(c)の各情報を取得させ、
 前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行させるプログラムにある。
 なお、本開示のプログラムは、例えば、様々なプログラム・コードを実行可能な情報処理装置やコンピュータ・システムに対して例えば記憶媒体によって提供されるプログラムである。このようなプログラムを情報処理装置やコンピュータ・システム上のプログラム実行部で実行することでプログラムに応じた処理が実現される。
 本開示のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
 本開示の一実施例によれば、キーワード検索の適用キーワードの漏えいを防止するとともに、効率的な検索が実現される。
 具体的には、サーバは暗号化文書と、検索に適用する木構造型リンク構造のキーワード単位インデックスを格納する。クライアントはキーワード単位インデックスの最上位ノードであるルートノードのアドレスと復号用鍵をサーバに送信する。サーバは、アドレスに従ってキーワード単位インデックスのルートノードのノード情報を取得して復号用鍵で復号して、(a)下位ノードに含まれるリーフノード全ての文書識別子と、(b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、全て含まないか、混在するか、これらを判別可能としたステート情報等を取得し、ステート情報の設定に基づいて、検索結果を効率的に取得する。
 上記構成により、キーワード検索の適用キーワードの漏えいを防止するとともに、効率的な検索が実現される。
暗号化データをデータベースに格納して利用するシステム構成の一例について説明する図である。 データベース格納文書の検索処理において、検索キーワードの漏えいを防止した検索例について説明する図である。 データベース格納文書の検索処理において、検索キーワードの漏えいを防止した検索例について説明する図である。 ブルームフィルタを文書対応インデックスとして適用したデータ検索処理例について説明する図である。 ビットストリングを文書対応インデックスとして適用したデータ検索処理例について説明する図である。 文書対応インデックス、およびキーワード対応文書リンク方式を利用した構成について説明する図である。 キーワード対応文書リンク方式を利用した文書検索処理について説明する図である。 キーワード対応文書リンク方式を利用した文書検索処理について説明する図である。 本開示の処理を行なうシステム構成の一例について説明する図である。 本開示のデータ検索に適用するためのキーワード単位インデックスの木構造の一例について説明する図である。 本開示のデータ検索に適用するためのキーワード単位インデックスのノード情報の構成例について説明する図である。 本開示のデータ検索に適用するためのキーワード単位インデックスのノード情報の構成例について説明する図である。 クライアントからサーバのデータベースに対するデータ格納処理の処理シーケンスを説明する図である。 本開示のデータ検索に適用するキーワード単位管理データのデータ構成例について説明する図である。 クライアントが生成するキーワード単位インデックスの生成処理の詳細シーケンスについて説明するフローチャートを示す図である。 サーバのデータベースに格納した文書に対するキーワードを用いたデータ検索処理のシーケンス例について説明する図である。 特定文書が特定キーワードを含むか否かを判定する処理を実行する手順について説明するフローチャートを示す図である。 特定文書が特定キーワードを含むか否かを判定する処理の具体例について説明する図である。 特定文書が特定キーワードを含むか否かを判定する処理の具体例について説明する図である。 特定キーワードを含むデータベース格納文書の抽出処理を実行する手順について説明するフローチャートを示す図である。 特定キーワードを含むデータベース格納文書の抽出処理を実行するために利用するテーブル構成について説明する図である。 特定キーワードを含むデータベース格納文書の抽出処理の具体例について説明する図である。 k分木構成を持つキーワード単位インデックスの生成処理シーケンスについて説明するフローチャートを示す図である。 格納文書の削除に伴うキーワード単位インデックスの更新処理例について説明する図である。 格納文書の増加に備えたダミーノードを持つキーワード単位インデックスの構成例について説明する図である。 格納文書の増加に伴うキーワード単位インデックスの更新処理例について説明する図である。 クライアントやサーバ等の情報処理装置のハードウェア構成例について説明する図である。
 以下、図面を参照しながら本開示に係る情報処理装置、情報処理システム、および情報処理方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。
 1.情報処理システムの構成例について
 2.キーワード単位インデックスの具体例について
 3.クライアントのサーバに対するデータ格納処理シーケンスについて
 4.キーワード単位インデックスの生成シーケンスについて
 5.データ検索処理について
 5-1.データ検索処理の基本シーケンス
 5-2.指定文書(Docx)が特定のキーワード(KWy)を含むか否かを確認する処理の詳細について
 5-3.特定のキーワード(KWy)を含むデータベース格納文書を全て抽出する処理について
 6.3分木以上の多分木構成を持つキーワード単位インデックスについて
 7.データベース格納文書の削除、追加に伴うキーワード単位インデックスの更新処理について
 7-1.データベース格納文書の削除処理に伴うインデックス更新処理について
 7-2.予めダミーノードを設定したキーワード単位インデックスの構成について
 7-3.文書追加に伴うキーワード単位インデックス木構造の階層構成の追加処理について
 8.クライアントおよびサーバを構成する情報処理装置の構成例について
 9.本開示の構成のまとめ
  [1.情報処理システムの構成例について]
 まず、図9を参照して本開示の情報処理システムの構成例について説明する。図9には、ネットワーク150を介して接続されたユーザ端末である情報処理装置(クライアント)100と、大容量記憶手段としてのデータベースを備えたサーバ200を示している。
 サーバ200は、クラウド型のサーバであり、様々なユーザ端末からアクセス可能である。
 各ユーザの情報処理装置は、サーバ200のデータベースから一部のデータ記憶領域を占有領域として借り受けて様々なデータを格納する。さらに必要に応じてデータ検索を行い、検索結果データ、例えば特定のキーワードを含む文書の抽出結果などを得ることができる。
 なお、図9には、ユーザ端末として1つの情報処理装置(クライアント)100を示しているが、これはユーザ端末の代表例を示しているものであり、サーバ200には、図示しないその他の数多くのユーザ端末がアクセス可能である。
 ユーザ端末であるクライアントには、例えばPCや携帯端末など、様々な通信端末が含まれる。
 本開示の情報処理システムでは、サーバ200のデータベースには、情報処理装置(クライアント)100から送信される多数の暗号化文書(Doc1,Doc2,Doc3・・・)が格納される。さらに、これらの暗号化文書の検索に適用するためのキーワード単位インデックス(KW1-index,KW2-index・・・)が格納される。
 暗号化文書(Doc1,Doc2,Doc3・・・)は、ユーザ側の情報処理装置(クライアント)100において暗号化され、ネットワーク150を介してサーバ200に送信してデータベースに格納する。
 キーワード単位インデックスも、ユーザの情報処理装置(クライアント)100側で生成し、ネットワーク150を介してサーバ200に送信してデータベースに格納する。
 サーバ200のデータベースに格納された文書の検索を実行する場合、ユーザの情報処理装置(クライアント)100は、検索に適用するキーワードを決定する。次に、決定したキーワードに対応するキーワード単位インデックスを利用したデータ検索を実行するための情報をサーバ200に送信する。
 サーバ200は、ユーザの情報処理装置(クライアント)100から受信した情報であるルートノードアドレスとルートノード鍵を適用してキーワード単位インデックスを適用した処理を実行して、検索結果を生成して情報処理装置(クライアント)100に提供する。なお、クライアントからサーバに送信されるキーワード単位インデックスを利用したデータ検索を実行するための情報には、例えばルートノードアドレスとルートノード鍵等が含まれる。このキーワード単位インデックスを利用したデータ検索処理の詳細については後述する。
  [2.キーワード単位インデックスの具体例について]
 次に、データベースに格納した暗号化文書(Doc1,Doc2,Doc3・・・)の検索に適用するインデックス情報であるキーワード単位インデックスの具体的構成例について図10以下を参照して説明する。
 図10は、ある1つのキーワード(KWn)に対応するキーワード単位インデックス情報の構成例を示す図である。
 キーワード単位インデックスは、図10に示すような木構造(ツリー構造)、すなわち、複数のノード階層からなり、1つの上位ノードに複数の下位ノードを接続した多分木構成によって示すことができる。
 なお、図10に示す例は、親ノードの直下に2つの子ノードを設定した2分木構成であるが、2分木に限らず、3以上の多分木構成としてもよい。
 この図10に示す木構造の最上位ノードを頂点ノード(ルートノード)301と呼び、最下位ノードを葉ノード(リーフノード)303と呼ぶ。頂点ノード(ルートノード)301と葉ノード(リーフノード)303の間のノードを中間ノード302と呼ぶ。
 これらの各ノードには、各々ノード固有のノード情報が対応付けられる。
 なお、図の各ノード位置に示す(1,1)~(4,8)の各データは、説明のために付記した情報であり、ノード位置を示すノード位置情報(x,y)である。
 ノード位置情報(x,y)中、xは木構造中の最上位層からの層レベル位置を示し、yは同一層レベル中、左から何番目のノードであるかを示す値である。
 サーバ200のデータベースに格納される文書の各々は、木構造の末端(最下層)ノードである葉ノード(リーフノード)303の各々に対応付けられる。
 頂点ノード301~葉ノード303の全てのノードには、図に示すように、文書IDと、ステート等の情報を含むノード情報が設定される。
 例えば、葉ノード303のノード情報には、その葉ノードが対応する1つの文書を示す文書識別子としての文書IDが格納される。
 図に示す葉ノード303中の[1]~[8]の各数値が文書IDを示す。
 頂点ノード301と、中間ノード302のノード情報には、文書IDとして、各ノードの下位ノードとして設定された葉ノード対応の文書IDの範囲情報が格納される。
 例えば、ノード位置(3,1)の中間ノードの下位には、文書ID=1~2の葉ノードが設定されている。従って、この中間ノードのノード情報中の文書IDは、文書ID=1~2となる。
 また、ノード位置(2,1)の中間ノードの下位には、文書ID=1~4の葉ノードが設定されている。従って、この中間ノードのノード情報中の文書IDは、文書ID=1~4となる。
 同様に、ノード位置(1,1)の頂点ノード301の下位には、文書ID=1~8の全ての葉ノードが設定されている。従って、この頂点ノードのノード情報中の文書IDは、文書ID=1~8となる。
 各ノードのノード情報には、文書IDの他、ステート情報が格納される。ステート情報は、以下の3つのいずれかの情報である。
 (1)○:自ノードまたは下位ノードに対応する文書は全てキーワード(KW)を含む。
 (2)×:自ノードまたは下位ノードに対応する文書は全てキーワード(KW)を含まない。
 (3)△:自ノードまたは下位ノードに対応する文書にはキーワード(KW)を含むものと含まないものが存在する。
 ステート情報には、これら○、×、△の3種類のいずれかの情報が設定される。
 なお、これら○、×、△の3種類のステート情報は、具体的には、例えば2ビットデータとして設定可能である。すなわち、
 ○=11
 ×=00
 △=01
 このような2ビットデータからなるビット情報として設定することが可能である。
 各ノードに設定されるノード情報には、上述した文書ID、ステート情報の他にもいくつかの情報が含まれる。ノード情報の構成例について図11を参照して説明する。
 各ノードに対応付けた情報であるノード情報は、図11に示すように、以下の情報を有する。
 (1)文書ID
 (2)ステート情報
 (3)左の子ノードの鍵
 (4)左の子ノードのアドレス
 (5)右の子ノードの鍵
 (6)右の子ノードのアドレス
 ノード情報は、上記(1)~(6)の各データを含み、これらデータに対して、各ノードに対応絵して設定した鍵(ノード鍵)で暗号化したデータとして設定される。
 (1)文書ID、(2)ステート情報については、図10を参照して説明した通りである。
 (3)左の子ノードの鍵とは、自ノードに直結した下位ノード中の左側の子ノードのノード情報の暗号化に適用した鍵(ノード鍵)である。このノード鍵は、左側の子ノードのノード情報の復号に適用される。
 (4)左の子ノードのアドレスとは、自ノードに直結した下位ノード中の左側の子ノードのノード情報のアクセス情報としての格納位置を示すアドレスである。例えば、キーワード単位インデックスデータを記録するデータ領域の先頭からのオフセット情報などによって構成される。このアドレスを参照して自ノードに直結した下位ノード中の左側の子ノードのノード情報を取得することができる。
 (5)右の子ノードの鍵とは、自ノードに直結した下位ノード中の右側の子ノードのノード情報の暗号化に適用した鍵(ノード鍵)である。このノード鍵は、右側の子ノードのノード情報の復号に適用される。
 (6)右の子ノードのアドレスとは、自ノードに直結した下位ノード中の右側の子ノードのノード情報のアクセス情報としての格納位置を示すアドレスである。このアドレスを参照して自ノードに直結した下位ノード中の右側の子ノードのノード情報を取得することができる。
 これら(1)~(6)の各データは、ノード対応のノード鍵で暗号化された暗号化データとして設定される。
 なお、図10に示す木構造から明らかなように、木構造中の最下位ノードである葉ノード(リーフノード)には、子ノードが設定されない。これらの葉ノードのノード情報中の子ノードの鍵とアドレスデータには、例えばオール0等のダミーデータを格納する。
 このように、キーワード単位インデックスは、木構造の各ノードに対応付けられたノード情報の集合として構成される。
 1つのキーワードに対応するキーワードインデックスの情報の全体構成例を図12に示す。
 図12は、図10に示す8つのリーフノードを有する4階層の木構造、すなわち、ノード(1,1)~(4,8)の各々のノード情報から構成されるキーワード単位インデックスの全体データの例を示す図である。
 例えば頂点ノード(ルートノード)であるノード位置(1,1)のノードは、図12に示すように、以下のノード情報を有する。
 Enc(Kn11,(文書ID=1-8)||(左の子ノードの鍵))||(左の子ノードのアドレス)||(右の子ノードの鍵))||(右の子ノードのアドレス))
 なお、上記式において、
 Kn11は、ノード位置(1,1)のノードのノード鍵である。
 a||bは、データaとデータbの連結データを示す。
 Enc(a,b)は、データbに対する鍵aによる暗号化データであることを示す。
 すなわち、上記のノード情報を示す式は、(文書ID)~(右の子ノードのアドレス)から構成される連結データに対して、ノード鍵Kn11で暗号化したデータであることを示す。
 その他のノード位置(2,1)~(4,8)のノードも、それぞれ同様の連結データに対して、各ノードのノード鍵(Kn21~Kn48)を適用して暗号化されたノード情報を有する。
 これら木構造を構成する全てのノードのノード情報の集合を、1つのキーワードに対応するキーワード単位インデックスとして生成する。
 なお、前述したように、このキーワード単位インデックスは、図9に示すユーザ側の情報処理装置(クライアント)100において生成し、サーバ200に対して送信され、サーバ200のデータベースに暗号化文書とともに格納される。
  [3.クライアントのサーバに対するデータ格納処理シーケンスについて]
 次に、図13以下を参照して、クライアントからサーバに対するデータ格納処理シーケンスについて説明する。
 図13は、ユーザの情報処理装置であるクライアント100から、サーバ200のデータベースに対して、暗号化文書やキーワード単位インデックスを送信して格納するデータ格納処理シーケンスの一例を示す図である。
 左側にクライアント100、右側にサーバ200を示している。以下、図に示すステップ順に各処理の詳細を説明する。
  (ステップS101)
 まず、クライアント100は、ステップS101において、サーバ200のデータベースに格納する文書に含まれるワードから検索キーとして設定するキーワードを決定し、キーワード単位のインデックス、すなわち、図10~図12を参照して説明したキーワード単位インデックスを生成する。
 キーワード単位インデックスは、例えば図10に示す木構造の各ノードに対応するノード情報によって構成されるデータであり、具体的には、図12に示すような複数のノード情報の集合データとして構成される。
 キーワード単位インデックスは、設定したキーワード各々について生成する。例えばキーワードとして、n個のキーワード:KW1、KW2、KW3・・・KWnを決定した場合、各キーワードに対応するn個のキーワード単位インデックスを生成する。
 なお、前述したようにキーワード単位インデックスは、複数のノード情報の暗号化データの集合として構成される。このキーワード単位インデックスに含まれるノード情報を取得する際には、初期情報として、頂点ノード(ルートノード)のノード情報のアドレスと、頂点ノード(ルートノード)のノード情報の暗号鍵が必要となる。
 クライアントは、キーワード単位インデックスの生成に際して、生成したキーワード単位インデックスの処理に必要となる初期情報を予めキーワード対応管理データとして生成し、クライアント内の記憶部に格納する。
 図14にクライアントの生成するキーワード対応管理データ例を示す。図14に示すように、キーワード対応管理データには、ユーザの決定したp個のキーワード(KW1,KW2,KW3,・・・KWp)に対応付けて、各キーワードに対応するキーワード単位インデックスのルートノードのアドレスと、ルートノードのノード情報の暗号化に適用されたルートノード鍵が記録される。
 例えばユーザが決定したキーワード(KW1)に対応するキーワード単位インデックス、すなわち図10~図12を参照して説明した構成を持つキーワード単位インデックスを生成した場合、キーワード(KW1)に対応する情報として以下のデータが記録される。
 (a)図10に示す木構造の頂点のノード、すなわちルートノードのノード情報の記録位置を示すルートノードアドレス、
 (b)図10に示す木構造の頂点のノード、すなわちルートノードのノード情報の暗号化に適用したルートノード鍵、
 これらのデータを、キーワード(KW1)対応の管理データとして記録する。
 その他のキーワード(KW2~KWp)についても同様であり、各キーワードに対応するルートノードアドレスと、ルートノード鍵を記録する。
 この図14に示すキーワード対応管理データは、ユーザ側の情報処理装置(クライアント)100内のメモリに格納される。各キーワードを適用したデータ検索を行う場合に、ユーザ側の情報処理装置(クライアント)100からサーバ200に送信される。この処理については、後段で詳細に説明する。
 図13のシーケンス図に戻り、クライアント100によるサーバ200のデータベースに対するデータ格納処理のシーケンスについての説明を続ける。
  (ステップS102)
 ステップS101において、図10~図12を参照して説明したキーワード単位インデックスの生成と、図14に示すキーワード対応管理データを生成してクライアント100のメモリに格納する処理が終了すると、クライアント100はステップS102の処理を実行する。
 ステップS102では、サーバ200のデータベースに格納する文書を暗号化して暗号化文書(Doc1,Doc2,・・・)を生成する。文書の暗号化に適用する鍵は、クライアント100の生成する任意の鍵でよい。ただし、暗号鍵は、後日、データ検索によってサーバ200のデータベースから取得した暗号化文書の復号に適用することになるため、各文書の識別子(文書ID)と対応付けてクライアント100のメモリに格納しておくのが好ましい。
  (ステップS103)
 ステップS101におけるキーワード単位インデックスの生成と、ステップS102における暗号化文書の生成が完了すると、クライアント100は、ステップ103の処理を実行する。
 ステップS103において、クライアント100は、ステップS102で生成した暗号化文書と、ステップS101で生成したキーワード単位インデックスをサーバ200に送信する。
  (ステップS104)
 ステップS104において、サーバ200は、クライアント100から受信した暗号化文書とキーワード単位インデックスをデータベースに格納する。
 図13に示すステップS101~S104の一連の処理により、暗号化文書と、キーワード単位インデックスがサーバ200のデータベースに格納されることになる。
 なお、ユーザは、逐次、新たな暗号化文書を作成してサーバ200のデータベースに追加格納することが可能である。また、サーバ200のデータベースに格納された暗号化文書を任意のタイミングで削除することもできる。
 さらに、キーワード単位インデックスについても文書の追加や削除等の処理に併せて、適宜更新する処理を行なうことが可能である。このキーワード単位インデックスの更新処理の詳細については後述する。
  [4.キーワード単位インデックスの生成シーケンスについて]
 次に、図13のステップS101において、クライアント100が生成するキーワード単位インデックスの生成処理の詳細シーケンスについて、図15に示すフローチャートを参照して説明する。
 図15のフローチャートに示す処理は、ユーザの情報処理装置(クライアント)100において実行する。情報処理装置100は、図15のフローチャートに従った処理ステップを規定したプログラムをメモリに格納している。情報処理装置100のデータ処理部、すなわちプログラム実行機能を有するCPU等を備えたデータ処理部において、プログラムを実行して図15に示すフローチャートに従った処理を実行する。
 なお、図15に示すフローは、1つのキーワード(KWx)に対応する1つのキーワード単位インデックスの生成処理シーケンスを示すフローである。複数のキーワード(KW1,KW2・・・)を設定した場合、キーワード(KW1,KW2・・・)ごとに、図15に示すフローに従った処理を実行して、各キーワードに対応するキーワード単位インデックスを生成することになる。
 以下、フローに示す各ステップの処理について、順次、説明する。
  (ステップS201)
 まず、ステップS201において、例えば図10に示すような木構造の新規子ノードとして、データベースに格納する各文書に対応する葉ノード(リーフノード)を設定し、設定した葉ノード(リーフノード)に対応するノード情報を生成する。
 なお、ノード情報は、先に図11を参照して説明したデータ構成を有する。
 葉ノード(リーフノード)に対応するノード情報は、例えば以下のように設定する。
 文書IDは、各葉ノード対応の文書の文書識別子を設定する。
 葉ノード(リーフノード)対応文書が、キーワード(KWx)を含む場合、ステートを○とする。
 葉ノード(リーフノード)対応文書が、キーワード(KWx)を含まない場合、ステートを×とする。
 なお、リーフノードには子ノードは設定されないので、子ノードのアドレスと鍵データ領域には、例えばオール0等のダミーデータを格納する。
 データベース格納文書各々に対応する葉ノードのノード情報を生成したら、ステップS202に進む。
 (ステップS202)
 ステップS202では、以下の処理を実行する。
 ステップS201でノード情報を生成した子ノードから、各ノード対応の文書IDの順番に2つのノード単位で子ノードの組み(ペア)を選択し、子ノード組み(ペア)単位で親ノードを設定し、設定した親ノードのノード情報中の文書IDとステート情報を設定する。
 親ノードのノード情報中の文書IDとステート情報は、以下のように設定する。
 文書IDは、親ノードの下位の葉ノード(リーフノード)に対応する文書IDを全て含む範囲に設定する。
 ステート情報は以下のように設定する。
 子ノードペアステート=(○,○)→親ノードステート=○
 子ノードペアステート=(○,×)→親ノードステート=△
 子ノードペアステート=(×,×)→親ノードステート=×
 子ノードペアステート=(○,△)→親ノードステート=△
 子ノードペアステート=(×,△)→親ノードステート=△
 子ノードペアステート=(△,△)→親ノードステート=△
  (ステップS203)
 次に、ステップS203において、ステップS202で生成した親ノードに直結する左右の子ノード各々の暗号鍵を生成する。すなわち、子ノードのノード情報を暗号化する子ノード各々のノード鍵を生成する。この暗号鍵は、クライアントが生成する任意の鍵としてよい。
 さらに、生成したノード鍵で、子ノードのノード情報を暗号化する。
 次に、生成したノード鍵を、子ノードに直結する親ノードのノード情報として格納する。
  (ステップS204)
 次に、ステップS204において、ステップS202で生成した親ノードに直結する左右の子ノードのノード情報記録位置を示すアドレスを親ノードのノード情報として格納する。
 なお、アドレスは、例えばキーワード単位インデックスを記録するデータ領域のデータ先頭からのオフセット情報などを適用することが可能である。
 また、ステップS202からS204は、同一階層の子ノードすべてについて実施する。
  (ステップS205)
 次に、キーワード単位インデックス生成処理において、ルートノードに到達したか否かを判定する。これは、具体的には、ステップS202において生成した親ノードが1つのみとなったか否か、すなわち、ルートノードに相当する唯一の親ノードとなったか否かを判定する処理として実行される。
 ステップS202で生成した親ノードが唯一の親ノードとなり、ルートノードに到達したと判定した場合は、ステップS205の判定がYesとなり、ステップS207に進む。
 一方、ステップS202で生成した親ノードが唯一の親ノードではなく、複数の親ノードである場合は、ルートノードに到達していないと判定し、ステップS205の判定がNoとなり、ステップS206に進む。
  (ステップS206)
 ステップS205における判定がNoの場合、すなわち、ステップS202で生成した親ノードが唯一の親ノードではなく、複数の親ノードである場合は、ルートノードに到達していないと判定し、ステップS206に進む。
 ステップS206では、ステップS202で生成した親ノードを新規子ノードとして、新規子ノードを処理対象としてステップS202以下の処理を実行する。
 このようにして、例えば図10に示す木構造が、再下段の葉ノード(リーフノード)から、順次、上層に向かって構築される。最終的に、ステップS202で生成した親ノードが唯一の親ノードとなる。この結果、ステップS205の判定処理、すなわち、「ルートノードに到達?」の判定処理がYesとなり、ステップS207に進む。
  (ステップS207)
 最後に、ステップS207において、ルートノードのノード情報を暗号化する暗号鍵(ルートノード鍵)を生成し、ルートノードのノード情報を生成したルートノード鍵で暗号化する。
 これらの処理を実行することで、例えば図10を参照して説明した木構造を持つキーワード単位インデックスが生成される。具体的には、キーワード単位インデックスは、図12に示すノード対応のノード情報の暗号化データの集合として構成される。
 図13のシーケンス図のステップS101では、この図15に示すフローチャートに従った処理を実行して、キーワード単位インデックスを生成する。
 なお、前述したように、キーワード単位インデックスは、1つのキーワードに対して1つ生成する。従って、クライアント側ユーザが複数のキーワードを設定した場合は、設定したキーワード各々について、図15に示すフローチャートに従った処理を実行し、キーワード数と等しい数のキーワード単位インデックスを生成する。
  [5.データ検索処理について]
 次に、図16以下を参照して、サーバ200のデータベースに格納したデータをクライアント100が検索する場合の処理について説明する。
  [5-1.データ検索処理の基本シーケンス]
 図16は、データ検索処理を行なう場合のクライアント100と、サーバ200との基本的なシーケンスを示す図である。
 各ステップの処理について、順次、説明する。
  (ステップS301)
 ステップS301において、ユーザ側の情報処理装置(クライアント)100は、文書検索に適用するキーワードを決定する。
 次に、決定したキーワードに対応するキーワード単位インデックスのルートノードアドレスと、ルートノード鍵を取得する。
 これらルートノードアドレスと、ルートノード鍵は、先に図14を参照して説明したキーワード対応管理データから取得する。
  (ステップS302)
 次に、クライアント100は、ステップS301において取得した検索に適用するキーワードに対応するルートノードアドレスとルートノード鍵をサーバに送信する。
 なお、このデータ送信に際して、どのような検索を行うかの検索態様情報も併せて送信する。
 検索態様情報とは、たとえば、以下のような検索態様のうちの、どの検索を行うかを示す情報である。
 (検索態様1)データベース格納文書(Docx)を指定して、この指定文書(Docx)が特定のキーワード(KWy)を含むか否かを確認する処理。
 (検索態様2)特定のキーワード(KWy)を含むデータベース格納文書を全て抽出する処理。
 例えば、これらのどちらの検索処理を行なうかの情報をサーバに送信する。なお、上記(検索態様1)の検索を行う場合は、指定文書の文書識別子(文書ID)もサーバに送信する。
  (ステップS303)
 ステップS303において、サーバ200は、クライアント100から受信したルートノードアドレスに従って、キーワード単位インデックスのルートノードのノード情報を取得する。
 取得したルートノードのノード情報は暗号化データであり、この暗号化データを、クライアントから受信したノード鍵で復号して、ルートノードのノード情報を取得する。
 なお、前述したように、ノード情報には、先に図11を参照して説明した情報が含まれる。すなわち、
 (1)文書ID
 (2)ステート情報
 (3)左の子ノードの鍵
 (4)左の子ノードのアドレス
 (5)右の子ノードの鍵
 (6)右の子ノードのアドレス
 これらの情報が含まれる。
  (ステップS304)
 次に、サーバ200は、クライアントから受信した検索態様情報に従って、指定された検索態様に応じた検索処理を実行する。検索処理は、キーワード単位インデックスからのノード情報取得処理として実行する。
 なお、この検索処理は、検索態様に応じた異なる処理となる。この検索処理の具体的な処理シーケンスについては、図17、図18に示すフローチャートを参照して後段で説明する。
  (ステップS305)
 次にサーバ200は、ステップS304の検索処理によって得られた検索結果をクライアント100に送信する。
 クライアント側で設定したキーワードに基づくデータ検索処理の基本シーケンスは、この図16に示すシーケンスに従って実行される。
 データ検索処理は、クライアントからキーワード自体を送信することなく、キーワード単位インデックスのルートノードアドレスと、ルートノード鍵を送信し、サーバ200がこれらのデータを適用してキーワード単位インデックスを処理して行われる。
 サーバ200の実行する処理は、クライアントが指定したデータ検索態様に応じて異なる処理となる。
 以下、フローチャートを参照して、以下の2つのデータ検索処理の具体的手順について説明する。
 (検索処理例1)データベース格納文書(Docx)を指定して、この指定文書(Docx)が特定のキーワード(KWy)を含むか否かを確認する処理。
 (検索処理例2)特定のキーワード(KWy)を含むデータベース格納文書を全て抽出する処理。
  [5-2.指定文書(Docx)が特定のキーワード(KWy)を含むか否かを確認する処理の詳細について]
 まず、図17に示すフローチャートを参照して、データベース格納文書(Docx)を指定して、この指定文書(Docx)が特定のキーワード(KWy)を含むか否かを確認する処理の具体的シーケンスについて説明する。
 なお、この図17に示す処理は、サーバ側で実行する処理である。サーバは、クライアントから以下のデータを受領しているものとする。
 (a)キーワード(KWy)に対応するキーワード単位インデックスにおけるルートノードのアドレス、
 (b)キーワード(KWy)に対応するキーワード単位インデックスにおけるルートノードに対応するノード情報の暗号鍵(ルートノード鍵)、
 (c)指定文書(Docx)の文書識別子(文書ID)
 サーバは、上記(a)~(c)の各データを受領して、図17に示すフローに従った処理を実行する。なお、サーバは、図17に示すフローに従った処理を実行するためのプログラムをメモリに格納し、このプログラムを、CPUを有するデータ処理部において実行する。
 以下、図17に示すフローの各ステップの処理について、順次、説明する。
  (ステップS401)
 まず、サーバはステップS401において、クライアントから受信したキーワード(KWy)に対応するキーワード単位インデックスのルートノードアドレスに基づいて、ルートノードの暗号化ノード情報を取得する。
 さらに、取得した暗号化ノード情報に対して、クライアントから受信した鍵(ルートノード鍵)を適用した復号処理を実行し、ノード情報を取得する。
  (ステップS402)
 次に、ステップS402において、ステップS401で取得したキーワード(KWy)に対応するキーワード単位インデックスのルートノードのノード情報に含まれるステート情報を確認する。
 先に説明したように、ステート情報は、以下に示すいすれかの情報を示すデータである。
 (1)○:自ノードまたは下位ノードに対応する文書は全て特定のキーワード(KWy)を含む。
 (2)×:自ノードまたは下位ノードに対応する文書は全て特定のキーワード(KWy)を含まない。
 (3)△:自ノードまたは下位ノードに対応する文書には特定のキーワード(KWy)を含むものと含まないものが存在する。
 ノード情報中のステート情報には、これら○、×、△の3種類のいずれかの情報が設定される。
  (ステップS403)
 ステップS403は、取得したノード情報中のステート情報に従って処理を変更するステップである。
 ステート情報=△の場合は、ステップS404に進む。
 ステート情報=○の場合は、ステップS405に進む。
 ステート情報=×の場合は、ステップS406に進む。
  (ステップS404)
 ステップS404は、ステップS403において取得したノード情報中のステート情報が△の場合、すなわち、自ノードまたは下位ノードに対応する文書に特定のキーワード(KWy)を含むものと含まないものが存在する場合に実行する処理である。
 ステップS404では、取得したノード情報に対応するノードの直下の子ノードのうち、文書x(Docx)を下位の葉ノード(リーフノード)に含む子ノードを選択し、選択した子ノードのノード情報を復号する。
 ステップS404の処理の実行後は、ステップS402に戻り、ステップS404において取得した子ノードのノード情報に対して、ステップS402の処理、すなわちノード情報中のステート情報を確認する処理を行なう。
  (ステップS405)
 ステップS405は、ステップS403において取得したノード情報中のステート情報が○の場合、すなわち、自ノードまたは下位ノードに対応する文書は全て特定のキーワード(KWy)を含む場合に実行する処理である。
 ステップS403で、この判定がなされた場合、ステップS405では、文書x(Docx)はキーワード(Kwy)を含むと判定し、処理を終了する。
 ステップS405の処理が実行された場合の処理結果は、
 「文書x(Docx)はキーワード(Kwy)を含む」
 上記の結果となり、この結果がサーバ200からクライアント100に通知される。
  (ステップS406)
 ステップS406は、ステップS403において取得したノード情報中のステート情報が×の場合、すなわち、自ノードまたは下位ノードに対応する文書は全て特定のキーワード(KWy)を含まない場合に実行する処理である。
 ステップS403で、この判定がなされた場合、ステップS406では、文書x(Docx)はキーワード(Kwy)を含まないと判定し、処理を終了する。
 ステップS406の処理が実行された場合の処理結果は、
 「文書x(Docx)はキーワード(Kwy)を含まない」
 上記の結果となり、この結果がサーバ200からクライアント100に通知される。
 このように、ステップS405、またはステップS406の処理が実行されると、処理が終了し、クライアントの指定した文書x(Docx)がキーワードy(KWy)を含むか否かの判定結果が生成されてクライアントに通知される。
 具体的な処理シーケンスについて、図18に示す木構造を参照して説明する。
 図18の木構造はキーワードy(KWy)に対応するキーワード単位インデックスの木構造であるとし、ノード位置(4,4)の文書4が、クライアントが指定した文書であるとする。すなわち、クライアントは、文書4がキーワードy(KWy)を含むか否かの判定処理結果を求めているとする。
 なお、図18に示す木構造には、文書4のステート情報として○が設定されており、文書4はキーワードy(KWy)を含む文書である。
 しかし、この情報は、暗号化データであり、すぐには得られない。
 まず、サーバは、クライアントから受信したルートノードアドレスに従って、図18に示すルートノード(1,1)の暗号化ノード情報を取得する。
 さらに、クライアントから取得したルートノードの暗号鍵を適用して復号処理を実行してルートノード(1,1)のノード情報を取得する。
 さらに、ルートノード(1,1)のノード情報のステート情報を確認する。
 このステート情報は△であることが確認される。
 この一連の処理は、図18の(a)に示すように、図17のフローのステップS401~S403の各処理に対応する。すなわち、図17のフローのステップS401,S402の処理,さらに、ステップS403の判定においてノード情報中のステート情報が△と判定され、ステップS404に進む処理に相当する。
 ステップS404では、文書x(Docx)を下位ノードに含む子ノードを選択してその子ノードのノード情報を復号する処理を行なう。
 図18の木構造において、文書x=文書4は、ノード位置(1,1)のルートノードに直結する2つの子ノード中、ノード位置(2,1)の子ノード側の下位ノードに含まれている。
 従って、ステップS404では、ノード位置(2,1)の子ノードを選択する。
 この処理が、図18の(b)に示す処理である。
 さらに、選択されたノード位置(2,1)の子ノードのノード情報を復号して、ノード情報を取得し、さらに、取得したノード情報のステート情報を確認する。
 このステート情報は△であることが確認される。
 この一連の処理は、図18の(c)に示す処理である。
 すなわち、図17のフローのステップS404,S402の処理,さらに、ステップS403の判定においてノード情報中のステート情報が△と判定され、ステップS404に進む処理に相当する。
 ステップS404では、文書x(Docx)を下位ノードに含む子ノードを選択してその子ノードのノード情報を復号する処理を行なう。
 図18の木構造において、文書x=文書4は、ノード位置(2,1)のノードに直結する2つの子ノード中、ノード位置(3,2)の子ノード側の下位ノードに含まれている。
 従って、ステップS404では、ノード位置(3,2)の子ノードを選択する。
 この処理が、図18の(d)に示す処理である。
 さらに、選択されたノード位置(3,2)の子ノードのノード情報を復号して、ノード情報を取得し、さらに、取得したノード情報のステート情報を確認する。
 このステート情報は△であることが確認される。
 この一連の処理は、図18の(e)に示す処理である。
 すなわち、図17のフローのステップS404,S402の処理,さらに、ステップS403の判定においてノード情報中のステート情報が△と判定され、ステップS404に進む処理に相当する。
 ステップS404では、文書x(Docx)を下位ノードに含む子ノードを選択してその子ノードのノード情報を復号する処理を行なう。
 図18の木構造において、文書x=文書4は、ノード位置(3,2)のノードに直結する2つの子ノード中、ノード位置(4,4)の子ノード側の下位ノードである。
 従って、ステップS404では、ノード位置(4,4)の子ノードを選択する。
 この処理が、図18の(f)に示す処理である。
 さらに、選択されたノード位置(4,4)の子ノードのノード情報を復号して、ノード情報を取得し、さらに、取得したノード情報のステート情報を確認する。
 このステート情報は○であることが確認される。
 この一連の処理は、図18の(g)に示す処理である。
 すなわち、図17のフローのステップS404,S402の処理,さらに、ステップS403の判定においてノード情報中のステート情報が○と判定され、ステップS405に進む処理に相当する。
 このステップS405に進むと、文書x(Docx)がキーワードy(KWy)を含む文書であると判定され、処理が終了する。
 この図18に示す処理では、木構造のルートノード(1,1)のステートが△、第2層の選択ノード(2,1)のステートも△、第3層の選択ノード(3,2)のステートも△である。このようなステート設定の場合は、結果として、指定文書(Doc4)に対応する最下層のリーフノード(4,4)のステート情報の取得が必要となる。
 しかし、例えば、キーワード単位インデックスの木構造のルートノード(1,1)のステートが○であれば、その時点で、そのルートノードの下位に設定された文書対応のリーフノードのステートは全て○であることが確認される。
 従って、このような設定の場合、文書x(Docx)がキーワードy(KWy)を含むか否かの判定は、ルートノードのステート情報を確認し、第2層以下のノードのノード情報の復号、解析を実行することなく処理を終了することができる。
 また、例えばルートノードのステートが△であっても、選択された第2層のノードのステートが○であれば、その時点で、その第2層のノード以下にあるリーフノード対応の文書は全て指定キーワードy(KWy)を含むことが確認される。従って、このような設定の場合は、第2層のノードのステート情報の確認まで実行すれば、第3層以下のノードのノード情報の復号、解析を実行することなく処理を終了することができる。
 図19は、キーワードy(KWy)を含むか否かの検証対象とする文書xを文書1とした場合の処理例であり、第3層のノード(3,1)のステートが○の場合の処理シーケンスを説明する図である。
 まず、サーバは、クライアントから受信したルートノードアドレスに従って、図19に示すルートノード(1,1)の暗号化ノード情報を取得する。
 さらに、クライアントから取得したルートノードの暗号鍵を適用して復号処理を実行してルートノード(1,1)のノード情報を取得する。
 さらに、ルートノード(1,1)のノード情報のステート情報を確認する。
 このステート情報は△であることが確認される。
 この一連の処理は、図19の(a)に示すように、図17のフローのステップS401~S403の各処理に対応する。すなわち、図17のフローのステップS401,S402の処理,さらに、ステップS403の判定においてノード情報中のステート情報が△と判定され、ステップS404に進む処理に相当する。
 ステップS404では、文書x(Docx)を下位ノードに含む子ノードを選択してその子ノードのノード情報を復号する処理を行なう。
 図19の木構造において、文書x=文書1は、ノード位置(1,1)のルートノードに直結する2つの子ノード中、ノード位置(2,1)の子ノード側の下位ノードに含まれている。
 従って、ステップS404では、ノード位置(2,1)の子ノードを選択する。
 この処理が、図19の(b)に示す処理である。
 さらに、選択されたノード位置(2,1)の子ノードのノード情報を復号して、ノード情報を取得し、さらに、取得したノード情報のステート情報を確認する。
 このステート情報は△であることが確認される。
 この一連の処理は、図19の(c)に示す処理である。
 すなわち、図17のフローのステップS404,S402の処理,さらに、ステップS403の判定においてノード情報中のステート情報が△と判定され、ステップS404に進む処理に相当する。
 ステップS404では、文書x(Docx)を下位ノードに含む子ノードを選択してその子ノードのノード情報を復号する処理を行なう。
 図19の木構造において、文書x=文書1は、ノード位置(2,1)のノードに直結する2つの子ノード中、ノード位置(3,1)の子ノード側の下位ノードに含まれている。
 従って、ステップS404では、ノード位置(3,1)の子ノードを選択する。
 この処理が、図19の(d)に示す処理である。
 さらに、選択されたノード位置(3,1)の子ノードのノード情報を復号して、ノード情報を取得し、さらに、取得したノード情報のステート情報を確認する。
 このステート情報は○であることが確認される。
 この一連の処理は、図19の(e)に示す処理である。
 すなわち、図17のフローのステップS404,S402の処理,さらに、ステップS403の判定においてノード情報中のステート情報が○と判定され、ステップS405に進む処理に相当する。
 ステップS405に進むと、文書x(Docx)=文書1は、キーワードy(KWy)を含む文書であると判定され、処理が終了する。
 この図19に示す処理では、木構造のルートノード(1,1)のステートが△、第2層の選択ノード(2,1)のステートも△であるが、第3層の選択ノード(3,1)のステートが○である。このようなステート設定の場合は、指定文書(Doc1)に対応する最下層のリーフノード(4,1)のステート情報の取得を行うことなく、それより上位層のノード情報の取得のみで、処理を完了することができる。
 このように、解析対象とする文書対応のリーフノードからルートノードに至るノードのいずれかのノード情報が○であれば、そのノード以下に設定された文書対応のリーフノードのステートは全て○であり、キーワードを含む文書であると判定することが可能となる。
 同様に、解析対象とする文書対応のリーフノードからルートノードに至るノードのいずれかのノード情報が×であれば、そのノード以下に設定された文書対応のリーフノードのステートは全て×であり、キーワードを含まない文書であると判定することが可能となる。
 このように、木構造を利用した処理では、目的とする文書対応のノード情報の解析以前に、その目的文書が特定キーワードを含むか否かの判定を行なうことが可能であり、効率的な処理が実現される。
 なお、先に図7、図8を参照して説明した一次元の文書リンク構造を用いた場合は、必ず、目的とする文書までのノード情報の解読が必須となり、上述した木構造を用いた処理の方が、効率的な処理が実現される。
 なお、図10、図18~図19を参照して説明した2分木構造を適用した場合、リーフノードとして設定する文書数をNとすると、キーワードを含むか否かの判定を行なう文書対応のリーフノードより上位のノードのステートが全て△である最悪のケースでも、解析処理が必要となるノード数は、logN+1である。
 また、ルートノードのステートが○、または×である場合の解析処理必用ノード数はルートノードのみの1である。
 従って、木構造を用いた場合の解析処理必用ノード数は、1~(logN+1)の範囲となる。
  [5-3.特定のキーワード(KWy)を含むデータベース格納文書を全て抽出する処理について]
 次に、図20に示すフローチャートを参照して、特定のキーワード(KWy)を含むデータベース格納文書を全て抽出する処理の具体的シーケンスについて説明する。
 なお、この図20に示す処理は、サーバ側で実行する処理である。サーバは、クライアントから以下のデータを受領しているものとする。
 (a)キーワード(KWy)に対応するキーワード単位インデックスにおけるルートノードのアドレス、
 (b)キーワード(KWy)に対応するキーワード単位インデックスにおけるルートノードに対応するノード情報の暗号鍵(ルートノード鍵)、
 サーバは、上記(a)~(b)の各データを受領して、図20に示すフローに従った処理を実行する。なお、サーバは、図20に示すフローに従った処理を実行するためのプログラムをメモリに格納し、このプログラムをCPUを有するデータ処理部において実行する。
 なお、この処理、すなわち、特定のキーワード(KWy)を含むデータベース格納文書を全て抽出する処理では、データベース格納文書の各々が特定キーワード(KWy)を含むか否かの結果を記録するテーブル(リスト)を作成することが好ましい。
 具体的には、例えば図21(a)に示すテーブルである。
 図21(a)に示すテーブルは、
 (1)木構造のノード設定、
 (2)文書ID、
 (3)キーワードの有無、
 これらの各データを対応付けたテーブルである。
 (1)木構造のノード設定は、最上層のルートノード(1,1)から、最下層のリーフノード(4,1)~(4,8)まで、層構成に併せたデータ構成を持つ。
 (2)文書IDは、リーフノードに対応する文書の文書IDである。
 (3)キーワードの有無は、図20に示すフローに従った処理に従って得られた結果を記録するフィールドである。
 なお、図21(b)に示すテーブルは、図20に示すフローに従った処理に従って得られた結果を「(3)キーワードの有無」の欄に記録して得られる処理完了後のテーブルである。
 以下、図20に示すフローの各ステップの処理について、順次、説明する。
  (ステップS501)
 まず、サーバはステップS501において、クライアントから受信したキーワード(KWy)に対応するキーワード単位インデックスのルートノードアドレスに基づいて、ルートノードの暗号化ノード情報を取得する。
 さらに、取得した暗号化ノード情報に対して、クライアントから受信した鍵を適用した復号処理を実行し、ノード情報を取得する。
  (ステップS502)
 次に、ステップS502において、ステップS501で取得したキーワード(KWy)に対応するキーワード単位インデックスのルートノードのノード情報に含まれるステート情報を確認する。
 先に説明したように、ステート情報は、以下に示すいすれかの情報を示すデータである。
 (1)○:自ノードまたは下位ノードに対応する文書は全て特定のキーワード(KWy)を含む。
 (2)×:自ノードまたは下位ノードに対応する文書は全て特定のキーワード(KWy)を含まない。
 (3)△:自ノードまたは下位ノードに対応する文書には特定のキーワード(KWy)を含むものと含まないものが存在する。
 ノード情報中のステート情報には、これら○、×、△の3種類のいずれかの情報が設定される。
  (ステップS503)
 ステップS503は、取得したノード情報中のステート情報に従って処理を変更するステップである。
 ステート情報=△の場合は、ステップS504に進む。
 ステート情報=○の場合は、ステップS505に進む。
 ステート情報=×の場合は、ステップS506に進む。
  (ステップS504)
 ステップS504は、ステップS503において取得したノード情報中のステート情報が△の場合、すなわち、自ノードまたは下位ノードに対応する文書に特定のキーワード(KWy)を含むものと含まないものが存在する場合に実行する処理である。
 ステップS504では、取得したノード情報に対応するノードの直下の子ノードの暗号化ノード情報を順次、復号してノード情報を取得し、取得した子ノードのノード情報について、ステップS502以下の処理を行なう。すなわちステート情報を確認し確認結果に応じて、ステップS504~S506の処理を行なう。
 なお、ステップ504では、複数の子ノードについて、順次、処理を実行する。すなわち、
 S504→S502→S503
 この一連の処理を、複数の子ノード各々について、順次、実行する。
  (ステップS505)
 ステップS505は、ステップS503において取得したノード情報中のステート情報が○の場合に実行する処理である。
 ステップS503で、この判定がなされた場合、ステップS505では、自ノードのノード情報に記録された文書ID、すなわち、自ノードまたは下位ノードに対応する文書は全て特定のキーワード(KWy)を含むと判定する。
 このステップS505の処理を実行して、キーワード(KWy)を含むと判定された文書について、先に説明した図21のテーブルの「キーワード(KW)の有無」の欄にキーワードを含むことを示す識別データ(○)を記録する。
 例えば、図21に示す木構造において、中間ノード(3,1)のノード情報解析を行った場合、ステートが○であることが確認される。この場合、その中間ノード(3,1)のノード情報の文書IDは、文書ID=1~2である。従ってこれらの文書1、文書2は、キーワードy(KWy)を含むと判定して、文書1,2の「キーワード(KW)の有無」の欄に○を記録する。
  (ステップS506)
 ステップS506は、ステップS503において取得したノード情報中のステート情報が×の場合に実行する処理である。
 ステップS503で、この判定がなされた場合、ステップS506では、自ノードのノード情報に記録された文書ID、すなわち、自ノードまたは下位ノードに対応する文書は全て特定のキーワード(KWy)を含まないと判定する。
 このステップS506の処理を実行して、キーワード(KWy)を含まないと判定された文書について、先に説明した図21のテーブルの「キーワード(KW)の有無」の欄にキーワードを含まないことを示す識別データ(×)を記録する。
 例えば、図21に示す木構造において、中間ノード(3,3)のノード情報解析を行った場合、ステートが×であることが確認される。この場合、その中間ノード(3,3)のノード情報の文書IDは、文書ID=5~6である。従ってこれらの文書5、文書6は、キーワードy(KWy)を含まないと判定して、文書5,6の「キーワード(KW)の有無」の欄に×を記録する。
 具体的な処理シーケンスについて、図22に示す木構造を参照して説明する。
 例えば図22の木構造はキーワードy(KWy)に対応するキーワード単位インデックスの木構造であるとする。
 最下層のリーフノード(4,1)~(4,8)のノード対応の8つの文書ががキーワードy(KWy)を含むか否かの判定処理結果を求めているとする。
 まず、サーバは、クライアントから受信したルートノードアドレスに従って、図22に示すルートノード(1,1)の暗号化ノード情報を取得する。
 さらに、クライアントから取得したルートノードの暗号鍵を適用して復号処理を実行してルートノード(1,1)のノード情報を取得する。
 さらに、ルートノード(1,1)のノード情報のステート情報を確認する。
 このステート情報は△であることが確認される。
 この一連の処理は、図22の(a)に示すように、図20のフローのステップS501~S503の各処理に対応する。すなわち、図20のフローのステップS501,S502の処理,さらに、ステップS503の判定においてノード情報中のステート情報が△と判定され、ステップS504に進む処理に相当する。
 ステップS504では、取得したノード情報に対応するノードの直下の子ノードの暗号化ノード情報を順次、復号してノード情報を取得し、取得した子ノードのノード情報について、ステップS502以下の処理を行なう。
 すなわち、図22に示すノード(2,1)、ノード(2,2)について、S504→S502→S503、この一連の処理を、各々実行する。
 なお、図22は、代表的な処理例として、ノード(2,1)の処理についてのみ記載している。
 ステップS504において、ノード(2,1)の暗号化ノード情報を復号してノード情報を取得し、取得したノード情報について、ステップS502以下の処理を行なう。
 すなわち、取得したノード情報のステート情報を確認する。
 このステート情報は△であることが確認される。
 この一連の処理は、図22の(b)に示す処理である。
 すなわち、図20のフローのステップS504,S502の処理,さらに、ステップS503の判定においてノード情報中のステート情報が△と判定され、ステップS504に進む処理に相当する。
 さらに、ステップS504の処理として、取得したノード情報に対応するノードの直下の子ノードの暗号化ノード情報を順次、復号してノード情報を取得し、取得した子ノードのノード情報について、ステップS502以下の処理を行なう。
 すなわち、図22に示すノード(3,1)、ノード(3,2)について、S504→S502→S503、この一連の処理を、各々実行する。
 なお、図22には、代表的な処理例として、ノード(3,1)の処理についてのみ記載している。
 ステップS504において、ノード(3,1)の暗号化ノード情報を復号してノード情報を取得し、取得したノード情報について、ステップS502以下の処理を行なう。
 すなわち、取得したノード情報のステート情報を確認する。
 このステート情報は○であることが確認される。
 この一連の処理は、図22の(c)に示す処理である。
 すなわち、図20のフローのステップS504,S502の処理,さらに、ステップS503の判定においてノード情報中のステート情報が○と判定され、ステップS505に進む処理に相当する。
 ステップS505では、自ノードのノード情報に記録された文書ID、すなわち、自ノードまたは下位ノードに対応する文書は全て特定のキーワード(KWy)を含むと判定する。
 すなわち、ノード(3,1)のノード情報の文書IDは、文書ID=1~2である。従ってこれらの文書1、文書2は、キーワードy(KWy)を含むと判定して、文書1,2の「キーワード(KW)の有無」の欄に○を記録する。
 その他のノードについても、同様の処理を実行する。
 この木構造を利用することで、ステート情報が○のノード情報が得られた場合、その下位のリーフノード対応の文書は全てキーワードを含むと判定されるので、そのノードの下位ノードの解析は不要となる。
 同様に、ステート情報が×のノード情報が得られた場合、その下位のリーフノード対応の文書は全てキーワードを含まないと判定されるので、そのノードの下位ノードの解析は不要となる。
 このように、木構造を利用した処理では、目的とする文書対応のノード情報の解析以前に、その目的文書が特定キーワードを含むか否かの判定を行なうことが可能であり、効率的な処理が実現される。
  [6.3分木以上の多分木構成を持つキーワード単位インデックスについて]
 上述したキーワード単位インデックスは、1つの親ノードの直下に2つの子ノードが設定される2分木構成を持つインデックスである。
 しかし、キーワード単位インデックスは、上述した2分木構成のみならず、1つの親ノードの直下に3つの子ノードを設定した3分木構成等、分木数=2以上の任意数とした多分木構成とすることが可能である。
 分木数=k、ただしk≧2、としたキーワード単位インデックスの生成シーケンスについて、図23に示すフローチャートを参照して説明する。
 図23のフローチャートに示す処理は、ユーザの情報処理装置(クライアント)100において実行される。情報処理装置100は、図23のフローチャートに従った処理ステップを規定したプログラムをメモリに格納している。情報処理装置100のデータ処理部、すなわちプログラム実行機能を有するCPU等を備えたデータ処理部において、プログラムを実行して、図23に示すフローチャートに従った処理が実行される。
 なお、図23に示すフローは、1つのキーワード(KWx)に対応する1つのキーワード単位インデックスの生成処理シーケンスを示すフローである。複数のキーワード(KW1,KW2・・・)を設定した場合、キーワード(KW1,KW2・・・)ごとに、図23に示すフローに従った処理を実行することになる。
 以下、フローに示す各ステップの処理について、順次、説明する。
  (ステップS701)
 まず、ステップS701において、k分木の木構造の新規子ノードとして、データベースに格納する各文書に対応する葉ノード(リーフノード)を設定し、設定した葉ノード(リーフノード)に対応するノード情報を生成する。
 なお、ノード情報は、先に図11を参照して説明したデータ構成を有する。
 葉ノード(リーフノード)に対応するノード情報は、例えば以下のように設定する。
 文書IDは、各葉ノード対応の文書の文書識別子を設定する。
 葉ノード(リーフノード)対応文書が、キーワード(KWx)を含む場合、ステートを○とする。
 葉ノード(リーフノード)対応文書が、キーワード(KWx)を含まない場合、ステートを×とする。
 また、子ノードのアドレスと鍵データとしては、例えばオール0等のダミーデータを設定する。
 データベース格納文書各々に対応する葉ノードのノード情報を生成したら、ステップS702に進む。
 (ステップS702)
 ステップS702では、以下の処理を実行する。
 ステップS701でノード情報を生成した子ノードから、各ノード対応の文書IDの順番にk個のノード単位で子ノードの集合を設定する。なお、k≧2である。
 さらに、設定したk個の子ノード集合単位で親ノードを設定する。さらに親ノードのノード情報中の文書IDとステート情報を決定する。
 親ノードのノード情報中の文書IDとステート情報は、以下のように設定する。
 文書IDは、親ノードの下位の葉ノード(リーフノード)に対応する文書IDを全て含む範囲に設定する。
 ステート情報は以下のように設定する。
 子ノードのステート=全て○→親ノードステート=○
 子ノードのステート=全て×→親ノードステート=×
 子ノードのステート=上記以外→親ノードステート=△
  (ステップS703)
 次に、ステップS703において、ステップS702で生成した親ノードに直結する子ノード各々の暗号鍵を生成する。すなわち、子ノードのノード情報を暗号化する子ノード各々に対応するノード鍵を生成する。この暗号鍵は、クライアントが生成する任意の鍵としてよい。
 さらに、生成したノード鍵で、子ノードのノード情報を暗号化する。
 次に、生成したノード鍵を、子ノードに直結する親ノードのノード情報として格納する。
  (ステップS704)
 次に、ステップS704において、ステップS702で生成した親ノードに直結する子ノードのノード情報記録位置を示すアドレスを親ノードのノード情報として格納する。
 なお、アドレスは、例えばキーワード単位インデックスを記録するデータ領域のデータ先頭からのオフセット情報などを適用可能である。
 また、ステップS702からS704は,同一階層の子ノードすべてについて実施する。
  (ステップS705)
 次に、キーワード単位インデックス生成処理において、ルートノードに到達したか否かを判定する。これは、具体的には、ステップS702において生成した親ノードが1つのみとなったか否か、すなわち、ルートノードに相当する唯一の親ノードとなったか否かを判定する処理として実行される。
 ステップS702で生成した親ノードが唯一の親ノードとなり、ルートノードに到達したと判定した場合は、ステップS705の判定がYesとなり、ステップS707に進む。
 一方、ステップS702で生成した親ノードが唯一の親ノードではなく、複数の親ノードである場合は、ルートノードに到達していないと判定し、ステップS705の判定がNoとなり、ステップS706に進む。
  (ステップS706)
 ステップS705における判定がNoの場合、すなわち、ステップS702で生成した親ノードが唯一の親ノードではなく、複数の親ノードである場合は、ルートノードに到達していないと判定し、ステップS706に進む。
 ステップS706では、ステップS702で生成した親ノードを新規子ノードとして、新規子ノードを処理対象としてステップS702以下の処理を実行する。
 このようにして、k分木構成を持つ木構造が、再下段の葉ノード(リーフノード)から、順次、上層に向かって構築される。最終的に、ステップS702で生成した親ノードが唯一の親ノードとなる。この結果、ステップS705の判定処理、すなわち、「ルートノードに到達?」の判定処理がYesとなり、ステップS707に進む。
  (ステップS707)
 最後に、ステップS707において、ルートノードのノード情報を暗号化する暗号鍵を決定し、ルートノードのノード情報を決定した鍵で暗号化する。
 これらの処理を実行することで、k分木構成の木構造を持つキーワード単位インデックスが生成される。
 例えば、図13のシーケンス図のステップS101において、この図23に示すフローチャートに従った処理を実行して、キーワード単位インデックスを生成する。
 なお、前述したように、キーワード単位インデックスは、1つのキーワードに対して1つ生成する。従って、クライアント側ユーザが複数のキーワードを設定した場合は、設定したキーワード各々について、図23に示すフローチャートに従った処理を実行し、キーワード数と等しい数のキーワード単位インデックスを生成する。
  [7.データベース格納文書の削除、追加に伴うキーワード単位インデックスの更新処理について]
 次に、データベース格納文書の削除、追加に伴うキーワード単位インデックスの更新処理について説明する。
 先に図13を参照して説明したように、クライアント100は、サーバ200のデータベースに対して暗号化文書(Doc1,Doc2,Doc3・・・)を格納し、またキーワード単位インデックスを格納する。
 クライアントは、サーバ200のデータベースに新たな文書を追加して格納することも可能であり、また、データベースに格納された文書を削除することも可能である。
 このように、データベース格納文書の追加や削除を行う場合、キーワード単位インデックスも更新する必要がある。
 すなわち、キーワード単位インデックスの最下層のノードである葉ノード(リーフノード)は、データベース格納文書に対応して設定されているものであり、データベース格納文書の追加や削除を行う場合は、キーワード単位インデックスの最下層ノードである葉ノード(リーフノード)の構成を変更するデータ更新が必要となる。以下、このようなキーワード単位インデックスのデータ更新処理について説明する。
  [7-1.データベース格納文書の削除処理に伴うインデックス更新処理について]
 まず、図24を参照して、データベース格納文書の削除処理に伴うキーワード単位インデックスの更新処理例について説明する。
 図24は、文書3、または文書4を削除する場合のキーワード単位インデックスの更新処理例について説明する図である。
 ノード領域350中には、最下段のリーフノードとして文書ID=3のリーフノードと、文書ID=4のリーフノードが設定されており、これらの2つのリーフノードの親ノードとして、文書ID=3~4の中間ノードが設定されている。
 ここで、データベースから文書3(Doc3)を削除した場合、インデックス更新処理として、図24(a)に示す処理を行なう。
 すなわち、文書ID=3、ステート情報=×の設定されているノード情報の書き換えを実行する。
 書き換えは、以下のように実行する。
 ステート情報=なし(無効値を設定)
 このように、ステート情報に無効値を設定する。
 すなわち、ステート情報=無効値の設定されたノードは文書が対応していないことを示す。
 さらに、親ノードのステートについても更新する。下位ノードのステートが○のみとなったので、親ノードのステート=○に更新する。
 なお、文書3の削除によって発生した文書非対応ノードは、データベースに追加格納する文書が発生した場合、その追加格納文書に対応するノードとして利用可能である。
 図24(b)は、データベースから文書4(Doc4)を削除した場合の、インデックス更新処理を示している。
 この場合、文書ID=4、ステート情報=○の設定されているノード情報の書き換えを実行する。
 書き換えは、以下のように実行する。
 ステート情報=なし(無効値を設定)
 さらに、親ノードのステートについても更新する。下位ノードのステートが×のみとなったので、親ノードのステート=×に更新する。
 このように、データベース格納文書を削除した場合、削除文書対応のノードのノード情報のステート情報を無効値に設定し、さらに、この変更に伴い、上位ノードのステート情報も必要に応じて更新する。
  [7-2.予めダミーノードを設定したキーワード単位インデックスの構成について]
 キーワード単位インデックスの最下層の葉ノード(リーフノード)は、各々が1つの文書に対応付けられたノードに設定するのが原則である。
 しかし、必ずしも全てのリーフノードがデータベース格納文書のいずれかに対応付けられていなければならないというものではなく、文書に対応付けられていないノード(ダミーノード)を設定してもよい。
 このようなダミーノードは、新たなデータべース格納文書が発生した場合、その新規文書の対応ノードとして利用可能となる。
 ダミーノードを持つキーワード単位インデックスの木構造の例を図25に示す。
 図25に示す木構造において、最下層の文書ID=1~3の各ノードは、ステート情報として○、△、×のいずれかの有効値が設定されており、データベース格納文書が対応付けられたノードである。
 しかし、図25に示す木構造において、最下層の文書ID=4~8の各ノードは、ステート情報として無効値[-]が設定されており、データベース格納文書が対応付けられていないダミーノードである。
 これらのダミーノードは、将来、新たなデータベース格納文書が発生した場合、その新規追加文書に対応するノードとして利用することができる。
 なお、図25に示すように、下位ノードの全てのステートが無効値[-]である上位ノードのステート情報は無効値[-]に設定する。
 このような設定とすることで、ルートから順次、ノード情報の解読を行って、ステート情報=無効値[-]のノードを検出した場合には、そのノード以下の下位に文書の対応付けられたリーフノードが存在しないことを判別することが可能となり、下位ノードまでのノード情報の解読処理が省略でき、効率的な処理が可能となる。
  [7-3.文書追加に伴うキーワード単位インデックス木構造の階層構成の追加処理について]
 次に、データベースに格納する文書を追加した場合のキーワード単位インデックス木構造の階層構成の追加処理例について、図26を参照して説明する。
 キーワード単位インデックスの木構造は、最下層の葉ノード(リーフノード)をデータベース格納文書各々に対応付けて構成される。従って、データベースの格納文書数は、最下層の葉ノード(リーフノード)の数以下である必要がある。
 例えば、データベースに格納する文書が増加し、キーワード単位インデックスの最下層の葉ノード(リーフノード)の数を超える場合も発生する。
 このような場合の対応について、図26を参照して説明する。
 当初、データベース格納文書が、文書ID=1~4の4つの文書であり、点線枠で囲んだ3階層の木構造400が、キーワード単位インデックスとして設定されてデータベースに格納されていたものとする。
 その後、クライアントは、新規文書(文書ID=5)を生成してデータベースに格納する。
 しかし、木構造400には、リーフノードが4つしかないため、文書5に対応するノードを設定することができない。
 このような場合、キーワード単位インデックスの階層数を増加させて、リーフノードの数を増加させる。
 すなわち、図26に示す点線部分のノードを追加設定して、8つのリーフノードを持ち、新たなルートノード403を有する4階層の木構造を新たなキーワード単位インデックスとする。
 以前の3階層の木構造400のルートノードを第2階層の中間ノードとして設定することで、3階層の木構造400内のリーフノードは、そのまま、新たな4階層の木構造におけるリーフノードとすることが可能となる。また、3階層の木構造400内の各ノードのノード情報は変更することなく利用できる。
 新たな追加文書(文書ID=5)のノード402を4階層のリーフノードの1つに設定し、文書ID=6~8のリーフノードはステート情報を無効値[-]に設定したダミーノードとする。
 ダミーノードは、将来の追加格納文書の対応ノードとして利用することが可能となる。
 このように、既存のキーワード単位インデックスのリーフノード数より多くの文書が格納される場合は、既存の木構造の階層を増加させて、リーフノード数を増加させることで、データベース格納文書の増加に応じたキーワード単位インデックスを生成することが可能となる。
  [8.クライアントおよびサーバを構成する情報処理装置の構成例について]
 最後に、上述した実施例に従った処理を実行するクライアントやサーバに対応する情報処理装置の装置構成例について説明する。
 例えば上述した実施例において説明した各種のデータ処理は、各データ処理アルゴリズムを規定したソフトウェア(プログラム)を実行するCPU等から構成されるデータ処理部、さらに、プログラムや、データを格納するメモリを有する例えばPCやサーバ等の機器において実行可能である。
 図27に、上述した実施例に従った処理を実行するクライアントやサーバに対応する情報処理装置のハードウェア構成例を示す。
 CPU(Central Processing Unit)501は、ROM(Read Only Memory)502、または記憶部508に記憶されているプログラムに従って各種の処理を実行するデータ処理部として機能する。例えば、上述した各フローチャートに従ったデータ処理を実行する。
 RAM(Random Access Memory)503には、CPU501が実行するプログラムやデータなどが記憶される。例えば上述した各データ処理シーケンスを規定したプログラムが格納されている。RAMには、上述した各処理に適用するデータを格納するレジスタも含まれ、ワーク領域として使用されるメモリ領域なども含まれる。
 これらのCPU501、ROM502、およびRAM503は、バス504により相互に接続されている。
 CPU501はバス504を介して入出力インタフェース505に接続され、入出力インタフェース505には、各種スイッチ、キーボード、マウス、マイクロホンなどよりなる入力部506、ディスプレイ、スピーカなどよりなる出力部507が接続されている。CPU501は、入力部506から入力される指令に対応して各種の処理を実行し、処理結果を例えば出力部507に出力する。
 入出力インタフェース505に接続されている記憶部508は、例えばハードディスク等からなり、CPU501が実行するプログラムや各種のデータを記憶する。通信部509は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
 入出力インタフェース505に接続されているドライブ510は、磁気ディスク、光ディスク、光磁気ディスク、あるいはメモリカード等の半導体メモリなどのリムーバブルメディア511を駆動し、データの記録または読み取りを実行する。
  [9.本開示の構成のまとめ]
 以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
 なお、本明細書において開示した技術は、以下のような構成をとることができる。
 (1) 文書検索用のキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを生成するデータ処理部を有し、
 前記データ処理部は、
 最上位ノードであるルートノードから最下位ノードであるリーフノードまで、各ノードに複数の下位ノードを分岐接続した木構造を構成する各ノードにノード情報を対応付けたノード情報のリンク構造を有するキーワード単位インデックスを生成し、
 前記リーフノードにはノード情報として、
 (1a)文書個別の文書識別子と、
 (1b)前記文書識別子に対応する文書が特定のキーワードを含むか否かを示すステート情報、
 を格納し、
 リーフノード以外の上位ノードにはノード情報として、
 (2a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (2b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 を格納したキーワード単位インデックスを生成する情報処理装置。
 (2)前記データ処理部は、前記ノード情報を、ノード対応のノード鍵で暗号化し、ノード鍵を、木構造において直結する上位ノードのノード情報中に格納する前記(1)に記載の情報処理装置。
 (3)前記データ処理部は、前記ノード情報アクセス用のアドレス情報を、木構造において直結する上位ノードのノード情報中に格納する前記(1)または(2)に記載の情報処理装置。
 (4)前記データ処理部は、前記キーワード単位インデックスのリーフノードのノード情報中に設定された文書識別子に対応する暗号化文書をサーバのデータベースに格納し、該暗号化文書のキーワード検索において、前記サーバに前記キーワード単位インデックスを利用した処理の実行を要求する前記(1)~(3)いずれかに記載の情報処理装置。
 (5)前記データ処理部は、前記キーワード単位インデックスを適用した文書検索処理に際して、前記キーワード単位インデックスのルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記サーバに送信する前記(4)に記載の情報処理装置。
 (6)前記データ処理部は、各キーワードに対応するキーワード単位インデックスのルートノードのノード情報のアクセス用アドレスと、復号用鍵を、各キーワードに対応付けたキーワード対応管理データを生成して記憶部に格納する前記(1)~(5)いずれかに記載の情報処理装置。
 (7)前記データ処理部は、前記キーワード単位インデックスのリーフノードのノード情報として記録した文書識別子に対応する文書をデータベースから削除した場合、削除文書対応のリーフノードのノード情報のステート情報を無効値に変更する前記(1)~(6)いずれかに記載の情報処理装置。
 (8)前記データ処理部は、リーフノードとして対応文書の無いダミーノードを設定したキーワード単位インデックスを生成し、ダミーノードを、データベースに対する新規格納文書に対応するノードとして利用可能としたキーワード単位インデックスを生成する前記(1)~(7)いずれかに記載の情報処理装置。
 (9)前記データ処理部は、データベースに対する新規格納文書の増加に応じて、既存のキーワード単位インデックスの木構造の階層を増加させる処理を行なう前記(1)~(8)いずれかに記載の情報処理装置。
 (10)クライアントとのデータ送受信を行う通信部と、
 暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、
 クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
 前記通信部は、
 前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記クライアントから受信し、
 前記データ処理部は、
 前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得して、前記復号用鍵で復号して、
 (a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
 上記(a),(b)、(c)の各情報を取得し、
 前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行する情報処理装置。
 (11)前記データ処理部は、クライアントからの検索要求が、特定の指定文書(Docx)が特定のキーワード(KWy)を含むか否かの判定結果を求める検索要求である場合において、ノード情報から取得したステート情報が、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定である場合は、その設定に従って指定文書(Docx)が特定のキーワード(KWy)を含むか否かの判定結果を生成し、前記ステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定であることが確認された場合は、順次、下位ノードのノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が得られた時点で、該ステート情報に従った判定結果を生成する前記(10)に記載の情報処理装置。
 (12)前記データ処理部は、処理対象ノードのノード情報に含まれるステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定である場合、前記処理対象ノードに直結する複数の下位ノードから、前記指定文書(Docx)が対応付けられたリーフノードを下位に含む1つの下位ノードを選択して該下位ノードのノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が得られた時点で、該ステート情報に従った判定結果を生成する前記(11)に記載の情報処理装置。
 (13)前記データ処理部は、クライアントからの検索要求が、記憶部に格納された文書の各々が特定のキーワード(KWy)を含むか否かの判定結果を求める検索要求である場合において、ノード情報から取得したステート情報が、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定である場合は、その設定に従って、記憶部に格納された文書の各々が特定のキーワード(KWy)を含むか否かの判定結果を生成し、前記ステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定である場合は、順次、下位ノードのノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が得られた時点で、該ステート情報に従った判定結果を生成する前記(10)に記載の情報処理装置。
 (14)前記データ処理部は、処理対象ノードのノード情報に含まれるステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定である場合、前記処理対象ノードに直結する複数の下位ノードを順次、選択してノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が設定されたノード情報を有するノード以下の下位ノードのノード情報取得処理を行なうことなく、得られたステート情報に従った判定結果を生成する前記(13)に記載の情報処理装置。
 (15)データ検索要求を行うクライアントと、クライアントからの要求に応じてデータ連作を実行するサーバを有する情報処理システムであり、
 前記サーバは、
 暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、
 クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
 前記クライアントは、前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記サーバに送信し、
 前記サーバのデータ処理部は、
 前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得して、前記復号用鍵で復号して、
 (a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
 上記(a),(b)、(c)の各情報を取得し、
 前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行する情報処理システム。
 (16)前記クライアントは、暗号化文書と、前記暗号化文書の検索用インデックスであるキーワード単位インデックスを生成して前記サーバに送信し、前記サーバは、前記クライアントから受信する暗号化文書と、キーワード単位インデックスを記憶部に格納する前記(15)に記載の情報処理システム。
 (17)情報処理装置において実行する情報処理方法であり、
 前記情報処理装置は、文書検索用のキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを生成するデータ処理部を有し、
 前記データ処理部が、
 最上位ノードであるルートノードから最下位ノードであるリーフノードまで、各ノードに複数の下位ノードを分岐接続した木構造を構成する各ノードにノード情報を対応付けたノード情報のリンク構造を有するキーワード単位インデックスを生成し、
 前記リーフノードにはノード情報として、
 (1a)文書個別の文書識別子と、
 (1b)前記文書識別子に対応する文書が特定のキーワードを含むか否かを示すステート情報、
 を格納し、
 リーフノード以外の上位ノードにはノード情報として、
 (2a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (2b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 を格納したキーワード単位インデックスを生成する情報処理方法。
 (18)情報処理装置において実行する情報処理方法であり、
 前記情報処理装置は、クライアントとのデータ送受信を行う通信部と、暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
 前記通信部が、
 前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記クライアントから受信し、
 前記データ処理部が、
 前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得して、前記復号用鍵で復号して、
 (a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
 上記(a),(b)、(c)の各情報を取得し、
 前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行する情報処理方法。
 (19)情報処理装置において情報処理を実行させるプログラムであり、
 前記情報処理装置は、文書検索用のキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを生成するデータ処理部を有し、
 前記プログラムは、前記データ処理部に、
 最上位ノードであるルートノードから最下位ノードであるリーフノードまで、各ノードに複数の下位ノードを分岐接続した木構造を構成する各ノードにノード情報を対応付けたノード情報のリンク構造を有するキーワード単位インデックスを生成する処理を実行させ、
 前記リーフノードにはノード情報として、
 (1a)文書個別の文書識別子と、
 (1b)前記文書識別子に対応する文書が特定のキーワードを含むか否かを示すステート情報、
 を格納し、
 リーフノード以外の上位ノードにはノード情報として、
 (2a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (2b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 を格納したキーワード単位インデックスを生成させるプログラム。
 (20)情報処理装置において情報処理を実行させるプログラムであり、
 前記情報処理装置は、クライアントとのデータ送受信を行う通信部と、暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
 前記通信部が、
 前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記クライアントから受信し、
 前記プログラムは、前記データ処理部に、
 前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得する処理と、前記復号用鍵での復号処理を実行させて、
 (a)下位ノードに含まれるリーフノード全ての文書識別子と、
 (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
 (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
 上記(a),(b)、(c)の各情報を取得させ、
 前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行させるプログラム。
 なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(LocalAreaNetwork)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
 なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
 以上、説明したように、本開示の一実施例の構成によれば、キーワード検索の適用キーワードの漏えいを防止するとともに、効率的な検索が実現される。
 具体的には、サーバは暗号化文書と、検索に適用する木構造型リンク構造のキーワード単位インデックスを格納する。クライアントはキーワード単位インデックスの最上位ノードであるルートノードのアドレスと復号用鍵をサーバに送信する。サーバは、アドレスに従ってキーワード単位インデックスのルートノードのノード情報を取得して復号用鍵で復号して、(a)下位ノードに含まれるリーフノード全ての文書識別子と、(b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、全て含まないか、混在するか、これらを判別可能としたステート情報等を取得し、ステート情報の設定に基づいて、検索結果を効率的に取得する。
 上記構成により、キーワード検索の適用キーワードの漏えいを防止するとともに、効率的な検索が実現される。
  10 情報処理装置
  15 ネットワーク
  20 データベース
  31 情報処理装置
  32 インデックスデータベース
 100 情報処理装置(クライアント)
 200 サーバ
 301 頂点ノード(ルートノード)
 302 中間ノード
 303 葉ノード(リーフノード)
 501 CPU
 502 ROM
 503 RAM
 504 バス
 505 入出力インタフェース
 506 入力部
 507 出力部
 508 記憶部
 509 通信部
 510 ドライブ
 511 リムーバブルメディア

Claims (20)

  1.  文書検索用のキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを生成するデータ処理部を有し、
     前記データ処理部は、
     最上位ノードであるルートノードから最下位ノードであるリーフノードまで、各ノードに複数の下位ノードを分岐接続した木構造を構成する各ノードにノード情報を対応付けたノード情報のリンク構造を有するキーワード単位インデックスを生成し、
     前記リーフノードにはノード情報として、
     (1a)文書個別の文書識別子と、
     (1b)前記文書識別子に対応する文書が特定のキーワードを含むか否かを示すステート情報、
     を格納し、
     リーフノード以外の上位ノードにはノード情報として、
     (2a)下位ノードに含まれるリーフノード全ての文書識別子と、
     (2b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
     を格納したキーワード単位インデックスを生成する情報処理装置。
  2.  前記データ処理部は、
     前記ノード情報を、ノード対応のノード鍵で暗号化し、
     ノード鍵を、木構造において直結する上位ノードのノード情報中に格納する請求項1に記載の情報処理装置。
  3.  前記データ処理部は、
     前記ノード情報アクセス用のアドレス情報を、木構造において直結する上位ノードのノード情報中に格納する請求項1に記載の情報処理装置。
  4.  前記データ処理部は、
     前記キーワード単位インデックスのリーフノードのノード情報中に設定された文書識別子に対応する暗号化文書をサーバのデータベースに格納し、該暗号化文書のキーワード検索において、前記サーバに前記キーワード単位インデックスを利用した処理の実行を要求する請求項1に記載の情報処理装置。
  5.  前記データ処理部は、
     前記キーワード単位インデックスを適用した文書検索処理に際して、前記キーワード単位インデックスのルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記サーバに送信する請求項4に記載の情報処理装置。
  6.  前記データ処理部は、
     各キーワードに対応するキーワード単位インデックスのルートノードのノード情報のアクセス用アドレスと、復号用鍵を、各キーワードに対応付けたキーワード対応管理データを生成して記憶部に格納する請求項1に記載の情報処理装置。
  7.  前記データ処理部は、
     前記キーワード単位インデックスのリーフノードのノード情報として記録した文書識別子に対応する文書をデータベースから削除した場合、削除文書対応のリーフノードのノード情報のステート情報を無効値に変更する請求項1に記載の情報処理装置。
  8.  前記データ処理部は、
     リーフノードとして対応文書の無いダミーノードを設定したキーワード単位インデックスを生成し、
     ダミーノードを、データベースに対する新規格納文書に対応するノードとして利用可能としたキーワード単位インデックスを生成する請求項1に記載の情報処理装置。
  9.  前記データ処理部は、
     データベースに対する新規格納文書の増加に応じて、
     既存のキーワード単位インデックスの木構造の階層を増加させる処理を行なう請求項1に記載の情報処理装置。
  10.  クライアントとのデータ送受信を行う通信部と、
     暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、
     クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
     前記通信部は、
     前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記クライアントから受信し、
     前記データ処理部は、
     前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得して、前記復号用鍵で復号して、
     (a)下位ノードに含まれるリーフノード全ての文書識別子と、
     (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
     (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
     上記(a),(b)、(c)の各情報を取得し、
     前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行する情報処理装置。
  11.  前記データ処理部は、
     クライアントからの検索要求が、特定の指定文書(Docx)が特定のキーワード(KWy)を含むか否かの判定結果を求める検索要求である場合において、
     ノード情報から取得したステート情報が、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定である場合は、その設定に従って指定文書(Docx)が特定のキーワード(KWy)を含むか否かの判定結果を生成し、
     前記ステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定であることが確認された場合は、順次、下位ノードのノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が得られた時点で、該ステート情報に従った判定結果を生成する請求項10に記載の情報処理装置。
  12.  前記データ処理部は、
     処理対象ノードのノード情報に含まれるステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定である場合、
     前記処理対象ノードに直結する複数の下位ノードから、前記指定文書(Docx)が対応付けられたリーフノードを下位に含む1つの下位ノードを選択して該下位ノードのノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が得られた時点で、該ステート情報に従った判定結果を生成する請求項11に記載の情報処理装置。
  13.  前記データ処理部は、
     クライアントからの検索要求が、記憶部に格納された文書の各々が特定のキーワード(KWy)を含むか否かの判定結果を求める検索要求である場合において、
     ノード情報から取得したステート情報が、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定である場合は、その設定に従って、記憶部に格納された文書の各々が特定のキーワード(KWy)を含むか否かの判定結果を生成し、
     前記ステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定である場合は、順次、下位ノードのノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が得られた時点で、該ステート情報に従った判定結果を生成する請求項10に記載の情報処理装置。
  14.  前記データ処理部は、
     処理対象ノードのノード情報に含まれるステート情報が、下位ノードに含まれるリーフノードがキーワードを含むものと含まないものが混在することを示す設定である場合、
     前記処理対象ノードに直結する複数の下位ノードを順次、選択してノード情報を解析し、下位ノードに含まれるリーフノードが全てキーワードを含むか、または全て含まないとの設定を持つステート情報が設定されたノード情報を有するノード以下の下位ノードのノード情報取得処理を行なうことなく、得られたステート情報に従った判定結果を生成する請求項13に記載の情報処理装置。
  15.  データ検索要求を行うクライアントと、クライアントからの要求に応じてデータ連作を実行するサーバを有する情報処理システムであり、
     前記サーバは、
     暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、
     クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
     前記クライアントは、前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記サーバに送信し、
     前記サーバのデータ処理部は、
     前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得して、前記復号用鍵で復号して、
     (a)下位ノードに含まれるリーフノード全ての文書識別子と、
     (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
     (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
     上記(a),(b)、(c)の各情報を取得し、
     前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行する情報処理システム。
  16.  前記クライアントは、
     暗号化文書と、
     前記暗号化文書の検索用インデックスであるキーワード単位インデックスを生成して前記サーバに送信し、
     前記サーバは、前記クライアントから受信する暗号化文書と、キーワード単位インデックスを記憶部に格納する請求項15に記載の情報処理システム。
  17.  情報処理装置において実行する情報処理方法であり、
     前記情報処理装置は、文書検索用のキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを生成するデータ処理部を有し、
     前記データ処理部が、
     最上位ノードであるルートノードから最下位ノードであるリーフノードまで、各ノードに複数の下位ノードを分岐接続した木構造を構成する各ノードにノード情報を対応付けたノード情報のリンク構造を有するキーワード単位インデックスを生成し、
     前記リーフノードにはノード情報として、
     (1a)文書個別の文書識別子と、
     (1b)前記文書識別子に対応する文書が特定のキーワードを含むか否かを示すステート情報、
     を格納し、
     リーフノード以外の上位ノードにはノード情報として、
     (2a)下位ノードに含まれるリーフノード全ての文書識別子と、
     (2b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
     を格納したキーワード単位インデックスを生成する情報処理方法。
  18.  情報処理装置において実行する情報処理方法であり、
     前記情報処理装置は、クライアントとのデータ送受信を行う通信部と、暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
     前記通信部が、
     前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記クライアントから受信し、
     前記データ処理部が、
     前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得して、前記復号用鍵で復号して、
     (a)下位ノードに含まれるリーフノード全ての文書識別子と、
     (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
     (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
     上記(a),(b)、(c)の各情報を取得し、
     前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行する情報処理方法。
  19.  情報処理装置において情報処理を実行させるプログラムであり、
     前記情報処理装置は、文書検索用のキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを生成するデータ処理部を有し、
     前記プログラムは、前記データ処理部に、
     最上位ノードであるルートノードから最下位ノードであるリーフノードまで、各ノードに複数の下位ノードを分岐接続した木構造を構成する各ノードにノード情報を対応付けたノード情報のリンク構造を有するキーワード単位インデックスを生成する処理を実行させ、
     前記リーフノードにはノード情報として、
     (1a)文書個別の文書識別子と、
     (1b)前記文書識別子に対応する文書が特定のキーワードを含むか否かを示すステート情報、
     を格納し、
     リーフノード以外の上位ノードにはノード情報として、
     (2a)下位ノードに含まれるリーフノード全ての文書識別子と、
     (2b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
     を格納したキーワード単位インデックスを生成させるプログラム。
  20.  情報処理装置において情報処理を実行させるプログラムであり、
     前記情報処理装置は、クライアントとのデータ送受信を行う通信部と、暗号化文書と、該暗号化文書の検索に適用するキーワード単位の木構造型リンク構造を有するキーワード単位インデックスを格納した記憶部と、クライアントからのデータ検索要求に応じたデータ検索処理を行なうデータ処理部を有し、
     前記通信部が、
     前記キーワード単位インデックスの最上位ノードであるルートノードのノード情報のアクセス用アドレスと、復号用鍵を、前記クライアントから受信し、
     前記プログラムは、前記データ処理部に、
     前記アクセス用アドレスに従って、特定キーワードのキーワード単位インデックスのルートノードのノード情報を取得する処理と、前記復号用鍵での復号処理を実行させて、
     (a)下位ノードに含まれるリーフノード全ての文書識別子と、
     (b)下位ノードに含まれるリーフノードの文書識別子に対応する文書が全てキーワードを含むか、または全て含まないか、または含むものと含まないものとが混在するか、これら3状態を判別可能としたステート情報、
     (c)下位ノードのノード情報のアクセス用アドレスと復号用鍵、
     上記(a),(b)、(c)の各情報を取得させ、
     前記クライアントからの検索要求態様、および、前記ステート情報の設定に応じて、下位ノードのノード情報の取得、または、検索結果の生成を実行させるプログラム。
PCT/JP2014/053261 2013-03-12 2014-02-13 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム WO2014141802A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013048640 2013-03-12
JP2013-048640 2013-03-12

Publications (1)

Publication Number Publication Date
WO2014141802A1 true WO2014141802A1 (ja) 2014-09-18

Family

ID=51536477

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/053261 WO2014141802A1 (ja) 2013-03-12 2014-02-13 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム

Country Status (1)

Country Link
WO (1) WO2014141802A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110110007A (zh) * 2019-04-15 2019-08-09 平安普惠企业管理有限公司 数据管理方法及相关产品
CN110110006A (zh) * 2019-04-15 2019-08-09 平安普惠企业管理有限公司 数据管理方法及相关产品
CN110119427A (zh) * 2019-04-15 2019-08-13 平安普惠企业管理有限公司 数据管理方法及相关产品
WO2020199192A1 (en) * 2019-04-04 2020-10-08 Alibaba Group Holding Limited Split-key estimation method for table partition in disbtributed data storage systems
CN116996281A (zh) * 2023-07-21 2023-11-03 华中科技大学 支持密文分享的动态可搜索对称加密方法、系统及介质
CN110119427B (zh) * 2019-04-15 2024-05-28 北京神州数码云科信息技术有限公司 数据管理方法及相关产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212980A (ja) * 1998-01-23 1999-08-06 Fuji Xerox Co Ltd インデクス作成方法および検索方法
JP2007052698A (ja) * 2005-08-19 2007-03-01 Kddi Corp 暗号化された文書のためのインデックス生成および検索方法ならびに暗号化文書検索システム
WO2013005825A1 (ja) * 2011-07-07 2013-01-10 日本電気株式会社 情報処理装置、情報処理方法およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212980A (ja) * 1998-01-23 1999-08-06 Fuji Xerox Co Ltd インデクス作成方法および検索方法
JP2007052698A (ja) * 2005-08-19 2007-03-01 Kddi Corp 暗号化された文書のためのインデックス生成および検索方法ならびに暗号化文書検索システム
WO2013005825A1 (ja) * 2011-07-07 2013-01-10 日本電気株式会社 情報処理装置、情報処理方法およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
EU-JIN GOH, SECURE INDEXES, pages 1 - 19, Retrieved from the Internet <URL:http://crypto.stanford.edu/-eujin/papers/secureindex/secureindex.pdf> [retrieved on 20140306] *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020199192A1 (en) * 2019-04-04 2020-10-08 Alibaba Group Holding Limited Split-key estimation method for table partition in disbtributed data storage systems
CN110110007A (zh) * 2019-04-15 2019-08-09 平安普惠企业管理有限公司 数据管理方法及相关产品
CN110110006A (zh) * 2019-04-15 2019-08-09 平安普惠企业管理有限公司 数据管理方法及相关产品
CN110119427A (zh) * 2019-04-15 2019-08-13 平安普惠企业管理有限公司 数据管理方法及相关产品
CN110119427B (zh) * 2019-04-15 2024-05-28 北京神州数码云科信息技术有限公司 数据管理方法及相关产品
CN116996281A (zh) * 2023-07-21 2023-11-03 华中科技大学 支持密文分享的动态可搜索对称加密方法、系统及介质
CN116996281B (zh) * 2023-07-21 2024-02-06 华中科技大学 支持密文分享的动态可搜索对称加密方法、系统及介质

Similar Documents

Publication Publication Date Title
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
CN107209787B (zh) 提高专用加密数据的搜索能力
JP5420085B2 (ja) データ処理装置及びデータ保管装置
JP4958246B2 (ja) 高速検索可能な暗号化のための方法、装置およびシステム
JP6234605B2 (ja) サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
US10037433B2 (en) Secure text retrieval
US20140143540A1 (en) Method and Apparatus for Splitting and Encrypting Files in Computer Device
CN104331408A (zh) 分级内容可寻址存储系统中的块级客户端侧加密
US11256662B2 (en) Distributed ledger system
US8341417B1 (en) Data storage using encoded hash message authentication code
KR20100062013A (ko) 결합 키워드를 이용한 데이터 암호화 방법 및 데이터 검색방법
WO2017122393A1 (ja) 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
JP2012164031A (ja) データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
US20120257743A1 (en) Multiple independent encryption domains
CN105808977A (zh) 一种文件读操作、写操作的处理方法及装置
WO2014141802A1 (ja) 情報処理装置、情報処理システム、および情報処理方法、並びにプログラム
WO2017033843A1 (ja) 検索可能暗号処理システム
JP2019207281A (ja) 大小判定サーバ、大小判定暗号化システム、及び大小判定方法
CN104794243B (zh) 基于文件名的第三方密文检索方法
Suthar et al. Encryscation: An secure approach for data security using encryption and obfuscation techniques for iaas and daas services in cloud environment
TW202119229A (zh) 能夠安全地存取及刪除資料的資料管理方法及系統
JP6493402B2 (ja) 追加装置、削除装置、追加依頼装置、データ検索システム、データ検索方法、および、コンピュータプログラム
TWM591647U (zh) 能夠安全地存取及刪除資料的資料管理系統
WO2014114987A1 (en) Personal device encryption
JP6592301B2 (ja) 匿名化装置、検索装置、方法及びプログラム

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: 14765517

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14765517

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP