The invention relates to the constant and dynamic distribution of symmetric keys from a dedicated key distribution server to clients across the Internet.
The World Wide Web is fundamentally a client/server application running over the Internet. Security threats in the Internet have been increasing exponentially over the years. One way to classify the various security threats is in terms of location of the threat: web server, client web browser, and the traffic between the client web browser and the server. Considering the traffic between the client and the server, it is easy to deploy Internet Engineering Task Force (IETF) Internet Protocol Security (IPSec) and TLS (Transport Layer Security)-based network security protocols which depend on negotiating session keys between clients and servers using expensive asymmetric key cryptography (e.g. Diffie-Hellman). The servers have to keep track of tens of thousands of transient symmetric keys negotiated on a per-session basis. The result is that memory fetches for security associations for performing the cryptographic operations for these protocols in hardware becomes prohibitively expensive due to the amount of state that must be maintained (not to mention the costs of key negotiation).
The present invention is illustrated by way of example and is not limited by the drawings, in which like references indicate similar elements, and in which:
Embodiments of a method, device, and system to distribute symmetric keys from a server to clients across the Internet are described. In the following description, numerous specific details are set forth. However, it is understood that embodiments may be practiced without these specific details. In other instances, well-known elements, specifications, and protocols have not been discussed in detail in order to avoid obscuring the present invention.
In different embodiments, the client may be a desktop computer, a laptop computer, a mobile wireless device, a cellular phone, a set top box for a television, or any other type of computing device that has the capability of connecting to the Internet. The client's connection to the Internet may be through mechanisms such as routers, switches, access points, among other devices that connect individual devices to the Internet.
In different embodiments, the domain may be a domain for a business, a scientific institution, a university, a government office, an individual person's network, among others. The domain consists of one or more computer system servers that perform a number of functions which allow information to pass between the computers and users within the domain and the Internet. Each domain has a domain name that maps to a specific IP address.
The client may request access to the domain 102 for services. In many embodiments, an application server 106 located within the domain provides one or more of these services that the client 100 desires (e.g. information storage service, news retrieval service, email service, etc.)
In many embodiments, the domain 102 has a firewall 108. The firewall 108 is a form of security that attempts to prevent malicious users and programs from entering the domain from the Internet 104. The firewall 108 may be a separate server (shown) or it may be part of one of the other servers in
The domain also includes a DHCP (dynamic host configuration protocol) server 110. Presuming the client 100 is DHCP-configured, when the client 100 connects to the domain 102, the DHCP client program in the client 100 sends a broadcast query requesting necessary information from the DHCP server 110. The DHCP server 110 manages a pool of IP addresses and information about client configuration parameters such as the domain name, the default gateway, among others. Additionally, the DHCP server 110 has information about the presence and address of a DNS (domain name system) server 112 located in the domain 102. Upon receipt of a valid request from the client 100, the DHCP server 110 will assign the client 100 an IP address and other parameters.
The client 100, now configured with an IP address received from the DHCP server 110 and the address of the DNS server 112, can now interact with the DNS server 112. The DNS server 112 provides IP addresses of servers and other devices within the domain 102.
Returning to the application server 106, one or more processors 114 are present on the application server 106. In different embodiments, each of these processors may be single or multi-core. Thus, in some embodiments the application server is a multi-processor, multi-core server and in other embodiments, the application server is a single-processor, single-core server, and in yet other embodiments, the application server is some derivative of a combination of the above described single/multi-processor, single/multi-core systems. In further embodiments, there may be more than one application server present for additional services or the same service may be distributed among multiple application servers to balance the client load. Many of the above described processor and server configurations are not shown in
Furthermore, the application server 106 also includes system memory 116 to store current instantiations of one or more operating systems, such as operating system (OS) 118. In normal operations, the processor 114 in application server 106 may service a number of requests from clients on the Internet 104, such as client 100. After going through the routing procedures with the DHCP server 110 and the DNS server 112, the client normally interacts with the application server 106 to gain access to the application server's services.
Although, in many embodiments, the application server 106 may have one or more health policies it requires of any client it interacts with. For example, there may be a minimum required health level that a client must surpass before it is granted access to interact with the application server 106. These health levels may be predetermined or determined dynamically depending on the environment. If the health level is not met by a client, a network interface controller (NIC) 120 may drop packets from that client. The NIC 120 is a hardware interface that handles and allows the application server 106 access to the internal computer network within the domain.
To securely determine the client health, in many embodiments, an Intel® Active Management Technology (AMT) device 122 or another independent security measurement device that performs similarly to the AMT is present within the client 100. In some embodiments, the AMT 122 may measure the health of the client system. This measurement may include information such as the software installed on the client, the operating system installed on the client, the version of anti virus software installed on the client, and how recent and how many attacks has the client system handled among other items of information. Logic within the AMT 122 may gather this information, or logic elsewhere within the client 100 may gather the health information and the AMT 122 may verify the authenticity of the health information. Once this health information is gathered, AMT 122 may sign the health information with a secure digital certificate. The client 100 may then send the secure health information across the Internet 104 to the domain 102.
In many embodiments, once the client 100 has initially received the IP address of the application server 106, the client 100 requests the health policy requirements from the application server 106 to see what requirements are necessary to interact with the application server 106. In many embodiments, a resolver program running on client 100 looks up the required client health policy on the application server 106. This request may be handled directly by the NIC 120. The NIC 120 may store health policy information associated with the application server 106 it resides within and can service the health policy requests from any client so no initial request load requires direct interaction with the processor 114, memory 116, or OS 118.
In addition to the health policy requirements for clients, the resolver program, after performing a client health policy look up on the application server, may also notify the requesting client that the domain 102 includes a key distribution server (KDS) 124 or multiple KDS's. This information would be obtained by the resolver program during the look up. The KDS 124 is capable of validating the health information received from clients. Once validated, the KDS 124 can provide the client with a client-specific session key for secure interaction with the application server 106. It is presumed that the KDS 124 in domain 102 is trusted by application server 106.
The NIC 120 in the application server may be provided by the KDS 124 with the master key for session key generation. For example, once the KDS 124 has authenticated the health of the client, the KDS can generate a master key for a session between the client 100 and the application server 106. The KDS 124 sends a session key, which is generated from the client ID information and the master key, to the client 100.
In some embodiments, the session key is sent to the client using SSL (Secure Sockets Layer) protocol. In other embodiments, the session key is sent to the client using TLS (Transport Layer Security) protocol. The TLS and SSL protocols allow for private communications across a network in a way designed to prevent eavesdropping, tampering, and message forgery. These protocols provide endpoint authentication and communications privacy over the Internet using cryptography.
The KDS 124 also and sends the master key to the NIC 120 in the application server 106. Using the session key received from KDS 124, the client can now establish an encrypted and authenticated connection with the application server. The client can then send encrypted packets to the application server 106 using an IPSec (Internet Protocol Security) packet format. The IPSec packet header format includes a security parameter index (SPI) field which has the client's ID information.
Once the NIC 120 receives an IPSec packet from the client 100, logic within the NIC 120 verifies the client ID within the SPI, and, using the master key received from the KDS 124, generates the server side of the symmetric key using a key function such as:
session key=∫(master key, client SPI)
Once the NIC 120 version of the session key is generated, the NIC 120 can decrypt the packet from the client 100 and send the decrypted packet to the network software stack within the application server 106 so that the processor 114 and OS 118 can service the packet.
In some embodiments, if the decryption of the packet is not successful, the NIC 120 can drop the packet. This will eliminate any overhead performed by the processor 114 since the processor 114 would never see the packet.
Thus, utilizing the system and a KDS device described above, KDS may perform most, if not all, of the cryptographic key distribution operations, thus removing this significant workload from the application server 106. Additionally, the processor 114 and OS 118 residing on the application server 106 are further removed from decryption work because the NIC 120 is independently capable of decrypting the incoming packets and sending the decrypted packets along to the network stack residing in the application server 106 software.
In many embodiments, there are multiple distributed KDSs in the domain 102. Multiple KDSs may provide benefits such as balancing the load of key distribution to many clients as well as providing added security by distributing the functionality of the KDS so an attack to any one server would not be able to circumvent the key distribution system. Any general distributed server load balancing algorithm may be utilized to balance the load between the multiple KDSs. For example, the resolver program within the client 100, after performing a DNS look up for the KDS by interacting with the DNS server 112, can apply a load balancing algorithm to the returned IP address of the KDS. This may send the client key request to any one of many KDSs present in the domain.
Furthermore, in many embodiments, the NIC 120 may inform the KDS 124 when one or more abnormal situations occur with incoming client packets. The KDS 124 may take appropriate actions regarding one or more clients when it is informed of this abnormal behavior from the NIC 120. For example, the KDS 124 may save a revocation list for keys and/or clients. Thus, if the NIC 120 informs the KDS 124 when it sees packets containing the same client ID but different IP addresses, then the KDS 124 may put the key associated with the client ID into the revocation list and distribute a new key to the client. If the NIC 120 informs the KDS 124 that this new key is again being utilized by multiple clients, the client that requested the key may be put into the revocation list to permanently deny that client further communication with any servers on the network.
In many embodiments, health information the KDS 124 receives from a client might also be piggybacked with other client information, including the client's capabilities and potential roles (i.e. posture information). The KDS 124 may utilize this additional information to decide which servers within the domain 102 the client will be allowed to communicate with. Thus, the KDS 124 may send a set keys used to communicate with this determined set of servers.
The process continues with processing logic within the client requesting the DNS server to lookup the IP address of an application server in the domain (processing block 204). Then processing logic within the DNS server replies with the IP address of the application server (processing block 206). Processing logic within a client resolver program then, using the IP address of the application server, polls the application server to look up the health validation and authentication policy of the application server (processing block 208).
The results of the client resolver policy lookup in the application server are then determined by processing logic (processing block 210). If the application server does not have a policy present, then processing logic within the client proceeds with a regular HTTP request to the application server (processing block 212).
Otherwise, if a health validation/authentication policy is present, then processing logic knows a KDS server is present in the domain. Thus, processing logic in the client requests the IP address of the KDS server from the DNS server (processing block 214). Next, the DNS server responds to the client with the IP address of the KDS server (processing block 216). Processing logic within the client then measures the client health (processing block 218). The health measurement may be done using an AMT device or another such device utilized to verify that the client machine is healthy and not compromised. Processing logic within the client then provides the health information and and potentially other posture information to the KDS server (processing block 220).
Processing logic within the KDS server then performs a validation procedure on the client's measured health information (processing block 222). This validation procedure can be any one of a number of health requirement policies. This would be decided on a server by server basis based on the security level required for client access to the application server in the domain.
At this point, processing logic has determines the health of the client (processing block 224). If the client is deemed not healthy by the KDS server, then the KDS server does not send a session key to the client (processing block 226). Otherwise, if the client is deemed healthy by the KDS server, then the KDS server sends a unique session key (i.e. derivation key) to the client (processing block 228). When the client receives the key, processing logic within the client then proceeds with a secure request to the application server using the unique session key (processing block 230). Finally, processing logic within the application server NIC receives the secure request from the client and decrypts the packet using a session key derived from the client ID and a master key provided from the KDS (processing block 232). Once the packet is decrypted the packet can be sent to the network software stack for further processing within the application server and the process is finished.
Thus, embodiments of a method, device, and system to distribute symmetric keys from a server to clients across the Internet are described. These embodiments have been described with reference to specific exemplary embodiments thereof. It will be evident to persons having the benefit of this disclosure that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the embodiments described herein. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.