The present disclosure generally relates to predictive cyber technologies; and in particular, to systems and methods for vulnerability-based risk transfer for cyber security.
An increasing number of software (and hardware) vulnerabilities are discovered and publicly disclosed every year. In 2016 alone, more than 10,000 vulnerability identifiers were assigned and at least 6,000 were publicly disclosed by the National Institute of Standards and Technology (NIST). Once the vulnerabilities are disclosed publicly, the likelihood of those vulnerabilities being exploited increases. With limited resources, organizations often look to prioritize which vulnerabilities to patch by assessing the impact it will have on the organization if exploited. Standard risk assessment systems such as Common Vulnerability Scoring System (CVSS), Microsoft Exploitability Index, Adobe Priority Rating report many vulnerabilities as severe and will be exploited to err on the side of caution. This does not alleviate the problem much since the majority of the flagged vulnerabilities will not be attacked.
NIST provides the National Vulnerability Database (NVD) which comprises of a comprehensive list of vulnerabilities disclosed, but only a small fraction of those vulnerabilities (less than 3%) are found to be exploited in the wild—a result confirmed in the present disclosure. Further, it has been found that the CVSS score provided by NIST is not an effective predictor of vulnerabilities being exploited.
It is with these observations in mind, among others, that various aspects of the present disclosure were conceived and developed.
Corresponding reference characters indicate corresponding elements among the view of the drawings. The headings used in the figures do not limit the scope of the claims.
Aspects of the present disclosure relate to a computer-implemented system and associated methods for vulnerability-based cyber risk transfer to improve cyber security. In particular, a computer-implemented system (“system”) is disclosed that accesses cybersecurity/cyber threat information (to include, but not limited to information about threats) from various sources including the deep web, dark web, social media, open Internet and/or private or proprietary data sources. In general, this information is then processed as described to map, or generate mappings of technology configurations, such as exemplary technology stacks, to one or more vulnerabilities. Each mapping generated may define a predicted level of risk that a vulnerability will be exploited for whatever reason. In addition, exemplary technology configurations may be compared with new/different or “subject” technology configurations to assess possible vulnerabilities to the subject technology configuration. In general, the following embodiments provide a technical improvement to cyber security including cyber threat patching and prioritization, and are further responsive to the various technical challenges associated with threat assessment and response.
Referring to
As indicated, via the network interface 108 or otherwise, the computing device 102 is adapted to access cybersecurity and/or cyber threat data (hereinafter data 112) from a host server 120 which may be stored/aggregated within a storage device (not shown) or locally stored within the memory 106. The data 112 includes any information about cybersecurity events across multiple technology platforms referenced herein, information about known vulnerabilities associated with hardware and software components exploited during the cybersecurity events or otherwise, and may further include, without limitation, information gathered regarding possible hardware and software components/parameters being implemented by a given technology configuration (e.g., hardware and/or software) associated with a company. The data 112 may originate from sources including the deep web, dark web, social media, open Internet and/or private or proprietary data sources.
As shown, the computing device 102 is adapted, via the network interface 108 or otherwise, to access the data 112 from any number or type of sources, such as the deep or dark web, collectively “D2web” 118, and/or the World Wide Web 126. The dark web of the D2web 118, sometimes referred to as deep web, can refer to interconnected networks of computers accessible by the Internet, but that require specific software, configurations, or authorization to access. In some embodiments, the computing device 102 accesses the data 112 by engaging an application programming interface 119 to establish a temporary communication link with the host server 120. Alternatively, or in combination, the computing device 102 may be configured to implement a crawler 124 (or spider or the like) to extract data from the D2web 118 without aid of a separate device (e.g., host server 120). In some embodiments, host server 120 executes specific software, holds a specific configuration, or is capable of providing specific authorization to aid in accessing D2web 118. In some embodiments, computing device 102, crawler 124, or API 119 access D2web 118 using (or, with the aid of) the specific software, configuration, or authorization provided by host server 120. Further, the computing device 102 may access the data 112 from the general Internet or World Wide Web 126 as needed, with or without aid from the host server 120.
The data 112 may define any number of datasets and may be aggregated or accessed by the computing device 102 may be stored within a database 128. Once the data 112 is accessed and/or at least temporarily stored in the database 128, the processor 104 is operable to execute a plurality of services 130 to apply one or more functions to the data 112 or to leverage the data in some form so as to determine correlations, generate mappings, and/or generate rules or predictive functions, as further described herein. The services 130 of the system 100 may include, without limitation, a filtering and preprocessing service 130A for, in general, preparing the data 112 for machine learning or further use. Services 130 further include a mapping service 130B for mapping an exemplary technology configuration or exemplary technology stack (ETS), which may include one or more specific hardware and/or software configurations, with one or more vulnerabilities based on the data 112 and also for identifying commonalities between separate technology configurations or stacks. Services 130 also include a cyber-risk comparison service 130C that compares a given technology configuration (e.g., an implemented hardware and/or software configuration under evaluation) with an ETS to assess possible risk of a possible cyber-attack to the given technology configuration, as further described herein. The plurality of services 130 may include any number of components or modules executed by the processor 104 or otherwise implemented. Accordingly, in some embodiments, one or more of the plurality of services 130 may be implemented as code and/or machine-executable instructions executable by the processor 104 that may represent one or more of a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, an object, a software package, a class, or any combination of instructions, data structures, or program statements, and the like. In other words, one or more of the plurality of services 130 described herein may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks (e.g., a computer-program product) may be stored in a computer-readable or machine-readable medium (e.g., the memory 106), and the processor 104 performs the tasks defined by the code.
As shown, the system 100 may further provide a portal or interface (e.g., 114) executable by a remote computing device (e.g., computing device 116 that can be remote relative to computing device 102) that may be leveraged to facilitate comparison of an exemplary technology configuration or stack (ETS) to a new or different/subject technology configuration such as a software or hardware platform associated with some entity, or a configuration of hardware and/or software that is implemented by a client. In this manner, for example, possible commonalities between a new, subject, given, or pre-evaluation technology configuration and an exemplary technology configuration can be evaluated so as to inform about possible vulnerabilities to the new technology configuration already known to be relevant to the exemplary technology configuration. For example, where an exemplary technology configuration/stack has been mapped to a vulnerability V, and a new technology configuration/stack under computer analysis is similar to or shares some aspects of the exemplary technology configuration/stack, the computing device 102 informs that the new technology configuration/stack is likely to be or is already exposed to the vulnerability V in some form.
Referring now to a process flow diagram 200 of
In one specific embodiment, using the API 119, the dataset may be acquired from a remote database hosted by, e.g., host server 120. In this embodiment, the host server 120 gathers D2web or deep/dark web data from any number of D2web sites or platforms accessible via D2web 118, and makes the data accessible to other devices over the Internet or the World Wide Web 126. More particularly, the computing device 102 issues an API call to the host server 120 using the API 119 to establish a RESTful Hypertext Transfer Protocol Secure (HTTPS) connection over the Internet or World Wide Web 126. Then, the data 112 can be transmitted to the computing device 102 in an HTTP response with content provided in key-value pairs (e.g., JSON).
Referring to block 204 and the filtering and preprocessing service 130A executable by the computing device 102, the dataset may be preprocessed by, e.g., cleaning the dataset in some form, filtering the dataset, changing the format of the dataset, or modeling the dataset in some predetermined fashion. For example, in some embodiments, the dataset may be processed by applying text translation, topic modeling, content tagging, social network analysis, or any number or combination of artificial intelligence methods. Any of such data cleaning techniques can be used to filter content of the dataset from other content commonly discussed in the D2web 118 such as drug-related discussions or pornography, and to format the data 112 as desired. In some embodiments, the present step of block 204 results, by the processor 104 in the extraction of parameters or features (e.g., as shown in
Referring to block 206, the processor 104 may execute the mapping service 130B to identify one or more exemplary technology configurations from the dataset based on a predetermined size and/or predetermined industry vertical, and then map the exemplary technology configurations to at least one vulnerability known to affect one or more of the exemplary technology configurations. For example, a given one of the exemplary technology configurations of an industry vertical may define a computing environment running Windows Server 2008 on an IBM computing device, and it may be discovered via the dataset that such an exemplary technology configuration is susceptible or vulnerable to a Attack Vector V (which may include, for example, malware, exploits, the known use of common system misconfigurations, or other attack methodology), based on e.g., historical cyber-attacks.
Referring to blocks 208 and 210, the processor 104 may further execute functionality from the mapping service 130B and the comparison service 130C to (i) identify parameters of a subject technology configuration that needs to be analyzed for whatever reason, and (ii) determine possible risk to the subject technology configuration (based on what is already know from the attack vector V and one or more exemplary technology configurations). For example, the leveraging data mining or other means, the processor 104 may access information that a developer associated with the subject technology configuration has visited an IBM-related blog website, and inquired about Windows Server 2008, such that it may be assumed that the subject technology configuration at least includes an IBM device running Windows Server 2008. Accordingly, the processor 104 as configured may then extrapolate further and indicate that the subject technology configuration should be assigned some risk indication that the configuration could be affected by the Attack Vector V. The aforementioned is intended to merely describe a general computer-implemented system and method of leveraging vulnerabilities of a given industry vertical to assess cyber risk to a subject technology configuration associated with the industry vertical. Additional embodiments and sub-embodiments shall now be provided.
Referring to the aforementioned and
As shown in
i. A database D 302 is accessed or generated by the computing device 102, where the database D 302 comprises information about technology configurations (hardware and software) of subject organizations identified by a desired categorization (i.e. industry vertical). Associated with each of the subject organizations is a set of cybersecurity attack incident records and/or vulnerability records; the time period for such records being the same across all organizations catalogued in D. For a given organization O in D, the notation A(O) may be applied to denote the associated vulnerability or attack records.
Turning to
In the first column of
Below the historical cybersecurity event data 312 illustrated by
Below the listings of vulnerability 314 associated with attack records for the organizations, industry vertical classifications 316 for each attacked company in the historical cybersecurity event data 312 are shown and can be computed by the processor 104 as configured. Referencing the notation above, the industry vertical classifications 316 can be represented by C(O), where O are the organizations whose historical cybersecurity events are under evaluation.
The second column 320 of
The third column 330 of
The fourth column 340 of
Process 350 includes step 352, where, as described above, computing device 102 retrieves historical cybersecurity event data such as event information of the data 112 stored and maintained by host server 120, represented as a table of historical cybersecurity event data 312 in connection with
Process 350 further includes step 354, where computing device 102 retrieves vulnerabilities 314 associated with each attack in the historical cybersecurity event data 312. Vulnerabilities 314 may include a list of software vulnerabilities (each associated with a CVE number) or hardware vulnerabilities (each associated with a CPE numbers) relating to the particular attacks in the attack records of historical cybersecurity event data 312. Taking a set V(A) to represent all the vulnerabilities associated with attack records A, the vulnerabilities 314 associated with each attack in the historical cybersecurity event data can be represented as V(A(O)), using the notation referenced above.
Process 350 continues to step 356, where computing device 102 retrieves industry vertical classifications 316 for each attacked company in the historical cybersecurity event data 312. Industry vertical classifications 316 allow the configurations associated with each historical cybersecurity attack to be classified with a representative category or classification that subject technology configurations can be compared to, as a parameter (e.g., in step 210 of
Process 350 continues to step 358, where retrieved vulnerabilities 314 are augmented with metadata specifying vulnerable hardware and/or software stacks. As mentioned above, vulnerabilities 314 may be associated with a CVE or CPE number. At step 358, vulnerabilities 314 associated with a particular CVE number may be augmented with metadata specifying the name or other details of actual vulnerable software or software configurations associated with the particular CVE number. Similarly, vulnerabilities 314 associated with a particular CPE number may be augmented with metadata specifying the name or other details of actual vulnerable hardware or hardware configurations associated with the particular CPE number. Augmenting the vulnerabilities 314 with the metadata specifying actual configurations associated with the CVE/CPE numbers for each vulnerability produces metadata-augmented vulnerability data 322.
Process 350 Further includes step 360, where historical cybersecurity event data 312 is joined with retrieved vulnerabilities 314 associated with each attack, to create a first mapping such as the first table 332 in the third column 330 of
Process 350 further includes step 362, where retrieved industry vertical classifications 316 are joined with the first mapping (e.g., first table 332) to create a second mapping (e.g., second table 334 in the third column 330 of
Process 350 further includes step 364, where metadata-augmented vulnerability data 322 is joined with the second mapping or second table 334, to create an exemplary technology configuration. Metadata-augmented vulnerability data 322 maps vulnerabilities V(A(O)) to particular hardware/software configurations associated with the respective vulnerability identifier (e.g., a CVE/CPE number). Joining metadata-augmented vulnerability data 322 with the second mapping or second table 334, which maps industry vertical categories or classifications C(O) to vulnerabilities V(A(O)) in the form of their vulnerability identifier, produces a mapping between industry vertical categories or classifications C(O) to the particular hardware/software configurations associated with the vulnerability identifier (e.g., T(C(O)), using the notation used above). Such mappings are referred to as exemplary technology configurations 342.
Referencing
An example of this embodiment 400 is similar to embodiment 300 except that rather than assuming the existence of database D, a similar database D 402 may be created through web-scraping technology concerning software running in various organizations. In such a scheme, web crawlers and parsers would be created for various data sources and the results of the crawling are stored in the database 402 established under a common schema
It may be the case that some of the data collected will be listed by Categories (i.e. industry vertical) directly as opposed to Organizations. If data is collected in this manner, then for each category, for a given category C, set T(C(D)) described above is created directly based on category C as opposed to created based on a set of organizations (set C(D)).
In another sub-embodiment 500 of embodiment 400 (e.g., an embodiment 500 considered to be an optional addition or variation to embodiment 400), the system 100 considers sets of exemplary technology configurations such as exemplary technology stacks (ETSs) across multiple industry verticals to apply analysis of cyber threats to a portfolio of software and/or hardware platforms. For example, given a portfolio of companies, this system may take as input information about how many companies in the portfolio belong to each industry vertical. The embodiment 500 of the system 100 would then produce ETSs (either pre-computed or computed on the fly) leveraging functionality and features of the aforementioned embodiments of
To further illustrate by example, in this embodiment 500, suppose we have a portfolio or organizations P. For each organization O in P, we have an associated category, c(P). Produced by the embodiment 300 or the embodiment 400 of the system 100, fora given category C, we access/generate an associated Exemplar Technology Configuration e(C).
Using other technology, such as CYR3CON's OEM offering (https://www.cyr3con.ai/oem), each technology in e(C) can then be mapped to a quantified prediction of a cyber threat relating to vulnerabilities in that software (i.e. release of an exploit).
Turning to
In the first column 410 of
Below the exemplary technology configurations 412 illustrated by
The second column 420 of
Process 450 further includes step 454, where predictive threat data specifying vulnerabilities 414 anticipated to be targeted in a cybersecurity attack are retrieved. Vulnerabilities 414 may be identified by a machine learning model trained on historical attack data and exemplary technology stacks (ETSs) that enable the prediction of future attacks over a given period of time for a particular exemplary technology stack (e.g., exemplary technology configurations 412). Each of the vulnerabilities 414 may be associated with a respective vulnerability identifier (e.g., a CVE/CPE number).
Process 450 further includes step 456, where predictive threat data such as vulnerabilities 414 are augmented with metadata specifying vulnerable hardware and/or software stacks. As mentioned above, vulnerabilities 414 may be associated with a CVE or CPE number. At step 456, vulnerabilities 414 associated with a particular CVE number may be augmented with metadata specifying the name or other details of actual vulnerable software or software configurations associated with the particular CVE number. Similarly, vulnerabilities 414 associated with a particular CPE number may be augmented with metadata specifying the name or other details of actual vulnerable hardware or hardware configurations associated with the particular CPE number. Augmenting the vulnerabilities 414 with the metadata specifying actual configurations associated with the CVE/CPE numbers for each vulnerability produces metadata-augmented vulnerability data 422.
Process 450 further includes step 458, where metadata-augmented vulnerability data 422 is joined with vulnerabilities 414 to create a threat map 432 that maps predicted threats to the actual software and/or hardware configurations associated with the CVE/CPE numbers for each vulnerability 414 of the predictive threat data.
In another embodiment 600 shown in
For example:
Turning to
Process 650 begins at step 652, where services 130 (e.g., risk comparison service 130C) executing at computing device 102 receive subject technology stack/configuration information. Subject technology stack/configuration information includes information about the specific software and/or hardware configurations used in the subject technology stack, as well as the specific vulnerabilities associated with the specific software and/or hardware configurations.
Process 650 continues to step 654, where exploitation probabilities associated with each of the specific vulnerabilities in the subject technology stack/configuration information are assessed or otherwise determined. Each exploitation probability represents a probability that its associated vulnerability in the subject technology stack/configuration will be exploited within a certain time period (e.g., 1 month, 1 year, 2 years, etc.) and can be based on historical data or a machine learning model used to predict threats to the specific software and/or hardware used in the subject technology stack/configuration. At step 656, these exploitation probabilities are summed to determine an overall exploitation probability for the subject technology stack/configuration. The overall exploitation probability represents a probability that any of the vulnerabilities associated with the subject technology stack/configuration will be exploited within a certain time period (e.g., 1 month, 1 year, 2 years, etc.).
Process 650 continues to step 658, where exemplary technology configuration information for a generic or standard company in the same industry vertical category as the subject technology stack/configuration is retrieved or otherwise determined by computing device 102. Using the above referenced notation, the exemplary technology configuration for industry vertical classification or category C is represented by e(C).
Process 650 continues to step 660, where exploitation probabilities associated with each of the specific vulnerabilities in the exemplary technology stack/configuration information e(C) are assessed or otherwise determined. Each exploitation probability represents a probability that its associated vulnerability in the exemplary technology stack/configuration will be exploited within a certain time period (e.g., 1 month, 1 year, 2 years, etc.) and can be based on historical data or a machine learning model used to predict threats to the specific software and/or hardware used in the exemplary technology stack/configuration. At step 662, these exploitation probabilities are summed to determine an overall exploitation probability for the exemplary technology stack/configuration, e(C). The overall exploitation probability represents a probability that any of the vulnerabilities associated with the exemplary technology stack/configuration will be exploited within a certain time period (e.g., 1 month, 1 year, 2 years, etc.).
Process 650 continues to step 664, where a risk differential between the overall exploitation probability for the subject technology stack/configuration and the overall exploitation probability for the exemplary technology stack/configuration e(C). The risk differential provides a quantified measure or metric of how much additional risk the subject technology stack/configuration is exposed to on account of its specific vulnerabilities, relative to a risk level (e.g., the overall exploitation probability) that the exemplary technology stack/configuration e(C) is exposed to.
Process 550 continues to step 668, where alerts are generated in response to determining a positive risk differential in step 664. A positive risk differential indicates an increased risk of exploitation in the subject technology stack/configuration relative to an exemplary technology stack/configuration e(C). The alerts generated at step 668 specify improvements (e.g., patches, hardening operations, or other counter-measures to cyber threats) that can reduce the overall exploitation probability for the subject technology stack/configuration to a level that is equal to or below the overall exploitation probability for the exemplary technology stack/configuration (e.g., minimize the risk differential calculated at step 564).
In another embodiment 700 shown in
In another embodiment (not shown), the system 100 is configured to predict an expected number of attacks over a given predetermined time period based on software configurations. For example, the system 100 takes as input a set of (one or more) ETSs associated with a given group (consisting of one or more) and predicts the expected number of attacks over a period of time (i.e. 1 year). This system then uses a machine learning model—trained on a historical corpus of attack data (and associated ETSs) that enable the prediction of the expected number of attacks over a given period of time (i.e. 1 year) for a new ETS. It is noteworthy that an ETS can change over time, so that the ETSs used for the historical training may be different from the ETSs used as input for the prediction. This is acceptable as such a machine learning model (executed by the computing device 102 or otherwise implemented) would extract features either directly from the ETS and/or augmented through additional data (i.e. threat intelligence). Further, a prediction can also be made based on the specific software configuration of a specific company (in other words, not using the ETS) in order to predict expected attacks for that specific company.
In another embodiment (not shown), the system 100 is configured for transferring risk based on the differential between a given technology platform and an associated ETS. In this system, the input consists of the output of a system to compare the risk of an individual company with an ETS and use those results to understand risk transfer. For example, if a company makes or does not make a security decision that affects the differential in risk compared with the ETS, an owner of a portfolio can the make a decision as to if these decisions lead to an increase or decrease of the risk to their portfolio and then make appropriate decisions. Such an embodiment of the system 100 would use a model implemented by the computing device 102 to associate level of risk (ideally quantified as a vector or scalar) with costs/benefits with an associated monetary value. In this way, the cost of taking or not taking certain security actions can then be associated with monetary costs assumed by the portfolio owner, and the individual company can be incentivized/dis-incentivized in a manner to encourage or discourage various security behaviors.
Referring to
The computing device 1200 may include various hardware components, such as a processor 1202, a main memory 1204 (e.g., a system memory), and a system bus 1201 that couples various components of the computing device 1200 to the processor 1202. The system bus 1201 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. For example, such architectures may 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 Interconnect (PCI) bus also known as Mezzanine bus.
The computing device 1200 may further include a variety of memory devices and computer-readable media 1207 that includes removable/non-removable media and volatile/nonvolatile media and/or tangible media, but excludes transitory propagated signals. Computer-readable media 1207 may also include computer storage media and communication media. Computer storage media includes removable/non-removable media and volatile/nonvolatile media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program modules or other data, such as RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store the desired information/data and which may be accessed by the computing device 1200. Communication media includes computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. For example, communication media may include wired media such as a wired network or direct-wired connection and wireless media such as acoustic, RF, infrared, and/or other wireless media, or some combination thereof. Computer-readable media may be embodied as a computer program product, such as software stored on computer storage media.
The main memory 1204 includes computer storage media in the form of volatile/nonvolatile memory such as read only memory (ROM) and random access memory (RAM). A basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within the computing device 1200 (e.g., during start-up) is typically stored in ROM. RAM typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processor 1202. Further, data storage 1206 in the form of Read-Only Memory (ROM) or otherwise may store an operating system, application programs, and other program modules and program data.
The data storage 1206 may also include other removable/non-removable, volatile/nonvolatile computer storage media. For example, the data storage 1206 may be: a hard disk drive that reads from or writes to non-removable, nonvolatile magnetic media; a magnetic disk drive that reads from or writes to a removable, nonvolatile magnetic disk; a solid state drive; and/or an optical disk drive that reads from or writes to a removable, nonvolatile optical disk such as a CD-ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media may include magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The drives and their associated computer storage media provide storage of computer-readable instructions, data structures, program modules, and other data for the computing device 1200.
A user may enter commands and information through a user interface 1240 (displayed via a monitor 1260) by engaging input devices 1245 such as a tablet, electronic digitizer, a microphone, keyboard, and/or pointing device, commonly referred to as mouse, trackball or touch pad. Other input devices 1245 may include a joystick, game pad, satellite dish, scanner, or the like. Additionally, voice inputs, gesture inputs (e.g., via hands or fingers), or other natural user input methods may also be used with the appropriate input devices, such as a microphone, camera, tablet, touch pad, glove, or other sensor. These and other input devices 1245 are in operative connection to the processor 1202 and may be coupled to the system bus 1201, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). The monitor 1260 or other type of display device may also be connected to the system bus 1201. The monitor 1260 may also be integrated with a touch-screen panel or the like.
The computing device 1200 may be implemented in a networked or cloud-computing environment using logical connections of a network interface 1203 to one or more remote devices, such as a remote computer. The remote computer may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computing device 1200. The logical connection may include one or more local area networks (LAN) and one or more wide area networks (WAN), but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
When used in a networked or cloud-computing environment, the computing device 1200 may be connected to a public and/or private network through the network interface 1203. In such embodiments, a modem or other means for establishing communications over the network is connected to the system bus 1201 via the network interface 1203 or other appropriate mechanism. A wireless networking component including an interface and antenna may be coupled through a suitable device such as an access point or peer computer to a network. In a networked environment, program modules depicted relative to the computing device 1200, or portions thereof, may be stored in the remote memory storage device.
Certain embodiments are described herein as including one or more modules. Such modules are hardware-implemented, and thus include at least one tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. For example, a hardware-implemented module may comprise dedicated circuitry that is permanently configured (e.g., as a special-purpose processor, such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware-implemented module may also comprise programmable circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software or firmware to perform certain operations. In some example embodiments, one or more computer systems (e.g., a standalone system, a client and/or server computer system, or a peer-to-peer computer system) or one or more processors may be configured by software (e.g., an application or application portion) as a hardware-implemented module that operates to perform certain operations as described herein.
Accordingly, the term “hardware-implemented module” encompasses a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware-implemented modules are temporarily configured (e.g., programmed), each of the hardware-implemented modules need not be configured or instantiated at any one instance in time. For example, where the hardware-implemented modules comprise a general-purpose processor configured using software, the general-purpose processor may be configured as respective different hardware-implemented modules at different times. Software may accordingly configure the processor 1202, for example, to constitute a particular hardware-implemented module at one instance of time and to constitute a different hardware-implemented module at a different instance of time.
Hardware-implemented modules may provide information to, and/or receive information from, other hardware-implemented modules. Accordingly, the described hardware-implemented modules may be regarded as being communicatively coupled. Where multiple of such hardware-implemented modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the hardware-implemented modules. In embodiments in which multiple hardware-implemented modules are configured or instantiated at different times, communications between such hardware-implemented modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware-implemented modules have access. For example, one hardware-implemented module may perform an operation, and may store the output of that operation in a memory device to which it is communicatively coupled. A further hardware-implemented module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware-implemented modules may also initiate communications with input or output devices.
Computing systems or devices referenced herein may include desktop computers, laptops, tablets e-readers, personal digital assistants, smartphones, gaming devices, servers, and the like. The computing devices may access computer-readable media that include computer-readable storage media and data transmission media. In some embodiments, the computer-readable storage media are tangible storage devices that do not include a transitory propagating signal. Examples include memory such as primary memory, cache memory, and secondary memory (e.g., DVD) and other storage devices. The computer-readable storage media may have instructions recorded on them or may be encoded with computer-executable instructions or logic that implements aspects of the functionality described herein. The data transmission media may be used for transmitting data via transitory, propagating signals or carrier waves (e.g., electromagnetism) via a wired or wireless connection.
It should be understood from the foregoing that, while particular embodiments have been illustrated and described, various modifications can be made thereto without departing from the spirit and scope of the invention as will be apparent to those skilled in the art. Such changes and modifications are within the scope and teachings of this invention as defined in the claims appended hereto.
This application claims benefit to U.S. provisional patent application Ser. No. 62/989,395, filed on Mar. 13, 2020, which is incorporated by reference in entirety.
Number | Date | Country | |
---|---|---|---|
62989395 | Mar 2020 | US |