ANOMALY DETECTION
20230054186 · 2023-02-23
Assignee
Inventors
Cpc classification
H04L63/107
ELECTRICITY
H04W12/121
ELECTRICITY
G06F21/55
PHYSICS
G06V20/56
PHYSICS
International classification
Abstract
A computer-implemented method comprising: providing data of at least one of distance, time, and velocity as at least one trajectory feature, the data defining a plurality of vehicle trajectories; computing for each vehicle trajectory a plurality of meta-features by computing, based on the data, at least one of a maximum value, a mean value, and a standard deviation of at least one of the at least one trajectory feature of each vehicle trajectory, so that each vehicle trajectory is represented by a point in a meta-feature space, the point defined by the plurality of meta-features; implementing a clustering algorithm on the points and selecting, based on a result of the clustering algorithm, at least one point as an anomaly; and selecting the at least one vehicle trajectory corresponding to the at least one point as at least one anomalous vehicle trajectory.
Claims
1. A computer-implemented method comprising: providing data of at least one of distance, time, and velocity as at least one trajectory feature, the data defining a plurality of vehicle trajectories; computing for each vehicle trajectory a plurality of meta-features by computing, based on the data, at least one of a maximum value, a mean value, and a standard deviation of at least one of the at least one trajectory feature of each vehicle trajectory, so that each vehicle trajectory is represented by a point in a meta-feature space, the point defined by the plurality of meta-features; implementing a clustering algorithm on the points and selecting, based on a result of the clustering algorithm, at least one point as an anomaly; and selecting the at least one vehicle trajectory corresponding to the at least one point as at least one anomalous vehicle trajectory.
2. The computer-implemented method as claimed in claim 1, wherein the implementing the clustering algorithm comprises: selecting a plurality of random points as centroids, for each of the other points, calculating a distance in the meta-feature space between the point and each centroid, and assigning each point to its closest centroid.
3. The computer-implemented method as claimed in claim 1, wherein the selecting at least one point as the anomaly comprises comparing the distance in the meta-feature space of each point from its closest centroid and selecting at least one point with the largest distance in the meta-feature space from its closest centroid as an anomaly.
4. The computer-implemented method as claimed in claim 1, wherein the method comprises receiving data of the velocity, and wherein the computing for each trajectory a plurality of meta-features comprises computing, based on the data, the maximum value, the mean value, and the standard deviation of the velocity of each trajectory.
5. The computer-implemented method as claimed in claim 1, wherein the method comprises, before computing the meta-features, normalizing the data across different data attributes.
6. The computer-implemented method as claimed in claim 1, wherein the different data attributes comprise at least one of GPS coordinates, timestamps, and speed measurements.
7. The computer-implemented method as claimed in claim 1, wherein the data defines, for each vehicle trajectory: a plurality of values of a velocity of a vehicle to which the vehicle trajectory relates.
8. The computer-implemented method as claimed in claim 1, wherein the data defines, for each vehicle trajectory: a plurality of values of a distance travelled by a vehicle to which the vehicle trajectory relates.
9. The computer-implemented method as claimed in claim 1, wherein the data defines, for each vehicle trajectory: a set of absolute differences between consecutive values of a plurality of values of a velocity of a vehicle to which the vehicle trajectory relates.
10. The computer-implemented method as claimed in claim 1, wherein the data defines, for each vehicle trajectory: a set of absolute differences between consecutive values of a plurality of values of a distance travelled by a vehicle to which the vehicle trajectory relates.
11. The computer-implemented method as claimed in claim 1, wherein the computing for each trajectory a plurality of meta-features comprises computing, based on the data, the maximum value, the mean value, and the standard deviation of the set of absolute differences of each trajectory.
12. The computer-implemented method as claimed in claim 1, wherein the method comprises outputting information indicating the selection of the at least one anomalous vehicle trajectory.
13. The computer-implemented method as claimed in claim 2, wherein the method comprises outputting information indicating a priority of each vehicle trajectory based on the distance in the meta-feature space of the corresponding point to its closest centroid.
14. The computer-implemented method as claimed in claim 13, wherein a larger said distance in the meta-feature space corresponds to a higher priority.
15. Use of the method according to claim 1 in a vehicle security system.
16. A non-transitory computer-readable storage medium storing computer executable instructions to cause a computer processor to: using data of at least one of distance, time, and velocity as at least one trajectory feature, the data defining a plurality of vehicle trajectories, compute for each vehicle trajectory a plurality of meta-features by computing, based on the data, at least one of a maximum value, a mean value, and a standard deviation of at least one of the at least one trajectory feature of each vehicle trajectory, so that each vehicle trajectory is represented by a point in a meta-feature space, the point defined by the plurality of meta-features; implement a clustering algorithm on the points and select, based on a result of the clustering algorithm, at least one point as an anomaly; and select the at least one vehicle trajectory corresponding to the at least one point as at least one anomalous vehicle trajectory.
17. The computer program as claimed in claim 16, wherein the computer program further causes the computer to output information indicating the selection of the at least one anomalous vehicle trajectory.
18. An information processing apparatus comprising a memory and a processor connected to the memory, wherein the processor is configured to: using data of at least one of distance, time, and velocity as at least one trajectory feature, the data defining a plurality of vehicle trajectories, compute for each vehicle trajectory a plurality of meta-features by computing, based on the data, at least one of a maximum value, a mean value, and a standard deviation of at least one of the at least one trajectory feature of each vehicle trajectory, so that each vehicle trajectory is represented by a point in a meta-feature space, the point defined by the plurality of meta-features; implement a clustering algorithm on the points and select, based on a result of the clustering algorithm, at least one point as an anomaly; and select the at least one vehicle trajectory corresponding to the at least one point as at least one anomalous vehicle trajectory.
Description
[0063] Reference will now be made, by way of example, to the accompanying drawings, in which:
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076] This disclosure focuses on providing post-production security measures for connected vehicles, which is becoming more important due to regulations and standards such as WP.29, ISO/SAE 21434. The underlying security challenges may be overcome through automated analysis capabilities and IT Service Management tools. Methodology disclosed herein involves collecting and scrutinising the high volume of data generated and used in this highly complex heterogeneous environment, working to detect anomalies and suspicious behaviours and ultimately to identify possible attacks whilst they are occurring, i.e. before the outcome of the attack, e.g. before the vehicle reaches a destination at which it will be stolen.
[0077] Disclosed herein is an unsupervised classification solution based on meta-feature selection for anomaly detection, including using specifically designed meta-features adapted to anomaly classification. This methodology is primarily adapted for large scale anomalous occurrence detection.
[0078]
[0079] The set of features used for anomaly detection (the features extracted at step S14) have a significant influence on the performance of the detection algorithm (i.e. on the anomaly detection process in step S16, and on the method as a whole shown in
[0080] The following features of the method for anomaly detection in accordance with an embodiment in particular will be described herein in more detail: [0081] i. The design and use of specific meta-features based on features extracted from data in order to classify and detect anomalous occurrences. [0082] ii. Implementing a clustering algorithm, for example an unsupervised K-Means algorithm, for classifying anomalous occurrences based on the newly created meta-features. [0083] iii. A distance measure for computing a weighting parameter in order to prioritize anomalous occurrences (e.g. prioritize for further handling by human operators).
[0084]
[0085]
[0086] The output of the system may be a full list of anomalous occurrences. These may include e.g. unreasonable location changes, a high volume of vehicle messages, or suspicious activity on a vehicle. A priority score may be calculated for each anomalous occurrence based on a similarity analysis with previously detected (anomalous and non-anomalous) occurrences, and this priority score may be included in the output. Depending on the specific implementation of the detection algorithm (i.e. the anomaly detection process of step S26), different measures and/or metrics may be introduced in order to calculate the values of the priority score.
[0087] The output of the method (e.g. displaying the priority score of all the occurrences or some of the occurrences, or displaying an indication of the anomalous occurrences optionally with their priority scores) may for example help a human operator in responding to possible attacks, e.g. by handling occurrences identified as anomalous and/or with high priority scores first. Handling lower level occurrences (e.g. those with low priority) may then be either postponed or discarded altogether depending on the case. The method may increase the reactivity and efficiency of V-SOC (Vehicular Security Operation Centre—a centralized entity within an organization employing people, processes, and technology to continuously monitor and improve an organization's security position while preventing, detecting, analysing, and responding to cybersecurity incidents revolving around connected cars) operators by e.g. speeding up the handling time of anomalies.
[0088] Specifically designed meta-features, based on previously selected features, are used in the method shown in
[0089] Data attributes as used above and herein are for example the different sources of the data—e.g. GPS data and data from a vehicle's speedometer. Data attributes may also be used to mean the different formats of data even if they originate from the same source. Which (subset of) meta-features are the most relevant for use in the anomaly detection process/algorithm (step S26) may be changed periodically or continuously adjusted based on the overall performance of the method e.g. in terms of detection accuracy, number/rate of false positives and/or negatives, etc. (as illustrated by the arrow from step S26 (Anomaly Detection) to step S25 (Meta-Feature Selection)). External feedback from a subject matter expert may also be considered for selecting the most relevant meta-features to be included.
[0090] That is, input from a “subject matter expert” may aid in the determination of the best/most appropriate features and meta-features to be used in the anomaly detection process/algorithm (step S26). For example, a subject matter expert may analyse the results from the feedback loops (the two arrows used in
[0091] The method shown in
[0092]
[0093] i. Data Pre-Processing:
[0094] Intrusion data sets (data sets which include records of anomalous occurrences, i.e. traces for intrusions and/or cyber-attacks), which may be used as a benchmark for training and testing detection tools, comprise heterogeneous sources and data types, and may include a wide range of attributes, which may have different scales and different distributions. Specifically, some attributes, for instance, may have a wide range of values while other attributes may be very narrowly distributed. Two different attributes may for example be GPS location information and speedometer information. These differences in the distribution of the data may make it difficult to measure the similarities or significant differences between variables/categories in the data sets. Normalization and scaling operations of the data into the same scale are used to address this problem. Specifically, the data are converted into a “normal” form. Normalization (or standardization) is the most commonly used method to convert all the different attributes available into a common scale, for example with an average of zero and a standard deviation equal to one.
[0095] Normalization may be useful when dealing with attributes with incomparable units (e.g. time, distance, speed, acceleration, etc.). Even if the data attributes share the same units but show quite different variances, normalization of the values may be useful. Otherwise, attributes with higher variances would have greater impact on the decision-making process (i.e. on the identification of anomalous occurrences) compared to attributes with smaller variances. This is equivalent to putting more weight, in terms of decision making, on attributes with greater variances, which it is useful to avoid.
[0096] Normalization is not essential. Furthermore, the data which is input for the method of anomaly detection may be normalized.
[0097] ii. Feature Engineering:
[0098] Feature engineering is the process of transforming input data (initial attributes) into specific features (newly created attributes) which aims to provide a better understanding and a more specific representation of the underlying values in the data. It may also be perceived as a different representation of the data derived from raw (initial) data in order to better describe its hidden characteristics and solve the problem at hand. Specific domain knowledge and active involvement of subject matter experts at this stage of the processing cycle may be useful in the feature engineering process. Through their extensive knowledge about the underlying intricacies of the selected use case and possible attacks, subject matter experts may help: (i) identifying the most relevant attributes, (ii) selecting useful meta-features to be used in the detection algorithm, and (iii) ensuring that the overall method for anomaly detection works properly and the algorithms are applied/adapted correctly.
[0099] As mentioned above, input from a subject matter expert may be used in a “system design” phase or as part of an adjustment process and not necessarily during the usual operation of the method shown in
[0100] iii. Al-Based Anomaly Analysis & Prioritization:
[0101] After running the anomaly detection algorithms, the results are output. The output is shown to a user (in a comprehensive manner) for example alerting the user to any anomalous occurrences, optionally also indicating a priority of each anomalous occurrence. This may assist the user to make a decision about the most appropriate action that needs to be implemented to handle any anomalous occurrences.
[0102]
[0103] Two different classes of clustering tools may be used for anomaly detection: supervised and unsupervised. While the first class (supervised models) requires training using labelled data in order to build profiles for normal and anomalous occurrences/behaviour, the second class (unsupervised models) is more flexible. Clustering tools of the unsupervised class are trained using unlabelled data that consists of both normal as well as abnormal (i.e. anomalous) occurrences, and operate based on the assumption that anomalous or attack data forms a small percentage of the total data and thus anomalies and attacks may be detected based on cluster sizes such that, when the data is plotted, large clusters of data correspond to normal data (i.e. non-anomalous occurrences) and the rest of the data points, which are outliers, correspond to attacks/anomalous occurrences (as also described in: “An Overview of Anomaly Detection Techniques: Existing Solutions and Latest Technological Trends” by Patcha, A. et al, Computer Networks, Volume 51, Issue 12, 22 Aug. 2007, pp. 3448-3470; and “Anomaly Detection: A Survey” by Chandola, V et al, ACM Computing Survey Journal, Volume 41 Issue 3).
[0104] The k-Means algorithm (or k-means clustering algorithm) is an unsupervised clustering algorithm and may be used to automatically recognize groups/clusters of similar occurrences/instances/items/objects/points in data. The k-means clustering algorithm classifies occurrences defined by the data to a pre-defined number (k) of clusters (where k is, e.g., specified by a user).
[0105]
[0106] The method illustrated in
[0107] Step S32 comprises generating/computing/extracting meta-features from the trajectory features using statistical measures (maximum values, average values and standard-deviation). That is, step S32 comprises computing for each vehicle trajectory a plurality of meta-features by computing, based on the data, at least one of a maximum value, a mean value, and a standard deviation of at least one of the at least one trajectory feature of each vehicle trajectory, so that each vehicle trajectory is represented by a point in a meta-feature space, the point defined by the plurality of meta-features. A sub-step of step S32 is illustrated in
[0108] Step S33 comprises selecting a number k of clusters to be used for the clustering algorithm. This step may be omitted and may be part of the “system design” phase (or an adjustment process as previously described). Step S34 comprises selecting/choosing a set of k “instances” as centroids (centres of the clusters) randomly, usually choosing one for each cluster as far as possible from each other. The “instances” in this case are the points in the meta-feature space which each represent a vehicle trajectory.
[0109] Next, the clustering algorithm continues to read each instance from the data set and assigns it to the nearest cluster. That is, step S35 comprises computing the distance in the meta-feature space of each point to its nearest centroid and step S36 comprises assigning each point to its nearest centroid. There are different methods to measure the distance between each instance and the centroids, e.g. Euclidian distance, Max-min distance, Cosine Similarity, Jaccard similarity, edit distance, etc. (for example as described in: “K-means clustering using max-min distance measure” by Visalakshi, N. K. et al, Annual Conference of the North American Fuzzy Information Processing Society (NAFIPS), available at https://doi.org/10.1109/NAFIPS.2009.5156398; and “Impact of normalization in distributed K-means clustering” by Visalakshi, N. K. et al, in International Journal of Soft Computing (Vol. 4, Issue 4, pp. 168-172), available at https://medwelljournals.com/abstract/?doi=ijscomp.2009.168.172). In a particular implementation, the Euclidian distance is used as the distance measure.
[0110] The cluster centroids are recalculated after every instance insertion (i.e. after all of the points/instances have been assigned) until the centroids do not change position (in the meta-feature space). That is, a cluster centroid after re-calculation is defined through a vector that contains, for each variable (or dimension of analysis), the mean value of all the different observations within that cluster (i.e. each centroid is an average of all the points assigned to it—in particular a vector comprising for each meta-feature in the meta-feature space an average of the values of that meta-feature of all of the points assigned to the centroid). This process (steps S34 to S37) is iterated until no more changes are made. This is illustrated by step S37 which comprises a determination of whether there is no movement of the centroids based on the recalculation. Each cluster centroid could also be recalculated each time a point/instance is assigned to it.
[0111] The method may comprise a step of selecting at least one point as an anomaly based on the clustering, and selecting the at least one vehicle trajectory corresponding to the at least one point as an anomalous trajectory. The method may comprise outputting a determination of the at least one anomalous vehicle trajectory and/or an alert indicating the at least one anomalous vehicle trajectory and/or a list of the vehicle trajectories along with their corresponding priorities (the priorities based on the distance of each point to its nearest centroid).
[0112] The k-Means algorithm used in the method is explained in this following pseudo code: [0113] 1. Calculate meta-features (max, mean, std). [0114] 2. Select meta-features. [0115] 3. Select the total number of clusters (k). [0116] 4. Choose k random points and set as centroids. [0117] 5. Calculate the distance from each instance/point to all centroids using Euclidean method. [0118] 6. Assign each instance/point to its closest centroid. [0119] 7. Recalculate the positions of the centroids. [0120] 8. Repeat steps 5-7 until the centroids (centroid positions) do not change.
[0121] In an example, the method may be tested using as input data location data for example available through the AEGIS dataset. This implementation may therefore detect possible attacks through determining “unreasonable” changes in location. The data includes traces for 33 trajectories with different lengths from 33 different cars. In other words, the data defines a plurality of vehicle trajectories. The data defines for each event in each vehicle trajectory: a timestamp, trip id, and GPS coordinates.
[0122] After initial pre-processing and analysis, the following features are computed: time changes, distance changes and velocity changes. The changes are defined as the absolute values of the differences between values of a trajectory feature (distance, time, or velocity) corresponding to consecutive events. Instead, the method may be provided with the set of differences as the trajectory features rather than calculating the differences as part of the method.
[0123] For example, the data may comprise, for each at least one trajectory feature, a set of absolute differences between values of the at least one trajectory feature corresponding to consecutive said events. That is, if a trajectory feature is distance, the data may comprise a set of absolute differences between values of the distance corresponding to consecutive said events. If a trajectory feature is speed/velocity, the data may comprise a set of absolute differences between values of the velocity/speed corresponding to consecutive said events. If a trajectory feature is time, the data may comprise a set of absolute differences between values of the time corresponding to consecutive said events.
[0124] An event may be a measurement of a trajectory feature (e.g. distance or speed/velocity) of a vehicle at a particular time, e.g. at a predefined time, or after elapse of a predefined amount of time from a previous measurement, or at a randomly selected time. An event may be a measurement of time triggered by a particular criterion—for example when a particular distance is travelled, or a particular speed/velocity reached or a particular acceleration reached. Instead of using differences of trajectory feature values of consecutive events, the data may comprise average values of each at least one trajectory feature over a (set/predefined/predetermined) period of time—e.g. an average value of the distance travelled every 2 or 5 minutes.
[0125] For each vehicle trajectory a plurality of meta-features are computed by computing, based on the data, at least one of a maximum value (max), a mean value (mean), and a standard deviation (STD) of at least one of the at least one trajectory feature of each vehicle trajectory, so that each vehicle trajectory is represented by a point in a meta-feature space, the point defined by the plurality of meta-features. The meta-features are used as inputs for the clustering algorithm. Various combinations of meta-features and features may be used in the method. For example, two or three or more meta-features may be used, to make the meta-feature space two-dimensional or three-dimensional or have more dimensions. The mean, max, and STD of velocity (differences) may be used. Or the mean and max of the velocity (differences) may be used. Or the mean of the velocity (differences) and the mean of the distance (differences) may be used. Or the max of the velocity (differences) and the mean of the distance (differences) and the STD of the time (differences) may be used. It is apparent that there exist many different combinations of trajectory features and meta-features for use in the method and an exhaustive list is not provided here.
[0126] The method may comprise receiving only the necessary features and computing only the necessary meta-features which will be used in the clustering algorithm, or the method may comprise receiving more trajectory features than will eventually be used in the clustering algorithm and/or computing more meta-features than will eventually be used in the clustering algorithm, and a selection among the features and meta-features may be made (optionally with input from a subject matter expert). Testing and assessing the performances of the different possible combinations of features/meta-features through trial and error may be implemented by the system carrying out the method to determine which features/meta-features to use.
[0127]
[0128] The distance in the meta-feature space between each point and its centroid (cluster centre) is calculated after the clustering and the obtained values are used for the prioritization of the different vehicle trajectories.
[0129] The newly designed detection tool (i.e. the method for anomaly detection disclosed herein) aims at achieving early detection of cyber-attacks through detecting anomalous vehicle trajectories and thus potentially dangerous events from a plurality of vehicle trajectories. That is, the data used/analyzed by the tool may be real-time data. “Early detection” here may also be taken to mean less time is taken to detect an attack based on the data compared to, e.g., a human operator trying to look for possible attacks. Further, such a human operator would need to be highly trained with extensive expertise, however the tool requires relatively little training.
[0130] Millions of connected vehicles' log entries and alerts originating from different sources may be used as data. The results ultimately help users to respond to potentially dangerous events by alerting the user to anomalous vehicle trajectories or by outputting the priority for each vehicle trajectory. Further, the method output may help support triage operations and simplify audit processes for V-SOC human operators by prioritising events handling and computing similarity with previously known anomalous events. For example, the method may use vehicle trajectories obtained during a predefined time period (e.g. 6, 12, or 24 hours) and may regularly produce an output after each time period to continuously monitor vehicles to alert users to potential attacks.
[0131] The methodology of this disclosure may be applied in any other scenario where appropriate meta-features may be used as entries for detecting other types of cyber-attacks targeting networks/systems. In some cases, an analysis would be useful in order to assess the possible impact of any newly introduced meta-features on clustering algorithm performance and general overall anomaly detection performance.
[0132] The benefits disclosed throughout this disclosure result from introducing and using specific meta-features as entries for a new implementation of an advanced anomaly detection algorithm based on e.g. an unsupervised K-means clustering algorithm. The output from the clustering algorithm is used to compute a specific distance measure (in the meta-feature space) between each vehicle trajectory and its cluster centre (centroid) in order to identify anomalous trajectories and thus potential attacks and/or to prioritize events handling and processing by a user.
[0133]
[0134] The computing device 10 comprises a processor 993 and memory 994. Optionally, the computing device also includes a network interface 997 for communication with other such computing devices, for example with other computing devices corresponding to invention embodiments. Optionally, the computing device also includes one or more input mechanisms such as keyboard and mouse 996, and a display unit such as one or more monitors 995. The components are connectable to one another via a bus 992.
[0135] The memory 994 may include a computer readable medium, which term may refer to a single medium or multiple media (e.g., a centralized or distributed database and/or associated caches and servers) configured to carry computer-executable instructions, such as in the form of computer program code. Computer-executable instructions may include, for example, instructions and data accessible by and causing a general purpose computer, special purpose computer, or special purpose processing device (e.g., one or more processors) to perform one or more functions or operations. For example, the computer-executable instructions may include those instructions for implementing method steps disclosed herein (method for anomaly detection, e.g. the method illustrated in
[0136] The processor 993 is configured to control the computing device and execute processing operations, for example executing computer program code stored in the memory 994 to implement any of the methods described herein. The memory 994 stores data being read and written by the processor 993, such as vehicle trajectory data and/or anomalous trajectories. As referred to herein, a processor may include one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. The processor may include a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. The processor may also include one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. In one or more embodiments, a processor is configured to execute instructions for performing the operations and operations discussed herein.
[0137] The display unit 995 may display a representation of data stored by the computing device and/or any outputs of the methods described herein, such as any of the graphs and/or lists described herein, and/or such as a determination of at least one anomalous vehicle trajectory and/or an alert indicating at least one anomalous vehicle trajectory described above, and may also display a cursor and dialog boxes and screens enabling interaction between a user and the programs and data stored on the computing device. The input mechanisms 996 may enable a user to input data and instructions to the computing device, such as input from a subject matter expert. The display unit 995 and/or input mechanisms 996 may be considered a user interface enabling interaction between a user and the computing device and/or any methods described herein.
[0138] The network interface (network I/F) 997 may be connected to a network, such as the Internet, and is connectable to other such computing devices via the network. The network I/F 997 may control data input/output from/to other apparatus via the network. Other peripheral devices such as microphone, speakers, printer, power supply unit, fan, case, scanner, trackerball etc may be included in the computing device.
[0139] Methods embodying the present invention may be carried out on a computing device/apparatus 10 such as that illustrated in
[0140] A method embodying the present invention may be carried out by a plurality of computing devices operating in cooperation with one another. One or more of the plurality of computing devices may be a data storage server storing at least a portion of the data.
[0141] The invention may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The invention may be implemented as a computer program or computer program product, i.e., a computer program tangibly embodied in a non-transitory information carrier, e.g., in a machine-readable storage device, or in a propagated signal, for execution by, or to control the operation of, one or more hardware modules.
[0142] A computer program may be in the form of a stand-alone program, a computer program portion or more than one computer program and may be written in any form of programming language, including compiled or interpreted languages, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a data processing environment. A computer program may be deployed to be executed on one module or on multiple modules at one site or distributed across multiple sites and interconnected by a communication network.
[0143] Method steps of the invention may be performed by one or more programmable processors executing a computer program to perform functions of the invention by operating on input data and generating output. Apparatus of the invention may be implemented as programmed hardware or as special purpose logic circuitry, including e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
[0144] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions coupled to one or more memory devices for storing instructions and data.
[0145] The above-described embodiments of the present invention may advantageously be used independently of any other of the embodiments or in any feasible combination with one or more others of the embodiments.