The present application relates generally to computers, and computer security, and more particularly to estimating asset sensitivity.
A growing number of advanced persistent threats and insider threats have demonstrated the capability of attacking specific highly sensitive entities in a government or company. The computer security community has recognized that not all IT assets have the same value or importance to the company, and, therefore, they require different levels of protection corresponding to their sensitivity and value. By prioritizing the security efforts and budget to better protect highly sensitive assets, organizations can reduce the security risk. Further, quantitative measurement of the sensitivity of IT assets enables other important applications such as intelligent file backup and business continuity planning.
To achieve this vision, all assets in an organization need to be assigned a sensitivity value that properly indicates the business value and criticality to the organization. Currently, the asset classification is primarily done manually by the system administrators with respect to the confidentiality, integrity and availability of the assets. However, there are limitations in the manual approach. For instance, it is very hard for a large organization to assign appropriate labels to all the assets in the organization. The number of assets in a large organization can grow huge, and, often, the assets are created and managed independently in different departments, so it is extremely hard to catalog and centrally manage all the assets. Additionally, most of the guidelines are descriptive and can be interpreted subjectively. Therefore, the classification of assets can differ significantly by different human judges. Furthermore, a coarse-grained (3 to 5-scale) type of ratings currently used in manual measurement may not provide the sufficient.
A method for automatically estimating a sensitivity level of an information technology (IT) asset, in one aspect, may comprise obtaining information about an asset. The method may also comprise assigning characteristics of the asset based on the information. The method may also comprise comparing the characteristics of the asset with stored characteristics of known sensitive assets. The method may further comprise determining a sensitivity level of the asset based on the comparing.
A system for automatically estimating a sensitivity level of an information technology (IT) asset, one aspect, may comprise an asset sensitivity estimator operable to execute on a processor and further operable to obtaining information about an asset. The asset sensitivity estimator may be further operable to compare characteristics of the asset assigned based on the information, with stored characteristics of known sensitive assets. The asset sensitivity estimator may be further operable to determine a sensitivity level of the asset based on the comparing.
A computer readable storage medium storing a program of instructions executable by a machine to perform one or more methods described herein also may be provided.
Further features as well as the structure and operation of various embodiments are described in detail below with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements.
In one embodiment of the present disclosure, system, methods and algorithms may be presented to automatically score and rank information technology (IT) assets in an enterprise, such as computer systems or data files, by their business value and criticality to the organization. Semi-automatic machine learning algorithms may be provided to automatically estimate the sensitivity of assets, e.g., by using information associated with the users. In one embodiment, the methods of the present disclosure do not require direct access to the target assets or privileged knowledge about the assets, resulting in an efficient, scalable and privacy-preserving approach. Instead, the methods in one embodiment of the present disclosure may rely on external information such as the attributes of the users, their access patterns and other published data content by the users.
The methods in one embodiment of the present disclosure may semi-automatically score various assets within an enterprise using information about the users. In one embodiment of the present disclosure, asset values may be determined using automatically extracted features that are generic to various asset types including data and network assets. In one embodiment of the present disclosure, only information about the users of the target asset may be used, e.g., including attributes of the users, their access patterns and externally published data by the users such as personal (if permitted by the user) and project web pages and files shared by the users. This type of information can be extracted without requiring direct access to the target asset or detailed knowledge about the asset, such as the owner of the asset and the sensitivity of the data in the asset.
There may be many different aspects for an asset being considered sensitive, and the criterion can change over time. For instance, a computer is considered very sensitive because it stores sensitive data (i.e., confidentiality), or it hosts important applications for the business (i.e., availability). Based on these observations, the methods of the present disclosure may apply instance-based learning approaches, making the system domain independent and easy to adapt to new sensitive asset types. Given a small set of known sensitive assets, the methods of the present disclosure in one embodiment may learn their characteristics and score other sensitive assets using the models. In one embodiment of the present disclosure, a kNN (Nearest Neighbor)-based method, a clustering-based method and the kNN-based method with distance metric learning techniques are considered.
The methods in one embodiment of the present disclosure rely on meta-level information that can be extracted from most IT assets in the same way. This domain-independent set of features allows the methods of the present disclosure to be applicable to many different IT asset types. Extracting of the meta-level features does not require direct access to the target assets or privileged knowledge about the assets, and, thus, allows the methods of the present disclosure in one embodiment to be efficient and easily scalable to a large set of heterogeneous assets. In one aspect, a system of the present disclosure assigns a quantitative value to each asset rather than a coarse-grained set of labels, allowing companies to adopt more fine-grained security measures. In another aspect, semi-supervised machine learning methods of the present disclosure learn the characteristics of sensitive assets from a small number of examples.
The asset may be thus characterized according to the features obtained at 102. At 104, those characteristics (e.g., assigned normalized feature values) of the asset are used to estimate its sensitivity level by comparing the characteristics with stored characteristics of known sensitive assets. The stored characteristics of known sensitive assets, for example, may also be determined by obtaining the above-described features (e.g., user features, usage features and external content features), and normalizing the data values associated with those features. For example, given a set of known sensitive assets, characteristics may be assigned to those known sensitive assets based on the features. At 106, the sensitivity level of the asset may be determined based on the comparing. The processing of 104 and 106, which may utilize one or more machine learning algorithms are also described in more detail below.
Meta-Level Features of Assets
A method in one embodiment of the present disclosure may identify a set of features that can be uniformly used for different asset types and be extracted without having to access the target asset or privileged knowledge about the asset. Such set of features allows the system to provide a good estimate for potentially sensitive assets in an efficient and scalable manner. Examples of such features may include features from different types of knowledge, e.g., three kinds of knowledge—who accesses the asset (user features), how they access the asset (usage features) and what kinds of tasks or projects the users work on (external content features). Table 1 describes examples of the high-level feature categories.
User Features
User attributes such as job roles and the rank in the organization can affect the sensitivity of the asset. For instance, an asset used primarily by executives would elevate the sensitivity of the asset. To extract the attributes of the users, a method in one embodiment of the present disclosure may identify the users of the asset. The users may be identified by analyzing the access logs. Some access logs, such as logs for a file repository or a system log-on, typically contain the user accounts, thus, identifying the users is straightforward for these assets. For computer network assets, user accounts are generally not available in the logs (e.g., Domain Name Service (DNS) logs). Instead, the logs contain the Internet Protocol (IP) address from which the lookup was requested. The process of determining which user is performing a DNS lookup is not a trivial task. In most situations, a method in one embodiment of the present disclosure may first find the most likely candidate user who is assigned to a specific IP address during a specific time period. The resolution of an IP address to a user becomes more challenging in a dynamic system with many different ways to access the network and with a large set of users. Users can log into the network over WiFi or using an ethernet cable, or from remote locations via VPN (virtual private network).
For computers in a network, a method in one embodiment of the present disclosure may perform the IP address to user mapping using various sources including, e.g., media access control (MAC) addresses, application (e.g., internal web portals) logs, and WiFi logs. If the MAC address is present, then, during a Dynamic Host Configuration Protocol (DHCP) session setup, a method in one embodiment of the present disclosure can correlate the MAC address used for that session to the IP address that is assigned, which, in turn, can provide an IP to user mapping. However, the MAC addresses are not reliable for users using operating systems like OS X and are often unavailable when new devices are introduced. To alleviate the limitations, a method in one embodiment of the present disclosure may also use application and WiFi logs for the user mapping. The application level logs can correlate the act of a user logging into an application (such as an internal web portal) to an IP address. The WiFi logs can correlate a user establishing a connection to the WiFi with the authentication credentials that are used to log in to the system. In one embodiment, a method of the present disclosure may discard DNS lookups for which the method is unable to identify the user and logs that are resolved to more than one user (i.e., ambiguous logs).
After obtaining the set of users of an asset, a method in one embodiment of the present disclosure extract various user attributes that can indicate the users' job roles and the sensitivity of the data they generate. Table 1 shows examples of high-level categories of the user attributes that may be extracted. Examples of extracted user attributes may include Manager, NonManager, Rank-High, Rank-Middle, Rank-Low, and a number of different job roles defined in the company such as IT Specialist, Human Resources and Finance. These attributes can be extracted from companies' employee directory. The feature value of each feature is the number of users who possess the attribute. For instance, if 100 managers, 500 non-manager employees and 1 high-rank employee accessed the asset, the asset is represented Manager=100, NonManager=500 and Rank-High=1.
Usage Features
The access patterns of the users add additional insights on the sensitivity of an asset. For instance, a user who occasionally uses the asset will have less impact than a user who uses the asset frequently. On the other hand, if a user's access pattern is very regular (e.g., every day at 5 am), that may indicate that the user is running an automated job (e.g., file backup), so the accesses should not affect much on the asset's sensitivity. Analyzing typical daily DNS lookup activities may reveal a number of unique domains accessed per user in a single day. For instance, the data may show that most users access 20 to 30 different domains in a day, while a few users connect to over 200 different domains.
A method of the present disclosure in one embodiment may analyze access logs with the timestamps to discover the frequency of a user's access and the patterns of the accesses. A method in one embodiment of the present disclosure may first group the logs by each pair of a user and an asset, and record the number of log entries as the access frequency of the user to the asset. A method in one embodiment of the present disclosure may categorize the access frequency, e.g., into Heavy or Light using a pre-defined threshold. Further, a method in one embodiment of the present disclosure may determine if a connection to the asset is done through an automated access or a manual access (i.e., access pattern). It may be observed that automated accesses tend to be regular, for instance, once a day at 4 am or once every hour, while human accesses are more sporadic. Thus, automated accesses may be more predictable while human accesses may be more uncertain. Based on this observation, a method in one embodiment of the present disclosure may apply the Shannon entropy, H(X), which measures the uncertainty in a random variable to determine the access patterns.
The entropy of user accesses may be measured as follows in one embodiment of the present disclosure. First, for each user and asset pair, a method in one embodiment of the present disclosure may split all the accesses over each hour of the day (i.e., grouping accesses into 24 time slots) or another time period. For instance, a method in one embodiment of the present disclosure may count how many accesses a user initiated at the 9 am-9:59 am period in the logs collected over a long period time (e.g., one year).
By combining the access frequency and the access pattern features, a method of the present disclosure in one embodiment may generate 6 usage features: RegularHeavy, RegularLight, Semi-regularHeavy, Semi-regularLight, IrregularHeavy and IrregularLight. If the accesses by a user to an asset exhibit a regular pattern (i.e., low entropy), and the user has a large number of accesses, it is considered as RegularHeavy. On the other hand, if the access pattern is irregular (i.e., high entropy) and the access count is low, then it is considered as IrregularLight. Similarly to the user features, the number of users that exhibit a certain access pattern is the feature value for the asset, i.e., how many users access the asset using RegularHeavy or RegularLight pattern.
External Content Features
The sensitivity of an asset is dependent largely on how sensitive the data in the asset are, and, thus, the topics of data in the assets can be good indicators of the asset sensitivity. In one aspect, when content inspection can be performed, the sensitivity can be measured by known techniques. When direct content inspection is not feasible, a method of the present disclosure in one embodiment may use external data contents generated by the users as a substitute. External contents of a user can include any documents or data sources the user produced outside the target asset, such as papers, patents, and project webpages. These external contents are used to conjure the user's job responsibilities and the tasks the user is working on. In one aspect, a method of the present disclosure in one embodiment may only extract the contents that can be accessed without an access permission to the host system. Some examples of external data content include: published documents such as patents and papers, titles of files the user has shared in a file-sharing site, wiki or project websites of which the user is a member, personal webpages, blogs created by the user, tags the users added on webpages.
A method of the present disclosure in one embodiment may generate a document representation of an asset. Once the document representation of an asset is generated, a set of assets can be considered as a collection of documents. The document collection for all assets in an organization typically contains a large number of words. Treating individual words as features will result in a very high dimensional feature space and data sparseness issues. To reduce the dimensionality, a method of the present disclosure in one embodiment may group the words into topics, and use the topics as the content features. Each asset is then represented as the probability distributions over the discovered topics.
Feature Normalization
Machine learning methods depend on the selection of features, as the data are represented as points in a multi-dimensional feature space, where a feature corresponds to axes. Another consideration is the range of feature values. Most data mining and machine learning algorithms rely on a metric or a distance function to evaluate how similar two data points are in the feature space. When there is a large difference in the range of the feature values along different axes, these metrics implicitly assign higher weights to features with larger ranges. To mitigate the effect, a feature normalization technique is applied that converts all features into an equal range.
In one embodiment of the present disclosure, the values of the user and usage features are considered the counts of the features in the target asset, while the content topic features are considered the probabilities in a range of [0, 1]. The raw count values, especially for the usage features, can grow very large when the data set is collected over a long time period. A method of the present disclosure in one embodiment may normalize the user and usage features using the cumulative distribution function (CDF). CDF-based feature normalization is performed as follows. Given a random variable xεR with cumulative distribution function Fx(x), the normalized feature value, {tilde over (x)}, of x is defined as {tilde over (x)}=Fx(x) which is uniformly distributed in [0, 1].
Sensitivity Estimation Algorithms
The following illustrates algorithms for estimating the sensitivity of assets in one embodiment of the present disclosure. There may be many different aspects that make an asset sensitive to the organization. For instance, an asset is considered sensitive because it contains sensitive business data, or it hosts important applications. Based on these observations, a method of the present disclosure in one embodiment may apply instance-based learning approaches, in which the method learns the characteristics of sensitive assets from a small number of known sensitive assets. Therefore, the methods in the present disclosure in one embodiment do not require prior knowledge about the domain or the target assets, making the algorithms very flexible and easy to adapt to new domains. Examples of semi-supervised machine learning approaches may include: a kNN-based method, a clustering-based method, and the kNN method with distance metric learning techniques.
kNN-Based Method
The k-nearest neighbor classification is a type of instance-based learning which assigns a new data point to the majority class among its k nearest neighbors from the training data set. The k NN approach is flexible and non-parametric, and no assumption is made about the probability distribution of the features. The similarity is computed based on the distances between feature vectors in the feature space.
More formally, let X={x1, . . . , xn} be the training data set, and Y={y1, . . . , yc} be the set of classes. In the basic kNN classification, the class for a new data point x is defined as argmax
where ω(d(x, xj)) is a weight function that is inversely related to the distance d (x, xj).
In one embodiment, a method of the present disclosure may extend the weighted k NN approach and compute the sensitivity of a new asset based on the distance to its kNN assets in the training data and the sensitivity scores of the kNN assets. When the sensitivity scores are not provided for the training data, a method of the present disclosure in one embodiment can assign the same value to all the training data. The sensitivity of a new asset A, V(A), is then defined as a weighted average score of its k-nearest neighbors among the known sensitive assets, {S1, . . . , Sk}.
V(Si) is the sensitivity value of Si, and e−d(A,S
Clustering-Based Method
The clustering-based method considers that the assets are from many different business units such as product development groups, HR or Finance department, and, therefore, they will naturally form distinct groups. Suppose only one sensitive asset from the HR department is included in the training data. With the kNN method with k>1, the sensitivity of assets from the HR department will be measured with assets from other departments. By taking into account the subgroups in the dataset, a method of the present disclosure in one embodiment may determine the sensitivity level of an asset using the sensitive assets from the same subgroup.
First, a clustering technique is used to discover these underlying subgroups in the data set. A method of the present disclosure in one embodiment may then generate the centroid of the sensitive assets in each cluster, which is the mean of the sensitive assets in the cluster. Similarly to the kNN-based method, a method of the present disclosure in one embodiment may measure the sensitivity of an asset A as the weighted average score of the k-nearest centroids as described in Algorithm 2. The difference of the kNN-based approach and the clustering-based approach is illustrated in
kNN Method with Distance Metric Learning
The accuracy of many machine learning algorithms including both kNN classification and clustering depend on the distance (or similarity) metric used for the input data. However, when the data are in a high-dimensional space, the selection of an optimal distance metric is not intuitive. Distance metric learning is a machine learning technique that aims to automatically learn a distance metric for the input data from a given set of labeled data points. The basic idea is to learn a distance metric that puts instances from a same class closer each other and instances from different classes far apart. An automatically learned distance metric improves the accuracy of classification, clustering and retrieval tasks.
Distance metric learning algorithms are further divided into global distance metric learning and local distance metric learning. Global distance metric learning algorithms learn a distance metric that satisfy all the pairwise constraints, i.e., keep all the data points within the same classes close, while separating all the data points from different classes. Local distance metric learning algorithms, on the other hand, learn a distance metric satisfying local constraints.
A method in one embodiment of the present disclosure may apply a global distance learning algorithm and a local distance metric learning algorithm to transform the feature space. For global learning, a method in one embodiment of the present disclosure may apply Relevant Component Analysis (RCA) to learn a distance metric. The RCA-based distant metric learning algorithm learns a Mahalanobis distance metric using only equivalence constraints (i.e., instances in the same class) and finds a new feature space with the most relevant features from the constraints. It maximizes the similarity between the original data set X and the new representation Y constrained by the mutual information I(X, Y). By projecting X into the new space through feature transformation, two data objects from the same class have a smaller distance in Y than in X. For local distance metric learning, a method in one embodiment of the present disclosure may apply the Large Margin Nearest Neighbor (LMNN) distance learning algorithm. The LMNN algorithm also learns a Mahalanobis distance metric, but it identifies k-nearest neighbors, determined by Euclidean distance, that share the same label and enforces the k-nearest neighbors belong to the same class while instances from different classes are separated by a large margin.
After the feature space projection using the distance metric learning algorithms, a method in one embodiment of the present disclosure may apply the k NN-based sensitivity estimation method as described in Algorithm 1.
In one aspect, the problem of identifying sensitive assets can be characterized as an information retrieval (IR) problem—finding relevant (sensitive) assets in a large collection of assets and ranking them according to their relevance.
The computer system may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. The computer system may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices.
The components of computer system may include, but are not limited to, one or more processors or processing units 12, a system memory 16, and a bus 14 that couples various system components including system memory 16 to processor 12. The processor 12 may include an asset sensitivity module 10 that performs the methods described herein. The module 10 may be programmed into the integrated circuits of the processor 12, or loaded from memory 16, storage device 18, or network 24 or combinations thereof.
Bus 14 may represent one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus.
Computer system may include a variety of computer system readable media. Such media may be any available media that is accessible by computer system, and it may include both volatile and non-volatile media, removable and non-removable media.
System memory 16 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) and/or cache memory or others. Computer system may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system 18 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (e.g., a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus 14 by one or more data media interfaces.
Computer system may also communicate with one or more external devices 26 such as a keyboard, a pointing device, a display 28, etc.; one or more devices that enable a user to interact with computer system; and/or any devices (e.g., network card, modem, etc.) that enable computer system to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces 20.
Still yet, computer system can communicate with one or more networks 24 such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 22. As depicted, network adapter 22 communicates with the other components of computer system via bus 14. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system. Examples include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages, a scripting language such as Perl, VBS or similar languages, and/or functional languages such as Lisp and ML and logic-oriented languages such as Prolog. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The computer program product may comprise all the respective features enabling the implementation of the methodology described herein, and which—when loaded in a computer system—is able to carry out the methods. Computer program, software program, program, or software, in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements, if any, in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
Various aspects of the present disclosure may be embodied as a program, software, or computer instructions embodied in a computer or machine usable or readable medium, which causes the computer or machine to perform the steps of the method when executed on the computer, processor, and/or machine. A program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform various functionalities and methods described in the present disclosure is also provided.
The system and method of the present disclosure may be implemented and run on a general-purpose computer or special-purpose computer system. The terms “computer system” and “computer network” as may be used in the present application may include a variety of combinations of fixed and/or portable computer hardware, software, peripherals, and storage devices. The computer system may include a plurality of individual components that are networked or otherwise linked to perform collaboratively, or may include one or more stand-alone components. The hardware and software components of the computer system of the present application may include and may be included within fixed and portable devices such as desktop, laptop, and/or server. A module may be a component of a device, software, program, or system that implements some “functionality”, which can be embodied as software, hardware, firmware, electronic circuitry, or etc.
The embodiments described above are illustrative examples and it should not be construed that the present invention is limited to these particular embodiments. Thus, various changes and modifications may be effected by one skilled in the art without departing from the spirit or scope of the invention as defined in the appended claims.
This application is a continuation of U.S. Ser. No. 13/939,402, filed on Jul. 11, 2013, which claims the benefit of U.S. Provisional Application No. 61/810,251, filed on Apr. 9, 2013, which is incorporated by reference herein in its entirety.
Number | Date | Country | |
---|---|---|---|
61810251 | Apr 2013 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13939402 | Jul 2013 | US |
Child | 13963750 | US |