WO2016148147A1 - 秘匿データ処理システム - Google Patents
秘匿データ処理システム Download PDFInfo
- Publication number
- WO2016148147A1 WO2016148147A1 PCT/JP2016/058178 JP2016058178W WO2016148147A1 WO 2016148147 A1 WO2016148147 A1 WO 2016148147A1 JP 2016058178 W JP2016058178 W JP 2016058178W WO 2016148147 A1 WO2016148147 A1 WO 2016148147A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- processing
- application
- data
- encrypted data
- database
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
- H04L9/16—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2125—Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation
Definitions
- the present invention relates to a system that utilizes encrypted data.
- Non-Patent Document 1 Non-Patent Document 1
- the processing of the application is changed so that the processing for the encrypted data itself can be processed in an environment in which security is ensured, regardless of the processing restrictions by the encryption method.
- the process for manipulating the encrypted data is replaced with a process for converting to a character string, and both the process for converting the character string and the encrypted data are sent to an environment where security is ensured.
- the process of converting the character string into a character string is executed in the area.
- the present invention it is possible to process the encrypted data in the external environment without decrypting the cipher. For this reason, the risk of data leakage can be reduced.
- the application since the application does not need to be aware of whether or not the data is encrypted, not only can it be freely implemented, but also applications developed by other companies can be used safely.
- users can use encryption methods according to their use cases and requirements, and application developers can develop without being aware of restrictions on the encryption methods used.
- Example of configuration diagram in an embodiment of the present invention Example of logical configuration diagram when application and database in the embodiment are outside the user system
- Example of cryptographic processing correspondence table in the embodiment Example of application conversion processing flow in the embodiment Part of an example of parameter operation storage table in the embodiment Part of an example of parameter operation storage table in the embodiment
- Example of processing flow when the application and database in the embodiment are outside the user system
- Example of encrypted data correspondence table in the embodiment Example of user interface for setting encryption method for column parameter in the embodiment
- Example of processing flow when requesting processing from application and confidential processing unit to database Example of processing flow of application and application extension after database processing result in embodiment Processing flow of the confidential processing unit after application processing in the embodiment Processing example when SQL function is changed in the embodiment
- FIG. 1 is a configuration example of an entire system in an embodiment for realizing the present invention.
- the system is roughly divided into a user system 100 and other parts connected to this by a network 500.
- the user system 100 includes a user interface 110 used for receiving operations from the user and presenting processing results, a secret processing unit 120 that performs encryption processing on data, and key information necessary for use in encryption processing.
- a key management unit 140 for handling and a communication unit 130 for mutual communication with the external environment.
- the user system 100 is an image processed by a single device, but each processing unit is mounted in a separate device, and each processing unit is connected by an internal network built in the user system. It may be configured.
- an application (not shown) that performs another process exists in the user system 100, and may operate in cooperation with the user interface 100 or the confidential processing unit 120.
- Implementation examples of the key management unit 140 include a method for storing key information in a file with appropriate access rights, a hardware chip with a tamper-resistant function, and another server such as a Hardware Secure Module (HSM). It is possible to manage with
- HSM Hardware Secure Module
- the user system 100 is an area where security is ensured, for example, in an on-premises environment of a company, that is, an area where data can be safely handled within this area. Therefore, data encryption is not necessary inside the user system 100, and can be used as it is.
- the data to be concealed is encrypted via the concealment processing unit 120 and then connected to the external network 500 via the communication processing unit 130. Provide other function / system information.
- the external encrypted data received by the communication processing unit 130 from the network 500 is decrypted into raw data by the concealment processing unit 120 and used inside the user system 100.
- the application extension unit 200 provides a function for processing encrypted data without any problem even when the application operates in a non-secure area outside the user system as in this configuration.
- a method of providing the application extension unit 200 a method of providing it as a function within a platform that provides PaaS / SaaS can be considered. By providing it as a part of the platform, the existing application 300 and the database 400 can execute the application without being aware of the existence thereof and without being aware of the operation restrictions by the encryption method.
- Application 300 may be any application. For example, it refers to all applications published as third parties or open source. Of course, applications developed by users themselves are also included.
- the database 400 is used to store data provided from the user system 100 or data processed by the application 300.
- an encryption processing unit 410 corresponding to encryption processing in the database, and this function is called when executing processing on encryption data.
- An example of a specific method for realizing the cryptographic processing unit 410 is a user-defined function (User Defined Function / UDF). By using this function provided by the database, it is possible to add unique processing without changing the database itself.
- the network 500 is a network for linking these functions to each other.
- the Internet corresponds. It is only necessary that each function can be linked, and any communication protocol or physical implementation method can be used.
- FIG. 1 is a diagram conscious of the physical arrangement of each component, but FIG. 2 is a diagram arranged focusing on the linkage of each processing unit in FIG.
- an encryption data correspondence table 150 that defines which data to be encrypted with which encryption method among the data notified to the application or the database exists in the confidential processing unit 120.
- a cryptographic processing correspondence table 240 that describes operations that can be processed by the cryptographic method
- database processing There is a conversion processing storage unit 250, a parameter operation storage table 260, a database encryption correspondence processing management table 270, a user system, and an input / output unit 280 for performing input / output with the database.
- the application extension unit 200 operates as a platform for operating the application 300. That is, the exchange between the application 300 and the user system 100 or the database 400 is performed via the application extension unit 200.
- a communication processing unit 130 exists between the concealment processing unit 120 and the application expansion unit 200, but is omitted in FIG.
- the user system 100, the application extension unit 200, the application 300, and the database 400 in FIGS. 1 and 2 operate in different environments, and unencrypted data can be handled in the user system 100. It is assumed that the situation is only.
- a table for managing the processing that is specifically called in order to perform the calculation in the constraint and the encryption state is the encryption processing correspondence table 240, which is shown in FIG.
- the data notified from the user system is used as an argument of functions (for example, SQL functions) that are executed in the database and executed in the database as necessary within the application, and requests processing to the database. Responses from the database are returned to the user system after the received application performs various calculations as necessary.
- functions for example, SQL functions
- Responses from the database are returned to the user system after the received application performs various calculations as necessary.
- data used outside the user system is encrypted. For this reason, it is necessary to change the processing unit and the SQL function of the data notified from the user system and the database in the application to processing corresponding to the encryption method used.
- the encryption processing correspondence table 240 holds this change content.
- the SQL processing function that processes encrypted data that is called in response to the SQL function that processes plaintext data in the SQL column, and the processing that is performed by the application on the data received in the App column It has a list of functions corresponding to cryptographic processing to be called. In addition to functions that have a one-to-one correspondence with operations, scripts that perform changes may be registered.
- the encryption processing correspondence table 240 holds a processing method corresponding to the encryption method by setting in advance or adding in response to a user request.
- the present invention can be broadly divided into two processes: “change existing application for encryption processing” and “change user request and response to encryption processing”.
- change existing application for encryption processing will be described.
- Fig. 4 illustrates the processing flow for changing the original application to an application compatible with the encryption method.
- the application extension unit 200 is subject to change because the user accesses the application he wants to use, the application provider registers his / her application in the application extension unit, or the system provider registers the application in advance.
- the application itself is received (step S100), and the application is changed to be compatible with encryption (step S200).
- the application extension unit 200 Upon receiving the application to be changed, the application extension unit 200 analyzes the application using the data processing detection unit 220, and specifies a process in which the application receives parameters from the user (step S210). And the parameter notified by the interface is specified (step S220).
- the application is a Web application using REST
- the usage of the parameter that stores the return value from the database is also analyzed.
- the content is added to the parameter operation storage table 260 (step S240). Since the identified location is a place to be replaced with the encryption processing, the application processing extension unit 230 refers to the encryption processing correspondence table 240 and replaces the processing of the application so that the processing for the encrypted parameter can be executed (step S250).
- the GET method processing of the Web application will be explained. Since the GET method parameters are encrypted and notified, the application should refer to the encryption processing correspondence table 240 and call the processing corresponding to each encryption method. To change. For example, it is possible to cope with such a method that a process for branching according to a parameter encryption method is added, or a parameter expression type in a language in which an application is installed is expanded to create a type according to the encryption method.
- Processing that is not described in the encryption processing correspondence table 240 means that processing cannot be performed in the encryption state.
- a method for dealing with such a process a method of converting all processes related to parameters into character strings can be considered. These processes are executed for all interface parts that receive parameters from the user and the response part from the database. For example, if there was a process that returns the result after adding parameter A and parameter B as in the case of “A ⁇ + B ”, this process is converted to a character string as the process itself“ A + B ”. Change to processing that returns things. This is notified to the user system 100 together with the encrypted data and executed there.
- step S300 When it is necessary to perform a cryptographic operation on the encrypted data stored in the database, it is necessary to register the processing in advance in the encryption processing unit 410 of the database.
- the database cryptographic processing management table 270 is used to provide an appropriate cryptographic processing function according to the difference in the database.
- the encryption processing management table 270 for a database is a module registered in a database actually used such as MySQL or Oracle in order to use the processing, the name of the processing corresponding to the encryption method, the name of the processing corresponding to the encryption method ( It manages information such as dynamic libraries and Java (registered trademark) jar files. If necessary, a script or the like for executing the registration process may be registered. If the same encryption process is already registered in the database to be used, nothing is done. If encryption processing cannot be added to the database to be used, a new database may be provided using resources or external resources managed by the application extension unit 200. In this case, the original database setting used by the application is changed.
- the secret table 120 may be notified of the changed table name / column name.
- the change process is performed at the timing of finding the process using the external parameter notified from the user, but the information on the changed part is stored in the parameter operation storage table 260. Therefore, after the analysis of all the applications is completed, the processing may be replaced with encryption compatible processing at once.
- FIG. 5 and FIG. 6 are examples of the parameter operation storage table 260 (although two diagrams are shown for convenience of description, they may be realized as one table).
- an API which is an external interface used by the user system 100, its parameters, and information on the relevant database column information are managed in association with each other.
- FIG. 7 is an outline of the processing flow in the present invention.
- encrypted data is already stored in the database 400, and processing when the application 300 uses this data is described as an example.
- the user interface 110 is a web browser, for example, and accesses an application 300 outside the user system 100.
- the user operates the user interface 110 to transmit data to the application 300 (step S1000).
- Communication from the user interface 110 to the outside of the user system 100 is first notified to the confidential processing unit 120.
- the raw data is detected from the communication data, and the data to be concealed is encrypted and notified to the application (step S2000).
- the application 300 that received the data makes an inquiry to the database 400 using the data (step S3000). Since the data is encrypted, the processing on the data cannot be executed as it is. Therefore, the query processing is updated so that the application processing extension unit 200 calls a query from the application 300 to the database 400 for the encrypted data (step S4000).
- the database 400 executes processing on the database side based on the notified contents and returns a result (step S5000). This result is returned to the application 300.
- the application processing extension unit 200 receives the response, changes the processing result as necessary (step S6000), and returns it to the application 300.
- the application 300 proceeds with its own processing using it (step S7000). At this time, since the returned data is encrypted, the application 300 cannot be processed as it is.
- the processing part related to the encrypted data is changed to a process generated by the application extension unit 200 instead of the original part of the application 300.
- a process for replacing the process for the encrypted data with another expression is executed (step S8000).
- the processing result of the application 300 including the processing result of the usage destination is returned to the user system 100 (step S7000).
- the concealment processing unit 120 that has received the data detects and decrypts the encrypted data from the received data.
- a process in which the data is encrypted and cannot be executed externally and replaced with another expression is executed here (step S9000). This result is received by the user interface 110 and provided to the user as a result (step S10000).
- FIG. 8 is a detailed flow of step S2000 and is a diagram illustrating the contents processed in the concealment processing unit 120.
- Information notified from the user interface 110 to the application 300 is notified to the confidential processing unit 120 (step S1000).
- the data detection unit 121 inside the concealment processing unit 120 detects a data part from the notified information (step S2100).
- FIG. 9 is an example of the encrypted data correspondence table 150.
- the table describes which application should be encrypted among the application, the application, and the data notified to the database. Since only the user can determine whether data encryption is necessary, this information is basically set by the user of the user system.
- the screen as shown in FIG. 10 is presented, and the application sets which part of the data stored in the database is to be encrypted with which encryption method.
- This screen is created with reference to the parameter operation storage table 260.
- the screen for determining the encryption method is based on the column name, but the encryption method can be determined based on the parameter.
- the correspondence relationship between the API / parameter and the database storage destination can be grasped, it is possible to propose an encryption method suitable for the user and to some degree of automatic setting using the correspondence relationship.
- the encryption level requested by the user system is provided as an input, and the application extension section dynamically generates this information. It is also possible to use an operation method that makes it better.
- this correspondence is retained in this table and matched with changes in the data to be encrypted. These conversion processes may be performed.
- the encrypted data correspondence table 150 may be notified to the application extension unit 200. In this case, the application extension unit 200 manages this information together with the request destination information. By doing so, the encryption method and the encryption target parameter can be individually set according to the user.
- the application can be executed by an encryption processing method according to the user.
- encryption method information may be embedded in the encryption parameter itself notified from the user system 100 to the application extension unit 200. With this method, the notified encryption method can be handled without managing the information of the notification source by the application extension unit 200.
- the encryption processing unit 122 obtains and sets the necessary key information in cooperation with the key management unit 140, and encrypts the target data (step S2500). After that, in the information notified from the user interface 110, the portion of the data to be encrypted is replaced with the encrypted data (step S2300). This is performed for the designated data, and the processing of the confidential processing unit 120 is finished, and the encrypted data of the designated data is notified to the application 300 via the communication unit 130.
- FIG. 11 is a detailed flow of steps S3000 and S4000 processed by the application 300. This figure starts from a place where the application 300 receives information notified from the user system 100 via the application extension unit 200.
- the application extension unit 200 calls an application that supports encryption processing, unless the application that supports encryption processing is not held, such as when an application is dynamically replaced with encryption processing.
- the process of the called API is first changed to an encryption-compatible process, and then the process is executed.
- the application 300 that has been subjected to cryptographic processing and receives information from the user system 100 executes its own processing using the data.
- step S3900 when the encrypted data received from the application 100 is set in SQL as it is, since the process for the encrypted data does not occur, the database is requested as it is (step S3900).
- the process changed by the application extension unit 200 is called. (Step S3200).
- the processing for the notified parameter will be described as a character string. If the processing itself needs to be concealed, the character string processing may be encrypted and transmitted.
- the process converted into the character string and the encrypted data are notified to the data detecting unit 121 of the concealment processing unit 120, and first, the encrypted data part is specified (step S3300).
- the encrypted data is notified to the encryption processing unit 122 and decrypted (step S3400), and the data part before decryption of the information notified to the confidential processing unit 120 is replaced (step S3500). This is repeated while there is encrypted data.
- the process for the encrypted data represented by the original character string is executed (step S3600).
- step S3700 the processing result in the confidential processing unit 120 is returned to the application 300 (step S3800).
- step S3900 a request is made to the database in the same manner as when there is no processing for the encrypted data (step S3900).
- the application expansion unit 200 can grasp whether or not to process the parameter notified from the user system 100 when the parameter operation storage table 260 is created. For this reason, when the encryption method is set using the screen as shown in FIG. 10, the confidential processing unit 120 may be notified that the encrypted data returns to the confidential processing unit 120 again. If the concealment processing unit 120 knows this information, the dummy information is notified without notifying the encrypted parameter at the time of calling the application, and the notified dummy without performing the decryption process of step S3400 in FIG. Replacing information with plain text data can also be used.
- a processing request (step S3900) to the database from the application 300 that supports encryption processing is actually notified to the application extension processing unit 200.
- the database processing extension unit 210 in the application extension processing unit 200 refers to the encryption processing correspondence table 240 or the notified data itself, and confirms the encryption method used by the user system 100 of the request source (step S4100). .
- the processing request to the database is updated (step S4200).
- the script described in the cryptographic processing correspondence table 240 is called, the setting information described in the cryptographic processing correspondence table 240 is read and processed accordingly, and the description of the corresponding calculation part is described as the cryptographic processing correspondence table.
- a method such as replacing the character string described in 240 for example, the name of a UDF function
- a request for appropriately handling the encrypted data is issued even on the database side.
- the instruction for the database is replaced with another one after storing the operation.
- the original instruction is an instruction for obtaining the maximum value. Is stored in the conversion processing storage unit 250, and replaced with an instruction to acquire the entire specified range instead of the instruction to obtain the maximum value.
- the specific contents of this replacement process are described in the encryption processing correspondence table 240 in the form of a script or the like.
- the conversion process storage unit 250 registers a process to be executed when the replacement result is notified. These processes are processed by the database processing extension unit 210 in the application extension unit 200. After the processing request to the database can be appropriately changed, the processing is actually requested to the database (step S4300).
- the database 400 instructs the encryption processing unit 410 to execute processing corresponding to the change instruction (step S5000). For example, the encryption processing unit 410 added to the database 400 as a UDF is called.
- the database 400 returns the processing result to the application extension unit 200.
- FIG. 12 is a detailed flow of steps S6000, S7000, and S8000 in which the application extension unit 200 and the application 300 process the processing result of the database 400.
- the database processing result is notified to the application extension unit 200.
- the database processing extension unit 210 in the application extension unit 200 receives this notification, and expresses each value of the return value of the database as, for example, a character string (step S6100). If the original processing is changed in the database processing extension unit 210 at the time of processing request, the original calculation stored in the conversion processor 100 billion unit 250 is applied to the entire character string representing the return value of the database. Express and return (step S6200). For example, the processing for the instruction for obtaining the maximum value is changed to a character string representation of “MAX ( ⁇ return value 1 ⁇ , ⁇ return value 2 ⁇ ,...”), And this character string is returned to the application as the processing result of the database 400. .
- the application 300 that supports encryption processing uses the received character string data as it is as a database processing result. Therefore, when there is no processing for data in particular, the application 300 is used as a part of a response returned to the user system 100 (step S7200).
- the processing is transferred to the application processing extension unit 230 of the application extension unit 200 instead of the original processing of the application 300.
- the same processing as in step S3200 is executed.
- the process for the encrypted data is expressed, for example, as a character string (step S8100).
- the application 300 returns a response to the user system 100 assuming that the processing can be executed as usual (step S7200). In this way, the encrypted data and the process for the encrypted data are, for example, converted into a character string and notified to the user system 100.
- FIG. 13 is a detailed flow of processing step S9000 of the confidential processing unit 120 that has received the processing result of the application 300 executed via the application processing expansion unit 200.
- the processing result returned from the encryption-compatible application 300 is notified from the communication processing unit 130 to the data detection unit 121 in the confidential processing unit 120.
- the encrypted data is detected from the processing result notified from the application 300 (step S9100).
- the data is sent to the encryption processing unit 122 for decryption (step S9200), and the original data in the response data is rewritten with the decrypted data (step S9300). This is repeated as long as encrypted data exists.
- the decryption process is performed every time one piece of encrypted data is detected. However, after all the encrypted data in the response data is detected, the decryption process may be requested collectively.
- step S9400 the process that has not been processed on the application side is executed (step S9400). Then, as in the case where there is no unexecuted processing, the processing result is transmitted to the user interface 110, and the confidential processing unit 120 ends the processing.
- the application 300 in the external environment can process the encrypted data without being aware of the encryption method used by the user system 100 at all.
- FIGS. examples in which the data in the case of “calculate the average body weight at a specific age” and “calculate the average BMI at a specific age” are shown in FIGS. explain.
- the application 300 shown in FIG. 1 is provided as a Web application, and for the items specified by the user (height, weight, age,%), The specified processing (total, average, BMI average, maximum value, minimum value) , 7) is a simple application.
- the data is encrypted using an encryption method that can be searched even in an encrypted state, and information such as height, weight, age, and sex is encrypted and stored in the database 400 as personal information. And It is assumed that the application 300 accesses the database 400 with SQL, and the encryption processing (in this case, data matching confirmation processing) for the database 400 is realized as a UDF.
- the encryption processing in this case, data matching confirmation processing
- plain text data is enclosed by “ ⁇ ” to indicate that the data is encrypted.
- FIG. 14 illustrates the processing in the case of “calculating average weight at a specific age”, and the average processing itself can be realized by using the “AVG” function provided in SQL.
- SQL function processing is required for encrypted data.
- the user operates the browser to instruct the application to “average the weight of a 30-year-old person” (step S1000).
- data is transmitted by the HTTP GET method.
- it may be transmitted by POST or in a format such as YAML or JSON.
- the processing type is set to “kind”
- the data to be averaged is set to “column”
- the age information that limits the processing target is set to “age”.
- the concealment processing unit 120 Upon receiving this, the concealment processing unit 120 refers to the encrypted data correspondence table 150 to confirm which parameter is to be encrypted, and encrypts it (step S2000).
- the application 300 that has received the encrypted data generates SQL for inquiring the database 400 using the data as it is (step S3000).
- the encryption processing correspondence table 240 the presence or absence of the encryption correspondence function of the SQL function “AVG” for calculating the average is confirmed. If the corresponding function exists, replace the “AVG” part with the function and notify the database of the SQL statement. If there is no corresponding function, it means that the application requested an SQL function that cannot be processed by this encryption method. In this case, by sending information indicating the processing corresponding to which SQL function that could not be processed and the encryption type (Encryption Type) from the application extension unit to the user system via the input / output unit 280, The reason why processing could not be performed may be notified as an error. The user refers to the reason through the user interface 110 of the user system and implements appropriate measures.
- the database processing extension unit 210 that receives the result checks the conversion processing storage unit 250 and recognizes that the SQL function “AVG” cannot be executed. In order to show that this could not be processed, the weight information received as a result is converted into a character string, and a mark indicating that it is “averaged” is added (in this case, expressed by prefixing the phrase “AVG”) ( Step S6000).
- the application 300 recognizes the value returned from the database 400 as an already averaged weight value and processes it. However, since it is actually returned as a character string, it cannot be processed as it is. For this reason, the application process extension unit 230 calls the changed process. In this example, since the value returned from the database 400 is an average value, it should be a “numeric value”, but a process changed to handle this portion as a “character string” is executed (step S8000). Thus, the processing in the application 300 is completed, and the HTML document to be displayed on the browser is returned to the user system 100 as a processing result (step S7000).
- the data detection unit 121 of the concealment processing unit 120 detects this. Then, the encrypted data is decrypted, and thereafter, an average process that could not be processed on the application 300 side is executed to update the HTML document (step S9000).
- the cipher data is plainly processed in the concealment processing unit 120, processing that could not be processed on the application side is executed, and notified to the browser as the user interface 110 and displayed (step S10000).
- FIG. 15 illustrates the processing in the case of “calculating the average BMI at a specific age”.
- the basic processing flow is the same as “Calculate the average weight at a specific age”, but the SQL function is not used, and the calculation is performed on the encrypted data inside the application.
- a processing method in the case where the application internal process needs to be changed for encrypted data will be described.
- the user notifies the application 300 of data and a processing method by a browser operation.
- the SQL function is not used in this example, there is no change other than changing the SQL to call the UDF for processing the encrypted data in the database, and the processing result of the database 400 is also used as it is (step) S1000 to S6000).
- Application 300 performs an operation to calculate BMI using the returned value.
- the actual value returned cannot be processed because it is encrypted. Therefore, if there is a cryptographic function or script for changing the processing that the application processing expansion unit 230 refers to the cryptographic processing correspondence table 240 to perform operations on the cryptographic data, the processing is replaced with that function. Execute and return to application. If there is no cryptographic function, an error may be returned and the user notified as in the SQL function replacement. At this time, information indicating which SQL function corresponds to the process that could not be processed among the processes requested by the user and the encryption type (Encryption Type) are sent to the user system via the input / output unit 280. If the user refers from the user interface 110, the user can take appropriate measures against the error.
- the application 300 returns the processing result executed as having been calculated without any problem to the user system 100 (step S7000).
- the concealment processing unit 120 executes data decoding and characterized BMI calculation processing, and returns a response to the user interface 110. In this way, even when the encryption data is handled in the application internal process, the application can realize the process for the encryption data without being aware of it.
- the data notified from the browser is used for SQL as it is.
- the application side actually performs some operation and uses the result for the SQL statement.
- the processing at this time is basically the same as that in step S8000, and the processing corresponds to the processing in steps S3300 to S3800 in FIG. Therefore, even in such a case, it is possible to handle encrypted data without any problem.
- the processing for the encrypted data on the application 300 side is described as a character string and processed by the concealment processing unit 120.
- the processing to be returned to the user system 100 side instead of the column, it may be converted to JavaScript (registered trademark) and returned to the user system 100.
- the encrypted data is decrypted in the concealment processing unit 120, and the process for the encrypted data converted into JavaScript may be executed by a browser used as the user interface 110.
- the image of rewriting the source code of the application has been described, but it may be implemented using a binary image such as Java or C language.
- the above is an example of an environment in which the user system 100, the application extension unit 200, the application 300, and the database 400 operate in different environments.
- the application expansion unit 200 and the application 300 exist in the user system 100 and only the database 400 is external, or the database 400 is in the user system and the application expansion unit 200 and the application 300 are in the user system 100.
- a configuration outside of can also be considered. These configurations are shown in FIG. A configuration in which the database 100 is external is a configuration 800, and a configuration in which an application is external is a configuration 900. Since a free configuration can be selected in this way, it is possible to adopt a configuration that matches the degree of data secrecy and the system configuration.
- the data detection unit 121 and the encrypted data correspondence table 150 are not used for the exchange between the user interface 110 and the application 300, but are used for the exchange between the secret processing unit 120 and the database 400. That is, the encrypted data correspondence table 150 corresponds to the database to be used, the table name / column name, and the encryption method.
- the application extension unit 200 of the present invention When developing an application that operates in an environment isolated from the outside such as the inside of the user system, the developer is only the user himself or a person entrusted by the user in order to maintain the isolated environment. In addition, when using a cipher, a developer needs to implement the operation that can use the encryption method, and the portability of the application is reduced. However, by introducing the application extension unit 200 of the present invention, the application developer can develop without being aware of the encryption method.
- the processing flow in this case is almost the same procedure as that of the first embodiment except that the processing order is changed.
- the processing order is as follows.
- the configuration 900 it can be realized if the processing for the encrypted data executed by the application 300 can be executed by the user system 100 by converting it into a character string or JavaScript, for example.
- the database 400 since the database 400 is in the user system 100, processing for the database can be used inside the user system without being aware of encryption. Therefore, compared to the first embodiment, the database processing extension unit 210 in the application extension unit 200, the conversion processing storage unit 250, the encryption processing management table for database 270, and the encryption processing unit 410 in the database 400 are not required. .
- the processing flow is as follows: the user interface 110 ⁇ the confidential processing unit 120 ⁇ the application 300 ⁇ the application extension unit 200 ⁇ the application 300 ⁇ the database 400, and the application 400 is outside and the database 400 is in the user system 100. It will be processed through time.
- the processing in each processing unit is basically the same as the other configurations.
- the above embodiment is an example in which the feature of the present invention is realized using the framework of the application extension unit 200.
- the application developer instead of changing the processing contents of the application 300 by the application extension unit 200 dynamically or when the application 300 is deployed, the application developer performs an application that has been processed by the application extension unit 200 in advance.
- This method can also be realized by preparing and using this.
- the image is the same as the method of compiling the source code and creating an executable file suitable for the corresponding environment.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Abstract
DBに暗号化したデータを格納し暗号のまま処理できる暗号方式が提案されているが、アプリケーションは平文データを利用する必要があるため、セキュリティが担保される場所でしか利用できない。 ユーザシステムからDBに格納された暗号化されたデータ処理を行うアプリケーションを使用するときに、ユーザシステムからアプリケーション拡張部経由でアプリケーションを起動し、アプリケーション拡張部はアプリケーションがDBに格納された暗号化されたデータを処理するときに、DBシステムで暗号化されたままのデータを処理できる暗号化SQL関数が登録されていれば平文を処理するSQL関数を暗号化SQL関数に置き替え、代替処理が登録されている場合は代替処理が行えるよう代替処理用関数に置き換える処理を行うことによりセキュリティが担保されていない場所でデータを復号しないで処理することを可能にする。
Description
本発明は、暗号化されたデータを活用するシステムに関する。
各種情報システムにおいて、利用者の名前や住所・現在位置などの個人情報や生体情報などをシステム外に提供すべきではない。しかしながらこのような情報を使用して運用しなければならないシステムがあるのが現実である。
この対策として、物理的に他システムと分離した環境を構築して運用する方法がある。これはデータ漏洩対策として効果があるものの、実現コストがかかりがちである。
この対策として、物理的に他システムと分離した環境を構築して運用する方法がある。これはデータ漏洩対策として効果があるものの、実現コストがかかりがちである。
別の対策として、データを暗号化して漏洩リスクを下げる方法がある。データを暗号化することで、万一データ漏洩が発生しても、そのままでは意味のある情報を取得できないため、データを安全に扱うことができる。多くのシステムではデータベースが利用されており、データベース自身が持つデータ暗号化機能を利用することで実現できる。
一方で、システムの運用コスト削減、計算機リソースの迅速な利用を実現するために、クラウド環境が利用されるようになってきている。結果、システム内で秘匿すべきデータが、今後ますますクラウド環境に蓄積されることが予想される。
従来の方法ではデータの暗号化はデータベースで実施しているため、データベースがクラウドなどの従来システムの外部環境で動作する場合、その暗号処理に利用する鍵情報もデータベースの利用場所、つまり外部に保存する必要がある。このため、クラウドサービス業者などの外部リソース管理者がユーザから指定された暗号鍵を使って秘匿すべきデータの中身を取得する、などのデータ漏洩が発生する可能性がある。
こういった問題に対応するため、データが暗号化された状態のまま処理できる特殊な暗号方式を使うという解決策が提案されている。ただ現時点では、暗号化状態で処理できる演算はその暗号方式により制約がある。この制約を踏まえて、アプリケーションまたは事前の設定情報に応じて、利用する暗号処理方式を変更して対応する方法が考えられている(特許文献1)。また、各種暗号方式に対応したデータをあらかじめ用意しておくことで対応する方法も考えられている。(非特許文献1)
CyrptDBhttp://people.csail.mit.edu/nickolai/papers/raluca-cryptdb.pdf
これらの方法では各種暗号方式に対応できるが、アプリケーションは復号後の生データを使って動作する必要があるため、アプリケーションが動作できるのはセキュリティが担保された環境内だけであった。このため、PaaS(Platform as a Service)、SaaS(Software as a Service)などクラウド環境で提供される様々なアプリケーションを自由に利用できないという課題がある。
そこで本発明では、暗号方式による処理制約に関わらず、暗号化されたデータに対する処理そのものをセキュリティが担保された環境で処理できるよう、アプリケーションの処理を変更する。例えば、オリジナルのアプリケーションの処理のうち、暗号データを操作する部分の処理を文字列化する処理に置き換え、この文字列化した処理と暗号データを共にセキュリティが担保された環境に送信し、暗号データを復号した上で文字列化した処理をその領域内で実行する。
本発明により、暗号化データに対する処理を、外部環境ではその暗号を復号することなく処理することができる。このため、データ漏洩リスクを削減することができる。また、アプリケーションはデータが暗号化されているかどうかを意識する必要がないため、自由に実装できるだけでなく他社が開発したアプリケーションも安全に利用することが可能になる。さらにユーザは自身のユースケースや要求に応じた暗号方式を利用することができ、アプリケーション開発者は利用する暗号方式の制約を意識することなく開発できる。
以下、図面を用いて本発明の実施例を説明する。なお、本発明が本実施例に限定されるものではない。
図1は本発明を実現するための一実施例における全体システムの構成例である。システムは大きくユーザシステム100と、これとネットワーク500で接続されるそれ以外の部分に分けられる。
ユーザシステム100には、ユーザからの操作受付・処理結果提示などに利用されるユーザインタフェース110、データに対する暗号処理を実施する秘匿処理部120、暗号処理で利用するために必要な鍵情報を安全に扱うための鍵管理部140、外部環境と相互通信するための通信部130がある。この図ではユーザシステム100は1台の機器で処理するイメージになっているが、各処理部がそれぞれ別の機器内で実装され、各処理部がユーザシステム内に構築された内部ネットワークで接続される構成でもよい。また、ユーザシステム100内部に別の処理を行うアプリケーション(図示していない)が存在し、それがユーザインタフェース100や秘匿処理部120と連係して動作しても良い。鍵管理部140の実装例としては、適切なアクセス権限を設定したファイルに鍵情報を格納する方法や、耐タンパ性機能を備えたハードウェアチップや、Hardware Secure Module(HSM)のような別サーバで管理する方法などが考えられる。
ユーザシステム100は、例えば企業のオンプレミス環境のようにセキュリティが担保された領域、つまり、この内部であればデータを安全に扱える領域である。したがって、ユーザシステム100内部ではデータの暗号化は必要なく、そのままの状態で利用できる。本構成では、生データをユーザシステム100の外部に提供する際に秘匿処理部120を介し、秘匿すべきデータを暗号化した上で通信処理部130を経由して外部のネットワーク500に接続された別機能・システム情報を提供する。また、ネットワーク500から通信処理部130が受け取る外部からの暗号データは、秘匿処理部120にて生データに復号されてユーザシステム100内部で利用される。
ユーザシステム100がネットワーク500を経由して利用するものとして、アプリケーション拡張部200、アプリケーション300、データベース400がある。アプリケーション拡張部200の内部には、データベース処理拡張部210、データ処理検出部220、アプリケーション処理拡張部230がある。アプリケーション拡張部200は本構成のような、アプリケーションがユーザシステム外の非セキュアな領域で動作する場合でも、暗号化データを問題なく処理するための機能を提供する。アプリケーション拡張部200の提供方法の1例として、PaaS/SaaSを提供するプラットフォーム内の機能として提供する方法が考えられる。プラットフォームの一部として提供することで、既存のアプリケーション300やデータベース400は、その存在を意識することなく、さらに暗号方式による演算の制約を意識せずにアプリケーションを実行できる。
アプリケーション300はどのようなアプリケーションでもよい。例えばサードパーティやオープンソースとして公開されているアプリケーション全般を指す。もちろんユーザ自身が開発したアプリケーションも含まれる。
データベース400はユーザシステム100から提供されたデータ、あるいはアプリケーション300が処理したデータを格納するために利用される。データベース内部には暗号処理に対応した暗号処理部410があり、暗号データに対する処理を実行する際に、この機能を呼ぶ。暗号処理部410の具体的な実現方法の例としてはユーザ定義関数(User Defined Function/UDF)がある。データベースが提供するこの機能を利用することで、データベースそのものを変更することなく、独自処理を追加することができる。
ネットワーク500はこれらの機能を互いに連係させるためのネットワークである。例えばインターネットが相当する。各機能が連動できればよく、通信プロトコルや物理的な実現方法は問わない。図1は、各構成要素の物理的配置を意識した図であるが、図2は図1の各処理部の連係に注目して整理した図である。図1の要素に加えて、秘匿処理部120内部にはアプリケーションまたはデータベースに通知するデータのうち、どのデータをどの暗号方式で暗号化するかを定義した暗号化データ対応表150が存在する。アプリケーション拡張部200内部には、ユーザシステムからの要求に対してどの暗号処理を利用するかを定義し、その暗号方式が処理可能な演算などを記載した暗号処理対応表240と、データベース用の処理を変更した場合に利用する変換処理記憶部250、パラメータ操作記憶表260とデータベース向け暗号対応処理管理表270、ユーザシステム、データベースとの入出力を行う入出力部280が存在する。
また、アプリケーション拡張部200は、アプリケーション300を動作させるプラットフォームとして動作する。つまり、アプリケーション300とユーザシステム100またはデータベース400とのやりとりは、アプリケーション拡張部200を介して実施される。なお、秘匿処理部120とアプリケーション拡張部200の間には通信処理部130が存在するが、図2では省略している。また、この例では図1、図2のユーザシステム100、アプリケーション拡張部200、アプリケーション300、データベース400はそれぞれ別々の環境で動作しており、暗号化されていないデータが扱えるのはユーザシステム100内のみという状況であることを想定している。
近年、暗号状態のままでも演算ができる暗号アルゴリズムが考案されているが、全ての演算が適用できるものはない。つまり、ある暗号方式は暗号状態で加減算はできるが剰余算はできない、一致判定は可能だが大小比較はできない、など方式によって暗号状態のまま処理できることに制約がある。この制約および暗号状態で演算するために具体的に呼び出す処理を管理するための表が暗号処理対応表240であり、これを図3に示す。
ユーザシステムから通知されたデータは、アプリケーション内部で各種演算の実施および必要に応じてデータベース内で実施する機能(例えばSQL関数)の引数として利用されてデータベースに処理を依頼する。またデータベースからの応答は、受け取ったアプリケーションが必要に応じて各種演算を実施してユーザシステムに返す。本例では、ユーザシステム外部で利用するデータは暗号化されている。このため、アプリケーション内におけるユーザシステムおよびデータベースから通知されたデータの処理部とSQL関数を、利用している暗号方式に対応した処理に変更する必要がある。暗号処理対応表240ではこの変更内容を保持する。具体的には、SQLカラムに平文のデータを処理するSQL関数に対応して呼び出す暗号化されたデータを処理する暗号処理用SQL関数を、Appカラムに受け取ったデータに対するアプリケーションで実施する処理に対応して呼び出す暗号処理対応関数の一覧を持つ。また、演算と1対1に対応する関数だけでなく、変更を実施するスクリプトなどを登録してもよい。
この内容を必要に応じて追加・変更することで、新暗号方式や新規演算に対応できる。暗号処理対応表240は事前に設定しておく、ユーザ要求に応じて追加するなどして暗号方式に対応する処理方法を保持する。
暗号に対応させるため、本発明は「既存アプリケーションを暗号処理向け変更」と「ユーザ要求と応答を暗号対応処理に変更」の、大きく2つの処理に区別することができる。以下、「既存アプリケーションの暗号処理向け変更」について説明する。
図4は、オリジナルのアプリケーションを暗号方式に対応したアプリケーションに変更する処理フローを説明したものである。まず、ユーザが利用したいアプリケーションにアクセスする、アプリケーション提供者がアプリケーション拡張部に自身のアプリケーションを登録する、システム提供者が事前にアプリケーションを登録するなどのきっかけで、アプリケーション拡張部200が変更対象となるアプリケーションそのものを受け取り(ステップS100)、アプリケーションを変更して暗号対応に変更する(ステップS200)。
変更対象アプリケーションを受け取ったアプリケーション拡張部200は、データ処理検出部220でそのアプリケーションを解析し、アプリケーションが利用者からパラメータを受け取る処理を特定する(ステップS210)。そして、そのインタフェースで通知されるパラメータを特定する(ステップS220)。
例えばアプリケーションがRESTを使ったWebアプリケーションであれば、HTTPのGET/POSTなどのメソッドに対応する処理部分と、それらの処理で通知されるパラメータを把握する処理を実行する。通知されたパラメータはアプリケーション内で活用されるため、具体的にどのような処理に利用されるのか、引き続き解析を続けて把握する(ステップS230)。
また、この処理ステップでは、データベースからの戻り値を格納するパラメータの利用のされ方についても解析する。追跡対象のパラメータを利用した処理を実行している部分を特定すると、その内容をパラメータ操作記憶表260に追加する(ステップS240)。この特定した場所が暗号対応処理に置き換えるべき場所であるため、アプリケーション処理拡張部230は暗号処理対応表240を参照して暗号化されたパラメータに対する処理を実行できるようにアプリケーションの処理を置き換える(ステップS250)。一例として、WebアプリケーションのGETメソッド処理で説明すると、GETメソッドのパラメータが暗号化されて通知されるため、暗号処理対応表240を参照して、各暗号方式に対応した処理を呼びだすようにアプリケーションを変更する。例えば、パラメータの暗号方式に応じて分岐する処理を入れる、アプリケーションを実装している言語におけるパラメータ表現型を拡張して暗号方式に応じた型を作成する、などの方法で対応できる。
暗号処理対応表240に記載のない処理は、暗号状態では処理ができないことを意味する。このような処理に対する対応方法の一例として、パラメータが関連する処理を全て文字列化するという方法が考えられる。これらの処理をユーザからパラメータを受け取る全てのインタフェース部分、及びデータベースからの応答部分に対して実行する。例えば、元々の処理が「A + B」のようにパラメータAとパラメータBを加算して結果を返す処理があった場合、この処理を「”A + B”」という処理そのものを文字列化したものを返す処理に変更する。これを暗号データと共にユーザシステム100に通知して、そちらで実行する。
この一連の処理により、アプリケーション全体が解析される。この解析処理において、暗号対応処理に変換するステップS200と同時にMySQL、Oracleなど、具体的にどのデータベースを利用するかの情報も蓄積しておき、その情報とデータベース向け暗号処理管理部270を参照して利用するデータベースに応じた暗号処理の登録をする(ステップS300)。データベースに格納した暗号データに対して暗号独自の演算を施す必要がある場合、データベースの暗号処理部410に事前にその処理を登録する必要がある。
利用するデータベースはシステムやアプリケーション、利用者により異なるため、このデータベースの違いに応じて適切な暗号処理用機能を提供するためにデータベース向け暗号処理管理表270を利用する。データベース向け暗号処理管理表270は具体的には、暗号方式の種別とその暗号方式に対応した処理の名称、その処理を利用するためにMySQLやOracleなどの実際に利用するデータベースに登録するモジュール(動的ライブラリ、Java(登録商標)のjarファイルなど)などの情報を管理する。必要であれば、登録処理を実行するためのスクリプトなどを登録してもよい。なお、利用するデータベースに既に同じ暗号処理が登録されている場合はなにもしない。また、利用するデータベースに暗号処理を追加できない場合は、アプリケーション拡張部200管理下にあるリソースまたは外部リソースを使い、新規にデータベースを提供してもよい。この場合、アプリケーションが利用している元々のデータベース設定を変更する。
必要であれば、元々のデータベースが利用しているテーブル名やカラム名を暗号化したものを利用する、別名を利用するなどの変更を実施する。この場合、変更したテーブル名・カラム名を秘匿処理部120に通知しておいてもよい。
なお、この暗号対応処理への変換フローの例では、ユーザから通知される外部パラメータを利用する処理を見つけるタイミングで変更処理を実施しているが、変更箇所の情報はパラメータ操作記憶表260に蓄積するため、アプリケーション全ての解析を終了してから、一度に暗号化対応処理に置き換えてもよい。
図5、図6はパラメータ操作記憶表260の一例である(記載の都合で2つの図になっているが一つのテーブルとして実現しても良い。)。この表ではユーザシステム100が利用する外部インタフェースであるAPIとそのパラメータ、そのパラメータと関連するデータベースのカラムの情報とを対応付けて管理する。
次に、「ユーザ要求と応答を暗号対応処理に変更」方法について説明する。
図7は本発明における処理フローの概略である。ここでは、データベース400に既に暗号化されたデータが格納されており、このデータをアプリケーション300が利用する場合の処理を一例として記載している。
ユーザインタフェース110は、例えばWebブラウザであり、ユーザシステム100外部のアプリケーション300にアクセスしている。ユーザはユーザインタフェース110に対して操作してアプリケーション300にデータを送信する(ステップS1000)。ユーザインタフェース110からユーザシステム100の外部に向かう通信は、まず秘匿処理部120に通知される。ここで通信データ内から生データを検出して、秘匿すべきデータを暗号化してアプリケーションに通知する(ステップS2000)。
データを受け取ったアプリケーション300は、そのデータを使ってデータベース400に問い合わせる(ステップS3000)。データが暗号化されているため、データに対する処理はそのままでは実行できない。このため、アプリケーション処理拡張部200がアプリケーション300からデータベース400への問い合わせを、暗号データに対する処理を呼び出すよう、問い合わせ処理を更新する(ステップS4000)。
データベース400は、通知された内容を元にデータベース側の処理を実行して結果を返す(ステップS5000)。この結果はアプリケーション300に返されるが、その前にアプリケーション処理拡張部200がその応答を受信し、必要に応じて処理結果を変更して(ステップS6000)アプリケーション300に返す。アプリケーション300はそれを用いて自身の処理を進める(ステップS7000)。このとき、戻ってきたデータは暗号化されているため、アプリケーション300はそのままでは処理できない。
このため、暗号データに関連する処理部分は、アプリケーション300の元々のものでなくアプリケーション拡張部200により生成される処理に変更する。例えば、暗号データに対する処理を別の表現に置き換える処理を実行する(ステップS8000)。そして、使用先の処理結果を含めて、アプリケーション300での処理結果をユーザシステム100に返す(ステップS7000)。データを受け取った秘匿処理部120は、受け取ったデータのうち、暗号データを検出して復号する。次に、データが暗号化されていたために外部で実行できずに別表現に置き換えられた処理をここで実行する(ステップS9000)。この結果をユーザインタフェース110が受け取り、結果としてユーザに提供する(ステップS10000)。
図8は、ステップS2000の詳細フローであり、秘匿処理部120内部で処理される内容について説明した図である。ユーザインタフェース110からアプリケーション300に通知される情報は、秘匿処理部120に通知される(ステップS1000)。秘匿処理部120内部のデータ検出部121は、通知された情報からデータ部分を検出する(ステップS2100)。次に検出したデータを暗号化する必要があるかどうかを確認する(ステップS2200)。具体的には暗号化データ対応表150を参照し、検出したデータのうち、どのデータを暗号化する必要があるかを判断する。
図9は暗号化データ対応表150の一例である。表にはアプリケーションとそのアプリケーション向け、およびデータベースに通知するデータのうち、どのデータを暗号化すべきかが記載されている。データ暗号化の要否はユーザのみが判断できるため、この情報は、基本的にはユーザシステムの利用者が設定することになる。
例えば、ユーザがアプリケーションを利用する前、あるいは直前に図10のような画面を提示し、アプリケーションがデータベースに格納するデータのうち、どの部分をどの暗号方式で暗号化するかを設定してもらう。この画面は、パラメータ操作記憶表260を参照して作成される。
図10ではカラム名起点で暗号方式を決定する画面になっているが、パラメータ起点で暗号方式を決定するものにすることもできる。また、API・パラメータとデータベース格納先の対応関係が把握できているため、その対応関係を使ってユーザに適切な暗号方式の提案や、ある程度の自動設定も可能になる。あるいは、ユーザシステムが要求する暗号強度などを入力として提供してアプリケーション拡張部がこの情報を動的に生成する、システム的・アプリケーション的に暗号方式が確定しているためこの情報をもたなくてもよいようにする運用方式でもよい。
また、データベース400に格納しているテーブル名やカラム名などを暗号化したものや別名に変更したものを利用している場合、その対応関係をこの表で保持し、暗号対象データの変更に合わせてこれらの変換処理を実施してもよい。暗号データ対応表150はアプリケーション拡張部200に通知してもよい。この場合、アプリケーション拡張部200は要求先の情報と共に、この情報を管理する。こうすることで、ユーザに応じて暗号方式及び暗号対象パラメータを個別に設定することができる。
例えば、パラメータ操作記憶表260に通知元の情報を追加して、ユーザに応じた暗号処理方法でアプリケーションを実行できる。または、ユーザシステム100からアプリケーション拡張部200に通知する暗号パラメータ自体に暗号方式の情報を埋め込んでもよい。この方式であれば、通知元の情報をアプリケーション拡張部200で管理することなく、通知された暗号方式に対応できる。
暗号化が必要なデータの場合、暗号処理部122は鍵管理部140と連係して必要な鍵情報を取得・設定し、対象データを暗号化する(ステップS2500)。その後、ユーザインタフェース110から通知された情報のうち、暗号化対象データの部分を暗号化したデータに置き換える(ステップS2300)。これを指定されたデータに対して実施し、秘匿処理部120の処理を終えて通信部130を介してアプリケーション300に指定されたデータを暗号化した情報を通知する。
図11はアプリケーション300で処理されるステップS3000およびステップS4000の詳細フローである。この図は、まずアプリケーション300がアプリケーション拡張部200を介してユーザシステム100から通知された情報を受け取る所から始まる。動的にアプリケーションを暗号対応処理に置き換える場合など、暗号処理に対応したアプリケーションを保持していない場合を除き、アプリケーション拡張部200は暗号処理対応のアプリケーションを呼び出す。初めて指定されたアプリケーションの場合であれば、まず呼び出されたAPIの処理を暗号対応の処理に変更した上で処理を実行する。
ユーザシステム100から情報を受け取った暗号処理対応済みアプリケーション300は、そのデータを使って独自処理を実行する。ここで、ユーザシステム100から通知された暗号データに対する処理をする場合と、特に処理せずにそのまま利用する場合の、大きく2通りに処理を区別できる。
例えば、アプリケーション100から受け取った暗号データをそのままSQLにデータをセットするという場合、暗号データに対する処理が発生しないためそのままデータベースに処理を要求する(ステップS3900)。暗号データに何かしらの操作を行う場合、アプリケーション拡張部200によって変更された処理を呼び出す。(ステップS3200)。ここでは、通知されたパラメータに対する処理が文字列化されたものとして説明する。なお、処理そのものも秘匿化が必要であれば、文字列化した処理も暗号化して送信してもよい。
文字列に変換された処理と暗号データは、秘匿処理部120のデータ検出部121に通知され、まず暗号データ部分を特定する(ステップS3300)。暗号データは暗号処理部122に通知されて復号され(ステップS3400)、秘匿処理部120に通知された情報の復号前のデータ部分を置き換える(ステップS3500)。これを暗号データがある間繰り返す。こうして、元々の文字列で表現されていた暗号データに対する処理を実行する(ステップS3600)。この結果をアプリケーション300に返すため、暗号化した上で(ステップS3700)、秘匿処理部120での処理結果をアプリケーション300に返す(ステップS3800)。
この結果を使い、暗号データに対する処理がないときと同様にデータベースに処理を依頼する(ステップS3900)。なお、アプリケーション拡張部200は、パラメータ操作記憶表260作成時にユーザシステム100から通知されたパラメータに対して処理を施すかどうかを把握できる。このため、図10のような画面を使って暗号方式を設定する際に、暗号化されたデータが再度秘匿処理部120に戻ることを秘匿処理部120に通知しておいてもよい。この情報を秘匿処理部120が知っているのであれば、アプリケーション呼び出し時に暗号化したパラメータを通知せずにダミー情報を通知し、図11のステップS3400の復号処理を実施せずに、通知したダミー情報を平文のデータに置換することでも対応することができる。なお、暗号処理対応したアプリケーション300からのデータベースへの処理要求(ステップS3900)は、実際にはアプリケーション拡張処理部200に通知される。アプリケーション拡張処理部200内部のデータベース処理拡張部210は、暗号処理対応表240あるいは通知されたデータそのものを参照して、要求元のユーザシステム100が利用している暗号方式を確認する(ステップS4100)。この情報を使って、データベースへの処理要求を更新する(ステップS4200)。変更方法として、暗号処理対応表240に記載されているスクリプトを呼び出す、暗号処理対応表240に記載されている設定情報を読み込んでそれに応じて処理する、対応する演算部分の記述を暗号処理対応表240に記載されている文字列(例えばUDF関数の名称)に置き換える、などの方法が考えられる。この処理により、データベース側でも適切に暗号データを扱える要求を発行する。例えば、ユーザシステム100が利用している暗号方式で処理できない演算がデータベースに対する処理に指定されている場合は、その演算を記憶した上でデータベースに対する指示を別のものに置き換える。
例えば、暗号状態ではデータの大小関係を判断できない暗号方式を利用している際にある範囲内での最大値を求める指示をデータベース400に通知する場合、元々の指示が最大値を求める指示であることを変換処理記憶部250に記憶させた上で、最大値を求める指示の代わりに指定された範囲全てを取得する指示に置き換える。
この置き換え処理の具体的な内容は暗号処理対応表240にスクリプトなどの形式で記載される。変換処理記憶部250には、この置き換えた結果が通知された際に実行すべき処理を登録する。これらの処理はアプリケーション拡張部200内のデータベース処理拡張部210で処理される。データベースへの処理要求を適切に変更できた後、実際にデータベースに処理を要求する(ステップS4300)。
これを受け取ったデータベース400は、変更指示に対応した処理を、暗号処理部410に指示して処理を実行する(ステップS5000)。例えば、UDFとしてデータベース400に追加された暗号処理部410を呼び出す。データベース400は処理結果をアプリケーション拡張部200に返す。図12は、アプリケーション拡張部200及びアプリケーション300がデータベース400の処理結果を処理する各ステップS6000、S7000、S8000の詳細フローである。
データベース処理結果は、アプリケーション拡張部200に通知される。アプリケーション拡張部200内のデータベース処理拡張部210がこの通知を受け取り、データベースの戻り値の各値を、例えば文字列として表現する(ステップS6100)。処理要求時にデータベース処理拡張部210にて元々の処理が変更されている場合は、データベースの戻り値を表現した文字列全体に対して変換処理機億部250に記憶した元々の演算を施すことを表現して返す(ステップS6200)。例えば、上記の最大値を求める指示に対する処理を「MAX({戻り値1}, {戻り値2}, …)」という文字列表現に変更し、この文字列をデータベース400の処理結果としてアプリケーションに返す。
なお、「MAX()」という文字列が通知された場合、括弧内に格納された文字列を復号し、その結果から最大値を求める処理を実行するという意味を、事前に秘匿処理部120とアプリケーション拡張部200とで定義しておく、文字列表現と実行する処理の対応表を用意し、この情報を共有して対応する。ここでは文字列で表現したが、別の表現方法でもかまわない。
暗号処理対応したアプリケーション300は、受け取った文字列データをデータベースの処理結果としてそのまま利用する。このため、特にデータに対する処理がない場合はアプリケーション300がユーザシステム100に返す応答の一部として利用する(ステップS7200)。受け取ったデータベース処理結果に何かしらの演算・処理を施す場合は、その部分の処理はアプリケーション300のオリジナル処理ではなくアプリケーション拡張部200のアプリケーション処理拡張部230に処理が委譲される。具体的にはステップS3200と同様の処理を実行する。この処理で暗号データに対する処理が、例えば文字列として表現される(ステップS8100)。アプリケーション300としては、通常通り処理を実行できたものとしてユーザシステム100に応答を返す(ステップS7200)。こうして、暗号データ及び暗号データに対する処理は、例えば文字列化されてユーザシステム100に通知される。
図13は、アプリケーション処理拡張部200を介して実行されたアプリケーション300の処理結果を受け取った秘匿処理部120の処理ステップS9000の詳細フローである。
まず、暗号処理対応したアプリケーション300から戻ってきた処理結果は、通信処理部130から秘匿処理部120内部のデータ検出部121に通知される。ここでは、アプリケーション300から通知された処理結果から、暗号データを検出する(ステップS9100)。ここで暗号データを検出した場合、暗号処理部122にそのデータを送って復号し(ステップS9200)、応答データにある元々のデータを復号したデータで書き換える(ステップS9300)。これが、暗号データが存在する間、繰り返す。
なお、図13では一つの暗号データを検出するたびに復号する処理になっているが、応答データ内の全暗号データを検出した上でまとめて復号処理依頼をしてもよい。
全暗号データが復号できた後、応答データ内にアプリケーション300側で処理できなった暗号データに対する処理がなければ、復号したデータに置き換えた応答データをユーザインタフェース110に送信して処理を終了する。アプリケーション処理拡張部200にて暗号データに対する処理を別処理に置き換えた場合、このアプリケーション側で未処理であった処理を実行する(ステップS9400)。そして、未実施処理がなかった場合と同様、この処理結果をユーザインタフェース110に送信して秘匿処理部120としては処理を終了する。
以上の処理ステップを実行することにより、外部環境にあるアプリケーション300はユーザシステム100が利用している暗号方式を全く意識することなく、暗号データを処理することができる。
以下、より具体的な処理例として「特定年齢における平均体重を算出する」「特定年齢における平均BMIを算出する」場合のデータが変化する例を図14、図15に示し、上記の処理フローについて説明する。なお、図1記載のアプリケーション300はWebアプリケーションとして提供されており、ユーザが指定した項目(身長、体重、年齢、…)に対し、指定した処理(合計、平均、BMI平均、最大値、最小値、…)を実施する単純なアプリケーションとする。
また、データは暗号化状態でも検索可能な暗号方式で暗号化されているものとし、データベース400には個人情報として、身長、体重、年齢、性別などの情報が暗号化されて格納されているものとする。アプリケーション300からデータベース400にはSQLでアクセスし、データベース400に対する暗号処理(ここでは、データの一致確認処理)はUDFとして実現されているものとする。また、図14、図15ではデータが暗号化されていることを示すため「{}」で平文データを囲って表現する。
図14は「特定年齢における平均体重を算出する」場合の処理を説明したものであり、平均処理自体はSQLで提供される「AVG」関数を利用して実現できる。この例では、暗号データに対してSQL関数処理が必要な場合の処理方法について説明する。
まず、ユーザがブラウザを操作してアプリケーションに「30歳の人の体重を平均する」よう指示する(ステップS1000)。図8の例では、HTTPのGETメソッドでデータなどを送信した例だが、POSTで送信してもよく、YAML、JSONなどの形式で送信してもよい。ここでは「kind」に処理種別、「column」に平均対象のデータ、「age」に処理対象を限定する年齢情報が設定されている。
これを受け取った秘匿処理部120は暗号化データ対応表150を参照してどのパラメータを暗号化するかを確認し、暗号化する(ステップS2000)。
暗号化されたデータを受け取ったアプリケーション300は、そのデータをそのまま利用してデータベース400に問い合わせるためのSQLを生成する(ステップS3000)。
ここで暗号処理対応表240を参照して、平均を算出するSQL関数「AVG」の暗号対応関数の有無を確認する。対応関数が存在する場合、「AVG」の部分をその関数に置き換えてSQL文をデータベースに通知する。対応関数が存在しない場合は、この暗号方式では処理できないSQL関数がアプリケーションから要求されたということになる。この場合、アプリケーション拡張部からユーザシステムへ入出力部280を経由して、処理できなかったのがどのSQL関数に対応する処理なのかを示す情報と暗号種別(Encryption Type)を送付することにより、処理ができなかった理由をエラーとして知らせてもよい。ユーザはユーザシステムのユーザインタフェース110を通して理由を参照し、適切な対策を実施する。以下では、「AVG」の暗号対応関数が存在しない場合にエラーを通知せず、既存処理拡張する方法の一例について説明する。暗号処理対応表240を参照した結果「AVG」が利用できないため、データベース処理拡張部210がSQL文から「AVG」を削除し、単純に対象テーブルから全エンティティの体重データを取得するようSQL文を変更する。処理できなかった「AVG」は変換処理記憶部250で記憶しておく。また、暗号処理表240を参照して呼び出すUDF名称などを取得し(ここでは「UDF」という文字列で表現)、それを呼び出すようにSQL文を変更する。必要であればカラム名・テーブル名の暗号化・別名への変更も実施する。このSQL文変更処理は暗号処理表240に記載されている処理を呼び出すことで対応してもよい(ステップS4000)。データベース400は変更されたSQLを受け取り、その実行結果を返す(ステップS5000)。
その結果を受け取るデータベース処理拡張部210は、変換処理記憶部250を確認してSQL関数「AVG」が実行できなかったこと把握する。これが処理できなかったことを示すため、結果として受け取った体重情報を文字列化し、それを「平均」することを示す印をつける(ここでは「AVG」という語句を先頭につけることで表現)(ステップS6000)。
アプリケーション300は、データベース400から戻ってきた値は既に平均化された体重の値と認識して処理するが、実際には文字列として返ってきているため、そのままでは処理できない。このため、アプリケーション処理拡張部230が変更した処理を呼び出す。この例の場合、データベース400から戻ってくる値は平均値であるため「数値」であるはずだが、この部分を「文字列」として扱うように変更された処理を実行する(ステップS8000)。こうしてアプリケーション300での処理は終了し、ブラウザに表示させるHTML文書を処理結果としてユーザシステム100に返す(ステップS7000)。
ユーザシステム100に通知されたHTML文書には、文字列化された「平均処理」が含まれているため、秘匿処理部120のデータ検出部121でこれを検出する。そして暗号データを復号し、その後、アプリケーション300側で処理できなかった平均処理を実行してHTML文書を更新する(ステップS9000)。
こうして、秘匿処理部120にて暗号データは平文化され、アプリケーション側で処理できなかった処理も実行されて、ユーザインタフェース110であるブラウザに通知されて表示される(ステップS10000)。
図15は「特定年齢における平均BMIを算出する」場合の処理を説明したものである。基本的な処理の流れは「特定年齢における平均体重を算出する」と同様だが、SQL関数は利用されておらず、アプリケーション内部で暗号データに対する演算を実施している点が異なる。この例では、暗号データに対してアプリケーション内部処理の変更が必要な場合の処理方法について説明する。
まず、ユーザがブラウザ操作によってアプリケーション300にデータと処理方法を通知する。この通知されたデータを暗号化してアプリケーション300に送信し、アプリケーション処理拡張部により暗号方式に対応したSQL文を生成してデータベース400に通知して結果を得るまでの処理は、平均体重を算出する場合と全く同様である。ただ、この例ではSQL関数を利用していないため、データベース内の暗号データを処理するためのUDFを呼び出すためにSQLを変更する以外の変更はなく、データベース400の処理結果もそのまま利用する(ステップS1000~S6000)。
アプリケーション300は、戻ってきた値を使ってBMIを算出する演算を実施する。しかし、実際に戻ってきた値は暗号化されているため処理できない。そこで、アプリケーション処理拡張部230が暗号処理対応表240を参照して暗号データへの演算を実現する暗号対応関数または処理変更用のスクリプトなどが存在する場合は、その関数に置き換えた上で処理を実行してアプリケーションに返す。暗号対応関数が無い場合はSQL関数の置換と同様、エラーを返してユーザに通知してもよい。このときユーザから要求があった処理のうち処理できなかったのがどのSQL関数に対応する処理なのかを示す情報と暗号種別(Encryption Type)をユーザシステムへ入出力部280を経由して送付し、ユーザがユーザインタフェース110から参照するようにすれば、ユーザはエラーに対する適切な対策を講じることができる。
以下ではSQL関数の場合と同様、既存処理を拡張する場合を説明する。このとき、暗号対応関数が存在しないため暗号データに対する処理そのものをユーザシステム100に通知した上で処理する必要がある。例えば、暗号データに対する演算を文字列化するよう拡張された処理を呼び出す。また、文字列化された処理は秘匿処理部120側で処理することを示す印をつける(ここでは文字列化し「PROC」という語句を先頭につけることで表現)(ステップS8000)。
平均体重の場合と同様、アプリケーション300としては問題なく演算できたものとして実行した処理結果をユーザシステム100に返す(ステップS7000)。
以降の処理は平均体重の場合と同様に処理を進めて、秘匿処理部120にてデータの復号と文字列化されたBMI算出処理を実行し、ユーザインタフェース110に応答を返す。こうして、アプリケーション内部処理で暗号データを扱う場合も、アプリケーションは意識することなく暗号データに対する処理を実現できる。
なお、上記2つの例では、ブラウザから通知したデータをそのままSQLに利用していたが、実際にはアプリケーション側で何かしら演算を施してその結果をSQL文に利用する場合がある。このときの処理は基本的にステップS8000と同様であり、処理としては図11のステップS3300~ステップS3800の処理に対応する。したがって、このような場合でも問題なく暗号データを扱うことが可能である。
また、以上の例では、アプリケーション300側で暗号データに対する処理は文字列化して秘匿処理部120で処理する例について説明したが、別の実現方法の例として、ユーザシステム100側に返す処理を文字列ではなくJavaScript(登録商標)化してユーザシステム100に返してもよい。このとき、暗号データは秘匿処理部120内で復号させて、JavaScript化した暗号データに対する処理はユーザインタフェース110として利用するブラウザで実行させればよい。さらに以上の実施例では、アプリケーションのソースコードを書き換えるイメージで説明したが、JavaやC言語などのバイナリイメージを利用するもので実施してもよい。
以上はユーザシステム100、アプリケーション拡張部200、アプリケーション300、データベース400がそれぞれ別の環境で動作する環境についての例であった。別の実施例として、アプリケーション拡張部200とアプリケーション300がユーザシステム100内に存在してデータベース400のみが外部にあるもの、データベース400がユーザシステム内にありアプリケーション拡張部200とアプリケーション300がユーザシステム100の外部にある構成も考えられる。これらの構成を図16に示す。データベース100が外部にあるものを構成800、アプリケーションが外部にあるものを構成900とする。このように自由な構成を選択できるため、データの秘匿度合いやシステム構成に合わせた構成にすることが可能である。
構成800の場合、アプリケーション300が生データを扱えるユーザシステム100内で動作するため、アプリケーション300の内部処理を変換する必要はない。ただし、データベースに対する処理については変更する必要がある。データ検出部121および暗号化データ対応表150は、ユーザインタフェース110とアプリケーション300間でのやり取りには利用せず、秘匿処理部120からデータベース400とのやり取りで利用する。つまり、暗号データ対応表150には、利用するデータベースとテーブル名・カラム名と暗号方式の対応するものになる。
ユーザシステム内部のような外部から隔離された環境で動作するアプリケーションを開発する場合、隔離環境を維持するため、その開発者はユーザ自身、あるいはユーザから委託を受けた者のみになる。また、暗号を利用する場合、開発者はその暗号方式が利用可能な演算を意識して実装する必要があり、アプリケーションの可搬性が落ちてしまう。だが、本発明のアプリケーション拡張部200を導入することにより、アプリケーション開発者はその暗号方式を意識することなく開発することが可能になる。この場合の処理フローは、処理順序が変更になったことを除けば概ね第一の実施例と同じ手順であるが、ユーザインタフェース110→アプリケーション300→アプリケーション拡張部200→秘匿処理部120→データベース400という処理順となる。
構成900の場合、アプリケーション300で実行している暗号データに対する処理を、例えば文字列化やJavaScript化してユーザシステム100で実行できれば実現できる。一方、データベース400がユーザシステム100内にあるため、データベースに対する処理はユーザシステム内部では暗号化を意識することなく利用できる。このため、第一の実施例と比べると、アプリケーション拡張部200内のデータベース処理拡張部210、変換処理記憶部250、データベース向け暗号処理管理表270とデータベース400内の暗号処理部410は不要となる。処理フローは、ユーザインタフェース110→秘匿処理部120→アプリケーション300→アプリケーション拡張部200→アプリケーション300→データベース400と、アプリケーション300が外でデータベース400がユーザシステム100内にあるため、アプリケーション拡張部200を何度か介して処理をすることになる。各処理部における処理は他の構成と基本的に同様である。
以上の実施例は、アプリケーション拡張部200というフレームワークを利用して本発明の特徴を実現する例であった。このように動的、あるいはアプリケーション300のデプロイ時にアプリケーション拡張部200によるアプリケーション300の処理内容を変更するのではなく、事前に、アプリケーション拡張部200が実施する処理を施したアプリケーションをアプリケーション開発者側で用意し、これを利用することで本方式を実現することもできる。イメージとしては、ソースコードをコンパイルして対応環境に合わせた実行可能ファイルを作成する方法と同じである。
また、上記全ての実施例において、ユーザシステム100外部のシステムを第三者がサービスとして提供する場合が考えられる。このとき、サービス提供者が提供している暗号方式にしか利用できない場合も発生しうる。このため、ユーザが利用している、あるいは利用したい暗号方式とサービスで利用できる暗号方式が異なる場合は、アプリケーション300に最初にアクセスしたタイミング、デプロイしたタイミングなど適切なタイミングで、ユーザに通知する仕組みを備えてもよい。
100-ユーザシステム、110-ユーザインタフェース、120-秘匿処理部、121-データ検出部、122-暗号処理部、130-通信処理部、140-鍵管理部、150-暗号化データ対応表、200-アプリケーション拡張部、210-データベース処理拡張部、220-データ処理検出部、230-アプリケーション処理拡張部、240-暗号処理対応表、250-変換処理記憶部、260-パラメータ操作記憶表、270-データベース向け暗号処理管理表、300-アプリケーション、400-データベース、410-暗号処理部
Claims (12)
- データベースとネットワークで接続されたアプリケーション拡張部を備える暗号処理システムであって、
前記データベースは平文データを暗号化した暗号化データを格納し、
前記アプリケーション拡張部は、
アプリケーションからの前記データベースへの前記データの処理要求を受け付ける処理要求受付部と、
暗号処理対応表を参照し、処理要求に含まれる平文データ処理関数に対応する暗号化データ処理関数が前記暗号処理対応表に格納されていた場合は前記処理要求の平文データ処理関数を暗号化データ処理関数に変更し、
処理要求に含まれる平文データ処理関数に対応する暗号化データ処理関数が前記暗号処理対応表に格納されていない場合は平文データ処理関数が処理を実行するのに必要な暗号化データを要求する処理に変更し、
変更された処理要求を前記データベースへ送付するデータベース処理拡張部と、
前記データベースから受け取った暗号化データ処理関数の処理結果と、平文データ処理関数が処理を実行するのに必要な暗号化データを含む処理要求の実行結果をユーザシステムへ返す実行結果返信部を備える暗号処理システム。 - 前記ユーザシステムは、平文データ処理関数が処理を実行するのに必要な暗号化データを含む処理要求の実行結果を受け取ったとき、前記受け取った暗号化データを復号し、復号した暗号化データを用いて暗号化データ処理関数がない平文データ処理関数の処理を実行する暗号処理部を備えることを特徴とする請求項1に記載の暗号処理システム。
- 前記ユーザシステムは、データと当該データの暗号化方式を対応づけて格納した暗号化データ対応表を備え、
前記受け取った暗号化データを復号化するとき暗号化データ対応表を参照し暗号化データに対応した暗号化方式に対応した復号を行うことを特徴とする請求項2に記載の暗号処理システム。 - 平文データ処理関数の実行に必要な演算処理内容を格納する変換処理記憶部を備え、
前記実行結果返信部は、平文データ処理関数に対応する暗号化データ処理関数が前記暗号処理対応表に格納されていない場合、前記変換処理記憶部を参照し、平文データ処理関数の処理に必要な演算処理を前記ユーザシステムへ通知することを特徴とする請求項1に記載の暗号処理システム。 - 前記ユーザシステムは、アプリケーションとアプリケーションで処理するデータを対応づけてアプリケーションの実行を前記アプリケーション拡張部へ要求することを特徴とする請求項3に記載の暗号処理システム。
- 前記実行結果返信部は、平文データ処理関数に対応する暗号化データ処理関数が前記暗号処理対応表に格納されておらず、変換処理記憶部に平文データ処理関数の処理に必要な演算処理も格納されていないとき、処理できない要求であることを示す情報をユーザシステムへ返することを特徴とする請求項4に記載の暗号処理システム。
- データベースとネットワークで接続されたアプリケーション拡張部を備える暗号処理システムの暗号処理方法であって、
前記データベースは平文データを暗号化した暗号化データを格納し、
前記アプリケーション拡張部は処理要求受付部とアプリケーション処理拡張部と実行結果返信部を備え、
処理要求受付部がアプリケーションからの前記データベースへの前記データの処理要求を受け付け、
アプリケーション処理拡張部が暗号処理対応表を参照し、処理要求に含まれる平文データ処理関数に対応する暗号化データ処理関数が前記暗号処理対応表に格納されていた場合は前記処理要求の平文データ処理関数を暗号化データ処理関数に変更し、
処理要求に含まれる平文データ処理関数に対応する暗号化データ処理関数が前記暗号処理対応表に格納されていない場合は平文データ処理関数が処理を実行するのに必要な暗号化データを要求する処理に変更し、
実行結果返信部が変更された処理要求を前記データベースへ送付するデータベース処理拡張部と、
前記データベースから受け取った暗号化データ処理関数の処理結果と、平文データ処理関数が処理を実行するのに必要な暗号化データを含む処理要求の実行結果をユーザシステムへ返す暗号処理方法。 - 前記ユーザシステムは、平文データ処理関数が処理を実行するのに必要な暗号化データを含む処理要求の実行結果を受け取ったとき、前記受け取った暗号化データを復号し、復号した暗号化データを用いて暗号化データ処理関数がない平文データ処理関数の処理を実行する暗号処理部を備えることを特徴とする請求項7に記載の暗号処理方法。
- 前記ユーザシステムは、データと当該データの暗号化方式を対応づけて格納した暗号化データ対応表を備え、
前記受け取った暗号化データを復号化するとき暗号化データ対応表を参照し暗号化データに対応した暗号化方式に対応した復号を行うことを特徴とする請求項8に記載の暗号処理方法。 - 平文データ処理関数の実行に必要な演算処理内容を格納する変換処理記憶部を備え、
前記実行結果返信部は、平文データ処理関数に対応する暗号化データ処理関数が前記暗号処理対応表に格納されていない場合、前記変換処理記憶部を参照し、平文データ処理関数の処理に必要な演算処理を前記ユーザシステムへ通知することを特徴とする請求項7に記載の暗号処理方法。 - 前記ユーザシステムは、アプリケーションとアプリケーションで処理するデータを対応づけてアプリケーションの実行を前記アプリケーション拡張部へ要求することを特徴とする請求項9に記載の暗号処理方法。
- 前記実行結果返信部は、平文データ処理関数に対応する暗号化データ処理関数が前記暗号処理対応表に格納されておらず、変換処理記憶部に平文データ処理関数の処理に必要な演算処理も格納されていないとき、処理できない要求であることを示す情報をユーザシステムへ送付することを特徴とする請求項10に記載の暗号処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/558,501 US20180082078A1 (en) | 2015-03-19 | 2016-03-15 | Confidential Data Processing System |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015055580A JP6186387B2 (ja) | 2015-03-19 | 2015-03-19 | 秘匿データ処理システム |
JP2015-055580 | 2015-03-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016148147A1 true WO2016148147A1 (ja) | 2016-09-22 |
Family
ID=56918905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2016/058178 WO2016148147A1 (ja) | 2015-03-19 | 2016-03-15 | 秘匿データ処理システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20180082078A1 (ja) |
JP (1) | JP6186387B2 (ja) |
WO (1) | WO2016148147A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106295267B (zh) * | 2015-06-09 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 一种访问电子设备的物理内存中私密数据的方法和装置 |
US10235218B2 (en) * | 2016-05-03 | 2019-03-19 | International Business Machines Corporation | Automatic correction of cryptographic application program interfaces |
JP2018128602A (ja) * | 2017-02-09 | 2018-08-16 | 日本電気株式会社 | 暗号化データベース管理装置、暗号化データベース管理方法、暗号化データベース管理プログラムおよび暗号化データベース管理システム |
US10666422B2 (en) * | 2017-12-29 | 2020-05-26 | Shenzhen China Star Optoelectronics Technology Co., Ltd. | Data processing method |
US11487885B2 (en) * | 2018-01-31 | 2022-11-01 | Salesforce, Inc. | Enabling and validating data encryption |
CN110389753B (zh) * | 2019-06-06 | 2024-01-23 | 五八有限公司 | 原生应用的链式调用方法、装置、电子设备及存储介质 |
JP6671701B1 (ja) * | 2019-07-19 | 2020-03-25 | Eaglys株式会社 | 演算装置、演算方法、演算プログラム、および演算システム |
DE112022005259T5 (de) * | 2022-05-26 | 2024-08-14 | Mitsubishi Electric Corporation | Speicherprogrammierbare Steuerung, Steuerungsverfahren und Programm |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013026954A (ja) * | 2011-07-25 | 2013-02-04 | Nec Corp | 暗号データ検索システム、装置、方法及びプログラム |
WO2013069776A1 (ja) * | 2011-11-11 | 2013-05-16 | 日本電気株式会社 | データベース暗号化システムと方法及びプログラム |
JP2013152512A (ja) * | 2012-01-24 | 2013-08-08 | Mitsubishi Electric Corp | 情報処理装置及び情報処理方法及びプログラム |
WO2014092180A1 (ja) * | 2012-12-13 | 2014-06-19 | 日本電気株式会社 | 中間サーバ、データベース問い合わせ処理方法およびプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797342B2 (en) * | 2004-09-03 | 2010-09-14 | Sybase, Inc. | Database system providing encrypted column support for applications |
JP6048414B2 (ja) * | 2011-11-11 | 2016-12-21 | 日本電気株式会社 | データベース装置と方法及びプログラム |
US9213867B2 (en) * | 2012-12-07 | 2015-12-15 | Microsoft Technology Licensing, Llc | Secure cloud database platform with encrypted database queries |
US9495545B2 (en) * | 2014-11-13 | 2016-11-15 | Sap Se | Automatically generate attributes and access policies for securely processing outsourced audit data using attribute-based encryption |
-
2015
- 2015-03-19 JP JP2015055580A patent/JP6186387B2/ja active Active
-
2016
- 2016-03-15 WO PCT/JP2016/058178 patent/WO2016148147A1/ja active Application Filing
- 2016-03-15 US US15/558,501 patent/US20180082078A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013026954A (ja) * | 2011-07-25 | 2013-02-04 | Nec Corp | 暗号データ検索システム、装置、方法及びプログラム |
WO2013069776A1 (ja) * | 2011-11-11 | 2013-05-16 | 日本電気株式会社 | データベース暗号化システムと方法及びプログラム |
JP2013152512A (ja) * | 2012-01-24 | 2013-08-08 | Mitsubishi Electric Corp | 情報処理装置及び情報処理方法及びプログラム |
WO2014092180A1 (ja) * | 2012-12-13 | 2014-06-19 | 日本電気株式会社 | 中間サーバ、データベース問い合わせ処理方法およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20180082078A1 (en) | 2018-03-22 |
JP2016177400A (ja) | 2016-10-06 |
JP6186387B2 (ja) | 2017-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6186387B2 (ja) | 秘匿データ処理システム | |
US20210157938A1 (en) | Methods, media, apparatuses and computing devices of user data authorization based on blockchain | |
JP6559252B2 (ja) | アプリケーション・プログラミング・インタフェース・プロキシ・サービスを提供するエンドポイント管理システム | |
JP6815385B2 (ja) | アプリケーションのコード難読化のためのシステムおよび方法 | |
US9361085B2 (en) | Systems and methods for intercepting, processing, and protecting user data through web application pattern detection | |
US9495544B2 (en) | Secure data transmission and verification with untrusted computing devices | |
JP2022500712A (ja) | ニューラルネットワークモデルの暗号化方法及び装置、記憶媒体 | |
US9397981B2 (en) | Method and system for secure document exchange | |
US9166781B2 (en) | Key change management apparatus and key change management method | |
US8290152B2 (en) | Management system for web service developer keys | |
KR102673882B1 (ko) | 데이터 암호화 방법 및 장치, 데이터 복호화 방법 및 장치 | |
US11924270B2 (en) | Method and system for transferring data | |
US11025742B2 (en) | Dynamic link processing engine | |
CN112182635A (zh) | 一种联合建模的实现方法、装置、设备和介质 | |
US20210092134A1 (en) | Threat intelligence information access via a DNS protocol | |
CN114048266A (zh) | 数据库数据的同步方法、装置和计算机可读存储介质 | |
JP2015090993A (ja) | 暗号制御装置、暗号制御方法、及びプログラム | |
US20140304504A1 (en) | Logical network separation method and apparatus | |
US10158662B1 (en) | Scanning for and remediating security risks on lightweight computing devices | |
JP2016040698A (ja) | テイント解析装置、テイント解析方法、およびプログラム | |
Masi et al. | Security analysis of standards-driven communication protocols for healthcare scenarios | |
JP6099489B2 (ja) | 情報処理装置及び情報処理方法及びプログラム | |
JP2018041188A (ja) | アドレス管理装置、データ管理システム及びプログラム | |
GB2549791A (en) | System, method, and program for storing and controlling access to anonymous behavioural data | |
US10530812B2 (en) | Methods and apparatuses for providing configurable security models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16764977 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 15558501 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 16764977 Country of ref document: EP Kind code of ref document: A1 |