Patent Description:
A personal data utilization scheme in which the public and private sectors cooperate has been progressing in such a manner that, in December <NUM>, the Basic Act on the Advancement of Public and Private Sector Data Utilization, which promotes the proper use of public and private sector data for individuals by various entities, was promulgated and enforced, and in December <NUM>, acceptance of applications for certification of an information bank was started. Furthermore, the Ministry of Internal Affairs and Communications has announced that the first certification of an information bank will be issued in March <NUM>.

Under such circumstances, creation of new value that associates various pieces of information has been promoted in such a manner as a public service in which public and private sectors such as an emergency service and a security company share information with each other, and association of private services such as a pharmaceutical, insurance, transportation, and an information bank that produce a synergistic effect with public services. In order to analyze various pieces of data and create new value, statistical analysis such as regression analysis and analysis processing such as machine learning are considered effective. Furthermore, realization of these services requires a confidential information processing technique that allows a provider of a public service and a private service to analyze and utilize confidential information such as personal information owned by data holders such as a hospital and an information bank while the privacy of individuals is protected.

In a conventional confidential information processing technique, concealing of confidential information such as personal information has been realized by allowing certain processing while data is encrypted. However, in the conventional confidential information processing technique, the executable processing is limited to basic operations such as search and order comparison, and the degree of freedom in processing is limited. Further, cryptographic techniques such as homomorphic encryption, which has no limitation in the degree of freedom in processing, cannot be realized at a practical processing speed. For this reason, a high level of statistical processing that requires a high degree of freedom in processing and confidential information processing compatible with machine learning have been issues.

Here, for example, <CIT> can be cited as a system for processing that cannot be executed while information is encrypted. <CIT> discloses a system that enables a cloud service to delegate processing of encrypted confidential data to a trusted user device.

<CIT> discloses a confidential information processing system according to the preamble of claim <NUM> and a confidential information processing method according to the preamble of claim <NUM>. <CIT> discloses a system and a method for secure data processing using trusted hardware.

However, in the system disclosed in <CIT> described above, a cloud service transmits encrypted confidential data to a user device for processing. Accordingly, there has been a problem that the processing time becomes long due to the overhead of data transmission. Further, in processing of analyzing various pieces of data in combination, there has been a problem that transmitting various pieces of data including data of other users to a specific user device for analysis is not appropriate from the viewpoint of processing power, concealment of confidential information, and privacy protection.

In recent years, a trusted execution environment (TEE) function is becoming standardly installed in a main central processing unit (CPU), and this TEE function is considered to be effective for processing confidential information. The TEE function is a function that provides, in a server on a cloud, a hardware trusted part in which information cannot be read even if the administrator authority of the server is taken over, and decrypts encrypted data only within the trusted part for processing. In this manner, advanced processing can be performed safely. However, when the TEE function is implemented, an amount of data that can be handled in the trusted part is limited to be smaller than an amount of memory in a server. Accordingly, there has been a problem that decrypting and processing all various pieces of data are difficult.

The present invention has been made in consideration of the above points, and an object of the present invention is to propose a confidential information processing system and a confidential information processing method capable of executing processing of analyzing by various pieces of data by statistical processing and machine learning by keeping confidential information such as personal information concealed while suppressing an increase in response time of a processing result for a user.

In order to achieve the above object, the present invention provides a confidential information processing system described below and including a confidential information processing server, the confidential information processing system performing data processing on encrypted data of data including confidential information. In this confidential information processing system, the confidential information processing server includes a processing request execution unit that receives a processing request for the encrypted data, a confidential extraction processing unit that instructs execution of confidential extraction for extracting data that matches with a predetermined condition while the encrypted data is kept encrypted, a trusted part processing unit that decrypts and processes, using a safe trusted part in a trusted execution environment, the encrypted data using an encryption key that can be used only in the safe trusted part, and an encrypted data holding unit that stores the encrypted data encrypted with a confidentially extractable cipher with which the confidential extraction can be executed. When the processing request execution unit receives the processing request including an extraction request and a data processing request, the trusted part processing unit generates a confidential extraction query for performing extraction of data that matches with a condition of a processing target in the processing request by the confidential extraction based on the extraction request and the encryption key, the confidential extraction processing unit extracts encrypted data of the processing target while the data is kept encrypted from the encrypted data holding unit by instructing execution of the generated confidential extraction query, the processing request execution unit divides encrypted data of the processing target extracted by the confidential extraction processing unit into divided data that does not exceed a data amount that can be handled in the trusted part, and transmits the divided data to the trusted part processing unit, the trusted part processing unit decrypts encrypted data of the processing target extracted by the confidential extraction processing unit with the encryption key, and executes data processing requested by the data processing request, and the processing request execution unit returns an execution result of the data processing to a transmission source of the processing request.

Further, in order to achieve the above object, the present invention provides a confidential information processing method described below that performs data processing on encrypted data of data including confidential information provided to a confidential information processing server from a data holder terminal which owns the data. Here, the confidential information processing server has a processing request execution unit that receives a processing request for the encrypted data, a confidential extraction processing unit that instructs execution of confidential extraction for extracting data that matches with a predetermined condition while the encrypted data is kept encrypted, a trusted part processing unit that decrypts and processes, using a safe trusted part in a trusted execution environment, the encrypted data using an encryption key that can be used only in the safe trusted part, and an encrypted data holding unit that stores the encrypted data encrypted with a confidentially extractable cipher with which the confidential extraction can be executed. Then, this confidential information processing method includes a processing request receiving step in which the processing request execution unit receives the processing request including an extraction request and a data processing request, a confidential extraction query generating step in which the trusted part processing unit generates a confidential extraction query for performing extraction of data that matches with a condition of a processing target in the processing request by the confidential extraction based on the extraction request and the encryption key received in the processing request receiving step, a confidential data extracting step in which the confidential extraction processing unit extracts encrypted data of the processing target while the data is kept encrypted from the encrypted data holding unit by instructing execution of the confidential extraction query generated in the confidential extraction query generating step, a step in which the processing request execution unit divides encrypted data of the processing target extracted by the confidential extraction processing unit into divided data that does not exceed a data amount that can be handled in the trusted part, and transmits the divided data to the trusted part processing unit, a trusted part internal data processing step in which the trusted part processing unit decrypts encrypted data of the processing target extracted in the confidential data extracting step with the encryption key, and executes data processing requested by the data processing request, and a processing request responding step in which the processing request execution unit returns an execution result of the trusted part internal data processing step to a transmission source of the processing request.

According to the present invention, processing of analyzing various pieces of data by statistical analysis or machine learning while confidential information such as personal information is kept confidential, and further response time of a processing result to the user can be shortened.

The details of one or more implementations of the subject matter described in the specification are set forth in the accompanying drawings and the description below.

<FIG> is a block diagram showing a system configuration example of a confidential information processing system according to an embodiment of the present invention.

A confidential information processing system <NUM> according to the present embodiment is a system to which encrypted data is deposited from a data holder that holds confidential information such as personal information. The system processes the data in response to a processing request from a processing result user while keeping the data confidential, and provides a processing result to the processing result user.

As shown in <FIG>, the confidential information processing system <NUM> includes a data holder terminal <NUM> that is used by a data holder to encrypt and deposit data, a processing result user terminal <NUM> with which a processing result user generates and transmits a processing request and refers to a processing result, a confidential information processing server <NUM> that executes processing of a processing request received from a processing result user for data deposited from a data holder while keeping the data confidential and transmits a processing result, and a network <NUM> that connects them. Note that, as shown in <FIG>, in the confidential information processing system <NUM> according to this embodiment, a plurality of the data holder terminals <NUM> and a plurality of the processing result user terminals <NUM> can be connected.

<FIG> is a block diagram showing a hardware configuration example of the confidential information processing system shown in <FIG>.

The data holder terminal <NUM> is an information processing device such as a personal computer, a smartphone, and a server device, or a virtual machine, and includes, for example, as shown in <FIG>, a CPU <NUM>, a memory <NUM>, a disk <NUM>, a network interface <NUM>, a display device <NUM>, and an input device <NUM>, which are connected to each other by an internal communication line <NUM>.

The processing result user terminal <NUM> is, like the data holder terminal <NUM>, an information processing device such as a personal computer, a smartphone, and a server device, or a virtual machine, and includes, for example, as shown in <FIG>, a CPU <NUM>, a memory <NUM>, a disk <NUM>, a network interface <NUM>, a display device <NUM>, and an input device <NUM>, which are connected to each other by an internal communication line <NUM>.

The confidential information processing server <NUM> is an information processing device such as a personal computer, a smartphone, and a server device, or a virtual machine, and includes, for example, as shown in <FIG>, a CPU <NUM>, a memory <NUM>, a disk <NUM>, a network interface <NUM>, a display device <NUM>, and an input device <NUM>, which are connected to each other by an internal communication line <NUM>. Note that, in the confidential information processing server <NUM>, the CPU <NUM> is a TEE-compatible CPU having a TEE function, and the memory <NUM> has a TEE trusted part <NUM> that is a hardware trusted part secured on the memory by the TEE-compatible CPU.

The network <NUM> corresponds to all communication networks such as the Internet by wire communication or wireless communication, an in-house network, or a satellite line.

<FIG> is a block diagram showing a functional configuration of the data holder terminal shown in <FIG>.

As shown in <FIG>, the data holder terminal <NUM> includes a data key registration unit <NUM> that encrypts and registers a data key <NUM> in the confidential information processing server <NUM>, a data registration unit <NUM> that encrypts and registers confidential information such as personal information in the confidential information processing server <NUM>, a registration data status browsing unit <NUM> that provides a function for browsing the utilization status of data <NUM> registered by the data holder, an encryption unit <NUM> that encrypts the data <NUM> by a basic encryption technique such as advanced encryption standard (AES), a searchable encryption unit <NUM> that performs "searchable encryption" that enables data (encrypted data <NUM>) to be searched while the data is encrypted, and an order comparable encryption unit <NUM> that performs "order comparable encryption" that enables order comparison of data (the encrypted data <NUM>) while the data is encrypted.

Each of these functional units <NUM> to <NUM> is realized by the CPU <NUM> reading and executing one or more predetermined programs stored in the memory <NUM>. The programs may be introduced into the memory <NUM> from a storage medium of an external device via a network and/or via a portable storage medium.

Further, the searchable encryption and the order comparable encryption described above are encryption in which processing (match comparison (search), order comparison, and the like) for extracting information that satisfies a predetermined condition can be executed while data is kept encrypted (confidential). Hereinafter, such encryption may be collectively referred to as "confidentially extractable encryption".

Further, as shown in <FIG>, the data holder terminal <NUM> includes the data <NUM>, which is confidential information such as personal information, the data key <NUM> used for encryption of the data <NUM>, a TEE public key <NUM> used when the data key <NUM> is encrypted to send the data key <NUM> to the TEE trusted part <NUM> of the confidential information processing server <NUM>, the encrypted data <NUM> obtained by encrypting the data <NUM> deposited in the confidential information processing server <NUM>, and an encrypted data key <NUM> which is obtained by encrypting the data key <NUM> deposited in the TEE trusted part <NUM> of the confidential information processing server <NUM>. These pieces of data are data necessary for processing (execution of a program) by each of the functional units <NUM> to <NUM> of the data holder terminal <NUM> described above and data generated by the processing, and are stored in the memory <NUM> or the disk <NUM>. Note that the confidential information processing system <NUM> may include a plurality of the data holder terminals <NUM> (see <FIG>). In a case of a plurality of the data holder terminals <NUM>, the data holder terminals <NUM> may use the same data key <NUM> or the data keys <NUM> different from each other.

<FIG> is a block diagram showing a functional configuration of the processing result user terminal shown in <FIG>.

As shown in <FIG>, the processing result user terminal <NUM> includes a processing key registration unit <NUM> that encrypts and registers a processing key <NUM> in the confidential information processing server <NUM>, a processing query generation unit <NUM> that generates a processing request transmitted to the confidential information processing server <NUM>, a processing query registration unit <NUM> that encrypts and registers a processing query in the confidential information processing server <NUM>, a processing result display unit <NUM> that displays, to a processing result user, a processing result received from the confidential information processing server <NUM> on a screen, an encryption unit <NUM> that encrypts a processing request or the like transmitted to the confidential information processing server <NUM>, and a decryption unit <NUM> that decrypts an encrypted processing result or the like received from the confidential information processing server <NUM>. Each of these functional units <NUM> to <NUM> is realized by the CPU <NUM> reading and executing a predetermined program stored in the memory <NUM>. A program for realizing each of the functional units <NUM> to <NUM> may be introduced into the memory <NUM> from a storage medium of an external device via a network and/or via a portable storage medium.

Further, as shown in <FIG>, the processing result user terminal <NUM> has the processing key <NUM> used for encrypting a processing request and decrypting an encrypted processing result, a TEE public key <NUM> used when the processing key <NUM> is encrypted to send the processing key <NUM> to the TEE trusted part <NUM> of the confidential information processing server <NUM>, a processing query <NUM> indicating processing target data and processing content requested by a processing result user, an encrypted processing key <NUM> that is a processing key obtained as the processing key <NUM> is encrypted using the TEE public key <NUM>, an encrypted processing query <NUM> that is a processing query obtained as the processing query <NUM> is encrypted using the processing key <NUM>, and a processing result <NUM> obtained as an encrypted processing result received from the confidential information processing server <NUM> is decrypted using the processing key <NUM>. These pieces of data are data necessary for processing (execution of a program) by each of the functional units <NUM> to <NUM> of the processing result user terminal <NUM> described above and data generated by the processing, and are stored in the memory <NUM> or the disk <NUM>. Note that the confidential information processing system <NUM> may include a plurality of the processing result user terminals <NUM> (see <FIG>). In a case of a plurality of the processing result user terminals <NUM>, the processing result user terminals <NUM> may use the same processing key <NUM> or the processing keys <NUM> different from each other.

<FIG> is a block diagram showing a functional configuration of the confidential information processing server shown in <FIG>.

As shown in <FIG>, the confidential information processing server <NUM> includes a key registration execution unit <NUM> that registers the encrypted data key <NUM> received from the data holder terminal <NUM> or the encrypted processing key <NUM> received from the processing result user terminal <NUM> in an encrypted key management table <NUM> through processing of a TEE trusted part processing unit <NUM>, a data registration execution unit <NUM> that registers the encrypted data <NUM> received from the data holder terminal <NUM> in an encryption DB unit <NUM> through processing of the TEE trusted part processing unit <NUM>, a processing query execution unit <NUM> that executes the encrypted processing query <NUM> received from the processing result user terminal <NUM> through processing of the TEE trusted part processing unit <NUM> and returns a result of the encryption processing, the TEE trusted part processing unit <NUM> that executes processing using a trusted part of a TEE function that is hardware-safe, a confidential extraction processing unit <NUM> that generates a confidential extraction query <NUM> upon receiving a confidential extraction request from the processing query execution unit <NUM> through processing of the TEE trusted part processing unit <NUM> and executes confidential extraction on the encryption DB unit <NUM>, a normal DB unit <NUM> that stores unencrypted normal data, and the encryption DB unit <NUM> that stores encrypted data. Each of these functional units <NUM> to <NUM> is realized by the CPU <NUM> reading and executing a predetermined program stored in the memory <NUM>. In particular, the processing by the TEE trusted part processing unit <NUM> is performed by the TEE-compatible CPU <NUM> on the TEE trusted part <NUM> of the memory <NUM>. A program for realizing each of the functional units <NUM> to <NUM> may be introduced into the memory <NUM> from a storage medium of an external device via a network and/or via a portable storage medium.

Further, as shown in <FIG>, the confidential information processing server <NUM> has an encrypted TEE secret key <NUM> encrypted by a TEE local key (TEE local key <NUM> shown in <FIG>) that can be used only in the TEE trusted part <NUM>, an encrypted data key <NUM>, an encrypted processing key <NUM>, an encrypted processing query <NUM> which is a processing query encrypted by a processing key, a confidential extraction query <NUM> that is an extraction query encrypted by using a TEE local key <NUM> described later, an encrypted key management table <NUM> that registers various encrypted keys, a processing log <NUM> in which a history of data processing in the confidential information processing server <NUM> is recorded, confidential extracted data <NUM> that is encrypted data extracted from the encryption DB unit <NUM> by the confidential extraction query <NUM>, and an encrypted processing result <NUM> that is a processing result encrypted by a processing key. These pieces of data are data necessary for processing (execution of a program) by each of the functional units <NUM> to <NUM> of the confidential information processing server <NUM> described above and data generated by the processing, and are stored in the memory <NUM> or the disk <NUM>.

Furthermore, detailed functional configurations of the TEE trusted part processing unit <NUM> and the encryption DB unit <NUM> will be described with reference to <FIG>.

<FIG> is a block diagram showing a detailed functional configuration of the TEE trusted part processing unit shown in <FIG>. The processing by the TEE trusted part processing unit <NUM> is provided by the TEE-compatible CPU <NUM> using the TEE trusted part <NUM> on the memory <NUM> from which information cannot be read by a server administrator who has the administrator authority of a server OS or a cyber attacker who takes over the administrator authority by a cyber attack. That is, in the processing by the TEE trusted part processing unit <NUM>, plaintext processing of confidential information and various pieces of key information can be executed while confidentiality against an administrator having the administrator authority of a server and a cyber attacker is ensured.

As shown in <FIG>, the TEE trusted part processing unit <NUM>, as a functional unit, includes a key changing unit <NUM> that changes a key encryption key of a data key or a processing key, and the like, a confidential extraction query generation unit <NUM> that generates a confidential extraction query that enables search and order comparison while data is kept encrypted, a data processing execution unit <NUM> that executes analysis processing such as regression analysis and machine learning, a processing result aggregation processing unit <NUM> that collects a plurality of processing results output by division processing executed in a case where a data amount of processing target data is larger than the TEE trusted part <NUM>, an encryption unit <NUM> that performs basic encryption such as AES, a searchable encryption unit <NUM> that performs searchable encryption that enables search while data is kept encrypted, an order comparable encryption unit <NUM> that performs order comparable encryption that enables order comparison while data is kept encrypted, and a decryption unit <NUM> that decrypts encrypted data, a processing query, various pieces of key information, and the like.

Further, as shown in <FIG>, the TEE trusted part processing unit <NUM> has a TEE secret key <NUM>, which is a pair key of the TEE public key <NUM> that can be used only inside the TEE trusted part <NUM>, a data key <NUM> obtained by decrypting, with the TEE secret key <NUM>, a data key encrypted with the TEE public key <NUM>, a processing key <NUM> obtained by decrypting, with the TEE secret key <NUM>, a processing key encrypted with the TEE public key <NUM>, a TEE local key <NUM> that is generated from unique information of the TEE-compatible CPU <NUM> and used only inside the TEE trusted part <NUM>, a key management table <NUM> obtained by decrypting the encrypted key management table <NUM> with the TEE local key <NUM>, a data extraction query <NUM> generated by the confidential extraction query generation unit <NUM>, extracted data <NUM> obtained by decrypting confidential extracted data input to the TEE trusted part processing unit <NUM>, and a processing result <NUM> that is a result of data processing executed by the data processing execution unit <NUM>.

<FIG> is a block diagram showing a detailed functional configuration of the encryption DB unit shown in <FIG> shows a detailed functional configuration of the encryption DB unit <NUM> in a case where the encryption DB unit <NUM> holds an encrypted patient data table <NUM> as an example of a database in which the encryption DB unit <NUM> registers encrypted data.

As shown in <FIG>, the encryption DB unit <NUM> includes a data registration unit <NUM> that registers data in the encrypted patient data table <NUM>, a data extraction unit <NUM> that extracts encrypted data corresponding to a confidential extraction query from the encrypted patient data table <NUM>, a data deletion unit <NUM> that deletes data corresponding to a specified condition from the encrypted patient data table <NUM>, a confidential extraction query determination unit <NUM> that performs matching determination or order-comparison determination of encrypted data and an encrypted processing query in execution of a confidential extraction query. Then, data registered from the data holder terminal <NUM> is encrypted and registered in the encrypted patient data table <NUM>.

Processing executed in the confidential information processing system <NUM> according to the present embodiment will be described.

As a process of the overall processing, first, the confidential information processing system <NUM> performs "data key registration processing" for registering a data key between the data holder terminal <NUM> and the confidential information processing server <NUM>, and "processing key registration processing" for registering a processing key between the processing result user terminal <NUM> and the confidential information processing server <NUM> as preliminary preparation for performing "data registration processing" for encrypting confidential information such as personal information deposited from a data holder and registering the information in the confidential information processing server <NUM>. Details of the data key registration processing are shown in <FIG>, and details of the processing key registration processing are shown in <FIG>.

Next, the confidential information processing system <NUM> performs "data registration processing" between the data holder terminal <NUM> and the confidential information processing server <NUM>. In the data registration processing, confidential information (data) such as personal information deposited from a data holder is encrypted using a data key in the data holder terminal <NUM>, and further applied with confidentially extractable encryption in the confidential information processing server <NUM> so as to be registered. Details of the data registration processing are shown in <FIG>.

Then, after the data registration processing is performed, the confidential information processing system <NUM> can perform "confidential data processing", in which processing requested by a processing result user is executed in a confidential manner and a result of the processing is displayed on the processing result user terminal <NUM>, for confidentially-extractable encrypted confidential information (confidential data) registered in the confidential information processing server <NUM>. Details of the confidential data processing are shown in <FIG>.

Hereinafter, the processing described above will be described in detail with reference to the drawings.

<FIG> is a sequence diagram showing a processing process of the data key registration processing. The data key registration processing is executed by the data holder terminal <NUM> and the confidential information processing server <NUM>.

According to <FIG>, first, the data key registration unit <NUM> of the data holder terminal <NUM> executes data key encryption processing for inputting the data key <NUM> together with the TEE public key <NUM> to the encryption unit <NUM> and obtaining the encrypted data key <NUM> as an output (Step S101).

Next, the data key registration unit <NUM> of the data holder terminal <NUM> transmits data key registration information including information of the encrypted data key <NUM>, an owner "data holder terminal <NUM>" and a key type "data key" to the confidential information processing server <NUM> (Step S102). The processing of Step S102 corresponds to a registration request for a data key from the data holder terminal <NUM> to the confidential information processing server <NUM>.

Next, upon receiving the data key registration information transmitted in Step S102, the key registration execution unit <NUM> of the confidential information processing server <NUM> transmits a key encryption key change request including the encrypted data key <NUM> to the TEE trusted part processing unit <NUM> (Step S103).

Next, the TEE trusted part processing unit <NUM> executes key encryption key change processing described later in <FIG> in response to the key encryption key change request of Step S103, generates an encrypted data key obtained by changing a key encryption key to the TEE local key <NUM>, and transmits the key to the key registration execution unit <NUM> (Step S104).

Next, the key registration execution unit <NUM> adds a record including the owner "data holder terminal <NUM>", the key type "data key", and the encrypted data key (encrypted data key <NUM>) encrypted with the TEE local key <NUM> in Step S104 to the encrypted key management table <NUM>, and returns a completion response of key registration to the data holder terminal <NUM> (Step S105). Note that in a case where the key encryption key change processing of Step S104 is unnecessary, such as when the number of the data holder terminal <NUM> is one, the key registration execution unit <NUM> may directly register the encrypted data key <NUM> included in the data key registration information received from the data holder terminal <NUM> in the encrypted key management table <NUM>.

Here, <FIG> shows an example of the encrypted key management table registered by the processing of encrypted key registration. The encrypted key management table <NUM> exemplified in <FIG> is composed of an "owner" column indicating an owner of a key, a "key type" column indicating a type of a key, and an "encrypted key" column storing an encrypted key. Specifically, for example, a record <NUM> in a first row indicates that an encrypted key obtained by encrypting a data key owned by the data holder terminal <NUM> is "tojqj5dscs77gkl5". On the other hand, a record <NUM> in a second row indicates that an encrypted key obtained by encrypting a processing key owned by the processing result user terminal <NUM> is "f6hpjsgwmivexmhz". Note that, also in processing of encrypted key registration in processing key registration processing described later (Step S205 in <FIG>), the encrypted key management table <NUM> is registered in a format similar to that in <FIG>.

After the processing of Step S105, upon receiving a completion response of key registration from the confidential information processing server <NUM> (the key registration execution unit <NUM>), the data holder terminal <NUM> finishes the data key registration processing.

<FIG> is a flowchart showing a processing process of key encryption key change processing. As described in Step S104 in <FIG>, the key encryption key change processing is processing executed by the TEE trusted part processing unit <NUM> in response to a key encryption key change request from the key registration execution unit <NUM> (Step S103 in <FIG>).

According to <FIG>, first, upon receiving a key encryption key change request from the key registration execution unit <NUM>, the TEE trusted part processing unit <NUM> reads the TEE secret key <NUM> (Step S111).

Next, the TEE trusted part processing unit <NUM> inputs an encrypted key (the encrypted data key <NUM>) included in the key encryption key change request to the decryption unit <NUM> together with the TEE secret key <NUM> read in Step S111 for decryption (Step S112). Here, the encrypted data key <NUM> included in the key encryption key change request is a key encrypted with the TEE public key <NUM> (see Step S101 in <FIG>), and the processing of Step S112 decrypts such an input key using the TEE secret key <NUM>.

Next, the TEE trusted part processing unit <NUM> reads the TEE local key <NUM> (Step S113).

Next, the TEE trusted part processing unit <NUM> encrypts the input key with the TEE local key <NUM> by inputting the input key decrypted in Step S112 and the TEE local key <NUM> read in Step S113 into the encryption unit <NUM> (Step S114).

Further, the TEE trusted part processing unit <NUM> registers the input key decrypted in Step S112 in the key management table <NUM> (Step S115).

Here, <FIG> shows an example of the key management table. The key management table <NUM> exemplified in <FIG> is composed of an "owner" column indicating an owner of a key, a "key type" column indicating a type of a key, and a "key" column storing a key. Specifically, for example, a record <NUM> in a first row indicates that a data key owned by the data holder terminal <NUM> is "vf0l04ugdqjsql1j". On the other hand, a record <NUM> in a second row indicates that a processing key owned by the processing result user terminal <NUM> is "mgyk3lvqbpdco4uo". The "key" stored in the key management table <NUM> can be considered to be a key obtained by decrypting the encrypted key (see <FIG>) stored in the encrypted key management table <NUM> with the TEE local key <NUM>. Note that, as described above, since the key management table <NUM> is held inside the TEE trusted part <NUM>, the security of the key is guaranteed.

Finally, the TEE trusted part processing unit <NUM> transmits this encrypted input key (the encrypted data key <NUM>) to the key registration execution unit <NUM> as an output for a key encryption key change request, and the key encryption key change processing is finished.

<FIG> is a sequence diagram showing a processing process of the processing key registration processing. The processing key registration processing is executed by the processing result user terminal <NUM> and the confidential information processing server <NUM>.

According to <FIG>, first, the processing key registration unit <NUM> of the processing result user terminal <NUM> executes processing key encryption processing for inputting the processing key <NUM> together with the TEE public key <NUM> to the encryption unit <NUM> and obtaining the encrypted processing key <NUM> as an output (Step S201).

Next, the processing key registration unit <NUM> transmits processing key registration information including information of the encrypted processing key <NUM>, an owner "processing result user terminal <NUM>" and a key type "processing key" to the confidential information processing server <NUM> (Step S202). The processing of Step S202 corresponds to a registration request for a processing key from the processing result user terminal <NUM> to the confidential information processing server <NUM>.

Next, upon receiving the processing key registration information transmitted in Step S202, the key registration execution unit <NUM> of the confidential information processing server <NUM> transmits a key encryption key change request including the encrypted processing key <NUM> to the TEE trusted part processing unit <NUM> (Step S203).

Next, the TEE trusted part processing unit <NUM> executes the key encryption key change processing shown in <FIG> in response to the key encryption key change request of Step S203, generates an encrypted processing key obtained by changing a key encryption key to the TEE local key <NUM>, and transmits the key to the key registration execution unit <NUM> (Step S204).

Next, the key registration execution unit <NUM> adds a record including the owner "processing result user terminal <NUM>", the key type "processing key", and the encrypted data key (the encrypted processing key <NUM>) encrypted with the TEE local key <NUM> in Step S204 to the encrypted key management table <NUM>, and returns a completion response of key registration to the processing result user terminal <NUM> (Step S205). Note that in a case where the key encryption key change processing of Step S204 is unnecessary, such as when the number of the processing result user terminal <NUM> is one, the key registration execution unit <NUM> may directly register the encrypted processing key <NUM> included in the processing key registration information received from the processing result user terminal <NUM> in the encrypted key management table <NUM>.

Finally, upon receiving a completion response of key registration from the confidential information processing server <NUM> (the key registration execution unit <NUM>), the processing result user terminal <NUM> finishes the processing key registration processing.

<FIG> is a sequence diagram showing a processing process of the data registration processing. The data registration processing is executed by the data holder terminal <NUM> and the confidential information processing server <NUM>.

According to <FIG>, first, the data holder terminal <NUM> executes processing of encrypting, in advance, data to be registered in the confidential information processing server <NUM> (Step S301). Specifically, the data registration unit <NUM> of the data holder terminal <NUM> inputs the data <NUM> and the data key <NUM> to the encryption unit <NUM>, and obtains the encrypted data <NUM> as an output. Note that in a case where the data conversion processing of Step S304 described later is unnecessary, such as when the number of the data holder terminal <NUM> is one in the confidential information processing system <NUM>, the processing of Step S301 may be performed in such a manner that data of a nominal value such as gender in the data <NUM> is applied with searchable encryption using the searchable encryption unit <NUM>, and numerical data such as age and height is applied with order comparable encryption using the order comparable encryption unit <NUM>. Here, examples of the data <NUM> used in the data registration processing and the encrypted data <NUM> registered on the data holder terminal <NUM> side in the data registration processing are shown in <FIG>.

<FIG> is an example of data used in the data registration processing. In <FIG>, as an example of the data <NUM> used in the data registration processing, a patient data table <NUM> that summarizes patient data owned by a hospital is shown.

The patient data table <NUM> of <FIG> is configured to have columns for name, address, gender, age, height, and weight. Specifically, for example, a record <NUM> in a first row indicates that Ms. Hanako Suzuki's address is Tokyo, gender is female, age is <NUM>, height is <NUM>, and weight is <NUM>. Note that, as a matter of course, the data <NUM> that can be used in the confidential information processing system <NUM> according to the present embodiment is not limited to the patient data as described above, and all types of confidential information, such as personal information owned by a data holder such as a hospital or an information bank can be employed.

<FIG> is an example of encrypted data registered on the data holder terminal side in the data registration processing. In <FIG>, as an example of the encrypted data <NUM> registered on the data holder terminal <NUM> side, an encrypted patient data table <NUM> obtained by encrypting the patient data table <NUM> of <FIG> with the data key <NUM> is shown.

The encrypted patient data table <NUM> of <FIG> is configured to have columns for name, address, gender, age, height, and weight, like the patient data table <NUM> (see <FIG>) before encryption. However, in each record, values of all columns are encrypted with the data key <NUM>. For example, a record <NUM> in a first row is a record obtained by encrypting a value of each column of the record <NUM> in <FIG>.

Returning to the explanation of <FIG>. Following the processing of Step S301, the data registration unit <NUM> of the data holder terminal <NUM> transmits a data registration request including the encrypted data <NUM> and information of an owner "data holder terminal <NUM>" to the data registration execution unit <NUM> of the confidential information processing server <NUM> (Step S302).

Next, upon receiving the data registration request transmitted in Step S302, the data registration execution unit <NUM> of the confidential information processing server <NUM> divides data in a case where a data amount of the encrypted data <NUM> included in the request exceeds an upper limit of a data amount that can be processed by the TEE trusted part processing unit <NUM> at once (Step S303). For example, in a case where a data amount of the encrypted data <NUM> is <NUM> GB and an upper limit value of a data amount that the TEE trusted part processing unit <NUM> can process at once is <NUM> MB, the data registration execution unit <NUM> divides the encrypted data <NUM> into ten pieces of data each having <NUM> MB. Note that, in a case where a data amount of the encrypted data <NUM> included in the data registration request is within the upper limit of a data amount that the TEE trusted part processing unit <NUM> can process at once, the processing proceeds to a next process without performing the data division.

Next, the data registration execution unit <NUM> reads a corresponding encrypted data key from the encrypted key management table <NUM> by using the information of an owner "data holder terminal <NUM>" included in the data registration request and the information of a key type "data key" included in the data key registration information received in the data key registration processing as a key, and transmits the data key to the TEE trusted part processing unit <NUM> together with the encrypted data (a piece of divided data in a case where the data division is performed in Step S303) included in the data registration request. In response to this, the TEE trusted part processing unit <NUM> executes the data conversion processing for converting the received encrypted data into data prepared for "search comparison and order comparison in an encrypted state" to be performed later, and returns encrypted data after conversion (encrypted data that is confidentially extractable) as an execution result to the data registration execution unit <NUM> (Step S304).

Although details will be described later with reference to <FIG>, in the data conversion processing, the received encrypted data is decrypted in the TEE trusted part <NUM>, and the confidentially extractable encryption is performed using the TEE local key <NUM>. Note that, as described above, in a case where searchable encryption or order comparable encryption is performed in Step S301 in a case, for example, the number of the data holder terminal <NUM> is one in the confidential information processing system <NUM>, the processing of Step S304 can be skipped.

Next, the data registration execution unit <NUM> transmits a registration request for the encrypted data to the encryption DB unit <NUM> (Step S305).

Then, the encryption DB unit <NUM> that has received the registration request of Step S305 uses the data registration unit <NUM> to register the encrypted data in a database (in the present example, the encrypted patient data table <NUM>) as a registration target, and, after the registration is completed, transmits a completion response to the data registration execution unit <NUM> (Step S306).

Here, <FIG> shows an example of encrypted data (encrypted patient data table) registered on the confidential information processing server side in the data registration processing. In <FIG>, as an example of the encrypted data stored in the encryption DB unit <NUM> in Step S306, when the encrypted data requested to be registered by the data holder terminal <NUM> in Step S302 is the encrypted patient data table <NUM> of <FIG>, the encrypted patient data table <NUM> that is confidentially-extractable encrypted with the TEE local key <NUM> through the processing of Steps S303 to S306 in the confidential information processing server <NUM> is shown.

The encrypted patient data table <NUM> of <FIG> is configured to have columns for name, address, gender, age, height, and weight, like the encrypted patient data table <NUM> (see <FIG>) when data registration is requested and the patient data table <NUM> (see <FIG>) before encryption. However, in each record, all values of columns in the encrypted patient data table <NUM> are encrypted in a confidentially extractable manner with another key (the TEE local key <NUM>). For example, a record <NUM> in a first row corresponds to the record <NUM> in <FIG> (in other words, the record <NUM> in <FIG>), and a value of each column of the record <NUM> is obtained by encrypting a value of each column of the record <NUM> in a confidentially-extractable manner with the TEE local key <NUM>.

Returning to the explanation of <FIG>. Following the processing of Step S306, the data registration execution unit <NUM> checks the presence or absence of divided data (unregistered data) whose registration in the encryption DB unit <NUM> is not completed (Step S307). In a case where there is unregistered data in Step S307 (YES in Step S307), the processing in and after Step S304 is performed on the unregistered data, and in a case where there is no unregistered data (NO in Step S307), the data registration execution unit <NUM> returns a completion response of the data registration to the data holder terminal <NUM>.

Finally, upon receiving the completion response from the data registration execution unit <NUM> of the confidential information processing server <NUM>, the data holder terminal <NUM> finishes the data registration processing.

<FIG> is a flowchart showing a processing process of the data conversion processing. As described in Step S304 of <FIG>, the data conversion processing is processing is executed by the TEE trusted part processing unit <NUM> in response to input of an encrypted data key and encrypted data (one piece of divided data) from the data registration execution unit <NUM>.

According to <FIG>, first, the TEE trusted part processing unit <NUM> reads an encrypted data key input from the data registration execution unit <NUM> (Step S311), and further reads the TEE local key <NUM> (Step S312).

Next, the TEE trusted part processing unit <NUM> inputs the encrypted data key read in Step S311 to the decryption unit <NUM> together with the TEE local key <NUM> read in Step S312 for decryption (Step S313).

Next, the TEE trusted part processing unit <NUM> decrypts the encrypted data input from the data registration execution unit <NUM>, using the data key obtained by decryption in Step S313 (Step S314).

Next, the TEE trusted part processing unit <NUM> performs "confidentially extractable encryption" on the data decrypted in Step S314 by using the TEE local key <NUM> read in Step S312 (Step S315). As described above, the "confidentially extractable encryption" is encryption, in which processing (search or order comparison) for extracting information satisfying a predetermined condition can be executed while data is kept encrypted (kept confidential). To explain the confidentially extractable encryption in Step S315 more specifically, for example, searchable encryption is performed on data of a nominal value such as gender by using the searchable encryption unit <NUM>, and order comparable encryption is performed on numerical data such as age and height by using the order comparable encryption unit <NUM>. Note that the encryption unit <NUM> may be used to perform basic encryption such as AES for data that is not the subject of confidential extraction in search and order comparison, and the like.

When the encryption in Step S315 is completed, the TEE trusted part processing unit <NUM> transmits the encrypted data to a request source of the processing and ends the data conversion processing.

<FIG> is a sequence diagram showing a processing process of the confidential data processing. The confidential data processing is executed by the processing result user terminal <NUM> and the confidential information processing server <NUM>.

According to <FIG>, first, in the processing result user terminal <NUM>, the processing query generation unit <NUM> generates the processing query <NUM> including a condition of target data and processing content (Step S401).

Note that information on target data and a processing method necessary for generating the processing query <NUM> in Step S401 is input by a processing result user (user) through a processing query generation screen <NUM>. The processing query generation screen <NUM> is, for example, displayed on the display device <NUM> or the like (may be the display device <NUM> of the confidential information processing server <NUM> or the like) under the control of the processing query generation unit <NUM>, and the user performs input operation by using the input device <NUM> on the screen. Then, the processing query generation unit <NUM> generates the processing query <NUM> according to the input content of the user on the processing query generation screen <NUM>. Here, examples of the processing query generation screen <NUM> and the processing query <NUM> are shown in <FIG>.

<FIG> is an example of the processing query generation screen. The processing query generation screen <NUM> illustrated in <FIG> roughly includes target data input regions (regions <NUM> to <NUM>) for inputting target data and a narrowing condition for the target data, processing method input regions (regions <NUM> to <NUM>) for inputting a processing method for target data, and input determination regions (regions <NUM> to <NUM>) for inputting OK or cancel for the input content.

Specifically, the target data input region includes the region <NUM> for inputting a table name of target data, the region <NUM> for inputting a target column name of a narrowing condition <NUM> for target data, the region <NUM> for designating a keyword which is a narrowing condition for a column input in the region <NUM>, the region <NUM> for inputting a target column name of a narrowing condition <NUM> for target data, and the regions <NUM> and <NUM> for inputting an upper limit value and a lower limit value of a range which are narrowing conditions for a column input in the region <NUM>.

Further, the processing method input region includes the region <NUM> for inputting a type of a processing method, the region <NUM> for inputting a regression model that needs to be designated for the processing method (in the present example, "regression analysis") input in the region <NUM>, the region <NUM> for designating an explanatory variable X, and the region <NUM> for designating an objective variable Y.

Further, the input determination region includes the region <NUM> showing an "OK" button for determining input content and completing the processing, and the region <NUM> showing a "Cancel" button for canceling input content and completing the processing.

<FIG> is an example of the processing query. As illustrated in <FIG>, the processing query <NUM> includes a region <NUM> indicating processing target data and a region <NUM> indicating a processing method.

More specifically, the processing query <NUM> of <FIG> means a processing query for executing processing of extracting a record group, in which a value of the gender column is "male" and a value of the age column is "<NUM> to <NUM>" from the patient data table <NUM> (see <FIG>) stored in the data <NUM>, and executing regression analysis with the height column as the explanatory variable X and the age column as the objective variable Y in a regression model "Y = aX + b" for the extracted record group.

Returning to the explanation of <FIG>. Following the processing of Step S401, in the processing result user terminal <NUM>, the processing query registration unit <NUM> encrypts the processing query <NUM> generated in Step S301 (Step S402). Specifically, the processing query registration unit <NUM> inputs the processing key <NUM> and the processing query <NUM> to the encryption unit <NUM>, and obtains the encrypted processing query <NUM> as an output.

<FIG> is an example of the encrypted processing query. As illustrated in <FIG>, the encrypted processing query <NUM> obtained by encrypting the processing query <NUM> with the processing key <NUM> includes a region <NUM> indicating processing target data and a region <NUM> indicating a processing method. More specifically, the region <NUM> shows encrypted data corresponding to the region <NUM> of the processing query <NUM> shown in <FIG>, and the region <NUM> shows encrypted data corresponding to the region <NUM> of the processing query <NUM>.

Following the processing of Step S402, in the processing result user terminal <NUM>, the processing query registration unit <NUM> registers the encrypted processing query <NUM> and information of an owner "processing result user terminal <NUM>" in the processing query execution unit <NUM> of the confidential information processing server <NUM> (Step S403).

Next, in the confidential information processing server <NUM>, the processing query execution unit <NUM> transmits a confidential extraction request with the encrypted processing query <NUM> and owner information "processing result user terminal <NUM>" received in Step S403 as input to the confidential extraction processing unit <NUM> (Step S404).

Next, the confidential extraction processing unit <NUM> receiving the confidential extraction request extracts the encrypted processing key <NUM> from the encrypted key management table <NUM> using the owner information "processing result user terminal <NUM>" and information of a key type "processing key" as keys. Note that the information of a key type "processing key" can be acquired by referring to the encrypted key management table <NUM> using the owner information "processing result user terminal <NUM>" as a key, for example. Then, the confidential extraction processing unit <NUM> transmits a confidential extraction query generation request to the TEE trusted part processing unit <NUM> with the encrypted processing key <NUM> and the encrypted processing query <NUM> as input (Step S405).

Next, the TEE trusted part processing unit <NUM> executes confidential extraction query generation processing with the encrypted processing key <NUM> and the encrypted processing query <NUM> input by the confidential extraction query generation request as inputs, and returns the confidential extraction query <NUM> obtained as an output to the confidential extraction processing unit <NUM> (Step S406).

Although details will be described later with reference to <FIG>, in the confidential extraction query generation processing, in the TEE trusted part <NUM>, the data extraction query <NUM> (see <FIG>, which will be described later) of plaintext is generated based on a processing query obtained by decrypting the encrypted processing query <NUM>, and the confidential extraction query <NUM> obtained by encrypting part of the data extraction query <NUM> in a confidentially extractable encryption using the TEE local key <NUM> is generated.

<FIG> is an example of the confidential extraction query. The confidential extraction query <NUM> illustrated in <FIG> is configured as a SQL query for searching a database, and is configured in a manner that, in particular, a match determination conditional statement in a WHERE clause is replaced with a confidential match determination function, a large and small comparison conditional statement in a WHERE clause is replaced with a confidential order comparison function, a search keyword indicating a search condition is replaced with a searchable cipher query, and a boundary value indicating a boundary condition of large and small comparison is replaced with an order comparable cipher query. Note that the confidential match determination function and the confidential order comparison function described above can be referred to as a confidential extraction determination function since they are functions that perform condition determination of data while encrypted to extract the data.

The confidential extraction query <NUM> illustrated in <FIG> corresponds to the data extraction query <NUM> illustrated in <FIG> described later, and, by comparing the two, a location replaced with encryption that can be made confidential can be found. Specifically, in <FIG>, the confidential extraction query <NUM> replaces a match determination conditional statement of "gender = male" with a confidential match determination function and a value of "'sy78tk" which is obtained by converting "male" into a searchable cipher query, and furthermore, replaces large and small comparison conditional statements of "age ≥ <NUM>" and "age ≤ <NUM>" with a confidential number comparison function and values of "9vyvga" and "eb4814" obtained by converting "<NUM>" and "<NUM>" into an order comparable cipher query.

Next, upon receiving a response of the confidential extraction query generation processing from the TEE trusted part processing unit <NUM>, the confidential extraction processing unit <NUM> transmits the received confidential extraction query <NUM> to the encryption DB unit <NUM> and requests query execution (Step S407).

Next, the encryption DB unit <NUM> executes confidential extraction processing for extracting data while being encrypted based on the confidential extraction query <NUM> received in Step S407 (Step S408). In the confidential extraction processing, first, the confidential extraction query <NUM> is input to the data extraction unit <NUM>. Then, the data extraction unit <NUM> obtains a determination result by inputting a conditional statement to the confidential extraction query determination unit <NUM> for determination processing for a conditional statement that requires the confidential match determination or the confidential order determination in the data extraction processing of a database, and extracts data (the confidential extracted data <NUM>) that matches with the conditions. Then, the encryption DB unit <NUM> returns the extracted confidential extracted data <NUM> to the confidential extraction processing unit <NUM> as a result of the confidential extraction processing.

<FIG> is an example of the confidential extracted data. In a case of <FIG>, the confidential extracted data <NUM> is data extracted from the encrypted patient data table <NUM> based on the confidential extraction query <NUM>, and includes a gender column, an age column, and a height column. Each column value of the confidential extracted data <NUM> is encrypted. For example, when a focus is placed on a record <NUM> in a first row, a value of each column is shown to be kept encrypted in the record that is extracted while being encrypted by the confidential extraction.

Next, the confidential extraction processing unit <NUM> returns the confidential extracted data <NUM> received as a response in Step S408 to the processing query execution unit <NUM> as a response to the confidential extraction request of Step S404 (Step S409).

Next, the processing query execution unit <NUM> compares a data amount of the confidential extracted data <NUM> received as a response in Step S409 with an upper limit value of a data amount that can be handled by the TEE trusted part <NUM> (Step S410). In a case where the confidential extracted data <NUM> is larger (NO in Step S410), Step S411 is executed and then the processing proceeds to Step S412, and in other cases (YES in Step S410), Step S411 is skipped and the processing proceeds to Step S412.

In Step S411, the processing query execution unit <NUM> divides the confidential extracted data <NUM>. For example, in a case where a data amount of the confidential extracted data <NUM> is <NUM> GB and an upper limit value of the TEE trusted part <NUM> is <NUM> MB, the data is divided into ten pieces of divided data of <NUM> MB.

Next, the processing query execution unit <NUM> transmits a data processing request with the confidential extracted data <NUM> (one piece of divided data in a case where the data is divided in Step S411) and the encrypted processing query <NUM> as input to the TEE trusted part processing unit <NUM> (Step S412).

Next, the TEE trusted part processing unit <NUM> executes TEE internal data processing with the confidential extracted data <NUM> (one piece of divided data in a case where the data is divided in Step S411) and the encrypted processing query <NUM> as input, and returns the encrypted processing result <NUM> obtained as an output of the processing to the processing query execution unit <NUM> (Step S413).

Although details will be described later with reference to <FIG> and <FIG>, in the TEE internal data processing, the processing result <NUM> in plaintext is output by the data processing (Step S434 in <FIG>, <FIG>), and this processing result <NUM> is encrypted with the processing key <NUM>, so that the encrypted processing result <NUM> is obtained. Here, examples of the processing result <NUM> and the encrypted processing result <NUM> are shown in <FIG> and <FIG>.

<FIG> is an example of the processing result obtained by the data processing. As illustrated in <FIG>, the processing result <NUM> includes a region <NUM> and a region <NUM>. For example, the region <NUM> shows a summary of target data and processing content in plaintext, and the region <NUM> shows a summary of a processing result in plaintext.

<FIG> is an example of the encrypted processing result obtained by the TEE internal data processing. As illustrated in <FIG>, the encrypted processing result <NUM> includes a region <NUM> and a region <NUM>. As described above, the encrypted processing result <NUM> is obtained by encrypting, with the processing key <NUM>, the processing result <NUM> (see <FIG>) in plaintext obtained in the TEE internal data processing. Therefore, a ciphertext is shown in each region. Specifically, for example, the region <NUM> shows a ciphertext obtained by encrypting a summary of target data and processing content, and the region <NUM> shows a ciphertext obtained by encrypting a summary of a processing result.

Next, upon receiving a response of the encrypted processing result <NUM> by the TEE internal data processing, the processing query execution unit <NUM> determines whether or not unprocessed divided data remains (Step S414). In a case where there is unprocessed divided data (YES in Step S414), the processing of Steps S412 and S413 is executed with one piece of the unprocessed divided data and the encrypted processing query <NUM> as input, and, in a case where there is no more unprocessed divided data (NO in Step S414), the processing proceeds to Step S415.

In Step S415, the processing query execution unit <NUM> counts the number of the encrypted processing results <NUM> and determines whether or not a plurality of the encrypted processing results <NUM> are obtained. In a case where the encrypted processing result <NUM> is single in Step S415 (NO in Step S415), this means that the data division is not performed in Step S411. In this case, the processing query execution unit <NUM> transmits the encrypted processing result <NUM> to the processing result user terminal <NUM>.

On the other hand, in a case where there are a plurality of the encrypted processing results <NUM> in Step S415 (YES in Step S415), these encrypted processing results <NUM> mean a processing result of divided data divided in Step S411. In this case, the processing query execution unit <NUM> transmits a processing result aggregation request with a plurality of the encrypted processing results <NUM> for a plurality of pieces of divided data as input to the TEE trusted part processing unit <NUM>.

Then, the TEE trusted part processing unit <NUM> that receives the processing result aggregation request decrypts a plurality of the input encrypted processing results <NUM> with the processing key <NUM>, and puts together (aggregates) a plurality of the processing results <NUM> by combining them or the like. Then, the TEE trusted part processing unit <NUM> generates the encrypted processing result <NUM> encrypted with the processing key <NUM> again, and returns the encrypted processing result <NUM> to the processing query execution unit <NUM> (Step S416). Note that in processing result aggregation processing, the TEE trusted part processing unit <NUM> does not necessarily need to put together a plurality of processing results (the encrypted processing results <NUM>) into one, and may put them together into a plurality. In this case, the TEE trusted part processing unit <NUM> returns the encrypted processing result <NUM> obtained by encrypting each of a plurality of processing results to the processing query execution unit <NUM>. Then, the processing query execution unit <NUM> transmits, to the processing result user terminal <NUM>, one or a plurality of the encrypted processing results <NUM> returned from the TEE trusted part processing unit <NUM>.

Next, through Step S415 or Step S416, the processing result user terminal <NUM>, which receives the encrypted processing result <NUM> from the processing query execution unit <NUM>, inputs one or a plurality of the encrypted processing results <NUM> that are received and the processing key <NUM> to the decryption unit <NUM> so as to decrypt the encrypted processing result <NUM>, and obtains the processing result <NUM> in plaintext as an output of the processing (Step S417). Specific content of the processing result <NUM> is similar to that of the processing result <NUM> shown in <FIG>.

Then, finally, in the processing result user terminal <NUM>, the processing result display unit <NUM> outputs the processing result <NUM> to the processing result user (user) by displaying a processing result display screen <NUM> on the display device <NUM> or the like (Step S418), and the confidential data processing ends.

<FIG> is an example of the processing result display screen. The processing result display screen <NUM> illustrated in <FIG> includes a region <NUM> showing a summary of an original processing condition, a region <NUM> showing a summary of a processing result, and a region <NUM> showing an "OK" button which is pressed when reference of the processing result display screen <NUM> is finished.

Specifically, the region <NUM> shows that single regression analysis (regression model is Y = aX + b) where a height column is an explanatory variable X and an age column is an objective variable Y is executed for a record of gender "male" and age "<NUM> to <NUM>" in a "patient data table" as a summary of a processing condition. Further, the region <NUM> shows that a regression model in which a value of a coefficient a is "<NUM>" and a value of an intercept b is "-<NUM>" is obtained as a summary of a processing result under the processing condition shown in the region <NUM>.

Note that the display contents of the regions <NUM> and <NUM> described above are based on the processing result <NUM> in plaintext decrypted in Step S417 (similar to the processing result <NUM> shown in <FIG>), and found to correspond to each display content on the processing result display screen <NUM> when reference is made to <FIG>.

<FIG> is a flowchart showing a processing process of the confidential extraction query generation processing. As described in Step S406 in <FIG>, the confidential extraction query generation processing is processing in which the encrypted processing key <NUM> and the encrypted processing query <NUM> are input, and is executed by the TEE trusted part processing unit <NUM>.

According to <FIG>, the TEE trusted part processing unit <NUM> first decrypts the encrypted processing key <NUM> by inputting the encrypted processing key <NUM> and the TEE local key <NUM> to the decryption unit <NUM>, and obtains the processing key <NUM> as an output (Step S421).

Next, the TEE trusted part processing unit <NUM> decrypts the encrypted processing query <NUM> by inputting the encrypted processing query <NUM> and the processing key <NUM> to the decryption unit <NUM>, and obtains a processing query as an output (Step S422). Note that the processing query obtained in Step S422 is similar to the processing query <NUM> shown in <FIG>.

Next, the TEE trusted part processing unit <NUM> generates the data extraction query <NUM> in plaintext including a table name and a narrowing condition of processing target data described in a processing query based on the processing query obtained in Step S422 ( Step S423).

<FIG> is an example of the data extraction query. As illustrated in <FIG>, the data extraction query <NUM> is configured as an SQL query for searching a database. More specifically, the data extraction query <NUM> of <FIG> is an SQL query for extracting values of gender, age, and height columns of a record in which a value of a gender column is "male" and a value of an age column is " <NUM> or more and <NUM> or less" from a patient data table, and a table name and a narrowing condition of processing target data described in the processing query <NUM> of <FIG> are used.

Next, the TEE trusted part processing unit <NUM> acquires the TEE local key <NUM> (Step S424), and uses this TEE local key <NUM> to perform confidentially extractable encryption on the data extraction query <NUM> generated in Step S423 (Step S425). More specifically, in Step S425, the TEE trusted part processing unit <NUM> inputs a keyword of a narrowing condition of a nominal value attribute in the data extraction query <NUM> together with the TEE local key <NUM> to the searchable encryption unit <NUM> to generate a searchable cipher query, and also inputs a boundary value of a narrowing attribute of a numeric attribute to the order comparable encryption unit <NUM> together with the TEE local key <NUM> to generate an order comparable cipher query.

Next, the TEE trusted part processing unit <NUM> generates the confidential extraction query <NUM>, in which a data extraction conditional statement of the data extraction query <NUM> is replaced with a function name processed by the confidential extraction query determination unit <NUM>, and a narrowing keyword and a boundary value are replaced with the searchable cipher query and the order comparable cipher query generated in Step S425 (Step S426). Then, finally, the TEE trusted part processing unit <NUM> outputs the confidential extraction query <NUM> and ends the confidential extraction query generation processing. Note that a specific example of the confidential extraction query <NUM> is as shown in <FIG>.

<FIG> is a flowchart showing a processing process of the TEE internal data processing. As described in Step S413 in <FIG>, the TEE internal data processing is processing in which the confidential extracted data <NUM> (or one piece of divided data) and the encrypted processing query <NUM> are input, and is executed by the TEE trusted part processing unit <NUM>.

According to <FIG>, first, the TEE trusted part processing unit <NUM> reads the processing key <NUM> and the TEE local key <NUM> for decrypting the confidential extracted data <NUM> and the encrypted processing query <NUM> which are input (Step S431).

Next, the TEE trusted part processing unit <NUM> decrypts the encrypted processing query <NUM> by inputting the processing key <NUM> and the encrypted processing query <NUM> to the decryption unit <NUM>, and obtains a processing query in plaintext as an output (Step S432). Note that the processing query in plaintext obtained in Step S432 is similar to the processing query <NUM> shown in <FIG>.

Next, the TEE trusted part processing unit <NUM> decrypts the confidential extracted data <NUM> by inputting the TEE local key <NUM> and the confidential extracted data <NUM> to the decryption unit <NUM>, and obtains the extracted data <NUM> in plaintext as an output (Step S433).

Here, <FIG> shows an example of extracted data obtained by decrypting the confidential extracted data. The extracted data <NUM> in <FIG> is obtained by decrypting the confidential extracted data <NUM> shown in <FIG> into plaintext. For this reason, the extracted data <NUM> of <FIG> is configured to have columns of gender, age, and height, like the confidential extracted data <NUM> of <FIG>. Further, a record that matches with a condition of the data extraction query <NUM> (see <FIG>) is extracted to each record of the extracted data <NUM>.

For example, a record <NUM> in a first row shows that the gender is male, the age is <NUM>, and the height is <NUM>, which match with the condition of the data extraction query <NUM> shown in <FIG> (values of gender, age, and height columns are extracted from a record in which a value of a gender column is male, and a value of an age column is <NUM> or more and <NUM> or less). Further, the above similarly applies to records in other rows in <FIG>.

Next, the TEE trusted part processing unit <NUM> causes the data processing execution unit <NUM> to execute predetermined data processing (in the present example, single regression analysis) with the processing query in plaintext obtained in Step S432 and the extracted data <NUM> in plaintext obtained in Step S433 as input (Step S434). Although details will be described later with reference to <FIG>, the TEE trusted part processing unit <NUM> obtains the processing result <NUM> in plaintext as an output of the data processing. A specific example of the processing result <NUM> is as shown in <FIG>, and includes a processing condition and a processing result.

Then, the TEE trusted part processing unit <NUM> inputs the processing key <NUM> and the processing result <NUM> to the encryption unit <NUM> to obtain the encrypted processing result <NUM> obtained by encrypting the processing result <NUM> (Step S435). A specific example of the encrypted processing result <NUM> is as shown in <FIG>. Finally, the TEE trusted part processing unit <NUM> returns the encrypted processing result <NUM> to the processing query execution unit <NUM>, and ends the TEE internal data processing.

<FIG> is a flowchart showing a processing process of the data processing. <FIG> shows a processing process in a case where single regression analysis is used as a specific processing process example of the data processing in Step S434 of <FIG>. As described above in the explanation of <FIG>, in the data processing, the processing query in plaintext obtained in Step S432 (a query similar to the processing query <NUM> shown in <FIG>) and the extracted data <NUM> in plaintext obtained in Step S433 (see <FIG>) are input.

According to <FIG>, first, the TEE trusted part processing unit <NUM> counts the number of records of the extracted data <NUM> between the extracted data <NUM> in plaintext and the processing query in plaintext that are input, and substitutes the number into a variable N (Step S441).

Next, the TEE trusted part processing unit <NUM> refers to a value of an i-th row of a "height" column described as the explanatory variable X in the processing query with a variable "Xi", and also sets an average value of all records of the "height" column to "Xave" (Step S442). Then, the TEE trusted part processing unit <NUM> refers to a value of an i-th row of an "age" column described as the objective variable Y in the processing query with a variable "Yi", and also sets an average value of all records of the "age" column to "Yave" (Step S443). As described above, the processing query of the present example is similar to the processing query <NUM> shown in <FIG>.

Next, the TEE trusted part processing unit <NUM> sets an initial value of a variable i to <NUM> and sets an initial value of a variable "Xdist" indicating a calculation result of a variance of the "height" column to <NUM> (Step S444).

Next, the TEE trusted part processing unit <NUM> calculates "Xdist + (Xi - Xave) ^ <NUM>" and substitutes a calculation result as a new value of "Xdist" (Step S445). Note that an expression "() ^ <NUM>" indicates a square value of a value in "()". Then, the TEE trusted part processing unit <NUM> increments a value of the variable i by <NUM> (Step S446).

Next, the TEE trusted part processing unit <NUM> compares a value of the variable i and a value of the variable N (the number of records of the extracted data <NUM>), and, in a case where "i ≤ N", the processing of Steps S445 and S446 is repeated, and in a case where "i > N", the processing proceeds to processing of Step S448 (Step S447). That is, while the variable i is increased by <NUM>, the processing of Steps S445 to S447 is repeated as many times as the number of records of the extracted data <NUM>, and when the processing ends, the processing proceeds to Step S448.

When the processing proceeds to Step S448, the TEE trusted part processing unit <NUM> initializes the variable i to <NUM> and sets an initial value of a variable "XYdist" indicating a calculation result of a covariance of the "height" column and the "age" column to <NUM>.

Next, the TEE trusted part processing unit <NUM> calculates "XYdist + (Xi - Xave) * (Yi - Yave)" and substitutes a calculation result as a new value of "XYdist" (Step S449). Then, the TEE trusted part processing unit <NUM> increments a value of the variable i by <NUM> (Step S450).

Next, the TEE trusted part processing unit <NUM> compares a value of the variable i and a value of the variable N (the number of records of the extracted data <NUM>), and, in a case where "i ≤ N", the processing of Steps S449 and S450 is repeated, and in a case where "i > N", the processing proceeds to processing of Step S452 (Step S451). That is, while the variable i is increased by <NUM>, the processing of Steps S449 to S451 is repeated as many times as the number of records of the extracted data <NUM>, and when the processing ends, the processing proceeds to Step S452.

In Step S452, the TEE trusted part processing unit <NUM> substitutes a calculation result of "XYdist ÷ Xdist" into a variable a representing a "slope" in single regression analysis (Step S452). Further, the TEE trusted part processing unit <NUM> substitutes a calculation result of "Yave - a * Xave" into a variable b representing an "intercept" in single regression analysis (Step S453).

Finally, the TEE trusted part processing unit <NUM> forms and outputs the processing result <NUM> in plaintext from the processing query, the slope "a", and the intercept "b" (Step S454), and ends the data processing. A specific data example of the processing result <NUM> is as shown in <FIG>.

As described above, according to the confidential information processing system <NUM> according to the present embodiment, in processing of encrypted data including various pieces of data, decryption is performed in a trusted part (TEE trusted part <NUM>) in which a limited amount of data that can be handled, after data extraction by a confidential search query that can perform search or order comparison while data is encrypted is performed to narrow processing target data without transmitting the encrypted data to a user device. Accordingly, a transmission overhead of encrypted data can be eliminated, and a response time for a processing result to the user can be shortened by efficiently using a limited trusted part.

Further, according to the confidential information processing system <NUM> according to the present embodiment, as described in Steps S410 to S414 in <FIG>, in a case where a data amount of extracted processing target data exceeds a data amount that can be handled in a trusted part (the TEE trusted part <NUM>), the processing target data is divided to be processed, and then processing results are put together (aggregated). Accordingly, even in a case where a data amount of processing target data is large, advanced statistical processing and analysis processing such as machine learning using a trusted part can be executed.

Further, according to the confidential information processing system <NUM> according to the present embodiment, a processing request of a processing result user is handled while being encrypted by a processing key in a place other than the inside of a trusted part in a server of a confidential information processing company (the confidential information processing server <NUM>). Accordingly, processing content of a processing result user can be made confidential against a server administrator of the confidential information processing server <NUM> and a cyber attacker.

From the above, a confidential information processing company that provides a confidential information processing service by the confidential information processing system <NUM> performs plaintext processing only in a trusted part of a TEE function in which information cannot be read even if the administrator authority of a server is taken over on the server (the confidential information processing server <NUM>). Accordingly, a service of outputting an analysis processing result of advanced statistical analysis, machine learning, and the like while confidential information such as personal information and processing content of a processing result user are kept confidential against a server administrator and a cyber attacker can be provided.

Note that the present invention is not limited to the above-described embodiment, and includes various variations and equivalent configurations within the scope of the appended claims. For example, the above embodiments are described in detail for easy understanding of the present invention, and the present invention is not necessarily limited to one that includes all the described configurations. Further, for part of a configuration of an embodiment, other configurations may be added, deleted, or replaced with.

Further, each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware, for example, by designing part or all of them with an integrated circuit, and may be realized by software by a processor interpreting and executing a program that realizes each function.

Information, such as a program that performs each function, a table, and a file, can be stored in storage devices, such as a memory, a hard disk, and a solid state drive (SSD), or recording media, such as an IC card, an SD card, and a DVD.

Further, the drawings show a control line and an information line that are considered necessary for explanation, and do not show all control lines or information lines necessary for implementation. In practice, almost all configurations can be considered to be connected mutually.

Further, the present invention can obtain a similar effect even in a case where confidential information that is highly confidential and restricted from being disclosed to the outside of a company due to an internal rule and the like, such as a business secret, in addition to personal information.

Claim 1:
A confidential information processing system (<NUM>) including a confidential information processing server (<NUM>), the confidential information processing system (<NUM>) performing data processing on encrypted data of data including confidential information, wherein
the confidential information processing server (<NUM>) comprises:
a processing request execution unit (<NUM>) that receives a processing request for the encrypted data;
a confidential extraction processing unit (<NUM>) that instructs execution of confidential extraction for extracting data that matches with a predetermined condition while the encrypted data is kept encrypted; and
an encrypted data holding unit (<NUM>) that stores the encrypted data encrypted with a confidentially extractable cipher with which the confidential extraction can be executed,
a trusted part processing unit (<NUM>) that decrypts and processes, using a safe trusted part (<NUM>) in a trusted execution environment, the encrypted data using an encryption key that can be used only in the safe trusted part (<NUM>), wherein
when the processing request execution unit (<NUM>) receives the processing request including an extraction request and a data processing request,
the trusted part processing unit (<NUM>) generates a confidential extraction query for performing extraction of data that matches with a condition of a processing target in the processing request by the confidential extraction based on the extraction request and the encryption key,
the confidential extraction processing unit (<NUM>) extracts encrypted data of the processing target while the data is kept encrypted from the encrypted data holding unit (<NUM>) by instructing execution of the generated confidential extraction query,
the processing request execution unit (<NUM>) divides encrypted data of the processing target extracted by the confidential extraction processing unit (<NUM>) into divided data that does not exceed a data amount that can be handled in the trusted part (<NUM>), and transmits the divided data to the trusted part processing unit (<NUM>),
the trusted part processing unit (<NUM>) decrypts encrypted data of the processing target extracted by the confidential extraction processing unit (<NUM>) with the encryption key, and executes data processing requested by the data processing request, and
the processing request execution unit (<NUM>) returns an execution result of the data processing to a transmission source of the processing request.