Patent Publication Number: US-11050779-B1

Title: Systems and methods for assessing cybersecurity state of entities based on computer network characterization

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     The present application is a continuation of U.S. patent application Ser. No. 16/775,840, filed Jan. 29, 2020, and titled “Systems and Methods For Assessing Cybersecurity State of Entities Based on Computer Network Characterization,” the entirety of which is incorporated herein by reference. 
    
    
     TECHNICAL FIELD 
     The following disclosure is directed to methods and systems for assessing the cybersecurity state of entities based on computer network characterization and, more specifically, methods and systems for assessing the cybersecurity state of entities based on characterization of public and/or private computer networks. 
     BACKGROUND 
     Public computer networks have become ubiquitous as entities aim to accommodate guests, customers, and persons unaffiliated with the entities in gaining access to the Internet. In many instances, entities (e.g., business owners, service providers, etc.) set up and maintain public networks (e.g., guest Wi-Fi) in places such as cafes, offices, or airports. where members of the public or customers can log on. However, while the ease of accessibility allows customers to conveniently attach to these networks, they are typically minimally secured or not secured against malicious actors. Thus, these networks typically have worse security characteristics than do the more secure private networks. Poorly secured networks can put the entity at greater risk of security breaches. 
     SUMMARY 
     Disclosed herein are methods and systems for assessing the cybersecurity state of entities based on computer network characteristics. For example, network characteristics may include: the type of network, the use of the network, the identity of the network, the name of the network, the entity or entities associated with the network, etc. The exemplary methods and systems described herein can determine whether an entity&#39;s computer networks (e.g., wired and/or wireless networks) includes a public and/or a private network and determine the cybersecurity state (e.g., security rating) of the entity by excluding security characteristics related to the public network. In some examples, the cybersecurity state of the entity may be more accurately determined by excluding security characteristics associated with public networks as public networks tend to be less secure compared to private networks. Note, however, that the access to some public networks can be controlled (while not necessarily being secure), e.g., where a member of the public requires a key or password to gain access to the public network. 
     Exemplary systems may characterize computer networks associated with an entity based on service set identifier(s) (SSID(s)) of the wireless network(s), data related to user devices that connect to the network(s) (e.g., wired or wireless network), and/or data related to user email or identifier(s)(e.g., email opened or read on a network, email addresses, web account information, etc.). In some embodiments, the systems may determine the security characteristic(s) of the identified private and/or public networks. In some embodiments, assessing the cybersecurity state of entities can include determining the security ratings for entities based on an evaluation of the security characteristics associated with the private network(s) and by excluding security characteristics associated with the public network(s). 
     In one aspect, the disclosure features a computer-implemented method including obtaining, for one or more computer networks of a plurality of computer networks associated with an entity, a network dataset including a service set identifier (SSID); and obtaining a plurality of Internet Protocol (IP) addresses associated with the entity. The method further includes determining whether each of the plurality of computer networks includes a public network or a private network based on the network dataset; and assessing a cybersecurity state of the entity based on an evaluation of security characteristics of the IP addresses attributed to the private network, excluding security characteristics of the IP addresses attributed to the public network. 
     Various embodiments of the exemplary method can include one or more of the following features. Determining whether each of the computer networks includes a public network or a private network based on the network dataset can include determining whether the SSID includes a term including: “guest”, “public”, “visit”, “byod”, “free”, “customer”, and/or “personal”, in which the term is in a natural language. The method can include obtaining, for one or more computer network of the plurality of computer networks of the entity, a plurality of network datasets including the network dataset. Each network dataset can include an SSID and can be from a unique time. Determining whether each of the computer networks includes a public network or a private network based on the network dataset can be performed for two or more network datasets of the plurality of network datasets. The time can correspond to a day. Determining whether each of the computer networks includes a public network or a private network based on the network dataset can be performed for three or more network datasets of the plurality of network datasets. 
     The method can include obtaining one or more SSIDs of common public networks, and blacklisting the SSIDs of the common public networks such that at least one IP address is not attributed to one or more of the common public networks. The method can include obtaining, for each device of a plurality of devices, a device dataset including: (a) cookies, (b) device fingerprints, and/or (c) a device identifier; and determining whether each of the computer networks includes a public network or a private network based on one or more device datasets. Determining whether each of the computer networks includes a public network or a private network based on the device dataset(s) can further include determining whether the device(s) has connected to one or more computer networks of the plurality of computer networks. 
     If the device has connected to the at least one computer network, determining whether each of the computer networks includes a public network or a private network based on one or more device datasets further includes determining a connection duration and/or connection frequency of the device connected to the computer network(s) in a given time period. The method can further include comparing (i) a first number of devices of the plurality of devices that has connected to the computer network(s) to (ii) a second number of devices typically associated with the computer network(s); and determining that the computer network(s) includes a public network if the first number is greater than the second number. Determining whether each of the computer networks includes a public network or a private network based on the device dataset(s) can include, for a given network of the plurality of computer networks, determining that the given computer network is a public network based on a connection record of the device. The connection record can indicate whether the device previously connected to a different computer network (i) for a longer duration than connecting to the given computer network and/or (ii) more frequently than connecting to the given computer network. 
     The method can include obtaining, for each user of a plurality of users, an email dataset including one or more of: (i) an indication that the user opened or read an email from an email service provider and network information associated with a client with which the user opened or read the email, or (ii) a user identifier including a user email address and/or web account information; and determining whether each of the computer networks includes a public network or a private network based on one or more email datasets. The network information can indicate a first computer network in which the client was used to open or read the email. The method can further include comparing (i) the first computer network to (ii) at least a second computer network to which the user belongs; and if the first computer network is not the second computer network, determining that the computer network is a public network. The user identifier can indicate a first computer network. The method can further include: comparing (i) the first computer network to (ii) at least a second computer network to which the user belongs; and, if the first computer network is not the second computer network, determining that the computer network is a public network. Determining whether each of the plurality of computer networks includes a public network or a private network based on the network dataset can further include providing at least a portion of the network dataset as input to a trained classifier to determine whether the network is a public network or a private network. 
     In another aspect, the disclosure features a computer-implemented method including obtaining, for each device of a plurality of devices, a device dataset including: (a) cookies, (b) device fingerprints, and/or (c) a device identifier. The method can include obtaining a plurality of Internet Protocol (IP) addresses associated with the entity; determining, for a plurality of computer networks associated with the entity, whether each of the computer networks include a public network or a private network based on the device datasets; and assessing a cybersecurity state of the entity based on an evaluation of security characteristics of the IP addresses attributed to the private network, excluding security characteristics of the IP addresses attributed to the public network. 
     Various embodiments of the exemplary method can include one or more of the following features. Determining whether each of the computer networks includes a public network or a private network based on the device datasets can include determining whether the device of the plurality of devices has connected to the computer network based on the device datasets. If the device has connected to the computer network(s), determining whether each of the computer networks includes a public network or a private network based on the device datasets can include determining a connection duration and/or connection frequency of the device connecting to the computer network in a given time period. The method can include comparing (i) a first number of devices of the plurality of devices that has connected to the computer network to (ii) a second number of devices typically associated with the computer network; and determining that the computer network includes a public network if the first number is greater than the second number. 
     The method can include obtaining, for one or more computer networks of an entity, a network dataset including one or more service set identifiers (SSIDs); and determining whether each of the computer networks includes a public network or a private network based on the network dataset. Determining whether each of the computer networks includes a public network or a private network based on the SSID(s) can include determining whether the SSID includes a term including one or more of: “guest”, “public”, “visit”, “byod”, “free”, “customer”, and/or “personal”, in which the term is in a natural language. Determining whether each of the computer networks includes a public network or a private network based on the device datasets can include for a given network of the plurality of computer networks, determining that the given computer network is a public network based on a connection record of the device, the connection record indicating whether the device previously connected to a different computer network (i) for a longer duration than connecting to the given computer network and/or (ii) more frequently than connecting to the given computer network. 
     In yet another aspect, the disclosure features a computer-implemented method including obtaining, for each user of a plurality of users, an email dataset including (i) an indication that the user opened or read an email from an email service provider and network information associated with a client with which the user opened or read the email, and/or (ii) a user identifier including a user email address and/or web account information. The method can include obtaining a plurality of Internet Protocol (IP) addresses associated with the entity; determining, for a plurality of computer networks associated with the entity, whether each computer network includes a public network or a private network based on the email datasets; and assessing a cybersecurity state of the entity based on an evaluation of security characteristics of the IP addresses attributed to the private network, excluding security characteristics of the IP addresses attributed to the public network. 
     Various embodiments of the exemplary method can include one or more of the following features. The network information can indicate a first computer network in which the client was used to open or read the email. The method can further include comparing (i) the first computer network to (ii) at least a second computer network to which the user belongs; and if the first computer network is not the second computer network, determining that the computer network(s) includes a public network. The user identifier can indicate a first computer network. The method can include comparing (i) the first computer network to (ii) at least a second computer network to which the user belongs; and, if the first computer network is not the second computer network, determining that the computer network is a public network. The method can include obtaining, for one or more computer networks associated with an entity, a network dataset including one or more service set identifiers (SSIDs); and determining whether each of the computer networks includes a public network or a private network based on the network dataset. Determining whether each of the computer networks includes a public network or a private network based on the network dataset can include determining whether the SSID includes a term including: “guest”, “public”, “visit”, “byod”, “free”, “customer”, and/or “personal”, in which the term is in a natural language. 
     The method can include obtaining, for each device of a plurality of devices, a device dataset including: (a) cookies, (b) device fingerprints, and/or (c) a device identifier; and determining whether each of the computer networks includes a public network or a private network based on one or more device datasets. Determining whether each of the computer networks includes a public network or a private network based on the device dataset(s) can include, for a given network of the plurality of computer networks, determining that the given computer network is a public network based on a connection record of the device. The connection record can indicate whether the device previously connected to a different computer network (i) for a longer duration than connecting to the given computer network and/or (ii) more frequently than connecting to the given computer network. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram of an exemplary computer network for an entity. 
         FIG. 2  is a flowchart of an exemplary method for assessing the cybersecurity state of entities based on identification of computer networks via service set identifiers (SSID s). 
         FIG. 3  is a flowchart of an exemplary method for assessing the cybersecurity state of entities based on identification of computer networks via device dataset(s). 
         FIG. 4  is a flowchart of an exemplary method for assessing the cybersecurity state of entities based on identification of computer networks via email dataset(s). 
         FIG. 5  is a block diagram of an example computer system that may be used in implementing the technology described herein. 
     
    
    
     DETAILED DESCRIPTION 
     Disclosed herein are exemplary embodiments of systems and methods for assessing the cybersecurity state of entities based on characterization of the entities&#39; computer networks. Entities can include corporations, schools, governments, individuals, etc. In some embodiments, by identifying entities&#39; computer networks as public or private and evaluating related security characteristics, entities can be more accurately rated as to their security risks and/or security record. 
     Computer networks may be wired or wireless. In some embodiments, a private network can be a host network, a secured network, etc. (e.g., a virtual private network (VPN), an enterprise private network (EPN), a personal area network (PAN), etc.). In some embodiments, a public network can be a guest network, an unsecured network, etc. (e.g., a wide-area network (WAN), a metropolitan area network (MAN), etc.). Some types of networks may have both public or private variants. 
     Entities may have only private network(s), only public network(s), or both private network(s) and public network(s). In some embodiments, if only private networks are identified for the entity, then the cybersecurity state (e.g., security rating) of the entity can be based solely on the identified private network(s). For instance, the entity&#39;s security rating can be limited to the security characteristics of the identified private network(s). In some embodiments, if both private and public network(s) are identified for the entity, then the security rating of the entity can be based on the identified private network(s) (and not based on the public network). For instance, the cybersecurity state (e.g., security rating) can be based on the security characteristics of the identified private network(s) while excluding some or all of the security characteristics of the identified public network(s). 
     Any of the below-described exemplary methods and systems can be used alone or in combination to characterize entities&#39; computer networks and determine the cybersecurity state of the entities. The methods and systems can include obtaining network dataset(s), device dataset(s), and/or email dataset(s) to characterize entities&#39; computer networks. In some embodiments, one dataset may be used to enrich other datasets. For example, the network dataset(s) may be combined with the device dataset(s) and/or email dataset(s) to determine with greater confidence whether a network is a public network (as compared to using the network dataset alone), as each dataset can provide a different context into usage patterns of the networks and the labels that the entities may have applied onto those networks. For example, an IP address (associated with an entity) with high device turnover observed in combination with the SSID of the network including the term “guest” can lend a higher confidence to the conclusion that the network is a public network as compared to each of those two observations in isolation. 
     Network Characterization Via SSIDs 
     In some embodiments, entity computer networks can be characterized via the service set identifiers (SSIDs) associated with the computer networks. An SSID is the primary name for a wireless network (e.g., a wireless local area network (WLAN), Wi-Fi, etc.) given to it by the entity that maintains the network. For example, SSIDs that belong to public networks may include one or more terms from the following non-exhaustive, non-limiting list: “guest”, “public”, “visit”, “byod”, “free”, “customer”, “personal”, “open”, “unsecured”, etc. Note that any of the terms used herein can be represented in any natural language or dialect (e.g., English, Spanish, Mandarin, Urdu, German, etc.) Example SSIDs for public networks may be: “Corporate_Guest”, “Municipal-Public2”, “Unsecured_CityUniversity”, “SHOPwireless_customer”, “VisitorWIFI-cafe”, “gym_free”, etc. By contrast, SSIDs for private networks may not be broadcast or may include one or more terms from the following non-exhaustive, non-limiting list: “secure”, “private”, “host”, “intranet”, etc. Alternatively, SSIDs for private networks may not include any terms indicative that the type of the network is private. 
     In some embodiments, the system can process the characters of an SSID of a network to determine whether it is a public or private network. Table 1 lists examples of case-insensitive terms or “tags” used in public network SSIDs and associated processing logic. For example, the system can determine whether lowercase version of the SSID includes the term “guest” or “visit”. 
     
       
         
           
               
             
               
                 TABLE 1 
               
             
            
               
                   
               
               
                 Examples of “tags” used in public  
               
               
                 network SSIDs and associated processing logic. 
               
            
           
           
               
               
               
            
               
                   
                 Guest Tag 
                 Tagging Logic 
               
               
                   
                   
               
               
                   
                 guest 
                 lower(ssid) contains “guest” 
               
               
                   
                 public 
                 lower(ssid) contains “public” &amp; lower(ssid) 
               
               
                   
                   
                 !contains “republic” 
               
               
                   
                 visit 
                 lower(ssid) contains “visit” 
               
               
                   
                 byod 
                 lower(ssid) contains “byod” 
               
               
                   
                 free 
                 lower(ssid) contains “free” // with space 
               
               
                   
                 customer 
                 lower(ssid) contains “customer” 
               
               
                   
                 personal 
                 lower(ssid) contains “personal” 
               
               
                   
                   
               
            
           
         
       
     
       FIG. 1  illustrates an exemplary computer network  100  for an entity. The exemplary network can include a modem  102  (e.g., a cable modem, a digital subscriber line (DSL) modem, etc.) configured to connect the network to the Internet and a router  104  configured to create the network. The router  104  can connect directly to exemplary trusted user devices  106   a - 106   c  (collectively referred to as  106 ) and exemplary guest user devices  108   a - 108   b  (collectively referred to as  108 ). In some embodiments, the router  104  is connected to one or more wireless access points (WAP(s)) that are each configured to create a wireless local area network (WLAN) for connecting to user devices  106  and/or  108 . Each network can have its own SSID; alternatively, two or more networks may share an SSID. In some embodiments, WAP(s) can be connected to a switch or hub to create the WLAN(s). WAP(s) can create private networks  110   a - 110   b  (collectively referred to as  110 ) and/or public networks  112   a - 112   b  (collectively referred to as  112 ). 
       FIG. 2  is a flowchart of an exemplary method  200  for assessing cybersecurity state of entities based on identification of computer networks via service set identifiers (SSIDs). In step  202 , a network dataset is obtained for one or more computer networks associated with an entity. An exemplary network dataset can include one or more SSID(s) of the computer network(s). In step  204 , Internet Protocol ((IP) address(es)) for the entity can be obtained. In some embodiments, the SSIDs and the IP addresses can be obtained separately and/or obtained from separate sources. In some embodiments, SSIDs may be drawn from a third-party data provider via, e.g., an application programming interface (API) or software development kit (SDK). In some embodiments, a filter may be applied to the data from the data source to remove data associated with service provider-type entities (e.g., universities, technology services companies, etc.). This can be beneficial in avoiding IP addresses for the service provider-type entities when the entity using the network is different than the service provider associated with the IP address. In some embodiments, one or more SSIDs of common public networks (e.g., belonging to a municipality or utility company) may be obtained and blacklisted such that the IP address of an entity is not attributed to the common public network. In some embodiments, one or more IP addresses may be blacklisted. Examples of how IP addresses for entities may be obtained are discussed below under heading “IP addresses and Associated Security Characteristics.” 
     In some embodiments, multiple network datasets can be obtained for the same network. Each network dataset may be associated with a unique time. For example, each network dataset may include a timestamp indicating the time of day, day, month, etc. that the data was collected. In some cases, obtaining multiple network datasets can be beneficial for ensuring that the same SSID is associated with the network and thereby avoiding a false association. In some embodiments, the system can determine whether the computer network is a public or a private network after at least two network datasets (each dataset associated with a unique time) are obtained. For example, the system can determine that a particular computer network is a public network based on the same SSID after three or more days of data indicating as such. 
     In step  206 , the system can determine whether each computer network includes a public and/or private network based on the network dataset (e.g., including each network&#39;s associated SSID). In some embodiments, the SSID can be processed to determine whether the SSID includes one or more terms indicating that it may belong to a public network. For example, the SSID may be analyzed to determine whether it includes one or more of the terms “guest”, “public”, “visit”, “byod”, “free”, “customer”, and/or “personal”. 
     In some embodiments, the selection of probable SSIDs that are public networks can be improved by using information and/or network context already known about the entity. For example, by mapping known SSIDs to known entities, and grouping by (i) one or more characteristics of the entity (e.g., industry, services offered, products offered, etc.) and/or (ii) the distinct count of entities for which those SSIDs or semantics of the SSID appear, the exemplary system can identify instances in which the SSID or semantics of the SSID is commonly used across two or more entities. SSIDs that are commonly used across entities, or SSIDs that share similarities with one another, may be an indication of a specific theme of the network and expressed within the SSID (e.g., “guest”, “public”, “visit”, “byod”, “free”, “customer”, etc.). Conversely, SSIDs that are distinctly unique may be an indication of the SSID being associated with a private network. 
     In some embodiments, this dataset could then be ingested into a machine learning algorithm (e.g., a predictive model, a logistical regression model, a classifier, a decision tree, a random forest of decision trees, an artificial neural network, a support vector machine, a Bayesian network) to subsequently classify any arbitrary SSID as a probable public network. Any suitable techniques (e.g., predictive modeling processes, machine learning processes, etc.) may be used to fit the machine learning model to the data and/or to tune (e.g., optimize) the model, including but not limited to cross-validation and hyper-parameter tuning. In some embodiments, a machine learning model can be trained on a dataset of SSIDs, an indicated of whether the SSID is associated with a public or private network. This model can then be used to determine whether a given SSID is likely to be a public or a private network. 
     In some embodiments, once the public and/or private networks are identified, an IP address is attributed to the identified network. For example, once an SSID of a network reveals that the network is a public network, the system can determine which IP address should be attributed to the network based on the obtained data. 
     In some embodiments, once the IP address is attributed to the identified network, one or more security characteristics of each private network&#39;s IP address are determined. In some embodiments, the security characteristics of the IP address of each identified network (e.g., public and/or private) are determined. In other embodiments, the security characteristics of the IP addresses associated with only the private networks are determined (and not the public networks). Examples of security characteristics of computer network(s) and associated IP address(es) are described further below under heading “IP Addresses and Associated Security Characteristics.” 
     In step  208 , the cybersecurity state (e.g., security rating, level of security, etc.) of the entity can be assessed based on an evaluation of the security characteristics of the IP address(es) attributed to a private network. The evaluation can exclude the security characteristics of the IP address(es) attributed to the public network. In some embodiments, if the security characteristics of the IP address(es) attributed to the public network are determined, they need not be evaluated in order to be excluded. Examples of determining the security ratings of entities are described further below under heading “Security Ratings of Entities.” For example, an entity&#39;s security rating may be “dragged down” by the relatively negative security characteristics of the public network, as public networks are typically less secure. Therefore, it can be beneficial to exclude the security characteristics of public network(s) so that an entity can be evaluated based on those associated with its more secure or more controlled private network(s). 
     Network Characterization Via User Device Activity 
     In some embodiments, entity computer networks can be identified via user device activity. As used herein, user devices can include any user device that can be connected to a computer network via a wired or wireless connection. For example, user devices can include mobile phones, smart phones, smart watches, laptops, notebook computers, desktop computers, tablets, Internet-of-things (IoT) devices, etc. For instance, user devices can temporarily connect to one or more computer network over a given time period. This is especially true for mobile devices (e.g., smart phones, laptops, tablets, smart watches, etc.) that may connect and disconnect from multiple networks in a given day. For example, a user&#39;s device can start with a connection to a home network (which is typically a private network), then connect to a work network (which is typically a private network) during the user&#39;s work day. If, for example, the user goes to a gym or a café after work, her device may connect to the gym&#39;s or the café &#39;s guest network (which is typically a public network) before returning to the user&#39;s home network. 
     In some embodiments, various types of device activity can reveal that a particular network is a public network. For example, some airports have public computer networks that may receive thousands of distinct user and device connections per day that are only usually observed for one distinct day within a short-time window considering that many individuals are only at an airport transiently. In another example, device datasets for some corporations&#39; guest networks may reveal classes of user devices whose presences on the network are brief (e.g., for users employed by other, third-party corporations). In another example, devices of guests staying at hotels are expected to have a distinct, but continuous and brief presence on the hotel network before physically departing. The guests&#39; usage pattern is therefore different than those user devices that operate as part of the hotel systems (e.g., hotel employee devices or hotel-owned devices). 
     In some embodiments, the device dataset can include a connection record of a device. The connection records can indicate whether the device previously connected to a different computer network (i) for a longer duration than connecting to the given computer network and/or (ii) more frequently than connecting to the given computer network. For instance, determining whether the device is non-transient in a different network (e.g., network A of entity A) can be used to determine whether the device is transient for a particular entity&#39;s network (e.g., network B of entity B). For instance, a device dataset for network A of entity A may reveal one or more devices X that frequently and/or persistently connect (e.g., in a “non-transient” manner) to network A (e.g., during a particular time window, for a particular time period, at a workplace, at a school, etc.). Another device dataset for network B of entity B may reveal that that the same device(s) X are connected to network B. However, by knowing that device(s) X are non-transient for network A, it may be possible to infer that the device(s) are transient for network B. For example, if device X is found to connect to a school&#39;s computer network during daytime hours and the same device X appears in the network for a café from time to time, it is likely that the device is transient in the café network and that the café network is likely public. 
     In some embodiments, device activity may not easily reveal the type of network without additional information. In another example, many entities have network policies that allow employee-owned mobile devices onto the entity&#39;s public networks only (and not onto the entity&#39;s private network). In this case, it may be helpful to know about the company network policy lest the network be determined a private network. 
     Thus, observing the device activity as the device accesses the Internet via various computer networks can reveal information about the networks themselves. Traces of device activity can be determined from the device cookies, fingerprints, and/or unique identifier(s). For example, the identifier of a device may take different forms, either individually or in combination with other identifiers, including but not limited to: a unique device identifier (UDID) as provided by the operating system of the device; an identifier provided by the manufacturer (e.g., a serial number); an identifier provided to a browser on the device (e.g., using a cookie); an identifier as provided by a mobile application on the device to the application itself (e.g., an application-specific unique identifier); an identifier associated to a device modem (e.g., an IMEI number); an identifier associated to the network interface (e.g., a MAC address); an identifier associated with the SIM card (e.g., the SIM number); an identifier associated with the telephony services (e.g., a phone number); and/or an international mobile subscriber identity (IMSI) number. A form of identifier associated with a device as provided in the data set may be generic and may be present in other unrelated devices that are not in the data set. In some cases, the form of identifier may be unique to the data set itself, e.g., a salted hash of one or more other identifiers. 
     The system may obtain the above information (e.g., cookies, fingerprints, identifiers, etc.) from website operators, advertisement service providers, marketing service providers, email service providers, transaction facilitators, etc. The system can receive datasets including the IP address(es) for the network(s) to which the user&#39;s device has connected and determine the entities associated with these IP address(es). 
     In some embodiments, the system can determine characteristics of the network connections to the networks by the devices. The system may observe, collect, and/or receive one or more characteristics of connections, e.g., the number of devices that have connected, the number of unique devices that have connected (e.g., devices that connect and have not connected before or again), the duration of time for which the devices have connected, and/or the frequency of connection by the devices. The characteristics may depend on attributes of the network and/or entity including, e.g., the number of distinct IP addresses associated to the public network, the size of the entity (e.g., by revenue, by employee count, etc.), the entity&#39;s industry, and/or the particular products or services offered by the entity. For example, the system may determine that the network to which the devices are connected is a public network if there are many connected devices (e.g., at least 50 devices, hundreds of devices over a short time period, etc.), if the connection times are brief (e.g., lasting for less than a couple of hours), and/or infrequent (e.g., once per week or for a single instance). For example, the system can compare the entity&#39;s headcount or company size to the number of devices connected to determine whether more than an expected number (or expected order of magnitude) of devices have connected to the entity&#39;s network. 
     In some embodiments, the system may compare one or more of the above metrics to a pre-determined threshold. Such a threshold may be determined using machine learning algorithms trained on data over time. For example, a network might be deemed to be a public network if the number of devices connected to the network is greater than a particular threshold (e.g., at least 1.5 times, at least twice, at least three times, at least five times, at least ten times, etc.) the number typically associated with the network. In another example, the system can compare a typical or expected connection duration of devices for the entity to a measured connection duration threshold to determine whether the devices have connected for shorter durations of time to the network. For example, a small business that offers public Wi-Fi may observe only a handful of connected user devices per week connecting to its public network. In contrast, an airport&#39;s public network may see thousands of user device connections per day. 
       FIG. 3  is a flowchart of an exemplary method  300  for assessing cybersecurity state of entities based on identification of computer networks via device dataset(s). In step  302  of method  300 , a device dataset is obtained for each of one or more user devices. The device dataset(s) can include device cookies, device fingerprints, and/or device identifier(s). Examples of device identifiers and fingerprints can include those described above. 
     In step  304 , IP address(es) associated with the entity can be obtained, for example, by the methods described in the below section titled “IP Addresses and Associated Characteristics.” 
     In step  306 , the system can determine whether the entity&#39;s computer network(s) include a public and/or private network based on the obtained device datasets. In some embodiments, the system can determine whether the device has connected to the entity&#39;s computer network(s) based on the obtained dataset for the device, as described above. 
     In some embodiments, once the public and/or private networks are identified, one or more security characteristics of each private network&#39;s IP address can be determined. In some embodiments, the security characteristics of the IP address of each identified network (e.g., public and/or private) are determined. Examples of security characteristics of computer network and associated IP address(es) are described further below. In some embodiments, once the public and/or private networks are identified, an IP address can be attributed to the identified network. For example, once the device dataset(s) reveal that the network is a public network, the system can determine which IP address(es) should be attributed to the public network based on the obtained data. 
     In some embodiments, once the IP address(es) are collected for a given network, the characteristics of each distinct IP address can be assessed to determine (i) the average connection duration of user devices and/or (ii) uniqueness of devices connected to the entity&#39;s network. This data can be compared to corresponding data of other IP addresses that are attributed to the entity. This analysis can provide a global understanding of the more frequently utilized networks of entity. For example, this analysis may reveal that one of an entity&#39;s public networks may be more frequented by guest devices as compared to another of the entity&#39;s public networks. 
     In step  308 , the cybersecurity state (e.g., security rating, level of security, etc.) of the entity can be assessed based on an evaluation of security characteristics of the IP addresses attributed to a private network and by excluding security characteristics of the IP addresses attributed to a public network. Examples of determining the security ratings of entities are described further below under heading “Security Ratings of Entities.” 
     Network Characterization Via Email-Related Data 
     In some embodiments, entity computer networks can be identified via email-related data (e.g., email activity, email address, etc.). Email-related data may be beneficial in determining the temporal nature of users and their devices&#39; diversity on particular networks and/or the diversity of user identifier domain names observed on that network. 
     A user&#39;s email-related activity may be captured in one or more ways. For example, email service providers and/or email marketing services may collect and provide readability and/or delivery metrics of emails sent by their users (e.g., customers) to other users or entities. These metrics can be collected by the use of an image or other remote resource (also known as a “pixel”) embedded in the outgoing email by the email service provider. The receiving email client fetches the pixel when a user opens and/or reads the email, which triggers information being sent to the email service provider. This information can include whether the email was opened and/or read by the recipient. In some cases, this can enable the email service provider to associate an IP address of the email client to the email address of the user. Therefore, when a user opens or reads her email on a device connected to an entity&#39;s network, information related to the entity&#39;s network is included in the email dataset. If, for example, the user opens or reads her email on an entity&#39;s public network, the information can include information related to the public network (e.g., configuration of the particular network via headers sent by client to the email service provider). 
     In some embodiments, identifiers can include those associated with user accounts used access a service (e.g., Software-as-a-Service (SaaS)). These accounts may be accessed via HyperText Transfer Protocol (HTTP), Internet Message Access Protocol (IMAP), Post Office Protocol 3 (POP3), or other protocols that collect and/or catalog users&#39; email and/or user devices&#39; IP addresses (e.g., the device&#39;s IP address as observed externally). Note that a user device&#39;s assigned IP address may differ from the device&#39;s externally observed IP address (e.g., due to network address translation (NAT) present in the Internet Protocol version 4 (IPv4) Internet). 
     The system may obtain the above information from website operators, advertisement service providers, marketing service providers, email service providers, transaction facilitators, etc. In some embodiments, the domain name (e.g., “CompanyA.com”) of a user&#39;s email address (e.g., username@entityA.com) may be used in determining the entity associated with the user. For example, an email-related dataset can include observed data related to numerous devices and associated users. Additionally, if the IP addresses of those observations indicate that the observations belong to entity “Company A” and the domain names of the users&#39; email addresses belong to a diverse set of entities, the system may determine, based on this information, that the network is a public network. 
     In some embodiments, the user identifier can include the user&#39;s email address or a derived form (e.g., a hash) of the user&#39;s email address. In some embodiments, a user identifier can include information related to one or more web accounts associated with the user. Web account information can include the user&#39;s name (e.g., “Jane Smith”), an email address (e.g., “janesmith@example.com”), a log-in or account name associated with an entity (e.g., “j smith” for logging into Entity A&#39;s website), etc. In some embodiments, user identifiers that are used in registration to websites (e.g., for log-in purposes or for creating an account) can be obtained. In some embodiments, web account information can include activity logs of websites or software services associated with a user identifier. 
     In some embodiments, if the client network information indicates a particular computer network in which the client was used to open or read the email, the method can include comparing the particular computer network to another computer network to which the user belongs. If the particular computer network is not the other computer network, the method can include determining that the computer network is a public network. In some embodiments, if the user identifier indicates a particular computer network, the method can include comparing the first computer network to another computer network to which the user belongs. If the particular computer network is not the other computer network, the method can include determining that the computer network is a public network. 
       FIG. 4  is a flowchart of an exemplary method  400  for assessing the cybersecurity state of entities based on identification of computer networks via email dataset(s). 
     In step  402  of method  400 , an email dataset is obtained for a set of users. In some embodiments, the email dataset(s) may include an indication that the user opened or read an email from an email service provider. In some embodiments, the email dataset(s) may include network information associated with a client with which the user opened or read the email, as described above. In some embodiments, the email dataset(s) may include a user identifier including a user email address and/or web account information, as discussed above. 
     In step  404 , IP address(es) can be obtained for the entity, as described in further detail below heading “IP Addresses and Associated Security Characteristics.” 
     In step  406 , the system can determine whether the computer network(s) include a public network or a private network based on the email dataset(s). For example, as described above, the information related to the entity&#39;s network included in the email dataset can be used. 
     In some embodiments, once the public and/or private networks are identified, certain security characteristics of each private network&#39;s IP address are determined. In some embodiments, the security characteristics of the IP address of each identified network (e.g., public and/or private) are determined. Examples of security characteristics of computer network and associated IP address(es) are described further below. In some embodiments, once the public and/or private networks are identified, an IP address is attributed to the identified network. For example, once the device dataset(s) reveal that the network is a public network, the system can determine which IP address should be attributed to the network based on the obtained data. 
     In step  408 , the cybersecurity state (e.g., security rating, level of security) of the entity can be assessed based on an evaluation of security characteristics of the IP address(es) attributed to the private network(s). The evaluation can exclude characteristics of the IP address(es) attributed to the public network(s). Examples of determining the security ratings of entities are described further below under heading “Security Ratings of Entities.” 
     IP Addresses and Associated Characteristics 
     In some embodiments, having identified whether an entity&#39;s network is public or private, the system can determine the security characteristics associated with that network. For example, the security characteristics associated with the network can be gleaned from the Internet Protocol (IP) address(es) attributed to that network. Examples of determining and/or evaluating the security characteristics of entities and associated IP addresses can be found in at least U.S. Publication No. 2016/0205126 published on Jul. 14, 2016 and titled “Information Technology Security Assessment System,” U.S. Pat. No. 9,973,524 issued on May 15, 2018 and titled “Information Technology Security Assessment System,” and U.S. Pat. No. 9,830,569 issued on Nov. 28, 2017 and titled “Security Assessment Using Service Provider Digital Asset Information,” all of which are incorporated herein by reference in their entireties. Examples of mapping IP addresses to entities can be found in U.S. Publication No. 2018/0375822 published on Dec. 27, 2018 and titled “Methods for Mapping IP Addresses and Domains to Organizations Using User Activity Data,” which is incorporated herein by reference in its entirety. 
     In general, Regional Internet Registries (RIRs) manage the allocation and registration of Internet number resources (IP Addresses, Autonomous System Numbers, etc.) within a particular region of the world. There are five RIRs—ARIN for North America, AfriNIC for Africa, APNIC for Asia Pacific, RIPE for Europe, Middle East, Central Asia, and LACNIC for Latin America. 
     The RIRs allocate the address space to service providers, corporations, universities, etc. The RIRs provide various interfaces that enable queries of the MR to determine who owns a given IP address. It is also possible to query the database by an entity name and get a list of IP addresses allocated to that entity. Despite lack of standardization of entity names in the MR databases, well-chosen queries can result in a very high coverage of addresses owned by an entity. 
     Another problem is that RIRs often allocate large chunks of addresses to Internet Service Providers (ISPs) who go on to allocate smaller address spaces to their customers. ISPs are under no obligation to report this data back to anyone. Most small companies contract with their local ISP for Internet access and don&#39;t obtain addresses from RIRs. 
     These problems are addressed by the entity ownership collection system (described below) being configured to execute various heuristic processes including the following non-limiting list of examples: 
     1. Using the ‘dig’ (http://linux.die.net/man/l/dig) tool to determine any IP information published by an entity. The dig tool takes the domain name of the entity as an argument. For example, execution of ‘dig a.com ANY’ returns all IP information published by the entity a.com. 
     2. Use the IP addresses and domain names published to find ranges of IP addresses actually used. ISPs almost always allocate addresses in size of powers of 2 (2, 4, 8 etc.). Knowing one IP address allows probing around that space. The ‘whois’ (http://linux.die.net/man/l/whois) tool can be used to determine ownership of neighborhood addresses. 
     3. Even if the entity does not publish any IP information that can be retrieved through dig, most entities have servers whose names may be guessed. Mail servers for the domain a.com often have the name mail.a.com, SMTP servers tend to be smtp.a.com, FTP servers tend to be ftp.a.com etc. Using a tool like nslookup, the entity ownership collection system can verify if any of these common names are in use by the entity. 
     4. If an IP address is found, the system is configured to probe around the address (such as in step 2) to determine any addresses in the neighborhood owned by that entity. 
     5. Searching around the website of the company often gives a hint of other servers hosted by the company (ex: reports.a.com) which can be used as a starting point for search. 
     The entity ownership collection system gathers information about an entity. This includes information about which IT assets an entity owns, controls, uses, or is affiliated with. Examples of asset ownership include control and operation of an Internet Protocol (IP) network address range or computer services such as web servers residing within that address block. Information about entities also includes relationships such as subsidiaries, affiliates, etc., that describe entity association. 
     Security Ratings of Entities 
     In some embodiments, the security characteristics of an entity&#39;s network(s) can be evaluated to assess the entity&#39;s cybersecurity states. Specifically, the security characteristics can be evaluated to determine the entity&#39;s security rating. The entity&#39;s security rating can be provided to the entity as a measure of that entity&#39;s risk of security breaches and/or past security record. 
     In various embodiments, networks can be characterized for each individual entity. In some embodiments, in parent-child entity relationships (e.g., parent company and subsidiary company), an IP address is attributed to a parent entity&#39;s subsidiary and the parent entity. For security ratings purposes, an IP address and/or computer network would be associated with both the entity and any other entities that are parents of that entity. 
     Examples of determining and/or evaluating the security characteristics of entities and associated IP addresses, and determining security ratings of entities based on the security characteristics can be found in at least U.S. Publication No. 2016/0205126 published on Jul. 14, 2016 and titled “Information Technology Security Assessment System,” U.S. Pat. No. 9,973,524 issued on May 15, 2018 and titled “Information Technology Security Assessment System,” U.S. Pat. No. 9,830,569 issued on Nov. 28, 2017 and titled “Security Assessment Using Service Provider Digital Asset Information,” and U.S. patent application Ser. No. 16/514,771 filed on Jul. 17, 2019 and titled “Systems and methods for generating security improvement plans for entities”, all of which are incorporated herein by reference in their entireties. 
     In some embodiments, determining security risk of entities uses externally observable information as proxies for (i) the effectiveness of the overall security performance of the policies and controls that entity implements and exercises and/or (ii) the vulnerability of the entity to security risk. This externally observable information can be categorized into observable subject areas, or “vectors”, which can each be independently determined and/or characterized. For example, one possible proxy for entity vulnerability is the number of entity-owned IP addresses which are reported by third parties to be malicious. The greater the number of reports, the more likely the particular entity was vulnerable and had been compromised. Examples of subject areas (“vectors”) may include:
         an amount of capital investment in the security of the entity;   a measure of employee training in the security of the entity;   a measure of organization of entity personnel dedicated to information security;   an amount of the entity&#39;s budget dedicated to information security;   a number and/or severity of botnet infection instances of a computer system associated with the entity;   a number of spam propagation instances originating from a computer network associated with the entity;   a number of malware servers associated with the entity;   a number of potentially exploited devices associated with the entity;   a number of hosts authorized to send emails on behalf of each domain associated with the entity;   a determination of whether a DomainKeys Identified Mail (DKIM) record exists for each domain associated with the entity and/or a key length of a public key associated with a Domain Name System (DNS) record of each domain associated with the entity;   an evaluation of a Secure Sockets Layer (SSL) certificate and/or a Transport Layer Security (TLS) certificate associated with a computer system of the entity;   a number and/or type of service of open ports of a computer network associated with the entity;   an evaluation of security-related fields of an header section of HTTP response messages of hosts associated with the entity;   a rate at which vulnerabilities are patched in a computer network associated with the entity;   an evaluation of file sharing traffic originating from a computer network associated with the entity; and/or   a number of lost records and/or sensitivity of information in the lost records in a data breach of a computer system associated with the entity.       

     In some embodiments, received data for an entity can include two or more subject areas (e.g., of those listed above). In some cases, determining the security rating for an entity can include determining the relationship between the first subject area and the second subject area. This relationship can be stored in a database and accessed for use. For example, the number of botnet infections of an entity may be correlated with the number of potentially exploited devices associated with the entity. This correlation can be stored and referenced in the future. In some embodiments, the security characteristic of an entity is associated with, related to, or equal to the security rating of that entity (e.g., on a scale from 300 to 900, as provided by BitSight Technologies, Inc., Boston, Mass.). 
     In some embodiments, to compute the security ratings for an entity, obtained data pertaining to the IT assets owned by that entity may be aggregated. For example, IT assets can include the IP addresses controlled by the entity and obtained data can include the activity associated with those IP addresses. To determine externally observable information about IP address-based assets, one or more IP addresses can be associated with an entity. The data may be processed to determine additional information. For example, processing may yield a list of IP addresses for an entity that has demonstrated suspicious or malicious behavior or fails to follow best security practices for the given reference data point. Similar methods can be used for other types of assets, e.g., domain-based assets, or other information for which an asset can be determined to be associated to an organization. Using these techniques, information about that asset can be associated with the entity. 
     The exemplary security ratings systems and methods may be configured to account for differences in data sources and types. Given each data source&#39;s potentially unique insight of an entity, there can be two or more techniques used to take advantage of the respective data. Data source-specific modeling techniques may be applied to some or all of the data sources to demonstrate feasibility and validate the approach for each data source and modeling technique. 
     In some embodiments, the combination of two or more vectors may produce a security rating that reflects the effectiveness of an entity&#39;s security efforts. The determination of individual vectors and the overall security rating can be influenced by security best-practices as promoted by standardized and accepted cybersecurity frameworks. In some embodiments, evidence of security compromise can be used to understand the specific impact the individual vectors have on the security rating of the entity. For instance, correlation between sources of externally observed information can be used to determine the impact of vectors. For example, the vectors representing evidence of compromised workstations (owned or controlled by an entity) may represent a significant portion of the entity&#39;s ability to implement security controls correctly, and thus may influence the entity&#39;s security rating more than other types of information. 
     Computer-Based Implementations 
     In some examples, some or all of the processing described above can be carried out on a personal computing device, on one or more centralized computing devices, or via cloud-based processing by one or more servers. In some examples, some types of processing occur on one device and other types of processing occur on another device. In some examples, some or all of the data described above can be stored on a personal computing device, in data storage hosted on one or more centralized computing devices, or via cloud-based storage. In some examples, some data are stored in one location and other data are stored in another location. In some examples, quantum computing can be used. In some examples, functional programming languages can be used. In some examples, electrical memory, such as flash-based memory, can be used. 
       FIG. 5  is a block diagram of an example computer system  500  that may be used in implementing the technology described in this document. General-purpose computers, network appliances, mobile devices, or other electronic systems may also include at least portions of the system  500 . The system  500  includes a processor  510 , a memory  520 , a storage device  530 , and an input/output device  540 . Each of the components  510 ,  520 ,  530 , and  540  may be interconnected, for example, using a system bus  550 . The processor  510  is capable of processing instructions for execution within the system  500 . In some implementations, the processor  510  is a single-threaded processor. In some implementations, the processor  510  is a multi-threaded processor. The processor  510  is capable of processing instructions stored in the memory  520  or on the storage device  530 . 
     The memory  520  stores information within the system  500 . In some implementations, the memory  520  is a non-transitory computer-readable medium. In some implementations, the memory  520  is a volatile memory unit. In some implementations, the memory  520  is a nonvolatile memory unit. 
     The storage device  530  is capable of providing mass storage for the system  500 . In some implementations, the storage device  530  is a non-transitory computer-readable medium. In various different implementations, the storage device  530  may include, for example, a hard disk device, an optical disk device, a solid-date drive, a flash drive, or some other large capacity storage device. For example, the storage device may store long-term data (e.g., database data, file system data, etc.). The input/output device  540  provides input/output operations for the system  500 . In some implementations, the input/output device  540  may include one or more of a network interface devices, e.g., an Ethernet card, a serial communication device, e.g., an RS-232 port, and/or a wireless interface device, e.g., an 802.11 card, a 3G wireless modem, or a 4G wireless modem. In some implementations, the input/output device may include driver devices configured to receive input data and send output data to other input/output devices, e.g., keyboard, printer and display devices  560 . In some examples, mobile computing devices, mobile communication devices, and other devices may be used. 
     In some implementations, at least a portion of the approaches described above may be realized by instructions that upon execution cause one or more processing devices to carry out the processes and functions described above. Such instructions may include, for example, interpreted instructions such as script instructions, or executable code, or other instructions stored in a non-transitory computer readable medium. The storage device  530  may be implemented in a distributed way over a network, such as a server farm or a set of widely distributed servers, or may be implemented in a single computing device. 
     Although an example processing system has been described in  FIG. 5 , embodiments of the subject matter, functional operations and processes described in this specification can be implemented in other types of digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible nonvolatile program carrier for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them. 
     The term “system” may encompass all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. A processing system may include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). A processing system may include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. 
     A computer program (which may also be referred to or described as a program, software, a software application, a module, a software module, a script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network. 
     The processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). 
     Computers suitable for the execution of a computer program can include, by way of example, general or special purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read-only memory or a random access memory or both. A computer generally includes a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. 
     Computer readable media suitable for storing computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry. 
     To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user&#39;s user device in response to requests received from the web browser. 
     Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet. 
     The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. 
     While this specification contains many specific implementation details, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination. 
     Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products. 
     Particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous. Other steps or stages may be provided, or steps or stages may be eliminated, from the described processes. Accordingly, other implementations are within the scope of the following claims. 
     Terminology 
     The phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. 
     The term “approximately”, the phrase “approximately equal to”, and other similar phrases, as used in the specification and the claims (e.g., “X has a value of approximately Y” or “X is approximately equal to Y”), should be understood to mean that one value (X) is within a predetermined range of another value (Y). The predetermined range may be plus or minus 20%, 10%, 5%, 3%, 1%, 0.1%, or less than 0.1%, unless otherwise indicated. 
     The indefinite articles “a” and “an,” as used in the specification and in the claims, unless clearly indicated to the contrary, should be understood to mean “at least one.” The phrase “and/or,” as used in the specification and in the claims, should be understood to mean “either or both” of the elements so conjoined, i.e., elements that are conjunctively present in some cases and disjunctively present in other cases. Multiple elements listed with “and/or” should be construed in the same fashion, i.e., “one or more” of the elements so conjoined. Other elements may optionally be present other than the elements specifically identified by the “and/or” clause, whether related or unrelated to those elements specifically identified. Thus, as a non-limiting example, a reference to “A and/or B”, when used in conjunction with open-ended language such as “comprising” can refer, in one embodiment, to A only (optionally including elements other than B); in another embodiment, to B only (optionally including elements other than A); in yet another embodiment, to both A and B (optionally including other elements); etc. 
     As used in the specification and in the claims, “or” should be understood to have the same meaning as “and/or” as defined above. For example, when separating items in a list, “or” or “and/or” shall be interpreted as being inclusive, i.e., the inclusion of at least one, but also including more than one, of a number or list of elements, and, optionally, additional unlisted items. Only terms clearly indicated to the contrary, such as “only one of or “exactly one of,” or, when used in the claims, “consisting of,” will refer to the inclusion of exactly one element of a number or list of elements. In general, the term “or” as used shall only be interpreted as indicating exclusive alternatives (i.e. “one or the other but not both”) when preceded by terms of exclusivity, such as “either,” “one of” “only one of” or “exactly one of.” “Consisting essentially of,” when used in the claims, shall have its ordinary meaning as used in the field of patent law. 
     As used in the specification and in the claims, the phrase “at least one,” in reference to a list of one or more elements, should be understood to mean at least one element selected from any one or more of the elements in the list of elements, but not necessarily including at least one of each and every element specifically listed within the list of elements and not excluding any combinations of elements in the list of elements. This definition also allows that elements may optionally be present other than the elements specifically identified within the list of elements to which the phrase “at least one” refers, whether related or unrelated to those elements specifically identified. Thus, as a non-limiting example, “at least one of A and B” (or, equivalently, “at least one of A or B,” or, equivalently “at least one of A and/or B”) can refer, in one embodiment, to at least one, optionally including more than one, A, with no B present (and optionally including elements other than B); in another embodiment, to at least one, optionally including more than one, B, with no A present (and optionally including elements other than A); in yet another embodiment, to at least one, optionally including more than one, A, and at least one, optionally including more than one, B (and optionally including other elements); etc. 
     The use of “including,” “comprising,” “having,” “containing,” “involving,” and variations thereof, is meant to encompass the items listed thereafter and additional items. 
     Use of ordinal terms such as “first,” “second,” “third,” etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed. Ordinal terms are used merely as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term), to distinguish the claim elements.