The present disclosure relates to task management and decentralized performance in computers and computer networks.
In order to maintain a high level of security, devices, sometimes called client devices or endpoint devices, that are within secured networks (e.g., enterprise-level networks, such as banking networks, e-Commerce networks, etc.) are not provided with functional capabilities, in order to limit exposure of the network to outside threats. Instead, servers within the network are burdened with executing these functions, such as functions for identifying unmanaged devices within the network, performing security and risk management functions, and the like. There is a need to establish trust with a node such that the trusted node is enabled to perform some of these functions on behalf of a server system, without creating a threat to other machines within the network.
Accordingly, there is a need to establish trusted connections between an endpoint machine (e.g., node) in a network and a server, that enables the server to control what functions the node can, and will, perform. To that end, a method is provided for distributed data processing. The method includes, at a server system, in communication with a plurality of machines that form a linear communication orbit, establishing a direct duplex connection between the server system and a first endpoint machine. The method further includes enrolling the first endpoint machine as a satellite endpoint machine, wherein enrolling the satellite endpoint machine enables it to execute one or more function modules. The method further includes, sending (e.g., after authenticating the first endpoint machine) to the first endpoint machine, an instruction for executing a function module at the first endpoint machine. The method includes receiving a report including information obtained by the first endpoint machine executing the function module. Typically, at least one of the operations of establishing the direct duplex connection, sending the instruction, and receiving the report includes sending or receiving a communication between the first endpoint machine and the server system via the linear communication orbit.
In some embodiments, the method includes authenticating the first endpoint machine via the direct duplex connection, and furthermore, the first endpoint machine is authenticated prior to sending the instruction for executing a function module.
In some embodiments, a computer system (e.g., node 102, administrator's device 116, server 108 and/or server 110,
In some embodiments, a non-transitory computer readable storage medium stores one or more programs, the one or more programs comprising instructions, which, when executed by a computer system (e.g., node 102, administrator's device 116, server 108 and/or server 110,
In some embodiments, a computer system (e.g., node 102, administrator device 116, server 108 and/or server 110,
Other embodiments and advantages will be apparent to those skilled in the art in light of the descriptions and drawings in this specification.
Like reference numerals refer to corresponding parts throughout the drawings.
Some methods and devices described herein improve upon distributed data processing in a network by establishing a trusted client-initiated connection with a server which the client can then use to receive instructions to execute functions and send reports on said executed functions back to the server. In some embodiments, the client, after establishing trust, can be used by the server to perform event inquiries, via the client, on machines that are outside of the network without requiring the server to execute all of the tasks. Establishing trust with only specified clients on the network (e.g., clients determined to meet security criteria and processing power criteria), without providing all of the clients with the capability to perform these functions, improves the distribution of data processing while limiting the exposure of the network to security threats.
In some embodiments, the client is a respective node in a collection of nodes that forms a linear communication network as described herein and in the Incorporated Disclosure, which sets forth a network topology in which messages are passed from node to node in the linear communication orbit. To establish a trusted client-initiated connection, the remote server injects an instruction packet into the linear communication orbit, which travels from node to node through the upstream nodes of a respective node before reaching the respective node. The instruction packet includes instructions for establishing a direct duplex connection (e.g., a direct full-duplex connection, such as a WebSocket connection) with the server. The respective node establishes the direct duplex connection according to the instructions received through the linear communication orbit. Thereafter, the respective node can send secure messages (e.g., encrypted messages) and upload historical event data directly to the server (e.g., rather than by propagating messages from node to node through the linear communication orbit); and, the server can interact directly with the respective node in the network rather than through the linear communication orbit.
Linear communication orbits are described below with reference to
Examples of managed network 100 include enterprise networks or other networks under common management. In some embodiments, at least some of machines 102 coupled to managed network 100 are distributed across different geographical areas and/or localized at the same physical location. In some embodiments, machines 102 coupled to managed network 100 are divided into several sub-networks separated by one or more firewalls 104. In some embodiments, the network 100 is separated from external networks by one or more firewalls 104.
In some embodiments, machines 102 currently coupled to network 100 are self-organized into one or more contiguous segments 106 (e.g., 106a, 106b, etc.) of a single linear communication orbit. In some embodiments, each contiguous segment 106 constitutes a respective linear communication orbit.
In some embodiments, managed network 100 also includes server 108 that facilitates the creation and maintenance of the one or more contiguous segments 106. The server 108 may be relatively lightweight (e.g., uses less resources, has a lower memory footprint and/or has a lower CPU load as compared with a typical host server), and may be elected from machines 102 in the network.
In some embodiments, as shown in
An important feature of linear communication orbit(s) 106 is that, in some embodiments, they are automatically formed without global, continuous, and/or active intervention by any network administrative program or personnel. Each machine 102 joining network 100 is equipped with (or provided with) a set of predetermined rules. According to the set of predetermined rules, each machine 102 finds its immediate neighbor machines and coordinates with these immediate neighbor machines to self-organize into a local segment of the linear communication orbit. The local segments of adjacent machines overlap and fuse into a contiguous segment of the linear communication orbit. In some embodiments, the linear communication orbit grows or contracts as machines join and leave network 100 (e.g., the network is non-static), through the independent local actions of the machines in network 100, without global, continuous, and/or active intervention by any network administrative programs or personnel. Although all machines 102 implement the same set of rules, and each machine directly interacts only with its immediate neighbor machines to facilitate the formation of the orbit, the rules are designed in a way that cause the machines' independent local actions to be globally consistent and to result in self-organization and automatic repair and maintenance of linear communication orbit(s) 106.
In some embodiments, all machines 102 coupled to network 100 are sorted into an ordered sequence according to a respective unique identifier associated with each machine 102. These identifiers are also referred to as the addresses of the machines in the network. For example, in some embodiments, respective IP addresses of machines 102 are used as the identifiers to sort the machines into an ordered sequence. In some embodiments, the machines are sorted according to decreasing IP address values, an upstream direction of the linear communication orbit is the direction of increasing IP address values, and a downstream direction of the linear communication orbit is the direction of decreasing IP address values. In some embodiments, the machines are sorted according to increasing IP address values, an upstream direction of the linear communication orbit is the direction of decreasing IP address values, and a downstream direction of the linear communication orbit is the direction of increasing IP address values.
In some embodiments, other types of unique identifiers or addresses may be used. For each type of unique identifier or address, the set of predetermined rules provides a deterministic way of sorting the unique identifiers or addresses of that type into an ordered sequence. Given the identifiers or addresses of two machines in the network, the relative order of the two machines and their distances in the linear communication orbit (also referred to as an interval between the two machines) can be determined. In some embodiments, not all possible addresses are occupied by a corresponding machine in the network.
In some embodiments, each machine 102 receiving a communication message (e.g., a message including a question part, and an answer part) from its upstream neighbor node acts upon the message by providing an update to the message based on its local state or information, performing some aggregation of the information in the message (e.g., by adding to or modifying aggregated results already included in the message as received from its upstream neighbor), and/or forwarding the message to its downstream neighbor node along the linear communication orbit. Essentially, each machine expends a small amount of resources to take on a small part of the duties of data aggregation without being overly burdened. In the threat management scenario, in some embodiments, the query part of a message may include a request for evaluating an indicator item (e.g., “Is a file with a filename [VIRUS-NAME].EXE present?”), and the answer part may be a hit counter (e.g., a counter for “yes” answers) or log to which a node can append its unique identifier (ID) if the result of the evaluation is a hit (e.g., a “yes” or “TRUE” answer). In some embodiments, instructions for a remedial action (e.g., an executable script) and criteria for determining which node should execute the instructions for the remedial action (e.g., IDs or characteristics of the affected node(s)) may be included in a communication message and propagated along the linear communication orbit (see
In some embodiments, each node implements a set of common rules such that each node in the linear communication orbit knows what to do with respect to each query it receives or knows about, without requiring excessive back and forth interactive communications between the nodes themselves or between the nodes and the central management of a server or administrator. This set of common rules is different from the set of common rules for establishing and maintaining the linear communication orbit as described in the Incorporated Disclosure, and can be used in addition to the set of common rules for establishing and maintaining the linear communication orbit.
An advantage of message communication over the linear communication orbit is that queries, answers, and/or instructions regarding threat detection and management can be quickly passed to and from a node 102 or server 108 without excessive communication and computational overhead. In some embodiments, server 108 (or a remote server 110 in communication with server 108) generates individual queries based on IOC feeds or specifications received from various sources (e.g., third-party threat research firms, internal threat management personnel, etc.), where each query contains a request for evaluation of one or more indicator items at one or more targeted nodes (e.g., nodes that meet certain criteria specified in the query). In some embodiments, the server determines the order, frequency, and/or priority by which the queries should be injected. In some embodiments, the server sends out all of the queries and the criteria that individual nodes can use to locally prioritize the evaluation of the indicator items in the queries. The individual nodes perform local evaluation of the indicator items with the order and frequencies set in accordance with the criteria, and send the results back to server 108 through the linear communication orbit.
In some embodiments, server 108 sends the results (e.g., sends an aggregated response) to remote server 110. In some embodiments, server 108/110 determines whether a threat exists in the network and automatically sends out instructions for one or more remedial actions to be carried out at the affected node(s) (e.g., quarantining the affected nodes from the rest of the network, cleaning up offending files, collecting artifacts from the affected nodes, etc.). In some embodiments, remote server 110 communicates with server 108 via secure connection 114. In some embodiments, when remote server 110 needs to send a message or instruction packet to a particular node in the network and a direct connection between remote server 110 and the particular node does not already exist, remote server 110 optionally sends the message to server 108 and has server 108 forward the message or instruction packet to the particular node along the linear communication orbit. In some embodiments, remote server 110 starts a network-wide information gathering processes by sending a series of queries or one or more IOCs to server 108 (or a starting node of the linear communication orbit), allowing server 108 (or the starting node) to propagate the queries or IOCs into the network along the linear communication orbit, and receiving the answers or evaluation results (e.g., individual answers, aggregated answers, and/or metrics and statistics computed based on the answers or evaluation results collected from the nodes in the network) from server 108 (or an end node of the linear communication orbit).
The lightweight, decentralized mechanism (e.g., the set of common action rules observed by the nodes in the network) allows the nodes in the network to self-organize into one or more linear communication orbits, and allows the linear communication orbits to recover/self-heal from broken links and slow connections (e.g., by temporarily bypassing unresponsive nodes) without active administrative intervention. The self-organization and self-healing aspects of the linear communication orbits ensure that communication and data collection bottlenecks are quickly discovered and eliminated, without causing much observable impact on the communication and data collection speed. In addition, when collecting data along the linear communication orbits, the server may inject queries regarding different aspects of the nodes in separate messages, and the messages may be propagated down the linear communication orbit, processed in parallel at the nodes, and answered by as many nodes as possible (e.g., nodes that satisfy matching criteria specified by the messages), without being held up by any slow responding nodes. In fact, communication with and data collection from any and all nodes in the network (e.g., enterprise networks with thousands or millions of nodes) may be accomplished in substantially real-time (e.g., a matter of seconds), as opposed to taking days and weeks in a network with a conventional hierarchical or hub-and-spoke configuration. For example, messages are delivered to the nodes at the speed at which messages are propagated through the linear communication orbit, and the processing of the queries at the nodes occurs after receiving the messages, in parallel at the nodes. In some embodiments, answers to the queries are collected in a subsequent traversal of the linear communication orbit by either the original messages (propagating in the reverse direction) or by subsequent “answer collection” messages.
Various methods are provided herein for establishing direct duplex connections between remote server 110 and nodes 102 in a linear communication orbit, and for enrolling a node as a satellite endpoint machine (e.g., as described with reference to
As described herein, the direct duplex connection between a particular node and remote server 110 is established with the particular node as the initiating party. In other words, from the perspective of the network, the connection is established with an outbound connection request sent from the node, rather than with an inbound connection request sent from the remote server. When the direct duplex connection is established with an outbound connection request sent from the node (e.g., the node sends the initial connection request in the connection establishment protocol (e.g., the handshake request in establishing a WebSocket connection)), there is no need to open the node's firewall, which would expose the node and network to outside security risks.
In some embodiments, in order to prompt a particular node to initiate the connection request for a direct duplex connection, remote server 110 sends a message or instruction packet to the particular node (e.g., node 102f) through a server of the network (e.g., server 108) and has the message or instruction packet propagated to the particular node through the linear communication orbit (e.g., linear communication orbit 106a). The message or instruction packet contains instructions and necessary data (e.g., public certificate for encryption, IP address, port #) for the particular node to establish the direct point-to-point persistent connection (e.g., a WebSocket connection) with the remote server. When the particular node receives the instruction packet from its upstream node, the particular node initiates the outbound connection request to the remote server. After the remote server receives the connection request from the particular node, the remote server and the node can proceed to establish the duplex connection according to the connection establishment protocol.
In some embodiments, the instruction packet can be dispatched to one or more particular nodes at the command of a network administrator or security incident responder. For example, the network administrator uses an administrator's device 116 to connect to remote server 110 (e.g., via a web interface or a client application provided by a service provider associated with the remote server 110) and manually selects the particular nodes using a network monitoring user interface. In some embodiments, the network monitoring user interface provides other functions, such as reviewing and modifying IOCs, queries, event artifacts, metrics and statistics for IOC evaluations and query responses, and performing sandbox investigation, etc.
In some embodiments, an event recorder is deployed on each node in the network that continuously records local values for particular indicator items (e.g., commonly used indicator items, such as filenames of newly created/modified/deleted/executed files, IP addresses of network connections, ports accessed, and processes started/killed, etc.) to a local event database. An administrator can query these local event databases from the network monitoring user interface by issuing questions to the network through the linear communication orbit. For example, the administrator's device can send the questions to the server of the network and the questions may be packaged in query messages and propagated to the nodes through the server of the network. Each node along the linear communication orbit will be able to quickly respond to these questions based on the past event data stored in their respective local event databases. After the answers have been collected from all relevant nodes in the network, the server of the network forwards the answers back to the administrator's device.
In some embodiments, after a direct duplex connection has been established between a particular node and the remote server, the administrator can also query the local event database of the particular node through the direction duplex connection. In addition, the administrator can take a snapshot of the local event database on the particular node and have it uploaded to the remote server, so that in-depth analysis regarding the particular node may be performed at the remote server (e.g., according to instructions provided by the administrator to the remote server).
In some embodiments, after a direct duplex connection has been established between a particular node and the remote server, the administrator can collect process artifacts from the particular node based on event history and file references for an event of interest identified by the administrator. The administrator can make a copy of the collected process artifacts and corresponding metadata (e.g., OS version, memory, installed apps, usernames, etc.) describing the local environment of the particular node, and use them to create a sandbox (e.g., choose the same operating environment as the particular endpoint machine and add the necessary files and libraries from the collected process artifacts) and recreate the past event(s) in the sandbox for investigation purposes.
In some embodiments, based on the in-depth analysis performed on a particular node, the administrator can select particular events or artifacts of interest in the network monitoring user interface and, in response, be presented with a set of sample questions that can be dispatched to the network for a network-wide analysis. The set of sample questions can be automatically generated based on existing question templates and indicator values that are found on the particular node. The automatic generation of the questions facilitates the investigative process of the administrator, and relieves the administrator from having to create the questions one by one from scratch. In some embodiments, the questions and IOCs for detecting a particular threat or event of interest can be refined (e.g., made more efficient or streamlined) based on the answers collected from the network.
In some embodiments, the server (e.g., remote server 110 or server 108) authenticates a particular node, using the direct duplex connection, before deputizing the node to perform specific tasks on behalf of the server (e.g., enrolling the node as a satellite endpoint).
In some embodiments, an administrator selects particular machines to be enrolled as satellite endpoints based on one or more security characteristics of the respective machines (e.g., an endpoint that the administrator knows the machine has greater security as compared to other machines on the network, or that the machine satisfies predefined security criteria). For example, an endpoint that is only accessible to certain trusted users, or is otherwise more secure, is identified as a candidate to be enrolled as a satellite endpoint. In some embodiments, the server (e.g., server 108 or another server) identifies one or more endpoints as candidates to be enrolled as satellite endpoints in accordance with a determination that the one or more endpoints satisfy selection criteria (e.g., criteria relating to a security of the endpoint and optionally processing power criteria as well).
In some embodiments, a direct duplex connection is initiated between the server 108 and each of the identified endpoints that are candidates to be enrolled as satellite endpoints. For example, two direct duplex connections (e.g., established using the process described above with reference to
After establishing the direct duplex connections, the server authenticates the endpoints (e.g., wherein, as explained with reference to
In some embodiments, after an endpoint with a direct duplex connection has been authenticated (e.g., and is trusted as the identified endpoint, and not a spoofed endpoint), the server 108 uses two distinct communication channels to enroll the endpoint as a satellite endpoint. For example, after establishing a direct duplex connection between server 108 and endpoint 250b, and authenticating that the direct connection was formed between endpoint 250b (e.g., and not a third-party bad actor machine), the server 108 receives a unique identifier, via the direct duplex connection, for identifying endpoint 250b. In some embodiments, a second communication channel, distinct from the direct duplex connection, is used to obtain the unique identifier from endpoint 250b to confirm that the enrolled endpoint as a satellite is the intended endpoint machine. For example, the second communication channel involves an administrator executing a command on the physical endpoint 250b to obtain the unique identifier, and confirms that the unique identifier obtained via the direct duplex connection matches the unique identifier obtained from executing the command on the endpoint. If these unique identifiers match, the endpoint 250b is enrolled as a satellite machine.
In some embodiments, after endpoint 250b and endpoint 250d are enrolled as satellite endpoint machines, they are enabled to perform operations (e.g., using function modules) locally at the satellite endpoint, rather than the operations solely being performed by the server 108. The satellite endpoint machines receive instructions for performing particular tasks, and after performing the tasks, send report messages to the server 108, without requiring the server 108 to execute the functions themselves. As such, satellite endpoint machines are enabled to behave like a server to carry out certain functions on behalf of server 108.
In some embodiments, as described with reference to
Accordingly, in some embodiments, a satellite endpoint machine is used to perform functions that require investigation outside of the network. For example, discovery of additional endpoint machines that are outside of linear communication orbit 106a (e.g., and outside of the network that includes linear communication orbit 106a), such as the second set of machines 204B, is performed by satellite endpoint 250b. Because satellite endpoint 250b is communicating with and accessible to other machines on the network (e.g., on linear communication orbit 106d), it is important that the server 108 establishes a trusted connection with the satellite endpoint 250b (e.g., to confirm that the endpoint 250b enrolled as a satellite is not a bad actor or third-party “man-in-the-middle” machine), such as the direct duplex connection.
Second satellite 250d has access to a third set of machines 204C, distinct from the sets of machines that first satellite 250b accesses. Thus, the server is enabled to deputize a plurality of satellite machines to execute functions (e.g., perform discovery and/or scan operations) on distinct sets of machines on behalf of the server 108.
In some embodiments, the endpoint 250 initiates a direct connection (e.g., also referred to herein as a direct duplex connection), and in response to establishing the direct connection with the server 108, the server 108 authenticates the endpoint 250. For example, as described above, the server generates a nonce and encrypts the nonce with a public key of the endpoint 250, and waits for the endpoint 250 to descript and return the nonce as a means of authentication. For example, while establishing the direct connection (e.g., or in response to establishing the direct connection) with an endpoint, the server 108 authenticates (e.g., verifies) that the endpoint is legitimate (e.g., trusted, not a man-in-the-middle attacker). In some embodiments, if the endpoint fails to be authenticated (e.g., while (or in response to) establishing the direct duplex connection), the server does not attempt to enroll the endpoint as a satellite machine. It will be understood that the direct duplex connection is not necessarily a (e.g., physically) “direct” connection between the server and the endpoint. For example, the direct duplex connection may be proxied through one or more additional machines. However, the direct duplex connection is generally a point-to-point encrypted communication channel, and only the server on one end and the endpoint on the other end are able to use the direction duplex connection to convey and receive information.
In some embodiments, after the endpoint 250 has established a direct duplex connection and has been authenticated, the endpoint 250 is enrolled as a satellite endpoint 312, and enrollment data for the endpoint 250 is stored 314 at the server 108 (e.g., the first server of the network, or another server that includes a satellite manager module). In some embodiments, enrolling the endpoint 250 as a satellite comprises validating the endpoint over two distinct channels. For example, the endpoint 250 sends a unique identifier to the server 108 (e.g., via the direct duplex connection), and an administrator manually runs a command (e.g., in the command line) at the endpoint 250 to separately retrieve a unique identifier. In some embodiments, the administrator (e.g., or the server 108) confirms that the unique identifiers obtained via the two distinct channels match. In some embodiments, in accordance with a determination that the unique identifiers match, the endpoint 250 is enrolled as a satellite machine.
In some embodiments, after (or, alternatively, before) the endpoint 250 is enrolled as a satellite endpoint machine, the endpoint 250 is loaded with one or more function modules to enable the endpoint 250 to perform tasks, using the function modules, that a typical endpoint (e.g., machines 1002) is not able to perform. For example, the server 108 (e.g., a satellite manager of the server) deputizes the enrolled satellite endpoint to execute one or more function modules that typically the server 108 would execute itself.
In some embodiments, function modules are loaded to the endpoint 250 in the same way that other software modules and updates are conveyed to endpoint machines: by conveying, e.g., via a linear communication orbit, an initial message to the endpoint 250, typically with a manifest listing all the software components that need to be obtained and installed by the endpoint 250. After receiving the manifest, the endpoint 250 automatically sends requests for all the software components listed in the manifest, and upon receiving those software components, combines the software components to generate one or more function modules and installs the function modules at the endpoint 250.
In some embodiments, each function module (e.g., which is provided to or otherwise installed on the satellite endpoint) is configured to collect data related to a core function of that function module from a plurality of machines (e.g., a plurality of machines distributed on linear communication orbit 106a, a plurality of machines distributed on another linear communication orbit (e.g., within the network), and/or a plurality of machines that are outside of the network). Examples of function modules include, but are not limited to, a software deployment module configured to deploy a software package to machines, a patch module configured to install software patches on machines, and a security management module configured to distribute security rules and procedures to machines. In some embodiments, a central data management module is installed on server system 108 to manage data to be collected by the plurality of function modules (e.g., running on one or more satellite endpoints). To facilitate centralized data management, each function module (e.g., a respective satellite endpoint) includes (e.g., is installed with) an internal client that is controlled by the central data management module to collect and pre-process data related to the core function of respective function module.
In some embodiments, the enrollment data for each satellite endpoint is stored in a satellite manager module at server 108 (e.g., or another server of the network). In some embodiments, the satellite manager module tracks, for each satellite endpoint, the set of function modules that the satellite is enabled to execute, and the set of machines on which the satellite endpoint reports. For example, each satellite endpoint 250 executes a task (e.g., using the function module) for a specified set of machines (e.g., a plurality of machines distributed on linear communication orbit 106a, a plurality of machines distributed on another linear communication orbit (e.g., within the network) (e.g., set of machines 204A or 204C), and/or a plurality of machines that are outside of the network (e.g., set of machines 204B)). Accordingly, the satellite manager module knows which satellite endpoint to send the instructions in order to execute different tasks on different sets of machines.
In some embodiments, after the endpoint 250 is enrolled as a satellite machine, the server 108 (e.g., the first server of the network, or another server that includes or has access to a satellite manager module) sends a task instruction 316 to be carried out by the endpoint 250. In some embodiments, the task instruction is a task to be executed using the one or more function modules that were loaded on (e.g., enabled to be executed by) the enrolled satellite machine. In some embodiments, the task instruction is sent to the endpoint 250 via the linear communication orbit (e.g., passed along the orbit 318 using machines 1002). In some embodiments, the task instruction is sent via the direct duplex connection established with the endpoint 250.
After the satellite endpoint 250 has received the task instruction, the satellite endpoint 250 performs the task 320 (e.g., using the function modules, as described with reference to
In some embodiments, the satellite endpoint 250 aggregates reports generated by performing the task (e.g., using the function module(s)), and sends the reports back to the server of the network 108 (e.g., the same server, or another server than the server that sent the task instruction and/or that enrolled the satellite endpoint). In some embodiments, the report is sent via the linear communication orbit 324 to server. In some embodiments, the report is sent via the direct duplex connection to the server of the network 108. The server of the network receives the report 326.
To that end, method 400 includes, identifying (402) a first endpoint machine, of the plurality of machines, in the linear communication orbit (e.g., a plurality of endpoints in linear communication orbit 106a). For example, as described above, an administrator selects one or more endpoints that meet selection criteria (e.g., based on a security of the endpoint). Alternatively, the selection or identification of the first endpoint machine may be made by a third party (e.g., a server, or administrator working on a different computer than the computer performing method 400). In some embodiments, identifying the first endpoint machine includes sending a one or more (e.g., a plurality of) special payloads to a plurality of machines in the linear communication orbit to instruct the first endpoint machine to initiate the direct connection (e.g., as described with reference to step 302 in
The method includes establishing (404) a direct duplex connection between the server system and the first endpoint machine. For example, as described with reference to
In some embodiments, establishing the direct duplex connection comprises (406) sending an instruction packet via the linear communication orbit, wherein the instruction packet has been propagated to the first endpoint machine through one or more upstream machines along the linear communication orbit, and wherein the instruction packet includes an instruction for establishing the direct duplex connection between the first endpoint machine and the server system (e.g., one or more servers).
In some embodiments, the direct duplex connection (e.g., which, in some embodiments, is proxied through other intermediate devices) is (408) an encrypted channel (e.g., a point-to-point connection) such that credentials are not shared over a communication network that includes the linear communication orbit. For example, this point-to-point connection allows the server to verify that the endpoint is the endpoint that the server (e.g., and network) trusts.
The method includes enrolling (410) (e.g., using a satellite manager of the server 108) the first endpoint machine as a satellite endpoint machine, wherein enrollment of the satellite endpoint machine (e.g., the first endpoint machine) enabled the satellite endpoint machine to execute one or more function modules. For example, as described above, an endpoint machine that is enrolled as a satellite is enabled to execute function modules (e.g., as determined by the server system) that an non-satellite endpoint machine (e.g., an endpoint machine not enrolled as a satellite endpoint machine) is not enabled (e.g., trusted) to execute. As such, the server system selectively allows satellite endpoint machines to execute one or more function modules, without allowing non-satellite endpoint machines (e.g., in the linear communication orbit) to execute the one or more function modules. In some embodiments, the method further includes, storing, using the satellite manager, information for the enrolled first endpoint machine.
In some embodiments, enrolling the first endpoint machine includes (412) matching a unique identifier, provided by the first endpoint machine via the direct duplex connection, to a unique identifier retrieved via another channel. For example, as described above, the other channel comprises an administrator manually going to the first endpoint machine, and running a command to retrieve the unique identifier that is compared with the unique identifier obtained from the direct duplex connection.
The method typically includes authenticating (413), via the direct duplex connection, the first endpoint machine. For example, as described with reference to step 310 in
The method further includes, sending (414) (e.g., after authenticating the first endpoint machine) to the first endpoint machine (e.g., the satellite endpoint machine), an instruction for executing a function module at the first endpoint machine. For example, the first endpoint machine executes the function module as a satellite of (e.g., on behalf of) the server system. In some embodiments, the function module is a function module that the first endpoint machine is authorized to execute (e.g., in accordance with the first endpoint machine being enrolled as a satellite endpoint machine), as described above with reference to
As explained with reference to
In some embodiments, the first endpoint machine (e.g., the satellite endpoint machine) is configured to (416) communicate with (e.g., scan) one or more machines that are outside of the linear communication orbit (e.g., outside of the network). In some embodiments, the instruction to execute a function module is an instruction to discover (e.g., scan for) unmanaged assets that are outside of the linear communication orbit (e.g., or outside of the network).
In some embodiments, the instruction for executing the function module comprises (418) an instruction to run compliance scans against the one or more machines discovered outside of the linear communication orbit. For example, the first endpoint machine (e.g., the satellite endpoint machine), while executing the function module, scans for live unmanaged machines within a first selected portion of the network that corresponds to a first range of machine identifiers that is between the respective machine identifiers of a respective upstream neighbor of the first managed machine and a respective downstream neighbor of the first managed machine in the linear communication orbit.
In some embodiments, the instruction to execute the function module is sent (420) to the first endpoint machine (e.g., the satellite endpoint machine) via the direct duplex connection.
In some embodiments, the instruction to run the function module is sent (422) to the first endpoint machine (e.g., the satellite endpoint machine) via propagation from machine to machine (e.g., node to node) along the linear communication orbit.
In some embodiments, the one or more function modules executed by the first endpoint machine (e.g., the satellite endpoint machine) is determined (424) by the server system (e.g., the server selects the functions that the satellite endpoint is trusted to perform). For example, as described above with reference to
The method includes receiving (426) a report including information obtained by the first endpoint machine (e.g., the satellite endpoint machine) executing the function module.
In some embodiments, the report from the first endpoint machine (e.g., the satellite endpoint machine) is received (428) via the direct duplex connection.
In some embodiments, the report from the first endpoint machine (e.g., the satellite endpoint machine) is received (430) via propagation from machine to machine (e.g., node to node) along the linear communication orbit.
At least one of the establishing a direct duplex connection, sending the instruction, and receiving the report includes (432) sending or receiving a communication between the first endpoint machine (e.g., the satellite endpoint machine) and the server system via the linear communication orbit.
In some embodiments, the method further includes identifying (434) a second endpoint machine as a satellite endpoint machine (e.g., second satellite 250d,
In some embodiments, input/output interface 506 includes a display and input devices such as a keyboard, a mouse or a track-pad. In some embodiments, communication buses 510 include circuitry (sometimes called a chipset) that interconnects and controls communications between system components. In some embodiments, memory 504 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and optionally includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. In some embodiments, memory 504 includes one or more storage devices remotely located from the one or more processors 502. In some embodiments, memory 504, or alternatively the non-volatile memory device(s) within memory 504, comprises a non-transitory computer readable storage medium.
In some embodiments, memory 504 or alternatively the non-transitory computer readable storage medium of memory 504 stores the following programs, modules and data structures, instructions, or a subset thereof:
In some embodiments, input/output interface 606 includes a display and input devices such as a keyboard, a mouse or a track-pad. In some embodiments, communication buses 610 include circuitry (sometimes called a chipset) that interconnects and controls communications between system components. In some embodiments, memory 604 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and optionally includes non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. In some embodiments, memory 604 includes one or more storage devices remotely located from the one or more processors 602. In some embodiments, memory 604, or alternatively the non-volatile memory device(s) within memory 604, comprises a non-transitory computer readable storage medium.
In some embodiments, memory 604 or alternatively the non-transitory computer readable storage medium of memory 604 stores the following programs, modules and data structures, instructions, or a subset thereof:
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.
It will be understood that, although the terms “first,” “second,” etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first widget could be termed a second widget, and, similarly, a second widget could be termed a first widget, without changing the meaning of the description, so long as all occurrences of the “first widget” are renamed consistently and all occurrences of the “second widget” are renamed consistently. The first widget and the second widget are both widgets, but they are not the same widget.
The terminology used herein is for the purpose of describing particular implementations only and is not intended to be limiting of the claims. As used in the description of the implementations and the appended claims, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. 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.
As used herein, the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in accordance with a determination” or “in response to detecting,” that a stated condition precedent is true, depending on the context. Similarly, the phrase “if it is determined [that a stated condition precedent is true]” or “if [a stated condition precedent is true]” or “when [a stated condition precedent is true]” may be construed to mean “upon determining” or “upon a determination that” or “in response to determining” or “in accordance with a determination” or “upon detecting” or “in response to detecting” that the stated condition precedent is true, depending on the context.
This application claims priority to U.S. Provisional Patent Application Ser. No. 63/257,525, filed Oct. 19, 2021, which is hereby incorporated by reference in its entirety. This application is related to U.S. application Ser. No. 15/215,474, filed Jul. 20, 2016, now U.S. Pat. No. 10,482,242, titled “System and Method for Performing Event Inquiries in a Network,” which claims the benefit of U.S. Provisional Application Ser. No. 62/333,768, filed May 9, 2016, and U.S. Provisional Patent Application Ser. No. 62/305,482, filed Mar. 8, 2016, titled “Cost Prioritized Evaluations of Indicators of Compromise.” The content of each of the above applications is hereby incorporated by reference in its entirety. This application is also related to U.S. patent application Ser. No. 13/797,946, filed Mar. 12, 2013, now U.S. Pat. No. 9,246,977, titled “System and Network Management Using Self-Organizing Communication Orbits in Distributed Networks”; U.S. patent application Ser. No. 12/412,623, filed Mar. 27, 2009, now U.S. Pat. No. 8,086,729, titled “Distributed Statistical Detection of Network Problems and Causes”; U.S. patent application Ser. No. 13/084,923, filed Apr. 12, 2011, now U.S. Pat. No. 8,904,039, titled “Large-Scale Network Querying and Reporting”; U.S. patent application Ser. No. 13/107,625, filed May 13, 2011, now U.S. Pat. No. 8,903,973, titled “Parallel Distributed Network Management”; U.S. patent application Ser. No. 14/553,769, filed Nov. 25, 2014, now U.S. Pat. No. 9,769,037, titled “Fast Detection and Remediation of Unmanaged Assets”; U.S. patent application Ser. No. 14/554,739, filed Nov. 26, 2014, now U.S. Pat. No. 9,769,275, titled “Data Caching and Distribution in a Local Network”; and U.S. patent application Ser. No. 15/136,790, filed Apr. 22, 2016, now U.S. Pat. No. 9,910,752, titled “Reliable Map-Reduce Communications in a Decentralized, Self-Organizing Communication Orbit of a Distributed Network.” Content of each of the above applications is hereby incorporated by reference in its entirety. The above applications are also referred to hereafter as “the Related Applications” or “the Incorporated Disclosure.”
Number | Name | Date | Kind |
---|---|---|---|
5220596 | Patel | Jun 1993 | A |
5842202 | Kon | Nov 1998 | A |
5949755 | Uphadya et al. | Sep 1999 | A |
6049828 | Dev et al. | Apr 2000 | A |
6226493 | Leopold | May 2001 | B1 |
6615213 | Johnson | Sep 2003 | B1 |
6879979 | Hindawi et al. | Apr 2005 | B2 |
6885644 | Knop et al. | Apr 2005 | B1 |
6959000 | Lee et al. | Oct 2005 | B1 |
7043550 | Knop et al. | May 2006 | B2 |
7096503 | Magdych | Aug 2006 | B1 |
7120693 | Chang et al. | Oct 2006 | B2 |
7225243 | Wilson | May 2007 | B1 |
7240044 | Chaudhuri et al. | Jul 2007 | B2 |
7299047 | Dolan et al. | Nov 2007 | B2 |
7483430 | Yuan et al. | Jan 2009 | B1 |
7555545 | McCasland | Jun 2009 | B2 |
7600018 | Maekawa et al. | Oct 2009 | B2 |
7698453 | Samuels et al. | Apr 2010 | B2 |
7720641 | Alagappan et al. | May 2010 | B2 |
7761557 | Fellenstein et al. | Jul 2010 | B2 |
7769848 | Choy et al. | Aug 2010 | B2 |
7844687 | Gelvin et al. | Nov 2010 | B1 |
8078668 | Moreau | Dec 2011 | B2 |
8086729 | Hindawi et al. | Dec 2011 | B1 |
8139508 | Roskind | Mar 2012 | B1 |
8185612 | Arolovitch et al. | May 2012 | B1 |
8185615 | McDysan et al. | May 2012 | B1 |
8271522 | Mehul et al. | Sep 2012 | B2 |
8392530 | Manapragada et al. | Mar 2013 | B1 |
8477660 | Lee et al. | Jul 2013 | B2 |
8504879 | Poletto et al. | Aug 2013 | B2 |
8510562 | Ramakrishnan et al. | Aug 2013 | B2 |
8650160 | Beatty et al. | Feb 2014 | B1 |
8677448 | Kauffman et al. | Mar 2014 | B1 |
8813228 | Magee et al. | Aug 2014 | B2 |
8819769 | Van Dijk | Aug 2014 | B1 |
8885521 | Wang et al. | Nov 2014 | B2 |
8903973 | Hindawi et al. | Dec 2014 | B1 |
8904039 | Hindawi et al. | Dec 2014 | B1 |
8972566 | Hindawi et al. | Mar 2015 | B1 |
9009827 | Albertson et al. | Apr 2015 | B1 |
9059961 | Hindawi et al. | Jun 2015 | B2 |
9104794 | Zakonov et al. | Aug 2015 | B2 |
9246977 | Hindawi et al. | Jan 2016 | B2 |
9576131 | Tuvell et al. | Feb 2017 | B2 |
9609007 | Rivlin et al. | Mar 2017 | B1 |
9667738 | Hindawi et al. | May 2017 | B2 |
9716649 | Bent et al. | Jul 2017 | B2 |
9729429 | Hindawi et al. | Aug 2017 | B2 |
9769037 | Hindawi et al. | Sep 2017 | B2 |
9769275 | Hindawi et al. | Sep 2017 | B2 |
9800603 | Sidagni et al. | Oct 2017 | B1 |
9910752 | Lippincott et al. | Mar 2018 | B2 |
9973525 | Roturier et al. | May 2018 | B1 |
9985982 | Bartos et al. | May 2018 | B1 |
9998955 | MacCarthaigh | Jun 2018 | B1 |
10015185 | Kolman et al. | Jul 2018 | B1 |
10095864 | Hunt et al. | Oct 2018 | B2 |
10111208 | Hindawi et al. | Oct 2018 | B2 |
10136415 | Hindawi et al. | Nov 2018 | B2 |
10148536 | Hindawi et al. | Dec 2018 | B2 |
10261770 | Devagupthapu et al. | Apr 2019 | B2 |
10372904 | Hunt et al. | Aug 2019 | B2 |
10412188 | Hindawi et al. | Sep 2019 | B2 |
10482242 | Hunt et al. | Nov 2019 | B2 |
10484429 | Fawcett | Nov 2019 | B1 |
10498744 | Hunt et al. | Dec 2019 | B2 |
10649870 | Lippincott et al. | May 2020 | B1 |
10674486 | Hindawi et al. | Jun 2020 | B2 |
10708116 | Hindawi et al. | Jul 2020 | B2 |
10795906 | Teubner | Oct 2020 | B1 |
10824729 | Hoscheit et al. | Nov 2020 | B2 |
10841365 | White et al. | Nov 2020 | B2 |
10873645 | Freilich et al. | Dec 2020 | B2 |
10929345 | Stoddard et al. | Feb 2021 | B2 |
11032298 | Robbins et al. | Jun 2021 | B1 |
11100199 | Subramaniam | Aug 2021 | B2 |
11151246 | Davis et al. | Oct 2021 | B2 |
11153383 | Richards et al. | Oct 2021 | B2 |
11172470 | Guieu et al. | Nov 2021 | B1 |
11258654 | Hindawi et al. | Feb 2022 | B1 |
11277489 | Freilich et al. | Mar 2022 | B2 |
11301568 | Dargude et al. | Apr 2022 | B1 |
11343355 | Goela et al. | May 2022 | B1 |
11372938 | Stoddard et al. | Jun 2022 | B1 |
11461208 | Lippincott et al. | Oct 2022 | B1 |
11563764 | Hoscheit et al. | Jan 2023 | B1 |
11609835 | Varga et al. | Mar 2023 | B1 |
11700303 | Richards et al. | Jul 2023 | B1 |
11711810 | Guieu et al. | Jul 2023 | B1 |
11777981 | Hoscheit et al. | Oct 2023 | B1 |
11809294 | Lippincott et al. | Nov 2023 | B1 |
11831670 | Molls et al. | Nov 2023 | B1 |
11886229 | Goela et al. | Jan 2024 | B1 |
11914495 | Varga et al. | Feb 2024 | B1 |
11956335 | Goela et al. | Apr 2024 | B1 |
12071262 | Turner | Aug 2024 | B2 |
20010056461 | Kampe et al. | Dec 2001 | A1 |
20020007404 | Vange et al. | Jan 2002 | A1 |
20020042693 | Kampe et al. | Apr 2002 | A1 |
20020073086 | Thompson et al. | Jun 2002 | A1 |
20020099952 | Lambert et al. | Jul 2002 | A1 |
20020198867 | Lohman et al. | Dec 2002 | A1 |
20030101253 | Saito et al. | May 2003 | A1 |
20030120603 | Kojima et al. | Jun 2003 | A1 |
20030131044 | Nagendra et al. | Jul 2003 | A1 |
20030212676 | Bruce et al. | Nov 2003 | A1 |
20030212821 | Gillies et al. | Nov 2003 | A1 |
20040037374 | Gonikberg | Feb 2004 | A1 |
20040044727 | Abdelaziz | Mar 2004 | A1 |
20040044790 | Loach | Mar 2004 | A1 |
20040054723 | Dayal | Mar 2004 | A1 |
20040054889 | Pitsos | Mar 2004 | A1 |
20040064522 | Zhang | Apr 2004 | A1 |
20040076164 | Vanderveen et al. | Apr 2004 | A1 |
20040190085 | Silverbrook et al. | Sep 2004 | A1 |
20050004907 | Bruno et al. | Jan 2005 | A1 |
20050053000 | Oliver et al. | Mar 2005 | A1 |
20050108356 | Rosu et al. | May 2005 | A1 |
20050108389 | Kempin et al. | May 2005 | A1 |
20050195755 | Senta et al. | Sep 2005 | A1 |
20060039371 | Castro et al. | Feb 2006 | A1 |
20060128406 | Macartney | Jun 2006 | A1 |
20060282505 | Hasha et al. | Dec 2006 | A1 |
20070005738 | Alexion-Tiernan et al. | Jan 2007 | A1 |
20070171844 | Loyd et al. | Jul 2007 | A1 |
20070211651 | Ahmed et al. | Sep 2007 | A1 |
20070230482 | Shim et al. | Oct 2007 | A1 |
20070261051 | Porter et al. | Nov 2007 | A1 |
20080082628 | Rowstron et al. | Apr 2008 | A1 |
20080133582 | Andersch et al. | Jun 2008 | A1 |
20080258880 | Smith et al. | Oct 2008 | A1 |
20080263031 | George et al. | Oct 2008 | A1 |
20080288646 | Hasha et al. | Nov 2008 | A1 |
20090125639 | Dam et al. | May 2009 | A1 |
20090271360 | Bestgen et al. | Oct 2009 | A1 |
20090285204 | Gallant et al. | Nov 2009 | A1 |
20090319503 | Mehul et al. | Dec 2009 | A1 |
20090328115 | Malik | Dec 2009 | A1 |
20100011060 | Hilterbrand et al. | Jan 2010 | A1 |
20100070570 | Lepeska | Mar 2010 | A1 |
20100085948 | Yu et al. | Apr 2010 | A1 |
20100094862 | Bent et al. | Apr 2010 | A1 |
20100154026 | Chatterjee et al. | Jun 2010 | A1 |
20100296416 | Lee et al. | Nov 2010 | A1 |
20100306252 | Jarvis et al. | Dec 2010 | A1 |
20110099562 | Nandy et al. | Apr 2011 | A1 |
20110231431 | Kamiwada et al. | Sep 2011 | A1 |
20110271319 | Venable, Sr. | Nov 2011 | A1 |
20110299455 | Ordentlich et al. | Dec 2011 | A1 |
20120053957 | Atkins | Mar 2012 | A1 |
20120110183 | Miranda et al. | May 2012 | A1 |
20120221692 | Steiner et al. | Aug 2012 | A1 |
20120269096 | Roskind | Oct 2012 | A1 |
20120330700 | Garg et al. | Dec 2012 | A1 |
20130110931 | Kim et al. | May 2013 | A1 |
20130170336 | Chen et al. | Jul 2013 | A1 |
20130212296 | Goel et al. | Aug 2013 | A1 |
20130276053 | Hugard, IV et al. | Oct 2013 | A1 |
20130326494 | Nunez et al. | Dec 2013 | A1 |
20140075505 | Subramanian | Mar 2014 | A1 |
20140101133 | Carston et al. | Apr 2014 | A1 |
20140149557 | Lohmar et al. | May 2014 | A1 |
20140164290 | Salter | Jun 2014 | A1 |
20140164552 | Kim et al. | Jun 2014 | A1 |
20140181247 | Hindawi et al. | Jun 2014 | A1 |
20140181295 | Hindawi et al. | Jun 2014 | A1 |
20140244727 | Kang et al. | Aug 2014 | A1 |
20140279044 | Summers | Sep 2014 | A1 |
20140280280 | Singh | Sep 2014 | A1 |
20140282586 | Shear | Sep 2014 | A1 |
20140372533 | Fu et al. | Dec 2014 | A1 |
20140375528 | Ling | Dec 2014 | A1 |
20150080039 | Ling et al. | Mar 2015 | A1 |
20150149624 | Hindawi et al. | May 2015 | A1 |
20150163121 | Mahaffey et al. | Jun 2015 | A1 |
20150172228 | Zalepa et al. | Jun 2015 | A1 |
20150199511 | Faile et al. | Jul 2015 | A1 |
20150199629 | Faile et al. | Jul 2015 | A1 |
20150256575 | Scott | Sep 2015 | A1 |
20150302458 | Dides | Oct 2015 | A1 |
20150312335 | Ying | Oct 2015 | A1 |
20150372911 | Yabusaki et al. | Dec 2015 | A1 |
20150373043 | Wang et al. | Dec 2015 | A1 |
20150378743 | Zellermayer et al. | Dec 2015 | A1 |
20160034692 | Singler | Feb 2016 | A1 |
20160080408 | Coleman et al. | Mar 2016 | A1 |
20160119251 | Solis et al. | Apr 2016 | A1 |
20160255142 | Hunt et al. | Sep 2016 | A1 |
20160255143 | Hunt et al. | Sep 2016 | A1 |
20160269434 | DiValentin et al. | Sep 2016 | A1 |
20160286540 | Hindawi et al. | Sep 2016 | A1 |
20160352588 | Subbarayan et al. | Dec 2016 | A1 |
20160360006 | Hopkins et al. | Dec 2016 | A1 |
20160378450 | Fu et al. | Dec 2016 | A1 |
20170093915 | Ellis et al. | Mar 2017 | A1 |
20170118074 | Feinstein et al. | Apr 2017 | A1 |
20170133843 | McNeill-McCallum et al. | May 2017 | A1 |
20170257432 | Fu et al. | Sep 2017 | A1 |
20170286690 | Chari | Oct 2017 | A1 |
20170346824 | Mahabir | Nov 2017 | A1 |
20180013768 | Hunt et al. | Jan 2018 | A1 |
20180039486 | Kulkami et al. | Feb 2018 | A1 |
20180074483 | Cruz | Mar 2018 | A1 |
20180074796 | Alabes et al. | Mar 2018 | A1 |
20180191747 | Nachenberg et al. | Jul 2018 | A1 |
20180191766 | Holeman et al. | Jul 2018 | A1 |
20180267794 | Atchison et al. | Sep 2018 | A1 |
20180351792 | Hunter et al. | Dec 2018 | A1 |
20180351793 | Hunter et al. | Dec 2018 | A1 |
20180375892 | Ganor | Dec 2018 | A1 |
20190081981 | Bansal | Mar 2019 | A1 |
20190096217 | Pourmohammad et al. | Mar 2019 | A1 |
20190138512 | Pourmohammad et al. | May 2019 | A1 |
20190260638 | Yocam et al. | Aug 2019 | A1 |
20190280867 | Kurian | Sep 2019 | A1 |
20190319987 | Levy | Oct 2019 | A1 |
20190361843 | Stoddard et al. | Nov 2019 | A1 |
20200028890 | White et al. | Jan 2020 | A1 |
20200053072 | Glozman et al. | Feb 2020 | A1 |
20200195693 | Price | Jun 2020 | A1 |
20200198867 | Nakamichi | Jun 2020 | A1 |
20200202007 | Nagaraja et al. | Jun 2020 | A1 |
20200304536 | Mahabir | Sep 2020 | A1 |
20210027401 | Hovhannisyan et al. | Jan 2021 | A1 |
20210218711 | Biran et al. | Jul 2021 | A1 |
20220272084 | Hyatt | Aug 2022 | A1 |
20230036694 | Coughlan | Feb 2023 | A1 |
20230058040 | Nevius | Feb 2023 | A1 |
20230360040 | Childe | Nov 2023 | A1 |
Number | Date | Country |
---|---|---|
1553747 | Jul 2005 | EP |
2493118 | Aug 2012 | EP |
Entry |
---|
Abdalkarim Awad et al., “Virtual Cord Protocol (VCP): A Flexible DHT-like Routing Service for Sensor Networks”, In Proceedings of the 5th IEEE International Conference on Mobile Ad Hoc and Sensor Systems, 2008, 10 pp. 133-142. |
Hood, Proactive Network-Fault Detection, Sep. 1997, 9 pages. |
Mongeau et al., “Ensuring integrity of network inventory and configuration data”, Telecommunications Network Strategy and Planning Symposium, Networks 2004, 11th International Vienna, Austria, Jun. 13-16, 2004, 6 pgs. |
Weixiong Rao et al., “Optimal Resource Placement in Structured Peer-to-Peer Networks,” Jul. 2010, IEEE Transactions on Parallel and Distributed Systems, vol. 21, No. 7, 16 pgs. |
Tanium Inc., International Search Report and Written Opinion, PCT/US2013/076971, Apr. 4, 2014, 19 pgs. |
Tanium Inc., International Preliminary Report on Patentability, PCT/US2013/076971, Jun. 23, 2015, 14 pgs. |
Tanium Inc., International Search Report and Written Opinion, PCT/US2014/067607, Feb. 18, 2015, 15 pgs. |
Tanium Inc., International Preliminary Report on Patentability, PCT/US2014/067607, May 31, 2016, 11 pgs. |
Tanium Inc., International Search Report and Written Opinion, PCT/US2015/020780, Jul. 2, 2015, 13 pgs. |
Tanium Inc., International Preliminary Report on Patentability, PCT/US2015/020780, Sep. 27, 2016, 9 pgs. |
Hindawi, Non-Final Office Action, U.S. Appl. No. 15/702,617, Jun. 1, 2018, 37 pgs. |
Hindawi, Final Office Action, U.S. Appl. No. 15/702,617, Dec. 27, 2018, 54 pgs. |
Hunt, Non-Final Office Action, U.S. Appl. No. 15/215,468, Oct. 4, 2018, 13 pgs. |
Hunt, Notice of Allowance, U.S. Appl. No. 15/215,468, Jan. 24, 2019, 8 pgs. |
Hunt, Notice of Allowance, U.S. Appl. No. 15/215,468, Apr. 1, 2019, 8 pgs. |
Hunt, Non-Final Office Action, U.S. Appl. No. 15/215,474, Sep. 10, 2018, 10 pgs. |
Hunt, Final Office Action, U.S. Appl. No. 15/215,474, Apr. 1, 2019, 7 pgs. |
Hunt, Notice of Allowance, U.S. Appl. No. 15/215,474, Jul. 11, 2019, 9 pgs. |
Hunt, Notice of Allowance, U.S. Appl. No. 15/713,518, Apr. 10, 2019, 14 pgs. |
Lippincott, Notice of Allowance, U.S. Appl. No. 15/878,286, Apr. 25, 2019, 11 pgs. |
Jae Woo Lee et al., “0 to 10k in 20 Seconds: Bootstrapping Large-Scale DHT Networks”, 2011 IEE International Conference on Communications, Jun. 9, 2011, pp. 1-6. |
Stoica et al., “Chord: A Scalable Peer-to-Peer Lookup Service for Internet Applications”, 2001, pp. 1-12 (Year: 2002). |
Ping Wang et al., “Peer-to-Peer Botnets: The Next Generation of Botnet Attacks”, Jan. 2010, pp. 1-25 (Year: 2010). |
Sean Rhea et al., “Handling Churn in a DHT”, 2004, pp. 1-14 (Year: 2004). |
Richards, Non-Final Office Action, U.S. Appl. No. 16/443,720, Sep. 4, 2020, 13 pgs. |
Richards, Notice of Allowance, U.S. Appl. No. 16/443,720, Feb. 9, 2021, 8 pgs. |
Richards, Notice of Allowance, U.S. Appl. No. 16/443,720, Jun. 15, 2021, 7 pgs. |
Goela, Non-Final Office Action, U.S. Appl. No. 16/943,291, Jul. 16, 2021, 19 pgs. |
Freilich, Non-Final Office Action, U.S. Appl. No. 17/129,638, Jul. 23, 2021, 7 pgs. |
Goela, Notice of Allowance, U.S. Appl. No. 16/943,291, Oct. 1, 2021, 11 pgs. |
Hindawi, Non-Final Office Action, U.S. Appl. No. 16/917,800, Jul. 1, 2021, 7 pgs. |
Hindawi, Notice of Allowance, U.S. Appl. No. 16/917,800, Oct. 15, 2021, 7 pgs. |
Goela, Notice of Allowance, U.S. Appl. No. 16/943,291, Oct. 18, 2021, 5 pgs. |
Hoscheit, Non-Final Office Action, U.S. Appl. No. 17/001,586, Jun. 9, 2022, 7 pgs. |
Freilich, Notice of Allowance, U.S. Appl. No. 17/129,638, Nov. 4, 2021, 9 pgs. |
Stoddard, Non-Final Office Action, U.S. Appl. No. 16/870,742, Oct. 28, 2021, 7 pgs. |
Stoddard, Notice of Allowance, U.S. Appl. No. 16/870,742, Mar. 7, 2022, 10 pgs. |
Goela, Notice of Allowance, U.S. Appl. No. 16/943,291, Jan. 27, 2022, 12 pgs. |
Lippincott, Notice of Allowance, U.S. Appl. No. 15/878,286, Jul. 31, 2019, 5 pgs. |
Lippincott, Notice of Allowance, U.S. Appl. No. 15/136,790, Nov. 20, 2017, 9 pgs. |
Lippincott, Notice of Allowance, U.S. Appl. No. 15/930,342, May 25, 2022, 9 pgs. |
Guieu, Non-Final Office Action, U.S. Appl. No. 17/521,686, Oct. 4, 2022, 38 pages. |
Guieu, Notice of Allowance, U.S. Appl. No. 16/854,844, Jul. 6, 2021, 16 pages. |
Hindawi, Non-Office Action, U.S. Appl. No. 13/797,946, Feb. 27, 2015, 18 pgs. |
Hindawi, Notice of Allowance, U.S. Appl. No. 13/797,946, Sep. 11, 2015, 18 pages. |
Hindawi, Notice of Allowance, U.S. Appl. No. 15/004,757, Jul. 16, 2018, 7 pages. |
Hindawi, Notice of Allowance, U.S. Appl. No. 16/194,240, Mar. 31, 2020, 6 pages. |
Stoddard, Notice of Allowance, U.S. Appl. No. 16/532,391, Oct. 21, 2020, 10 pages. |
Freilich, Notice of Allowance, U.S. Appl. No. 16/565,247, Oct. 15, 2020, 10 pages. |
Freilich, Notice of Allowance, U.S. Appl. No. 17/503,023, Feb. 24, 2023, 8 pages. |
Guieu et al., Notice of Allowance, U.S. Appl. No. 17/521,686, Mar. 3, 2023, 8 pages. |
Lippincott et al., Notice of Allowance, U.S. Appl. No. 17/959,177, Mar. 28, 2023, 9 pages. |
Lippincott et al., Notice of Allowance, U.S. Appl. No. 17/959,177, Jun. 21, 2023, 9 pages. |
Daniel Varga et al., Non-Final Office Action, U.S. Appl. No. 18/123,930, Jun. 14, 2023, 7 pgs. |
Naveen Goela et al., Non-Final Office Action, U.S. Appl. No. 17/182,083, Apr. 27, 2023, 7 pgs. |
Naveen Goela et al., Notice of Allowance, U.S. Appl. No. 17/182,083, Sep. 20, 2023, 8 pgs. |
Corrected Notice of Allowability, U.S. Appl. No. 17/683,213, Oct. 7, 2024, 2 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 17/683,213, Sep. 26, 2024, 2 pages. |
Non-Final Office Action, U.S. Appl. No. 18/196,980, Sep. 19, 2024, 24 pages. |
Non-Final Office Action, U.S. Appl. No. 18/374,621, Aug. 16, 2024, 9 pages. |
Non-Final Office Action, U.S. Appl. No. 18/440,922, Sep. 5, 2024, 14 pages. |
Non-Final Office Action, U.S. Appl. No. 18/516,882, Aug. 28, 2024, 11 pages. |
Notice of Allowance, U.S. Appl. No. 17/683,213, Sep. 16, 2024, 18 pages. |
Notice of Allowance, U.S. Appl. No. 18/225,620, Jul. 18, 2024, 7 pages. |
Supplemental Notice of Allowability, U.S. Appl. No. 18/204,351, Oct. 1, 2024, 2 pages. |
“Total Carbon Accounting: A Framework to Deliver Locational Carbon Intensity Data”, White Paper, Nov. 2021, 29 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 15/004,757, Aug. 24, 2018, 4 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 15/174,850, Jul. 25, 2018, 37 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 16/430,336, Oct. 15, 2020, 2 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 16/917,800, Dec. 16, 2021, 2 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 16/917,800, Nov. 18, 2021, 2 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 16/917,800, Oct. 25, 2021, 2 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 16/943,291, Apr. 11, 2022, 2 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 16/943,291, Feb. 25, 2022, 2 pages. |
Corrected Notice of Allowability, U.S. Appl. No. 18/099,854, Jun. 5, 2023, 7 pages. |
Final Office Action, U.S. Appl. No. 13/084,923, Jul. 1, 2013, 10 pages. |
Final Office Action, U.S. Appl. No. 15/004,757, Dec. 29, 2017, 27 pages. |
Final Office Action, U.S. Appl. No. 15/668,665, Dec. 10, 2019, 13 pages. |
Final Office Action, U.S. Appl. No. 16/952,009, Dec. 13, 2022, 9 pages. |
Final Office Action, U.S. Appl. No. 18/196,980, Mar. 11, 2024, 22 pages. |
H. Brendan McMahan et al., “Communication-Efficient Learning of Deep Networks from Decentralized Data,” 2017, 10 pages, Proceedings of the 20th International Conference on Artificial Intelligence and Statistics (AISTATS), Fort Lauderdale, Florida, USA. |
Ian Goodfellow et al., “Deep Learning,” 2016, 798 pages, MIT Press. |
IT Services, “Environmental impact of IT: desktops, laptops and screens”, How we are reducing IT waste, and steps you can take to reduce your carbon footprint, available online at <https://www.it.ox.ac.uk/article/environment-and-it>, Apr. 13, 2022, 5 pages. |
Justin Sutton-Parker, “Can analytics software measure end user computing electricity consumption?”, Springer, May 5, 2022, 19 pages. |
Justin Sutton-Parker, “Determining commuting greenhouse gas emissions abatement achieved by information technology enabled remote working”, The 11th International Conference on Sustainable Energy Information Technology (SEIT), Aug. 9-12, 2021, 9 pages. |
Justin Sutton-Parker, Determining end user computing device Scope 2 GHG emissions with accurate use phase energy consumption measurement, The 10th International Conference on Sustainable Energy Information Technology (SEIT), Aug. 9-12, 2020, pp. 484-491. |
Justin Sutton-Parker, “Quantifying greenhouse gas abatement delivered by alternative computer operating system displacement strategies”, The 12th International Conference on Sustainable Energy Information Technology, Aug. 9-11, 2022, pp. 1-10. |
Non-Final Office Action, U.S. Appl. No. 12/412,623, Mar. 7, 2011, 10 pages. |
Non-Final Office Action, U.S. Appl. No. 13/084,923, Dec. 9, 2013, 13 pages. |
Non-Final Office Action, U.S. Appl. No. 13/084,923, Feb. 14, 2013, 8 pages. |
Non-Final Office Action, U.S. Appl. No. 13/107,625, Jan. 14, 2014, 9 pages. |
Non-Final Office Action, U.S. Appl. No. 13/301,250, Jun. 26, 2013, 11 pages. |
Non-Final Office Action, U.S. Appl. No. 14/530,601, Nov. 10, 2016, 8 pages. |
Non-Final Office Action, U.S. Appl. No. 14/553,769, Feb. 9, 2017, 16 pages. |
Non-Final Office Action, U.S. Appl. No. 14/554,711, Jul. 29, 2016, 23 pages. |
Non-Final Office Action, U.S. Appl. No. 14/554,739, Aug. 26, 2016, 30 pages. |
Non-Final Office Action, U.S. Appl. No. 15/004,757, Jun. 21, 2017, 23 pages. |
Non-Final Office Action, U.S. Appl. No. 15/004,757, Mar. 9, 2018, 57 pages. |
Non-Final Office Action, U.S. Appl. No. 15/668,665, Aug. 7, 2019, 11 pages. |
Non-Final Office Action, U.S. Appl. No. 16/943,307, Apr. 27, 2022, 7 pages. |
Non-Final Office Action, U.S. Appl. No. 16/952,009, Aug. 1, 2022, 8 pages. |
Non-Final Office Action, U.S. Appl. No. 17/503,023, Nov. 25, 2022, 7 pages. |
Non-Final Office Action, U.S. Appl. No. 17/732,402, May 21, 2024, 20 pages. |
Non-Final Office Action, U.S. Appl. No. 17/751,504, Jun. 9, 2023, 31 pages. |
Non-Final Office Action, U.S. Appl. No. 18/196,980, Sep. 8, 2023, 17 pages. |
Non-Final Office Action, U.S. Appl. No. 18/204,351, Jan. 5, 2024, 8 pages. |
Non-Final Office Action, U.S. Appl. No. 18/225,620, Mar. 14, 2024, 14 pages. |
Notice of Allowability, U.S. Appl. No. 17/751,504, Dec. 18, 2023, 11 pages. |
Notice of Allowance, U.S. Appl. No. 12/412,623, Oct. 5, 2011, 5 pages. |
Notice of Allowance, U.S. Appl. No. 13/084,923, Jul. 30, 2014, 7 pages. |
Notice of Allowance, U.S. Appl. No. 13/107,625, Apr. 23, 2014, 7 pages. |
Notice of Allowance, U.S. Appl. No. 13/107,625, Oct. 22, 2014, 7 pages. |
Notice of Allowance, U.S. Appl. No. 13/301,250, Jan. 21, 2014, 10 pages. |
Notice of Allowance, U.S. Appl. No. 13/301,250, Oct. 24, 2014, 8 pages. |
Notice of Allowance, U.S. Appl. No. 13/797,962, Feb. 17, 2015, 10 pages. |
Notice of Allowance, U.S. Appl. No. 14/530,601, Apr. 5, 2017, 8 pages. |
Notice of Allowance, U.S. Appl. No. 14/553,769, May 19, 2017, 6 pages. |
Notice of Allowance, U.S. Appl. No. 14/554,711, Jan. 27, 2017, 22 pages. |
Notice of Allowance, U.S. Appl. No. 14/554,739, May 9, 2017, 20 pages. |
Notice of Allowance, U.S. Appl. No. 15/174,850, Jun. 20, 2018, 39 pages. |
Notice of Allowance, U.S. Appl. No. 15/215,483, Jun. 7, 2018, 9 pages. |
Notice of Allowance, U.S. Appl. No. 15/668,665, Mar. 2, 2020, 7 pages. |
Notice of Allowance, U.S. Appl. No. 15/686,054, Jul. 18, 2018, 6 pages. |
Notice of Allowance, U.S. Appl. No. 15/702,617, Apr. 23, 2019, 24 pages. |
Notice of Allowance, U.S. Appl. No. 15/713,518, Jul. 29, 2019, 13 pages. |
Notice of Allowance, U.S. Appl. No. 15/878,286, Jan. 10, 2020, 6 pages. |
Notice of Allowance, U.S. Appl. No. 15/930,342, Mar. 24, 2022, 8 pages. |
Notice of Allowance, U.S. Appl. No. 16/033,131, Jun. 30, 2020, 27 pages. |
Notice of Allowance, U.S. Appl. No. 16/194,240, Aug. 14, 2019, 10 pages. |
Notice of Allowance, U.S. Appl. No. 16/194,240, Mar. 2, 2020, 9 pages. |
Notice of Allowance, U.S. Appl. No. 16/194,240, Nov. 7, 2019, 10 pages. |
Notice of Allowance, U.S. Appl. No. 16/430,336, Aug. 7, 2020, 28 pages. |
Notice of Allowance, U.S. Appl. No. 16/430,336, Sep. 3, 2020, 5 pages. |
Notice of Allowance, U.S. Appl. No. 16/565,247, Aug. 17, 2020, 19 pages. |
Notice of Allowance, U.S. Appl. No. 16/943,307, Nov. 8, 2022, 11 pages. |
Notice of Allowance, U.S. Appl. No. 16/943,307, Oct. 6, 2022, 12 pages. |
Notice of Allowance, U.S. Appl. No. 16/952,009, Jul. 25, 2023, 8 pages. |
Notice of Allowance, U.S. Appl. No. 16/952,009, Mar. 28, 2023, 8 pages. |
Notice of Allowance, U.S. Appl. No. 17/001,586, Sep. 8, 2022, 8 pages. |
Notice of Allowance, U.S. Appl. No. 17/751,504, Nov. 21, 2023, 12 pages. |
Notice of Allowance, U.S. Appl. No. 18/099,854, May 26, 2023, 12 pages. |
Notice of Allowance, U.S. Appl. No. 18/123,930, Nov. 7, 2023, 11 pages. |
Notice of Allowance, U.S. Appl. No. 18/204,351, Jun. 21, 2024, 10 pages. |
Peter Kairouz et al., “Advances and Open Problems in Federated Learning,” 2021, 121 pages, arXIV:1912.04977v3. |
Requirement for Restriction/Election, U.S. Appl. No. 12/412,623, Nov. 22, 2010, 5 pages. |
Requirement for Restriction/Election, U.S. Appl. No. 13/107,625, Oct. 11, 2013, 6 pages. |
Supplemental Notice of Allowability, U.S. Appl. No. 16/443,720, Aug. 4, 2021, 2 pages. |
Supplemental Notice of Allowability, U.S. Appl. No. 16/870,742, Apr. 11, 2022, 2 pages. |
Trevor Hastie et al., “The Elements of Statistical Learning, Data Mining, Inference, and Prediction,” 2001, 545 pages, Springer. |
Trevor Hastie et al., “The Elements of Statistical Learning, Data Mining, Inference, and Prediction,” 2008, 764 pages, Second Edition, Springer. |
Number | Date | Country | |
---|---|---|---|
63257525 | Oct 2021 | US |