The present disclosure relates to a control method, a non-transitory computer-readable recording medium storing a control program, and an information processing device.
With the advancement of techniques for the information and communication technology (ICT), a variety of techniques have been developed to support business. Then, when the business flow is executed, the efficiency of the business can be improved by using the variety of techniques for supporting the business.
Meanwhile, cybercrime is on the rise, and there is a growing interest in techniques for executing the business with high reliability.
In this regard, techniques relating to protecting or controlling document components are known (for example, Patent Document 1).
Examples of the related art include [Patent Document 1] Japanese Laid-open Patent Publication No. 2005-56418.
According to an aspect of the embodiments, there is provided a control method executed by a computer. In an example, the control method includes: when accepting execution instructions for a first task and a second task, adding an operation code that causes execution of an operation, to a processing program that corresponds to the first task, and generating a first program that includes the processing program and the operation code; encrypting a second program that corresponds to the second task to generate encrypted data, by using an operation result obtained based on the execution of the operation; and transmitting the first program and the encrypted data to a device that corresponds to the first task.
The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention.
However, for example, there is a case where the execution order of tasks is prescribed in the business flow. In this case, for example, in executing the business flow, it is sometimes difficult to execute the business with high reliability. For example, even if the execution result of the business flow is obtained, there is a case where it is not known whether the obtained execution result has been obtained by certainly executing the tasks in the prescribed order.
In one aspect, an object of the present disclosure is to provide a technique for executing a business flow with high reliability.
Hereinafter, several embodiments of the present disclosure will be described in detail with reference to the drawings. Note that corresponding elements in a plurality of drawings will be denoted with the same reference sign.
As described above, with the advancement of techniques for ICT, a variety of techniques have been developed to support business. Then, when the business flow is executed, the efficiency of the business can be improved by using the variety of techniques for supporting the business.
As an example, groupware equipped with a workflow system or the like that supports the execution of business flow within the company has been used. In addition, as another example, there is known a mechanism called robotic process automation (RPA) that automates tasks by software robots. By introducing RPA, the robots can be caused to execute processes that were previously performed manually. Then, by causing software to execute at least a part of the execution of the business as a proxy, improvement in the efficiency and the productivity of the business may be achieved.
However, for example, when the business is executed with the support of such software, it is difficult to execute the business with high reliability in some cases. For example, there is a case where the execution order of steps is prescribed in a business flow. In this case, for example, even if the execution result of the business flow is obtained, there is a case where it is not known whether the obtained execution result has been obtained by certainly executing the tasks in the prescribed order.
For example, if a terminal that executes the business flow is tampered with by a cyberattack or the like, it is sometimes difficult to detect an unauthorized work even if being performed. As one example, a replay attack can be mentioned. In the replay attack, a log output by a terminal that executes a step of a business flow is stored, and the same log is transmitted when the step is executed the next time even though the step is not executed. When undergoing such a replay attack, a result that gives an impression as if the step would be working correctly is output even though the step has not been executed. In this case, it is difficult to detect that the step of the business flow has not actually been executed, even by checking at the execution result of the business flow.
In addition, for example, in RPA, the robot in the next step often uses the result obtained by the robot executing the previous step. Therefore, the desired result will sometimes not be obtained if each step of the flow is not executed properly in order.
For this reason, there is a demand for the provision of a technique that can guarantee that the execution result has been obtained by certainly executing the steps in the prescribed order, for example, when the execution result of the business flow is obtained.
In the embodiments described below, for example, when execution instructions for a first task and a second task are accepted, an operation code that causes execution of an operation is added to a program corresponding to the first task, and a first program is generated. In addition, encrypted data is generated by encrypting a second program corresponding to the second task, using the operation result obtained based on the execution of the operation. Then, the first program and the encrypted data generated in this manner are transmitted to the device corresponding to the first task.
For example, by executing encryption as described above, a device that receives the first program and the encrypted data is not allowed to decrypt the encrypted second program until executing the first program to execute the first task and acquiring the operation result. Accordingly, the execution of the first program can be forced before the execution of the second program. Then, when the second task can be executed by executing the second program, it may be guaranteed that the first task has been completed. Hereinafter, the embodiments will be described in more detail.
Note that, in the following embodiments, although the business flow will be taken as an example to describe the embodiments, the object to which the embodiments are applied is not limited to the business flow, and the embodiments may be applied to other processes in which it is demanded to guarantee the order of execution.
Note that, for example, the separation between steps in the business flow may be executed based on the person in charge who executes the task, the terminal 102 where the task is performed, and the like. In addition, the separation between steps in the business flow according to the embodiment is not limited to this, and separation may be performed based on other information.
For example, in the case of the document 500 for invoice in
In addition, in the program of the procedure, a mark may be appended to the code subject to proof of execution. In the example in
Note that the code subject to proof of execution may be, for example, a code as the object desired to be proven that the code has been executed in the execution of the procedure. In one example, the code subject to proof of execution may be a code that is supposed to be completed in order to advance the business flow to the next step. For example, in the example of approval in
In addition, in the process information 600, the procedure does not have to describe the information on the notification destination to which the data is to be transmitted after the process is completed. In one example, the control unit 201 may specify the information on the notification destination based on the information regarding the person in charge, the destination, and the like of the next step of the business flow in the business information 400 and write the specified information in the procedure.
Hereinafter, the encapsulated data transmission process according to the embodiment will be described with reference to
In S801, the control unit 201 of the server 101 accepts the execution instruction for a task from the terminal 102 used by the person in charge of the task. The person in charge of the task may, for example, be coupled to the server 101 via the terminal 102 and acquire, from the server 101, the template for a document corresponding to the task to be executed registered in the business information 400. Then, the person in charge may transmit a document obtained by filling in information in the acquired template for the document, to the server 101 via the terminal 102, to input the execution instruction for the task to the server 101. When the control unit 201 of the server 101 accepts the input of the execution instruction for the task, the flow proceeds to S802.
In S802, the control unit 201 of the server 101 attaches an electronic signature to the document included in the accepted execution instruction for the task. The electronic signature may be an electronic seal (e-seal) issued by the server 101 in one example.
In S803, the control unit 201 of the server 101 specifies the business flow corresponding to the received execution instruction for the task. For example, the control unit 201 may specify the business flow corresponding to the document included in the accepted execution instruction for the task, from the business information 400. For example, when the document included in the execution instruction for the task accepted in S801 is an invoice, the control unit 201 may read the business flow corresponding to the invoice from the business information 400.
In S804, the control unit 201 assigns procedures to each step of the read business flow. For example, the control unit 201 may specify, from the process information 600, the procedures corresponding to the processes for each step of the business flow read from the business information 400 to assign the specified procedures to each step.
As an example, in the business flow for invoice in the business information 400, (step 1) and (step 2) are approval processes, and the control unit 201 may assign the procedure corresponding to the approval process in the process information 600. In addition, in the business flow for invoice, (step 3) is a sending process, and the control unit 201 may assign the procedure corresponding to the sending process in the process information 600.
In S805, the control unit 201 inputs information to the procedures corresponding to each step. For example, the control unit 201 may input the information on the notification destination to the procedure.
For example, the procedure in
Note that, in the above, an example is described in which the information on the notification destination for the person in charge of the business partner is acquired from the notification destination information 700, but the embodiment is not limited to this. In another example, the control unit 201 may acquire the information on the notification destination for the person in charge of the business partner, from the filled document accepted in S801.
In S806, the control unit 201 generates a challenge value for the procedure. Note that the challenge values may be generated for each of the procedures corresponding to each step, for example. In addition, in another example, a challenge value common to a plurality of procedures may be used. The challenge value can be acquired, for example, from a function that outputs different results each time the function is executed. A random function, a shuffle function, or the like can be used as an example of the function that outputs different results each time the function is executed. The challenge value may be a random number in one example.
In S807, the control unit 201 generates the proof-of-execution operation code using the challenge value and adds the generated proof-of-execution operation code to the procedure to generate an additional procedure. Accordingly, the additional procedure includes, for example, the processing program of the procedure and the proof-of-execution operation code. For example, in
In addition, for example, the control unit 201 specifies the position of the code subject to proof of execution, which satisfies a predetermined condition, in the procedure and adds the proof-of-execution operation code to the procedure according to the specified position of the code subject to proof of execution to generate the additional procedure. In one example, the control unit 201 may add the proof-of-execution operation code to the position of the mark indicating the position of the code subject to proof of execution, by replacing the mark with the proof-of-execution operation code. Note that deleting the mark may make it difficult to specify where in the procedure the code subject to proof of execution is located and may achieve improvement in the security.
For example, in
In addition, in the program in
For example, in the program in
Note that in the process in S807, the control unit 201 may add different proof-of-execution operation codes to the procedures for each step. This may enhance the security strength. However, in another example, the control unit 201 may add a proof-of-execution operation code common to the procedures for a plurality of steps.
Subsequently, in S808, the control unit 201 generates a key using the operation result based on the execution of the operation indicated by the proof-of-execution operation code added to the procedure. For example, the control unit 201 may acquire the operation result by executing at least the proof-of-execution operation code from the additional procedure generated in S807 and generate the key using the operation result. In one example, the control unit 201 may use the operation result as it is as the key. In addition, in another example, the control unit 201 may generate the key with a predetermined algorithm using the operation result. For example, the control unit 201 may acquire a hash value of the operation result and use the obtained hash value to generate the key with a common key encryption algorithm such as advanced encryption standard (AES)256, RC4, and data encryption standard (DES). Note that, for example, a hash function such as secure hash algorithm (SHA)256, SHA2, and message digest (MD)5 can be used to acquire the hash value.
In S809, the control unit 201 executes an encapsulation process using the generated key. Then, in S810, the control unit 201 transmits encapsulated data obtained by the encapsulation process to the terminal that is to execute the first step of the business flow, and this work flow ends. Note that the control unit 201 may acquire the destination for the terminal that is to execute the first step of the business flow, from the notification destination information 700, for example.
In addition, in the encapsulation process executed in S809, the control unit 201 may encrypt the procedure for the next step in the business flow, for example, using the key generated for the procedure for the step. For example, when encryption is executed in this manner, the operation result obtained in the execution of the procedure can be used to generate a key, and the generated key can be used to decrypt the procedure for the next step.
In addition, for the final step of the business flow in the encapsulation process, the control unit 201 may encrypt the document, using the key generated for the procedure for the final step. For example, when encryption is executed in this manner, the operation result obtained in the execution of the procedure for the final step can be used to generate a key, and the generated key can be used to decrypt the document.
In addition, the proof-of-execution operation code to be added to the procedure may be added such that, as described above, when the code subject to proof of execution is executed in the execution of the procedure, the operation result that successfully decrypts the procedure for the next step is obtained. On the other hand, the proof-of-execution operation code to be added to the procedure may be added such that, when the code subject to proof of execution is not executed in the execution of the procedure, the operation result that successfully decrypts the procedure for the next step is no longer obtained. Then, for example, it is assumed that the procedure for the next step is successfully decrypted using the operation result obtained in the execution of the procedure, and the procedure for the next step is now permitted to be executed. In this case, it may be proven that the code subject to proof of execution has been certainly executed in the procedure from which the operation result was obtained.
Note that the proof-of-execution operation code may be added to the procedure such that the code subject to proof of execution is sandwiched in the procedure, for example, as described above in the explanation of the process in S807. That is, for example, the control unit 201 may add the proof-of-execution operation code to the procedure so as to add an anterior operation code before the position of the code subject to proof of execution and also add a posterior operation code after the position of the code subject to proof of execution. In addition, the operation result that successfully decrypts the procedure for the next step may be obtained, for example, when the operation of the posterior operation code is executed using a primary operation result obtained in the execution of the anterior operation code.
For example, by adding the proof-of-execution operation code to the procedure in this manner, if the procedure for the next step is successfully decrypted using the operation result obtained based on the execution of the proof-of-execution operation code, it may be proven that the code subject to proof of execution has been executed.
Note that the addition of the proof-of-execution operation code to the procedure is not limited to the above example. For example, the proof-of-execution operation code may be added to the procedure in another format that ensures that the operation result that successfully performs decryption is obtained when the code subject to proof of execution is executed, but when the code subject to proof of execution is not executed, the operation result that successfully performs decryption is no longer obtained.
As another example, the proof-of-execution operation code may be added to the procedure so as to execute an operation using the return value of a function included in the code subject to proof of execution. In this case, the return value is obtained if the code subject to proof of execution is executed in the execution of the procedure, but the return value is no longer obtained if the code subject to proof of execution is not executed. Therefore, the operation result can be made different depending on whether or not the code subject to proof of execution has been executed.
Subsequently, an example of the encapsulation process according to the embodiment will be described in further detail with reference to
In S1101, the control unit 201 of the server 101 encrypts the document using the key obtained by using the operation result in S808 for the additional procedure for the final step of the business flow and generates a bytecode of the document. The bytecode may be, for example, data of a byte string obtained by encryption and, in one example, may be represented by ASCII characters. The bytecode may be referred to as, for example, encrypted data. In addition, the encryption object may include the electronic signature of the document attached in S802. Encryption may be executed using, for example, a common key encryption algorithm.
In S1102, the control unit 201 of the server 101 links the bytecode of the document with the procedure for the final step as the object to be processed. In one example, the control unit 201 may store the bytecode in a constant of the procedure, as indicated by (6) in
In S1103, the control unit 201 determines whether or not the step to be processed has a previous step. When the step to be processed has a previous step (YES in S1103), the flow proceeds to S1104.
In S1104, the control unit 201 encrypts the procedure to be processed, using the key obtained by using the operation result in S808 for the additional procedure for the immediately preceding step. Note that the encryption object may include the bytecode of the procedure positioned downstream of the procedure to be processed in the business flow and the bytecode of the document. Encryption may be executed using, for example, a common key encryption algorithm.
In S1105, the control unit 201 links the bytecode obtained in the process in S1104 with the procedure for the immediately preceding step as the object to be processed, and the flow returns to S1103. In one example, the control unit 201 may store the bytecode in a constant of the procedure for the immediately preceding step treated as the object to be processed, as indicated by (6) in
In addition, when there is no step before the step to be processed in S1103 (NO in S1103), this work flow ends, and the flow proceeds to S810.
According to the above work flow in
In addition,
Note that, when receiving the encapsulated data, the terminal 102 that is to execute the step 1 can acquire the operation result 1: 123456 of the step 1, by executing the procedure for the step 1 in the received encapsulated data. Then, the procedure for the step 2 can be acquired by decrypting the bytecode of the procedure for the step 2, using the operation result 1: 123456. Thereafter, by repeating the execution of the procedure and the decryption using the operation result obtained in the execution of the procedure, the document can be finally decrypted. In addition, when the document is successfully decrypted, it may be guaranteed that the codes subject to proof of execution have been executed in the procedures corresponding to each step of the business flow.
An execution process for the steps of the business flow executed by the control unit 301 of the terminal 102 will be described below with reference to
In S1301, the control unit 301 of the terminal 102 starts executing a procedure included in the received encapsulated data. This may cause the control unit 301 of the terminal 102 to execute the task of the step of the business flow corresponding to the procedure. For example, the approval procedure may display the window 1000 on a display screen of the display unit 304 of the terminal 102 to accept the input of the approval instruction and execute the approval task.
Then, in S1302, the control unit 301 of the terminal 102 acquires the key using the operation result based on the execution of the proof-of-execution operation code when executing the procedure.
In S1303, the control unit 301 of the terminal 102 uses the key to decrypt the bytecode. For example, as indicated by (7) of
In S1304, the control unit 301 of the terminal 102 transmits the decrypted data to the destination. The destination of the decrypted data may be written in the procedure in the process in S805 by the server 101, for example. Note that, for example, when the executed procedure includes subsequent steps in the business flow, the decrypted data may include the procedure for the next step and the remaining bytecodes. In addition, for example, when the executed procedure is the final step in the business flow, the decrypted data may include the document and the electronic signature.
As described above, by performing the encapsulation process according to the embodiment, it may be guaranteed that each step of the business flow has been executed in accordance with the execution order, when the document can be acquired from the encapsulated data.
In addition, in the above embodiment, the challenge value is generated each time the business flow is executed, and the proof-of-execution operation code using the challenge value is added to the procedure for the step. Therefore, each time the business flow is executed, the operation result obtained based on the execution of the operation indicated by the proof-of-execution operation code will have a different value, and replay attacks and the like may be dealt with.
Note that, in
In addition, in the above embodiment, an example of proving the execution of one code subject to proof of execution by adding the proof-of-execution operation code to the procedure has been described. However, the embodiment is not limited to this. In another embodiment, a proof-of-execution operation code may be added to the procedure to guarantee that a plurality of codes included in the procedure has been executed in a predetermined order.
For example, in
In addition, in the example in
In this case, when the procedure in
Accordingly, for example, if calanswer: 184536 is obtained as an operation result when the control unit 301 of the terminal 102 executes the procedure in
As described above, according to the embodiment, when the decryption of the encapsulated data is completed and, for example, data such as a document can be extracted, it may be guaranteed that the steps of the business flow have been executed in a desired order and completed.
In addition, according to the embodiment, the execution of a certain step may be forced to be completed before the execution of another step. In other words, if the procedure executed by a certain step is successfully decrypted, it may be guaranteed that the execution of another procedure preceding the certain step has been completed.
In addition, the above embodiment can be applied to the automatic execution of tasks using RPA, for example, by using an RPA robot as a procedure.
In addition, in the above embodiment, the server 101 may provide a service of generating the encapsulated data, for example. In this case, the server 101 may attach an e-seal issued by the server 101 to data finally extracted as a result of decryption, such as a document as an example. This allows a user of the service to interpret that the business flow corresponding to the encapsulated data all has been executed in order as stipulated, if the data to which the e-seal of the server 101 is attached can obtained from the encapsulated data.
Although the embodiments have been described above, the embodiments are not limited to this. For example, the work flows described above are exemplary, and the embodiments are not limited to this. If feasible, the work flows may be executed by changing the order of processes or may additionally include further process, or some processes may be omitted. For example, in one embodiment, the process in S802 described above may be omitted.
In addition, in the process in S808 in the above embodiment, an example in which the operation result is acquired by executing at least the proof-of-execution operation code from the additional procedure and a key is generated using the operation result has been described. However, the embodiment is not limited to this. For example, if the operation contents of the proof-of-execution operation code to be added to the procedure is predefined, the control unit 201 also can execute the operation and acquire the operation result at the time point when the challenge value is generated before the additional procedure is generated. In this case, the process in S808 may be executed before the process in S807.
In addition, in the above embodiment, an example of generating a key by applying a hash function to the obtained operation result has been described, but the embodiment is not limited to this. In another embodiment, the control unit 201 may generate the key by combining other information such as a program of the additional procedure with the operation result before applying the hash function. This may enhance the security strength.
In addition, in the above embodiment, an operation code that executes numerical computation has been taken as an example of the proof-of-execution operation code, but the embodiment is not limited to this. For example, the operations executed by the proof-of-execution operation codes may include other operations, such as character string concatenation. Furthermore, the operation executed by the proof-of-execution operation code may be carried out using a more complex operation, such as cryptographic computation.
In addition, in another embodiment, by, for example, adding a dummy proof-of-execution operation code to the procedure, it may be made such that the correct way as to which functions have to be executed in what order is known only when the processes are actually executed with the correct procedure, for example. This may enhance the security strength.
In addition,
In addition, the object whose execution timing is to be controlled in the embodiment is not limited to the procedure for the next step. The embodiment can be utilized to control the execution timing of any downstream procedure. Furthermore, the embodiments can be utilized to control the execution timing of a plurality of downstream procedures. In this case, for example, the operation result obtained in the execution of the proof-of-execution operation code added to a certain procedure may be used to encrypt the plurality of downstream procedures.
Alternatively, the embodiment can be utilized to control the execution of at least one downstream procedure to start after waiting for the completion of execution of a plurality of upstream procedures. In this case, for example, a plurality of operation results obtained in the execution of the proof-of-execution operation codes added to the plurality of procedures may be used to encrypt at least one procedure downstream of those procedures.
Note that, in the above embodiment, the control unit 201 of the server 101 works as the generation unit 211 in the process in S807, for example. In addition, in the process in S809, the control unit 201 of the server 101 works as the encryption unit 212, for example. In the process in S810, the control unit 201 of the server 101 works as the transmission unit 213, for example.
In addition, in the above embodiment, the control unit 301 of the terminal 102 works as the execution unit 311 in the process in S1301, for example. In addition, in the process in S1304, the control unit 301 of the terminal 102 works as the transmission unit 312, for example.
The processor 1601 may be, for example, a single processor, a multiprocessor, or a multicore processor. By using the memory 1602 to execute, for example, a program describing the procedure of the work flows described above, the processor 1601 may provide some or all of the functions of the control unit 201 of the server 101 or the control unit 301 of the terminal 102 described above. For example, by reading and executing the program stored in the storage device 1603, the processor 1601 of the server 101 works as the generation unit 211, the encryption unit 212, and the transmission unit 213. In addition, by reading and executing the program stored in the storage device 1603, the processor 1601 of the terminal 102 works as the execution unit 311 and the transmission unit 312, for example.
The memory 1602 is, for example, a semiconductor memory and may include a RAM area and a ROM area. The storage device 1603 is, for example, a semiconductor memory such as a hard disk or a flash memory, or an external storage device. Note that the RAM is an abbreviation for random access memory. In addition, the ROM is an abbreviation for read only memory.
The reading device 1604 accesses a removable storage medium 1605 in accordance with an instruction from the processor 1601. For example, the removable storage medium 1605 is implemented by a semiconductor device, a medium to and from which information is input and output by magnetic action, a medium to and from which information is input and output by optical action, or the like. Note that the semiconductor device is, for example, a universal serial bus (USB) memory. In addition, the medium to and from which information is input and output by magnetic action is, for example, a magnetic disk. For example, the medium to and from which information is input and output by optical action is a CD-ROM, a DVD, a Blu-ray disc (Blu-ray is a registered trademark), or the like. The CD is an abbreviation for compact disc. The DVD is an abbreviation for digital versatile disk.
The storage unit 202 of the server 101 and the storage unit 302 of the terminal 102 described above include the memory 1602, the storage device 1603, and the removable storage medium 1605, for example. For example, the storage device 1603 of the server 101 stores the business information 400, the documents 500, the process information 600, and the notification destination information 700. In addition, the storage device 1603 of the terminal 102 may store the encapsulated data generated by the server 101, for example.
The communication interface 1606 communicates with another device in accordance with an instruction from the processor 1601. The communication interface 1606 is an example of the communication unit 203 of the server 101 and the communication unit 303 of the terminal 102 described above, for example. The server 101 may communicate with devices such as terminal 102 via the communication interface 1606, for example. In addition, the terminal 102 may communicate with devices such as the server 101 and another terminal 102 via the communication interface 1606, for example.
The input/output interface 1607 may be, for example, an interface between an input device and an output device. The input device is, for example, a device that accepts an instruction from a user, such as a keyboard, a mouse, or a touch panel. The output device is, for example, a display device such as a display or an audio device such as a speaker.
Each program according to the embodiments is provided to the server 101 and the terminal 102 in the following forms, for example.
Installed on the storage device 1603 in advance.
(2) Provided by the removable storage medium 1605.
(3) Provided from a server such as a program server.
Note that the hardware configuration of the computer 1600 for implementing the server 101 and the terminal 102 described with reference to
Several embodiments have been described above. However, the embodiment is not limited to the embodiments described above, and it may be understood that the embodiment includes various modifications and alternatives of the embodiments described above. For example, it would be understood that various embodiments may be embodied by modifying constituent elements without departing from the spirit and scope of the embodiments. In addition, it would be understood that diverse embodiments may be carried out by appropriately combining a plurality of constituent elements disclosed in the embodiments described above. Furthermore, a person skilled in the art would understand that diverse embodiments may be carried out by deleting some constituent elements from all the constituent elements indicated in the embodiments or by adding some constituent elements to the constituent elements indicated in the embodiments.
All examples and conditional language provided herein are intended for the pedagogical purposes of aiding the reader in understanding the invention and the concepts contributed by the inventor to further the art, and are not to be construed as limitations to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although one or more embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.
This application is a continuation application of International Application PCT/JP2020/037976 filed on Oct. 7, 2020 and designated the U.S., the entire contents of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/JP2020/037976 | Oct 2020 | US |
Child | 18180253 | US |