WO2017122352A1 - 暗号化装置、暗号化方法及び暗号化プログラム - Google Patents

暗号化装置、暗号化方法及び暗号化プログラム Download PDF

Info

Publication number
WO2017122352A1
WO2017122352A1 PCT/JP2016/051158 JP2016051158W WO2017122352A1 WO 2017122352 A1 WO2017122352 A1 WO 2017122352A1 JP 2016051158 W JP2016051158 W JP 2016051158W WO 2017122352 A1 WO2017122352 A1 WO 2017122352A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
unit
search
encryption
key
Prior art date
Application number
PCT/JP2016/051158
Other languages
English (en)
French (fr)
Inventor
貴人 平野
豊 川合
Original Assignee
三菱電機株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to CN201680076736.4A priority Critical patent/CN108475480B/zh
Priority to EP16884955.2A priority patent/EP3392865B1/en
Priority to US16/061,264 priority patent/US11005645B2/en
Priority to JP2016554744A priority patent/JP6038427B1/ja
Priority to PCT/JP2016/051158 priority patent/WO2017122352A1/ja
Publication of WO2017122352A1 publication Critical patent/WO2017122352A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Definitions

  • the present invention relates to a search system, a management device, a registration device, a search device, a key generation device, a search method, a server program, and a terminal program.
  • the invention relates to a secret search system, for example.
  • the secret search is a technique that enables search with data to be searched and search contents encrypted.
  • the spread of cloud services and the like has made it possible to manage data on the Internet.
  • the data that has been entrusted to the data management such as a server such as a cloud
  • malware such as a computer virus
  • the server administrator acts illegally.
  • Non-Patent Document 1 a method that can perform a “complete match search” that is a simple search has been mainly studied, but in recent years, a more flexible search, for example, “partial match search” has been performed.
  • Methods that can be used for example, see Patent Literature 1 and Non-Patent Literature 2) and methods that can perform “similarity search” (for example, see Non-Patent Literature 3 and Non-Patent Literature 2) have been studied.
  • a method capable of partial match search is referred to as “secret partial match search technology”
  • a secret search technology capable of similar search is referred to as “secret similar search technology”.
  • the secret search technology is roughly divided into two types: a method based on public key encryption such as the RSA encryption method (RSA is a registered trademark) and a method based on common key encryption such as the AES encryption method. There is.
  • Patent Document 1 discloses a technique that achieves a partial match search with encryption by dividing data into units of several characters and encrypting each of them. For example, the data is encrypted by dividing the data in units of one character or two characters. However, if the data is divided by a small number of characters, a lot of the same divided data may appear. Since this technology uses a deterministic encryption method in which the same ciphertext is always generated from the same data, the same ciphertext is generated even if the same divided data is encrypted. There is a problem.
  • the frequency analysis attack refers to the frequency of ciphertext having the same value and public information about the frequency (for example, the distribution of surnames of Japanese people), so that the key used for encryption is not used.
  • it is an attack technique that guesses the original data from the ciphertext.
  • it is conceivable to use a probabilistic encryption method that converts the same data to a different character every time, but if this technology uses such an encryption method, a search can be performed. There is a problem.
  • Non-Patent Document 2 does not receive the frequency analysis attack as described above, and it is possible to reduce the size of encrypted data stored using a certain tree structure (hereinafter referred to as stored encrypted data). Search techniques are disclosed. However, in the present technology, the size of encrypted data used for search (hereinafter referred to as search encrypted data) becomes large, and the number of interactions between the user and the server at the time of search is large, so there is a problem in communication volume. is there.
  • Non-patent document 3 and non-patent document 4 disclose a secret similarity search technique including partial match search. These techniques can perform a search more flexible than the partial match search, but have a problem that both the size of the stored encrypted data and the size of the search encrypted data are large.
  • An object of the present invention is to provide a secret partial match search technique that achieves high security that is resistant to attacks such as frequency analysis, has a small data size, and a small amount of communication.
  • the encryption device of the present invention The character string data D is divided into N element data w 1 , w 2 ,. . . , W N and a data dividing unit, The N element data w 1 , w 2 ,. . . , W N
  • the set A ⁇ A 1 , A 2 ,. . . , A N ⁇
  • a location information assigning unit for generating It is a component included in the element B i (i, w i) , (i, w i w i + 1) ,. . . , (I, w i w i + 1 ... W N ) are encrypted.
  • the ciphertexts of the character string data that are important in performing the frequency analysis attack can be compared. become unable. Therefore, safety against frequency analysis attacks can be improved.
  • FIG. 3 is a diagram of the first embodiment and is a block diagram illustrating a configuration of a secret search system.
  • 3 is a diagram of the first embodiment, and is a block diagram illustrating a configuration of a key generation device.
  • FIG. 3 is a diagram of the first embodiment and is a block diagram illustrating a configuration of a registration device.
  • FIG. 3 is a diagram of the first embodiment and is a block diagram illustrating a configuration of a search device.
  • FIG. 3 is a diagram of the first embodiment and is a block diagram illustrating a configuration of a management device.
  • FIG. 4 is a flowchart of the secret search system key generation / storage process according to the first embodiment.
  • FIG. 3 is a flowchart of data registration processing of the secret search system in the first embodiment.
  • FIG. 3 is a flowchart of the data search process of the secret search system in the first embodiment.
  • FIG. 3 is a diagram of the first embodiment, and is a flowchart illustrating data deletion processing of the secret search system.
  • the figure of Embodiment 1 The figure which shows an example of the hardware resource of a secret search system.
  • FIG. 9 is a diagram of the second embodiment and is a block diagram illustrating a configuration of a key generation device.
  • FIG. 4 is a diagram of the second embodiment and is a block diagram illustrating a configuration of a registration device.
  • FIG. 4 is a diagram of the second embodiment and is a block diagram illustrating a configuration of a search device.
  • FIG. 9 is a block diagram illustrating a configuration of a management device in the second embodiment.
  • FIG. 10 is a flowchart of the key generation / storage process of the search system in the second embodiment.
  • FIG. 10 is a flowchart of the data registration process of the search system in the diagram of the second embodiment.
  • FIG. 9 is a diagram of the second embodiment, and is a flowchart showing data search processing of the search system.
  • FIG. 10 is a diagram of the third embodiment and is a block diagram illustrating a configuration of a key generation device.
  • FIG. 5 is a diagram of the third embodiment, and is a block diagram illustrating a configuration of a registration device.
  • FIG. 10 is a diagram of Embodiment 3, and is a block diagram illustrating a configuration of a search device.
  • FIG. 10 is a flowchart of the key generation / storage process of the search system in the second embodiment.
  • FIG. 10 is a flowchart of the data registration process of the search system in the diagram of the second embodiment.
  • FIG. 9 is a diagram of the second embodiment, and is a flowchar
  • FIG. 10 is a diagram of the third embodiment, and is a block diagram illustrating a configuration of a management device.
  • FIG. 10 is a flowchart of the key generation / storage process of the search system according to the third embodiment.
  • FIG. 10 is a flowchart of the data registration process of the search system according to the third embodiment.
  • FIG. 10 is a flowchart of a data search process of the search system according to the third embodiment.
  • FIG. 1 is a block diagram showing a configuration of a confidential search system 100 according to the present embodiment.
  • the secret search system 100 includes a key generation device 200, a plurality of registration devices 300, a plurality of search devices 400, and a management device 500.
  • the secret search system 100 may include a plurality of key generation devices 200.
  • the secret search system 100 may include only one registration device 300.
  • the secret search system 100 may include only one search device 400.
  • the secret search system 100 may include a plurality of management devices 500.
  • the secret search system 100 is not connected to the key generation device 200, the plurality of registration devices 300, the plurality of search devices 400, and the management device 500 via the Internet 101, but is connected to a LAN (Local / Area / Network).
  • the Internet 101 is a communication path that connects the key generation device 200, the plurality of registration devices 300, the plurality of search devices 400, and the management device 500.
  • the Internet 101 is an example of a network. Instead of the Internet 101, other types of networks may be used.
  • the key generation device 200 creates a key to be used for encryption, and transmits the key to the plurality of registration devices 300 and the plurality of search devices 400 via the Internet 101. This key may be transmitted directly to the plurality of registration devices 300 and the plurality of search devices 400 by mail or the like without using the Internet 101.
  • the registration device 300 is, for example, a personal computer.
  • the registration device 300 is a computer that operates as a registration terminal for registering stored encrypted data in the management device 500.
  • the registration device 300 functions as an encryption device and a registration device. That is, the registration device 300 generates stored encrypted data and requests the management device 500 to store the stored encrypted data.
  • the registration device 300 functions as a deletion request device. That is, the registration device 300 requests the management device 500 to delete the stored encrypted data stored.
  • the search device 400 is, for example, a personal computer.
  • the search device 400 is a computer that transmits the encrypted search data to the management device 500, receives the encrypted search result from the management device 500, and outputs the encrypted search result.
  • the search device 400 functions as a search request device. That is, the search device 400 transmits the encrypted search data to the management device 500 and requests collation between the stored encrypted data and the search encrypted data.
  • the search device 400 functions as an output device. That is, the search device 400 outputs a search result returned from the management device 500.
  • the management device 500 is a device having a large-capacity recording medium that stores the storage encrypted data created by the registration device 300.
  • the management device 500 functions as a storage device. In other words, if there is a request for storing the stored encrypted data from the registration device 300, the management apparatus 500 stores the stored encrypted data.
  • the management device 500 functions as a search device. That is, if there is a search request from the search device 400, the management device 500 collates the stored encrypted data with the search encrypted data and transmits the search result to the search device 400.
  • the management device 500 functions as a deletion device. That is, if there is a request for deletion of stored encrypted data from the registration device 300, the management device 500 deletes the stored encrypted data stored.
  • any one of the key generation device 200, the registration device 300, and the search device 400 may be included in the same personal computer. Note that both the storage encryption data and the search encryption data are encrypted. Other than the registration device 300 and the search device 400 that do not have a key, it is difficult to obtain useful information from the stored encrypted data and the search encrypted data.
  • the confidential search system 100 includes a key generation device 200, a registration device 300, a search device 400, and a management device 500.
  • the configuration of the key generation device 200, the configuration of the registration device 300, the configuration of the search device 400, and the configuration of the management device 500 will be described in order.
  • FIG. 2 is a block diagram showing a configuration of the key generation apparatus 200.
  • the key generation device 200 includes a key generation unit 201, a parameter generation unit 202, and a transmission unit 203.
  • the key generation device 200 includes a recording medium that stores data used by each unit of the key generation device 200.
  • the key generation unit 201 generates a key K for encrypting and decrypting data. Since the key K is secret information stored in the registration device 300 and the search device 400, it is generated strictly. In addition, although it demonstrated using the common key encryption technique here, you may use a public key encryption technique.
  • the parameter generation unit 202 generates parameters necessary for data encryption and data verification. For example, the maximum length L when the registration data is divided into several character strings corresponds to the parameter. L is an integer greater than 0. Since L is not secret information, it may be publicly disclosed.
  • the transmission unit 203 transmits the key K generated by the key generation unit 201 to the registration device 300 and the search device 400, and the parameter L generated by the parameter generation unit includes the registration device 300, the management device, and the like. To 500.
  • FIG. 3 is a block diagram showing a configuration of the registration apparatus 300.
  • the registration apparatus 300 includes a reception unit 301, a key storage unit 302, a parameter storage unit 303, an input unit 304, a data division unit 305, a partial character string generation unit 306, position information
  • An allocation unit 307, an encryption unit 308, and a transmission unit 309 are provided.
  • the registration device 300 includes a recording medium that stores data used by each unit of the registration device 300.
  • the receiving unit 301 receives the key K and the parameter L transmitted from the key generation device 200.
  • the key storage unit 302 stores the key K received from the reception unit 301.
  • the parameter storage unit 303 stores the parameter L received from the reception unit 301.
  • the input unit 304 receives storage data and a data name input from a data registrant.
  • the storage data D and the data name are described as ID (D). If the data registrant does not input a data name, the input unit 304 may assign a random number to the input data name ID (D) of the stored data D, or duplicate the data name of other stored data. In order to avoid this, an integer value greater than 0 may be assigned in order.
  • the data name ID (D) is an identifier for identifying the stored data D.
  • the input unit 304 receives a deletion data name for the stored encrypted data to be deleted from the data registrant.
  • the deletion data name may be anything that can specify the stored data, such as the data name input at the time of registration, the time of registration, and the name of the data registrant.
  • the data division unit 305 reads the parameter L from the parameter storage unit 303 and divides the storage data D received from the input unit 304 into (w 1 ,..., W L ). However, each wi (1 ⁇ i ⁇ L) may be obtained by dividing the data in order of one character or a plurality of characters, or may be divided in units of words.
  • the data D may be divided so that (w 1 ,..., W k ) and k ⁇ L. If the number of divisions is less than L no matter how the data is divided, it may remain below L, or a special character such as “*” or null may be used to compensate for the insufficient number of characters.
  • the length may be adjusted to L. In the following, the case where the number of divisions is set to L will be described.
  • the partial character string generation unit 306 generates the following set A from the divided data (w 1 ,..., W L ) received from the data dividing unit 305.
  • A ⁇ (w 1 ), (w 1 w 2 ),..., (W 1 ... W L ) ⁇ , ⁇ (w 2 ), (w 2 w 3 ),. 2 ⁇ w L) ⁇ , ⁇ , ⁇ (w L) ⁇ .
  • the set A is referred to as a partial character string set.
  • the position information assignment unit 307 assigns position information to each partial character string in the partial character string set A received from the partial character string generation unit 306 as follows, and generates a set B.
  • B ⁇ (1, w 1 ), (1, w 1 w 2 ),..., (1, w 1 ... W L ) ⁇ , ⁇ (2, w 2 ), (2, w 2 w 3), ⁇ , (2, w 2 ⁇ w L) ⁇ , ⁇ , ⁇ (L, w L) ⁇ .
  • the set B is referred to as a partial character string set with position information.
  • a set of ciphertexts obtained by encrypting all (i, w) is written as C (D). In the following, the pair (ID (D), C (D)) This is called a stored encrypted data set.
  • the transmission unit 309 transmits the stored encrypted data set (ID (D), C (D)) received from the encryption unit 308 to the management apparatus 500. In addition, the transmission unit 309 transmits the deletion data name received from the input unit 304 to the management apparatus 500.
  • FIG. 4 is a block diagram showing the configuration of the search device 400.
  • the search device 400 includes a reception unit 401, a key storage unit 402, an input unit 403, an encryption unit 404, a transmission unit 405, and an output unit 406.
  • the search device 400 includes a recording medium that stores data used by each unit of the search device 400.
  • the receiving unit 401 receives the key K transmitted from the key generation apparatus 200 or the search result transmitted from the management apparatus 500.
  • the key storage unit 402 stores the key K received from the reception unit 401.
  • the input unit 403 receives search data s input from a data searcher. Further, the input unit 403 may receive a plurality of storage data names from the data searcher that specify the search data and a storage encrypted data set to be searched at the same time as the search data.
  • the encryption unit 404 reads the key K from the key storage unit 402 and generates the ciphertext t using the key K for the search data s received from the input unit 403 as follows.
  • t E (K, s).
  • this t is referred to as search encrypted data.
  • the transmission unit 405 transmits the search encrypted data t received from the encryption unit 404 to the management apparatus 500. If the stored data name is input simultaneously with the search data from the data searcher, both the search encrypted data and the stored data name are transmitted to the management apparatus 500.
  • the output unit 406 outputs the search result to the data searcher based on the search result received from the receiving unit 401. If the search result is encrypted, the search result is decrypted using the key K stored in the key storage unit 402 and output.
  • FIG. 5 is a block diagram showing the configuration of the management apparatus 500.
  • the management apparatus 500 includes a reception unit 501, a parameter storage unit 502, a data storage unit 503, a collation unit 504, and a transmission unit 505.
  • the management device 500 includes a recording medium that stores data used by each unit of the management device 500.
  • the receiving unit 501 receives the parameter L transmitted from the key generation device 200, the stored encrypted data set (ID (D), C (D)) and the deleted data name transmitted from the registration device 300, and the retrieval device 400.
  • the transmitted search encrypted data t and the stored data name are received.
  • the parameter storage unit 502 stores the parameter L received from the reception unit 501.
  • the data storage unit 503 stores (ID (D), C (D)) of the storage encrypted data set received from the reception unit 501. If necessary, the date and time of transmission may be stored at the same time. Further, the data storage unit 503 deletes the stored encrypted data set stored based on the deleted data name received from the receiving unit 501.
  • the collation unit 504 generates an empty set R related to the search result, reads all stored encrypted data sets (ID (D), C (D)) from the data storage unit 503, and retrieves the search encryption received from the reception unit 501. Based on the digitized data t, collation and search results are generated as follows.
  • each Tp is referred to as collation data, ⁇ T1, ..., TL ⁇ Is referred to as a collation data set.
  • the set R that is finally generated as a result of this processing is called a search result. If the receiving unit 501 also receives the stored data name from the search device 400, the matching unit 504 reads only the target stored encrypted data set from the data storing unit 503 based on the received data name, and performs similar processing. Do.
  • the transmission unit 505 transmits the search result R received from the collation unit 504 to the search device 400.
  • FIG. 6 is a flowchart showing the key generation / storage process of the secret search system 100.
  • Steps S601 to S612 in FIG. 6 are processes executed by the key generation device 200, the registration device 300, the search device 400, and the management device 500.
  • Steps S601 to S605 are executed by the key generation apparatus 200
  • steps S606 to S608 are executed by the registration apparatus 300
  • steps S609 to S610 are executed by the search apparatus 400
  • steps S611 to S612 are executed by the management apparatus 500.
  • step numbers such as step S601 will be referred to as S601. The same applies to the step numbers in FIGS. 7 to 9, FIGS. 15 to 17 of the embodiment, and FIGS. 22 to 24 of the embodiment 3.
  • step S601 the key generation unit 201 generates a key K for encrypting data.
  • the key generation unit 201 may set a pair of the public key PK and the secret key SK as the key K and perform the subsequent processing in the same manner.
  • the parameter generation unit 202 generates a parameter L.
  • L is the maximum number of character strings that appear when the stored data is divided.
  • the transmission unit 203 transmits the key K generated in step S ⁇ b> 601 and the parameter L generated in step S ⁇ b> 602 to the registration apparatus 300.
  • the transmission unit 203 transmits the key K generated in S601 to the search device 400.
  • the transmission unit 203 transmits the parameter L generated in S602 to the management apparatus 500.
  • the reception unit 301 receives the key K and the parameter L transmitted in S603.
  • the key storage unit 302 stores the key K received in step S606 in a storage medium.
  • the parameter storage unit 303 stores the parameter L received in S606 in a storage medium.
  • step S609 the reception unit 401 receives the key K transmitted in step S604.
  • step S610 the key storage unit 402 stores the key K received in step S609 in a storage medium.
  • step S611 the reception unit 501 receives the parameter L transmitted in step S605.
  • step S612 the parameter storage unit 502 stores the parameter L received in step S611 in a storage medium.
  • the key generation / storage process of the secret search system 100 ends. Since the key K is secret information, the key storage unit 302 and the key storage unit 402 need to be stored strictly so that the key K does not leak outside.
  • FIG. 7 is a flowchart showing the registration process of the secret search system 100. 7 are processing executed by the registration apparatus 300 and the management apparatus 500. S701 to S706 are processes executed by the registration apparatus 300, and S707 to S708 are processes executed by the management apparatus 500.
  • the input unit 304 receives the storage data D and the data name ID (D) input from the data registrant. As described above, if the data registrant does not input a data name, the input unit 304 may assign the data name ID (D) of the input stored data D as a random number, or other stored data An integer value greater than 0 may be assigned in order so as not to overlap with the data name.
  • the data dividing unit 305 reads the parameter L from the parameter storage unit 303, and divides the storage data D received from the data registrant in S701 into (w 1 ,..., W L ).
  • each w i (1 ⁇ i ⁇ L) may be obtained by sequentially dividing the data by one character or a plurality of characters, or may be divided in units of words.
  • the data D may be divided so that (w 1 ,..., W k ) and k ⁇ L. If the number of divisions is less than L, no matter how the data is divided, it may remain below L, or a special character such as “*” or null may be used to compensate for the insufficient number of characters. Good.
  • the data dividing unit 305 converts the storage data D, which is character string data, into N element data w 1 ,. . . , It is divided into w N.
  • N is L or less.
  • S703 and after, the case where the storage data D is divided into L will be described.
  • L may be read as N in the following description.
  • the partial character string generation unit 306 generates the following partial character string set A from the divided data (w 1 ,..., W L ) generated in S702.
  • A ⁇ A 1 , A 2 ,. . . , A L ⁇
  • the elements of set A are as follows.
  • a L ⁇ (w L ) ⁇ , It is.
  • the element A i may be referred to as a component. That is, A i has (L ⁇ i + 1) components (w i ), (w i w i + 1 ),..., (W i ... W L ).
  • the position information allocation unit 307 allocates position information to each partial character string in the partial character string set A generated in S703 as follows, and generates a partial character string set B with position information.
  • the set B ⁇ B 1 , B 2 ,. . . , B L ⁇
  • Elements B i ⁇ (i, w i ), (i, w i w i + 1 ),. . . , (I, w i w i + 1 ... W L ) ⁇ , It is.
  • Element B i is generated by adding position information i to each component of element A i .
  • ⁇ i ⁇ in the position information i is the subscript ⁇ i ⁇ in the element A i .
  • B 1 ⁇ (1, w 1 ), (1, w 1 w 2 ),..., (1, w 1 ... W L ) ⁇
  • B 2 ⁇ (2, w 2 ), (2, w 2 w 3 ),..., (2, w 2 ... W L ) ⁇ , . . . .
  • B L ⁇ (L, w L ) ⁇
  • B i elements (i, w i ), (i, w i w i + 1 ), ..., (i, w i ... w L ), May be referred to as components below.
  • the position information allocation unit 307 is a component of the element A i of the set A (w i ), (w i w i + 1 ),. . . , (W i w i + 1 ... W L )
  • Encryption unit 308 in this way, in element B i (i, w i) , (i, w i w i + 1) ,. . . , (I, w i w i + 1 ... W L ) are encrypted.
  • the encryption unit 308 converts each component included in the element B i into storage data D that is character string data. Encryption is performed together with the data name ID (D) of the identifier to be identified.
  • E is an encryption function, and examples thereof include a common key encryption method such as AES, a message authentication code such as HMAC, and a hash function such as SHA-256.
  • the transmission unit 309 transmits the stored encrypted data set (ID (D), C (D)) generated in S705 to the management apparatus 500.
  • the receiving unit 501 receives the stored encrypted data set (ID (D), C (D)) transmitted in S706.
  • the data storage unit 503 stores the stored encrypted data set (ID (D), C (D)) received in S707.
  • FIG. 8 is a flowchart showing the search process of the secret search system 100.
  • S801 to S810 in FIG. 8 are processes executed by the search device 400 and the management device 500.
  • S801 to S803 and S809 to S810 are processes executed by the search apparatus 400, and
  • S804 to S808 are processes executed by the management apparatus 500.
  • step S ⁇ b> 801 the input unit 403 receives search data s input from a data searcher. A plurality of search data may be received simultaneously. In that case, the subsequent processing may be performed in the same manner for each search data. Further, as described above, the input unit 403 may receive a plurality of storage data names from the data searcher so as to specify the search data and the storage encryption data to be searched at the same time as the search data.
  • the transmission unit 405 transmits the search encryption data t generated in step S802 to the management apparatus 500. If the storage data name is also input in S801, the storage data name is also sent at the same time.
  • the receiving unit 501 receives the search encryption data t transmitted in S803. If the stored data name is also transmitted in S803, the stored data name is also received. In step S ⁇ b> 805, the collation unit 504 reads out the stored encrypted data set (ID (D), C (D)) from the data storage unit 503. If the storage data name is also received in S804, only the target storage encrypted data set is read based on the storage data name. If the stored data name has not been received in S804, all stored encrypted data sets stored are read out.
  • ID (D), C (D) the stored encrypted data set
  • the collation unit 504 reads the parameter L from the parameter storage unit 502, and receives it in S804 based on the ID (D) of the stored encrypted data set (ID (D), C (D)) read in S805.
  • Each verification data Tp (1 ⁇ p ⁇ L) for ID (D) is generated from the search encryption data t.
  • the collation unit 504 In S807, the collation unit 504 generates an empty set R related to the search result, and checks whether each collation data Tp (1 ⁇ p ⁇ L) generated in S806 is included in C (D). If Tp is included in C (D), add the pair (ID (D), p) to R. If there are a plurality of collation data sets generated in S806, a pair related to the search result is added to the same R. In S808, the transmission unit 505 transmits the search result R generated in S807 to the search device 400.
  • step S809 the reception unit 401 receives the search result R transmitted in step S808.
  • the output unit 406 outputs the search result R received in S809 to the data searcher as follows. For each (ID (D), p) included in the search result R, “search data appears at the p-th position of ID (D)” is output. If R is an empty set, “No search data was included in any data” is output. By S810, the search process of the secret search system 100 ends.
  • FIG. 9 is a flowchart showing the deletion process of the secret search system 100.
  • S901 to S904 in FIG. 9 are processes executed by the registration apparatus 300 and the management apparatus 500.
  • S901 to S902 are processes executed by the registration apparatus 300, and
  • S903 to S904 are processes executed by the management apparatus 500.
  • step S ⁇ b> 901 the input unit 304 receives a deletion data name for a stored encrypted data set to be deleted from a data registrant.
  • the deletion data name may be anything as long as it can identify the stored encrypted data set.
  • the transmission unit 309 transmits the deletion data name input in step S901 to the management apparatus 500.
  • step S903 the reception unit 501 receives the deletion data name transmitted from the registration apparatus 300 in step S902.
  • the data storage unit 503 deletes the stored encrypted data set stored based on the deleted data name received in S903.
  • the deletion process of the confidential search system 100 ends by S904.
  • B1 ⁇ (1, A), (1, AB), (1, ABC) ⁇ , ⁇ (2, B), (2, BC) ⁇ , ⁇ (3, C) ⁇
  • B2 ⁇ (1, B), (1, BC) ⁇ , ⁇ (2, C) ⁇ .
  • C (D1) ⁇ C11, C12, C13, C14, C15, C16 ⁇
  • C (D2) ⁇ C21, C22, C23 ⁇ .
  • Note C E (E (K, s), p, ID (D)).
  • FIG. 10 is a diagram illustrating an example of hardware resources of the key generation device 200, the registration device 300, the search device 400, and the management device 500 according to the first embodiment.
  • the key generation device 200, the registration device 300, the search device 400, and the management device 500 include a CPU 1001 (Central Processing Unit).
  • CPU 1001 Central Processing Unit
  • the CPU 1001 is connected to hardware devices such as a ROM 1003, a RAM 1004, a communication board 1005, a display 1011 (display device), a keyboard 1012, a mouse 1013, a drive 1014, and a magnetic disk device 1020 via a bus 1002, and these hardware devices. To control.
  • the drive 1014 is a device that reads and writes storage media such as an FD (Flexible Disk Drive), a CD (Compact Disc), and a DVD (Digital Versatile Disc).
  • FD Flexible Disk Drive
  • CD Compact Disc
  • DVD Digital Versatile Disc
  • ROM 1003, RAM 1004, magnetic disk device 1020, and drive 1014 are examples of storage devices.
  • a keyboard 1012, a mouse 1013, and a communication board 1005 are examples of input devices.
  • the display 1011 and the communication board 1005 are examples of output devices.
  • the communication board 1005 is wired or wirelessly connected to a communication network such as a LAN (Local Area Network), the Internet, or a telephone line.
  • a communication network such as a LAN (Local Area Network), the Internet, or a telephone line.
  • the magnetic disk device 1020 stores an OS 1021 (operating system), a program group 1022, and a file group 1023.
  • the program group 1022 includes a program for executing a function described as “ ⁇ unit” in the present embodiment.
  • Programs for example, an encryption program, a data search program, and a data registration program
  • the file group 1023 includes various types of data (input, output, determination result, calculation result, processing result, etc.) used in “ ⁇ unit” described in this embodiment.
  • arrows included in the configuration diagrams and flowcharts mainly indicate input / output of data and signals.
  • the processing of the present embodiment described based on the flowchart and the like is executed using hardware such as the CPU 1001, a storage device, an input device, and an output device.
  • what is described as “to part” may be “to circuit”, “to device”, “to device”, and “circuitry”, and “to step”, “to procedure”, It may be “ ⁇ processing”. That is, what is described as “ ⁇ unit” may be implemented by any of firmware, software, hardware, or a combination thereof.
  • Embodiment 1 has the following effects, for example.
  • the search result obtained from the stored encrypted data and the search encrypted data. Therefore, the stored data is not stored for an entity having no key such as a server. And the contents of search data are never known.
  • the search result in addition to the fact that the search has been hit, the search result also has position information about where the search data appears, so that it has a flexible partial match search function.
  • the search encrypted data is composed of only one ciphertext, the data size used for the search is very small, and the data searcher and the server exchange only once during the search. Therefore, it is possible to efficiently perform a secret partial match search.
  • the present embodiment since all can be configured from the common key encryption technology, an efficient secret partial match search can be realized.
  • Embodiment 2 the secret search system of this embodiment will be described.
  • ID (D), C (D)) Applicable immediately.
  • the technique disclosed in the second embodiment cannot be applied to the newly added stored encrypted data set with the search encrypted data t used in the past. Therefore, higher safety can be achieved.
  • a method using multiple encryption such as a hash chain is disclosed.
  • E ⁇ M (K, w) for the encryption function E
  • (K, M) is an initial value
  • the encryption function E is calculated M times (in other words, M times of multiple encryption is performed).
  • a hash chain is well known as such multiple encryption.
  • E ⁇ M (K, w) Is the search encryption data t for the data stored in the Mth time.
  • the secret search system 100 of this embodiment is partially different from that of the first embodiment.
  • the key generation device 200 is changed to the key generation device 200a
  • the registration device 300 is changed to the registration device 300a
  • the search device 400 is changed to the search device 400a
  • the management device 500 is changed to the management device 500a.
  • the configuration of the present embodiment will be described.
  • the configuration of the key generation device 200a the configuration of the registration device 300a, the configuration of the search device 400a, and the configuration of the management device 500a will be described in order.
  • FIG. 11 is a block diagram showing the configuration of the key generation device 200a.
  • the key generation device 200a includes a key generation unit 201, a parameter generation unit 202a, and a transmission unit 203a.
  • the key generation device 200a includes a recording medium that stores data used in each unit of the key generation device 200a. Since the description of the key generation unit 201 has already been given, it will be omitted.
  • the parameter generation unit 202a generates the parameter L that represents the maximum number of times of multiple encryption at the same time as generating the parameter L described above.
  • This M represents the maximum number of stored encrypted data sets that can store stored data in the management apparatus 500a using the same key K. If it is desired to store the stored encrypted data sets beyond M, new M 'keys can be registered by generating new keys K' and M '. M is an integer greater than 1. Further, since M is not secret information like L, it may be publicly disclosed.
  • the transmission unit 203a transmits the key K generated by the key generation unit 201 to the registration device 300a and the search device 400a, and the parameters (L, M) generated by the parameter generation unit 202a It transmits to 300a, search device 400a, and management device 500a.
  • FIG. 12 is a block diagram showing the configuration of the registration device 300a.
  • the registration device 300a includes a receiving unit 301a, a key storage unit 302, a parameter storage unit 303a, an input unit 304, a data division unit 305, a partial character string generation unit 306, and position information.
  • An allocation unit 307, a multiple encryption unit 308a, and a transmission unit 309a are provided.
  • the registration device 300a includes a recording medium that stores data used in each unit of the registration device 300a. Descriptions of the key storage unit 302, the input unit 304, the data division unit 305, the partial character string generation unit 306, and the position information allocation unit 307 are omitted because they have already been described.
  • the receiving unit 301a receives the key K and parameters (L, M) transmitted from the key generation device 200a.
  • the parameter storage unit 303a stores the parameters (L, M) received from the reception unit 301a, and the stored encrypted data set stored in the management device 500a encrypted using the key K and the parameter M.
  • the parameter m representing the number is also stored.
  • the multiple encryption unit 308 a reads the key K from the key storage unit 302, the parameter m from the parameter storage unit 303 a, and the portion with position information in the partial character string set B with position information received from the position information allocation unit 307.
  • a set of ciphertexts obtained by encrypting all (p, w) is written as C (D).
  • (ID (D), m, C (D)) Is called a stored encrypted data set.
  • E is an encryption function such as AES
  • a key is required every time E is calculated. May be determined in advance and stored as parameters, or L or M of parameters already stored may be used as a key. If E is a hash function, no such key is needed for multiple encryption.
  • the transmission unit 309a transmits the stored encrypted data set (ID (D), m, C (D)) received from the encryption unit 308 to the management device 500a, and transmits the parameter m to the search device 400a. . In addition, the transmission unit 309 a transmits the deletion data name received from the input unit 304 to the management apparatus 500.
  • FIG. 13 is a block diagram showing the configuration of the search device 400a.
  • the search device 400a includes a receiving unit 401a, a key storage unit 402, an input unit 403, a multiple encryption unit 404a, a transmission unit 405, an output unit 406, and a parameter storage unit 407a. Is provided.
  • the search device 400a includes a recording medium that stores data used in each unit of the search device 400a.
  • the receiving unit 401a receives the key K and parameter M transmitted from the key generation device 200a, the parameter m transmitted from the registration device 300a, and the search result transmitted from the management device 500a.
  • the multiple encryption unit 404a reads the key K from the key storage unit 402 and the parameter m from the parameter storage unit 407a, and uses the key K and the parameter m for the search data s received from the input unit 403 to
  • the ciphertext t is generated as follows.
  • the multiple encryption unit 404a t E ⁇ (M + 1 ⁇ m) (K, s) Is generated.
  • this t is referred to as search encrypted data.
  • E ⁇ i (i ⁇ 1) is calculated, if E is an encryption function such as AES, a key is required every time E is calculated. All keys such as 1 may be determined in advance and stored as parameters, or the already stored parameters L and M may be used as keys. If E is a hash function, no such key is needed for multiple encryption.
  • the parameter storage unit 407a stores the parameter M received from the reception unit 401.
  • the parameter storage unit 407a updates the m parameters (M, m) that are already stored.
  • FIG. 14 is a block diagram showing the configuration of the management device 500a.
  • the management apparatus 500a includes a receiving unit 501a, a parameter storage unit 502a, a data storage unit 503, a collation unit 504a, a transmission unit 505, and a multiple encryption unit 506a.
  • the management device 500a includes a recording medium that stores data used by each unit of the management device 500a.
  • the receiving unit 501a includes parameters (L, M) transmitted from the key generation device 200a, storage encrypted data sets (ID (D), m, C (D)) transmitted from the registration device 300a, and deletion data.
  • the search encrypted data t and the stored data name transmitted from the name and search device 400a are received.
  • the parameter storage unit 502a also stores the parameters (L, M) received from the receiving unit 501a and m of the stored encrypted data set (ID (D), m, C (D)).
  • the collation unit 504a generates an empty set R related to the search result, and stores all stored encrypted data sets (ID (Di), m, C (Di)) (1 ⁇ i ⁇ m) from the data storage unit 503. Read and multiple encrypted data set ⁇ (1, t1), (2, t2),..., (M, tm) ⁇ received from multiple encryption unit 506a described later Based on the above, collation and search results are generated as follows.
  • each Tp_i is referred to as collation data for ID (Di), ⁇ T1, ..., TL ⁇ Is referred to as a collation data set for ID (Di). Also, the set R that is finally generated as a result of this processing is called a search result.
  • the matching unit 504a reads only the target stored encrypted data set from the data storing unit 503 based on the received data name, and performs similar processing. Do.
  • the multiple encryption unit 506a reads the parameter m from the parameter storage unit 502a, and generates the following multiple encrypted data based on the search encrypted data t received from the reception unit 501.
  • t1 E ⁇ (m ⁇ 1) (t)
  • t2 E ⁇ (m ⁇ 2) (t)
  • Set ⁇ (1, t1), (2, t2), ..., (m, tm) ⁇ Is called a multiple encrypted data set.
  • E ⁇ i (i ⁇ 1) is calculated, if E is an encryption function such as AES, a key is required every time E is calculated. All keys such as 1 may be determined in advance and stored as parameters, or the already stored parameters L and M may be used as keys. If E is a hash function, no such key is needed for multiple encryption.
  • FIG. 15 is a flowchart showing a key generation / storage process of the secret search system 100 according to this embodiment.
  • S601 to S612a in FIG. 15 are processes executed by the key generation device 200a, the registration device 300a, the search device 400a, and the management device 500a.
  • Steps S601 to S605a are executed by the key generation device 200a
  • steps S606a to S608a are executed by the registration device 300a
  • steps S609a to S610a2 are executed by the search device 400a
  • steps S611a through S612a are executed by the management device 500a.
  • the parameter generation unit 202a generates parameters L and M.
  • L is the maximum number of character strings that appear when the stored data is divided
  • M is the maximum number of stored encrypted data sets that can store the stored data in the management apparatus 500a using the same key K.
  • the transmission unit 203a transmits the key K generated in S601 and the parameters (L, M) generated in S602a to the registration apparatus 300a.
  • the transmission unit 203a transmits the key K generated in S601 and the parameters (L, M) generated in S602a to the search device 400a.
  • the transmission unit 203a transmits the parameters (L, M) generated in S602 to the management apparatus 500a.
  • the reception unit 301a receives the key K and parameters (L, M) transmitted in S603a.
  • the parameter storage unit 303a stores the parameters (L, M) received in S606a in a storage medium.
  • the reception unit 401a receives the key K and parameters (L, M) transmitted in S604a.
  • the key storage unit 402 stores the key K received in S609a in a storage medium.
  • the parameter storage unit 407a stores the parameters (L, M) received in S609a in a storage medium.
  • the reception unit 501a receives the parameters (L, M) transmitted in S605a.
  • the parameter storage unit 502a stores the parameters (L, M) received in S611a in a storage medium.
  • the key generation / storage process of the secret search system 100 ends.
  • FIG. 16 is a flowchart showing a registration process of the secret search system 100 according to the second embodiment.
  • S701 to S712a in FIG. 16 are processes executed by the registration device 300a, the search device 400a, and the management device 500a.
  • S701 to S706, S709a, and S712a are processes executed by the registration apparatus 300a
  • S707 to S708a2 are processes performed by the management apparatus 500a
  • S710a to S711a are processes performed by the search apparatus 400a.
  • S701 to S704 and S706 to S707 in this search process are the same as those in the first embodiment, and thus are omitted here.
  • the multiple encryption unit 308 reads the key K from the key storage unit 302 and the parameter m from the parameter storage unit 303a, and each portion with position information in the partial character string set B with position information generated in S704.
  • a ciphertext C of a character string is generated as follows.
  • the multi-encryption unit 308 performs the following on each pair (p, w) of the position information and the partial character string.
  • C E (E ⁇ (M + 1-m) (K, w), p, ID (D)) And calculate.
  • a set of ciphertexts obtained by encrypting all (p, w) is defined as C (D), and a stored encrypted data set (ID (D), m, C (D)) is generated.
  • the data storage unit 503 stores the storage encrypted data set (ID (D), m, C (D)) received in S707.
  • the parameter storage unit 502a updates the value of m stored from m of the stored encrypted data set (ID (D), m, C (D)) received in S707.
  • the transmission unit 309a transmits the parameter m read in S705a to the search device 400a.
  • the reception unit 401a receives the parameter m transmitted in S710a.
  • the parameter storage unit 407a updates the stored parameter m by replacing it with the parameter m received in S711a.
  • the parameter storage unit 303a increments the value of the parameter m by 1 and updates the value of m.
  • the registration process of the confidential search system 100 ends.
  • FIG. 17 is a flowchart showing search processing of the secret search system 100 according to the second embodiment.
  • S801 to S810 in FIG. 17 are processes executed by the search device 400a and the management device 500a.
  • S801 to S803 and S809 to S810 are processes executed by the search apparatus 400a, and S804 to S808 are processes executed by the management apparatus 500.
  • S801, S803, S804, and S808 to S810 in the search process are the same as those in the first embodiment, and are omitted here.
  • the multiple encryption unit 506a reads the parameter m from the parameter storage unit 502a, and based on the search encrypted data t received in S804, the following multiple encrypted data set ⁇ (1, t1), (2 , T2),..., (M, tm) ⁇ .
  • t1 E ⁇ (m ⁇ 1) (t)
  • t2 E ⁇ (m ⁇ 2) (t)
  • the collation unit 504a reads the stored encrypted data set (ID (D), C (D)) from the data storage unit 503. If the storage data name is also received in S804, only the target storage encrypted data set is read based on the storage data name.
  • the matching unit 504a generates an empty set R related to the search result, The following processing is performed for each p (1 ⁇ p ⁇ L). It is confirmed whether each collation data Tp_i (1 ⁇ p ⁇ L) corresponding to the ID (Di) generated in S806a is included in C (Di). If Tp_i is included in C (Di), add the pair (ID (Di), p) to R.
  • the search process of the secret search system 100 ends by S810. Also in this embodiment, it is possible to delete the stored encrypted data set by performing the same deletion process as in the first embodiment.
  • D1 (A, B, C).
  • A1 ⁇ (A), (AB), (ABC) ⁇ , ⁇ (B), (BC) ⁇ , ⁇ (C) ⁇ And generated.
  • B1 ⁇ (1, A), (1, AB), (1, ABC) ⁇ , ⁇ (2, B), (2, BC) ⁇ , ⁇ (3, C) ⁇ .
  • search result R ⁇ (1,2) ⁇ is generated.
  • a search result such as “search data BC appears from the“ second ”position of the data whose storage data name is“ 1 ”” is output.
  • D2 registration processing is performed.
  • D2 (B, C).
  • A2 ⁇ (B), (BC) ⁇ , ⁇ (C) ⁇ is generated.
  • B2 ⁇ (1, B), (1, BC) ⁇ , ⁇ (2, C) ⁇ is generated.
  • E ⁇ 1 E.
  • the stored encrypted data set (2, 2, C (D2)) is stored through S707 and S708a1.
  • S708a2 to S712a the parameter m of the parameter storage unit 303a is updated to 3
  • the parameter m of the parameter storage unit 407a and the parameter storage unit 502a is updated to 2.
  • T1_1 E (t1,1,1)
  • T2_1 E (t1,2,1)
  • T3_1 E (t1,3,1)
  • T1_2 E (t2,1,2)
  • T2_2 E (t2,2,2)
  • T3_2 E (t2, 3, 2)
  • T1_1, T2_1, and T3_1 are included in C (D1)
  • T1_2, T2_2, and T3_2 are included in C (D2).
  • T2_1 is included in C (D1) (matches C15)
  • search data BC appears from the“ second ”position of the data with the stored data name“ 1 ””, “from the“ first ”position of the data with the stored data name“ 2 ”.
  • a search result such as “search data BC appears” is output.
  • Embodiment 3 Next, the secret search system of this embodiment will be described.
  • the second embodiment higher security can be achieved by using multiple encryption such as a hash chain, but the number of stored encrypted data sets that can be generated and stored with the same key K depends on the parameter M and the linear type. Therefore, it is necessary to increase M to some extent. On the other hand, if M is too large, multiple encryption processing takes time. Therefore, in the present embodiment, even if the same M as in the second embodiment is selected by storing a plurality of stored data without storing the stored data one by one, the same key K Disclose a technology that can increase the maximum number of stored data that can be encrypted and stored in the Internet and improve search efficiency.
  • a technique for storing a plurality of stored data simultaneously as an index without storing the stored data one by one is disclosed.
  • the secret search system 100 of the present embodiment is partially different from the second embodiment.
  • the key generation device 200a is changed to the key generation device 200b
  • the registration device 300a is changed to the registration device 300b
  • the search device 400a is changed to the search device 400b
  • the management device 500a is changed to the management device 500b.
  • the configuration of the present embodiment will be described.
  • the configuration of the key generation device 200b the configuration of the registration device 300b, the configuration of the search device 400b, and the configuration of the management device 500b will be described in order.
  • FIG. 18 is a block diagram showing a configuration of the key generation device 200b.
  • the key generation device 200b includes a key generation unit 201, a parameter generation unit 202b, and a transmission unit 203b.
  • the key generation device 200b includes a recording medium that stores data used in each unit of the key generation device 200b. Since the description of the key generation unit 201 has already been given, it will be omitted.
  • the parameter generation unit 202b generates the parameter N that represents the maximum number of stored data that can be stored at the same time as the above-described parameters L and M are generated. That is, each index can hold information on up to N pieces of stored data. If the number of stored data to be stored at a time exceeds N, a plurality of indexes are generated so that each index is associated with at most N stored data. N is an integer greater than 1. Since N is not secret information like L and M, it may be publicly disclosed.
  • the transmission unit 203b transmits the key K generated by the key generation unit 201 to the registration device 300b and the search device 400b, and the parameters (L, M, N) generated by the parameter generation unit 202b are The information is transmitted to the registration device 300b and the management device 500b, and the parameters (L, M) are transmitted to the search device 400b.
  • FIG. 19 is a block diagram showing the configuration of the registration device 300b.
  • the registration device 300b includes a receiving unit 301b, a key storage unit 302, a parameter storage unit 303b, an input unit 304b, a data division unit 305, a partial character string generation unit 306, and position information.
  • An allocation unit 307, a multiple encryption unit 308b, a transmission unit 309b, and an aggregation unit 310b are provided.
  • the registration device 300b includes a recording medium that stores data used in each unit of the registration device 300b.
  • the receiving unit 301b receives the key K and parameters (L, M, N) transmitted from the key generation device 200b.
  • the parameter storage unit 303b stores the parameters (L, M, N) received from the reception unit 301b, and the number of indexes stored in the management device 500a encrypted using the key K and the parameter M. Also store the parameter m to represent.
  • the initial value of m represents 1, and when m is read from the multiple encryption unit 308a, the value of m is incremented by 1 and the value of m is updated.
  • the input unit 304b receives a set of stored data and stored data name pairs ⁇ (ID (D1), D1), ..., (ID (Dn), Dn) ⁇ from the data registrant, Index name ID (I) Receive.
  • the data dividing unit 305, the partial character string generating unit 306, and the position information allocating unit 307 perform the above ⁇ (ID (D1), D1),..., (ID (Dn), Dn) ⁇ .
  • processing is performed as follows.
  • Each partial character string set Bi with position information (1 ⁇ i ⁇ n) is divided as follows: ⁇ (1, w 1 _i), (1, w 1 _iw 2 _i), ..., (1, w 1 _i ...
  • the multiple encryption unit 308b receives the aggregated data set Y received from the aggregation unit 310b described later, reads the key K from the key storage unit 302, and the parameters (m, M, N) from the parameter storage unit 303b.
  • the transmission unit 309b transmits the storage index (ID (I), m, I) received from the multiple encryption unit 308b to the management apparatus 500b, and also retrieves the parameter m used when the index I is generated. To 400b.
  • the aggregating unit 310b generates the following set Y for B1,... Bn received from the position information allocation unit 307.
  • Each element of set Y is (P, w, ⁇ ID (D_i1), ..., ID (D_ik) ⁇ , ⁇ ID (D_ik + 1), ..., ID (D_in) ⁇ )
  • This pair (p, w) is always included in any one of B1,..., Bn.
  • a plurality may be included. That is, Y can be regarded as a set in which elements B1,..., Bn are aggregated.
  • ⁇ ID (D_i1), ..., ID (D_in) ⁇ ⁇ ID (D1), ..., ID (Dn) ⁇ It is.
  • Y is referred to as an aggregate data set.
  • FIG. 20 is a block diagram showing a configuration of the search device 400b.
  • the search device 400b includes a receiving unit 401a, a key storage unit 402, an input unit 403b, a multiple encryption unit 404b, a transmission unit 405b, an output unit 406, and a parameter storage unit 407a. Is provided.
  • the search device 400b includes a recording medium that stores data used by each unit of the search device 400b.
  • the description of the receiving unit 401a, the key storage unit 402, the output unit 406, and the parameter storage unit 407a has already been described and will be omitted.
  • the input unit 403b receives the search data s input from the data searcher. Further, the input unit 403b may receive a plurality of storage index names from the data searcher that specify the search data and the storage index to be searched at the same time as the search data.
  • the multiple encryption unit 404b reads the key K from the key storage unit 402 and the parameter m from the parameter storage unit 407a, and uses the key K and the parameter m for the search data s received from the input unit 403b to
  • the ciphertext t is generated as follows.
  • the multiple encryption unit 404b t E ⁇ (M + 1 ⁇ m) (K, s, 0) Is generated.
  • this t is referred to as search encrypted data.
  • the transmission unit 405b transmits the search encrypted data t received from the multiple encryption unit 404b to the management device 500b. If the storage index name is input simultaneously with the search data from the data searcher, both the search encryption data and the storage index name are transmitted to the management apparatus 500b.
  • FIG. 21 is a block diagram showing a configuration of the management apparatus 500b.
  • the management apparatus 500b includes a receiving unit 501b, a parameter storage unit 502b, a data storage unit 503b, a collation unit 504b, a transmission unit 505, and a multiple encryption unit 506a.
  • the management device 500b includes a recording medium that stores data used by each unit of the management device 500b.
  • the receiving unit 501b includes the parameters (L, M, N) transmitted from the key generation device 200b, the stored encrypted data set (ID (I), m, I) and the deletion index name transmitted from the registration device 300b.
  • the search encrypted data t and the storage index name transmitted from the search device 400b are received.
  • the parameter storage unit 502b also stores the parameters (L, M, N) received from the receiving unit 501b and m of the storage index (ID (I), m, I).
  • the data storage unit 503b stores the storage index (ID (I), m, I) received from the receiving unit 501b. If necessary, the date and time of transmission may be stored at the same time. Further, the data storage unit 503b deletes the stored index based on the delete index name received from the receiving unit 501b.
  • the collation unit 504b generates an empty set R related to the search result, reads all storage indexes (ID (I), m, I) from the data storage unit 503b, and receives the multiple encrypted data received from the multiple encryption unit 506a. Based on the set ⁇ (1, t1), (2, t2),..., (M, tm) ⁇ , collation and search results are generated as follows.
  • the collation unit 504b extracts the storage index of (ID (I), i, I) for each i (1 ⁇ i ⁇ m) and repeatedly executes the following.
  • C_pj E (ti, p, j, ID (I)) is calculated (total of L ⁇ N calculations)
  • C_pj E (ti, p, j, ID (I)) is calculated (total of L ⁇ N calculations)
  • C_pj is included in index I, and if it is included, extract ID (D) stored in pairs with C_pj and add (ID (D), p) to empty set R To do.
  • C_pj + 1 E (ti, p, j + 1, ID (I)) Is not included in index I, E (ti, p, j + 2, ID (I)), ..., E (ti, p, N, ID (I)) Is not included in the index I, the search efficiency can be improved by omitting these calculations.
  • Each C_pj (1 ⁇ p ⁇ L, 1 ⁇ j ⁇ N) Will be referred to as collation data for ID (I).
  • the set R that is finally generated as a result of this processing is called a search result.
  • the matching unit 504b reads only the target storage index from the data storage unit 503b based on the received storage index name, and performs the same processing.
  • FIG. 22 is a flowchart showing key generation / storage processing of the secret search system 100 according to the present embodiment.
  • S601 to S612b in FIG. 22 are processes executed by the key generation device 200b, the registration device 300b, the search device 400b, and the management device 500b.
  • Steps S601 to S605b are executed by the key generation device 200b
  • steps S606b to S608b are executed by the registration device 300b
  • steps S609a to S610a2 are executed by the search device 400b
  • steps S611b to S612b are executed by the management device 500a.
  • S601, S604a, S607, and S609a to S610a2 in this search process are the same as those in the second embodiment, and are omitted here.
  • the parameter generation unit 202b generates parameters L, M, and N.
  • L is the maximum number of character strings that appear when the storage data is divided
  • M represents the maximum number of storage indexes that can be stored in the management apparatus 500b using the same key K
  • N is one at a time. This is the maximum number of stored data that can be registered.
  • the transmission unit 203b transmits the key K generated in S601 and the parameters (L, M, N) generated in S602b to the registration apparatus 300b.
  • the transmission unit 203b transmits the parameters (L, M, N) generated in S602b to the management apparatus 500b.
  • the reception unit 301b receives the key K and parameters (L, M, N) transmitted in S603b.
  • the parameter storage unit 303b stores the parameters (L, M, N) received in S606b in a storage medium.
  • the reception unit 501b receives the parameters (L, M, N) transmitted in S605b.
  • the parameter storage unit 502b stores the parameters (L, M, N) received in S611b in a storage medium.
  • FIG. 23 is a flowchart showing the registration process of the secret search system 100.
  • S701 to S712a in FIG. 23 are processes executed by the registration device 300b, the search device 400b, and the management device 500b.
  • S701 to S706b, S709a, and S712a are processes executed by the registration apparatus 300b
  • S707b to S708b2 are processes performed by the management apparatus 500b
  • S710a to S711a are processes performed by the search apparatus 400b.
  • S701 to S704 and S709a2 to S712a in the search process are the same as those in the second embodiment, and thus are omitted here.
  • the aggregating unit 310b generates an aggregated data set Y for B1,... Bn generated in S704. As described above, each element of Y is represented as (p, w, ⁇ ID (D_i1),..., ID (D_ik) ⁇ , ⁇ ID (D_ik + 1),..., ID (D_in) ⁇ ). It is.
  • the multiple encryption unit 308b receives the aggregated data set Y generated in S705b1, reads the key K from the key storage unit 302, reads the parameter (m, M, N) from the parameter storage unit 303b, and stores the index ( ID (I), m, I) is generated.
  • C1 E (E ⁇ (M + 1 ⁇ m) (K, w, 0), p, 1, ID (I)), ...
  • the transmission unit 309b transmits the storage index (ID (I), m, I) generated in S705b2 to the management apparatus 500b.
  • the reception unit 501b receives the storage index (ID (I), m, I) transmitted in S706b.
  • the data storage unit 503b stores the storage index (ID (I), m, I) received in S707b.
  • the parameter storage unit 502b updates the value of m stored from m of the storage index (ID (I), m, I) received in S707b.
  • FIG. 24 is a flowchart showing the search process of the secret search system 100.
  • S801 to S810 in FIG. 24 are processes executed by the search device 400b and the management device 500b.
  • S801 to S803 and S809 to S810 are executed by the search apparatus 400b, and
  • S804 to S808 are executed by the management apparatus 500.
  • S801, S803, S804 to S805a1, and S808 to S810 in the search process are the same as those in the second embodiment, and thus are omitted here.
  • the collation unit 504b reads all the storage indexes (ID (I), m, I) from the data storage unit 503b. If the storage index name is also received in S804, only the target storage index is read based on the storage index name. If the storage index name has not been received in S804, all stored storage indexes are read out.
  • the plurality of storage encrypted data sets read out are ⁇ (ID (I1), 1, I1)), ..., (ID (Im), m, Im) ⁇
  • the collation unit 504b reads the parameters (L, N) from the parameter storage unit 502b, and (ID (Ii), i, Ii) (1 ⁇ i ⁇ m) of each storage index read in S805b2.
  • a collation data set Xi for each Ii is generated as follows.
  • A1 ⁇ (A), (AB), (ABC) ⁇ , ⁇ (B), (BC) ⁇ , ⁇ (C) ⁇ And
  • A2 ⁇ (B), (BB), (BBC) ⁇ , ⁇ (B), (BC) ⁇ , ⁇ (C) ⁇ And generated.
  • C11 E (E ⁇ 2 (K, A, 0), 1, 1, 3)
  • C12 E (E ⁇ 2 (K, A, 1), 1, 2, 3)
  • C21 E (E ⁇ 2 (K, AB, 0), 1, 1, 3)
  • C22 E (E ⁇ 2 (K, AB, 1), 1, 2, 3)
  • C31 E (E ⁇ 2 (K, ABC, 0), 1, 1, 3)
  • C32 E (E ⁇ 2 (K, ABC, 1), 1, 2, 3)
  • C41 E (E ⁇ 2 (K, B, 0), 1, 1, 3)
  • C42 E (E ⁇ 2 (K, B, 1), 1, 2, 3)
  • C51 E (E ⁇ 2 (K, BB, 0), 1, 1, 3)
  • C52 E (E ⁇ 2 (K, BB, 1), 1, 2, 3)
  • C61 E (E ⁇ 2 (K, BBC, 0), 1, 1, 3)
  • C62 E (E ⁇ 2 (K, BBC,
  • the storage index (3, 1, I) is stored through S707b and S708b1.
  • the parameter m of the parameter storage unit 303a is updated to 2
  • the parameter m of the parameter storage unit 407a and the parameter storage unit 502a is updated to 1.
  • S805b2 (3, 1, I) is read.
  • Embodiment 3 has the following effects, for example.
  • the stored data is not stored one by one, but a plurality of stored data are stored together, so that even if the same M as in the second embodiment is selected, the same key K is used for encryption.
  • the maximum number of stored data that can be stored and stored can be increased, and the search efficiency can be improved.
  • 100 secret search system 101 internet, 200, 200a, 200b key generation device, 201 key generation unit, 202, 202a, 202b parameter generation unit, 203, 203a, 203b transmission unit, 300, 300a, 300b registration device, 301, 301a , 301b reception unit, 302 key storage unit, 303, 303a, 303b parameter storage unit, 304, 304b input unit, 305 data division unit, 306 partial character string generation unit, 307 location information allocation unit, 308 encryption unit, 308a, 308b Multiple encryption unit, 309, 309a, 309b transmission unit, 310b aggregation unit, 400, 400a, 400b search device, 401, 401a reception unit, 402 key storage unit, 403, 403b input unit, 404 encryption unit, 4 4a, 404b Multiple encryption unit, 405, 405b transmission unit, 406 output unit, 407a parameter storage unit, 500, 500a, 500b management device, 501, 501a, 501b reception unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

データ分割部(305)は、保管データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割する。部分文字列生成部(306)は、要素データw,w,...,wから、集合A={A,A,...,A},集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,を生成する。位置情報割当部(307)は、要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、集合B={B,B,...,B}、集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}を生成する。暗号化部(308)は、要素Bに含まれる成分である(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化する。

Description

暗号化装置、暗号化方法及び暗号化プログラム
 本発明は、検索システム、管理装置、登録装置、検索装置、鍵生成装置、検索方法、サーバプログラム及び端末プログラムに関する。発明は、例えば、秘匿検索システムに関するものである。
 秘匿検索とは、検索対象データと検索内容を暗号化したまま検索できる技術である。近年、クラウドサービス等の普及によりインターネット上でデータ管理が可能となった。
 しかし、インターネット上でのデータ管理には、データ管理の委託先であるクラウドなどのサーバがコンピュータウィルス等のマルウェアに感染することやサーバの管理者が不正を働くことによって、預けたデータが外部に漏洩する危険性がある。もしサーバに預けたデータが個人情報や企業機密データであった場合、この漏洩は非常に問題である。
 このようなセキュリティの脅威を回避する方法として暗号化技術があるが、単純にデータを暗号化してサーバに保管するとデータの検索ができなくなるといった問題が発生する。
 このような問題を回避するために、検索を行うときにサーバ上に保管された暗号化データを一旦復号してから検索を行うという手法が今までに考えられてきたが、データがサーバ内で一定期間平文に戻ってしまうため、対策として十分とはいえない。
 そこで、データを暗号化したまま検索可能な暗号技術である「秘匿検索技術」が考案され、秘匿検索技術の具体的な手法が近年多く開示されている。
 秘匿検索技術では、単純な検索である「完全一致検索」ができる方式(例えば、非特許文献1参照)が主に検討されていたが、近年はより柔軟な検索、例えば「部分一致検索」ができる方式(例えば、特許文献1、非特許文献2参照)や「類似検索」ができる方式(例えば、非特許文献3、非特許文献2参照)なども検討されている。これ以降、部分一致検索可能な方式を「秘匿部分一致検索技術」、類似検索可能な秘匿検索技術を「秘匿類似検索技術」と呼ぶこととする。なお、秘匿検索技術は大まかに分けて、RSA暗号方式(RSAは登録商標)のような公開鍵暗号をベースとした方式や、AES暗号方式のような共通鍵暗号をベースとした方式の2種類がある。
特開2014-126621号公報
R.Curtmola,J.Garay,S.Kamara,and R.Ostrovsky."Searchable Symmetric Encryption:Improved Definitions and Efficient Constructions".ACM CCS 2006. M.Chase and E.Shen."Substring-Searchable Symmetric Encryption",PETS 2015. J.Li,Q.Wang,C.Wang,N.Cao,K.Ren,and W.Lou."Fuzzy Keyword Search over Encrypted Data in Cloud Computing",Mini-Conference at IEEE Infocom 2010. C.Wang,K.Ren,S.Yu,and K.M.R.Urs."Achieving Usable and Privacy-assured Similarity Search over Outsourced Cloud Data",IEEE Infocom 2012.
 AESやHMAC、またSHA-256のような共通鍵暗号技術をベースとした高速な既存の秘匿部分一致検索技術には次のような課題がある。
 特許文献1では、データを数文字単位に分割し、それぞれを暗号化することによって、暗号化したまま部分一致検索を達成している技術が開示されている。例えば、データを1文字や2文字などの単位でデータを区切って暗号化している。
 しかしながら、データを少ない文字数で分割すると、全く同じような分割データが多く現れる可能性がある。本技術では、同じデータからいつも同じ暗号文が生成される確定的暗号化方式を利用するため、同じ分割データを暗号化しても全く同じ暗号文が生成されることから、頻度分析攻撃を受けやすいといった課題がある。
 ここで、頻度分析攻撃とは、同じ値を持つ暗号文の頻度と、頻度に関する公な情報(例えば、日本人の名字の分布など)とを照合することで、暗号化に用いる鍵を使わなくても、暗号文から元のデータを推測する攻撃手法である。
 なお、このような攻撃を受けないように、同じデータでも毎回違う文字に変換する確率的暗号化方式を用いることが考えられるが、本技術でそのような暗号化方式を用いると検索ができなるといった課題がある。
 他の対策として、分割する文字数を大きくして対策することも考えられるが、その場合は部分一致検索が困難となってしまうといった課題がある。
 非特許文献2では、上記のような頻度分析攻撃を受けず、またある木構造を利用して保管する暗号化データ(以降、保管暗号化データと呼ぶ)のサイズを小さくできるような秘匿部分一致検索技術が開示されている。しかしながら、本技術では、検索に用いる暗号化データ(以降、検索暗号化データと呼ぶ)のサイズが大きくなってしまうことや、検索時にユーザとサーバとの対話回数が多いため、通信量に課題がある。
 非特許文献3及び非特許文献4では、部分一致検索も含む秘匿類似検索技術が開示されている。これらの技術は、部分一致検索よりも柔軟な検索ができるが、保管暗号化データのサイズ及び検索暗号化データのサイズがともに大きいといった課題がある。
 本発明は、頻度分析などの攻撃に耐性を持つような高い安全性を達し、データサイズが小さく、かつ通信量が小さい秘匿部分一致検索技術の提供を目的とする。
 この発明の暗号化装置は、
 文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割するデータ分割部と、
 前記N個の要素データw,w,...,wから、
 集合A={A,A,...,A},
 集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
を生成する部分文字列生成部と、
 前記要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
 集合B={B,B,...,B}、
 集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}
を生成する位置情報割当部と、
 前記要素Bに含まれる成分である(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化する暗号化部と
を備えたことを特徴とする。
 本発明によれば、保管データである文字列データを構成する部分文字列に位置情報を加えて暗号化するので、頻度分析攻撃を行う上で重要となる文字列データの暗号文どうしの比較ができなくなる。よって頻度分析攻撃に対する安全性を向上できる。
実施の形態1の図で、秘匿検索システムの構成を示すブロック図。 実施の形態1の図で、鍵生成装置の構成を示すブロック図。 実施の形態1の図で、登録装置の構成を示すブロック図。 実施の形態1の図で、検索装置の構成を示すブロック図。 実施の形態1の図で、管理装置の構成を示すブロック図。 実施の形態1の図で、秘匿検索システムの鍵生成・保管処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのデータ登録処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのデータ検索処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのデータ削除処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのハードウェア資源の一例を示す図。 実施の形態2の図で、鍵生成装置の構成を示すブロック図。 実施の形態2の図で、登録装置の構成を示すブロック図。 実施の形態2の図で、検索装置の構成を示すブロック図。 実施の形態2の図で、管理装置の構成を示すブロック図。 実施の形態2の図で、検索システムの鍵生成・保管処理を示すフローチャート。 実施の形態2の図で、検索システムのデータ登録処理を示すフローチャート。 実施の形態2の図で、検索システムのデータ検索処理を示すフローチャート。 実施の形態3の図で、鍵生成装置の構成を示すブロック図。 実施の形態3の図で、登録装置の構成を示すブロック図。 実施の形態3の図で、検索装置の構成を示すブロック図。 実施の形態3の図で、管理装置の構成を示すブロック図。 実施の形態3の図で、検索システムの鍵生成・保管処理を示すフローチャート。 実施の形態3の図で、検索システムのデータ登録処理を示すフローチャート。 実施の形態3の図で、検索システムのデータ検索処理を示すフローチャート。
 以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
 実施の形態1.
 本実施の形態では、高安全かつ効率的な秘匿部分一致検索技術を開示する。
 以下、本実施の形態の概要について説明する。
 図1は、本実施の形態に係る秘匿検索システム100の構成を示すブロック図である。図1に示すように、秘匿検索システム100は、鍵生成装置200と、複数の登録装置300と、複数の検索装置400と、管理装置500とを備える。
<***構成の説明***>
 秘匿検索システム100は、複数の鍵生成装置200を備えていてもよい。秘匿検索システム100は、1つの登録装置300のみを備えていてもよい。秘匿検索システム100は、1つの検索装置400のみを備えていてもよい。秘匿検索システム100は、複数の管理装置500を備えていてもよい。秘匿検索システム100は、鍵生成装置200と、複数の登録装置300と、複数の検索装置400と、管理装置500とそれぞれインターネット101を経由して接続されず、同じ企業内に敷設されたLAN(Local・Area・Network)内に設置されていてもよい。インターネット101は、鍵生成装置200と、複数の登録装置300と、複数の検索装置400と、管理装置500とを接続する通信路である。インターネット101は、ネットワークの例である。インターネット101の代わりに、他の種類のネットワークが用いられてもよい。
 鍵生成装置200は、暗号化に利用する鍵を作成し、インターネット101を介して、複数の登録装置300と、複数の検索装置400とへ鍵を送信する。なお、この鍵は、インターネット101を介さず、郵送などで直接的に、複数の登録装置300と、複数の検索装置400とへ送信してもよい。
 登録装置300は、例えば、パーソナルコンピュータである。登録装置300は、保管暗号化データを管理装置500に登録する登録端末として動作するコンピュータである。登録装置300は、暗号化装置及び登録装置として機能する。即ち、登録装置300は、保管暗号化データを生成し、保管暗号化データの保管を管理装置500に要求する。登録装置300は、削除要求装置として機能する。即ち、登録装置300は、管理装置500に対して、保管されている保管暗号化データの削除を要求する。
 検索装置400は、例えば、パーソナルコンピュータである。検索装置400は、検索暗号化データを管理装置500に送信し、その後管理装置500から暗号化検索結果を受信し、暗号化検索結果を出力するコンピュータである。検索装置400は、検索要求装置として機能する。即ち、検索装置400は、暗号化検索データを管理装置500に送信して保管暗号化データと検索暗号化データの照合を要求する。検索装置400は、出力装置として機能する。即ち、検索装置400は、管理装置500から返信される検索結果を出力する。
 管理装置500は、登録装置300によって作成された保管暗号化データを保管する大容量の記録媒体を持つ装置である。管理装置500は、保管装置として機能する。即ち、管理装置500は、登録装置300から保管暗号化データの保管の要求があれば、保管暗号化データを保管する。管理装置500は、検索装置として機能する。即ち、管理装置500は、検索装置400からの検索の要求があれば、保管暗号化データと検索暗号化データを照合し、検索結果を検索装置400に送信する。管理装置500は、削除装置として機能する。即ち、管理装置500は、登録装置300から保管暗号化データの削除の要求があれば、保管している保管暗号化データを削除する。
 なお、同じパーソナルコンピュータ内に、鍵生成装置200、登録装置300、検索装置400のいずれかが同時に含まれていてもよい。
 なお、保管暗号化データ及び検索暗号化データは、いずれも暗号化されている。鍵を持たない登録装置300と検索装置400以外は、保管暗号化データや検索暗号化データから有益な情報を得ることは困難である。
 以下、本実施の形態の構成について説明する。
 図1に示したように、秘匿検索システム100は、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とを備える。
 以下では、鍵生成装置200の構成、登録装置300の構成、検索装置400の構成、管理装置500の構成について順番に説明する。
 図2は、鍵生成装置200の構成を示すブロック図である。図2に示すように、鍵生成装置200は、鍵生成部201と、パラメーター生成部202と、送信部203とを備える。図示していないが、鍵生成装置200は、鍵生成装置200の各部で使用されるデータを記憶する記録媒体を備える。
 鍵生成部201は、データを暗号化や復号するための鍵Kを生成する。鍵Kは登録装置300と検索装置400とに保管される秘密情報であるため、厳重に生成される。なお、ここでは共通鍵暗号技術を用いて説明しているが、公開鍵暗号技術を用いてもよい。
 パラメーター生成部202は、データの暗号化や、データの照合時に必要なパラメーターを生成する。例えば、パラメーターとして、登録データをいくつかの文字列に分割するときの最大長Lがそれにあたる。なお、Lは0より大きい整数である。また、Lは秘密情報ではないため、公に公開されていても構わない。
 送信部203は、鍵生成部201で生成された鍵Kを、登録装置300と、検索装置400とへ送信し、また、パラメーター生成部で生成されたパラメーターLを、登録装置300と、管理装置500とへ送信する。
 図3は、登録装置300の構成を示すブロック図である。図3に示すように、登録装置300は、受信部301と、鍵保管部302と、パラメーター保管部303と、入力部304と、データ分割部305と、部分文字列生成部306と、位置情報割当部307と、暗号化部308と、送信部309とを備える。図示していないが、登録装置300は、登録装置300の各部で使用されるデータを記憶する記録媒体を備える。
 受信部301は、鍵生成装置200から送信されてきた鍵KとパラメーターLとを受信する。鍵保管部302は、受信部301から受け取った鍵Kを保管する。パラメーター保管部303は、受信部301から受け取ったパラメーターLを保管する。
 入力部304は、データ登録者から入力された保管データとデータ名を受け取る。なお、本実施の形態では、保管データD、データ名をID(D)として説明する。もし、データ登録者からデータ名の入力がなければ、入力部304は、入力された保管データDのデータ名ID(D)に乱数を割り当ててもよいし、他の保管データのデータ名と重複しないように0より大きい整数の値を順に割り当ててもよい。データ名のID(D)は、保管データDを識別する識別子である。
 また、入力部304は、データ登録者から削除したい保管暗号化データについての削除データ名を受け取る。削除データ名は、例えば、登録時に入力したデータ名や、登録した時刻、データ登録者の名前など、保管データを特定できるものなら何でもよい。
 データ分割部305は、パラメーター保管部303からパラメーターLを読み出し、入力部304から受け取った保管データDを(w,・・・,w)と分割する。
 ただし、各wi(1≦i≦L)は、データを1文字や複数文字ずつ順に分割したものでもいいし、単語単位で分割してもよい。また、データDを(w,...,w)とk≦Lとなるようにデータ分割してもよい。もし、データをどのように分割しても分割数がL未満となってしまう場合は、L未満のままでもよいし、「*」やnullなどの特殊文字を使って足りない文字数を補って、長さをLとなるように調整しもよい。以降では、分割数がLとした時を説明するが、L未満でもほぼ同様な手順を実施すればよい。
 部分文字列生成部306は、データ分割部305から受け取った
分割データ(w,・・・,w)から、次のような集合Aを生成する。
 A={{(w),(w),・・・,(w・・・w)},{(w),(w),・・・,(w・・・w)},・・・,{(w)}}。
 以降では、集合Aを部分文字列集合と呼ぶことにする。
 位置情報割当部307は、部分文字列生成部306から受け取った部分文字列集合Aの中の各部分文字列に対して次のように位置情報を割り当てて、集合Bを生成する。
 B={(1,w),(1,w),・・・,(1,w・・・w)},{(2,w),(2,w),・・・,(2,w・・・w)},・・・,{(L,w)}}。
 ここで、以降では集合Bを位置情報付き部分文字列集合と呼ぶことにする。
 暗号化部308は、鍵保管部302から鍵Kを読み出し、位置情報割当部307から受け取った位置情報付き部分文字列集合Bの中の各位置情報付き部分文字列に対する暗号文Cを次のように生成する。位置情報と部分文字列の各ペア(p,w)に対して、
 C=E(E(K,w),p,ID(D))
を生成する。
 なお、Eは暗号化関数とする。例えば、AESのような共通鍵暗号方式やHMACのようなメッセージ認証符号、SHA-256のようなハッシュ関数がその一例である。
 ここで、すべての(i,w)を暗号化した暗号文の集合をC(D)と書くことにする。
 以降では、ペア(ID(D),C(D))を、
保管暗号化データ集合と呼ぶことにする。
 送信部309は、暗号化部308から受け取った保管暗号化データ集合(ID(D),C(D))を管理装置500へ送信する。また、送信部309は、入力部304から受け取った削除データ名を管理装置500へ送信する。
 図4は、検索装置400の構成を示すブロック図である。図4に示すように、検索装置400は、受信部401と、鍵保管部402と、入力部403と、暗号化部404と、送信部405と、出力部406とを備える。図示していないが、検索装置400は、検索装置400の各部で使用されるデータを記憶する記録媒体を備える。
 受信部401は、鍵生成装置200から送信されてきた鍵K、または管理装置500から送信されてきた検索結果を受信する。鍵保管部402は、受信部401から受け取った鍵Kを保管する。入力部403は、データ検索者から入力された検索データsを受け取る。また、入力部403は、データ検索者から、検索データと同時に、その検索データと検索したい保管暗号化データ集合を指定するような保管データ名も複数受けとってもよい。
 暗号化部404は、鍵保管部402から鍵Kを読み出し、入力部403から受け取った検索データsに対して鍵Kを用いて、次のように暗号文tを生成する。
 t=E(K,s)。
 以降では、このtを検索暗号化データと呼ぶ。
 送信部405は、暗号化部404から受け取った検索暗号化データtを管理装置500へ送信する。もし、データ検索者から検索データと同時に保管データ名も入力されていた場合は、検索暗号化データと保管データ名の両方を管理装置500へ送信する。
 出力部406は、受信部401から受け取った検索結果に基づき、検索結果をデータ検索者に対して出力する。もし、検索結果が暗号化されていた場合は、鍵保管部402に保管されている鍵Kなどを用いて検索結果を復号して出力する。
 図5は、管理装置500の構成を示すブロック図である。図5に示すように、管理装置500は、受信部501と、パラメーター保管部502と、データ保管部503と、照合部504と、送信部505とを備える。図示していないが、管理装置500は、管理装置500の各部で使用されるデータを記憶する記録媒体を備える。
 受信部501は、鍵生成装置200から送信されてきたパラメーターL、登録装置300から送信されてきた保管暗号化データ集合(ID(D),C(D))や削除データ名、検索装置400から送信されてきた検索暗号化データtや保管データ名を受信する。
 パラメーター保管部502は、受信部501から受け取ったパラメーターLを保管する。
 データ保管部503は、受信部501から受け取った保管暗号化データ集合の(ID(D),C(D))を保管する。必要があれば、送信されてきた日時なども同時に保管してもよい。
 また、データ保管部503は、受信部501から受け取った削除データ名に基づき、保管している保管暗号化データ集合を削除する。
 照合部504は、検索結果に関わる空集合Rを生成し、データ保管部503からすべての保管暗号化データ集合(ID(D),C(D))を読み出し、受信部501から受け取った検索暗号化データtに基づき、次のようにして照合を行うことや検索結果を生成する。
 照合部504は、
 T1=E(t,1,ID(D)),・・・,TL=E(t,L,ID(D))、
を計算し、各Tp(1≦p≦L)がC(D)に含まれているかを確認する。
 もしTpがC(D)に含まれているならば、ペア(ID(D),p)をRに加える。
この(ID(D),p)は「ID(D)のp番目の位置に検索データが現れる」
を意味する。以降では、各Tpを照合データと呼び、
 {T1,・・・,TL}
を照合データ集合と呼ぶことにする。
 また、本処理の結果、最終的に生成される集合Rを検索結果と呼ぶことにする。
 なお、照合部504は、受信部501が検索装置400から保管データ名も受信していれば、それに基づいてデータ保管部503から対象となる保管暗号化データ集合のみを読み出して、同様な処理を行う。
 送信部505は、照合部504から受け取った検索結果Rを検索装置400へ送信する。
 以下では、本実施の形態に係る、暗号化方法、検索方法に相当する、秘匿検索システム100の動作について説明する。
 図6は、秘匿検索システム100の鍵生成・保管処理を示すフローチャートである。図6のステップS601~ステップS612は、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とが実行する処理である。ステップS601~ステップS605は鍵生成装置200に、ステップS606~ステップS608は登録装置300に、ステップS609~ステップS610は検索装置400に、ステップS611~ステップS612は管理装置500によって実行される。
 なお以下では、ステップS601等のステップ番号は、S601等と記す。図7~図9、実施の形態の図15~図17、及び実施の形態3の図22~図24のステップ番号も同様である。
 S601において、鍵生成部201は、データを暗号化するための鍵Kを生成する。なお、本稿では共通鍵暗号技術を用いて説明しているが、公開鍵暗号技術を用いてもよい。その場合は、鍵生成部201は、公開鍵PKと秘密鍵SKのペアを鍵Kとして設定して、以降の処理を同じように実施すればよい。
 S602において、パラメーター生成部202は、パラメーターLを生成する。なお、前述の通り、Lは保管データを分割したときに現れる文字列の最大数である。
 S603において、送信部203は、S601で生成した鍵KとS602で生成したパラメーターLを、登録装置300へ送信する。
 S604において、送信部203は、S601で生成した鍵Kを、検索装置400へ送信する。
 S605において、送信部203は、S602で生成したパラメーターLを、管理装置500へ送信する。
 S606において、受信部301は、S603で送信された鍵KとパラメーターLを受信する。
 S607において、鍵保管部302は、S606で受信した鍵Kを記憶媒体に保管する。
 S608において、パラメーター保管部303は、S606で受信したパラメーターLを記憶媒体に保管する。
 S609において、受信部401は、S604で送信された鍵Kを受信する。
 S610において、鍵保管部402は、S609で受信した鍵Kを記憶媒体に保管する。
 S611において、受信部501は、S605で送信されたパラメーターLを受信する。
 S612において、パラメーター保管部502は、S611で受信したパラメーターLを記憶媒体に保管する。S612により、秘匿検索システム100の鍵生成・保管処理は終了する。なお、鍵Kは秘密情報であるため、鍵保管部302と、鍵保管部402とは、鍵Kが外部に漏れないように厳重に保管する必要がある。
 図7は、秘匿検索システム100の登録処理を示すフローチャートである。図7のS701~S708は、登録装置300と管理装置500とが実行する処理である。S701~S706は登録装置300に、S707~S708は管理装置500によって実行される処理である。
 S701において、入力部304は、データ登録者から入力された保管データDとデータ名ID(D)を受け取る。なお、前述の通り、データ登録者からデータ名の入力がなければ、入力部304は、入力された保管データDのデータ名ID(D)を乱数と割り当ててもよいし、他の保管データのデータ名と重複しないように0より大きい整数の値を順に割り当ててもよい。
 S702において、データ分割部305は、パラメーター保管部303からパラメーターLを読み出し、S701でデータ登録者から受け取った保管データDを(w,・・・,w)と分割する。
 なお、前述の通り、各w(1≦i≦L)は、データを1文字や複数文字ずつ順に分割したものでもいいし、単語単位で分割してもよい。また、データDを(w,...,w)と≦Lとなるようにデータ分割してもよい。
 もし、データをどのように分割しても分割数がL未満となってしまう場合は、L未満のままでもよいし、「*」やnullなどの特殊文字を使って足りない文字数を補ってもよい。
 ここでwを要素データと呼ぶとすれば、データ分割部305は、文字列データである保管データDを、保管データDの始まりから終わりに向かうN個の要素データw,...,wに分割する。NはL以下である。
 以下のS703以降では、保管データDがL個に分割された場合を説明する。保管データDがN個に分割された場合は、以下の説明においてLをNに読み替えればよい。
 S703において、部分文字列生成部306は、S702で生成された分割データ(w,・・・,w)から、次のような部分文字列集合Aを生成する。
 A={A,A,...,A}、
 集合Aの要素A等をA(i=1,...,L)と記す。
 集合Aの要素は、以下のようである。
 集合Aの要素は、
 A={(w),(w),・・・,(w・・・w)}、
 A={(w),(w),・・・,(w・・・w)}、
 ...
 A={(w)}、
である。
 各要素は、
 A={(w),(wi+1),・・・,(w・・・w)}、(i=1,...,L)
である。
 以下では要素Aの要素を、成分と呼ぶ場合がある。つまりAは、(L-i+1)個の成分である(w),(wi+1),・・・,(w・・・w)を持つ。
 S704において、位置情報割当部307は、S703で生成された部分文字列集合Aの中の各部分文字列に対して次のように位置情報を割り当て、位置情報付き部分文字列集合Bを生成する。
 集合B={B,B,...,B}、
 集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}、
である。
 要素Bは要素Aの各成分に位置情報iを付加して生成される。ここで位置情報iにおける{i}は、要素Aにおける添え字{i}である。
 要素Bを具体的に記載すれば、
 B={(1,w),(1,w),・・・,(1,w・・・w)}、
 B={(2,w),(2,w),・・・,(2,w・・・w)}、
 ....
 B={(L,w)},
である。
 集合Bの各要素は、
 B={(i,w),(i,wi+1),・・・,(i,w・・・w)}、(i=1,...,L)である。
 Bの要素である(i,w),(i,wi+1),・・・,(i,w・・・w)、
を以下では成分と呼ぶ場合がある。
 このように、位置情報割当部307は、集合Aの要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
 要素B(i=1,...,L)を持つ、位置情報付き部分文字列集合Bを生成する。
 S705において、暗号化部308は、鍵保管部302から鍵Kを読み出し、S704で生成された位置情報付き部分文字列集合Bの中の各位置情報付き部分文字列の暗号文Cを次のように生成する。
 位置情報と部分文字列の各ペア(p,w)に対して、
 C=E(E(K,w),p,ID(D))   (式1)
を生成する。
 ペア(p,w)とは、Bで説明すれば、(i,w),(i,wi+1),・・・,(i,w・・・w)の、(L-i+1)個の各成分である。(i,w)の場合であれば、
 p=i,w=w
である。
 すべての(p,w)を暗号化した暗号文の集合をC(D)とし、保管暗号化データ集合(ID(D),C(D))を生成する。
 つまりC(D)は、
 B={(1,w),(1,w),・・・,(1,w・・・w)}、
 B={(2,w),(2,w),・・・,(2,w・・・w)}、
 ...,
 B={(L,w)},
の、すべての成分を暗号化した情報である。このように暗号化部308は、要素Bに含まれる(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化される。
 なお、上記式1に示すように、暗号化部308は、要素Bに含まれる各成分を暗号化する場合に、要素Bに含まれる各成分を、文字列データである保管データDを識別する識別子のデータ名ID(D)と共に暗号化する。
 また、前述の通り、Eは暗号化関数であり、例えば、AESのような共通鍵暗号方式やHMACのようなメッセージ認証符号、SHA-256のようなハッシュ関数がその一例である。
 S706において、送信部309は、S705で生成した保管暗号化データ集合(ID(D),C(D))を管理装置500へ送信する。
 S707において、受信部501は、S706で送信された保管暗号化データ集合(ID(D),C(D))を受信する。
 S708において、データ保管部503は、S707で受信した保管暗号化データ集合(ID(D),C(D))を保管する。
 S708により、秘匿検索システム100の登録処理は終了する。
 図8は、秘匿検索システム100の検索処理を示すフローチャートである。図8のS801~S810は、検索装置400と管理装置500とが実行する処理である。S801~S803及びS809~S810は検索装置400によって実行される処理であり、S804~S808は管理装置500によって実行される処理である。
 S801において、入力部403は、データ検索者から入力された検索データsを受け取る。なお、複数の検索データを同時に受け取ってもよい。その場合は、以降の処理を各検索データに対して同じように実施すればよい。また、前述の通り、入力部403は、データ検索者から、検索データと同時に、その検索データと検索したい保管暗号化データを指定するような保管データ名も複数受けとってもよい。
 S802において、暗号化部404は、鍵保管部402から鍵Kを読み出し、S801で受け取った検索データsに対して鍵Kを用いて、次のようにして検索暗号化データtを生成する。ここで、
 t=E(K,s)
である。
 S803において、送信部405は、S802で生成した検索暗号化データtを管理装置500へ送信する。もし、S801で保管データ名も入力されていれば、保管データ名も同時に送付する。
 S804において、受信部501は、S803で送信された検索暗号化データtを受信する。もし、S803で保管データ名も送信されていたら、保管データ名も受信する。
 S805において、照合部504は、データ保管部503から保管暗号化データ集合(ID(D),C(D))を読み出す。なお、もしS804で保管データ名も受信していた場合は、その保管データ名に基づき、対象の保管暗号化データ集合のみを読み出す。もしS804で保管データ名を受信していなかった場合は、保管されているすべての保管暗号化データ集合を読み出す。
 S806において、照合部504は、パラメーター保管部502からパラメーターLを読み出し、S805で読み出した保管暗号化データ集合(ID(D),C(D))のID(D)に基づき、S804で受信した検索暗号化データtからID(D)に対する各照合データTp(1≦p≦L)を生成する。
 ここで各Tpは、
 T1=E(t,1,ID(D)),・・・,TL=E(t,L,ID(D))
である。もし、S805で読み出した保管暗号化データ集合が複数の場合は、各ID(D)に対応した照合データを生成する。
 S807において、照合部504は、検索結果に関わる空集合Rを生成し、S806で生成した各照合データTp(1≦p≦L)がC(D)に含まれているかを確認する。もしTpがC(D)に含まれているならば、ペア(ID(D),p)をRに加える。もし、S806で生成した照合データ集合が複数の場合も、同じRに上記の検索結果に関するペアを加える。
 S808において、送信部505は、S807で生成した検索結果Rを検索装置400へ送信する。
 S809において、受信部401は、S808で送信された検索結果Rを受信する。
 S810において、出力部406は、S809で受信した検索結果Rに対して、次のようにしてデータ検索者に対して出力する。検索結果Rに含まれている各(ID(D),p)に対して、「ID(D)のp番目の位置に検索データが現れる」と出力する。もしRが空集合だった場合は、「どのデータにも検索データは含まれなかった」と出力する。S810により、秘匿検索システム100の検索処理は終了する。
 図9は、秘匿検索システム100の削除処理を示すフローチャートである。図9のS901~S904は、登録装置300と管理装置500とが実行する処理である。S901~S902は登録装置300に、S903~S904は管理装置500によって実行される処理である。
 S901において、入力部304は、データ登録者から削除したい保管暗号化データ集合についての削除データ名を受け取る。なお、前述の通り、削除データ名は保管暗号化データ集合を特定できるものであれば何でもよい。
 S902において、送信部309は、S901で入力された削除データ名を管理装置500へ送信する。
 S903において、受信部501は、S902で登録装置300から送信されてきた削除データ名を受信する。
 S904において、データ保管部503は、S903で受信した削除データ名に基づき、保管している保管暗号化データ集合を削除する。
 S904により、秘匿検索システム100の削除処理は終了する。
<本実施の形態の動作具体例>
 以下に、本実施の形態の動作の具体例を示す。
 ここで、本実施の形態の動作を、
 パラメーターL=3、
 保管データをD1=ABC,
 ID(D1)=1,
 D2=BC,
 ID(D2)=2、
 検索データs=BC、
として説明する。
 また暗号化関数Eは、ハッシュ関数を用いて説明する。
 まず、D1とD2の登録処理について説明する。
 S702において、D1=(A,B,C),D2=(B,C)と分割される。
 S703において、
 A1={{(A),(AB),(ABC)},{(B),(BC)},{(C)}}及び
 A2={{(B),(BC)},{(C)}}と生成される。
 S704において、
 B1={{(1,A),(1,AB),(1,ABC)},{(2,B),(2,BC)},{(3,C)}}及び
 B2={{(1,B),(1,BC)},{(2,C)}}と生成される。
 S705において、
 C11=E(E(K,A),1,1),
 C12=E(E(K,AB),1,1),
 C13=E(E(K,ABC),1,1),
 C14=E(E(K,B),2,1),
 C15=E(E(K,BC),2,1),
 C16=E(E(K,C),3,1)及び
 C21=E(E(K,B),1,2),
 C22=E(E(K,BC),1,2),
 C23=E(E(K,C),2,2)
を生成し、
 保管暗号化データ集合(ID(D)、C(D))として
 保管暗号化データ集合(1,C(D1))
 及び
 保管暗号化データ集合(2,C(D2))
を生成する。
 ただし、
 C(D1)={C11,C12,C13,C14,C15,C16},
 C(D2)={C21,C22,C23}とする。
 ここで、
 C=E(E(K,s),p,ID(D))に注意する。
 S707及びS708により、上記の保管暗号化データ集合である(1,C(D1))と(2,C(D2))が、管理装置500に保管される。
 次に、検索データsをs=BCとした場合の検索処理について説明する。
 S802において、暗号化データt=E(K,s)を計算する。
 S805において、(1,C(D1))と(2,C(D2))を読み出す。
 S806において、
 T11=E(t,1,1),
 T12=E(t,2,1),
 T13=E(t,3,1)及び
 T21=E(t,1,2),
 T22=E(t,2,2),
 T23=E(t,3,2)
を計算する。
 S807において、T11,T12,T13がC(D1)に含まれているか,またT21,T22,T23がC(D2)に含まれているかを確認する。
 実際、
 T12はC(D1)に含まれ(C15と一致し)、
 T21はC(D2)に含まれる(C22と一致する)。
 よって、(ID(D),p)を要素とする集合の検索結果Rが、
 検索結果R={(1,2),(2,1)}として生成される。
 ここで、検索結果Rの要素は(ID(D),p)であることに注意する。
 S810において、検索結果Rに基づき、
 「保管データ名が“1”のデータの“2番目”の位置から検索データBCが現れる」、
 「保管データ名が“2”のデータの“1番目”の位置から検索データBCが現れる」といった検索結果を出力する。
 以上が具体例の説明である。
 図10は、実施の形態1における鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とのハードウェア資源の一例を示す図である。
 図10において、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500は、CPU1001(Central Processing Unit)を備えている。
 CPU1001は、バス1002を介してROM1003、RAM1004、通信ボード1005、ディスプレイ1011(表示装置)、キーボード1012、マウス1013、ドライブ1014、磁気ディスク装置1020などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。
 ドライブ1014は、FD(Flexible Disk Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)などの記憶媒体を読み書きする装置である。
 ROM1003、RAM1004、磁気ディスク装置1020およびドライブ1014は記憶装置の一例である。キーボード1012、マウス1013および通信ボード1005は入力装置の一例である。ディスプレイ1011および通信ボード1005は出力装置の一例である。
 通信ボード1005は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
 磁気ディスク装置1020には、OS1021(オペレーティングシステム)、プログラム群1022、ファイル群1023が記憶されている。プログラム群1022には、本実施の形態において「~部」として説明する機能を実行するプログラムが含まれる。プログラム(例えば、暗号化プログラム、データ検索プログラム、データ登録プログラム)は、CPU1001により読み出され実行される。すなわち、プログラムは、「~部」としてコンピュータを機能させるものであり、また「~部」の手順や方法をコンピュータに実行させるものである。ファイル群1023には、本実施の形態において説明する「~部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
 本本実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。フローチャートなどに基づいて説明する本実施の形態の処理はCPU1001、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。本実施の形態において「~部」として説明するものは「~回路」、「~装置」、「~機器」、「サーキットリ」であってもよく、また「~ステップ」、「~手順」、「~処理」であってもよい。すなわち、「~部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
<***実施の形態1の効果***>
 本実施の形態は、例えば、以下のような効果を奏する。
(1)本実施の形態では、たとえ同じ保管データをサーバへ保管したとしても、位置情報や毎回異なるデータ名により、毎回必ず異なる保管暗号化データが生成されるため、頻度分析攻撃などが受けにくくなり、高い安全性を達成する秘匿部分一致検索を実現できる。
(2)本実施の形態では、保管データを暗号化して保管しているため、たとえ管理装置500から保管暗号化データが漏洩しても、保管データの中身を知られることはない。
(3)本実施の形態では、検索データのみならず保管データも暗号化したまま処理ができるため、検索暗号化データから検索データの中身を知られることはない。
(4)本実施の形態では、保管暗号化データと検索暗号化データから得られる検索結果にはデータ名と位置情報しか現れないため、サーバなどの鍵をもたないエンティティに対しては保管データや検索データの中身を知られることはない。
(5)本実施の形態では、検索結果には検索がヒットした事実に加えて、どの位置に検索データが現れるかについての位置情報もわかるため、柔軟な部分一致検索機能をもつ。
(6)本実施の形態では、検索暗号化データがただ一つの暗号文から構成されるため検索に用いるデータサイズが非常に小さく、また検索時にデータ検索者とサーバとのやりとりが1回しか発生しないため、効率的に秘匿部分一致検索することが可能である。
(7)本実施の形態では、共通鍵暗号技術からすべて構成できるため、効率的な秘匿部分一致検索を実現できる。
 実施の形態2.
 次に、本実施の形態の秘匿検索システムについて説明する。実施の形態1では、過去に用いた検索暗号化データ(t=E(K,s))を、新しく追加した保管暗号化データ集合((ID(D),C(D)))に対して直ちに適用できた。
 実施の形態2で開示する技術は、過去に用いた検索暗号化データtを、新しく追加した保管暗号化データ集合に対して適用できない。したがって、より高い安全性を達成できる。このようなことを達成するために、ハッシュ鎖などの多重暗号化を用いる方法を開示する。
 実施の形態2では、暗号化関数Eに対して
 「E^M(K,w)」
と記載したときは、(K,M)を初期値として、暗号化関数EをM回計算(言い換えると、M回の多重暗号化を実施)することを表すとする。例えば、このような多重暗号化としてハッシュ鎖がよく知られている。
 例えば、
 E^M(K,w)
をM回目に保管したデータに対する検索暗号化データtとする。
 ここで、M+1回目に保管したデータに対する検索暗号化データtを
 t=E^(M-1)(K,w)とすると、
 M+1回目の検索暗号化データt=E^(M-1)(K,w)
を再度暗号化することで、
 M回目に保管したデータに対する検索暗号化データE^M(K,w)を生成できる。
 一方で、E^M(K,w)からE^(M-1)(K,w)を計算することはハッシュ関数などの暗号化関数であれば一般的に困難である。
 このため、過去に用いた検索暗号化データを新しく追加した保管暗号化データ集合に対して適用できず、より高い安全性を達成できる。
 本実施の形態の秘匿検索システム100は、実施の形態1とは一部異なっている。
 鍵生成装置200は鍵生成装置200aへ、登録装置300は登録装置300aへと、検索装置400は検索装置400aへと、管理装置500は管理装置500aへと変更されている。
 以下、本実施の形態の構成について説明する。以下では、鍵生成装置200aの構成、登録装置300aの構成、検索装置400aの構成、管理装置500aの構成について順番に説明する。
 図11は、鍵生成装置200aの構成を示すブロック図である。図11に示すように、鍵生成装置200aは、鍵生成部201と、パラメーター生成部202aと、送信部203aとを備える。図示していないが、鍵生成装置200aは、鍵生成装置200aの各部で使用されるデータを記憶する記録媒体を備える。鍵生成部201の説明は、すでに述べたため省略する。
 パラメーター生成部202aは、前述のパラメーターLを生成すると同時に、多重暗号化の最大回数を表すパラメーターMを生成する。このMは、同じ鍵Kを用いて保管データを管理装置500aに保管できる保管暗号化データ集合の最大数を表す。もし、Mを超えて保管暗号化データ集合を保管したい場合は、新しい鍵K´とM´を生成すれば、新たにM´個登録できるようになる。なお、Mは1より大きい整数である。また、MはLと同様に秘密情報ではないため、公に公開されていても構わない。
 送信部203aは、鍵生成部201で生成された鍵Kを、登録装置300aと、検索装置400aとへ送信し、また、パラメーター生成部202aで生成されたパラメーター(L,M)を、登録装置300aと、検索装置400aと、管理装置500aとへ送信する。
 図12は、登録装置300aの構成を示すブロック図である。図12に示すように、登録装置300aは、受信部301aと、鍵保管部302と、パラメーター保管部303aと、入力部304と、データ分割部305と、部分文字列生成部306と、位置情報割当部307と、多重暗号化部308aと、送信部309aとを備える。図示していないが、登録装置300aは、登録装置300aの各部で使用されるデータを記憶する記録媒体を備える。鍵保管部302と、入力部304と、データ分割部305と、部分文字列生成部306と、位置情報割当部307との説明は、すでに述べたため省略する。
 受信部301aは、鍵生成装置200aから送信されてきた鍵Kとパラメーター(L,M)を受信する。
 パラメーター保管部303aは、受信部301aから受け取ったパラメーター(L,M)を保管することや、鍵KとパラメーターMを使って暗号化された管理装置500aに保管されている保管暗号化データ集合の数を表すパラメーターmも保管する。
 多重暗号化部308aは、鍵保管部302から鍵Kを、パラメーター保管部303aからパラメーターmを読み出し、位置情報割当部307から受け取った位置情報付き部分文字列集合Bの中の各位置情報付き部分文字列に対する暗号文Cを次のように生成する。
位置情報と部分文字列の各ペア(p,w)に対して、
 C=E(E^(M+1-m)(K,w),p,ID(D))
を生成する。
 ここで、すべての(p,w)を暗号化した暗号文の集合をC(D)と書くことにする。 ここで、以降では
 (ID(D),m,C(D))
を保管暗号化データ集合と呼ぶことにする。
 なお、E^i(i≧1)を計算する場合、EがAESのような暗号化関数であればEを計算する度に鍵が必要となるため、例えば値がすべて0やすべて1など鍵を事前に決めてパラメーターとして保管しておくことや、すでに保管されているパラメーターのLやMなどを鍵として用いてもよい。もし、Eがハッシュ関数であれば、多重暗号化のためにそのような鍵は必要としない。
 送信部309aは、暗号化部308から受け取った保管暗号化データ集合(ID(D),m,C(D))を管理装置500aへ送信することや、またパラメーターmを検索装置400aへ送信する。また、送信部309aは、入力部304から受け取った削除データ名を管理装置500へ送信する。
 図13は、検索装置400aの構成を示すブロック図である。図13に示すように、検索装置400aは、受信部401aと、鍵保管部402と、入力部403と、多重暗号化部404aと、送信部405と、出力部406と、パラメーター保管部407aとを備える。図示していないが、検索装置400aは、検索装置400aの各部で使用されるデータを記憶する記録媒体を備える。
 鍵保管部402と、入力部403と、送信部405と、出力部406の説明は、既に述べたため省略する。
 受信部401aは、鍵生成装置200aから送信されてきた鍵KとパラメーターMや、登録装置300aから送信されてきたパラメーターmや、管理装置500aから送信されてきた検索結果を受信する。
 多重暗号化部404aは、鍵保管部402から鍵Kを、パラメーター保管部407aからパラメーターmを読み出し、入力部403から受け取った検索データsに対して、鍵Kとパラメーターmを用いて、次のように暗号文tを生成する。
 多重暗号化部404aは、
 t=E^(M+1-m)(K,s)
を生成する。
 以降では、このtを検索暗号化データと呼ぶ。
 なお、前述の通り、E^i(i≧1)を計算する場合、EがAESのような暗号化関数であればEを計算する度に鍵が必要となるため、例えば値がすべて0やすべて1など鍵を事前に決めてパラメーターとして保管しておくことや、すでに保管されているパラメーターのLやMなどを鍵として用いてもよい。もし、Eがハッシュ関数であれば、多重暗号化のためにそのような鍵は必要としない。
 パラメーター保管部407aは、受信部401から受け取ったパラメーターMを保管する。また、受信部401から受け取ったパラメーターがペアmの場合、パラメーター保管部407aは、すでに保管されている(M,m)のmのパラメーターを更新する。
 図14は、管理装置500aの構成を示すブロック図である。図14に示すように、管理装置500aは、受信部501aと、パラメーター保管部502aと、データ保管部503と、照合部504aと、送信部505と、多重暗号化部506aとを備える。図示していないが、管理装置500aは、管理装置500aの各部で使用されるデータを記憶する記録媒体を備える。
 データ保管部503と、送信部505の説明は、すでに述べたため省略する。
 受信部501aは、鍵生成装置200aから送信されてきたパラメーター(L,M)、登録装置300aから送信されてきた保管暗号化データ集合(ID(D),m,C(D))や削除データ名、検索装置400aから送信されてきた検索暗号化データtや保管データ名を受信する。
 パラメーター保管部502aは、受信部501aから受け取ったパラメーター(L,M)や、保管暗号化データ集合(ID(D),m,C(D))のmも合わせて保管する。
 照合部504aは、検索結果に関わる空集合Rを生成し、データ保管部503から、すべての保管暗号化データ集合(ID(Di),m,C(Di))(1≦i≦m)を読み出し、後述する多重暗号化部506aから受け取った多重暗号化データ集合
 {(1,t1)、(2,t2),・・・,(m,tm)}
に基づき、次のようにして照合を行うことや検索結果を生成する。
 照合部504aは、
 各i(1≦i≦m)に対して、(ID(Di),i,C(Di))
となる保管暗号化データ集合を抽出し、
 Xi={T1_i=E(ti,1,ID(Di)),・・・,TL_i=E(ti,L,ID(Di))}
を計算する。
 その後、照合部504aは、各Tp_i(1≦p≦L)がC(Di)に含まれているかを確認する。もしTp_iがC(Di)に含まれているならば、ペア(ID(Di),p)をRに加える。この(ID(Di),p)は「ID(Di)のp番目の位置に検索データが現れる」を意味する。
 以降では、各Tp_iをID(Di)に対する照合データと呼び、
 {T1,・・・,TL}
をID(Di)に対する照合データ集合と呼ぶことにする。また、本処理の結果、最終的に生成される集合Rを検索結果と呼ぶことにする。
 なお、照合部504aは、受信部501aが検索装置400aから保管データ名も受信していれば、それに基づいてデータ保管部503から対象となる保管暗号化データ集合のみを読み出して、同様な処理を行う。
 多重暗号化部506aは、パラメーター保管部502aからパラメーターmを読み出し、受信部501から受け取った検索暗号化データtに基づき、次のような多重暗号化データを生成する。
 t1=E^(m-1)(t),
 t2=E^(m-2)(t),
 ・・・,
 tm=E^0(t)=t。
 以降、
 集合{(1,t1)、(2,t2),・・・,(m,tm)}
を多重暗号化データ集合と呼ぶことにする。
 なお、前述の通り、E^i(i≧1)を計算する場合、EがAESのような暗号化関数であればEを計算する度に鍵が必要となるため、例えば値がすべて0やすべて1など鍵を事前に決めてパラメーターとして保管しておくことや、すでに保管されているパラメーターのLやMなどを鍵として用いてもよい。もし、Eがハッシュ関数であれば、多重暗号化のためにそのような鍵は必要としない。
 以下では、本実施の形態に係る検索方法に相当する、秘匿検索システム100の動作について説明する。
 図15は、本実施の形態における秘匿検索システム100の鍵生成・保管処理を示すフローチャートである。図15のS601~S612aは、鍵生成装置200aと、登録装置300aと、検索装置400aと、管理装置500aとが実行する処理である。S601~S605aは鍵生成装置200aに、S606a~S608aは登録装置300aに、S609a~S610a2は検索装置400aに、S611a~S612aは管理装置500aによって実行される処理である。
 なお、本検索処理におけるS601とS607とは、実施の形態1のそれぞれと同様の処理であるため、ここでは省略する。
 S602aにおいて、パラメーター生成部202aは、パラメーターL及びMを生成する。なお、前述の通り、Lは保管データを分割したときに現れる文字列の最大数であり、またMは同じ鍵Kを用いて保管データを管理装置500aに保管できる保管暗号化データ集合の最大数を表す。
 S603aにおいて、送信部203aは、S601で生成した鍵Kと、S602aで生成したパラメーター(L,M)とを、登録装置300aへ送信する。
 S604aにおいて、送信部203aは、S601で生成した鍵Kと、S602aで生成したパラメーター(L,M)とを、検索装置400aへ送信する。
 S605aにおいて、送信部203aは、S602で生成したパラメーター(L,M)を、管理装置500aへ送信する。
 S606aにおいて、受信部301aは、S603aで送信された鍵Kと、パラメーター(L,M)とを受信する。
 S608aにおいて、パラメーター保管部303aは、S606aで受信したパラメーター(L,M)を記憶媒体に保管する。
 S609aにおいて、受信部401aは、S604aで送信された鍵Kと、パラメーター(L,M)とを受信する。
 S610a1において、鍵保管部402は、S609aで受信した鍵Kを記憶媒体に保管する。
 S610a2において、パラメーター保管部407aは、S609aで受信したパラメーター(L,M)を記憶媒体に保管する。
 S611aにおいて、受信部501aは、S605aで送信されたパラメーター(L,M)を受信する。
 S612aにおいて、パラメーター保管部502aは、S611aで受信したパラメーター(L,M)を記憶媒体に保管する。S612aにより、秘匿検索システム100の鍵生成・保管処理は終了する。
 図16は、実施の形態2の秘匿検索システム100の登録処理を示すフローチャートである。図16のS701~S712aは、登録装置300aと、検索装置400aと、管理装置500aとが実行する処理である。S701~S706と、S709aと、S712aは登録装置300aに、S707~S708a2は管理装置500aに、S710a~S711aは検索装置400aによって実行される処理である。
 なお、本検索処理におけるS701~S704と、S706~S707とは、実施の形態1のそれぞれと同様の処理であるため、ここでは省略する。
 S705aにおいて、多重暗号化部308は、鍵保管部302から鍵Kを、パラメーター保管部303aからパラメーターmを読み出し、S704で生成された位置情報付き部分文字列集合Bの中の各位置情報付き部分文字列の暗号文Cを次のように生成する。
 多重暗号化部308は、位置情報と部分文字列の各ペア(p,w)に対して、
C=E(E^(M+1-m)(K,w),p,ID(D))
と計算する。また、すべての(p,w)を暗号化した暗号文の集合をC(D)とし、保管暗号化データ集合(ID(D),m,C(D))を生成する。
 S708a1において、データ保管部503は、S707で受信した保管暗号化データ集合(ID(D),m,C(D))を保管する。
 S708a2において、パラメーター保管部502aは、S707で受信した保管暗号化データ集合(ID(D),m,C(D))のmから保管されているmの値を更新する。
 S709aにおいて、送信部309aは、S705aで読み出したパラメーターmを検索装置400aへ送信する。
 S710aにおいて、受信部401aは、S710aで送信されたパラメーターmを受信する。
 S711aにおいて、パラメーター保管部407aは、保管されているパラメーターmをS711aで受信したパラメーターmに置き換えて更新する。
 S712aにおいて、パラメーター保管部303aは、パラメーターmの値を1カウントアップしてmの値を更新する。S712aにより、秘匿検索システム100の登録処理は終了する。
 図17は、実施の形態2の秘匿検索システム100の検索処理を示すフローチャートである。図17のS801~S810は、検索装置400aと管理装置500aとが実行する処理である。S801~S803及びS809~S810は検索装置400aに、S804~S808は管理装置500にaよって実行される処理である。
 なお、本検索処理におけるS801と、S803と、S804と、S808~S810は、実施の形態1のそれぞれと同様の処理であるため、ここでは省略する。
 S802aにおいて、多重暗号化部404aは、鍵保管部402から鍵Kを、パラメーター保管部407aからパラメーターmを読み出し、S801で受け取った検索データsに対して鍵Kを用いて、次のようにして検索暗号化データtを生成する。
 t=E^(M+1-m)(K,s)。
 S805a1において、多重暗号化部506aは、パラメーター保管部502aからパラメーターmを読み出し、S804で受信した検索暗号化データtに基づき、次のような多重暗号化データ集合
 {(1,t1)、(2,t2),・・・,(m,tm)}を生成する。
 ただし、
 t1=E^(m-1)(t),t2=E^(m-2)(t),・・・,tm=E^0(t)=t
である。
 S805a2において、照合部504aは、データ保管部503から保管暗号化データ集合(ID(D),C(D))を読み出す。なお、もしS804で保管データ名も受信していた場合は、その保管データ名に基づき、対象の保管暗号化データ集合のみを読み出す。もしS804で保管データ名を受信していなかった場合は、保管されているすべての保管暗号化データ集合を読み出す。ここで、読み出した複数の保管暗号化データ集合を
 {(ID(D1),1,C(D1)),・・・,(ID(Dm),m,C(Dm))}
とする。
 S806aにおいて、照合部504aは、パラメーター保管部502aからパラメーターLを読み出し、S805a2で読み出した各(ID(Di),i,C(Di))(1≦i≦m)に対して、S805a1で生成した多重暗号化データ(i,ti)に基づき、ID(Di)に対する照合データ集合Xi={T1_i,・・・,TL_i}を生成する。
 ただし、
 T1_i=E(ti,1,ID(Di)),・・・,TL_i=E(ti,L,ID(Di))である。
 S807aにおいて、照合部504aは、検索結果に関わる空集合Rを生成し、
 各p(1≦p≦L)に対して次のような処理を行う。
 S806aで生成したID(Di)に対する各照合データTp_i(1≦p≦L)がC(Di)に含まれているかを確認する。もしTp_iがC(Di)に含まれているならば、ペア(ID(Di),p)をRに加える。
 S810により、秘匿検索システム100の検索処理は終了する。本実施の形態でも、実施の形態1と同様な削除処理を行うことにより、保管暗号化データ集合の削除が可能である。
<本実施の形態の動作具体例>
 ここで、本実施の形態の動作を、
 パラメーターL=3、パラメーターM=2、
 最初の保管データをD1=ABC,ID(D1)=1、
 次の保管データをD2=BC,ID(D2)=2、
 検索データを=BC、
として説明する。
 また暗号化関数Eは、ハッシュ関数を用いて説明する。
 まず、D1の登録処理について説明する。
 S702において、D1=(A,B,C)と分割される。
 S703において、
 A1={{(A),(AB),(ABC)},{(B),(BC)},{(C)}}
と生成される。
 S704において、
 B1={{(1,A),(1,AB),(1,ABC)},{(2,B),(2,BC)},{(3,C)}}と生成される。
 S705aにおいて、m=1が読み出され、
 C11=E(E^2(K,A),1,1),
 C12=E(E^2(K,AB),1,1),
 C13=E(E^2(K,ABC),1,1),
 C14=E(E^2(K,B),2,1),
 C15=E(E^2(K,BC),2,1),
 C16=E(E^2(K,C),3,1)
を生成し,保管暗号化データ集合(1,C(D1))を生成する。
 ただし、
 C(D1)={C11,C12,C13,C14,C15,C16}
 及び
 M+1-m=2である。
 S707及びS708a1により、保管暗号化データ集合(1,1,C(D1))が保管される。S708a2~S712aにより、パラメーター保管部303aのパラメーターmが2に、パラメーター保管部407aとパラメーター保管部502aのパラメーターmが1に更新される。
 次に、D1に対してsを使った検索処理について説明する。
 S802aにおいて、m=1を読み出し、t=E^2(K,s)を計算する。
 ただし、M+1-m=2である。
 S805a1において、m=1を読み出し、t1=tを計算し、
 多重暗号化データ集合{(1,t1)}を生成する。
 S805a2において、(1,1,C(D1))を読み出す。
 S806aにおいて、
 T1_1=E(t1,1,1),
 T2_1=E(t1,2,1),
 T3_1=E(t1,3,1)
を計算する。
 S807aにおいて、T1_1,T2_1,T3_1がC(D1)に含まれているかを確認する。実際、T2_1はC(D1)に含まれる(C15と一致する)。
よって、検索結果R={(1,2)}が生成される。
 S810において、Rに基づき、「保管データ名が“1”のデータの“2番目”の位置から検索データBCが現れる」といった検索結果を出力する。
 次に、D2の登録処理を行う。
 S702において、D2=(B,C)と分割される。
 S703において、A2={{(B),(BC)},{(C)}}と生成される。
 S704において、B2={{(1,B),(1,BC)},{(2,C)}}と生成される。
 S705aにおいて、m=2が読み出され、
 C21=E(E^1(K,B),1,2),
 C22=E(E^1(K,BC),1,2),
 C23=E(E^1(K,C),2,2)
を生成し、保管暗号化データ集合(2,C(D2))
を生成する。
 ただし、
 C(D2)={C21,C22,C23}
 及び
 M+1-m=1である。
 また、E^1=Eである。
 S707及びS708a1により、保管暗号化データ集合(2,2,C(D2))が保管される。
 S708a2~S712aにより、パラメーター保管部303aのパラメーターmが3に、パラメーター保管部407aとパラメーター保管部502aのパラメーターmが2に更新される。
 次に、D1とD2に対して再度sを使った検索処理について説明する。
 S802aにおいて、m=2を読み出し、t=E(K,s)を計算する。
 ただし、M+1-m=1である。
 S805a1において、m=2を読み出し、t1=E(t),t2=t,を計算し、多重暗号化データ集合{(1,t1)、(2,t2)}を生成する。
 S805a2において、
 (1,1,C(D1))と(2,2,C(D2))
を読み出す。
 S806aにおいて、
 T1_1=E(t1,1,1),
 T2_1=E(t1,2,1),
 T3_1=E(t1,3,1)及び
 T1_2=E(t2,1,2),
 T2_2=E(t2,2,2),
 T3_2=E(t2,3,2)
を計算する。
 S807aにおいて、T1_1,T2_1,T3_1がC(D1)に含まれているか、
 またT1_2,T2_2,T3_2がC(D2)に含まれているかを確認する。
 実際、
 T2_1はC(D1)に含まれ(C15と一致し)、
 T1_2はC(D2)に含まれる(C22と一致する)。
 よって、検索結果R={(1,2),(2,1)}が生成される。
 S810において、Rに基づき、「保管データ名が“1”のデータの“2番目”の位置から検索データBCが現れる」、「保管データ名が“2”のデータの“1番目”の位置から検索データBCが現れる」といった検索結果を出力する。
 なお、一度目に検索した検索データと二度目に検索した検索データは同一であるが(s=BC)、検索暗号化データはそれぞれE^2(K,s),E(K,s)であるため異なった値が生成されている。また、E(K,s)からE^2(K,s)は計算できるため、二度目に検索した検索暗号化データから一度目に検索した検索暗号化データが作れる。一方で、E^2(K,s)からE(K,s)を計算することは一般的に困難であるため、一度目に検索した検索暗号化データから二度目に検索した検索暗号化データを作ることは困難である。
 以上が具体例の説明である。
 本実施の形態におけるハードウェア資源の一例は、実施の形態1と同様であるため省略する。本実施の形態は、例えば、以下のような効果を奏する。
<***実施の形態2の効果***>
 本実施の形態では、実施の形態1と同様な効果を得ることに加えて、ハッシュ鎖などの多重暗号化を用いることにより、過去に用いた検索暗号化データを、新しく追加した保管暗号化データ集合に対して適用できないため、より高い安全性を達成できる。
 実施の形態3.
 次に、本実施の形態の秘匿検索システムについて説明する。
 実施の形態2では、ハッシュ鎖などの多重暗号化を用いることにより、より高い安全性を達成できたが、同じ鍵Kで生成や保管できる保管暗号化データ集合の数がパラメーターMと線型に依存するため、Mをある程度大きくとる必要がある。
 一方で、Mを大きくとりすぎると、多重暗号化処理に時間がかかってしまう。
 そこで、本実施の形態では、保管データを1つずつ保管することはせずに、複数の保管データをまとめて保管することによって、実施の形態2と同じMを選択しても、同じ鍵Kで暗号化や保管できる保管データの最大数を大きくすることや、かつ検索効率を向上できるような技術を開示する。
 本実施の形態では、保管データを1つずつ保管することはせずに、索引として複数の保管データを同時に保管する手法を開示する。
 本実施の形態の秘匿検索システム100は、実施の形態2とは一部異なっている。鍵生成装置200aは鍵生成装置200bへと、登録装置300aは登録装置300bへと、検索装置400aは検索装置400bへと、管理装置500aは管理装置500bへと変更されている。
 以下、本実施の形態の構成について説明する。以下では、鍵生成装置200bの構成、登録装置300bの構成、検索装置400bの構成、管理装置500bの構成について順番に説明する。
 図18は、鍵生成装置200bの構成を示すブロック図である。図18に示すように、鍵生成装置200bは、鍵生成部201と、パラメーター生成部202bと、送信部203bとを備える。図示していないが、鍵生成装置200bは、鍵生成装置200bの各部で使用されるデータを記憶する記録媒体を備える。鍵生成部201の説明は、すでに述べたため省略する。
 パラメーター生成部202bは、前述のパラメーターL,Mを生成すると同時に、一度に保管できる保管データの最大数を表すパラメーターNを生成する。すなわち、各索引は最大N個の保管データに関する情報を保持することができる。もし、一度に保管する保管データ数がNを超える場合は、各索引を高々N個の保管データと対応づけるように複数の索引を生成する。なお、Nは1より大きい整数である。また、NはL,Mと同様に秘密情報ではないため、公に公開されていても構わない。
 送信部203bは、鍵生成部201で生成された鍵Kを、登録装置300bと、検索装置400bとへ送信し、また、パラメーター生成部202bで生成されたパラメーター(L,M,N)を、登録装置300bと、管理装置500bとへ送信し、またパラメーター(L,M)を検索装置400bへ送信する。
 図19は、登録装置300bの構成を示すブロック図である。図19に示すように、登録装置300bは、受信部301bと、鍵保管部302と、パラメーター保管部303bと、入力部304bと、データ分割部305と、部分文字列生成部306と、位置情報割当部307と、多重暗号化部308bと、送信部309bと、集約部310bとを備える。図示していないが、登録装置300bは、登録装置300bの各部で使用されるデータを記憶する記録媒体を備える。
 鍵保管部302と、データ分割部305と、部分文字列生成部306と、位置情報割当部307との説明は、すでに述べたため省略する。
 受信部301bは、鍵生成装置200bから送信されてきた鍵Kとパラメーター(L,M,N)を受信する。
 パラメーター保管部303bは、受信部301bから受け取ったパラメーター(L,M,N)を保管することや、鍵KとパラメーターMを使って暗号化された管理装置500aに保管されている索引の数を表すパラメーターmも保管する。なお、mの初期値は1を表し、多重暗号化部308aからmが読み出されたら、mの値を1カウントアップしてmの値を更新する。
 入力部304bは、データ登録者から保管データ及び保管データ名の
 ペアの集合{(ID(D1),D1),・・・,(ID(Dn),Dn)}、
 また索引名ID(I)
を受け取る。
 なお、保管データ及び保管データ名は集合ではなく、単一でもよい。
 もしn>Nの場合は、n=n1+・・・+nkかつnj≦n(1≦j≦n)
となるように分割して、各njについて以下の処理をk回実行すればよい。
 もし、データ登録者から索引名の入力がなければ、入力部304bは、ID(I)を乱数と割り当ててもよいし、他の索引名と重複しないように0より大きい整数の値を順に割り当ててもよい。
 ここで、データ分割部305と、部分文字列生成部306と、位置情報割当部307とは、上記の
 {(ID(D1),D1),・・・,(ID(Dn),Dn)}
に対して、次のように処理を行ったとする。
 各データは
 D1=(w_1,・・・,w_1),・・・,Dn=(w_n,・・・,w_n)
のように分割され、各位置情報付き部分文字列集合Bi(1≦i≦n)は、
 {(1,w_i),(1,w_iw_i),・・・,(1,w_i・・・w_i)},
 {(2,w_i),(2,w_iw_i),・・・,(2,w_i・・・w_i)},
 ・・・,
 {(L,w_i)}}
のように生成されたとする。
 多重暗号化部308bは、後述する集約部310bから受け取った集約データ集合Yを受け取り、鍵保管部302から鍵Kを、パラメーター保管部303bからパラメーター(m,M,N)を読み出し、Yの各要素の暗号文及び集合Iを次のように生成する。
 各要素(p,w,{ID(D_i1),・・・,ID(D_ik)},{ID(D_ik+1),・・・,ID(D_in)})に対して、
 C1  =E(E^(M+1-m)(K,w,0),p,1,  ID(I)),
 ・・・,
 Ck  =E(E^(M+1-m)(K,w,0),p,k,  ID(I)),
 Ck+1=E(E^(M+1-m)(K,w,1),p,k+1,ID(I)),
 ・・・,
 Cn=  E(E^(M+1-m)(K,w,1),p,n,  ID(I))
と生成し、
 集合I={(Cj,ID(D_ij))}
と置く。以降、この集合Iを索引と呼ぶことにする。
 また、(ID(I),m,I)
を保管索引と呼ぶことにする。
 送信部309bは、多重暗号化部308bから受け取った保管索引(ID(I),m,I)を管理装置500bへ送信することや、また索引Iを生成したときに用いたパラメーターmを検索装置400bへ送信する。
 集約部310bは、位置情報割当部307から受け取ったB1,・・・Bnに対して、次のような集合Yを生成する。
 集合Yの各要素は、
 (p,w,{ID(D_i1),・・・,ID(D_ik)},{ID(D_ik+1),・・・,ID(D_in)})
は、
 「(p,w)はBi1,・・・,Bikそれぞれに含まれるが、Bik+1,・・・,Binには含まれない」ことを意味する。
 なお、このペア(p,w)は必ずB1,・・・,Bnのいずれかに含まれるとする。また、複数含まれてもよい。つまり、YはB1,・・・,Bnの要素を集約した集合とみなすことができる。また、
 {ID(D_i1),・・・,ID(D_in)}={ID(D1),・・・,ID(Dn)}
である。以降では、Yを集約データ集合と呼ぶことにする。
 図20は、検索装置400bの構成を示すブロック図である。図20に示すように、検索装置400bは、受信部401aと、鍵保管部402と、入力部403bと、多重暗号化部404bと、送信部405bと、出力部406と、パラメーター保管部407aとを備える。図示していないが、検索装置400bは、検索装置400bの各部で使用されるデータを記憶する記録媒体を備える。
 受信部401aと、鍵保管部402と、出力部406と、パラメーター保管部407aの説明は、既に述べたため省略する。
 入力部403bは、データ検索者から入力された検索データsを受け取る。また、入力部403bは、データ検索者から、検索データと同時に、その検索データと検索したい保管索引を指定するような保管索引名も複数受けとってもよい。
 多重暗号化部404bは、鍵保管部402から鍵Kを、パラメーター保管部407aからパラメーターmを読み出し、入力部403bから受け取った検索データsに対して、鍵Kとパラメーターmを用いて、次のように暗号文tを生成する。
 多重暗号化部404bは、
 t=E^(M+1-m)(K,s,0)
を生成する。
 以降では、このtを検索暗号化データと呼ぶ。
 送信部405bは、多重暗号化部404bから受け取った検索暗号化データtを管理装置500bへ送信する。もし、データ検索者から検索データと同時に保管索引名も入力されていた場合は、検索暗号化データと保管索引名の両方を管理装置500bへ送信する。
 図21は、管理装置500bの構成を示すブロック図である。図21に示すように、管理装置500bは、受信部501bと、パラメーター保管部502bと、データ保管部503bと、照合部504bと、送信部505と、多重暗号化部506aとを備える。図示していないが、管理装置500bは、管理装置500bの各部で使用されるデータを記憶する記録媒体を備える。
 送信部505と、多重暗号化部506aの説明は、すでに述べたため省略する。
 受信部501bは、鍵生成装置200bから送信されてきたパラメーター(L,M,N)、登録装置300bから送信されてきた保管暗号化データ集合(ID(I),m,I)や削除索引名、検索装置400bから送信されてきた検索暗号化データtや保管索引名を受信する。
 パラメーター保管部502bは、受信部501bから受け取ったパラメーター(L,M,N)や、保管索引(ID(I),m,I)のmも合わせて保管する。
 データ保管部503bは、受信部501bから受け取った保管索引(ID(I),m,I)を保管する。必要があれば、送信されてきた日時なども同時に保管してもよい。また、データ保管部503bは、受信部501bから受け取った削除索引名に基づき、保管している保管索引を削除する。
 照合部504bは、検索結果に関わる空集合Rを生成し、データ保管部503bからすべての保管索引(ID(I),m,I)を読み出し、多重暗号化部506aから受け取った多重暗号化データ集合{(1,t1)、(2,t2),・・・,(m,tm)}に基づき、次のようにして照合を行うことや検索結果を生成する。
 照合部504bは、各i(1≦i≦m)に対して、(ID(I),i,I)となる保管索引を抽出し、次を繰り返し実行する。
 照合部504bは、各p(1≦p≦L)及び各j(1≦j≦N)に対して、
 C_pj=E(ti,p,j,ID(I))を計算し(全部でL×N個の計算)、
 各C_pjが索引Iに含まれているかを確認し、もし含まれていればC_pjとペアで保管されているID(D)を抽出して(ID(D),p)を空集合Rに追加する。
 なお、もしC_pjはIに含まれるが、
 C_pj+1=E(ti,p,j+1,ID(I))
が索引Iに含まれない場合は、
 E(ti,p,j+2,ID(I)),・・・,E(ti,p,N,ID(I))
も索引Iには含まれないため、これらの計算を省略して検索効率を高めることができる。
 以降では、
 各C_pj(1≦p≦L,1≦j≦N)
をID(I)に対する照合データと呼ぶことにする。また、本処理の結果、最終的に生成される集合Rを検索結果と呼ぶことにする。
 なお、照合部504bは、受信部501bが検索装置400bから保管索引名も受信していれば、それに基づいてデータ保管部503bから対象となる保管索引のみを読み出して、同様な処理を行う。
 以下では、本実施の形態に係る検索方法に相当する、秘匿検索システム100の動作について説明する。
 図22は、本実施の形態における秘匿検索システム100の鍵生成・保管処理を示すフローチャートである。図22のS601~S612bは、鍵生成装置200bと、登録装置300bと、検索装置400bと、管理装置500bとが実行する処理である。S601~S605bは鍵生成装置200bに、S606b~S608bは登録装置300bに、S609a~S610a2は検索装置400bに、S611b~S612bは管理装置500aによって実行される処理である。
 なお、本検索処理におけるS601と、S604a、S607と、S609a~S610a2とは、実施の形態2のそれぞれと同様の処理であるため、ここでは省略する。
 S602bにおいて、パラメーター生成部202bは、パラメーターL、M、Nを生成する。なお、前述の通り、Lは保管データを分割したときに現れる文字列の最大数であり、Mは同じ鍵Kを用いて管理装置500bに保管できる保管索引の最大数を表し、Nは一度に登録できる保管データの最大数である。
 S603bにおいて、送信部203bは、S601で生成した鍵Kと、S602bで生成したパラメーター(L,M,N)とを、登録装置300bへ送信する。
 S605bにおいて、送信部203bは、S602bで生成したパラメーター(L,M,N)を、管理装置500bへ送信する。
 S606bにおいて、受信部301bは、S603bで送信された鍵Kと、パラメーター(L,M,N)とを受信する。
 S608bにおいて、パラメーター保管部303bは、S606bで受信したパラメーター(L,M,N)を記憶媒体に保管する。
 S611bにおいて、受信部501bは、S605bで送信されたパラメーター(L,M,N)を受信する。
 S612bにおいて、パラメーター保管部502bは、S611bで受信したパラメーター(L,M,N)を記憶媒体に保管する。
 S612bにより、秘匿検索システム100の鍵生成・保管処理は終了する。
 図23は、秘匿検索システム100の登録処理を示すフローチャートである。図23のS701~S712aは、登録装置300bと、検索装置400bと、管理装置500bとが実行する処理である。S701~S706bと、S709aと、S712aは登録装置300bに、S707b~S708b2は管理装置500bに、S710a~S711aは検索装置400bによって実行される処理である。
 なお、本検索処理におけるS701~S704と、S709a2~S712aとは、実施の形態2のそれぞれと同様の処理であるため、ここでは省略する。
 S705b1において、集約部310bは、S704で生成されたB1,・・・Bnに対して、集約データ集合Yを生成する。なお、前述の通り、Yの各要素は(p,w,{ID(D_i1),・・・,ID(D_ik)},{ID(D_ik+1),・・・,ID(D_in)})と表わされる。
 S705b2において、多重暗号化部308bは、S705b1で生成された集約データ集合Yを受け取り、鍵保管部302から鍵Kを、パラメーター保管部303bからパラメーター(m,M,N)を読み出し、保管索引(ID(I),m,I)を生成する。
 なお、前述の通り、索引IはI={(Cj,ID(D_ij))}と表わされ、またYの各要素
 (p,w,{ID(D_i1),・・・,ID(D_ik)},{ID(D_ik+1),・・・,ID(D_in)})
におけるC1,・・・,Cnは
 次のように表わされている。
 C1=E(E^(M+1-m)(K,w,0),p,1,ID(I)),
 ・・・,
 Ck=E(E^(M+1-m)(K,w,0),p,k,ID(I)),
 Ck+1=E(E^(M+1-m)(K,w,1),p,k+1,ID(I)),
 ・・・,
 Cn=E(E^(M+1-m)(K,w,1),p,n,ID(I))。
 S706bにおいて、送信部309bは、S705b2で生成した保管索引(ID(I),m,I)を管理装置500bへ送信する。
 S707bにおいて、受信部501bは、S706bで送信された保管索引(ID(I),m,I)を受信する。
 S708b1において、データ保管部503bは、S707bで受信した保管索引(ID(I),m,I)を保管する。
 S708b2において、パラメーター保管部502bは、S707bで受信した保管索引(ID(I),m,I)のmから保管されているmの値を更新する。
 S712aにより、秘匿検索システム100の登録処理は終了する。
 図24は、秘匿検索システム100の検索処理を示すフローチャートである。図24のS801~S810は、検索装置400bと管理装置500bとが実行する処理である。S801~S803及びS809~S810は検索装置400bに、S804~S808は管理装置500にaよって実行される処理である。
 なお、本検索処理におけるS801と、S803と、S804~S805a1と、S808~S810は、実施の形態2のそれぞれと同様の処理であるため、ここでは省略する。
 S802bにおいて、多重暗号化部404bは、鍵保管部402から鍵Kを、パラメーター保管部407aからパラメーターmを読み出し、S801で受け取った検索データsに対して鍵Kを用いて、次のようにして検索暗号化データtを生成する。
 t=E^(M+1-m)(K,s,0)。
 S805b2において、照合部504bは、データ保管部503bからすべての保管索引(ID(I),m,I)を読み出す。なお、もしS804で保管索引名も受信していた場合は、その保管索引名に基づき、対象の保管索引のみを読み出す。もしS804で保管索引名を受信していなかった場合は、保管されているすべての保管索引を読み出す。ここで、読み出した複数の保管暗号化データ集合を、
 {(ID(I1),1,I1)),・・・,(ID(Im),m,Im)}
とする。
 S806bにおいて、照合部504bは、パラメーター保管部502bからパラメーター(L,N)を読み出し、S805b2で読み出した各保管索引の(ID(Ii),i,Ii)(1≦i≦m)に対して、
 S805a1で生成された多重暗号化データ(i,ti)に基づき、次のようにして各Iiに対する照合データ集合Xiを生成する。
 各p(1≦p≦L)及び各j(1≦j≦N)に対して、
 C_pj=E(ti,p,j,ID(Ii))を計算し、
 このL×N個の照合データの集合をXiとする。なお、本ステップでは、照合データ集合X1,・・・,Xmが生成される。
 S807bにおいて、照合部504bは、検索結果に関わる空集合Rを生成し、S806bで生成された各照合データ集合の
 Xi={C_pj}(1≦i≦m,1≦p≦L,1≦j≦N)に対して、
 次のようにして照合処理を行い、検索結果Rを生成する。
 各C_pjがIiに含まれているかを確認し、
 もし含まれていればC_pjとペアで保管されているID(D)を抽出して(ID(D),p)をRに追加する。
 なお、前述の通り、もしC_pjはIiに含まれるが、
 C_pj+1=E(ti,p,j+1,ID(I))
がIiに含まれない場合は、
 E(ti,p,j+2,ID(I)),・・・,E(ti,p,N,ID(I))
もIiには含まれないため、これらの照合処理を省略して検索効率を高めることができる。
 S810により、秘匿検索システム100の検索処理は終了する。なお、S806bでは、各Iiに対する照合データ集合Xiにおいて、すべてのC_pj(1≦p≦L,1≦j≦N)を生成していたが、前述の通り、もしC_pjはIiに含まれるが、
 C_pj+1=E(ti,p,j+1,ID(I))
がIiに含まれない場合は、
 E(ti,p,j+2,ID(I)),・・・,E(ti,p,N,ID(I))
もIiには含まれないため、いくつかのC_pjの生成に関わる処理は省略することができる。具体的には、S806bとS807bのステップを完全に分割せず、各C_pjを生成した直後に照合処理を行うといったようにS806bとS807bを繰り返して処理すれば、この効率化は実現できる。
 本実施の形態でも、削除データ名を削除索引名と読み替えることによって、実施の形態1と同様な削除処理を行うことにより、保管索引の削除が可能である。
<本実施の形態の動作具体例>
 ここで、本実施の形態の動作を、
 パラメーターL=3、パラメーターM=2、パラメーターN=3、
 保管データをD1=ABC,ID(D1)=1、
 及び保管データD2=BBC,ID(D2)=2、
 索引名=3、検索データs=BC、
として説明する。
 また暗号化関数Eは、ハッシュ関数を用いて説明する。
 まず、D1とD2の登録処理について説明する。
 S702において、D1=(A,B,C),D2=(B,B,C)と分割される。
 S703において、
 A1={{(A),(AB),(ABC)},{(B),(BC)},{(C)}}
 及び
 A2={{(B),(BB),(BBC)},{(B),(BC)},{(C)}}
と生成される。
 S704において、
 B1={{(1,A),(1,AB),(1,ABC)},{(2,B),(2,BC)},{(3,C)}}及び
 B2={{(1,B),(1,BB),(1,BBC)},{(2,B),(2,BC)},{(3,C)}}と生成される。
 S705b1において、
 次のように集約する。
 (1,A,{1},{2}),
 (1,AB,{1},{2}),
 (1,ABC,{1},{2}),
 (1,B,{2},{1}),
 (1,BB,{2},{1}),
 (1,BBC,{2},{1}),
 (2,B,{1,2},{}),
 (2,BC,{1,2},{}),
 (3,C,{1,2},{})。
 S705b2において、m=1が読み出され、
 I=
 {(C11,1),(C12,2),
 (C21,1),(C22,2),
 (C31,1),(C32,2),
 (C41,2),(C42,1),
 (C51,2),(C52,1),
 (C61,2),(C62,1),
 (C71,1),(C72,2),
 (C81,1),(C82,2),
 (C91,1),(C92,2)}
を生成し,保管索引(3,1,I)を生成する。
 ただし、
 C11=E(E^2(K,A,0),1,1,3),
 C12=E(E^2(K,A,1),1,2,3),
 C21=E(E^2(K,AB,0),1,1,3),
 C22=E(E^2(K,AB,1),1,2,3),
 C31=E(E^2(K,ABC,0),1,1,3),
 C32=E(E^2(K,ABC,1),1,2,3),
 C41=E(E^2(K,B,0),1,1,3),
 C42=E(E^2(K,B,1),1,2,3),
 C51=E(E^2(K,BB,0),1,1,3),
 C52=E(E^2(K,BB,1),1,2,3),
 C61=E(E^2(K,BBC,0),1,1,3),
 C62=E(E^2(K,BBC,1),1,2,3),
 C71=E(E^2(K,B,0),2,1,3),
 C72=E(E^2(K,B,0),2,2,3),
 C81=E(E^2(K,BC,0),2,1,3),
 C82=E(E^2(K,BC,0),2,2,3),
 C91=E(E^2(K,C,0),3,1,3),
 C92=E(E^2(K,C,0),3,2,3)、
 またM+1-m=2である。
 S707b及びS708b1により、保管索引(3,1,I)が保管される。
 S708b2~S712aにより、パラメーター保管部303aのパラメーターmが2に、パラメーター保管部407aとパラメーター保管部502aのパラメーターmが1に更新される。
 次に、s=BCの検索処理について説明する。
 S802aにおいて、m=2を読み出し、
 t=E^2(K,s,0)
を計算する。ただし、M+1-m=2である。
 S805a1において、m=1を読み出し、t1=tとして、(1,t1)を生成する。
 S805b2において、(3,1,I)を読み出す。
 S806bにおいて、L=3及びN=3を読み出し、
 C_11=E(t1,1,1,3),
 C_12=E(t1,1,2,3),
 C_13=E(t1,1,3,3),
 C_21=E(t1,2,1,3),
 C_22=E(t1,2,2,3),
 C_23=E(t1,2,3,3),
 C_31=E(t1,3,1,3),
 C_32=E(t1,3,2,3),
 C_33=E(t1,3,3,3)
を計算する。
 S807bにおいて、C_11,・・・,C_33がIに含まれているかを確認する。
 実際、
 C_21
 =E(t1,2,1,3)
 =C81,C_22
 =E(t1,2,2,3)
 =C82
であることがわかり、
 (C81,1)及び(C82,2)から検索結果R={(1,2),(2,2)}が生成される。
 S810において、Rに基づき、
 「保管データ名が“1”のデータの“2番目”の位置から検索データBCが現れる」、
 「保管データ名が“2”のデータの“2番目”の位置から検索データBCが現れる」
といった検索結果を出力する。
 なお、S806bにおいて、生成したC_11を直ちにS807bの照合処理を行うことによって、C_11はIに含まれないので、C_12及びC_13の生成を省略することができる。同様に、C_31もIに含まれないので、C_32及びC_33の生成を省略することができる。このようにして、検索効率を上げることが可能である。
 以上が具体例の説明である。
 本実施の形態におけるハードウェア資源の一例は、実施の形態1と同様であるため省略する。
<***実施の形態3の効果***>
 本実施の形態は、例えば、以下のような効果を奏する。
 本実施の形態では、保管データを1つずつ保管することはせずに、複数の保管データをまとめて保管することによって、実施の形態2と同じMを選択しても、同じ鍵Kで暗号化や保管できる保管データの最大数を大きくすることや、かつ検索効率を向上できる。
 以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
 100 秘匿検索システム、101 インターネット、200,200a,200b 鍵生成装置、201 鍵生成部、202,202a,202b パラメーター生成部、203,203a,203b 送信部、300,300a,300b 登録装置、301,301a,301b 受信部、302 鍵保管部、303,303a,303b パラメーター保管部、304,304b 入力部、305 データ分割部、306 部分文字列生成部、307 位置情報割当部、308 暗号化部、308a,308b 多重暗号化部、309,309a,309b 送信部、310b 集約部、400,400a,400b 検索装置、401,401a 受信部、402 鍵保管部、403,403b 入力部、404 暗号化部、404a,404b 多重暗号化部、405,405b 送信部、406 出力部、407a パラメーター保管部、500,500a,500b 管理装置、501,501a,501b 受信部、502,502a,502b パラメーター保管部、503,503b データ保管部、504,504a,504b 照合部、505 送信部、506a 多重暗号化部、1001 CPU、1002 バス、1003 ROM、1004 RAM、1005 通信ボード、1011 ディスプレイ、1012 キーボード、1013 マウス、1014 ドライブ、1020 磁気ディスク装置、1021 OS、1022 プログラム群、1023 ファイル群。

Claims (9)

  1.  文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割するデータ分割部と、
     前記N個の要素データw,w,...,wから、
     集合A={A,A,...,A},
     集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
    を生成する部分文字列生成部と、
     前記要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
     集合B={B,B,...,B}、
     集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}
    を生成する位置情報割当部と、
     前記要素Bに含まれる成分である(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化する暗号化部と
    を備えた暗号化装置。
  2.  前記暗号化部は、
     前記要素Bに含まれる各成分を暗号化する場合に、前記要素Bに含まれる各成分を、前記文字列データDを識別する識別子と共に暗号化する請求項1に記載の暗号化装置。
  3.  前記暗号化部は、
     前記要素Bに含まれる各成分を暗号化する場合に、前記要素Bの成分に含まれる前記要素Aの成分を暗号化し、暗号化された前記要素Aの成分を、暗号化された前記要素Aの成分と対をなす位置情報と共に暗号化する請求項1または請求項2に記載の暗号化装置。
  4.  前記暗号化部は、
     前記要素Bの成分に含まれる前記要素Aの成分を暗号化する場合に、暗号化を複数回繰り返す多重暗号化を行う請求項3に記載の暗号化装置。
  5.  前記暗号化装置は、さらに、
     前記文字列データDの分割数を指定するパラメーターを保管するパラメーター保管部を備え、
     前記データ分割部は、
     前記文字列データDを,前記パラメーターが指定する分割数以下のN個に分割する請求項1から請求項4のいずれか一項に記載の暗号化装置。
  6.  データ分割部が、
     文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割し、
     部分文字列生成部が、
     前記N個の要素データw,w,...,wから、
     集合A={A,A,...,A},
     集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
    を生成し、
     位置情報割当部が、
     前記要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
     集合B={B,B,...,B}、
     集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}
    を生成し、
     暗号化部が、
     前記要素Bに含まれる成分である(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化する
    暗号化方法。
  7.  コンピュータに、
     文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割する処理、
     前記N個の要素データw,w,...,wから、
     集合A={A,A,...,A},
     集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
    を生成する処理、
     前記要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
     集合B={B,B,...,B}、
     集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}
    を生成する処理、
     前記要素Bに含まれる成分である(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化する処理、
    を実行させるための暗号化プログラム。
  8.  文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割するデータ分割部と、
     前記N個の要素データw,w,...,wの各要素データを暗号化し、暗号化された各要素データを、前記文字列データDを識別する識別子と共に暗号化する暗号化部と
    を備えた暗号化装置。
  9.  前記暗号化装置は、さらに、
     前記N個の要素データw1,,...,wから、
     集合A={A,A,...,A},
     集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
    を生成する部分文字列生成部を備え、
     前記暗号化部は、
     集合Aの要素Aの成分である(w),(wi+1),...,(wi+1...w)の各成分を暗号化し、暗号化された各成分を前記識別子と共に暗号化する請求項8に記載の暗号化装置。
PCT/JP2016/051158 2016-01-15 2016-01-15 暗号化装置、暗号化方法及び暗号化プログラム WO2017122352A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201680076736.4A CN108475480B (zh) 2016-01-15 2016-01-15 加密装置、加密方法和保管装置
EP16884955.2A EP3392865B1 (en) 2016-01-15 2016-01-15 Encryption device, encryption method, and encryption program
US16/061,264 US11005645B2 (en) 2016-01-15 2016-01-15 Encryption device, encryption method, computer readable medium, and storage device
JP2016554744A JP6038427B1 (ja) 2016-01-15 2016-01-15 暗号化装置、暗号化方法、暗号化プログラム及び保管装置
PCT/JP2016/051158 WO2017122352A1 (ja) 2016-01-15 2016-01-15 暗号化装置、暗号化方法及び暗号化プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/051158 WO2017122352A1 (ja) 2016-01-15 2016-01-15 暗号化装置、暗号化方法及び暗号化プログラム

Publications (1)

Publication Number Publication Date
WO2017122352A1 true WO2017122352A1 (ja) 2017-07-20

Family

ID=57483104

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/051158 WO2017122352A1 (ja) 2016-01-15 2016-01-15 暗号化装置、暗号化方法及び暗号化プログラム

Country Status (5)

Country Link
US (1) US11005645B2 (ja)
EP (1) EP3392865B1 (ja)
JP (1) JP6038427B1 (ja)
CN (1) CN108475480B (ja)
WO (1) WO2017122352A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019142651A1 (ja) * 2018-01-17 2019-07-25 三菱電機株式会社 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム
US11790105B2 (en) 2018-12-28 2023-10-17 Mitsubishi Electric Corporation Secret search system and secret search method

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017122352A1 (ja) 2016-01-15 2017-07-20 三菱電機株式会社 暗号化装置、暗号化方法及び暗号化プログラム
US11765137B2 (en) 2016-12-20 2023-09-19 Nippon Telegraph And Telephone Corporation Message transmission system, communication terminal, server apparatus, message transmission method, and program
CN110546631A (zh) 2017-04-25 2019-12-06 三菱电机株式会社 检索装置、检索系统、检索方法和检索程序
US10742401B2 (en) * 2017-12-19 2020-08-11 International Business Machines Corporation Half-pyramid data encryption

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002278970A (ja) * 2001-03-16 2002-09-27 Ricoh Co Ltd 文書管理システム
JP2005101883A (ja) * 2003-09-25 2005-04-14 Hitachi Ltd 電子メール文書原本性保証装置
JP2006072585A (ja) * 2004-08-31 2006-03-16 Planet:Kk 移動体通信端末を用いた認証方法
JP2006113704A (ja) * 2004-10-13 2006-04-27 Toshiba Corp 医用システムのパスワード管理方法及び医用装置用パスワード管理システム
WO2012004880A1 (ja) * 2010-07-08 2012-01-12 三菱電機株式会社 キーワード変換装置、キーワード変換プログラム、記録媒体及びキーワード変換方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2519129B2 (ja) 1991-01-10 1996-07-31 株式会社テレマティーク国際研究所 マルチキ―ワ―ド情報検索処理方式および検索ファイル作成装置
JP2519130B2 (ja) 1991-01-10 1996-07-31 株式会社テレマティーク国際研究所 マルチキ―ワ―ド情報検索処理方式および検索ファイル作成装置
JP3143079B2 (ja) 1997-05-30 2001-03-07 松下電器産業株式会社 辞書索引作成装置と文書検索装置
JP2002108910A (ja) * 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
JP4011383B2 (ja) * 2002-04-04 2007-11-21 Kddi株式会社 データ検索方法、データ検索システム、検索キーワード生成装置、及びコンピュータプログラム
JP4395611B2 (ja) 2003-10-28 2010-01-13 独立行政法人情報通信研究機構 暗号化データベース検索装置および方法ならびに暗号化データベース検索プログラム
JP2009048621A (ja) * 2007-07-26 2009-03-05 Ricoh Co Ltd データ提供装置、データ提供方法、及びプログラム
TW201027375A (en) 2008-10-20 2010-07-16 Ibm Search system, search method and program
JP5140026B2 (ja) 2009-03-19 2013-02-06 株式会社日立製作所 データベース処理方法、データベース処理プログラム、および、暗号化装置
US8533489B2 (en) 2010-09-29 2013-09-10 Microsoft Corporation Searchable symmetric encryption with dynamic updating
JP5412414B2 (ja) 2010-12-08 2014-02-12 株式会社日立製作所 検索可能暗号処理システム
US8429421B2 (en) 2010-12-17 2013-04-23 Microsoft Corporation Server-side encrypted pattern matching
JP5420085B2 (ja) 2011-01-13 2014-02-19 三菱電機株式会社 データ処理装置及びデータ保管装置
JP2012164031A (ja) 2011-02-03 2012-08-30 Mitsubishi Electric Corp データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
CN103384980B (zh) 2011-02-22 2016-01-13 三菱电机株式会社 检索系统、检索系统的检索方法、信息处理装置、以及对应关键字管理装置
JP5307199B2 (ja) * 2011-07-15 2013-10-02 株式会社エアー データ管理システム及びデータ管理方法
WO2013080365A1 (ja) 2011-12-01 2013-06-06 株式会社日立製作所 秘匿検索方法および秘匿検索装置
JP5800720B2 (ja) 2012-01-24 2015-10-28 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム
JP5255154B1 (ja) 2012-12-26 2013-08-07 株式会社エアー 部分一致検索の可能な暗号システム
US10235539B2 (en) * 2013-02-25 2019-03-19 Mitsubishi Electric Corporation Server device, recording medium, and concealed search system
JP6054790B2 (ja) * 2013-03-28 2016-12-27 三菱スペース・ソフトウエア株式会社 遺伝子情報記憶装置、遺伝子情報検索装置、遺伝子情報記憶プログラム、遺伝子情報検索プログラム、遺伝子情報記憶方法、遺伝子情報検索方法及び遺伝子情報検索システム
JP6144992B2 (ja) 2013-08-08 2017-06-07 株式会社日立製作所 検索可能暗号処理システム及び方法
KR101522870B1 (ko) * 2013-10-01 2015-05-26 주식회사 파수닷컴 데이터 컬럼 암호화 장치 및 방법
JP6208586B2 (ja) 2014-01-16 2017-10-04 株式会社日立製作所 検索可能暗号処理システムおよび検索可能暗号処理方法
US10445509B2 (en) * 2014-06-30 2019-10-15 Nicira, Inc. Encryption architecture
JP6234605B2 (ja) 2014-10-21 2017-11-22 三菱電機株式会社 サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
JP6381128B2 (ja) 2015-02-05 2018-08-29 国立研究開発法人産業技術総合研究所 検索システム、クライアント、サーバ、検索プログラムおよび検索方法
US9894042B2 (en) 2015-07-24 2018-02-13 Skyhigh Networks, Inc. Searchable encryption enabling encrypted search based on document type
WO2017122352A1 (ja) 2016-01-15 2017-07-20 三菱電機株式会社 暗号化装置、暗号化方法及び暗号化プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002278970A (ja) * 2001-03-16 2002-09-27 Ricoh Co Ltd 文書管理システム
JP2005101883A (ja) * 2003-09-25 2005-04-14 Hitachi Ltd 電子メール文書原本性保証装置
JP2006072585A (ja) * 2004-08-31 2006-03-16 Planet:Kk 移動体通信端末を用いた認証方法
JP2006113704A (ja) * 2004-10-13 2006-04-27 Toshiba Corp 医用システムのパスワード管理方法及び医用装置用パスワード管理システム
WO2012004880A1 (ja) * 2010-07-08 2012-01-12 三菱電機株式会社 キーワード変換装置、キーワード変換プログラム、記録媒体及びキーワード変換方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019142651A1 (ja) * 2018-01-17 2019-07-25 三菱電機株式会社 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム
CN111587452A (zh) * 2018-01-17 2020-08-25 三菱电机株式会社 登记装置、检索操作装置、数据管理装置、登记程序、检索操作程序和数据管理程序
US11233629B2 (en) 2018-01-17 2022-01-25 Mitsubishi Electric Corporation Registration apparatus, search operation apparatus, data management apparatus
CN111587452B (zh) * 2018-01-17 2023-03-31 三菱电机株式会社 登记装置、检索操作装置、数据管理装置和计算机能读取的存储介质
US11790105B2 (en) 2018-12-28 2023-10-17 Mitsubishi Electric Corporation Secret search system and secret search method

Also Published As

Publication number Publication date
JP6038427B1 (ja) 2016-12-07
US20190036679A1 (en) 2019-01-31
EP3392865A4 (en) 2019-03-13
CN108475480B (zh) 2021-03-23
JPWO2017122352A1 (ja) 2018-01-18
EP3392865A1 (en) 2018-10-24
CN108475480A (zh) 2018-08-31
EP3392865B1 (en) 2021-06-02
US11005645B2 (en) 2021-05-11

Similar Documents

Publication Publication Date Title
JP6038427B1 (ja) 暗号化装置、暗号化方法、暗号化プログラム及び保管装置
Jiang et al. Privacy-preserving and efficient multi-keyword search over encrypted data on blockchain
Yang et al. Lightweight and privacy-preserving delegatable proofs of storage with data dynamics in cloud storage
Baldimtsi et al. Sorting and searching behind the curtain
Tahir et al. A new secure and lightweight searchable encryption scheme over encrypted cloud data
JP5420085B2 (ja) データ処理装置及びデータ保管装置
JP6234605B2 (ja) サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
JP6239213B1 (ja) 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
JP2012164031A (ja) データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
JP6289768B2 (ja) 暗号化装置、暗号化プログラム及び暗号化方法
Poh et al. Searchable symmetric encryption over multiple servers
CN112074889A (zh) 隐匿检索装置和隐匿检索方法
Faridi et al. Blockchain in the quantum world
Park et al. PKIS: practical keyword index search on cloud datacenter
Biryukov et al. Cryptanalysis of a dynamic universal accumulator over bilinear groups
Yamamoto et al. Space-efficient and secure substring searchable symmetric encryption using an improved DAWG
Zhang et al. Privacy-preserving multi-pattern matching
Miyoshi et al. Practical and secure searchable symmetric encryption with a small index
Fink et al. Streaming, plaintext private information retrieval using regular expressions on arbitrary length search strings
Kamble et al. A study on fuzzy keywords search techniques and incorporating certificateless cryptography
Nepolean et al. Privacy preserving ranked keyword search over encrypted cloud data
Pillai et al. Blockchain-Based Searchable Asymmetric Encryption Scheme in Cloud Environment
Li et al. Verifiable range query processing for cloud computing
CN115048432B (zh) 基于布隆过滤器的模糊关键词公共审计方法
Etemad et al. A generic dynamic provable data possession framework

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2016554744

Country of ref document: JP

Kind code of ref document: A

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

Ref document number: 16884955

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2016884955

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2016884955

Country of ref document: EP

Effective date: 20180719