IP Library Granted Patent US 7,757,074
Granted Patent B2
US 7,757,074 · App. 11/039,946 · Granted Jul 13, 2010

System and method for establishing a virtual private network

Assignee: Citrix Application Networking, LLC
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 7,757,074
App. No.
11/039,946
Granted
Jul 13, 2010
Kind
B2
Abstract

A system and method for establishing a virtual private network (VPN) between a client and a private data communication network. An encrypted data communication session, such as a Secure Sockets Layer (SSL) data communication session, is established between a gateway and the client over a public data communication network. The gateway then sends a programming component to the client for automatic installation and execution thereon. The programming component operates to intercept communications from client applications destined for resources on the private data communication network and to send the intercepted communications to the gateway via the encrypted data communication session instead of to the resources on the private data communication network.

Claims (89)

1. A method for establishing an encrypted virtual private network between a client and a private data communication network, wherein the client is connected to the private data communication network via a public data communication network, comprising:

establishing an encrypted data communication session with a client over the public data communication network; and

sending a programming component to the client for automatic installation and execution thereon in response to establishment of the encrypted data communication session;

wherein upon execution the programming component installs a device driver in a network stack of the client, the device driver configured to intercept communications from client applications destined for resources on the private data communication network and to send the intercepted communications to the programming component, the programming component encapsulating payload from the intercepted communications and sending the encapsulated payload to a gateway via the encrypted data communication session instead of to the resources on the private data communication network.

2. The method of claim 1 , wherein establishing an encrypted data communication session with a client comprises establishing a Secure Sockets Layer data communication session with a client.

3. The method of claim 1 , providing, by the programming component, an endpoint for communications transmitted over the encrypted data communication session.

4. The method of claim 1 , wherein the device driver comprises one of an ActiveX control or a Java applet.

5. The method of claim 1 , further comprising:

terminating, by the programming component on the client, a connection from the gateway to the client.

6. The method of claim 1 , further comprising:

intercepting, by the device driver, via a transport layer connection of an application on the client, a first communication from the application; and

providing, by the device driver, the intercepted first communication to the programming component; and

encapsulating, by the programming component, payload from the first intercepted communication, and sending the encapsulated payload to the gateway via the encrypted data communication session.

7. The method of claim 1 , further comprising: receiving an encrypted communication from the client via the encrypted data communication session;

decrypting the encrypted communication; and

providing the decrypted communication to a resource on the private data communication network.

8. The method of claim 7 , further comprising: processing the decrypted communication prior to providing the decrypted communication to a resource on the private data communication network.

9. The method of claim 8 , wherein processing the decrypted communication comprises performing at least one of: re-encryption; data compression; load balancing; authentication, authorization, and accounting; or caching.

10. The method of claim 1 , further comprising: receiving a communication from a resource on the private data communication network destined for the client; and

sending the communication from the resource on the private data communication network to the client via the encrypted data communication session.

11. A method for establishing a virtual private network between a client and a private data communication network, wherein the private data communication network is connected to the client via a public data communication network, comprising:

establishing an encrypted data communication session with a gateway over the public data communication network;

sending a first program to a client for automatic installation thereon in response to establishment of the encrypted data communication session, wherein upon execution the first program installs a second program in a network stack of the client, the second program configured to intercept communications from client applications destined for resources on the private data communication network and to send the intercepted communications to the first program;

intercepting, by the second program operating as a filter in the network stack of a client, a communication from a client application destined for a resource on the private data communication network; and

sending, by the second program, the intercepted communication to the first program;

encapsulating, by the first program, payload from the intercepted communication; and

sending, by the first program, the encapsulated payload via the encrypted data communication session to the gateway instead of to the resource on the private data communication network.

12. The method of claim 11 , wherein establishing an encrypted data communication session with a gateway comprises establishing a Secure Sockets Layer data communication session with the gateway.

13. The method of claim 11 , further comprising: encrypting the intercepted communication; and

sending the encrypted intercepted communication to the gateway over the public data communication network.

14. The method of claim 11 , further comprising:

receiving the first program from the gateway in response to establishing the encrypted data communication session; and

executing the first program.

15. The method of claim 14 , wherein

executing the first program comprises installing the second program; wherein the second program is configured to intercept communications from client applications destined for resources on the private data communication network and to provide the intercepted communications to the first program for sending to the gateway via the encrypted data communication session.

16. The method of claim 15 , wherein receiving the first program from the gateway comprises receiving an ActiveX control from the gateway.

17. The method of claim 15 , wherein receiving the first program from the gateway comprises receiving a Java applet from the gateway.

18. The method of claim 15 , wherein installing the second program comprises installing a dynamic interceptor at a layer of an operating system of the client.

19. The method of claim 11 , further comprising:

receiving an encrypted communication from the gateway via the encrypted data communication session, wherein the encrypted communication comprises a communication originating from a resource on the private data communication network;

decrypting the encrypted communication from the gateway; and

providing the decrypted communication to a client application.

20. The method of claim 11 , further comprising: processing the intercepted communication prior to sending the intercepted communication to the gateway.

21. The method of claim 20 , wherein processing the intercepted communication comprises performing domain name server (DNS) name resolution.

22. A gateway, comprising:

means for establishing an encrypted data communication session with a client over a public data communication network; and

means for sending a programming component to the client for automatic installation and execution thereon in response to establishment of the encrypted data communication session;

wherein upon execution the programming component installs a device driver in a network stack of the client, the device driver configured to intercept communications from client applications destined for resources on a private data communication network and send the intercepted communications to the programming component, the programming component encapsulating payload from the intercepted communications and sending the encapsulated payload to a gateway via the encrypted data communication session instead of to the resources on the private data communication network.

23. The gateway of claim 22 , wherein the means for establishing an encrypted data communication session with a client comprises means for establishing a Secure Sockets Layer data communication session with a client.

24. The gateway of claim 22 , wherein the programming component provides an endpoint for communications transmitted over the encrypted data communication session.

25. The gateway of claim 22 , wherein the device driver comprises one of an ActiveX control or a Java applet.

26. The gateway of claim 22 , further comprising means for terminating a connection to the client.

27. The gateway of claim 24 , further comprising:

means for intercepting via a transport layer connection of an application on the client, a first communication from the application;

means for providing the intercepted first communication to the programming component; and

means for sending the first intercepted communication, via the encrypted data communication session, to the client.

28. The gateway of claim 22 , further comprising: means for receiving an encrypted communication from the client via the encrypted data communication session;

means for decrypting the encrypted communication; and means for providing the decrypted communication to a resource on the private data communication network.

29. The gateway of claim 28 , further comprising: means for processing the decrypted communication prior to providing the decrypted communication to a resource on the private data communication network.

30. The gateway of claim 29 , wherein the means for processing the decrypted communication comprises means for performing at least one of: re-encryption; data compression; load balancing; authentication, authorization, and accounting; or caching.

31. The gateway of claim 22 , further comprising: means for receiving a communication from a resource on the private data communication network destined for the client; and

means for sending the communication from the resource on the private data communication network to the client via the encrypted data communication session.

32. A client, comprising:

means for establishing an encrypted data communication session with a gateway over a public data communication network;

means for sending a first program to a client for automatic installation thereon in response to establishment of the encrypted data communication session, wherein upon execution the first program installs a second program in a network stack of the client, the second program configured to intercept communications from client applications destined for resources on a private data communication network and to send the intercepted communications to the first program;

means for intercepting a communication by the second program of the network stack from a client application destined for a resource on a private data communication network;

means for sending the intercepted communication to the first program;

means for encapsulating payload from the intercepted communication; and

means for sending the encapsulated payload to the gateway instead of to the resource on the private data communication network.

33. The client of claim 32 , wherein the means for establishing an encrypted data communication session with a gateway comprises means for establishing a Secure Sockets Layer data communication session with a gateway.

34. The client of claim 32 , wherein the means for sending the intercepted communication to the gateway via the encrypted data communication session comprises: means for encrypting the intercepted communication; and

means for sending the encrypted intercepted communication to the gateway over the public data communication network.

35. The client of claim 32 , further comprising: means for receiving the first program from the gateway in response to establishing the encrypted data communication session; and

means for executing the first program.

36. The client of claim 35 ,

wherein the means for executing the first program comprises means for installing the second program, the second program configured to intercept communications from client applications destined for resources on the private data communication network and to provide the intercepted communications to the first program for sending to the gateway via the encrypted data communication session.

37. The client of claim 36 , wherein the means for receiving a first program from the gateway comprises means for receiving an ActiveX control from the gateway.

38. The client of claim 36 , wherein the means for receiving a first program from the gateway comprises means for receiving a Java applet from the gateway.

39. The client of claim 36 , wherein installing a second program comprises installing a dynamic interceptor at a layer of an operating system of the client.

40. The client of claim 32 , further comprising: means for receiving an encrypted communication from the gateway via the encrypted data communication session, wherein the encrypted communication comprises a communication originating from a resource on the private data communication network;

means for decrypting the encrypted communication from the gateway; and means for providing the decrypted communication to a client application.

41. The client of claim 32 , further comprising: means for processing the intercepted communication prior to sending the intercepted communication to the gateway.

42. The client of claim 41 , wherein the means for processing the intercepted communication comprises means for performing domain name server (DNS) name resolution.

43. A method for establishing an encrypted virtual private network between a client and a private data communication network, wherein the client is connected to the private data communication network via a public data communication network, comprising:

establishing, by a client, an encrypted data communication session with a gateway over a network; and

receiving, by the client, a programming component from the gateway in response to the establishment of the encrypted data communication session, the programming component configured for automatic installation and execution on an application layer of the client, the programming component comprising a device driver;

wherein upon execution the programming component installs the device driver in a transport layer of the client, the device driver configured to intercept communications from client applications destined for resources on the private data communication network and to send the intercepted communications to the programming component, the programming component encapsulating payload from the intercepted communications and sending the encapsulated payload to the gateway via the encrypted data communication session instead of to the resources on the private data communication network.

44. The method of claim 1 , wherein the programming component comprises the device driver.

45. The method of claim 1 , wherein the programming component operates at an application layer of the network stack of the client and the device driver operates at a transport layer of the network stack.

Assignments (12)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2013
From: CITRIX APPLICATION NETWORKING, LLC
To: CITRIX SYSTEMS, INC.
Reel/Frame 030265/0903 →
CHANGE OF NAME Recorded Jan 19, 2006
From: NCAR, LLC
To: CITRIX APPLICATION NETWORKING, LLC
Reel/Frame 017034/0399 →
MERGER Recorded Jan 19, 2006
From: NETSCALER, INC.
To: NCAR, LLC
Reel/Frame 017034/0431 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2005
From: SUNDARRAJAN, PRABAKAR; HE, JUNXIAO; SONI, AJAY; NANJUNDASWAMY, SHASHIDHARA; KUMAR, ARKESH
To: NETSCALER, INC.
Reel/Frame 015947/0512 →
Continuity (2)
Provisional Application 6058378500 · Jun 30, 2004
Related Publication 20060005240A1 · Jan 5, 2006