Accessing SSL connection data by a third-party

A method, system, and apparatus are directed towards enabling access to payload by a third-party sent over an SSL session. The third-party may be a proxy situated between a client and a server. SSL handshake messages are sent between the client and the server to establish the SSL connection. As the SSL handshake messages are routed through the proxy, the proxy may extract data. In addition, one of the client or the server may send another message within, or out-of-band to, the series of SSL handshake message directly to the proxy. The other SSL message may include secret data that the proxy may use to generate a session key for the SSL connection. With the session key, the proxy may receive SSL messages over the SSL connection, modify and/or transpose the payload within the received SSL messages, and/or terminate the SSL connection at the proxy.

BACKGROUND OF THE INVENTION

The present invention relates generally to network communications, and more particularly, but not exclusively, enabling a proxy device access to content within and/or management of an SSL connection between a client device and a server device.

An increasing number of applications within an enterprise provide secure communications between a client device and a server device. These applications include intranet portals, Webmail, front-office applications, such as Clarify, back-office applications, and the like. Many of these applications may also be accessed from a branch office either through a Virtual Private Network (VPN) tunnel, directly over the public Internet, or the like. These applications may be available on a server device inside a head office. The head office and branch office are networks of computing devices secured behind security perimeters, such as behind firewalls, or the like. The computing devices at the head office often are enabled to access sensitive information, or the like.

A traditional method of providing secure communications between the client device and the server device employs a web browser and a web server or HyperText Transfer Protocol (HTTP) server to establish an encrypted connection. Encrypted connections may be implemented using a variety of secure communication protocols, including Secure Sockets Layer (SSL) protocol, Transport Layer Security (TLS) protocol, or the like. The SSL protocol is described in Netscape Communications Corp,Secure Sockets Layer(SSL)version3, http://home.netscape.com/eng/ss13/(November 1996). The TLS protocol is derived from SSL, and is described in Dierks, T., and Allen, C., “The TLS Protocol Version 1.0,” RFC 2246 (January 1999), is available at http://www.ietforg/rfc/rfc2246.txt.

Communications between the client device, which may reside in a branch office, and the server device, which may reside in a head office, may be secured, accelerated, and otherwise improved by communication optimizations. For example, Wide Area Network (WAN) optimization solutions may improve the communication between the branch office and the head office. WAN optimization solutions may employ data compression or binary sequence caching. Other solutions may even modify the application-level protocol. However, many of the solutions require access to unencrypted data.

One approach to access the unencrypted data is to terminate the SSL session locally at the branch office, perform inspections or WAN optimizations, and re-encrypt the data back to the head office. This SSL termination and re-encryption can be performed by an SSL accelerator such as one of the BIG-IP® family of traffic managers, by F5 Networks of Seattle, Wash. However, in order to perform the SSL termination at the branch office, the SSL accelerator may require access to certificates and private keys. This access may be a certificate management challenge. In many cases, the certificates and private keys may be stored at the head office. The branch office may require access to a directory service, such as a Lightweight Directory Access Protocol (LDAP), to provide the certificates. Additionally, distributing multiple copies of private keys to the branch office may reduce the security of the system and may violate the security policy of an enterprise.

Another challenge posed by the termination of the SSL session at the branch office is the management and control of the SSL connection. In order for the data to be inspected and/or optimized, a third-party may need to inspect the unencrypted data. Thus, it is with respect to these considerations and others that the present invention has been made.

DETAILED DESCRIPTION OF THE INVENTION

As used herein, application layer refers to layers 5 through 7 of the seven-layer protocol stack as defined by the ISO-OSI (International Standards Organization-Open Systems Interconnection) framework.

The term “network connection” refers to a collection of links and/or software elements that enable a computing device to communicate with another computing device over a network. One such network connection may be a TCP connection. TCP connections are virtual connections between two network nodes, and are typically established through a TCP handshake protocol. The TCP protocol is described in more detail in Request for Comments 793, which is available at http://www.ietf.org/rfc/rfc0793.txt?number=793. A network connection “over” a particular path or link refers to a network connection that employs the specified path or link to establish and/or maintain a communication. The term “node” refers to a network element that typically interconnects one or more devices, or even networks.

As used throughout this application, including the claims, the term “SSL” refers to SSL, TLS, and all secure communications protocols derived therefrom. An SSL connection is a network connection that is secured by cryptographic operations according to an SSL protocol. The SSL protocol typically operates between an application layer (OSI layer 7) and a transport layer (OSI layer 4), but may also be used to encapsulate or tunnel lower layer protocols within itself. The SSL protocol may provide security for application layer protocols such as HyperText Transfer Protocol (HTTP), Lightweight Directory Access Protocol (LDAP), Internet Messaging Access Protocol (IMAP), Post Office Protocol (POP), Session Initiation Protocol (SIP), or the like. For example, HTTP over SSL (HTTPS) utilizes the SSL protocol to secure HTTP data. The SSL protocol may utilize TCP/IP on behalf of the application layer protocols to transport secure data. The SSL protocol may also employ a certificate. In one embodiment, the certificate is an X.509 certificate, such as those described in Request for Comments (RFC) 2459 available at http://www.ietf.org/rfc/rfc2459.txt?number=2459.

The SSL protocol uses an SSL handshake protocol to initiate an SSL session and/or SSL connection. An SSL session may be associated with one or more SSL connections. The SSL handshake protocol includes an SSL re-handshake protocol for initiating another SSL connection. The other SSL connection may be associated with the current SSL session or with another SSL session.

Briefly, SSL messages may be categorized into four general categories: application data, protocol alerts, protocol handshake messages, and cipher-control messages (e.g., change_cipher_spec). Protocol alerts, protocol handshake messages, and cipher-control messages are associated with messages for managing the SSL protocol. For example, an SSL alert may be used for signaling, among other things, error conditions.

The SSL handshake protocol includes the exchange and processing of a series of messages, which may be one or more of an alert, handshake, and/or change_cipher_spec message. An SSL handshake message is a network record of the handshake content type. The SSL handshake message also includes an associated SSL handshake type, and one or more data fields.

A more complete description of the SSL handshake protocol may be found, in addition to the references mentioned above, in “SSL and TLS, Designing and Building Secure Systems,” by Eric Rescorla, 8thprinting, May 2005 by Addison-Wesley, which is hereby incorporated within. Briefly, however, an SSL handshake protocol is a process that involves an exchange of SSL handshake messages between entities involved in a setup of an SSL session. The intent of this process is to establish common parameters under which communicating parties may agree to transmit and/or receive data, such as a set of algorithms with which the entities may use to protect its communications, and a set of cryptographic keys that may be used by those algorithms. The SSL handshake protocol may also authenticate one party to another party, if required. In one embodiment, authentication may be performed using public key cryptography.

The SSL handshake protocol typically begins with a connection initiator device sending to a connection respondent device, among other things, randomly generated data within a CLIENT-HELLO message (e.g. an SSL handshake message with an associated SSL handshake type of “CLIENT-HELLO”). The connection respondent device responds to the CLIENT-HELLO message with, among other things, randomly generated data within a SERVER-HELLO message, along with its algorithm preferences. In addition, the connection respondent may provide a Certificate message that includes a connection respondent certificate which the connection initiator device may use to authenticate the connection respondent.

The connection initiator device, using the connection initiator device's and connection respondent device's randomly generated data, generates a pre-master secret for an SSL session. The connection initiator device then sends the pre-master secret to the connection respondent device in an SSL handshake message. In one embodiment, the pre-master secret may be encrypted using a public key associated with the connection respondent device (obtained from the connection respondent device's certificate). Typically, the SSL handshake message that includes the pre-master secret is a CLIENT-KEY-EXCHANGE handshake message. Each of the connection initiator device and the connection respondent device, separately, perform a series of steps to generate a master secret using the pre-master secret. Then, separately, each of the connection initiator device and the connection respondent device use the master secret to generate session keys, which are typically, symmetric keys used to encrypt and decrypt communicated data over the associated SSL connection. The connection initiator device and the connection respondent device may then use their session keys to generate and send messages to each other indicating that the SSL handshake is finished. The SSL connection may now be employed by the connection respondent device and/or the connection initiator device to send SSL messages with encrypted payloads to each other.

As used herein, the term “forwarding” refers to receiving data over a network connection and sending the data to a destination associated with the data.

As used herein, the phrase “terminating an SSL connection” refers to the action of being one of the two endpoints of an SSL connection. The endpoints of an SSL connection are commonly referred to as an SSL client and an SSL server. However, the invention is not constrained to merely a client/server architecture, and other computing architectures may also be employed, including, for example, a peer-to-peer architecture, or the like. Thus, an SSL client may also be referred to more generally as an SSL connection initiator or simply a connection initiator while an SSL server may be referred to more generally as an SSL connection respondent, or simply a connection respondent. The phrase “establishing an SSL connection” refers to participating in an SSL handshake protocol as an SSL endpoint.

As used herein, the phrase “out-of-band” refers to sending data outside of a current connection, such as sending the data distinct from using a current SSL connection. In one embodiment, a different SSL connection may be used to send the data.

As used herein, “transposing” refers to modifying data in such a way that the modification is intended to be reversed by a receiver to generate the original data. For example, encryption and lossless compression are ways of transposing data. Data can also be modified in a way that the original data cannot be, or is not intended to be, re-created by a receiver. For example, deleting portions of data, substituting portions of data, and inserting additional data are ways of modifying data that is not considered transposing, as used herein.

As used herein, the phrase “secret data” refers to data that enables an SSL handshake between two devices and that is not typically intended as destined for a third device other than as described as part of the present invention. Secret data includes a master secret and a pre-master secret as described in RFC 2246, referenced above.

As used herein, the term randomly generated data, or random data includes pseudo-randomly generated data. Random data (or pseudo-random data) may be generated using any of a variety of mechanisms. For example, the random data may be generated using a variety of pseudo-random number generators, a hardware source, including a hardware source based on thermal noise, or the like.

As used herein, the term “payload” refers to data included within a network packet, and distinct from a network packet header of the network packet.

Briefly stated, the present invention is directed towards enabling access by a third-party to a payload sent over an SSL connection between a client and a server. In one embodiment, the SSL connection may be established between the client and a traffic management device (TMD) that operates on behalf of a plurality of servers. In one embodiment, the third-party may be a proxy interposed between a client and the server (or TMD). SSL handshake messages are sent between the client and the server (or TMD) to establish the SSL connection. As the SSL handshake messages are forwarded through the proxy, the proxy may extract data from at least one of the SSL handshake messages. In addition, one of the client or the server (or TMD) may send another message directly for use by the proxy. In one embodiment, the other message may be an SSL handshake record, or an SSL alert message. Within the other message may be secret data that the proxy may use to generate a session key for the SSL connection. In one embodiment, the secret data may be sent out-of-band of an SSL connection associated with the SSL handshake message. In one embodiment, the other message, which includes the secret data, may be received before a FINISHED message is received and/or after a CHANGE-CIPHER-SPEC message. With the session key, the proxy may receive SSL messages over the SSL connection, modify and/or transpose the payload within the received SSL messages, and/or terminate the SSL connection at the proxy.

Illustrative Operating Environment

FIG. 1illustrates one embodiment of an environment in which the invention may operate. However, not all of these components may be required to practice the invention, and variations in the arrangement and type of the components may be made without departing from the spirit or scope of the invention.

As shown in the figure, system100includes client devices102-103, networks120-121, proxy104, secure tunnel106, traffic management device (TMD)105, and server devices108-109. Although not illustrated, another network may be interposed between proxy104and TMD105.

Generally, client devices102-103may include virtually any computing device capable of connecting to another computing device to send and receive information, including web requests for information from a server device, and the like. The set of such devices may include devices that typically connect using a wired communications medium such as personal computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, and the like. The set of such devices may also include devices that typically connect using a wireless communications medium such as cell phones, smart phones, radio frequency (RF) devices, infrared (IR) devices, integrated devices combining one or more of the preceding devices, or virtually any mobile device. Similarly, client devices102-103may be any device that is capable of connecting using a wired or wireless communication medium such as a PDA, POCKET PC, wearable computer, and any other device that is equipped to communicate over a wired and/or wireless communication medium.

Client devices102-103may further include a client application that is configured to manage various actions. Moreover, client devices102-103may also include a web browser application that is configured to enable an end-user to interact with other devices and applications over network120.

Client devices102-103may communicate with network120employing a variety of network interfaces and associated communication protocols. Client device102may, for example, use various dial-up mechanisms with a Serial Line IP (SLIP) protocol, Point-to-Point Protocol (PPP), and the like. As such, client devices102-103may transfer data at a low transfer rate, with potentially high latencies. For example, client devices102-103may transfer data at about 14.4 to about 46 kbps, or potentially more. In another embodiment, client devices102-103may employ a higher-speed cable, Digital Subscriber Line (DSL) modem, Integrated Services Digital Network (ISDN) interface, ISDN terminal adapter, or the like. As such, client devices102-103may be considered to transfer data using a high bandwidth interface varying from about 32 Kbps to over about 622 Mbps, although such rates are highly variable, and may change with technology.

Network120is configured to couple client devices102-103, with other network devices, such as proxy104, or the like. In one embodiment, network120may enable SSL connections between client devices102-103and proxy104. Network121is configured to couple server device devices108-109, with other network devices, such as TMD105, or the like. Networks120-121are enabled to employ any form of computer readable media for communicating information from one electronic device to another. In one embodiment, networks120-121may include the Internet, and may include local area networks (LANs), wide area networks (WANs), direct connections, such as through a universal serial bus (USB) port, other forms of computer-readable media, or any combination thereof. On an interconnected set of LANs, including those based on differing architectures and protocols, a router may act as a link between LANs, to enable messages to be sent from one to another. Also, communication links within LANs typically include twisted wire pair or coaxial cable, while communication links between networks may utilize analog telephone lines, full or fractional dedicated digital lines including T1, T2, T3, and T4, Integrated Services Digital Networks (ISDNs), Digital Subscriber Lines (DSLs), wireless links including satellite links, or other communications links known to those skilled in the art.

Networks120-121may further employ a plurality of wireless access technologies including, but not limited to, 2nd (2G), 3rd (3G) generation radio access for cellular systems, Wireless-LAN, Wireless Router (WR) mesh, and the like. Access technologies such as 2G, 3G, and future access networks may enable wide area coverage for network devices, such as client devices102-103, or the like, with various degrees of mobility. For example, networks120-121may enable a radio connection through a radio network access such as Global System for Mobil communication (GSM), General Packet Radio Services (GPRS), Enhanced Data GSM Environment (EDGE), Wideband Code Division Multiple Access (WCDMA), and the like.

Furthermore, remote computers and other related electronic devices could be remotely connected to either LANs or WANs via a modem and temporary telephone link. In essence, networks120-121include any communication method by which information may travel between one network device and another network device.

Additionally, networks120-121may include communication media that typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave, data signal, or other transport mechanism and includes any information delivery media. The terms “modulated data signal,” and “carrier-wave signal” includes a signal that has one or more of its characteristics set or changed in such a manner as to encode information, instructions, data, and the like, in the signal. By way of example, communication media includes wired media such as, but not limited to, twisted pair, coaxial cable, fiber optics, wave guides, and other wired media and wireless media such as, but not limited to, acoustic, RF, infrared, and other wireless media. As mentioned above, in one embodiment, another network (not shown) may reside between proxy104and TMD105. This other network may operate substantially similar to networks102-121to enable communications between networked devices.

Secure tunnel106includes any tunnel for communicating information between network devices. As used herein, a “tunnel” or “tunneled connection” is a network mechanism that provides for the encapsulation of network packets or frames at a same or lower layer protocol of the Open Systems Interconnection (OSI) network stack. Tunneling may be employed to take packets or frames from one network system and place (or encapsulate) them inside of frames from another network system. Examples of tunneling protocols include, but are not limited to IP tunneling, Layer 2 Tunneling Protocol (L2TP), Layer 2 Forwarding (L2F), VPNs, IP SECurity (IPSec), Point-to-Point Tunneling Protocol (PPTP), GRE, MBone, and SSL/TLS. As shown, data is tunneled between proxy104and TMD105over secure tunnel106.

One embodiment of a network device that could be used as proxy104is described in more detail below in conjunction withFIG. 2. Briefly, however, proxy104includes virtually any network device that receives and forwards, or relays, network traffic between two or more network devices. Typically, proxy104operates on behalf of the two or more network devices. In one embodiment, proxy104may reside within a branch office security perimeter (not shown), or the like. In one embodiment, proxy104may passively forward data from a source to a destination. For example, proxy104may forward one or more SSL handshake messages between one of the client devices to TMD105. The SSL handshake messages may be used to establish an SSL connection between the client device and TMD105.

As described in more detail below, proxy104may receive data that enables it to perform various additional actions on SSL messages sent over the SSL connection between one of the client devices and TMD105. For example, proxy104may be enabled to read, modify, and/or transpose data within an SSL message. In another embodiment, proxy104may also be enabled to terminate the SSL connection from one of the client devices. In one embodiment, proxy104may perform inspection, WAN optimizations, or the like on data obtained from the terminated connection. For example, proxy104may receive an encrypted payload within an SSL message from one of the client devices, the SSL message payload being intended for one of the server devices (108-109). Proxy104may receive the SSL message, extract the payload, and perform various actions on the decrypted payload, including, compressing it, collating it, encoding it, or the like. In one embodiment, proxy104may then tunnel the payload over secure tunnel106to TMD105. In one embodiment, multiple streams of data from a plurality of clients, such as client devices102-103may be collated into one stream of data by proxy104to be tunneled over secure tunnel106.

Devices that may operate as proxy104include, but are not limited to, personal computers, desktop computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, servers, routers, bridges, firewalls, gateways, network appliances, or the like.

TMD105includes virtually any network device that manages network traffic. Such devices include, for example, routers, proxies, firewalls, load balancers, cache devices, application accelerators, devices that perform network address translation, any combination of the preceding devices, or the like. TMD105may control, for example, the flow of data packets delivered to or forwarded from an array of server device devices, such as server devices108-109. In one embodiment, messages sent between the TMD105and the server devices108-109may be over a secure channel, such as an SSL connection.

TMD105may direct a request for a resource to a particular server device based on network traffic, network topology, capacity of a server device, content requested, and a host of other traffic distribution mechanisms. TMD105may receive data packets from and transmit data packets to the Internet, an intranet, or a local area network accessible through another network. TMD105may recognize packets that are part of the same communication, flow, and/or stream and may perform special processing on such packets, such as directing them to the same server device so that state information is maintained. TMD105also may support a wide variety of network applications such as Web browsing, email, telephony, streaming multimedia and other traffic that is sent in packets. The BIG-IP® family of traffic managers, by F5 Networks of Seattle, Wash., are examples of TMDs. In one embodiment, TMDs106may be integrated with one or more of server devices108-109, and provide content or services in addition to the TMD functions described herein.

TMD105may receive requests from client devices102-103, through proxy104. TMD105may select a server device from server devices108-109to forward the request. TMD105may employ any of a variety of criteria and mechanisms to select the server device, including those mentioned above, load balancing mechanisms, and the like. TMD105may receive a response to the request and forward the response to client devices102-103.

TMD105may be implemented using one or more personal computers, server devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, radio frequency (RF) devices, infrared (IR) devices, integrated devices combining one or more of the preceding devices, and the like. Such devices may be implemented solely in hardware or in hardware and software. For example, such devices may include some application specific integrated circuits (ASICs) coupled to one or more microprocessors. The ASICs may be used to provide a high-speed switch fabric while the microprocessors may perform higher layer processing of packets.

In one embodiment, TMD105may perform an SSL handshake with one of client devices102-103. For example, TMD105may send to one of client devices102-103, SSL handshake messages through proxy104. In one embodiment, TMD105may use specialized hardware to perform SSL processing. In one embodiment, authentication and authorization of client devices102-103may be centralized within TMD105.

In one embodiment, TMD105may reside within a head office security perimeter (not shown), or the like. In one embodiment, private keys for processing an SSL protocol may be centralized inside of the head office security perimeter, a Federal Information Processing Standard (FIPs) boundary, or the like. TMD105may be enabled to access the private keys, or the like, through a variety of mechanisms. In one embodiment, a client certificate validation is centralized inside of the head office security perimeter, at TMD105, or the like.

Server devices108-109may include any computing device capable of communicating packets to another network device. Each packet may convey a piece of information. A packet may be sent for handshaking, i.e., to establish a connection or to acknowledge receipt of data. The packet may include information such as a request, a response, or the like. Generally, packets received by server devices108-109will be formatted according to TCP/IP, but they could also be formatted using another transport protocol, such as SCTP, X.25, NetBEUI, IPX/SPX, token ring, similar IPv4/6 protocols, and the like. Moreover, the packets may be communicated between server devices108-109, TMD105, and client device102employing HTTP, HTTPS, or any of a variety of protocols.

In one embodiment, server devices108-109are configured to operate as a website server. However, server devices108-109are not limited to web server devices, and may also operate a messaging server, a File Transfer Protocol (FTP) server, a database server, content server, and the like. Additionally, each of server devices108-109may be configured to perform a different operation. Thus, for example, back-end server device108may be configured as a messaging server, while back-end server device109is configured as a database server. Moreover, while server devices108-109may operate as other than a website, they may still be enabled to receive an HTTP communication, as well as a variety of other communication protocols

Devices that may operate as server devices108-109include personal computers, desktop computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, server devices, and the like.

It is further noted that terms such as client and server device may refer to functions within a device. As such, virtually any device may be configured to operate as a client device, a server device, or even include both a client and a server device function. Furthermore, where two or more peers are employed, any one of them may be designated as a client or as a server, and be configured to confirm to the teachings of the present invention. Thus, the invention is not to be construed as being constrained to a client/server architecture.

Illustrative Network Device

FIG. 2shows one embodiment of a network device, according to one embodiment of the invention. Network device200may include many more or less components than those shown. The components shown, however, are sufficient to disclose an illustrative embodiment for practicing the invention. Network device200may represent, for example, proxy104ofFIG. 1.

Network device200includes processing unit212, video display adapter214, and a mass memory, all in communication with each other via bus222. The mass memory generally includes RAM216, ROM232, and one or more permanent mass storage devices, such as hard disk drive228, tape drive, optical drive, and/or floppy disk drive. The mass memory stores operating system220for controlling the operation of network device200. Network device200also includes applications250, proxy manager (PM)252, and SSL engine254.

As illustrated inFIG. 2, network device200also can communicate with the Internet, or some other communications network via network interface unit210, which is constructed for use with various communication protocols including the TCP/IP protocol. Network interface unit210is sometimes known as a transceiver, transceiving device, or network interface card (NIC).

The mass memory also stores program code and data. One or more applications250are loaded into mass memory and run on operating system220. Examples of application programs may include email programs, routing programs, schedulers, calendars, database programs, word processing programs, HTTP programs, traffic management programs, security programs, and so forth.

Network device200may also include an SMTP handler application for transmitting and receiving e-mail, an HTTP handler application for receiving and handing HTTP requests, and an HTTPS handler application for handling secure connections. The HTTPS handler application may initiate communication with an external application in a secure fashion. Moreover, network device200may further include applications that support virtually any secure connection, including TLS, TTLS, EAP, SSL, IPSec, and the like. Such applications may include, for example, SSL engine254.

SSL engine254may be enabled to perform SSL processing, including managing an SSL handshake, managing keys, certificates, client authentication, client authorization, or the like. Moreover, SSL engine254is further enabled to establish SSL sessions and/or connections, terminate SSL sessions and/or connections, or the like. Additionally, network device200may include applications that support a variety of tunneling mechanisms, such as VPN, PPP, L2TP, and so forth.

Network device200may also include input/output interface224for communicating with external devices, such as a mouse, keyboard, scanner, or other input devices not shown inFIG. 2. Likewise, network device200may further include additional mass storage facilities such as CD-ROM/DVD-ROM drive226and hard disk drive228. Hard disk drive228may be utilized to store, among other things, application programs, databases, and the like.

In one embodiment, the network device200includes at least one Application Specific Integrated Circuit (ASIC) chip (not shown) coupled to bus222. The ASIC chip can include logic that performs some of the actions of network device200. For example, in one embodiment, the ASIC chip can perform a number of packet processing functions for incoming and/or outgoing packets. In one embodiment, the ASIC chip can perform at least a portion of the logic to enable the operation of Proxy Manager (PM)252and/or SSL engine254.

In one embodiment, network device200can further include one or more field-programmable gate arrays (FPGA) (not shown), instead of, or in addition to, the ASIC chip. A number of functions of the network device can be performed by the ASIC chip, the FPGA, by CPU212with instructions stored in memory, or by any combination of the ASIC chip, FPGA, and CPU.

PM252is configured to relay network traffic between two or more network devices. In one embodiment, PM252is enabled to perform the operations described in more detail below in conjunction withFIGS. 3-4. PM252may further monitor messages it receives, and/or forwards. In one embodiment, PM252may extract information from a received message, such as an SSL handshake message. The extracted information may include data, such as data that is randomly generated by a sender, or the like, and provided within the SSL handshake message for use in establishing an SSL session.

PM252may also receive from a network device, such as a client device, or a server device associated with the SSL session, other information, including secret data associated with the SSL session. PM252may employ the extracted data and the secret data to generate a session key associated with the SSL session. In one embodiment, PM252may provide the data to SSL engine254, which in turn generates the session key. In any event, PM252may then employ the session key to perform actions on SSL messages sent over the SSL session. For example, PM252may perform SSL decryption and re-encryption utilizing the session key. In one embodiment, PM252may also perform inspection, network optimizations, or the like on data obtained over the SSL session. PM252may also obtain data from the SSL session and provide the data to another device. For example, PM252may tunnel the data to the other device by using any of the available applications that support a variety of tunneling mechanisms.

Generalized Operation

The operation of certain aspects of the invention will now be described with respect toFIGS. 3-5.FIG. 3illustrates a logical flow diagram generally showing one embodiment of a process for receiving at a proxy, secret data associated with an SSL session. Process300ofFIG. 3may be implemented, for example, within proxy104ofFIG. 1.

Process300begins, after a start block, at block302, where an SSL session is established between a client device (connection initiator) and a server device (connection respondent). In one embodiment, the server device may be a TMD. In one embodiment, a proxy, interposed between the client device and the server device, may forward SSL handshake messages between the client device and the server device to enable the SSL session to be established. The client device and server device may provide SSL handshake messages such as those described above.

Processing continues next to block304where secret data associated with the SSL session is received at the proxy. In one embodiment, block304may occur concurrently with block302, or even before block302. In one embodiment, the secret data may include a master secret, a pre-master secret, the session key, or the like, associated with the SSL session. In one embodiment, other data received from the forwarded SSL handshake message may also be extracted including the client's and/or server's randomly generated data. In one embodiment, the secret data may be encrypted. For example, the secret data may be encrypted with a cryptographic key that the proxy and a sender of the key share, with the proxy's public key, or the like.

In one embodiment, the secret data may be sent from the client device, the server device, the TMD, or the like. In one embodiment, the secret data, including a master secret and/or pre-master secret, may be received at the proxy within the SSL handshake protocol. For example, a SSL handshake message, which includes the master secret, may be received before a FINISHED message is received and/or after a CHANGE-CIPHER-SPEC message. This SSL handshake message (e.g. record) may be of a new SSL handshake type not defined within the SSL handshake protocol as described in RFC 2246, may be an SSL alert, or the like. In an alternate embodiment, the secret data may be sent out-of-band of the SSL handshake protocol, SSL session, or the like. Processing then continues to block306.

At block306, the proxy may generate a session key associated with the SSL session, based at least in part on the secret data and the other data. The session key may be used for symmetric encryption/decryption of data over the SSL session.

In one embodiment (not shown), other SSL handshake messages may be forwarded by the proxy, thereby completing the SSL handshake between the client device and the server device. For example, the proxy may forward a FINISHED message from the server device to the client device. In any event, processing then returns to a calling process for further processing.

FIG. 4illustrates a logical flow diagram generally showing one embodiment of a process for employing secret data to access an SSL message at a proxy. Process400ofFIG. 4may be implemented, for example, within proxy104ofFIG. 1.

Process400begins, after a start block, at block402, where secret data associated with an SSL session is received at a proxy and a session key is generated. In one embodiment, the operations of block402correspond substantially to process300ofFIG. 3. For example, an SSL session is established between a client device and a server device, the secret data is received at the proxy, and the secret data is employed by the proxy to generate a session key. Processing next continues to block404.

At block404, the session key is employed by the proxy to access an SSL message over the SSL connection. In one embodiment, the SSL message's payload may be decrypted using the session key. The proxy may then inspect the decrypted payload and perform actions based, at least in part, on the payload. For example, the payload may be utilized to make a traffic management decision. The payload may also be scanned, logged, audited, or the like.

In one embodiment, the proxy may decrypt, modify, transpose, and/or re-encrypt the payload for further processing. In one embodiment, the SSL message may be received by the proxy over the SSL session and a payload within the SSL message may be decrypted using at least the session key. In one embodiment, the decrypted payload may be modified, and then the modified payload may be encrypted using the session key. The encrypted modified payload may then be provided over the SSL connection as another SSL message.

In one embodiment, at least a portion of the decrypted payload may be transposed and provided over the SSL connection within another SSL message. For example, the decrypted payload within the SSL message may be transposed by being compressed, for later de-compression at the TMD, at a server, or the like.

In one embodiment, the proxy may also terminate the established SSL session at the proxy to access the SSL message. In other words, the proxy may be established as an endpoint for the SSL session. Termination of the SSL connection may result, for example, in the SSL session being established between the client device and the proxy. Such termination may employ the same session key as the prior SSL session between the client and the TMD, in one embodiment. For example, the proxy may decrypt an SSL message received from the client device over the terminated SSL connection. The proxy may then perform an action on the received payload, and then select to send another payload, a transposed payload, or modified payload to the TMD. In one embodiment, the proxy may use a similar SSL connection between the proxy and the TMD. In another embodiment, the proxy may elect to employ a different channel, such as secured channel106to send the payload to the TMD. Processing next continues to block408.

At block408, the accessed SSL message may be tunneled between the proxy and the server device. In one embodiment, data within the SSL message may be decrypted. In one embodiment, the proxy may perform an inspection, a network optimization, or the like, based, in part, on the decrypted data. For example, the data from the SSL message may be compressed, collated, encoded, re-encrypted, or the like. In one embodiment, the re-encrypted data may be sent over a secure tunnel, or the like. Processing next continues to decision block410.

At decision block410, it is determined whether an SSL re-handshake request message is received. In one embodiment, the re-handshake message is received at the proxy. The SSL re-handshake request message may include a CLIENT-HELLO message and/or a HELLO-REQUEST message. In one embodiment, the client device may initiate the SSL re-handshake protocol by sending the CLIENT-HELLO. In one embodiment, the server device and/or the TMD may initiate the SSL re-handshake protocol by sending the HELLO-REQUEST message. If the SSL re-handshake request message is received, then processing continues to decision block412. Otherwise, processing returns to a calling process for further processing.

At decision block412, it is determined if the SSL session ID associated with the SSL connection is to be reused. For example, the CLIENT-HELLO message may include a session ID associated with the SSL session to indicate that the current SSL session is to be re-used. If the SSL session ID is to be re-used, then processing continues to block414. Otherwise, processing loops back to block402where the proxy continues forwarding other SSL handshake messages between the client device and the server device. In one embodiment, the other forwarded SSL handshake messages may enable the server device to perform the SSL re-handshake protocol with the client device.

At block414, another SSL connection and another session key is established between the client device and the server device based on the secret data. In one embodiment, the proxy may perform the SSL re-handshake protocol with the client device. In this embodiment, the proxy may generate the other session key based on the secret data obtained from a prior SSL connection. The proxy may further utilize the other session key to establish the other SSL connection. Thus, at block414, if an SSL session is to be re-used between the client device and the server device, the secret data from the prior SSL connection is used to establish the other SSL connection between the client device and the proxy. Processing then loops back to block404for further processing.

FIG. 5illustrates a logical flow diagram generally showing one embodiment of a process for sending from a TMD to a proxy, secret data for use in accessing data sent over the SSL connection. Process500ofFIG. 5may be implemented, for example, within TMD105ofFIG. 1.

Process500begins, after a start block, at block502, where the TMD sends and receives SSL handshake messages to establish the SSL connection with a client device. In one embodiment, the SSL handshake messages may include a CLIENT-HELLO, SERVER-HELLO, SERVER-CERTIFICATE, SERVER-HELLO-DONE, CLIENT-KEY-EXCHANGE, CHANGE-CIPHER-SPEC, FINISHED, or the like. Based at least on the SSL handshake messages, the TMD may establish the SSL connection with the client device by generating at least a session key that may be utilized to encrypt/decrypt data sent over the SSL connection. Processing then continues to block504.

At block504, the TMD may send to a proxy, secret data associated with the SSL connection. In one embodiment, block504may occur concurrently with block502. In one embodiment, the TMD may generate the secret data, based at least in part on the received SSL handshake messages. For example, the TMD may receive a pre-master secret from the client device through a CLIENT-KEY-EXCHANGE message. In one embodiment, the TMD may send the pre-master secret as the secret data. In one embodiment, the TMD generates a master secret from the pre-master secret and the client's and/or TMD's randomly generated data. In one embodiment, the TMD may send the master secret as the secret data. In one embodiment, the TMD generates the session key, in part, from the master secret and may send the session key as the secret data. In one embodiment, the secret data may be sent within another SSL message (e.g. record), an SSL alert, or the like. Processing then returns to a calling process for further processing.

It will be understood that each block of a flowchart illustration need not be limited in the ordering shown in the illustration, and may be performed in any ordering, or even performed concurrently, without departing from the spirit of the invention. It will also be understood that each block of the flowchart illustration, and combinations of blocks in the flowchart illustration, can be implemented by computer program instructions. These program instructions may be provided to a processor to produce a machine, such that the instructions, which execute on the processor, create means for implementing the actions specified in the flowchart block or blocks. The computer program instructions may be executed by a processor to cause a series of operational steps to be performed by the processor to produce a computer implemented process such that the instructions, which execute on the processor to provide steps for implementing the actions specified in the flowchart block or blocks.

Generalized Signal Flow

FIG. 6illustrates a signal flow diagram generally showing one embodiment of a signal flow for performing an SSL handshake to establish an SSL connection, where a proxy is enabled to access data within an SSL message over the SSL connection. Signal flow600ofFIG. 6may operate between a client, such as client devices102-103, proxy104, secure tunnel106, traffic management device (TMD)105, and server devices108-109ofFIG. 1.

Signal flow600begins, at time602where a client initiates an SSL handshake by sending a CLIENT-HELLO message to the TMD. At time604, the proxy forwards the CLIENT-HELLO to the TMD. At time505, the TMD receives the CLIENT-HELLO and begins a server-side SSL processing based on the received SSL handshake message.

At times608,610, and612, the TMD and the client sends, through the proxy, additional SSL handshake messages to establish an SSL connection, such as described above. The proxy may also forward such SSL handshake messages between the client and the TMD at time610. The SSL handshake messages may include a SERVER-HELLO, SERVER-CERTIFICATE, SERVER-HELLO-DONE, CLIENT-KEY-EXCHANGE, CHANGE-CIPHER-SPEC, FINISHED, or the like.

While relaying the SSL handshake messages between the client and the TMD, the proxy may extract data from one or more of the SSL handshake messages. In one embodiment, the extracted data may include data randomly generated by the client, and/or the TMD.

At time614, the TMD may generate secret data based at least on the received SSL handshake messages. The TMD may encrypt the secret data and send the secret data to the proxy for use by the proxy. Such secret data may include a master secret or a pre-master secret associated with the SSL connection. At time616, the proxy may receive the secret data, store and/or decrypt the secret data for further processing. Moreover, the secret data may be received in an SSL handshake record, an SSL alert message, or even a message sent out-of-band of an SSL protocol associated with the SSL connection.

At time618, the TMD may send an SSL handshake message, such as the FINISHED message, to indicate that the SSL connection is established. The proxy forwards this SSL handshake message to the client at time620. At time622, the client receives the SSL handshake message and establishes its SSL connection with the TMD.

At time624, the client may send an SSL message over the established SSL connection to the TMD. The SSL message may be encrypted by the client's session key. At time626, the proxy receives the SSL message and accesses the payload based on at least the secret data it received from the TMD. At time626, the proxy may decrypt the payload within the SSL message and may tunnel the payload to the TMD. At time628, the TMD may receive the tunneled payload and may forward (e.g. load balance) the payload to the server. At time630, the server receives the decrypted SSL message. In one embodiment, while the TMD has established an SSL session with the server, the SSL message payload need not be decrypted.

As shown, signal flows at times624,626,628, and630are bi-directional. Thus, at time630, the server may send data to the TMD. At time628, the data is received and tunneled to the proxy. At time626, the proxy may encrypt the data to be sent over the SSL connection based at least on the secret data. At time624, the client receives the data.

Illustrative Embodiment

Another illustrative embodiment will be described with reference toFIGS. 7-8.FIG. 7shows a functional block diagram illustrating an environment including third-parties enabled to participate in a multi-way SSL connection. System700ofFIG. 7includes components substantially similar to system100ofFIG. 1. For example client devices102-103, network120-121, proxy104, secure tunnel106, traffic management device (TMD)105, and server devices108-109operate substantially similar to the corresponding components of system100.

Additionally, system700includes third-party devices702-703. As shown, third-party device702is in communication with proxy104and third-party device703is in communication with TMD105. In one embodiment, third-party devices702-703may be in communication with proxy104and TMD105, respectively, over SSL connections. Third-party devices702-703may include virtually any computing device capable of connecting to another computing device to send and receive information, including web requests for information from a server, or the like, over an SSL connection.

FIG. 8illustrates a logical flow diagram generally showing one embodiment of a process for managing a multi-way SSL communication with a third-party. Process800ofFIG. 8may be implemented, for example, within proxy104, and/or TMD105, ofFIG. 7.

Process800begins, after a start block, at block802, where secret data associated with an SSL connection is received at a proxy and a session key is generated. In one embodiment, the operations of block802correspond substantially to process300ofFIG. 3. For example, an SSL connection is established between the client device and the server device; the secret data is received at the proxy; and the secret data is employed to generate a session key. Processing next continues to block804.

At block804, the proxy may send to a third-party, secret data to establish a third-party SSL connection between the proxy and the third-party. In one embodiment, the third-party may be a TMD, a server device, or another device. In one embodiment, the proxy may also send other information, such as the client's and the server's (or the TMD's) randomly generated data, to establish the third-party SSL connection. In one embodiment, the secret data may be encrypted based on a trust relationship between the proxy and the third-party. In one embodiment, data sent over the third-party SSL connection may be encrypted and/or decrypted based at least on the secret data. Processing then continues to block806.

At block806, the proxy may establish a permission for the third-party to access data communicated over the third-party SSL connection. The permission may grant the third-party full access to read, write, and/or modify the data. The permission may limit the third-party to only read data, to access data from a particular source, to access a portion of the data, or the like. Processing then continues to block808.

At block808, the proxy may also forward data between the client device, the server device, and the third-party, over the SSL connections. For example, data may be forwarded over an SSL connection between the client, an SSL connection with the TMD, the third-party SSL connection, or the like. In one embodiment, data sent between the client device and the server device may be encrypted based at least on the secret data and forwarded to the third-party. The SSL connection with the third-party may be terminated at the third-party based at least in part on the secret data. Processing then returns to a calling process for further processing.