Method for authenticating software
10896251 · 2021-01-19
Assignee
Inventors
Cpc classification
G06F21/53
PHYSICS
G06F21/57
PHYSICS
International classification
G06F21/53
PHYSICS
G06F21/57
PHYSICS
Abstract
The present invention relates to a method for authenticating software. The method comprises defining a set of parameters to use for trace mapping the software, wherein the set of parameters represents the software functionality when executed. The method further comprises: a) creating a trusted fingerprint that is created by trace mapping the software using the set of parameters when executed in a trusted environment; b) creating an operating fingerprint that is created by trace mapping the software using the set of parameters when executed in an operating environment; c) comparing the operating fingerprint with the trusted fingerprint, and identifying any difference between the trusted fingerprint and the operating fingerprint; and d) when said operating fingerprint is non-identical with the trusted fingerprint, initiating predefined action(s) in response to the identified differences between the trusted fingerprint and the operating fingerprint.
Claims
1. A method for authenticating a software, said method comprises defining a set of parameters to use for trace mapping the software, said set of parameters representing the software functionality when executed, the method further comprises: a) creating a trusted fingerprint, said trusted fingerprint is created by trace mapping the software using said set of parameters when executed in a trusted environment; b) creating an operating fingerprint, said operating fingerprint is created by trace mapping the software using said set of parameters when executed in an operating environment; c) comparing said operating fingerprint with said trusted fingerprint, and identifying any difference between the trusted fingerprint and the operating fingerprint; and d) when said operating fingerprint is non-identical with said trusted fingerprint, initiating predefined action(s) in response to the identified difference between the trusted fingerprint and the operating fingerprint; wherein the method further comprises: dividing said set of parameters into multiple subsets of parameter; prior to performing step a) determining a subset sequence having a predetermined order of said multiple subsets of parameters; and replacing said set of parameters with said subset sequence to create said trusted fingerprint in step a) and said operating fingerprint in step b).
2. The method according to claim 1, wherein the predefined action(s) initiated in step d) comprises: terminating the execution of the software, and/or dumping full or partial execution state produced by the software to a secondary storage, and/or notifying a user of the identified difference.
3. The method according to claim 1, wherein the method further comprises: e) when said operating fingerprint is identical with said trusted fingerprint, repeating steps b)-e) to update said operating fingerprint and identify any difference between the trusted fingerprint and the updated operating fingerprint, until the predefined action(s) is/are initiated in step d).
4. The method according to claim 3, wherein step e) is performed at regular intervals; or step e) is performed in response to a trig signal.
5. The method according to claim 3, wherein the method further comprises: initializing a timer when performing step e); measuring the time to obtain the updated operating fingerprint; and when the measure time exceeds a predetermined time limit, initiating predefined actions in response to the failure to obtain said updated operating fingerprint within the predetermined time limit.
6. The method according to claim 1, wherein the method further comprises selecting at least one subset of parameters to be repeated more than once within the subset sequence.
7. The method according to claim 1, wherein the method further comprises selecting at least one subset of parameters to overlap with at least one other subset of parameters within the subset sequence; or selecting each subset of parameters to non-overlap with other subsets of parameters.
8. The method according to claim 1, wherein said set of parameters is selected from the group: input parameters, output parameters, communication parameters, instruction flow parameters and/or heap data.
9. A method for identifying deviating functionality in an operating environment, the method comprises: authenticating software according to claim 1, said software is configured to generate specified output parameters based on specified input parameters, and said output parameters are configured to cause the operating environment to perform specified actions; monitoring input parameters and/or actions caused by said output parameters to determine the performance of the software when executed in the operating environment; comparing the monitored input parameters and/or actions with the corresponding specified input parameters and/or actions, and identifying any deviation between the monitored and the specified input parameters and/or actions; and when any deviation is identified, correcting the functionality in the operating environment.
10. The method according to claim 9, wherein at least one of said input parameters are generated outside the operating environment and said step of correcting the functionality comprises determining malfunctioning external components based on the identified deviation between the monitored and the specified input parameters.
11. The method according to claim 9, wherein at least one of said input parameters are generated within the operating environment and the step of correcting the functionality comprises determining malfunctioning components of the operating environment based on the identified deviation between the monitored and the specified input parameters.
12. The method according to claim 9, wherein said step of correcting the functionality comprises determining malfunctioning external components based on the identified deviation between the monitored and the specified actions caused by said output parameters.
13. A control unit for authenticating a software, comprising a processor and a memory, said memory containing instructions executable by the processor, the control unit is configured to: obtain a trusted fingerprint created by trace mapping the software using a set of defined parameters representing the software functionality when executed in a trusted environment; obtain an operating fingerprint created by trace mapping the software using the set of defined parameters representing the software functionality when executed in an operating environment; compare said operating fingerprint with said trusted fingerprint, and identify any difference between the trusted fingerprint and the operating fingerprint; when said operating fingerprint is non-identical with said trusted fingerprint, initiate predefined action(s) in response to the identified differences between the trusted fingerprint and the operating fingerprint; wherein the control unit is further configured to: dividing said set of parameters into multiple subsets of parameter; prior to performing step a) determining a subset sequence having a predetermined order of said multiple subsets of parameters; and replacing said set of parameters with said subset sequence to create said trusted fingerprint in step a) and said operating fingerprint in step b).
14. The control unit according to claim 13, wherein said trusted fingerprint is stored in a read-only memory.
15. The control unit according to claim 14, wherein said read-only memory is provided in said control unit.
16. The control unit according to claim 14, wherein said control unit is provided with a communication port, and said read-only memory is externally arranged and obtainable through the communication port.
17. The control unit according to claim 16, wherein said communication port is dedicated to obtain said trusted fingerprint.
18. The control unit according to claim 13, wherein the control unit is further configured to select the predefined action(s) to be initiated from the group: to terminate the execution of the software, and/or dumping full or partial execution state produced by the software to a secondary storage, and/or to notify a user of the identified differences.
19. The control unit according to claim 13, wherein the control unit is further configured to: when said operating fingerprint is identical with said trusted fingerprint, obtain an updated operating fingerprint and identify any difference between the trusted fingerprint and the updated operating fingerprint until the predefined action(s) is/are initiated.
20. The control unit according to claim 19, wherein the control unit is further configured to receive the operating fingerprint at regular intervals; or the control unit is configured to send a trig signal requesting the operating fingerprint.
21. The control unit according to claim 19, wherein the control unit is further configured to: obtain information regarding time to obtain the updated operating fingerprint; and if the measure time exceeds a predetermined time limit, initiate predefined actions in response to the failure to obtain said updated operating fingerprint within the predetermined time limit.
Description
DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
DETAILED DESCRIPTION
(12) In order to prevent malfunctioning software from being executed within a controlled operating environment, a solution is provided with the concept to authenticate software by monitoring a fingerprint that represents the software functionality when executed in a network. The fingerprint is created by trace mapping using a set of parameters, and by defining the set of parameters a unique representation of the software functionality may be obtained.
(13) Fingerprints may be created using OpenPAT (The Open Performance Analysis Toolkit), but other suitable techniques to create an electronic fingerprint may be used. It is also preferred to avoid shared resources to create unique fingerprints that do not change over time or are not affected by other programs currently executed in the network.
(14)
(15) A trace mapper 36 may be provided together with the hardware 30 in the trusted environment 32, and the trace mapper is designed to monitor the execution of the software 31 as indicated by 37 as shown in
(16) The trace mapper may also be implemented separate from the trusted environment provided the trace mapper is configured to monitor the execution of the software 31 to create the trusted fingerprint 35 by trace mapping the software using the set of parameters when executed in the trusted environment.
(17)
(18) In step 42, a trusted fingerprint is created by trace mapping the software using the defined set of parameters when executed in a trusted environment, as described in connection with
(19) When a trusted fingerprint has been created the flow continues to step 43, in which an operating fingerprint is created. In order to achieve this, the software has to be implemented in an operating environment, and the operating fingerprint is created by trace mapping the software when executed in the operating environment using the same set of parameters that was used to create the trusted fingerprint in step 42.
(20) In step 44, the trusted fingerprint and the operating fingerprint are compared with each other, and any difference between the trusted fingerprint and the operating fingerprint is identified in step 45.
(21) The main objective with the comparison step is to authenticate that the execution of the software in the operating environment is identical to the execution of the software in the trusted environment. The definition of the set of parameters, the quality of the trusted environment and the risk of having a compromised trusted environment will determine how good the created trusted fingerprint is.
(22) When the operating fingerprint is non-identical with the trusted fingerprint, at least one predefined action is initiated, step 46, in response to the identified difference between the trusted fingerprint and the operating fingerprint.
(23) The predefined action(s) may comprise: terminating the execution of the software, and/or dumping full or partial execution state produced by the software to a secondary storage, and/or notifying a user of the identified difference.
(24) If the identified difference indicates a non-acceptable behavior, the full or partial execution state produced by the software is dumped to a secondary storage, such as a disk, for further analysis before any further action may be needed. However, if the identified difference between the trusted fingerprint and the operating fingerprint indicates a severe problem, the executing of the software may be terminated. If the identified difference between the trusted fingerprint and the operating fingerprint is of minor importance, or other conditions will not allow a termination of the execution of the software, a user will be notified of the identified difference. Any combination of the above is naturally possible.
(25) When the operating fingerprint is identical with the trusted fingerprint, the flow may be fed back to step 43, with the object to create an updated operating fingerprint, as indicated by 47 in
(26) When defining the set of parameters, it is possible to select a limited number of parameters to minimize the resources necessary to generate the operating fingerprint during execution of the software. If too many parameters are included in the set of parameters, the overall performance when executing the software will be undesirably affected. However, if too few parameters are included in the set of parameters, the created trusted fingerprint may not characterize the behavior of the software functionality in enough detail to identify any difference when comparing it with the created operating fingerprint.
(27)
(28) The software is implemented in an operating environment in step 53. The operating environment may comprise a single computer, equipment (including computers and servers) configured to communicate with each other in a restricted network, such as LAN, WAN, etc., or even equipment communicating with each over Internet, such as cloud implemented networks.
(29) Step 54 is an optional step, in which a trig signal requesting an operating fingerprint of the software is received. In response to the trig signal, an updated operating fingerprint of the software when executed in the operating environment is created in step 55. Alternatively, an updated operating fingerprint is created at regular intervals without any trig signal.
(30) Step 56 also illustrate an optional step, in which it is determined if the updated operating fingerprint was received within a predetermined time limit. If a trig signal was used to initiate the creation of the updated operating fingerprint (as described in step 54), the time is measured from the generation of the trig signal to the reception of the updated operating fingerprint. However, if no trig signal is used, the time between the regularly received updated operating fingerprints is measured.
(31) If the optional step 56 is not performed or when the measured time is within the predetermined time limit, the flow continues to step 57, in which the operating fingerprint is compared to the stored trusted fingerprint. On the other hand, if step 56 is performed and when the updated operating fingerprint is not received within the predetermined time limit, the flow continues to step 59 and predefined actions are initiated in response to the failure to meet the time limit. These actions may comprise the actions previously described in connection with
(32) An advantage with the optional step 56 is that even if a cyber-attack manages to cancel the creation of an operating fingerprint during execution of the software, and thereby prevents a comparison to be made, the lack of providing an updated operating fingerprint within a predetermined time limit will be detected and appropriate actions may be initiated.
(33) After step 57, any difference between the operating fingerprint and the trusted fingerprint is identified in step 58. When the operating fingerprint is non-identical with the trusted fingerprint, the flow continues to step 59 and the predefined actions are initiated based on the identified difference.
(34) On the other hand when the operating fingerprint and the trusted fingerprint are identical, the flow continues to the optional step 54 if a trig signal is used to request an updated operating fingerprint, or directly to step 55 if the operating fingerprint is regularly updated. If the optional step 56 is included, a timer is also initialized to measure the time to obtain an updated operating fingerprint.
(35) The advantage with the feedback loop from step 58 to step 54 is that any unscheduled changes in the operating environment that affects the performance of the software when executed in an operating environment will be detected irrespectively of where the change originate from (e.g. from a source within the operating environment or a source outside the operating environment).
(36)
(37) The control unit 61 is configured to obtain a trusted fingerprint created by trace mapping the software using a set of defined parameters representing the software functionality when executed in a trusted environment. The trusted finger print may be stored in a separate memory 62 or stored in an internal memory (not shown) of the control unit 61.
(38) The control unit is further configured to obtain an operating fingerprint created by trace mapping the software using the set of defined parameters representing the software functionality when executed in the operating environment 64. A trig signal 63 may be sent from the control unit 61 requesting the operating fingerprint, or the operating fingerprint is created within the operating environment 64 at regular intervals, and the operating fingerprint is provided to the control unit as indicated by 65.
(39) The control unit 61 may also comprise a timer that is initiated to measure the time to obtain an updated operating fingerprint, as previously described in connection with
(40) The control unit 61 is also configured to compare the obtained operating fingerprint with the obtained trusted fingerprint, and identify any difference between the trusted fingerprint and the operating fingerprint; and when the operating fingerprint is non-identical with the trusted fingerprint the analyzer 67 initiates predefined action(s) in response to the identified differences between the trusted fingerprint and the operating fingerprint. The analyzer 67 may be a part of the control unit 61.
(41) As indicated in
(42) The control unit 61 may be configured to regularly request updated operating fingerprint from the software running in the operating environment. Each obtained operating fingerprint is compared with the corresponding trusted fingerprint (as described above) and when the operating fingerprint is non-identical with the trusted fingerprint, instructions may be generated to terminate the execution of the software running in the operating network if the software is critical for the performance. Other predetermined actions that may be the response to an identified difference between the operating fingerprint and the trusted fingerprint is dumping full or partial execution state produced by the software to a secondary storage, for instance a disk and/or notifying a user of the identified differences in a deviation report.
(43) When the operating fingerprint is identical with the trusted fingerprint, the control unit is configured to obtain an updated operating fingerprint and identify any difference between the trusted fingerprint and the updated fingerprint until the predefined action(s) described above is/are initiated. However, requesting an updated operating fingerprint is optional since some implementations of the present invention do not require the control unit to obtain more than one operating fingerprint.
(44) As mentioned above, the security of the system 60 is limited to how good the trusted environment is (where the trusted fingerprint is created), and the trusted environment may be constructed as an island system with preconfigured input parameters that simulate signals generated by external systems interacting with the software during operation. In addition, the trusted environment also generates output parameters that simulate signals used to control external systems. Different scenarios may be evaluated to identify suitable fingerprints that could be used when monitoring the execution of the software in the operating environment.
(45) Furthermore, the invention may also be used to verify configuration of the hardware upon which the software is configured to be executed. For instance, any architectural issues in a computer, malfunctioning components, etc. may be detected before the hardware is connected to a secure network.
(46)
(47) The software is implemented in a new environment, i.e. hardware representing an operating environment, and in step 72 the software is executed in the new environment. An operating fingerprint is thereafter created in step 73 by trace mapping the software using the set of parameters when executed in the new environment.
(48) The operating fingerprint is compared with the trusted fingerprint in step 74 to identify any differences between the trusted fingerprint and the operating fingerprint. When the operating fingerprint is identical with the trusted fingerprint, a decision is made in step 75 to continue to step 76, in which the new hardware is verified for running the software.
(49) When the operating fingerprint is non-identical with the trusted fingerprint, a decision is made in step 75 to continue to step 77, in which predefined action(s) are initiated in response to the identified difference between the trusted fingerprint and the operating fingerprint. Such actions may comprise replacing or modifying all, or parts, of the hardware in the new environment based on the identified differences and thereafter repeat steps 72 to 75 72 to 75 until the hardware in the new environment has been verified for running the software.
(50) The process described in connection with
(51) The described process for monitoring the execution of software in an operating environment also has the benefit that it may be used for quality assurance of external hardware and/or software.
(52) The trusted fingerprint generated when executing the software in the trusted environment relies on input parameters from external hardware and processes according to the predefined specifications of the system. When a field test is performed in the operating environment, input parameters will be generated by the external hardware and processes, and if the fingerprint is defined in such a way that any deviation in input parameters compared to the predefined specifications, then hardware or software issues may be detected.
(53)
(54) The field test is performed with software configured to generate specified output parameters based on specified input parameters, and the output parameters are configured to cause the operating environment to perform specified actions.
(55) The flow starts in step 80, and continues to step 81, in which the software is authenticated as previously described in connection with
(56) In step 83, the monitored input parameters and/or actions are compared with the corresponding specified input parameters and/or actions, and any deviation between the monitored and the specified input parameters and/or actions is identified.
(57) When any deviation is identified, the functionality in external components outside the operating environment is corrected, as described in steps 84-89.
(58) The flow continues to step 84, in which deviation in input parameters generated inside and/or outside the operating environment is assessed. If input parameters have been monitored and when a deviation has been identified between the monitored input parameters and the specified input parameters, the flow continues to step 85. On the other hand, if input parameters have not been monitored or no deviation has been identified between the monitored input parameters and the specified input parameters, the flow continues to step 86.
(59) In step 86, deviation in actions caused by the output parameters is assessed. If actions have been monitored and when a deviation has been identified between the monitored actions and the specified actions, the flow continues to step 85. On the other hand, if actions have not been monitored or no deviation has been identified between the monitored actions and the specified actions, the flow ends in step 89.
(60) Any identified deviation in input parameters and/or actions caused by the output parameters has to be addressed to correct the functionality of the operating environment (i.e. external systems interaction with the software) and the identified deviations may be hardware and/or software related.
(61) In step 85, it is investigated if the deviation is hardware related, and if no hardware malfunction is identified, the flow continues to step 87A, in which the software of the external systems are adapted to eliminate the identified software-related deviation, and the flow ends in step 89.
(62) However, if a hardware malfunction is identified, the flow continues to step 87B, in which the hardware of the external systems are adapted to eliminate the identified hardware-related deviations. There is a possibility that the identified deviations are both software and hardware related, and in the following step 88 it is investigated if the identified deviation is also software related.
(63) If the identified deviation also is software related, the flow continues to step 87A, but if the identified deviation is only hardware related, the flow ends in step 89.
(64) The advantage obtained by monitoring input parameters/actions caused by the output parameters is that quality assurance may be achieved and malfunctioning external hardware and/or software will be identified. The authentication of the software in the operating environment ensures the functionality of the software provided the input parameters are according to specifications.
(65) It should be noted that at least one of the input parameters may be generated outside the operating environment and the step of correcting the functionality comprises determining malfunctioning external components based on the identified deviation between the monitored and the specified input parameters. Similarly, at least one of the input parameters may be generated within the operating environment and the step of correcting the functionality comprises determining malfunctioning components of the operating environment based on the identified deviation between the monitored and the specified input parameters.
(66) The step of correcting the functionality may also comprise determining malfunctioning external components based on the identified deviation between the monitored actions and the specified actions caused by the output parameters from the software.
(67)
(68) A defined set of parameters 90 that is used for trace mapping the software may allocate too much computational resources, and thereby slow down the overall performance of the software when executed. One alternative is to divide the set of parameters 90 into multiple subsets of parameters as illustrated by 91a-d (non-overlapping) and 92a-e (overlapping). Another alternative is to reduce the set of parameters to include less parameters, although with the disadvantage that fewer parameters are used for trace mapping the software when executed.
(69) If the set of parameters are divided into multiple subsets of parameters then a subset sequence having a predetermined order of the multiple subsets of parameters has to be determined before creating a trusted fingerprint. Thereafter, the set of parameters used for trace mapping the software may be replaced by the subset sequence and used to create the trusted fingerprint in step 42, 51 and 71, and the operating fingerprint in step 43, 55, 73.
(70) An advantage with dividing the set of parameters into subsets is that less computational resources are necessary to generate and compare the fingerprints during operation and thus will affect the performance of the execution of the software less.
(71) In
(72) In the second embodiment, each subset of parameters is selected to overlap the other subsets of parameters within the subset sequence. However, any combination of the two embodiments are possible, e.g. at least one subset of parameters may be selected to overlap with at least one other subset of parameters within the subset sequence.
(73)
(74) A subset of parameters may be more important to use for trace mapping and
(75) An advantage with repeating at least one subset of parameters (e.g. communication parameters), which contains parameters of interest, is obvious since the resources required to perform the authentication of the software is reduced, while parameters of interest are used more often for trace mapping the software when executed.
(76)
(77) A first module 101 to obtain a trusted fingerprint created by trace mapping the software using a set of defined parameters representing the software functionality when executed in a trusted environment.
(78) A second module 102 to obtain an operating fingerprint created by trace mapping the software using the set of defined parameters representing the software functionality when executed in an operating environment.
(79) A third module 103 to compare the operating fingerprint with the trusted fingerprint, and to identify any difference between the trusted fingerprint and the operating fingerprint.
(80) A fourth module 104 to initiate predefined action(s) in response to the identified differences between the trusted fingerprint and the operating fingerprint, when the operating fingerprint is non-identical with the trusted fingerprint.
(81) The first module 101 may comprise a read-only memory, wherein the trusted fingerprint is stored, or the first module is provided with access to a communication port (preferably a dedicated communication port) through which an externally arranged memory can be obtained.
(82) The fourth module 104 may comprise a secondary storage configured to provide space for dumping full or partial execution state produced by the software to a secondary storage.
(83) The second module 102 may generate a trig signal to obtain an updated operating fingerprint and the third module 103 may identify any difference between the trusted fingerprint and the updated operating fingerprint until the predefined action(s) is/are initiated in the fourth module 104.
(84) The third module 103 may also comprise a timer to measure the time to obtain the updated operating fingerprint; and, if the measure time exceeds a predetermined time limit, the fourth module 104 may initiate predefined actions in response to the failure to obtain the updated operating fingerprint within the predetermined time limit.
REFERENCES
(85) 1) Software Trace Cache by A Ramirez, J-L Larriba-Pey, C Navarro, J Torrellas and M Valero; published in IEEE Transactions on Computers, February 2005.