The subject technology relates generally to network communications including, for example, communications using the Transport Layer Security (TLS) protocols.
Transport layer security (TLS) connections are established using a ClientHello message from client device to a server during a TLS handshake. Encrypted ClientHello (ECH) is used to protect, via encryption, sensitive fields, such as a server name indication (SNI), in the transport layer security (TLS) handshake ClientHello message. Protecting the SNI field in this way is at odds with network security products that rely on access to the SNI for categorization and policy enforcement. When ECH is used, TLS proxies are no longer able to enforce selective intercept policies that are based on knowledge of the origin content server hostname.
Certain features of the subject technology are set forth in the appended claims. However, for purpose of explanation, several embodiments of the subject technology are set forth in the following figures.
The detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology can be practiced. The appended drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details for the purpose of providing a thorough understanding of the subject technology. However, the subject technology is not limited to the specific details set forth herein and can be practiced using one or more other implementations. In one or more implementations, structures and components are shown in block diagram form in order to avoid obscuring concepts of the subject technology.
A TLS proxy can be implemented at a server or another computing device. In one or more implementations, a TLS proxy may refer to a combination of transport (e.g., TCP/IP) connection intercept with TLS decrypt and TLS re-encrypt, and may also be referred to as TLS intercept. In one or more implementations, a secure web gateway (e.g., implemented at a server or another computing device) may combine TLS proxy functionality with application layer (L7) protocol inspection to enforce enterprise application layer security policies for an enterprise.
In one or more implementations, an enterprise may be an organization such as a business having a computing system that is managed by the organization and which can include telecommunications systems (e.g., large-scale network equipment, telephone systems, Session Initiation Protocol (SIP) devices), servers, server farms and/or other infrastructure for cloud computing, and/or client devices (e.g., workstations, desktop computers, laptop computers, mobile phones, and the like) designed and/or installed specifically for purposes of the enterprise. The equipment, servers, telephone systems, SIP devices, and/or client devices of an enterprise may have enterprise firmware and/or software installed thereon that can be accessed, updated, and/or otherwise managed by the enterprise (e.g., by an authorized administrator for the administration). In one or more implementations, the enterprise firmware and/or software may be arranged to perform one or more of the methods and/or operations described herein.
One approach to a TLS proxy combined with L7 protocol inspection is a (hypertext transfer protocol secure) HTTPS proxy, which can be implemented as a HTTP proxy that uses a TLS proxy, with the ability to enforce policy on both TLS and application levels. TLS proxies may have the ability to selectively intercept, avoiding any visibility into or modification of the original application protocol payload. However, such selective intercept relies on knowledge of the origin content server hostname, which can be extracted in plaintext from the TLS ClientHello SNI (server name) field. In a system in which ECH is used, the SNI is encrypted and can therefore be inaccessible by the TLS proxy.
Aspects of the subject technology facilitate selective intercept of TLS sessions that use ECH, while preserving the use of ECH in upstream TLS sessions (where “upstream” may refer to TLS sessions between the TLS proxy and TLS destination servers). For example, in one or more implementations described in further detail hereinafter, a domain name service (DNS) proxy operates in cooperation with a TLS proxy to allow a client device to encrypt a message (e.g., a handshake message such as a ClientHello) using a cryptographic key that is known to the TLS proxy, and to allow the TLS proxy to decrypt, inspect, and re-encrypt the ClientHello for upstream TLS communication. As defined in the TLS public standard ClientHello message includes a TLS version, indication(s) of one or more cipher suites, a string of random bytes (e.g., a client random), a server name indication, and/or other information.
In one or more implementations, a DNS Proxy may refer to a logical building block in a network security solution that can be deployed in the path between a DNS stub resolver (e.g., an operating system DNS resolver) and a DNS recursive resolver and/or DNS authoritative resolver and that is able to observe and modify DNS requests and DNS responses. A DNS proxy can be implemented at a server or another computing device. In various implementations, the DNS proxy can be deployed separately from the TLS proxy (e.g., for DNS over UDP or TCP (Do53) traffic), or can be integrated with a TLS Proxy (e.g., when intercepting DNS over HTTPS (DoH) traffic).
Preserving the use of ECH upstream may be technically advantageous for a number of reasons. For example, a destination server might not be available without ECH in some use cases. As another example, a destination server might behave differently if ECH is not used (e.g., which can be used by malicious sites, such as malware C2 servers, as a countermeasure). As another example, the security properties of downstream TLS sessions can be preserved by the subject technology when connecting upstream, which can protect sensitive information to preserve the privacy and security of client communications.
The TLS 1.3 specification [RFC8446] (available at https://datatracker.ietf.org/doc/html/rfc8446) and the TLS Encrypted Client Hello Specification (available at https://datatracker.ietforg/doc/html/draft-ietf-tls-esni) are each hereby incorporated herein by reference in their entireties.
In the example network architecture 100 of
For example, using ECH as illustrated in
As shown, the client device 102 may receive DNS responses (e.g., to DNS requests) from a DNS recursive resolver 112 (e.g., which may generate the DNS response using cached data at the DNS recursive resolver 112 and/or data obtained from a DNS authoritative resolver 110 and/or other DNS servers). A DNS request may refer to a request for an address (e.g., an internet-protocol (IP) address) corresponding to a name (e.g., a domain name) of a server or a device. The DNS request may also include a request for other information e.g., ECH configuration information) associated with the server corresponding to the name. A DNS response may refer to a response to a DNS request, the response including the address and/or other information included in the DNS request. In use cases in which ECH is used, the DNS response to a DNS request may also include an address of a client-facing server for the server corresponding to the name, and cryptographic and/or other ECH configuration information, as described in further detail hereinafter. As indicated in
In one or more implementations, devices and/or servers that are associated with an enterprise may include installed enterprise software and/or hardware that is accessible and/or controllable by the enterprise (e.g., by an authorized administrator of the enterprise). A client device (e.g., the client device 102) that is associated with an enterprise (e.g., the enterprise 103) may have one or more users that are authorized (by the enterprise) to run software and perform other tasks using the client device, and may have one or more administrators, different from the user, that are authorized (by the enterprise) to install, remove, update, and/or otherwise manage software (e.g., including enterprise software) on the client device. The one or more administrators and/or enterprise software or firmware on the client device (e.g., enterprise software configured to perform operations as described herein in connection with any or all of
As illustrated in
To generate the ECH, the client device 102 may obtain a ECHConfig for the origin content server 106, through a DNS request for the HTTPS Resource Records (HTTPS-RR) of the origin content server 106. For further privacy and security, the DNS request may be sent using DNS-over-HTTPS (DoH). The HTTPS-RR may include configuration parameters (ECHConfig) for the TLS connection, including a cryptographic key or information from which the cryptographic key can be derived. The client device 102 may encrypt the ClientHello using the cryptographic key received in or derived from information in the ECHConfig, and then encode this encrypted “inner” ClientHello (CHi) in an ECH extension of an “outer” ClientHello (CHo). The client device 102 may then connect and TLS handshake with the client-facing server 104, by sending ECH (e.g., the “outer” ClientHello with the CHi extension) to the client-facing server 104. A ServerHello response from the client-facing server 104 may indicate whether ECH was accepted by encoding a special value in the ServerHello random field. If ECH was accepted, then the client device 102 may continue the TLS handshake using the “inner” ClientHello, otherwise using the “outer” ClientHello.
In one or more implementations, if the client device 102 does not have a ECHConfig for the origin content server, the client device can send a “fake” ECH extension called a Generate Random Extensions and Sustain Extensibility (GREASE) ECH, which is indistinguishable from an actual ECH extension.
The ability to distinguish between GREASE ECH and actual ECH may be technically advantageous for ECH intercept (e.g., by giving interception proxy the ability to extract the actual destination from the “outer” ClientHello while ignoring the fake “inner” ClientHello). In one or more implementations of the subject technology, a device (e.g., a DNS proxy and/or TLS proxy) may store and/or track all TLS sessions to map ECHConfig values to a client-facing server. The GREASE ECH extensions are random, while actual ECHConfig values are static for periods of time (e.g., hours). One or more TLS proxy instances in a system may cooperate to decode ECHConfig from observed TLS sessions and build a distributed mapping of likely actual ECHConfig values based on the observation frequency. The mapping may reveal the actual origin content server, or may not but may help distinguish a GREASE ECH from actual ECH, in one or more implementations.
In the example network architecture 201 of
However, in the network architecture 201 of
In order to, for example, allow the server 200 to decrypt the ECH-internal from the client device 102, the client device 102 may encrypt the ECH using a cryptographic key that is known to (e.g., generated and/or stored by) the server 200 and/or for which a decryption key (e.g., a private key) is known to (e.g., generated and/or stored by) the server 200. For example, the client device 102 may encrypt a ClientHello using a cryptographic key that corresponds to a private cryptographic key that is stored at the server 200. As shown in
In one or more implementations, when the client device initiates a connection to a origin content server 106 having a name (e.g., a hostname), the client device may send a DNS request to the server 202. The server 202 may obtain an IP address (e.g., of the client-facing server 104) and a cryptographic key for the client-facing server 104 (e.g., a cryptographic key that was previously provided by the client-facing server 104 to the DNS authoritative resolver 110). For example, the cryptographic key obtained by the server 202 may be a public key corresponding to a private key stored at the client-facing server 104. The server 202 may obtain the IP address and the cryptographic key (or information from which the key can be derived) from a cache at the server 202 or by forwarding the DNS request to the DNS authoritative resolver 110.
The server 202 (e.g., the DNS proxy) may then replace the cryptographic key for the client-facing server 104 with the cryptographic key for the server 200 (e.g., the TLS proxy), and return the cryptographic key for the server 200 (e.g., and the IP address for the client-facing server 104) to the client device 102 in a DNS response. In this way, when the client device 102 encrypts the ClientHello using the cryptographic key received in the DNS response, the ECH-internal that is intercepted by the server 200 can be decrypted and inspected by the server 200.
As indicated in
In the example of
In the example of
For example,
In the examples of
In one or more implementations, the DNS proxy at server 200 of
In general, in the examples of
The DNS Proxy instances may optionally record all ECHConfig external values and distribute those values to all TLS Proxy instances. Recording ECHConfig external values may also include building a mapping from ECHConfig values to origin hostnames, which may be used to analyze ECH anonymity sets. In one or more implementations, a TLS Proxy instance (e.g., at server 200 or server 300) may distinguish between actual ECH and GREASE ECH values using a stored list of internal ECHConfig values, given that the TLS clients would select one of those internal ECHConfig values for actual ECH. For example, an actual ECH may be distinguished from a grease ECH (e.g., by a TLS proxy) based on a list of internal (internal) ECH Config values used in the enterprise, as TLS clients of the enterprise will use known ECHConfig-internal for real ECH.
In the examples of
In the example of
At block 404, the device may receive (e.g., in response to the request) a response (e.g., a DNS response) from the second server, the response including: an address (e.g., an IP address) of a third server (e.g., client-facing server 104) different from the first server and through which one or more devices communicate with the first server, and a first cryptographic key that is different from a second cryptographic key for the third server (e.g., client-facing server 104). For example, the second server may have replaced the second cryptographic key in the DNS response with the first cryptographic key. For example, the first cryptographic key may be known by (e.g., generated by) a TLS proxy associated with the same enterprise as the device and the second server in one or more implementations.
At block 406, the device may encrypt, using the first cryptographic key, at least the name (e.g., a hostname in a SNI of a ClientHello extension) of the first server (e.g., one of the origin content servers 106) to generate an encrypted name of the first server. The encrypted name of the first server may be included in an encrypted ClientHello (ECH) extension that includes additional encrypted information. As examples, the additional encrypted information in the ECH extension may include a TLS version, one or more cipher suite indicators, and/or any other (e.g., all) elements of an Application-Layer Protocol Negotiation (ALPN) list for the ClientHello.
At block 408, the device may provide a message (e.g., a ClientHello handshake message including an encrypted ClientHello (ECH), such as the ECH-internal extension of
In one or more implementations, the TLS proxy is configured to allow or deny the establishing of the connection based, in part, on a decryption of the encrypted name of the first server and a policy of the enterprise. For example, the TLS proxy may allow or deny the establishing of the TLS connection and/or to determine whether to feed an Application Layer Proxy based, in part, on a decryption of the encrypted name of the first server and a TLS intercept policy of the enterprise (e.g., as discussed in further detail herein in connection with
In the example of
At block 504, the first server may obtain (e.g., in response to receiving the request) a response (e.g., a DNS response) to the request, the response including a first cryptographic key. For example, obtaining the response may include forwarding the request to a second server (e.g., a DNS server, such as the DNS authoritative resolver 110), and receiving the response including the first cryptographic key from the second server. For example, the first cryptographic key may have been provided to the second server by a client-facing server for an anonymity set of origin content servers in one or more implementations. As another example, obtaining the response may include obtaining information (e.g., DNS information such as a server address of a different server, such as the server address of the client-facing server 104) from a cache at the first server and generating the response without forwarding the request to the second server. In one or more implementations, device and the first server are associated with an enterprise (e.g., enterprise 103), and the second server is unassociated with the enterprise.
At block 506, the first server may replace the first cryptographic key in the response with a second cryptographic key. In one or more implementations, the first cryptographic key may be a public key of a third server (e.g., the client-facing server 104). In one or more implementations, the second cryptographic key may be a public key of a fourth server (e.g., a TLS proxy, such as a TLS proxy at the server 200 of
At block 508, the first server may provide the response with the second cryptographic key to the device. In one or more implementations, the first server may receive the second cryptographic key from a third server (e.g., the server 200 of
In one or more implementations, the process 500 may also include storing the first cryptographic key at the first server in association with the name. For example, storing the first cryptographic key at the first server in association with the name may include storing the first cryptographic key, storing the name, and storing an indicator that maps the first cryptographic key to the name. In one or more implementations, the process 500 may also include providing the first cryptographic key to one or more other servers, such as to a TLS proxy (e.g., in implementations in which the DNS proxy and the TLS proxy are implemented as separate systems). For example, the first server and/or one or more other servers may (e.g., separately and/or in cooperation) store the first cryptographic key, the name, and/or other ECHConfig information and build a mapping from ECHConfig values to origin hostnames. This mapping at the first server and/or one or more other servers may be used to determine which client-facing server maps to which origin content servers and/or to distinguish an actual ECH from a GREASE ECH in one or more implementations.
In the example of
At block 604, the first server may decrypt the encrypted portion using the cryptographic information associated with the cryptographic key, to obtain information that includes a name (e.g., a hostname in an SNI field of the extension) of the second server. In one or more implementations, the process 600 may also include, prior to receiving the message from the device, generating the cryptographic key at the first server; and providing the cryptographic key to a fourth server (e.g., a DNS proxy, such as the server 202 of
At block 606, the first server may allow or deny the establishing of the TLS connection with the second server based at least in part on the name of the second server. For example, the first server may allow or deny the establishing of the TLS connection with the second server based on a comparison of some or all of the name of the second server with an intercept policy (e.g., a TLS intercept policy, which may include a list of allowed servers to which connections are allowed by the intercept policy and/or a list of blocked servers to which connections are disallowed by the intercept policy). For example, the first server may allow and complete a handshake using the message if the name of the second server is on an allow list in the intercept policy, or deny the handshake if the name of the server is on a block list in the intercept policy or is an untrusted or unverified or unknown server.
In one or more use cases, allowing the establishing of the connection may include allowing and completing the handshake operation based (at least in part) on the name of the second server, and decrypting and immediately re-encrypting the request without performing any further security scanning of the content. In one or more other use cases, allowing the establishing of the connection may include allowing and completing the handshake operation based (at least in part) on the name of the second server, and then decrypting and performing additional security checks on the content (e.g., application layer payload content), and determining whether to deny the request after completing the TLS handshake based on the results of those additional security checks. These additional security checks may be performed on the request, the response, or both.
In one or more implementations, the process 600 may also include re-encrypting, by the first server, the information including the name of the second server using another cryptographic key different from the cryptographic key, to generate re-encrypted information (e.g., a re-encrypted extension); forwarding the message with the re-encrypted information to a third server (e.g., a client-facing server such as the client-facing server 104); and determining, by the first server and based on an intercept policy (e.g., a TLS Intercept Policy), whether to allow a security check in an application layer proxy to be performed (e.g., as discussed in further detail hereinafter in connection with
In one or more implementations, the ECH intercept operations of, for example,
As shown in
The bus 808 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system 800. In one or more implementations, the bus 808 communicatively connects the one or more processing unit(s) 812 with the ROM 810, the system memory 804, and the permanent storage device 802. From these various memory units, the one or more processing unit(s) 812 retrieves instructions to execute and data to process in order to execute the processes of the subject disclosure. The one or more processing unit(s) 812 can be a single processor or a multi-core processor in different implementations.
The ROM 810 stores static data and instructions that are needed by the one or more processing unit(s) 812 and other modules of the electronic system 800. The permanent storage device 802, on the other hand, may be a read-and-write memory device. The permanent storage device 802 may be a non-volatile memory unit that stores instructions and data even when the electronic system 800 is off. In one or more implementations, a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) may be used as the permanent storage device 802.
In one or more implementations, a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) may be used as the permanent storage device 802. Like the permanent storage device 802, the system memory 804 may be a read-and-write memory device. However, unlike the permanent storage device 802, the system memory 804 may be a volatile read-and-write memory, such as random access memory. The system memory 804 may store any of the instructions and data that one or more processing unit(s) 812 may need at runtime. In one or more implementations, the processes of the subject disclosure are stored in the system memory 804, the permanent storage device 802, and/or the ROM 810. From these various memory units, the one or more processing unit(s) 812 retrieves instructions to execute and data to process in order to execute the processes of one or more implementations.
The bus 808 also connects to the input and output device interfaces 814 and 806. The input device interface 814 enables a user to communicate information and select commands to the electronic system 800. Input devices that may be used with the input device interface 814 may include, for example, alphanumeric keyboards and pointing devices (also called “cursor control devices”). The output device interface 806 may enable, for example, the display of images generated by electronic system 800. Output devices that may be used with the output device interface 806 may include, for example, printers and display devices, such as a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a flexible display, a flat panel display, a solid state display, a projector, or any other device for outputting information. One or more implementations may include devices that function as both input and output devices, such as a touchscreen. In these implementations, feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
Finally, as shown in
Implementations within the scope of the present disclosure can be partially or entirely realized using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types) encoding one or more instructions. The tangible computer-readable storage medium also can be non-transitory in nature.
The computer-readable storage medium can be any storage medium that can be read, written, or otherwise accessed by a general purpose or special purpose computing device, including any processing electronics and/or processing circuitry capable of executing instructions. For example, without limitation, the computer-readable medium can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM.
The computer-readable medium also can include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, racetrack memory, FJG, and Millipede memory.
Further, the computer-readable storage medium can include any non-semiconductor memory, such as optical disk storage, magnetic disk storage, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In one or more implementations, the tangible computer-readable storage medium can be directly coupled to a computing device, while in other implementations, the tangible computer-readable storage medium can be indirectly coupled to a computing device, e.g., via one or more wired connections, one or more wireless connections, or any combination thereof.
Instructions can be directly executable or can be used to develop executable instructions. For example, instructions can be realized as executable or non-executable machine code or as instructions in a high-level language that can be compiled to produce executable or non-executable machine code. Further, instructions also can be realized as or can include data. Computer-executable instructions also can be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As recognized by those of skill in the art, details including, but not limited to, the number, structure, sequence, and organization of instructions can vary significantly without varying the underlying logic, function, processing, and output.
While the above discussion primarily refers to microprocessor or multi-core processors that execute software, one or more implementations are performed by one or more integrated circuits, such as ASICs or FPGAs. In one or more implementations, such integrated circuits execute instructions that are stored on the circuit itself.
Those of skill in the art would appreciate that the various illustrative blocks, modules, elements, components, methods, and algorithms described herein may be implemented as electronic hardware, computer software, or combinations of both. To illustrate this interchangeability of hardware and software, various illustrative blocks, modules, elements, components, methods, and algorithms have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application. Various components and blocks may be arranged differently (e.g., arranged in a different order, or partitioned in a different way) all without departing from the scope of the subject technology.
It is understood that any specific order or hierarchy of blocks in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of blocks in the processes may be rearranged, or that all illustrated blocks be performed. Any of the blocks may be performed simultaneously. In one or more implementations, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, 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.
As used in this specification and any claims of this application, the terms “base station”, “receiver”, “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms “display” or “displaying” means displaying on an electronic device.
As used herein, the phrase “at least one of” preceding a series of items, with the term “and” or “or” to separate any of the items, modifies the list as a whole, rather than each member of the list (i.e., each item). The phrase “at least one of” does not require selection of at least one of each item listed; rather, the phrase allows a meaning that includes at least one of any one of the items, and/or at least one of any combination of the items, and/or at least one of each of the items. By way of example, the phrases “at least one of A, B, and C” or “at least one of A, B, or C” each refer to only A, only B, or only C; any combination of A, B, and C; and/or at least one of each of A, B, and C.
The predicate words “configured to”, “operable to”, and “programmed to” do not imply any particular tangible or intangible modification of a subject, but, rather, are intended to be used interchangeably. In one or more implementations, a processor configured to monitor and control an operation or a component may also mean the processor being programmed to monitor and control the operation or the processor being operable to monitor and control the operation. Likewise, a processor configured to execute code can be construed as a processor programmed to execute code or operable to execute code.
Phrases such as an aspect, the aspect, another aspect, some aspects, one or more aspects, an implementation, the implementation, another implementation, some implementations, one or more implementations, an embodiment, the embodiment, another embodiment, some implementations, one or more implementations, a configuration, the configuration, another configuration, some configurations, one or more configurations, the subject technology, the disclosure, the present disclosure, other variations thereof and alike are for convenience and do not imply that a disclosure relating to such phrase(s) is essential to the subject technology or that such disclosure applies to all configurations of the subject technology. A disclosure relating to such phrase(s) may apply to all configurations, or one or more configurations. A disclosure relating to such phrase(s) may provide one or more examples. A phrase such as an aspect or some aspects may refer to one or more aspects and vice versa, and this applies similarly to other foregoing phrases.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration”. Any embodiment described herein as “exemplary” or as an “example” is not necessarily to be construed as preferred or advantageous over other implementations. Furthermore, to the extent that the term “include”, “have”, or the like is used in the description or the claims, such term is intended to be inclusive in a manner similar to the term “comprise” as “comprise” is interpreted when employed as a transitional word in a claim.
All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. § 112(f) unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for”.
The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more”. Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the subject disclosure.
This application claims the benefit of priority to U.S. Provisional Patent Application No. 63/394,900, entitled, “Mechanism to Selectively Intercept TLS Sessions that Use the TLS Encrypted ClientHello (ECH) Extension”, filed on Aug. 3, 2022, the disclosure of which is hereby incorporated herein in its entirety.
Number | Date | Country | |
---|---|---|---|
63394900 | Aug 2022 | US |