| CPC H04L 9/0819 (2013.01) [G06F 13/102 (2013.01); H04L 9/0825 (2013.01); H04L 9/0866 (2013.01); H04L 9/0894 (2013.01); H04L 9/14 (2013.01); H04L 9/3268 (2013.01); H04L 49/901 (2013.01); H04L 63/0428 (2013.01)] | 18 Claims |

|
1. A secure computer system for operating in an environment having an underlay cloud physical network, the environment utilizing an overlay software defined network (SDN), the secure computer system comprising:
a computer including:
a computer processor;
a memory controller coupled to the computer processor;
computer memory coupled to the computer processor and the memory controller;
a computer peripheral device interface coupled to the computer processor and to the computer memory;
a computer encryption engine coupled to the computer memory and the memory controller; and
computer non-transitory storage for programs to execute from computer memory on the computer processor,
wherein the computer processor and the memory controller are configured to provide secure memory areas within the computer memory, encrypted memory areas within the secure memory areas, and session encryption key secure storage for encryption keys used for IPsec communications between a local program and a remote program over a network within the secure memory areas;
wherein the computer processor is configured to execute programs from secure memory areas;
wherein the computer non-transitory storage includes a local program to be executed from a secure memory area, wherein the local program is configured to operate with data stored in an encrypted memory area within the secure memory area, wherein the local program is configured for communicating data contained in the encrypted memory area to a remote computer over a network according to a IPsec protocol; and
a network interface controller (NIC) for connection to the computer and the network, the NIC including:
a NIC peripheral device interface for connection to the computer;
a network interface for connection to the network;
a NIC processor coupled to the NIC peripheral device interface and the network interface;
NIC memory coupled to the NIC processor, the NIC peripheral device interface and the network interface, the NIC memory including:
session encryption key secure storage for encryption keys used for the communications between the local program and the remote program over the network; and
secure buffer storage of holding communication data in transit;
NIC non-transitory storage for programs to execute from the NIC memory on the NIC processor, the NIC non-transitory storage including a NIC IPsec program for use with the communications between the local program and the remote program;
a NIC encryption engine coupled to the NIC peripheral device interface, the network interface, the session encryption key secure storage, and the secure buffer storage to encrypt and decrypt communication packets over the network interface using keys stored in the session encryption key secure storage, wherein the NIC encryption engine is configured to encrypt data packets leaving the NIC through the network interface and decrypt data packets entering the NIC through the network interface; and
an environment SDN domain coupled to the network interface and not coupled to the session encryption key secure storage or the secure buffer storage, the environment SDN domain including:
an environment SDN processor;
environment SDN memory coupled to the environment SDN processor to store a table of packet headers used by the underlay cloud physical network and other underlay cloud physical network information;
environment SDN header hardware to determine underlay cloud physical network headers appropriate for a data packet; and
environment SDN non-transitory storage for programs to execute from the environment SDN memory on the environment SDN processor, the environment SDN non-transitory storage including an environment SDN module to communicate with the underlying cloud physical network layer, manage the packet header table and environment SDN header hardware and communicate with programs from the NIC non-transitory storage executing on the NIC processor;
wherein the computer peripheral device interface and the NIC peripheral device interface are configured to provide a secure peripheral device communication path between the local program and the NIC;
wherein the local program and the NIC IPsec program are configured to securely exchange security associations (SAs) over the secure peripheral device communication path,
wherein the local program is configured to provide a local session primary encryption key to the NIC IPsec program,
wherein the local program is configured to request at least one of a local SA or IPsec transforms and additional attributes from the NIC IPsec program,
wherein the NIC IPsec program is configured to request a virtual network identifier (VNI) and underlay source and destination IP mapping for an overlay source and destination IP from the environment SDN domain,
wherein, when the local program is configured to request a local SA, the NIC IPsec program is configured to develop a local SA, the local SA including a local derived session encryption key developed using the local session primary encryption key and at least one field contained in the packets being exchanged, after receiving the VNI and underlay source and destination IP mapping from the environment SDN domain, including selecting a Security Parameter Index (SPI) for the local program, and to provide the local SA to the local program,
wherein, when the local program is configured to request IPsec transforms and additional attributes, the local program is configured to develop a local SA including selecting an SPI, a local derived session encryption key developed using the local session primary encryption key and at least one field contained in the packets being exchanged and elements from the requested IPsec transforms and additional attributes,
where the local program is configured to exchange CREATE_CHILD_SA requests with the remote program to exchange SAs including local and remote derived session encryption keys with the remote program,
where the local program is configured to provide the local SA and the remote SA including the remote derived session encryption key to the NIC IPsec program, and
wherein the NIC IPsec program is configured to use the remote SA to provide the remote derived session encryption key to the NIC encryption engine to allow the NIC encryption engine to encrypt egress packets using the remote derived session encryption key and decrypt ingress packets using a local derived session encryption key developed using the local session primary encryption key and at least one field contained in the packets being exchanged with the remote program in underlay transmissions and receptions,
wherein the local program is configured to direct provision of a data packet to the NIC for transmission in packets to the remote program,
wherein the NIC is configured to transfer data packet header information to the environment SDN domain to allow the environment SDN domain to provide headers including an underlay MAC header, an underlay IP header, an ESP header placeholder, a UDP header, a network virtualization header, an overlay MAC header, and overlay IP header,
wherein the NIC is configured to develop the packet with headers from the environment SDN domain; to populate the ESP header, add any ESP pad, and add an ESP next header field; and to provide the packet with headers to the NIC encryption engine,
wherein the NIC encryption engine encrypts the UDP header, network virtualization header, overlay MAC header, overlay IP header, payload, padding and ESP next header using the proper encryption key for transmission to the remote program,
wherein the NIC transmits the encrypted packet over the network interface to the remote program,
wherein the NIC receives an encrypted packet from the remote program through the network interface and the NIC encryption engine decrypts the packet using an encryption key referenced by the SPI in the received packet; and
wherein the decrypted packet is provided to the local program.
|