Modern computing networks utilize public key certificates to establish trust and to secure communications between parties. Generally, a public key certificate binds a public key to a named entity, where the named entity is assumed to possess a private key corresponding to the public key. A signature or assertion which is generated using the private key can therefore be expected to have been generated by the named entity.
Certificate-based communication (e.g., via the Transport Layer Security (TLS) protocol) relies on certificates issued by trusted certificate authorities. The certificates conform to X.509 standards, which specify fields and extensions intended to control certificate usage and provide security to communications based thereon. An organization may receive certificates from external or internal certificate authorities, may store received certificates, and may deploy stored certificates to service nodes. The service nodes use the deployed certificates to establish communication with other services and end-users. End users and other services that establish communication with a service node can, with high probability, prove that the service node is the entity named in the public key certificate and therefore in possession of the corresponding private key as a means of establishing trust.
Management of an organization's certificate pipeline is challenging, especially in a distributed architecture and at scale. A certificate pipeline presents several entry points for inadvertent errors, corruption and attack, each of which should be monitored and configured to implement remedial processes. Pipeline management should also address evolving threats and standards, which may require regular re-evaluation of monitoring processes and of previously-stored certificates.
Efficient, effective and verifiable systems to manage public key certificates are desired.
The following description is provided to enable any person in the art to make and use the described embodiments. Various modifications, however, will remain readily apparent to those in the art.
Generally, some embodiments provide management of public key certificates throughout a certificate pipeline, including during issuance, storage and deployment. Embodiments may also detect indicators of system compromise during runtime based on the state of deployed public key certificates.
Some embodiments address a class of technical problems in secure communication channels, such as TLS, and mitigate cyberattacks. A technical solution to the technical problem, according to some embodiments, includes an evaluation engine and efficiently-configurable policies implemented at multiple points of an organization's public key certificate pipeline.
Generally, certificates 115 are issued by certificate authority 110 and ingested by secret store 120. Secret store 120 may also receive certificates 125 from other sources. Monitoring service 130 may evaluate certificates 135 stored within secret store 120. Certificates 145 of secret store may be deployed to service node 140, which uses the certificates to support electronic communication (e.g., using the TLS protocol). Some embodiments operate to ensure that certificates located within system 100 are uncorrupted, meet organizational specifications and conform to current industry and organizational security standards.
Certificate authority 110 may be operated by a trusted third party, such as a Certificate Authority internal to or operated by the organization. Certificate authority 110 confirms the identity of a certificate requestor (e.g., a user or computer), and issues a certificate to the requestor. The certificate binds the identity of the requestor user or domain to a public key, and indicates certain expected usages of the public key. The requestor may provide the certificate to a remote server or client in order to establish communication with the remote computer. The remote computer attempts to locate certificate authority 110 within a locally-stored list of trusted certificate authorities. If certificate authority 110 is located in the list, the remote computer will verify that the certificate is authentic and whether the remote compute can prove through agreed-upon algorithms that it is in possession of the corresponding private key.
Certificate authority 110 includes certificate issuing logic 112 to verify a requested user or domain's identity and to issue a certificate as described above. Certificate issuing logic 112 is executed to issue certificates which conform to the applicable standard (e.g., X.509). The certificates typically present a hierarchical structure with well-known “root” certificate authorities at the top, lesser- known intermediary certificate authorities in the middle, and leaf certificates identifying an actual service or user. Logic 112, and other elements of system 100 to which functions are attributed to herein, may be implemented by executable program code and/or any suitable hardware.
Certificate analyzer logic 114 operates in conjunction with certificate issuing logic 112 to ensure that issued certificates conform to policies 116. Certificate issuing logic 114 may evaluate a certificate issued by certificate issuing logic 114, and/or may execute during the issuance process to ensure that all issued certificates conform to the policies of issuing logic 112 and policies 116. Certificate 115 is issued via execution of logic 112 and logic 114, and will therefore be referred to herein as a managed certificate.
According to some embodiments, policies 116 specify requirements for issued certificates which differ from the requirements enforced by certificate issuing logic 112. Policies 116 may be modified independent of analyzer logic 114, which allows for efficient modification of the requirements under which certificate authority 110 issues certificates. As will be described in detail below, policies 116 may be stricter than the X.509 standard enforced by certificate issuing logic 112, may assist in reinforcing the standard, may be partially or fully duplicative of the standard (e.g., to audit the performance of certificate issuing logic 112), and may assist in reducing attacks based on the current or future threat landscape. Policies 116 may be conditional based on the authority type of certificate authority 110, the location of certificate authority 110, the type of certificate requestor, and/or on any other attribute.
Secret store 120 may be used by an organization to maintain public key certificates, passwords, private keys, etc. Secret store 120 may receive managed certificate 115 and store managed certificate 115 in storage 128. Organizations and features in services may also enable customers to supply their own certificates or certificates that have already been issued by another certificate authority. Secret store 120 may therefore support ingestion and storage of Bring Your Own Certificates (BYOC) certificates received from customers. BYOC certificate 125 will be referred to as an unmanaged certificate, as it is not known whether certificate 125 was issued by a certificate authority using the above-described framework of certificate authority 110. Accordingly, the standards under which certificate 125 was issued and its resulting strength are unknown.
Secret store 120 is managed by secret store manager 122 as is known in the art. The functions of secret store manager 122 are supplemented by certificate analyzer logic 124. Certificate analyzer logic 124 may be provided as a package implementing an Application Programming Interface (API) usable by secret store manager 122 to evaluate a certificate with respect to policies 126 during BYOC ingestion. A BYOC certificate may be stored in storage 128 if it is determined that the BYOC certificate conforms to policies 126, and rejected (i.e., not stored in storage 128) if not. Policies 126 may be identical to or different from policies 116 of certificate authority 110.
Storage 128 may therefore store managed certificates issued by certificate authority 110 and unmanaged BYOC certificates which conform to policies 126. Since cryptography and security standards evolve over time, monitoring service 130 is provided to execute certificate analyzer logic 132 to fetch certificates from a data store (e.g., storage 128 of secret store 120) and evaluate the certificates based on policies 134. According to some embodiments, certificate analyzer logic 132 uses policies 134 to identify certificates which may have conformed to policies 116 or 126 when issued or received by secret store 120, but which are weak or vulnerable by current standards reflected in policies 134. This evaluation would also identify certificates which have been corrupted since their storage in storage 128, even if policies 134 were identical to policies 116 or 126.
Service node 140 provides any number or type of node services 142 to consumers as is known in the art. Service node 140 may use certificates stored in local certificate store 144 in order to provide such services. For example, during an initial TLS handshake with a communicating party, service node 140 retrieves its public key certificate and presents it to the communicating party as a verifiable token of identity. The TLS handshake proceeds to establish a communication link between service node 140 and the communicating party. Service node 140 thereafter provides services to the communicating party via the established communication link.
Service node 140 may receive deployed certificate 145 from secret store 120 and store certificate 145 in certificate store 144. In some embodiments, a deployment manager (not shown) manages deployment of certificates from one or more secret stores to one or more service nodes.
Service node 140 includes compromise analysis logic 146 and policies 148 according to some embodiments. Compromise analysis logic 146 may operate as described above with respect to certificate analyzer logic 114, 124 and 132 to evaluate certificates of certificate store 144 based on policies 148. Policies 148 may differ in whole or in part from policies 116, 126 and 134. Compromise analysis logic 146 may also operate to detect indicators of compromise (IOCs) in the service node 140. The detection of IOCs may also be based on policies 148, examples of which will be described below.
Service node 140 may transmit report 155 including any detected IOCs or weak certificates to monitoring service 130, or to the alerting or reporting pipeline of the organization. If a compromise is detected, the corresponding communication link and processes may be terminated.
Process 200 and all other processes mentioned herein may be embodied in computer-executable program code read from one or more of non-transitory computer-readable media, such as a floppy disk, a CD-ROM, a DVD-ROM, a Flash drive, and a magnetic tape, and then stored in a compressed, uncompiled and/or encrypted format. In some embodiments, hard-wired circuitry may be used in place of, or in combination with, program code for implementation of processes according to some embodiments. Embodiments are therefore not limited to any specific combination of hardware and software.
A public key certificate is initially acquired at S210. The public key certificate may be acquired from local storage but embodiments are not limited thereto. The acquired public key certificate is a leaf certificate, in that it is the last certificate in a chain of higher-level certificates. The acquired public key certificate refers to one or more certificates in the chain, as does each certificate in the chain until a root certificate is reached. The root certificate may be bound to a certificate authority. The chain is determined at S220 by reading each reference back to the root certificate of the chain.
Certificate analyzer policies are determined at S230. The policies may be specific to the point of the certificate pipeline in which they are deployed. As will be described below, the policies may be configurable and deployed in stages across the certificate pipeline. For purposes of the present description of process 200, it will be assumed that the policies are determined at S230 based on stored policy information and that compliance with the policies is determined at S240.
The individual policies may be related to the public key leaf certificate or to the chain of public key certificates. Accordingly, violations of the policies may be associated with the public key leaf certificate or to the chain of public key certificates. Results of the compliance determination are output at S250. For example, each certificate's metadata may be associated with its determined violations and output as a serialized object, as a stored table or as a .csv file.
Certificate fetcher 312 operates to ingest public key certificates from a given configurable source. Examples of ingestion sources include node certificate store 144, secret store manager 122 (via REST calls), and local or remote certificate directories (e.g., a network file share). According to some embodiments, certificate fetcher is configured and deployed based on the relevant use case (i.e., its location in the certificate pipeline). For example, if certificate analyzer logic 132 of monitoring service 130 is implemented by architecture 310, certificate fetcher 312 is configured to fetch certificates from secret store 120. Certificate fetcher 312 may be implemented as an extensible platform which may be efficiently extended to support new ingestion sources.
Policy engine 314 may determine certificate analyzer policies as described above with respect to S230. According to architecture 300, the certificate analyzer policies are determined at runtime based on a policy definition specified in policy configuration file 322 and corresponding cryptographic standards specified in global configuration file 324. A policy definition may directly or indirectly relate to a specific vulnerability or weakness in a certificate, thereby compromising any authentication based thereon. Analyzer engine 316 applies the policies determined by policy engine 314 to the certificates fetched by certificate fetcher 312 at S240.
In one example, a policy definition of policy configuration file 322 may define a policy to enforce a standard for a key size being used for RSA encryption in a public key certificate and to assign a severity of violation if the key size is smaller than a certain standard. A sample eXtended Markup Language (xml) construct for the policy definition in policy configuration file 322 may be as follows:
As described above, the value for the key size standard is decoupled from the policy definition and comes from global configuration file 324. For example, the key size may be defined in global configuration file 324 as follows:
Policies may be added and deleted efficiently by virtue of the architecture of configuration files 320. Decoupling policy definitions from their cryptographic standards provides flexibility in changing the cryptographic standards without knowledge of how policies may be structured around these standards.
According to some embodiments, policies are associated with a “crypto” panel, an IOC panel, and a baseline panel. The crypto panel encapsulates policies for identifying certificates which are weak due to sub-standard certificate generation or obsolete cryptographic standards. The IOC panel includes policies to detect suspicious deltas in public key infrastructure due to an ongoing attack. The baseline panel includes other policies which may relate to the strength of a certificate. Meta-configuration file 326 may be modified by a user to enable or disable policy panels, and to specify a source from which certificate fetcher 312 is to acquire certificates. Accordingly, meta-configuration file allows a same set of engines 310, policy configuration file 322 and global configuration file 324 to be used at multiple deployment points of the certificate pipeline.
Specifically, certificate issuance files 400 may include engines and configuration files described with respect to
Wrapper 510 vets BYOC unmanaged certificates received from external Certificate Authorities. Wrapper 510 may be implemented as a nuget package which can be used by secret store manager 122.
Monitoring service wrapper 610 may provide an organization with a holistic view of the state of certificates being used in its various services. This view may be useful to remove existing non-compliant certificates and also may facilitate detection of future non-compliance, due to dynamic crypto standards. Monitoring service wrapper 610 may be implemented as a web service which consumes certificates from all the secret stores of the organization.
Node scanner wrapper 710 may detect certificate having policy issues in operational time. Wrapper 710 also catch certificates which were for some reason never stored in organization's secret store. Wrapper 710 may be implemented as a nuget package.
Wrappers according to some embodiments may be implemented in hardware such as a Trusted Platform Module or Field-Programmable Gate Array, smartcards, or a self-encrypting disk. Embodiments may also be implemented into a network monitoring tool, or a host-based or network-based intrusion detection system, or large-scale analysis system which examines the data from a network of systems in parallel. Different wrappers could be implemented for organizational-level, service-by-service, 3rd-party or end-user policies.
As described above, each policy configuration file of
In one example according to some embodiments, an organization may change, or plan to change, a key size from 1024 bits to 2048 bits within a global configuration file of monitoring service files 600, in order to identify the certificates of a secret store which do not meet this new standard and thereby determine the organizational impact of requiring the larger key size. In another example, the key size may be changed from 1024 to 2048 within only the global configuration file of certificate issuance files 400, to ensure that newly-issued certificates meet this standard and that certificates located elsewhere in the pipeline will not be identified as weak if they do not meet this standard. New policies and cryptography values may therefore by deployed in a staged and iterative manner as well as applied for auditing or enforcement.
System 800 illustrates an arrangement including more than one service node. Embodiments may include any number of service nodes. In some embodiments, the policies of service node 840 differ in whole or in part from the policies of service node 845. For example, service node 840 may require stronger security than service node 845 and may therefore implement corresponding policies.
System 900 of
A discussion of policies which may be implemented by some embodiments now follows. Embodiments are not limited to the following policies.
Crypto Panel policies
1. Weak Endpoint Key
Determines whether the key size of the X.509 certificate is smaller than required by Certificate Authority/Browser requirements with respect to current security standards.
2. Weak Endpoint RSA Exponent
The public key in the RSA system is a tuple of integers (N, e), where N is the product of two primes p and q, and e is the public exponent. The secret key is given by an integer d satisfying ed=1 mod(p-1)(q-1). This policy determines whether the value of exponent e is even or small, which may enable certain attacks on X.509 certificates.
3. Compromised Endpoint Key
Determines whether the certificate's private key has either been compromised or is weaker than required by current security standards. Compromised keys will be checked against a constantly updated database of compromised certificates.
4. Weak Intermediate Key
Determines whether the key size for intermediate certificates is smaller than required by Certificate Authority/Browser requirements with respect to current security standards.
5. Weak Intermediate RSA Exponent
Determines whether the value of exponent e is even or small for intermediate certificates, which may enable certain attacks on X.509 certificates.
6. Compromised Intermediate Key
Determines whether the intermediate certificate's private key has either been compromised or is weaker than required by current security standards. Compromised keys will be checked against a constantly updated database of compromised certificates.
7. Weak Root Key
Determines whether the key size for the root certificate is smaller than required by Certificate Authority/Browser requirements with respect to current security standards.
8. Weak Root RSA Exponent
Determines whether the value of exponent e is even or small for the root certificate, which may enable certain attacks on X.509 certificates.
9. Compromised Root Key
Determines whether the root certificate's private key has either been compromised or is weaker than required by current security standards. Compromised keys will be checked against a constantly updated database of compromised certificates.
10. Missing DSA Parameters
Determines whether the DSA key in the chain is missing required key parameters or the export of the key parameters for cryptographic operation throws an exception. The latter might be due to a key parameter being malformed and thus insecure for cryptographic operations.
11. Non-Recommended Endpoint Curve
Determines whether endpoint ECC curves being used comply with a whitelist of ECC curves.
12. Non-Recommended Intermediate Curve
Determines whether intermediate ECC curves being used comply with a whitelist of ECC curves.
13. Non-Recommended Root Curve
Determines whether root ECC curves being used comply with a whitelist of ECC curves.
14. Weak Endpoint Hash Algorithm
Determines whether the hash algorithm being used in the endpoint certificate is considered cryptographically weak in view of the current security standards.
15. Weak Intermediate Hash Algorithm
Determines whether the hash algorithm being used in an intermediate certificate is considered cryptographically weak in view of the current security standards.
16. Weak Root Hash Algorithm
Determines whether the hash algorithm being used in the root certificate is considered cryptographically weak in view of the current security standards.
17. Unsupported Key Type
Determines whether the certificate contains a key which is not in the approved whitelist of the key type/exchange algorithms such as RSA, DSA and EC public keys.
18. Unsupported Signature Algorithm
Determines whether the certificate contains a signature algorithm which is not in a approved whitelist of signature algorithms.
Baseline Panel Policies
19. Invalid Endpoint Validity
Determines whether a certificate has exceeded a recommended certificate lifetime.
20. Expired Endpoint
Determines whether the endpoint certificate is past its date of expiry and should not be trusted. The certificate should be removed and a new certificate should be generated with proper validity.
21. Expired Intermediate
Determines whether the intermediate certificate is past its date of expiry and should not be trusted as part of the chain. The certificate should be removed and a new certificate should be generated with proper validity.
22. Expired Root
Determines whether the root certificate is past its date of expiry and should not be trusted anymore. The certificate should be removed and a new certificate should be generated with proper validity.
23. Missing Endpoint Online Certificate Status Protocol (OCSP) Server
Determines whether the endpoint certificate contains the URL for an OCSP server to check the certificate revocation using OCSP calls.
24. Missing Intermediate OCSP Server
Determines whether the intermediate certificate contain the URL for an OCSP server to check the certificate revocation using OCSP calls.
25. Missing Intermediate Authority Certificate
Determines whether the intermediate certificate contains the URL for its issuer's certificate in the AIA extension of x.509.
26. Missing Endpoint AuthorityCertificate
Determines whether the endpoint certificate contains the URL for its issuer's certificate in the AIA extension of x.509.
27. Invalid Intermediate Basic Constraints
Basic constraint is a field on X.509 used to indicate whether the certificate being used is a Certificate Authority or not. Determines whether this field is marked as critical for an intermediate certificate which will be a Certificate Authority.
28. Invalid Root Basic Constraints
Determines whether the basic constraint field is marked as critical for a root certificate issued by a root Certificate Authority.
29. Outdated X509 Root
Determines whether the root certificate is using an outdated version of X509 certificates.
30. Outdated X509 Intermediate
Determines whether the intermediate certificate is using an outdated version of X509 certificates.
31. Outdated X509 endpoint
Determines whether the endpoint certificate is using an outdated version of X509 certificates.
32. CA Constraint Extension in Endpoint
Determines whether an extension meant for Certificate Authority certificates is being used in an endpoint certificate.
33. Non-Standard Endpoint Subject Key Identifier
Determines whether the subject key identifier matches the recommended RFC 5820 methods for x.509. For end entity certificates, the subject key identifier extension provides a means for identifying certificates containing the particular public key used in an application. Where an end entity has obtained multiple certificates, especially from multiple Certificate Authorities, the subject key identifier allows quick identification of the set of certificates containing a particular public key. To assist applications in identifying the appropriate end entity certificate, this extension should be included in all end entity certificates. For end entity certificates, subject key identifiers should be derived from the public key.
34. Non-Standard Intermediate Subject Key Identifier
Determines whether the subject key identifier matches the recommended RFC 5820 methods for x.509. To facilitate certification path construction, this extension appears in all conforming Certificate Authority certificates, that is, all certificates including the basic constraints extension where the value of Certificate Authority is TRUE. The value of the subject key identifier should be the value placed in the key identifier field of the Authority Key Identifier extension of certificates issued by the subject of this certificate.
35. Invalid Endpoint Key Usage
Determines whether the endpoint contains Certificate/CRL signature key usage bits. If the keyUsage extension is present, then the subject public key must not be used to verify signatures on certificates or CRLs unless the corresponding keyCertSign or cRLSign bit is set.
36. Invalid Intermediate Key Usage
Determines whether the intermediate key usage extension is missing Certificate signature or is not critical, in which case it does not conform to RFC 5280 for x.509.
37. Invalid Root Key Usage
Determines whether the root key usage extension is missing Certificate signature or is not critical, in which case it does not conform to RFC 5280 for x.509.
38. Endpoint is a CA
Determines whether the Certificate Authority bit is set on an endpoint certificate.
39. Invalid Endpoint CRL
Determines whether the certificate is missing or presents an erroneous HTTP CRL endpoint.
40. Invalid Intermediate CRL
Determines whether the certificate presents an erroneous HTTP CRL endpoint.
41. Missing Endpoint Policy
Determines whether an endpoint certificate contains an issuance policy.
42. Missing Intermediate Policy
Determines whether an intermediate certificate contains an issuance policy.
43. Missing Endpoint Authority Information Access
Determines whether an endpoint certificate includes authority information access.
44. Missing Intermediate Authority Information Access
Determines whether an intermediate certificate includes authority information access.
45. Missing Endpoint Extended Key Usage
Determines whether an endpoint certificate includes the enhanced key usage extension. This extension indicates one or more purposes for which the certified public key may be used, in addition to or in place of the basic purposes indicated in the key usage extension. In general, this extension will appear only in end entity certificates. The following key usage purposes are defined:
46. Missing Endpoint Subject Alternative Name
Determines whether an endpoint certificate includes subject alternative names.
47. Missing Intermediate Key Usage
Determines whether an intermediate certificate contains a certificate signature key usage bit set using Key Usage extension.
48. Missing Root Key Usage
Determines whether a root certificate contains a certificate signature key usage bit set using Key Usage extension.
49. Missing Intermediate CRL Distribution
Determines whether an intermediate certificate is missing an HTTP CRL endpoint.
50. Path Length Constraint in Root
Determines whether ae maximum number of Certificate Authorities that can exist below the Certificate Authorities where the basic constraint is assigned has been exceeded.
51. Missing Root Basic Constraints
On a root certificate which issued by a root Certificate Authority, determine whether the extension indicating whether the certificate being used is a Certificate Authority or not is present and marked as critical.
IOC Panel Policies
52. Untrusted Roots on Node
Attackers may install illegitimate root or leaf certificates on service nodes. An illegitimate certificate could allow eavesdropping without triggering any warnings or could also allow attackers to stage a phishing campaign or to run malware code without raising any alarms. This indicator of compromise policy would determine whether each root certificate stored on a service node is found in an organization's trusted list of root certificates. Such a policy would enable early and reliable detection against nation state and other attackers installing illegitimate certificates on service nodes.
53. Known Compromised Certificates on Node
Determines whether any root certificates stored on a service node are found in a trusted list of bad certificates.
54. Anomaly in Key Usage and Extended Key Usage
In a regular PKI operation, a specific domain can be associated with a set of code-signing and authentication certificates which have a known rotation cycle. This policy determines any anomaly in Key Usage or Extended Key Usage for a domain.
55. Invalid/Missing Authority Key Identifier
This extension in leaf certificates enables the chain-building logic in the operating system to find the appropriate intermediate certificate when there are multiple intermediates. It further might help resolve the chain even when two certificates have the same key. The extension has two parameters: key id & serial number.
Other policies may include a policy that facilitates detection of problems in certificate chains other than the one that is selected by the operating system. Execition of such a policy may include construction of all potential certificate chains and providing an alert if any configuration issues are detected in any of the chains (e.g., expired intermediate certificate).
Some embodiments may support production and consumption of organization-specific and custom policies. Some organizations may overload existing certificate properties or create custom certificate extensions, therefore policies may be written to assess and enforce these properties and extensions even though they might not be industry-recognized.
Some embodiments provide for layered/nested policies. Such layering/nesting may require execution of a policy m=based on the results of execution of a first policy. For example, if a policy determines that the key size is <1024 bits, then a second policy may be evaluated to enforce a shorter certificate expiration time (e.g., 90 days) than would otherwise be enforced (e.g., 180 days). This arrangement may assist in phasing out certificates that fail to meet a newer and more stringent organizational standard.
System 1000 includes processing unit 1010 operatively coupled to communication device 1020, persistent data storage system 1030, one or more input devices 1040, one or more output devices 1050 and volatile memory 1060. Processing unit 1010 may comprise one or more processors, processing cores, etc. for executing program code. Communication device 1020 may facilitate communication with external devices, such as an external network in communication with the Web. Input device(s) 1040 may comprise, for example, a keyboard, a keypad, a mouse or other pointing device, a microphone, a touch screen, and/or an eye-tracking device. Output device(s) 1050 may comprise, for example, a display (e.g., a display screen), a speaker, and/or a printer.
Data storage system 1030 may comprise any number of appropriate persistent storage devices, including combinations of magnetic storage devices (e.g., magnetic tape, hard disk drives and flash memory), optical storage devices, Read Only Memory (ROM) devices, etc. Memory 1060 may comprise Random Access Memory (RAM), Storage Class Memory (SCM) or any other fast-access memory.
Certificate analyzer logic 1031 may comprise program code executed by processing unit 1010 to cause system 1000 to perform any one or more of the processes described herein. For example, execution of certificate analyzer logic 1031 may cause acquisition of public key certificates, determination of policies based on policies 1033, and evaluation or enforcement of the public key certificates with respect to the determined policies. Data storage device 1030 may also store data and other program code for providing additional functionality and/or which are necessary for operation of system 1000, such as device drivers, operating system files, etc.
The foregoing diagrams represent logical architectures for describing processes according to some embodiments, and actual implementations may include more or different components arranged in other manners. Other topologies may be used in conjunction with other embodiments. Moreover, each component or device described herein may be implemented by any number of devices in communication via any number of other public and/or private networks. Two or more of such computing devices may be located remote from one another and may communicate with one another via any known manner of network(s) and/or a dedicated connection. Each component or device may comprise any number of hardware and/or software elements suitable to provide the functions described herein as well as any other functions.
Embodiments described herein are solely for the purpose of illustration. Those in the art will recognize other embodiments may be practiced with modifications and alterations to that described above.