Methods and systems for filtering encrypted traffic
Claim Score by NHIP
Abstract
Application programming interface (API) hooks are injected into an application program executing at a client during run-time. Responsive to these hooks, data intended for encryption prior to transmission from the client is diverted, for example for content filtering, compression, etc., prior to being encrypted. In the case of encrypted data received at the client, the data is decrypted but before being passed to the application it is diverted, under control of the API hooks, for content filtering, decompression, etc.

Term
8.1 yearsto projected expiry
Projected expiry 19 October 2034, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
31 claims: 7 independent, 24 dependent
- 1A method, comprising injecting, at run-time, one or more hooks on application programming interface (API) calls within an application executing on a client;catching, using the hooks, calls from the application concerning encryption of data to be transferred to a remote computer system;and diverting the data from said encryption/decryption for manipulation prior to said encryption.
- 10A computer system having stored thereon computer-readable instructions which, when executed by a processor of said computer system, cause said processor to inject, at run-time, one or more hooks on application programming interface (API) calls within an application executing on said computer system, catch, using the hooks, calls from the application concerning encryption of data to be transferred to a remote computer system, and divert the data from said encryption for manipulation prior to said encryption.
- 15Broadest claimClaim Score 91, very broad(NHIP)A method, comprising directing, under the control of application programming interface (API) hooks injected into an application program executing at a client, data for content filtering at the client, and subsequently, encrypting the data.
- 17A method, comprising directing, under the control of application programming interface (API) hooks injected into an application program executing at a client, data received and decrypted at the client for content filtering at the client, and subsequently, passing the data to the application program.
- 18A method, comprising injecting, at run-time, one or more hooks on application programming interface (API) calls within an application executing on a client;catching, using the hooks, calls from the application concerning decrypted data received at the client to be transferred to the application;and diverting the data for manipulation prior to transferring the data to the application.
- 26A method, comprising establishing, in a network in which a proxy is logically disposed between a client and a server, a connection between the client and the server;and providing a server certificate to the client over the connection;wherein communications over said connection comprise direct exchanges between the client and the server as determined by one or more hooks on application programming interface (API) calls within an application executing on the client.
- 28A method, comprising following completion of a certificate exchange between a server and a client, establishing a first connection between the client and the server;thereafter, establishing a second connection between the client and a proxy, and establishing a third connection between the proxy and the server;whereby the proxy is logically disposed between the client and the server for one or more exchanges between the client and the server, but the first connection between the client and the server is used for other exchanges therebetween, in each instance said exchanges determined by one or more hooks on application programming interface (API) calls within an application executing on a client.
Independent claims7
61 paragraphs in 5 sections, as filed
FIELD OF THE INVENTION
p-0002The present invention relates to methods and systems for filtering encrypted communication traffic, for example HTTPS traffic, without cracking the encryption and exposing the underlying plain text.
BACKGROUND
p-0003The Internet and its graphical user interface, the World Wide Web, are indispensable tools for all manner of communications and commerce. However, not all types of communications are appropriate for viewing by all people. Further, when transacting commerce via the Internet individuals generally insist upon some security measures to protect their sensitive information against compromise.
p-0004To address concerns regarding accessing of potentially inappropriate communications (and here Web sites and the like are considered to be a form of such communications), filtering technologies have been developed. These filters are software tools that can block access to specific Web sites and Internet services. Hence, the filters allow administrators or parents to selectively control what sort of communications can be accessed when employees or minors are “surfing” the Web using a personal computer and a Web browser. In some cases the filters are applied at the local computer level, while in other cases the filters are employed at computer systems (e.g., proxies) that act as gatekeepers between a personal computer or workstation and the Internet.
p-0005Security concerns, on the other hand, have been addressed through the use of encrypted communications between users' local computer systems and remote computer systems (called servers). Through an exchange of credentials that allow the local computer to verify the identity of the server (and, in some cases, vice-versa), the two computer systems establish an encrypted communication session with one another. Data (such as credit card numbers and the like) exchanged between the computer systems during this session is not visible to other computer systems (such as proxies) that may reside in the communication path between the user's local computer and the server. This affords the user some degree of privacy and security when conducting commerce or other, private transactions over the Internet.
p-0006While the use of encrypted communications is of great benefit in helping to facilitate commerce over the Internet, it does pose a problem for the filters discussed above. Because the data (called the plain text) is encrypted by the time it reaches the filters (whether the filters are deployed at the user's local computer or a proxy), the filters cannot determine whether or not the content represented by that data is subject to filtering under the rules prescribed by the filter administrator. Hence, the filter is rendered ineffective.
p-0007Recognizing this problem, proxy vendors have developed solutions that allow the encrypted communications to be “cracked” so that, for example, the underlying plain text from a server can be examined against the prescribed filing rules. If the content represented by this data is found to be inappropriate under the filtering rules, it is blocked. Otherwise, the data is re-encrypted and delivered to the user's local computer.
p-0008While this scheme allows content filters to operate on encrypted traffic exchanged between user's local computers and servers, it does compromise the very security which the encrypted communication scheme sought to establish in the first place. For example, if one considers an on-line banking transaction, which ordinarily would employ encrypted communications between the user's computer and the bank's server, by cracking the encrypted communications at a proxy disposed between these two systems the user's personal financial information and perhaps his/her log-in credentials for the bank's Web site become exposed and may be subject to compromise.
p-0009Perhaps an even more important limitation of this “proxy-in-the-middle” method is that it requires the client to trust everything that the proxy trusts. All secure communications are intercepted and the proxy acts as a “man-in-the-middle” replacing the server's certificate with its own, knowing the client will always trust the proxy even though the client may not always trust the endpoint to which the proxy is connected. That is, the endpoint's (e.g., a origin server's) certificate is never examined by the end user as it otherwise would be when a direct connection is made to the endpoint. Thus, this form of filtering for what are supposed to be secure communications is simply not acceptable to many individuals or institutions.
p-0010Nevertheless, simply because communications are encrypted is not a sufficient reason to allow the data associated with such communications to pass unfiltered. Malicious programs, such as worms and viruses could be disguised in such communications and, if not subject to filtering, would be allowed to pass unwittingly to a user's computer system or a server. Likewise, content deemed inappropriate by a network administrator or a parent could bypass filtering by being shrouded in an envelope of encryption. Hence, a methodology for filtering secure communications which nevertheless preserves the privacy of the information being exchanged and which ensures the user receives the original endpoint certificate is needed.
SUMMARY OF THE INVENTION
p-0011In various embodiments of the invention, application programming interface (API) hooks are injected into an application program executing at a client during run-time. Responsive to these hooks, data intended for encryption prior to transmission from the client is diverted, for example for content filtering, compression, etc., prior to being encrypted. In some cases, the API hooks may be included in computer-readable instructions that are injected into a currently running (or starting) process. These instructions contain the API hooks through which data flows for transmission just prior to encryption. This manipulation may or may not occur at the client and following the manipulations the data may be passed for encryption by an encryption engine at the client or remote from the client on which the application is executing (e.g., via a secure tunnel).
p-0012In the case of encrypted data received at the client, the data is decrypted but before being passed to the application it is diverted, under control of the API hooks, for content filtering, decompression, etc. Thereafter, assuming the data is not otherwise blocked, it is passed to the application.
p-0013These and further embodiments of the present invention are discussed below.
BRIEF DESCRIPTION OF THE DRAWINGS
p-0014The present invention is illustrated by way of example, and not limitation, in the figures of the accompanying drawings in which:
p-0015<figref idrefs="DRAWINGS">FIG. 1</figref> illustrates a computer system employing API hooks injected into an application for diverting data prior to encryption or following decryption, in accordance with an embodiment of the present invention; and
p-0016<figref idrefs="DRAWINGS">FIG. 2</figref> illustrates a computer system in which a proxy participates in communications between a client and a server, but which allows for direct client-to-server encrypted communications in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION
p-0017Described herein are methods and systems for filtering encrypted communication traffic, for example HTTPS traffic, without cracking the encryption and exposing the underlying plain text.
p-0018Readers should recognize that various embodiments of the present invention may be implemented with the aid of computer-implemented processes or methods (a.k.a. software, programs or routines) that may be rendered in any computer language including, without limitation, C#, C/C++, Fortran, COBOL, PASCAL, assembly language, markup languages (e.g., HTML, SGML, XML, VoXML), and the like, as well as object-oriented environments such as the Common Object Request Broker Architecture (CORBA), Java™ and the like. In general, terms such as software, programs, routines, scripts and the like, as used herein, are meant to encompass any series of logical steps performed in a sequence to accomplish a given purpose.
p-0019In view of the above, it should be appreciated that some portions of the detailed description that follows are presented in terms of algorithms and symbolic representations of operations on data within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the computer science arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, it will be appreciated that throughout the description of the present invention, use of terms such as “processing”, “computing”, “calculating”, “determining”, “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
p-0020The present invention can be implemented with an apparatus to perform the operations described herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer, selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
p-0021The algorithms and processes presented herein are not inherently related to any particular computer or other apparatus. However, some embodiments of the invention are intended for network systems where encryption/decryption points can be identified and hooked. Further, although specific examples of hook points for SSL communications are discussed below, the techniques described herein are not necessarily limited to SSL and the same methods may find application anywhere that hooks may be set prior to encryption and after decryption of the data (i.e., prior to transmission or after receipt of such data, respectively).
p-0022Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method. For example, any of the methods according to the present invention can be implemented in hard-wired circuitry, by programming a general-purpose processor, or by any combination of hardware and software. One of ordinary skill in the art will immediately appreciate that the invention can be practiced with any computer system configuration, including personal computers, workstations, hand-held devices, multiprocessor systems, microprocessor-based, digital signal processor-based or other programmable consumer electronics, network computers that employ thin client architectures, minicomputers, mainframe computers, and the like. The invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
p-0023Referring now to <figref idrefs="DRAWINGS">FIG. 1</figref>, the illustration shows a computer system, called a client, <b>10</b> communicatively coupled to a server <b>12</b> via a computer network (or network of networks, such as the Internet) <b>14</b>. Communications between the client <b>10</b> and the network <b>14</b> take place over communication link <b>16</b><i>a, </i>while communications between server <b>12</b> and network <b>14</b> take place over communications link <b>16</b><i>b. </i>Communications links <b>16</b><i>a </i>and <b>16</b><i>b </i>may be any form of communications links and the precise nature of these links is not critical to the present invention. Likewise, client <b>10</b> may be any of the above-described forms of computer systems. Often, client <b>10</b> will be a personal computer or a mobile device (such as a mobile phone) having one or more applications <b>18</b> capable of communicating over the Internet installed thereon. Such applications include, but are not limited to, Web browsers.
p-0024In order to provide secure communications of the type described above, client <b>10</b> also has installed thereon computer-readable instructions that provide an encryption layer <b>20</b>. For secure communications between client <b>10</b> and server <b>12</b>, plain text is passed from application <b>10</b> to encryption/decryption layer <b>20</b>, where it is encrypted according to whichever secure communication scheme the client <b>10</b> and the server <b>12</b> have agreed upon. Often, especially for communications over the Internet, this secure communication scheme will be a form of secure socket layer (SSL) encryption, such as HTTPS (HTTP over SSL).
p-0025HTTP is the HyperText Transport Protocol and is one of the most often used communication protocols for passing data between computer systems via the Internet. HTTP is commonly used by Web browsers running on client computers to allow for the quick viewing of many filetypes and for ease of navigation among them. HTTPS operates virtually identically to HTTP, except that data transported over HTTPS is encrypted prior to transmission. The encryption is performed using cryptographic keys exchanged between the client and the server at the outset of a communications session. Because the keys are unique to each computer system, only the client and the server engaged in the communication session can decrypt one another's transmissions to recover the plain text.
p-0026As indicated then, plain text is passed from application program <b>18</b> at client <b>10</b> to encryption/decryption layer <b>20</b>, where it is encrypted prior to transmission. Note, in some cases, the encryption may occur remote from the client, for example where the data is passed over a secure tunnel to be encrypted. In such instances, the encrypted data would be subsequently transferred to the receiver from the platform at which it was encrypted, or perhaps transferred back to the client for further processing and/or transmission to the receiver.
p-0027Assuming the encryption occurs at the client, the encrypted data is then passed to a network communications layer <b>22</b>, which handles the actual transmission of this information over communication link <b>16</b><i>a, </i>network <b>14</b> and communication link <b>16</b><i>b </i>to the server <b>12</b>. In the case of communications over the Internet, network communications layer <b>22</b>, and a corresponding network communications layer <b>24</b> at server <b>12</b>, communicate using the Transmission Control Protocol/Internet Protocol (TCP/IP) communication suite. The details of this communication protocol are not critical to the present invention and other forms of network layer communications and communications protocols may be used.
p-0028When the traffic is received at server <b>12</b>, network communication layer <b>22</b> passes the encrypted data to encryption/decryption layer <b>24</b>, where the original plain text is recovered. That is, using the cryptographic keys received from the client <b>10</b>, encryption/decryption layer <b>26</b> decrypts the received data to recover the original plain text that was transmitted from application <b>18</b>. This plain text is then passed to application <b>28</b>, where it is processed according to the nature of the application.
p-0029Communications from server <b>12</b> to client <b>10</b> happen in the reverse sequence, with encryption/decryption layer <b>26</b> encrypting plain text received from application <b>28</b> and passing the encrypted data to network communication layer <b>24</b>, which transmits the encrypted information over network <b>14</b> to network communications layer <b>22</b> at client <b>10</b>. The encrypted information is then passed to encryption/decryption layer <b>20</b>, where it is decrypted using the keys provided by server <b>12</b> the resulting plain text is then passed to application <b>18</b>. In the case where application <b>18</b> is a Web browser, this plain text may be a Web page or other information that is then presented to the user.
p-0030In accordance with the present invention, rather than employing a proxy or other computer system between client <b>10</b> and server <b>12</b> where the encrypted traffic passed between them is cracked, examined for compliance with filtering rules, and then either blocked or re-encrypted and passed on, computer software installed on client <b>10</b> is used to inject hooks into application <b>18</b> to allow for diversion of the plain text to instruction layer <b>30</b> for filtering and/or modification of the traffic prior to encryption. These hooks may be injected at any point during run-time, including but not limited to times when application <b>18</b> is initially launched at client <b>18</b>.
p-0031In one embodiment of the present invention, where application <b>18</b> is a browser application, the hooks are placed in application programming interface (API) calls in the browser at the point where plain text is to be passed to encryption layer <b>20</b>. Note, in many instances application layer <b>20</b> will actually be a component of application <b>18</b>, but it is shown separately in the illustration for sake of clarity. By providing the hooks at this juncture, the plain text can be diverted to instruction layer <b>30</b> prior to encryption. This allows the plain text to be examined against filtering rules, compressed and/or otherwise modified prior to being encrypted. For example, in some cases it may be desirable to employ dictionary compression of the plain text prior to encryption. The present invention facilitates such operations by diverting the plain text, allowing the dictionary compression to be performed, and then passing the compressed version of the plain text to the encryption/decryption layer <b>20</b>. From that point, the compressed data may be encrypted and passed to the server <b>12</b> as described above. Of course, a decompression process would need to be employed at the server once the encrypted traffic had been decrypted by encryption/decryption layer <b>24</b> before the decrypted, decompressed plain text could be passed to application <b>26</b>.
p-0032Of course, in many instances instruction layer <b>30</b> will include a content filtering application or will permit the plain text to be diverted to such a content filtering application prior to encryption. This has the advantage of allowing the filtering desired by the administrator of the client (e.g., a parent), or the network in which the client is used, to be performed before the data ever leaves the client <b>10</b>. In particular, the diversion may occur inside of application <b>18</b>. The plain text thus remains within its place of origin and, as long as the instruction layer <b>30</b> is trusted, there will be no comprise of the data. Note that if the data left application <b>18</b> or client <b>10</b> for processing (in plain text), it would be subject to ever increasing risks of compromise.
p-0033Notwithstanding the increased risk of compromise, in some cases the plain text may be diverted to a remote, trusted computer system across a trusted communication link for the filtering to be performed. This would, in some instances, require the use of security systems at each end of the communication link with the remote system in order to be certain that the plain text had not been compromised.
p-0034In the reverse data path, for encrypted traffic received from server <b>12</b>, that traffic is decrypted at encryption/decryption layer <b>20</b> as discussed above, but before being passed to the application <b>18</b> it is diverted by instruction layer <b>30</b> for filtering or other operations. In the case of filtering, the filter rules may be run against the now decrypted plain text to ensure compliance with the administrator's policies but because the plain text is now resident at client <b>10</b> it is not subject to compromise at some intermediary proxy. Again, the decrypted plain text could be transferred from client <b>10</b> to a remote, trusted computer system across a trusted communication link for filtering. If the plain text passes the filtering operation it is provided to application <b>18</b>, otherwise it is blocked. As indicated above, remote trusted systems and/or trusted external processes on the client system could be used in both pre-encrypt and post-decrypt situations.
p-0035In addition to or in place of the filtering, other operations may be employed on the decrypted plain text. For example, in the case of an acceleration application the decrypted data may be decompressed before being provided to application <b>18</b>. Many other operations on or modifications to the data could be made in this fashion.
p-0036Thus, by employing instruction layer <b>30</b> at client <b>10</b>, the present invention is able to facilitate filtering of or other operation on encrypted traffic, without actually having to crack the encryption. In essence, the data is acted upon either prior to the encryption or subsequent to the decryption, but always within a trusted environment so that it is not subject to compromise. This permits HTTPS filtering and/or HTTPS acceleration, etc., without the necessity of cracking open SSL connections and without port-specification. Although not discussed in detail above, SSL cracking is extremely difficult without targeting a specific port since the SSL protocol does not use any type of plain-text eye-catcher, etc. and multiple sends and receives are needed to detect the protocol. Moreover, without the need for an intervening proxy, certificate changes are not required and a client system can validate the original server certificates. This approach also minimizes the number of times data is encrypted and decrypted and provides opportunities to filter returned HTTPS content (e.g., keywords could be detected and used in page-ranking, etc.).
p-0037Various embodiments of the present invention may employ the hook points identified in. Table 1 for commonly used browser applications such as Microsoft's Internet Explorer™, Mozilla's Firefox™, AOL's Netscape Navigator™, and Apple's Safari™. The hook points are listed as ModuleName!FunctionName. For example, wininet!InternetOpen is a hook on the function/API InternetOpen in the wininet.dll operating system component. Likewise, nspr4!PR_Connect is a hook on the PR_Connect function in the nspr4.dll or nspr4.so (etc., platform specific) application module.
p-0038<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="259pt" align="center" /><thead><row><entry namest="1" nameend="1" rowsep="1">TABLE 1</entry></row></thead><tbody valign="top"><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Hook Points for Commonly Used Browsers</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="133pt" align="left" /><colspec colname="2" colwidth="56pt" align="left" /><colspec colname="3" colwidth="70pt" align="left" /><tbody valign="top"><row><entry>Hook Point</entry><entry>Purpose</entry><entry>Application(s)</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>wininet!InternetOpen</entry><entry>Catch HTTP</entry><entry>Internet Explorer &</entry></row><row><entry /><entry>connection</entry><entry>mshtml based</entry></row><row><entry /><entry /><entry>applications</entry></row><row><entry>wininet!InternetOpenURL</entry><entry>Catch HTTP</entry><entry>Internet Explorer &</entry></row><row><entry /><entry>connection</entry><entry>mshtml based</entry></row><row><entry /><entry /><entry>applications</entry></row><row><entry>wininet!HttpOpenRequest/Ex</entry><entry>Catch HTTP</entry><entry>Internet Explorer &</entry></row><row><entry /><entry>connection</entry><entry>mshtml based</entry></row><row><entry /><entry /><entry>applications</entry></row><row><entry>wininet!InternetReadFile</entry><entry>Catch post-</entry><entry>Internet Explorer &</entry></row><row><entry /><entry>decryption reads</entry><entry>mshtml based</entry></row><row><entry /><entry /><entry>applications</entry></row><row><entry>wininet!InternetWriteFile</entry><entry>Catch pre-</entry><entry>Internet Explorer &</entry></row><row><entry /><entry>encryption writes</entry><entry>mshtml based</entry></row><row><entry /><entry /><entry>applications</entry></row><row><entry>nspr4!PR_Connect</entry><entry>Catch connection</entry><entry>Firefox, Navigator,</entry></row><row><entry /><entry>socket</entry><entry>and other NSPR4</entry></row><row><entry /><entry /><entry>based applications</entry></row><row><entry>ssl3!SSL_ImportFD</entry><entry>Catch SSL socket</entry><entry>Firefox, Navigator,</entry></row><row><entry /><entry /><entry>and other NSPR4</entry></row><row><entry /><entry /><entry>based applications</entry></row><row><entry /><entry /><entry>(independent of</entry></row><row><entry /><entry /><entry>platform)</entry></row><row><entry>nspr4!Write</entry><entry>Catch pre-</entry><entry>Firefox, Navigator,</entry></row><row><entry /><entry>encryption writes</entry><entry>and other NSPR4</entry></row><row><entry /><entry /><entry>based applications</entry></row><row><entry /><entry /><entry>(independent of</entry></row><row><entry /><entry /><entry>platform)</entry></row><row><entry>nspr4!Read</entry><entry>Catch post-</entry><entry>Firefox, Navigator,</entry></row><row><entry /><entry>decryption reads</entry><entry>and other NSPR4</entry></row><row><entry /><entry /><entry>based applications</entry></row><row><entry /><entry /><entry>(independent of</entry></row><row><entry /><entry /><entry>platform)</entry></row><row><entry>CFNetwork!CFHTTPMessageCreateRequest</entry><entry>Catch HTTPS</entry><entry>Safari (Windows and</entry></row><row><entry /><entry>connection</entry><entry>Mac) and other</entry></row><row><entry /><entry /><entry>standard API Mac</entry></row><row><entry /><entry /><entry>applications</entry></row><row><entry>CoreFoundation!CFReadStreamRead</entry><entry>Catch post-</entry><entry>Safari (Windows and</entry></row><row><entry /><entry>decryption reads</entry><entry>Mac) and other</entry></row><row><entry /><entry /><entry>standard API Mac</entry></row><row><entry /><entry /><entry>applications</entry></row><row><entry>CoreFoundation!CFWriteStreamWrite</entry><entry>Catch pre-</entry><entry>Safari (Windows and</entry></row><row><entry /><entry>encryption writes</entry><entry>Mac) and other</entry></row><row><entry /><entry /><entry>standard API Mac</entry></row><row><entry /><entry /><entry>applications</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
p-0039Depending on the application, hook points in addition to or other than those listed above may be desirable. For example, for basic filtering applications and for Internet Explorer running on Windows one may use hook points at:
p-0040wininet!InternetConnectA
p-0041wininet!HttpOpenRequestA; and
p-0042wininet!InternetCloseHandle.
p-0043For acceleration or more advanced filtering applications, hook points at the following may also be required:
p-0044wininet!InternetReadFile
p-0045wininet!InternetWriteFile
p-0046Likewise, for basic filtering applications and for Netscape/Firefox/Mozilla running on Windows one may use hook points at:
p-0047nspr4!PR_Connect
p-0048nspr4!PR_Close
p-0049ssl3!SSL_ImportFD
p-0050nspr4!PR_Write
p-0051nspr4!PR_Read
p-0052nsp4!PR_Shutdown; and
p-0053nspr4!PR_GetHostByName.
p-0054Other hook points may be needed for applications beyond basic filtering.
p-0055In the above lists, the PR_Close and InternetCloseHandle calls are hooked so that the end of a connection can be observed. The same is true with PR_Shutdown. The PR_GetHostByName is used to obtain the name (instead of the IP address) of the destination server. ssl3!SSL_ImportFD is used to replace a normal connection “handle” with an SSL connection handle. The hooks on the PR_Read, PR_Write, InternetReadFile, and InternetWriteFile calls are used to observe the data prior to encryption and after decryption. This way, data enters a “write” call in plain-text and leaves encrypted. Likewise, decrypted data is returned to an application when a “read” call returns. In the latter case the original “read” function is first called and the data then examined and/or modified before being passed to the application.
p-0056The above-described hooks may be implemented using any of a variety of techniques. For example one can inject a new dynamic library into a process using techniques similar to the injector described in U.S. patent application Ser. No. 10/829,499, filed 22 Apr. 2004, assigned to the assignee of the present invention and incorporated herein by reference. Upon initialization, the injected code installs hooks for the API call.
p-0057In addition, API calls can be hooked by overwriting portions of the original computer-readable instructions that make up the application to point to a trampoline to the newly injected code, and another trampoline may be created to allow the replacement API (contained in the newly injected code) to call the original code. The new API is responsible for returning control to the caller. In some instances, the API hooks may operate such that the original routine is called first and subsequent processing occurs before the code returns to the caller of the API. That processing can include changing the data originally passed to the API. The trampoline code for calling the original API must relocate the original (now overwritten) instructions and safely branch back to the unaltered portion of the original code. Of course, other techniques for hooking calls exist, for example techniques described in the above-cited U.S. patent application Ser. No. 10/829,499, and the precise means by which the call is hooked is not critical to the present invention and any desirable means of doing so may be used.
p-0058The present invention also facilitates the use of an intervening proxy for performing HTTPS acceleration without acting as a man-in-the-middle during certificate exchanges between the client and the server. As shown in <figref idrefs="DRAWINGS">FIG. 2</figref>, following a complete certificate exchange between a server <b>32</b> and a client <b>34</b> a first connection <b>36</b> (Connection A) is established between the client and the server. Thereafter, the client <b>34</b> opens a new connection <b>38</b> to a proxy <b>40</b>, which then establishes its own connection <b>42</b> to the server <b>32</b>. The client's connection <b>38</b> to the proxy <b>40</b> is returned to the application running on the client and is utilized in reads and writes, while the original connection <b>36</b> between client and server remains available for calls such as getpeername( ) <b>44</b>. Client-side writes may be utilized in an acceleration engine as needed, and client-side reads may be expanded into buffers provided by the application. When the session is closed, the injected hooks close both the proxy connection <b>38</b> and the original server connection <b>36</b>.
p-0059While the number of connections and SSL exchanges on the server is doubled over that which it would normally be when the above-described connection plan is used, it does permit genuine server verification for the client and the proxy and client are able to manage byte caching and other data manipulations without cracking open the SSL exchange and decrypting and re-encrypting traffic. Further optimizations to allow the original server connection to close immediately after the SSL handshake completes could be implemented in some instances. In such cases, the client would need to forward requests such as getpeername( ) to the proxy, which could then make the call using its own connection to the server.
p-0060There may be instances where the above-described scheme will not be appropriate, for example for servers that require client certificates for authenticating the client. If such servers also support so-called proxy certificates, as described in IETF RFC 3820, a variation of the above scheme is possible. Proxy certificates are certificates that a “middle man”, such as a proxy, presents to one application end point (typically a server) on behalf of another application end point (e.g., a client). The proxy certificate is signed by the entity on whose behalf the proxy is acting. The two-connection scheme can make use of such proxy certificates in cases where client certificate authentication is deployed at the server.
p-0061In such scenarios, the client can issue a proxy certificate to the intervening proxy using its private key. The certificate request from proxy <b>40</b> to the client <b>34</b> and the return of the signed proxy certificate from the client <b>34</b> to the proxy <b>40</b> can happen on connection <b>38</b> between client <b>34</b> and proxy <b>40</b>. The client <b>34</b> can also chain along its own certificate along with the signed proxy certificate. The proxy can then present the new certificate as it's “proxy certificate” along with the client's original certificate in a certificate chain to the server on connection <b>42</b>. This should permit the server to verify the certificate chain comprising of proxy certificate followed by the client's certificate and complete an SSL handshake with the proxy and facilitate the above-described transactions. Note the that presence of the original client certificate in this certificate chain enables the server to identify the client end point and the intervening proxy.
p-0062Thus, methods and systems for filtering encrypted communication traffic, for example HTTPS traffic, without cracking the encryption and exposing the underlying plain text have been described. Although discussed above with reference to certain illustrated embodiments, the present invention should not be limited thereby. Instead, the invention should only be measured in terms of the claims, which follow.
Contents5
3 sheets
Sheet 1 Sheet 2 Sheet 3
Every citation, both waysCites: the store holds 10 of 11
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10803173B2 | Cited by | United States of America | Applicant |
| US10938837B2 | Cited by | United States of America | Applicant |
| US8578486B2 | Cited by | United States of America | Applicant |
| US2010223455A1 | Cited by | United States of America | Pre-grant |
| US11281485B2 | Cited by | United States of America | Applicant |
| US10805332B2 | Cited by | United States of America | Applicant |
| US10904226B2 | Cited by | United States of America | Applicant |
| US11711343B2 | Cited by | United States of America | Applicant |
| US9118700B2 | Cited by | United States of America | Applicant |
| US10609160B2 | Cited by | United States of America | Applicant |
| US9525680B2 | Cited by | United States of America | Applicant |
| US8595497B2 | Cited by | United States of America | Search report |
| US2018343239A1 | Cited by | United States of America | Search report |
| US10673819B2 | Cited by | United States of America | Applicant |
| US11695731B2 | Cited by | United States of America | Applicant |
| US10798058B2 | Cited by | United States of America | Applicant |
| US10802858B2 | Cited by | United States of America | Applicant |
| US9565180B2 | Cited by | United States of America | Applicant |
| US10802857B2 | Cited by | United States of America | Applicant |
| US10778651B2 | Cited by | United States of America | Applicant |
| US10936383B2 | Cited by | United States of America | Search report |
| US9021252B2 | Cited by | United States of America | Search report |
| US11425047B2 | Cited by | United States of America | Search report |
| US2010023756A1 | Cited by | United States of America | Pre-grant |
| US2019288985A1 | Cited by | United States of America | Search report |
| US8612995B1 | Cited by | United States of America | Search report |
| US2016191413A1 | Cited by | United States of America | Search report |
| US10715607B2 | Cited by | United States of America | Applicant |
| US10523640B2 | Cited by | United States of America | Applicant |
| US9497024B2 | Cited by | United States of America | Applicant |
| US11539659B2 | Cited by | United States of America | Applicant |
| US10862773B2 | Cited by | United States of America | Applicant |
| US11327784B2 | Cited by | United States of America | Applicant |
| US10802893B2 | Cited by | United States of America | Applicant |
| US10812451B2 | Cited by | United States of America | Applicant |
| US10581960B2 | Cited by | United States of America | Applicant |
| US10606626B2 | Cited by | United States of America | Search report |
| US11108728B1 | Cited by | United States of America | Applicant |
| US2010041457A1 | Cited by | United States of America | Pre-grant |
| US10841280B2 | Cited by | United States of America | Search report |
| US2012096268A1 | Cited by | United States of America | Pre-grant |
| US11032246B2 | Cited by | United States of America | Applicant |
| CN104346478A | Cited by | China | Search report |
| US8566580B2 | Cited by | United States of America | Search report |
| US11539718B2 | Cited by | United States of America | Applicant |
| US9700791B2 | Cited by | United States of America | Search report |
| US10547596B2 | Cited by | United States of America | Applicant |
| WO2013149045A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9800553B2 | Cited by | United States of America | Applicant |
| US10298545B2 | Cited by | United States of America | Applicant |
| US10158607B2 | Cited by | United States of America | Applicant |
| US9158686B2 | Cited by | United States of America | Applicant |
| US2002112048A1 | Cites | United States of America | Pre-grant |
| US2003237004A1 | Cites | United States of America | Pre-grant |
| US2005240906A1 | Cites | United States of America | Pre-grant |
| US2006037072A1 | Cites | United States of America | Pre-grant |
| US2007113282A1 | Cites | United States of America | Pre-grant |
| US2007226519A1 | Cites | United States of America | Pre-grant |
| US5854841A | Cites | United States of America | Pre-grant |
| US6061796A | Cites | United States of America | Pre-grant |
| US6091796A | Cites | United States of America | Pre-grant |
| US7484103B2 | Cites | United States of America | Pre-grant |
4 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 97164508 | United States of America | A | |
| US20080971645 | – | – | – |
Members4
| Document | Office | Kind | |
|---|---|---|---|
| US2009178061A1 | United States of America | A1 | |
| US9304832B2 | United States of America | B2 | |
| US2016248737A1 | United States of America | A1 | |
| US9667603B2 | United States of America | B2 |
16 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication, DOCDB
- 2009178061
- Publication, EPODOC
- US2009178061
- Application
- 11971645
- Application, DOCDB
- 97164508
- Application, EPODOC
- US20080971645
Titles
- English
- METHODS AND SYSTEMS FOR FILTERING ENCRYPTED TRAFFIC
Classification
- CPC, 6
- H04L63/0428
- G06F9/54
- G06F2209/542
- H04L63/1416
- H04L63/166
- H04L67/02
- IPC, 1
- G06F9 44
- USPC, 1
- 719328000