IP Library Granted Patent US 9,304,832
Granted Patent B2
US 9,304,832 · App. 11/971,645 · Granted Apr 5, 2016

Methods and systems for filtering encrypted traffic

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,304,832
App. No.
11/971,645
Granted
Apr 5, 2016
Kind
B2
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.

Claims (24)

1. A method for filtering data to be securely transmitted from a client to a remote computer system, comprising:

injecting, at run-time, one or more hooks on application programming interface (API) calls within an application executing on the client;

catching, using the hooks, calls from the application concerning encryption of the data to be transferred to the remote computer system;

diverting the data away from said encryption and towards an instruction layer for filtering just prior to said encryption, wherein the data is filtered at the instruction layer;

directing the filtered data to an encryption engine, wherein the data is encrypted at the encryption engine; and

initiating a secure transmission of the encrypted data from the client to the remote computer system, thereby causing the data to be filtered before being encrypted and securely transmitted to the remote computer system;

wherein the hooks are injected at one or more of the following hook points within the application: wininet!InternetConnectA, wininet!HttpOpenRequestA, wininet!InternetCloseHandle, wininet!InternetOpen, wininet!InternetOpenURL, wininet!HttpOpenRequest/Ex, wininet!InternetReadFile, and wininet!InternetWriteFile.

2. The method of claim 1 , wherein the filtering occurs at the client.

3. The method of claim 1 , wherein the encryption engine is remotely located from the client on which the application is executing.

4. The method of claim 1 , wherein the hooks are injected at one or more of the following hook points within the application: nspr4!PR_Close, nspr4!PR_Connect, ssl3!SSL_ImportFD, nspr4!Write, nsp4!PR_Shutdown, nspr4!PR_GetHostByName and nspr4!Read.

5. The method of claim 1 , wherein the hooks are injected at one or more of the following hook points within the application: CFNetwork!CFHTTPMessageCreateRequest, CoreFoundation!CFReadStreamRead, and CoreFoundation!CFWriteStreamWrite.

6. A 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;

divert the data away from said encryption and towards an instruction layer for filtering just prior to said encryption, wherein the data is filtered at the instruction layer;

direct the filtered data to an encryption engine, wherein the data is encrypted at the encryption engine; and

initiate a secure transmission of the encrypted data from the client to the remote computer system, thereby causing the data to be filtered before being encrypted and securely transmitted to the remote computer system;

wherein the hooks are injected at one or more of the following hook points within the application: wininet!InternetConnectA, wininet!HttpOpenRequestA, wininet!InternetCloseHandle, wininet!InternetOpen, wininet!InternetOpenURL, wininet!HttpOpenRequest/Ex, wininet!InternetReadFile, and wininet!InternetWriteFile.

7. The computer system of claim 6 , wherein the filtering occurs at the computer system.

8. A method for filtering data to be securely transmitted from a client to a remote computer system, comprising:

directing, under a control of application programming interface (API) hooks injected into an application program executing at the client, plain text data away from an encryption engine just prior to the encryption engine and towards an instruction layer of the client for content filtering at the client;

filtering the plain text data at the instruction layer of the client; encrypting the data at the encryption engine; and initiating a secure transmission of the encrypted data from the client to the remote computer system, thereby causing the data to be filtered before being encrypted and securely transmitted to the remote computer system;

wherein the hooks are injected at one or more of the following hook points within the application: wininet!InternetConnectA, wininet!HttpOpenRequestA, wininet!InternetCloseHandle, wininet!InternetOpen, wininet!InternetOpenURL, wininet!HttpOpenRequest/Ex, wininet!InternetReadFile, and wininet!InternetWriteFile.

9. The method of claim 8 , wherein the hooks are injected at one or more of the following hook points within the application program: wininet!InternetConnectA, wininet!HttpOpenRequestA, wininet!InternetCloseHandle, wininet!InternetOpen, wininet!InternetOpenURL, wininet!HttpOpenRequest/Ex, wininet!InternetReadFile, wininet!InternetWriteFilenspr4!PR_Connect, nspr4!PR_Close, nspr4!PR_Connect, ssl3!SSL_ImportFD, nspr4!Write, nsp4!PR_Shutdown, nspr4!PR_GetHostByName, nspr4!Read, CFNetwork!CFHTTPMessageCreateRequest, CoreFoundation!CFReadStreamRead, and CoreFoundation!CFWriteStreamWrite.

Assignments (11)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: SYMANTEC CORPORATION
To: CA, INC.
Reel/Frame 051144/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2016
From: BLUE COAT SYSTEMS, INC.
To: SYMANTEC CORPORATION
Reel/Frame 039851/0044 →
RELEASE OF SECURITY INTEREST Recorded Aug 1, 2016
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 039516/0929 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 30740/0181 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035797/0280 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 27727/0144 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035798/0006 →
SECURITY INTEREST Recorded May 22, 2015
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS THE COLLATERAL AGENT
Reel/Frame 035751/0348 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jul 3, 2013
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 030740/0181 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL RECORDED AT R/F 027727/0178 Recorded Oct 16, 2012
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 029140/0170 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Feb 16, 2012
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 027727/0144 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Feb 16, 2012
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 027727/0178 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2008
From: SANDOVAL, ANDREW L.; KARANDIKAR, SHRIKRISHNA
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 020343/0575 →