Dynamic bypass

Methods and apparatus consistent with the present disclosure may prevent a computer process from failing when a firewall located between a client device and a server identifies that a process at the firewall should be bypassed using fingerprint information associated with a connection attempt. When fingerprint information stored at a firewall matches previously received fingerprint information, the firewall may allow processes typically performed at the firewall to be bypassed, thereby, allowing communications to pass between the client device and the server without inspection. When that fingerprint information does not match previously received fingerprint information, the firewall may perform a process that causes the client device to fail the first connection attempt. Because of this, methods consistent with the present disclosure may allow communications from an application program to be passed through a firewall without relying on an ever growing list of trusted application programs.

CROSS REFERENCE TO RELATED APPLICATIONS

The present disclosure incorporates by reference patent application Ser. No. 14/606,451 filed on Nov. 20, 2007, entitled Dynamic Bypass of TLS Connections Matching Exclusion List in DPI-SSL in a NAT Deployment.

BACKGROUND OF THE INVENTION

Field of Invention

The present disclosure generally relates to a computer that is between a client device and a server selectively identifying not to perform a function on data being transmitted between the client device and the server. More specifically, the present disclosure relates to dynamically preventing a computer process from failing because the computer between the client device and the server cannot decrypt encrypted communications between the server and the client device.

Description of the Related Art

Everyday new application programs (APPS) are released to the computer market that allows various types of client devices to securely access a server. Whether these client devices are a cell phone, a notebook computer, a gaming device, or a desktop computer, a user may install an APP on their computing device that allows them to securely access information at the server. For example, a user may decide to store data in the Cloud using Dropbox™, the user may then access the internet or an application store to download an APP that allows their device to connect to a Dropbox™ server, and the user may then install the application on their computing device. After the application is installed at the user device, the user device and a server operated by Dropbox™ will be aware of a set of special certificates or certificate authorities (CAs) that must be used when a secure communication connection is established between the user device and the Dropbox™ server.

Commonly the initiation of a communication connection between the user device and the server involves a client device sending a TLS hello message to a server. In instances where the client device communicates directly with the server, the server will responds with its own TLS hello message that includes a certificate. The client device may then decrypt the information included in the TLS hello message received from the server. Once the client device has performed this decryption, it may validate the server's certificate as part of the process of initiating a secure session between the client device and the server by comparing a certificate received from the server with one or more certificates stored at the client device. The certificates stored at the client device may be associated with a particular application. For example, a certificate may be associated with a Dropbox™ application that is associated with accessing a Dropbox™ server. In such instances the Dropbox™ application and the client device may only accept communication with server's that can provide a certificate that matches a Dropbox™ associated certificate that is stored at the client device.

In instances where a firewall is disposed between the client device and the server, the firewall will typically be programmed to transparently inspect communications between the server and the client device where the firewall acts as a “man in the middle” without the server or the client device being aware of the presence of the firewall. The firewall, however, may not be able to decrypt encrypted communications between the server and the client device. In such instances, the firewall may represent itself to the client as being the server and may represent itself as being the client to the server. The firewall will attempt to decrypt the communications between the client device and the server and will attempt to setup separate SSL sessions one session with the server and another session with the client device. When the firewall attempts to setup a communication channel between itself and the client device, the firewall will rewrite an SSL certificate received from the server and re-sign that certificate with a different certificate authority (CA) and send that modified certificate to the client device. This in turn may cause the client device to fail an authentication process based on the modified certificate not matching certificates stored at the client device. In such instances, the firewall also may not be able to decrypt communications between the client device and the server. Because of this the initiation of a secure session between the client device and the server may fail when a firewall acts as a “man in the middle” because the firewall cannot provide certificates that can be authorized by the application at the client device. Similar issues can occur when a firewall acts as a “man in the middle” for browser related traffic.

Because of this, the designs of current firewalls are not compatible with browser communication traffic or with application program (APP) traffic between a server and a client device. Since the numbers of commercially available browsers are limited decisions to pass through browser traffic without inspection may be made by checking a short list of allowed browsers. In such instances, any burden provided by passing through browser traffic may be limited to checking that short list of allowed browsers because an exclusion list including every trusted browser in the world would be very small as compared to an exclusion list that attempted to store every trusted APP in the world.

As mentioned above one possible solution to this problem would be to store an exclusion list at the firewall that identifies each and every trusted browser and each and every trusted APP. Then, when a secure session is established between a trusted APP at the client device and the server, the firewall could bypass the inspection of encrypted communications between the server and the trusted APP at the client device based on the APP or browser being listed in the exclusion list. A problem associated with an exclusion list identifying trusted APPS is that the number of APPS available is increasing geometrically every day. As such, there may be thousands of APPS available today, tens of thousands of APPS may be available next year, and millions of APPS may be available in the longer term future. This presets system administrators with significant management issues. Simply keeping up with updating the content of an exclusion list that includes all trusted APPS is a daunting task for a system administrator. Another problem associated with the size of exclusion lists growing geometrically is that additional resources will be required over time to store the exclusion list. A third problem associated with large exclusion lists relates to processors having to spend an ever increasing number of compute cycles parsing such large exclusion lists when identifying whether certain communications should be passed through a firewall. Based on this, the use of an exclusion list that lists every trusted APP may be impractical.

Alternatively, since the numbers of commercially available browsers are limited, decisions to pass through browser traffic without inspection may be made by checking a short list of allowed browsers in an exclusion list. Since the checking of a short list of allowed browsers will not provide a significant burden for a firewall, an exclusion list including every trusted browser in the world could be implemented efficiently because the numbers of commercially available browsers are relatively small.

What are needed are new methods and systems that allow encrypted traffic between an APP at a client device and a server that do not simply rely on an ever expanding exclusion list.

SUMMARY OF THE CLAIMED INVENTION

The presently claimed invention relates to a method, a non-transitory computer readable storage medium, and an apparatus executing functions consistent with the present disclosure for allowing communication traffic to pass through a computing device or firewall, thereby, allowing a computer to access a server via an application program based on bypassing a process that may typically be performed at the computing device or firewall.

A method consistent with the present disclosure includes a first computer that may intercept a transport layer security (TLS) hello message sent from a second computer to a server. The first computer may then generate a first fingerprint from information received from the second computer and send a second TLS hello message to the server that is different from the first TLS message. After information is received from the server, the first computer may then generate a second fingerprint from the information received from the server. The first computer may then identify that the first fingerprint and the second fingerprint correspond to information stored in a data store. Communications between the server and the second computing device may then be allowed to pass through the first computing device based on the fingerprint information stored in the data store. In such instances, a process (such as deep packet inspection process) at the first computing device may be bypassed.

When the method of the present disclosure is implemented as a non-transitory computer readable storage medium, a processor executing instructions out of a memory at a first computer may intercept a TLS hello message from a second computer and generate a first fingerprint from information received from the second computer. The first computer may then send a second TLS hello message to the server that is different from the first TLS message. After information is received from the server, the first computer may then generate a second fingerprint from the information received from the server. The first computer may then identify that the first fingerprint and the second fingerprint correspond to information stored in a data store, and allow communications between the server and the second computing device to be passed through the first computing device, thereby, bypassing a process at the first computing device.

An apparatus consistent with the present disclosure may include one or more network interfaces that receive a TLS message from a computer attempting to initiate a secure connection with a server. A processor executing instructions out of a memory may then generate a first fingerprint from information received from the computer and send via a network interface a second TLS message to the server, where the second TLS message is different from the first TLS message. The processor executing instructions out of the memory may generate a second fingerprint from information received from the server. The processor may then identify that the first fingerprint and the second fingerprint correspond to fingerprint information stored in a data store after which the processor may allow communications between the server and the second computing device to be passed through the first computing device, thereby, bypassing a process typically performed by the processor.

DETAILED DESCRIPTION

The present disclosure relates to a computer that is between a client device and a server that selectively identifies not to perform a function on data being transmitted between the client device and the server. Methods and apparatus consistent with the present disclosure may prevent a computer process from failing. In an instance where a firewall is located between a client device and a server, and when the client device attempts to setup a secure communication with the server, the firewall will attempt to decrypt the communications between the client device and the server and will attempt to setup separate SSL sessions: one session with the server and another session with the client device. When the firewall attempts to setup a communication channel between itself and the client device, the firewall will rewrite an SSL certificate received from the server and re-sign that certificate with a different certificate authority (CA) and send that modified certificate to the client device. This in turn may cause the client device to fail an authentication process based on the modified certificate not matching certificates stored at the client device. In such instances the firewall also may not be able to decrypt communications between the client device and the server. Such failures are caused at least in part because a firewall will typically not pass encrypted communications through without inspection. As such, firewalls today are not compatible with communications between a server and computing devices running applications associated with that server.

FIG. 1illustrates an exemplary set of steps that may be performed by a firewall protecting a computer network. The flowchart ofFIG. 1begins with step105where a firewall may intercept a transport layer security (TLS) hello message sent from a client device targeting a server. The TLS hello message sent from the client device to the server is a first step that may be performed by a client device when the client device wishes to initiate a secure communication connection with the server. Such TLS hello messages may be sent via an internet browser at the client device or be sent from an application program (APP) executing at the client device without using a browser.

After step105, determination step110may identify whether the server is listed in a deny list, where entries in that deny list identify servers that should not be connected to. This may be because those servers are known to be associated with malware or because those servers are not trusted or authorized. When step110identifies that a server is on the deny list, the server may deny the connection in step115. After step115, program flow then intercept another TLS hello message from a client.

When step110identifies that the server that the client device wishes to access is not in a deny list, program flow may move to determination step120that identifies whether the TLS hello message was sent via an internet browser. When the TLS hello message is sent from an internet browser, program flow may move to step125where communications between the server and the client device will be bypassed from an inspection process, this may be based on the browser being identified in an exclusion list. As long as a communication connection between the client device and the server is handled by the browser, communications via the browser between the client device and the server may be passed through the firewall such that data included in those communications are not inspected at the firewall. This allows the server and client device to communicate via the browser without the firewall being able to decrypt encrypted information sent between the server and the client device.

When determination step120identifies that the TLS hello message intercepted in step105was not sent via an internet browser, program flow may flow to step130ofFIG. 1where information received from the client device may be used to generate a first fingerprint. Such a TLS hello message may be sent from the client device when an APP at the client device is commanded to access a server. This first fingerprint may be generated from or include one or more attributes. Such attributes may include information that may be specific to the client device. For example, attribute data from the client device used to generate a signature may identify the client device via a machine (MAC) address, an internet protocol (IP) address, or may user other information received from the client device.

After step130, program flow may move to step135where the firewall may send a different TLS hello message to the server and then in step140, the firewall may receive information from the server. Next, step145ofFIG. 1the firewall may generate a second fingerprint from information received from the server. This second fingerprint may be generated using information that identifies the server (a MAC address or IP address, for example), may include a domain associated with the server, or may include other information or attributes that may be associated with the server. While not included in the steps ofFIG. 1, the first fingerprint and the second fingerprint may be stored at the firewall when generated, be concatenated, be hashed, or be otherwise combined or stored for later use.

After step145, determination step150may identify whether the generated fingerprint information matches fingerprint information that was previously stored at the firewall, when no, program flow may move from step150to step155. Step155may then store fingerprint information. This stored fingerprint information may include the first fingerprint, the second fingerprint, a hash of the first and second fingerprint, or may be some other combination of the first and second fingerprint information.

When the newly generated fingerprints do not correspond to or match fingerprint information previously stored at the firewall, the TLS message from the client device may be related to an APP that has never before attempted to connect to the server via the firewall. Rather than simply passing encrypted communications through the firewall in such instances, the firewall may pass encrypted communications between the server and the client device to an inspection process. Since, in this instance, the firewall will not be able to decrypt these communications, this first connection attempt will fail in step160ofFIG. 1. Furthermore, this process may fail because the client device would not be able to match a certificate received from a firewall with a certificate stored at the client device because the firewall may modify a certificate received from a server before sending it to the client device. After step160, the flow chart ofFIG. 1may then intercept another TLS hello message sent from a client device in step105ofFIG. 1.

When fingerprint information that was generated in steps130and step145corresponds to or matches fingerprint information previously stored at the firewall, program flow will move to step165. Step165ofFIG. 1will cause communications sent between the server and the APP at the client device to be bypassed from inspection. Because of this, a second (and subsequent) attempt(s) to setup a secure communication between that APP at the client device and the server will succeed because the APP at the client device will receive a certificate that matches a trusted certificate stored at the client device. Furthermore, the firewall will no longer attempt to inspect encrypted information associated with that communication connection. After step165, the flow chart ofFIG. 1may then intercept another TLS hello message sent from a client device in step105ofFIG. 1.

The method ofFIG. 1, thus, can deny connection requests to untrusted servers, while allowing second or subsequent connection requests to succeed. Based on this, newly released APPs can be used within a protected network that includes a firewall without the need for each and every APP to be listed in an exclusion list.

FIG. 2illustrates a firewall protecting computing devices within a protected network.FIG. 2includes a client device210communicating with a firewall220within protected network260. The line with the double arrow230between client device210and firewall220indicates that communications are being sent between the client device and the firewall. Note that computing devices270and280are also included in protected network260, note that computing devices270and280are also communicatively coupled to firewall220.

FIG. 2also illustrates communications250being communicated between firewall220and server240. Methods consistent with the present disclosure may be implemented where client device210communicates with firewall220and where firewall220communicates with server240when firewall220implements the method ofFIG. 1. As such, firewall220may exclude communications from inspection without needing to rely on an ever growing exclusion list.

FIG. 3illustrates another topology of computing systems connected in manner consistent with the present disclosure. Here, server340and firewall320are included in protected network360, client device310communicates with firewall320using communications330, and server340may communicate with firewall320using communications350.FIG. 3also includes computing device370and380that may also connect to server340via firewall320. Here again methods consistent with the present disclosure may be implemented where client device310communicates with firewall320and where firewall320communicates with server340when firewall320implements the method ofFIG. 1. As such,FIG. 3illustrates client device310may be attempting to directly access server340that is inside of protected network360.

In yet other instances, both a server and a client device may reside behind their own respective firewall and be contained with a respective protected network. In such instances a first firewall and a second firewall may employ methods of the present disclosure when determining which communications are eligible for bypassing an inspection process at one or both of those firewalls.

FIG. 4illustrates a computing system that may be used to implement an embodiment of the present invention. The computing system400ofFIG. 4includes one or more processors410and main memory420. Main memory420stores, in part, instructions and data for execution by processor410. Main memory420can store the executable code when in operation. The system400ofFIG. 4further includes a mass storage device430, portable storage medium drive(s)440, output devices450, user input devices460, a graphics display470, peripheral devices480, and network interface495.

The components shown inFIG. 4are depicted as being connected via a single bus490. However, the components may be connected through one or more data transport means. For example, processor unit410and main memory420may be connected via a local microprocessor bus, and the mass storage device430, peripheral device(s)480, portable storage device440, and display system470may be connected via one or more input/output (I/O) buses.

Mass storage device430, which may be implemented with a magnetic disk drive or an optical disk drive, is a non-volatile storage device for storing data and instructions for use by processor unit410. Mass storage device430can store the system software for implementing embodiments of the present invention for purposes of loading that software into main memory420.

Portable storage device440operates in conjunction with a portable non-volatile storage medium, such as a FLASH memory, compact disk or Digital video disc, to input and output data and code to and from the computer system400ofFIG. 4. The system software for implementing embodiments of the present invention may be stored on such a portable medium and input to the computer system400via the portable storage device440.

Input devices430provide a portion of a user interface. Input devices460may include an alpha-numeric keypad, such as a keyboard, for inputting alpha-numeric and other information, or a pointing device, such as a mouse, a trackball, stylus, or cursor direction keys. Additionally, the system400as shown inFIG. 4includes output devices450. Examples of suitable output devices include speakers, printers, network interfaces, and monitors.

Display system470may include a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, an electronic ink display, a projector-based display, a holographic display, or another suitable display device. Display system470receives textual and graphical information, and processes the information for output to the display device. The display system470may include multiple-touch touchscreen input capabilities, such as capacitive touch detection, resistive touch detection, surface acoustic wave touch detection, or infrared touch detection. Such touchscreen input capabilities may or may not allow for variable pressure or force detection.

Peripherals480may include any type of computer support device to add additional functionality to the computer system. For example, peripheral device(s)480may include a modem or a router.

Network interface495may include any form of computer interface of a computer, whether that be a wired network or a wireless interface. As such, network interface495may be an Ethernet network interface, a BlueTooth™ wireless interface, an 802.11 interface, or a cellular phone interface.

The components contained in the computer system400ofFIG. 4are those typically found in computer systems that may be suitable for use with embodiments of the present invention and are intended to represent a broad category of such computer components that are well known in the art. Thus, the computer system400ofFIG. 4can be a personal computer, a hand held computing device, a telephone (“smart” or otherwise), a mobile computing device, a workstation, a server (on a server rack or otherwise), a minicomputer, a mainframe computer, a tablet computing device, a wearable device (such as a watch, a ring, a pair of glasses, or another type of jewelry/clothing/accessory), a video game console (portable or otherwise), an e-book reader, a media player device (portable or otherwise), a vehicle-based computer, some combination thereof, or any other computing device. The computer can also include different bus configurations, networked platforms, multi-processor platforms, etc. The computer system400may in some cases be a virtual computer system executed by another computer system. Various operating systems can be used including Unix, Linux, Windows, Macintosh OS, Palm OS, Android, iOS, and other suitable operating systems.

The present invention may be implemented in an application that may be operable using a variety of devices. Non-transitory computer-readable storage media refer to any medium or media that participate in providing instructions to a central processing unit (CPU) for execution. Such media can take many forms, including, but not limited to, non-volatile and volatile media such as optical or magnetic disks and dynamic memory, respectively. Common forms of non-transitory computer-readable media include, for example, a FLASH memory, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM disk, digital video disk (DVD), any other optical medium, RAM, PROM, EPROM, a FLASHEPROM, and any other memory chip or cartridge.

The present invention may be implemented in an application that may be operable using a variety of devices. Non-transitory computer-readable storage media refer to any medium or media that participate in providing instructions to a central processing unit (CPU) for execution. Such media can take many forms, including, but not limited to, non-volatile and volatile media such as optical or magnetic disks and dynamic memory, respectively. Common forms of non-transitory computer-readable media include, for example, a FLASH memory, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM disk, digital video disk (DVD), any other optical medium, RAM, PROM, EPROM, a FLASHEPROM, and any other memory chip or cartridge.

While various flow diagrams provided and described above may show a particular order of operations performed by certain embodiments of the invention, it should be understood that such order is exemplary (e.g., alternative embodiments can perform the operations in a different order, combine certain operations, overlap certain operations, etc.).