Cloud storage using encryption gateway with certificate authority identification

Information

  • Patent Grant
  • 11792169
  • Patent Number
    11,792,169
  • Date Filed
    Tuesday, February 15, 2022
    2 years ago
  • Date Issued
    Tuesday, October 17, 2023
    7 months ago
Abstract
Systems and methods to securely send or write data to a cloud storage or server. In one embodiment, a method includes: establishing a connection to a client using a client-side transport protocol; receiving, over the connection, data from the first client; decrypting, using a client session key, the received data to provide first decrypted data; encrypting the first decrypted data using a stored payload key (that is associated with the client) to provide first encrypted data; encrypting, using a cloud session key, the first encrypted data using a remote-side transport protocol to provide second encrypted data; and sending the second encrypted data to the cloud storage or server.
Description
FIELD OF THE TECHNOLOGY

At least some embodiments disclosed herein relate to security processing or storage in general.


BACKGROUND

Currently, remote cloud and server systems are protected by distributed software based encryption in which each client generates and handles cryptographic keys and encrypts its data before transmission. Distributed encryption (local client to remote server) adds extensive CPU overhead-computing to clients and allows a very wide attack vector. For example, adversaries can penetrate several clients at one time because each individual client uses a software-based encryption that insecurely stores the keys. The adversary illegally accesses (hacks) the client's machine and copies the cryptographic keys undetected. Also, the user of the client machine and the information technology network personnel are potential threats that can copy the cryptographic keys and sell/give to an adversary. A distributed encryption system with hundreds of clients increases the burden of support network personnel to protect the network from both external and internal attackers or threats. Additionally, software encryption is susceptible to malicious hacking and covert modifications.


SUMMARY OF THE DESCRIPTION

Systems and methods to send or write data or a file object to a remote cloud storage or data server using a centralized encryption gateway are described herein. Some embodiments are summarized in this section.


One embodiment replaces a distributed encryption solution for data object storage with a centralized encryption solution, which is more reliable, secure, and manageable and in many cases provides much higher performance.


In one embodiment, a centralized encryption system and centralized key manager is significantly easier to manage and protect than a distributed encryption/key manager system.


In one embodiment, a payload encryption method uses symmetric encryption algorithms with authentication to encrypt or decrypt a payload file object or data. The gateway encrypts the payload (file object or data) using a specific key associated to the client and/or object. The gateway then encrypts the payload to a remote-side transport encryption protocol and sends the encrypted payload to a remote server or cloud server.


In one embodiment, a system includes: a first computing device configured as an encryption gateway, the first computing device comprising at least one processor (e.g., for data path and/or cryptographic processing) and at least one memory, the encryption gateway configured to receive data in a payload from a client application (e.g., the client application can be implemented in either hardware or software), to encrypt the data, and to send or write the encrypted data to a remote cloud storage or a data server; a router or switch, configured to provide, via local-side transport, the payload from the client application to the encryption gateway; and a key manager, the key manager configured to provide at least one key to the encryption gateway for encryption of the data in the payload, wherein at least one key is associated to the client application (or the corresponding client) or the payload, and the encryption of the data uses a remote-side transport protocol associated with the remote cloud storage or server.


In one embodiment, a method includes: receiving, by an encryption gateway from a hardware or software client application, a request to read data from a remote cloud storage or server; receiving the data in a first payload from the remote cloud storage or server, wherein the data has been encrypted using a remote-side transport protocol associated with the remote cloud storage or data server; decrypting, by at least one processor of the encryption gateway, the received data in the first payload using the remote-side transport protocol, wherein the decrypting uses a key of the client application and the key is retrieved from a memory; encrypting, by the encryption gateway, the first payload using a client-side transport protocol; and sending, from the encryption gateway to the client application, the encrypted first payload (for a non-limiting example, see FIG. 1).


In one embodiment, an encryption gateway includes at least one processor; and memory storing instructions configured to instruct at least one processor to: receive, via local-side transport, data in a payload from a client application; receive, from a key manager, at least one key for encryption of the data in the payload, wherein at least one key is associated to the client application or the payload; encrypt the data in the payload, the encryption using a remote-side transport protocol associated with a remote cloud storage or server; and send or write the encrypted data to the remote cloud storage or server.


The disclosure includes methods and apparatuses which perform these methods, including data processing systems which perform these methods, and computer readable media containing instructions which when executed on data processing systems cause the systems to perform these methods.


In one embodiment, when connecting to the cloud or remote server, the encryption gateway uses a trusted third party to verify the identity of the cloud or remote server. In the case of Transport Layer Security (TLS) or an equivalent network or transport security protocol, this trusted third party may be a certificate authority (CA) (e.g., a computing device of the CA communicates over a network with the encryption gateway).


An example of a CA is illustrated in FIG. 2. In one embodiment, the TLS processors (e.g., the TLS blocks illustrated in FIG. 2) or TLS functions contact the CA (e.g., over the internet or a network connected to the CA) that signed a TLS peer certificate to verify that the certificate is valid. More than one certificate can be used. Once the one or more certificates are verified, the TLS connection to the client and to the cloud is established, and the client session key and cloud session key are generated per the TLS protocols. In the case that the certificate is deemed invalid, the connection is aborted and client or cloud session keys are not generated.


In one embodiment, the CA cryptographically signs a certificate that establishes the identity of the cloud or remote server. For example, the certificate is sent over the network from the computing device of the CA to the encryption gateway. The encryption gateway verifies this signature and communicates with the CA to ensure that the certificate is valid and has not been compromised.


Other features will be apparent from the accompanying drawings and from the detailed description which follows.





BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.



FIG. 1 shows a top level diagram of a communication system in one embodiment.



FIG. 2 shows detailed TLS (HTTPS) implementation details of one embodiment.



FIG. 3 shows detailed TLS (HTTPS)/MACSEC implementation details of one embodiment.



FIG. 4 shows detailed MACSEC implementation details of one embodiment.



FIG. 5 shows clients and servers using TLS (HTTPS) connections in one embodiment.



FIG. 6 shows a TLS (HTTPS) proxy data flow in one embodiment.



FIG. 7 shows clients using HTTP and server using TLS (HTTPS) in one embodiment.



FIG. 8 shows HTTP client to TLS (HTTPS) server proxy connection data flow in one embodiment.



FIG. 9 shows persistent TLS (HTTPS) connections to server in one embodiment.





DESCRIPTION

The following description and drawings are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding. However, in certain instances, well known or conventional details are not described in order to avoid obscuring the description. References to “one embodiment” or “an embodiment” in the present disclosure are not necessarily references to the same embodiment; and, such references mean at least one.


Reference in this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosure. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Moreover, various features are described which may be exhibited by some embodiments and not by others. Similarly, various requirements are described which may be requirements for some embodiments but not other embodiments.


Described below is a client(s) to cloud or remote server secure communication system that connects from the clients to the gateway to the cloud and/or any remote servers. In one embodiment, the data is double encrypted in transit at 10 Gigabits to 100 Gigabits/second or higher data rates.


As used herein, “HTTPS” is equivalent to HTTP over TLS or SSL (or another equivalent security).



FIGS. 1-4 show example embodiments of the communication system. FIG. 1 illustrates an example of the communication system in situ. FIG. 2 illustrates an embodiment of the system with TLS transport security on both local and remote sides of the system. FIG. 3 illustrates an embodiment of the system with TLS transport security on local side and MACSEC transport security on the remote side of the system. FIG. 4 illustrates an embodiment of the system with MACSEC transport security on both local and remote sides of the system.


In some embodiments, as illustrated in FIGS. 3 and 4, MACSEC security is used. MACSEC is described by the IEEE 802.1AE-2006 standard (currently with 3 amendments, IEEE 802.1AEbn-2011, IEEE 802.1AEbw-2013, IEEE 802.1AEcg-2017). The MAC security standard (also known as “MACsec”) defines connectionless data confidentiality and integrity for media access independent protocols over an OSI layer two network. The MACsec Key Agreement (“MKA”) protocol is responsible for maintaining MACsec connections by generating and providing cryptographic keys to be used for each MACSEC connection. The optional addition of MACSEC adds another layer of transport encryption for cloud-based encryption to completely hide all information being transmitted. Without MACSEC, the TLS encryption still keeps certain data fields in the clear (this is needed information for the TLS protocol to operate). By adding MACSEC security, all of the information transmitted is completed encrypted. Also, in alternative embodiments, MACSEC can be used to provide transport encryption instead of TLS.


Data Flow

In one embodiment, a local client sends or writes data to the cloud or remote server flow. The client uses any transport encryption method on the file object or data to the gateway. The gateway decrypts the local-side transport to yield the plain text file object or data. The gateway encrypts the payload (file object or data) using a specific key associated to the client and/or object. The gateway then encrypts the payload to the remote-side transport encryption protocol and sends to the remote server or cloud server. The remote server or cloud server decrypts the transport protocol. At this time, the payload is still encrypted by the client's key. The encrypted payload data is then stored. The aggregated gateway terminates local side communication (e.g., MACSEC, IPSEC, TLS), performs encryption as required on the TCP stream of data (e.g., encrypt a file object in a file transfer stream), and then performs new independent transport encryption (e.g., TCP and TLS sessions) on the remote side.


In one embodiment, data is read or the local client receives data from the cloud or remote server. The client requests that the remote server or cloud server reads the encrypted stored data. The remote server or cloud server encrypts the data using remote-side transport protocol. The gateway receives the data and decrypts the remote-side transport protocol. Next, using the client's key, the gateway decrypts the payload file object or data and then encrypts the file object or data using the client-side transport protocol. The client receives the transport data and decrypts. The aggregated gateway terminates remote side communication (e.g., TCP and TLS sessions), performs decryption as required on the TCP stream of data (e.g., encrypt a file object in a file transfer stream), and then performs new independent transport encryption (e.g., MACSEC, IPSEC, TLS) on the local side.


Transport Encryption

In one embodiment, the transport encryption method is used to protect the data during transmission between physical sites or buildings (i.e., point-to-point encryption). The transport encryption method can be, for example, an industry standard such as, for example, TLS (Transport Security Layer), IPSec (Internet Protocol Security), MACSEC (IEEE MAC Security standard), or any custom transport protocol. In one embodiment, TLS, MACSEC, and IPSec each have authentication information that will be used to associate the client's payload keys. A Transport Layer Security (TLS) or equivalent network or transport security protocol may communicate to a third party certificate authority (CA) for certificate(s) set-ups and to verify the identity of the cloud or remote server or users.


Payload Encryption

In one embodiment, the payload encryption method uses symmetric encryption algorithms with authentication (e.g., AES-GCM) to encrypt or decrypt the payload file object or data. In alternative embodiments, other encryption algorithms can be used, such as an asymmetric algorithm. Payload encryption protects the file or object data while it is stored in cloud storage or at the cloud or remote server. Adding authentication ensures that the data has not been manipulated in any way while it has been stored. In addition, the payload encryption provides additional security above and beyond the transport encryption while the data is in transport. Encryption while the data is stored ensures that only the client can access the data. Other entities, such as the storage provider, cannot access, for example, the plaintext data because they do not have keys for that data.


In one embodiment, the symmetric encryption algorithm with authentication is required to associate the proper client's payload key to the file object or data. The payload key manager facilitates the loading of client payload keys into the gateway. The client keys can be either loaded via a secure port or over the network using a secure method. Once the keys are loaded into the gateway, the keys are pre-associated to the clients that are connected to the gateway. The client's key is associated to the client based on the information provided by the transport encryption method. Once the client keys are loaded into the gateway, the client's keys cannot be read or exposed.


The payload key manager (e.g., illustrated in FIG. 2) communicates with a payload encryption protocol to determine who the client is and what client payload key to associate with the file object or data for payload encryption or decryption. One of the features is the ability to encrypt the payload data at the file object level and associate the client's payload key to the file object.


Some advantages for various embodiments of the above: Implementing this disclosure in hardware using FPGAs or ASIC for, for example, 10 Gigabits to 100 Gigabits/second or higher data rates provides reliability against external attacks on the encryption system. Centralized encryption simplifies user management of site-wide data encryption. High-rate encryption enables remote storage without detriment to user experience. In one embodiment, a cipher or encryption algorithm for the foregoing can be implemented using a systolic matrix architecture as referred to below.


Additional Encryption Gateway Embodiments

In one embodiment, a first computing device is configured as an encryption gateway, and the first computing device comprises at least one processor (e.g., for data path and/or cryptographic processing) and at least one memory. The encryption gateway is configured to authenticate a client using one or multiple authentication factors, and further configured to receive TLS (or other transport encryption) data from a client application. The encryption gateway will terminate the client TLS connection and extract the payload and encrypt the payload with authentication. Authentication is used in addition to the encryption algorithm to authenticate the data. The authentication process verifies the data originated from the intended source. For example, AES-GCM is an encryption algorithm that includes authentication performed prior to and after an encryption process. This authentication verifies the data that was encrypted or decrypted did originate to/from an authorized source or user. The payload is encrypted using the object/file key (e.g., see “File object derived key” in FIG. 6). This encryption protects the data while it is stored. The payload is also authenticated so that when the object/file is read from the data store, the gateway can determine if the data was modified in any way including, for example, being tampered with.


Next, the encryption gateway inserts the encrypted-authenticated payload into the cloud or data server TLS data packet/format. The encryption gateway establishes a cloud or data server TLS connection. The cloud or data server terminates the TLS connection, which includes TCP termination, and stores the encrypted-authenticated payload in the cloud or data server memory.


In one embodiment, an approach terminates a client TLS connection which also includes TCP termination, extracts data from a payload and encrypts the extracted data with authentication (using an encryption key from a key manager). A TLS connection is set-up to a cloud or data server, and the encrypted authenticated data is inserted into a TLS cloud payload with key association information. The cloud or data server terminates the TLS connection and the encrypted authenticated payload data is stored on the cloud or data server memory/storage.


This section below describes embodiments regarding a design of a, for example, 100 Gbps (gigabit per second)-full duplex link that uses both data-at-rest encryption and full TLS transport security. The design is not limited to TLS and Cloud Services file encryption, and this description is an example and discussion of the tradeoffs of a single embodiment of the general design. In one embodiment, the TLS algorithm can be implemented using a systolic matrix architecture as referred to below.


TLS background (used in this example) and other transport encryption methods are, for example, IPSEC, MACSEC, or a custom method. In one embodiment, the transport and packet processing can be implemented using a systolic matrix architecture as referred to below.


In one embodiment, Transport Layer Security (TLS) or Secure Socket Layer (SSL) is used to secure data in flight at Layer 6 of the OSI model. It provides both certificate authentication and transport encryption for all application layer data. Certificate authentication is achieved by verifying the CA's cryptographic signature covering the certificate, and/or contacting the CA to ensure that the certificate in question is currently valid. In the context of remote cloud storage, TLS gives the client confidence that its data is only connected to the cloud service provider.


TLS operates by negotiating a session key per TLS or Secure Socket Layer (SSL) connection. A single TLS connection is not a burden, but as the number of TLS connections that are negotiated within a device increases, the connections become increasingly burdensome in both computational requirements and real-time delay.


In-Line Encryption
Option 1: Clients and Servers Use HTTPS Connections

In order to encrypt the HTTP information in-line, the hardware encryption gateway acts as a TLS proxy between client applications and cloud storage as shown in FIG. 5.



FIG. 6 shows a flow chart describing the process of decrypting and re-encrypting the TLS connections.


The encryption gateway negotiates a TLS connection to the client and a TLS connection to the cloud server. In one embodiment, part of this negotiation includes exchange of signed certificates. Typically, the gateway provides a certificate to the client, verifying the gateway's identity (but the client does not need to prove its identity to the gateway or the remote server). So, a certificate is not necessarily received by the gateway from the client.


In alternative embodiments, the TLS exchange may start by or include the gateway receiving a certificate from the client. For example, TLS exchanges can implement (and TLS allows for) clients to provide the gateway with a certificate.


The TLS endpoint contacts the CA to verify that the received certificate is valid. In one embodiment, there are two independent TLS exchanges and connections that take place: one TLS exchange between the client and gateway, and another TLS exchange between the server and gateway. So, the gateway provides two TLS endpoints, one on the cloud server side, and one on the client side.


If the CA does not indicate that the certificate is valid, the negotiation is aborted. If the CA indicates the certificate is valid, the TLS protocol will establish the session key and encrypt the data with the session key and transmit the encrypted data to the client and/or cloud server, thus establishing a secure connection.


Before encrypting the file object for data-at-rest, the client TLS encryption will be decrypted using the client session key. In one embodiment, the HTTP data of FIG. 6 contains a file header, which contains information that is used to create the payload encryption key, which is derived using a key encryption key (KEK). For example, the “Derived key” shown in FIG. 6 is the payload encryption key. The file header information stays with the file/object while it is stored and will be available when the file/object is read. When the file/object is read, the file header information is then used to derive the same key (using the KEK) to decrypt the data.


In one embodiment, the file header information is prepended to the file/object. It is not encrypted and provides information which allows the gateway to derive the payload encryption key.


The file object will be encrypted using a key derived from the file object metadata (e.g., an Object ID). After encrypting the file object, the HTTP stream will be TLS encrypted for transport to the cloud server using the cloud session key.


This “Option 1” approach allows both cloud servers and client applications to continue operating transparently, provided the proxy (Hardware Encryption Gateway) is able to provide a valid cloud certificate to the client. In one embodiment, the cloud server provides the gateway with a signed certificate. The gateway must present a separate certificate, optionally signed by a different signing authority. In one embodiment, the proxy cloud certificate is signed by a CA that is trusted by the client so that the client trusts the proxy certificate that is present in place of the original cloud server certificate.


There are two basic CA types: an actual third party CA or a private CA created by the client. Either type is acceptable as long as the CA is trusted by the client and/or cloud server.


If the proxy does not have a valid certificate for the cloud domain, the clients would need to accept the proxy certificate as a security exception.


The cost of Hardware Encryption Gateway using TLS for both the client and the cloud server is that the number of TLS negotiations required has doubled compared to not using a proxy. This can reduce throughput performance for clients due to added TLS negotiation time, especially for small-sized files. This also puts a heavy burden on the proxy (Hardware Encryption Gateway) because it must deal with the aggregate client TLS sessions.


Option 2: Clients Use HTTP, Cloud Storage Uses HTTPS

In order to reduce the performance impact of the insertion of the TLS proxy (Hardware Encryption Gateway) and ease the burden on the proxy, we can attempt to reduce the number of TLS connections in the system. One way of doing this is to modify the client connection to use an unencrypted HTTP connection. Because all client-to-proxy connections are contained within the customer site, this is a low risk change to the internal network security as shown in FIG. 7.


Because the clients are modified to communicate using HTTP only, Hardware Encryption Gateway would act as a client-only TLS proxy. Hardware Encryption Gateway will modify the client HTTP packets to the HTTPS. This will reduce the number of TLS negotiations in half from the full HTTPS option, and will remove a level of decryption in client-to-proxy traffic and a level of encryption in the proxy-to-client traffic, relieving both client and proxy of that computational burden. Note that this solution may require a change to the client side software.


An illustration of the steps saved by removing encryption to the client is in FIG. 8.


Option 3: Proxy to Server Optimization

Option 3 outlines potential performance optimizations that could reduce the number of TLS negotiations that are needed between cloud server and proxy from the direct-connect HTTPS network used in both Options 1 and 2. In this optimization, the TLS proxy (Hardware Encryption Gateway) opens and maintains persistent TLS connections to the cloud servers and tunnels the various client connections through those tunnels as shown in FIG. 9.


Hardware Encryption Gateway would set up TLS sessions with a cloud server before clients initiate any data transfer. As clients move data to/from the cloud servers, Hardware Encryption Gateway would use a pre-opened TLS session for the client, modifying the client IP address and port number to that of the active TLS session.


In addition, for client-to-server traffic, Hardware Encryption Gateway would insert a TLS header, modify the server TCP port number to HTTPS, and perform all the necessary TLS encryption and authentication. For server-to-client traffic, Hardware Encryption Gateway would reverse the process described above. In one embodiment, there is a need to determine the duration the TLS sessions can be kept alive before the link would need to be renegotiated, as well as on potential impact on the cloud Load Balancers.


This option can be used in combination with either Option 1 or Option 2. In either case, it would reduce the number of proxy-to-server TLS sessions required especially in the case of many short-lived client connections. This option also disassociates the lag of proxy-to-server connections from the client-to-proxy connections so that the client does not see additional latency in individual client connections.


In various embodiments, a general hardware aggregated encryption gateway (as discussed above) enables centralized encryption of communications leaving a corporate or other site. In one embodiment, the above Hardware Encryption Gateway can negotiate hundreds of TLS connections per second and maintain thousands of TCP connections simultaneously. In one embodiment, the Hardware Encryption Gateway is programmable for real-time HTTP 100 Gbps full duplex TLS and data at rest encryption that is transparent to clients and the cloud.


In some embodiments, the encryption gateway may be implemented by or use encryption/decryption and/or communication methods and systems as described in U.S. patent application Ser. No. 14/177,392, filed Feb. 11, 2014, entitled “SECURITY DEVICE WITH PROGRAMMABLE SYSTOLIC-MATRIX CRYPTOGRAPHIC MODULE AND PROGRAMMABLE INPUT/OUTPUT INTERFACE,” by Richard J. Takahashi, and/or as described in U.S. patent application Ser. No. 14/219,651, filed Mar. 19, 2014, entitled “SECURE END-TO-END COMMUNICATION SYSTEM,” by Richard J. Takahashi. For example, the encryption gateway may use systolic matrix packet engines and multiplexers to process and route packets or other data, as described in the foregoing applications.


In one embodiment, data transmitted from a client to a remote cloud storage or server for storage is encrypted using three different keys, described in more detail as follows. The first key (key-1) is set-up with, for example, TLS encryption from the client application to the encryption gateway. The second key is the payload encryption key (key-2) used to encrypt the payload data (e.g., a file, or one or more file objects). The third key (key-3) is used for the TLS encryption from the encryption gateway to the remote cloud storage or server.


In this embodiment, key-1 is used to decrypt data from the client that is received at the gateway, and key-3 is used to encrypt data that is sent to the cloud. Also, key-1 is used as the TLS client session key. Data is only protected by key-1 for the duration of the transport between the client and the gateway. Key-3 is used similarly for the duration of the transport between the gateway and the remote cloud storage or server.


In one embodiment, data is encrypted by the encryption gateway at a file or file object level, and at least one key is associated to a file object. Examples of an executable file include a complete program that can be run directly by an operating system (e.g., in conjunction with shared libraries and system calls). The file generally contains a table of contents, a number of code blocks and data blocks, ancillary data such as the memory addresses at which different blocks should be loaded, which shared libraries are needed, the entry point address, and sometimes a symbol table for debugging. An operating system can run an executable file by loading blocks of code and data into memory at the indicated addresses and jumping to it.


Examples of a file object include code that is logically divided into multiple source files. Each source file is compiled independently into a corresponding object file of partially-formed machine code known as object code. At a later time these object files are linked together to form an executable file. Object files have several features in common with executable files (table of contents, blocks of machine instructions and data, and debugging information). However, the code is not ready to run. For example, it has incomplete references to subroutines outside itself, and as such, many of the machine instructions have only placeholder addresses.


In one embodiment, the encryption gateway sets up a transport session with the remote cloud storage or server prior to receiving the payload from the client (e.g., from an application executing on the client), and the encryption gateway uses the transport session for sending or writing data from a plurality of client applications, including the client application, to the remote cloud storage or server.


In one embodiment, the encryption gateway modifies or inserts a header in a transport connection to associate the client application on a remote connection, or the encryption gateway modifies or inserts a header in a file object to associate the client application on a remote connection.


In one embodiment, the client application can be software that transfers the file or file object to the gateway. In one embodiment, the header is an HTTP packet header that contains the information related to the packet, where the gateway can modify or insert information without disturbing or disrupting the original function of the HTTP packet.


In one embodiment, the data received from the client comprises a payload having a plurality of file objects, and the payload key is associated to each of the file objects. The payload key can be derived using metadata or file header information, as was described above. In either case, the metadata or file header contains information that is used to derive the payload cipher key with a KEK. The metadata or file header is maintained with the file/object for the life of the file/object so that it can be used at any time to derive the payload cipher key to decrypt the file/object (e.g., when it is read from remote cloud storage).


In one embodiment, the data received from the client comprises packets including a first packet, and a header is inserted into one or more of the packets (e.g., the first packet), wherein the header associates each packet to the client. The file object may be split among multiple packets. In the first packet of a file, identifying information is stored that is used to extract the correct key for decryption when the file is later read (this provides key association with the data). This identifying information can be in the form of an additional header prepended to the file, or by modifying existing metadata. The inserted file header is a new header. If metadata is modified, new metadata is inserted in an existing header. In this embodiment, there is no association between the file header or metadata with the remote connection. Internally, the contents of the header/metadata of the first packet of the file creates a context that associates subsequent packets with the first packet.


In one embodiment, the payload key is associated to the client or an object in the data received from the client. The payload key association is made through an identifying feature of the cloud server protocol associated with the cloud or remote server. In Amazon Web Services (AWS), for example, a specific “bucket” (e.g., like a folder) can have a key associated with it. The key to use is identified based on that information and uses that association.


In one embodiment, the gateway receives authentication information from the client to request the local side TLS key using the TLS protocol.


In one embodiment, the gateway communicates with the remote-side transport protocol to determine the remote side TLS key for use in encryption. The TLS protocol is used to determine the key.


In one embodiment, the client session key is an ephemeral key generated after receiving, by the gateway, a request from the client to establish a connection. The cloud session key is an ephemeral key generated after receiving a request from the gateway to the cloud server to establish a connection. Both the client session and cloud session keys are generated in response to a request to the gateway for connection from the client.


In one embodiment, the gateway modifies or inserts a header in at least one of a plurality of packets received from the client to associate the client to a file object (e.g., the header is only inserted in a first packet of a multi-packet file/object).


Closing

At least some aspects disclosed can be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other data processing system in response to its processor(s), such as a microprocessor, executing sequences of instructions contained in a memory, such as ROM, volatile RAM, non-volatile memory, cache or a remote storage device.


In various embodiments, hardwired circuitry (e.g., one or more hardware processors or other computing devices) may be used in combination with software instructions to implement the techniques above (e.g., the communication system may be implemented using one or more computing devices). Thus, the techniques are neither limited to any specific combination of hardware circuitry and software nor to any particular source for the instructions executed by the data processing system.


In one embodiment, a computing device may be used that comprises an inter-connect (e.g., bus and system core logic), which interconnects a microprocessor(s) and a memory. The microprocessor is coupled to cache memory in one example.


The inter-connect interconnects the microprocessor(s) and the memory together and also interconnects them to a display controller and display device and to peripheral devices such as input/output (I/O) devices through an input/output controller(s). Typical I/O devices include mice, keyboards, modems, network interfaces, printers, scanners, video cameras and other devices which are well known in the art.


The inter-connect may include one or more buses connected to one another through various bridges, controllers and/or adapters. In one embodiment the I/O controller includes a USB (Universal Serial Bus) adapter for controlling USB peripherals, and/or an IEEE-1394 bus adapter for controlling IEEE-1394 peripherals.


The memory may include ROM (Read Only Memory), and volatile RAM (Random Access Memory) and non-volatile memory, such as hard drive, flash memory, etc.


Volatile RAM is typically implemented as dynamic RAM (DRAM) which requires power continually in order to refresh or maintain the data in the memory. Non-volatile memory is typically a magnetic hard drive, a magnetic optical drive, or an optical drive (e.g., a DVD RAM), or other type of memory system which maintains data even after power is removed from the system. The non-volatile memory may also be a random access memory.


The non-volatile memory can be a local device coupled directly to the rest of the components in the data processing system. A non-volatile memory that is remote from the system, such as a network storage device coupled to the data processing system through a network interface such as a modem or Ethernet interface, can also be used.


In one embodiment, a data processing system such as the computing device above is used to implement one or more of the following: an encryption gateway, a router, a switch, a key manager, a client application, cloud storage, a load balancer, and a firewall.


In one embodiment, a data processing system such as the computing device above is used to implement a user terminal, which may provide a user interface for control of a computing device. For example, a user interface may permit configuration of the encryption gateway. A user terminal may be in the form of a personal digital assistant (PDA), a cellular phone or other mobile device, a notebook computer or a personal desktop computer.


In some embodiments, one or more servers of the data processing system can be replaced with the service of a peer to peer network of a plurality of data processing systems, or a network of distributed computing systems. The peer to peer network, or a distributed computing system, can be collectively viewed as a server data processing system.


Embodiments of the disclosure can be implemented via the microprocessor(s) and/or the memory above. For example, the functionalities described can be partially implemented via hardware logic in the microprocessor(s) and partially using the instructions stored in the memory. Some embodiments are implemented using the microprocessor(s) without additional instructions stored in the memory. Some embodiments are implemented using the instructions stored in the memory for execution by one or more general purpose microprocessor(s). Thus, the disclosure is not limited to a specific configuration of hardware and/or software.


In this description, various functions and operations may be described as being performed by or caused by software code to simplify description. However, those skilled in the art will recognize what is meant by such expressions is that the functions result from execution of the code by a processor, such as a microprocessor. Alternatively, or in combination, the functions and operations can be implemented using special purpose circuitry, with or without software instructions, such as using an Application-Specific Integrated Circuit (ASIC) or a Field-Programmable Gate Array (FPGA). Embodiments can be implemented using hardwired circuitry without software instructions, or in combination with software instructions. Thus, the techniques are limited neither to any specific combination of hardware circuitry and software, nor to any particular source for the instructions executed by the data processing system.


While some embodiments can be implemented in fully functioning computers and computer systems, various embodiments are capable of being distributed as a computing product in a variety of forms and are capable of being applied regardless of the particular type of machine or computer-readable media used to actually effect the distribution.


At least some aspects disclosed can be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other data processing system in response to its processor, such as a microprocessor, executing sequences of instructions contained in a memory, such as ROM, volatile RAM, non-volatile memory, cache or a remote storage device.


Hardware and/or software may be used to implement the embodiments above. The software may be a sequence of instructions referred to as “computer programs.” The computer programs typically comprise one or more instructions set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processors in a computer, cause the computer to perform operations necessary to execute elements involving the various aspects.


Software used in an embodiment may be stored in a machine readable medium. The executable software, when executed by a data processing system, causes the system to perform various methods. The executable software and data may be stored in various places including for example ROM, volatile RAM, non-volatile memory and/or cache. Portions of this software and/or data may be stored in any one of these storage devices. Further, the data and instructions can be obtained from centralized servers or peer to peer networks. Different portions of the data and instructions can be obtained from different centralized servers and/or peer to peer networks at different times and in different communication sessions or in a same communication session. The data and instructions can be obtained in entirety prior to the execution of the applications. Alternatively, portions of the data and instructions can be obtained dynamically, just in time, when needed for execution. Thus, it is not required that the data and instructions be on a machine readable medium in entirety at a particular instance of time.


Examples of computer-readable media include but are not limited to recordable and non-recordable type media such as volatile and non-volatile memory devices, read only memory (ROM), random access memory (RAM), flash memory devices, floppy and other removable disks, magnetic disk storage media, optical storage media (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital Versatile Disks (DVDs), etc.), among others. The computer-readable media may store the instructions.


In general, a tangible machine readable medium includes any mechanism that provides (e.g., stores) information in a form accessible by a machine (e.g., a computer, network device, personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.).


Although some of the drawings may illustrate a number of operations in a particular order, operations which are not order dependent may be reordered and other operations may be combined or broken out. While some reordering or other groupings are specifically mentioned, others will be apparent to those of ordinary skill in the art and so do not present an exhaustive list of alternatives. Moreover, it should be recognized that various stages or components could be implemented in hardware, firmware, software or any combination thereof.


Benefits, other advantages, and solutions to problems have been described herein with regard to specific embodiments. However, the benefits, advantages, solutions to problems, and any elements that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as critical, required, or essential features or elements of the disclosure.


No claim element herein is to be construed under the provisions of 35 U.S.C. 112, sixth paragraph, unless the element is expressly recited using the phrase “means for.”


In the foregoing specification, the disclosure has been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.

Claims
  • 1. A method for securely transmitting data between a client and a cloud storage or server through a gateway, the method comprising: receiving, by the gateway, first data from the client, the first data including an unencrypted portion and an encrypted portion;decrypting, by the gateway, the encrypted portion using a first transport protocol to provide first decrypted data;deriving, by the gateway, a first key stored in the gateway from the unencrypted portion;encrypting, by the gateway using the first key, the first decrypted data to provide first encrypted data;encrypting, by the gateway using a second transport protocol, the first encrypted data to provide second encrypted data; andsending, by the gateway, the second encrypted data to the cloud storage or server.
  • 2. The method of claim 1, further comprising loading the first key into the gateway and pre-associating the first key with the client.
  • 3. The method of claim 1, wherein the encrypted portion is encrypted using a symmetric encryption algorithm and the unencrypted portion includes file header information to be used by the gateway to derive the first key.
  • 4. The method of claim 1, wherein the first or second transport protocol uses Transport Layer Security (TLS), Internet Protocol Security (IPSec), or IEEE MAC Security (MACSEC).
  • 5. The method of claim 1, further comprising authenticating, by the gateway, the client using one or more authentication factors before receiving the first data from the client.
  • 6. The method of claim 1, further comprising establishing a secure connection between the gateway and the client for transmitting the first data after the gateway receives a connection request from the client.
  • 7. The method of claim 6, wherein the establishing includes providing, by the gateway, a certificate to the client verifying an identity of the gateway.
  • 8. The method of claim 6, wherein the establishing includes receiving, by the gateway, a certificate from the client verifying an identity of the client.
  • 9. The method of claim 6, further comprising terminating, by the gateway, the secure connection after receiving the first data.
  • 10. A method for securely transmitting data between a client and a cloud storage or server through a gateway, the method comprising: establishing, by the gateway, a secure connection with the client;receiving, by the gateway, first data transmitted from the client to the gateway over the secure connection, the first data including an unencrypted portion and an encrypted portion;terminating, by the gateway, the secure connection after the gateway receives the first data;decrypting, by the gateway using a first transport encryption protocol, the encrypted portion to provide first decrypted data;deriving, by the gateway, a first key stored in the gateway from the unencrypted portion;encrypting, by the gateway using the first key, the first decrypted data to provide first encrypted data;encrypting, by the gateway using a second transport protocol, the first encrypted data to provide second encrypted data; andsending, by the gateway, the second encrypted data to the cloud storage or server.
  • 11. The method of claim 10, further comprising loading the first key into the gateway and pre-associating the first key with the client.
  • 12. The method of claim 11, wherein the encrypted portion is encrypted using a symmetric encryption algorithm and the unencrypted portion includes file header information to be used by the gateway to derive the first key.
  • 13. The method of claim 10, further comprising authenticating, by the gateway, the client using one or more authentication factors before receiving the first data from the client.
  • 14. A gateway for securely transmitting data between a client and a cloud storage or server, the gateway comprising: at least one processor; andmemory containing instructions configured to instruct the at least one processor to: receive first data from the client, the first data including an unencrypted portion and an encrypted portion;decrypt the encrypted portion using a first transport protocol to provide first decrypted data;derive a first key stored in the gateway from the unencrypted portion;encrypt, using the first key, the first decrypted data to provide first encrypted data;encrypt, using a second transport protocol, the first encrypted data to provide second encrypted data; andsend the second encrypted data to the cloud storage or server.
  • 15. The gateway of claim 14, wherein the first key is loaded to the gateway and pre-associated with the client.
  • 16. The gateway of claim 14, wherein the encrypted portion is encrypted using a symmetric encryption algorithm and the unencrypted portion includes file header information for deriving the first key.
  • 17. The gateway of claim 14, wherein the instructions are further configured to authenticate the client using one or multiple authentication factors before receiving the first data from the client.
  • 18. The gateway of claim 14, wherein the instructions are further configured to establish a secure connection between the gateway and the client for transmitting the first data after the gateway receives a connection request from the client.
RELATED APPLICATIONS

This is a continuation application of, and claims the benefit of, U.S. application Ser. No. 15/688,743, filed Aug. 28, 2017, which is a continuation-in-part application of U.S. Non-Provisional application Ser. No. 15/264,840, filed Sep. 14, 2016, now issued as U.S. Pat. No. 9,794,064, entitled “CLIENT(S) TO CLOUD OR REMOTE SERVER SECURE DATA OR FILE OBJECT ENCRYPTION GATEWAY,” by Anderson et al., which claims priority to U.S. Provisional Application Ser. No. 62/219,795, filed Sep. 17, 2015, entitled “CLIENT(S) TO CLOUD OR REMOTE SERVER SECURE DATA OR FILE OBJECT ENCRYPTION GATEWAY,” by Anderson et al., the entire contents of which applications are incorporated by reference as if fully set forth herein. U.S. application Ser. No. 15/688,743 claims priority to U.S. Provisional Application Ser. No. 62/518,117, filed Jun. 12, 2017, entitled “CERTIFICATE AUTHORITY IDENTIFICATION AND ENCRYPTION GATEWAY FOR SECURE REMOTE CLOUD STORAGE,” by Anderson et al., the entire contents of which application is incorporated by reference as if fully set forth herein. This application is related to U.S. patent application Ser. No. 14/219,651, filed Mar. 19, 2014, now issued as U.S. Pat. No. 9,374,344, entitled “SECURE END-TO-END COMMUNICATION SYSTEM,” by Richard J. Takahashi, the entire contents of which application is incorporated by reference as if fully set forth herein. This application is related to U.S. patent application Ser. No. 14/177,392, filed Feb. 11, 2014, now issued as U.S. Pat. No. 9,317,718, entitled “SECURITY DEVICE WITH PROGRAMMABLE SYSTOLIC-MATRIX CRYPTOGRAPHIC MODULE AND PROGRAMMABLE INPUT/OUTPUT INTERFACE,” by Richard J. Takahashi, the entire contents of which application is incorporated by reference as if fully set forth herein.

US Referenced Citations (338)
Number Name Date Kind
4319079 Best Mar 1982 A
4357529 Atalia Nov 1982 A
5594797 Alan ar a et al. Jan 1997 A
5602916 Grube Feb 1997 A
5631960 Likens et al. May 1997 A
5892962 Cloutier Apr 1999 A
5915025 Taguchi et al. Jun 1999 A
5961626 Harrison et al. Oct 1999 A
5995628 Kitaj et al. Nov 1999 A
6044388 DeBellis et al. Mar 2000 A
6081895 Harrison et al. Jun 2000 A
6101255 Harrison et al. Aug 2000 A
6128666 Muller et al. Oct 2000 A
6275588 Videcrantz et al. Aug 2001 B1
6304973 Williams Oct 2001 B1
6351813 Mooney Feb 2002 B1
6378072 Collins Apr 2002 B1
6515993 Williams et al. Feb 2003 B1
6550012 Villa et al. Apr 2003 B1
6577734 Etzel et al. Jun 2003 B1
6598161 Kluttz et al. Jul 2003 B1
6715028 Toda Mar 2004 B1
6845446 Fuller Jan 2005 B1
7171000 Toh et al. Jan 2007 B1
7200756 Griffin et al. Apr 2007 B2
7277941 Ignatius et al. Oct 2007 B2
7370348 Patel May 2008 B1
7382787 Barnes et al. Jun 2008 B1
7421576 Kent Sep 2008 B1
7496764 Robert Feb 2009 B2
7594262 Hanzlik et al. Sep 2009 B2
7607167 Johnson et al. Oct 2009 B1
7639696 Wu Dec 2009 B2
7644268 Filipi-Martin et al. Jan 2010 B2
7716467 Deffet et al. May 2010 B1
7734844 Pedersen et al. Jun 2010 B2
7773754 Buer et al. Aug 2010 B2
7804504 Agarwal Sep 2010 B1
7814316 Hughes et al. Oct 2010 B1
7836490 Smith Nov 2010 B2
7849306 Takeshima Dec 2010 B2
RE42212 Hoffman Mar 2011 E
7908472 Freed et al. Mar 2011 B2
7920701 Cox et al. Apr 2011 B1
7921284 Kinghorn et al. Apr 2011 B1
7921288 Hildebrand Apr 2011 B1
7930540 Ahuja et al. Apr 2011 B2
7930756 Crocker et al. Apr 2011 B1
7958351 Luthl Jun 2011 B2
7996670 Krishna et al. Aug 2011 B1
8065713 Vainstein et al. Nov 2011 B1
8073949 Cunchon et al. Dec 2011 B2
8166289 Owens et al. Apr 2012 B2
8219799 Lucchesi Jul 2012 B1
8229116 Ogata Jul 2012 B2
8230207 Iyer et al. Jul 2012 B2
8234686 Alvermann et al. Jul 2012 B2
8266433 Przykucki et al. Sep 2012 B1
8266670 Merkow et al. Sep 2012 B1
8275984 Loveless Sep 2012 B2
8289975 Suganthi et al. Oct 2012 B2
8307206 Ahuja et al. Nov 2012 B2
8356177 McGrew et al. Jan 2013 B2
8386768 Nair et al. Feb 2013 B2
8407194 Chaput et al. Mar 2013 B1
8416954 Raizen et al. Apr 2013 B1
8418252 Akyol et al. Apr 2013 B2
8433783 Jackowski et al. Apr 2013 B2
8433929 Yamashita Apr 2013 B2
8438626 Anderson et al. May 2013 B2
8443069 Bagepalli et al. May 2013 B2
8452956 Kersey May 2013 B1
8479304 Clifford Jul 2013 B1
8533494 Harada Sep 2013 B2
8536957 Nakamura et al. Sep 2013 B1
8539571 Smith Sep 2013 B2
8561127 Agrawal et al. Oct 2013 B1
8595814 Le et al. Nov 2013 B2
8631460 Shea et al. Jan 2014 B2
8681974 Langhammer Mar 2014 B1
8751826 O'Connor et al. Jun 2014 B2
8811620 Chaves et al. Aug 2014 B2
8813247 Alten Aug 2014 B1
8909942 Obukhov et al. Dec 2014 B1
8935523 Osburn, III Jan 2015 B1
8966249 Lindteigen Feb 2015 B2
8966288 Ignatius et al. Feb 2015 B2
8988713 Gutnik et al. Mar 2015 B2
9088538 Lindteigen et al. Jul 2015 B2
9100361 Lucchesi et al. Aug 2015 B1
9191200 Adams et al. Nov 2015 B1
9227139 Mamtani et al. Jan 2016 B2
9245148 Runkis et al. Jan 2016 B2
9306917 Brugger Apr 2016 B2
9317705 O'Hare et al. Apr 2016 B2
9317718 Takahashi Apr 2016 B1
9355279 Takahashi May 2016 B1
9374344 Takahashi Jun 2016 B1
9374345 Brugger et al. Jun 2016 B2
9378359 Qureshi et al. Jun 2016 B2
9380048 Lindteigen et al. Jun 2016 B2
9524399 Takahashi Dec 2016 B1
9536103 Redberg Jan 2017 B2
9560019 Barney Jan 2017 B2
9660964 Asiedu May 2017 B2
9680801 Martini Jun 2017 B1
9690598 Lindteigen Jun 2017 B2
9692605 Lindteigen et al. Jun 2017 B2
9705854 Khazan Jul 2017 B2
9794064 Anderson Oct 2017 B2
9794270 Lindteigen Oct 2017 B2
9798899 Takahashi Oct 2017 B1
9858442 Takahashi Jan 2018 B1
9871662 Glisson Jan 2018 B2
9916456 O'Hare et al. Mar 2018 B2
10013580 Takahashi Jul 2018 B2
10114766 Takahashi Oct 2018 B2
10708236 Takahashi Jul 2020 B2
10902155 Takahashi Jan 2021 B2
11063914 Takahashi Jul 2021 B1
11283774 Anderson Mar 2022 B2
11288402 Takahashi Mar 2022 B2
11429540 Takahashi Mar 2022 B2
20010042124 Barron Nov 2001 A1
20020027906 Athreya Mar 2002 A1
20020029280 Holden Mar 2002 A1
20020083317 Ohta Jun 2002 A1
20020091975 Redlich et al. Jul 2002 A1
20020099959 Redlich et al. Jul 2002 A1
20020162024 Cunchon Oct 2002 A1
20020165961 Everdell et al. Nov 2002 A1
20030012373 Ogura et al. Jan 2003 A1
20030014627 Krishna et al. Jan 2003 A1
20030023846 Krishna Jan 2003 A1
20030051054 Redlich et al. Mar 2003 A1
20030070077 Redlich et al. Apr 2003 A1
20030074552 Olkin et al. Apr 2003 A1
20030119484 Adachi et al. Jun 2003 A1
20030120949 Redlich et al. Jun 2003 A1
20030172279 Yudasaka Sep 2003 A1
20030182435 Redlich et al. Sep 2003 A1
20030196108 Kung Oct 2003 A1
20030210702 Kendall Nov 2003 A1
20040034772 Mao Feb 2004 A1
20040054914 Sullivan Mar 2004 A1
20040083286 Holden Apr 2004 A1
20040114558 Krishnamurthi et al. Jun 2004 A1
20040123096 Buer Jun 2004 A1
20040123119 Buer Jun 2004 A1
20040123120 Buer Jun 2004 A1
20040123121 Paaske Jun 2004 A1
20040123123 Buer Jun 2004 A1
20040148500 Olkin et al. Jul 2004 A1
20040151323 Olkin et al. Aug 2004 A1
20040196979 Cheng et al. Oct 2004 A1
20050010690 Marshall et al. Jan 2005 A1
20050097357 Smith May 2005 A1
20050132070 Redlich et al. Jun 2005 A1
20050138109 Redlich et al. Jun 2005 A1
20050138110 Redlich et al. Jun 2005 A1
20050138654 Minne Jun 2005 A1
20050166066 Ahuja et al. Jul 2005 A1
20050190758 Gai et al. Sep 2005 A1
20050198412 Pedersen et al. Sep 2005 A1
20050198498 Gaur Sep 2005 A1
20050198500 Gaur Sep 2005 A1
20050257062 Ignatius et al. Nov 2005 A1
20060015748 Goto Jan 2006 A1
20060059537 Alvermann et al. Mar 2006 A1
20060059553 Morais Mar 2006 A1
20060117126 Leung et al. Jun 2006 A1
20060129810 Jeong Jun 2006 A1
20060133604 Buer et al. Jun 2006 A1
20060140410 Aihara Jun 2006 A1
20060149965 Sharma Jul 2006 A1
20060174102 Smith et al. Aug 2006 A1
20060174112 Wray Aug 2006 A1
20070067630 Lenkov et al. Mar 2007 A1
20070067634 Siegler Mar 2007 A1
20070074020 Nishimura Mar 2007 A1
20070115812 Hughes May 2007 A1
20070136801 Le et al. Jun 2007 A1
20070160198 Orsini et al. Jul 2007 A1
20070192596 Otsuka Aug 2007 A1
20070195951 Leung Aug 2007 A1
20070195960 Goldman Aug 2007 A1
20070204159 Hara Aug 2007 A1
20070237327 Taylor Oct 2007 A1
20070245413 Andolina Oct 2007 A1
20070250921 LiVecchi Oct 2007 A1
20070258586 Huang et al. Nov 2007 A1
20080005569 Watson et al. Jan 2008 A1
20080010233 Sack Jan 2008 A1
20080022136 Mattson Jan 2008 A1
20080037777 Ignatius et al. Feb 2008 A1
20080052533 Iida et al. Feb 2008 A1
20080052765 Shinomiya et al. Feb 2008 A1
20080062803 Fronte et al. Mar 2008 A1
20080091945 Princen et al. Apr 2008 A1
20080098226 Zokumasui Apr 2008 A1
20080130889 Qj Jun 2008 A1
20080130894 Qj Jun 2008 A1
20080141023 Qi Jun 2008 A1
20080151893 Nordmark et al. Jun 2008 A1
20080168135 Redlich et al. Jul 2008 A1
20080181406 Iyer et al. Jul 2008 A1
20080183992 Martin et al. Jul 2008 A1
20080288782 Iyer Nov 2008 A1
20090019527 Winslow Jan 2009 A1
20090034734 Owens et al. Feb 2009 A1
20090043901 Mizikovsky et al. Feb 2009 A1
20090046858 Iyer et al. Feb 2009 A1
20090097661 Orsini et al. Apr 2009 A1
20090129388 Akhtar et al. May 2009 A1
20090177894 Orsini et al. Jul 2009 A1
20090178144 Redlich et al. Jul 2009 A1
20090198997 Yeap et al. Aug 2009 A1
20090228708 Trostle Sep 2009 A1
20090249084 Ogawa Oct 2009 A1
20090254572 Redlich et al. Oct 2009 A1
20090254750 Bono et al. Oct 2009 A1
20090327617 Furuichi et al. Dec 2009 A1
20100010968 Redlich et al. Jan 2010 A1
20100115260 Venkatesan et al. May 2010 A1
20100153702 Loveless Jun 2010 A1
20100153704 Winslow Jun 2010 A1
20100161981 Dodgson et al. Jun 2010 A1
20100169645 McGrew et al. Jul 2010 A1
20100198730 Ahmed et al. Aug 2010 A1
20100250497 Redlich et al. Sep 2010 A1
20100254537 Buer et al. Oct 2010 A1
20100274861 Asiedu Oct 2010 A1
20100278338 Chang et al. Nov 2010 A1
20100299313 Orsini et al. Nov 2010 A1
20110069835 Maliszewski et al. Mar 2011 A1
20110087889 Iyer et al. Apr 2011 A1
20110131138 Tsuchiya Jun 2011 A1
20110153969 Petrick Jun 2011 A1
20110153985 Saha et al. Jun 2011 A1
20110154019 Wang Jun 2011 A1
20110154031 Banerjee et al. Jun 2011 A1
20110167265 Ahuja et al. Jul 2011 A1
20110202755 Orsini et al. Aug 2011 A1
20110246766 Orsini et al. Oct 2011 A1
20110246785 Linsley et al. Oct 2011 A1
20110252236 De Atley et al. Oct 2011 A1
20110252480 Patawaran et al. Oct 2011 A1
20110264905 Ovsiannikov Oct 2011 A1
20110283339 Smith Nov 2011 A1
20110296440 Laurich et al. Dec 2011 A1
20110311048 Nagata et al. Dec 2011 A1
20120011351 Mundra et al. Jan 2012 A1
20120066509 Lapp et al. Mar 2012 A1
20120072723 Orsini et al. Mar 2012 A1
20120110316 Chamberlain et al. May 2012 A1
20120159159 Messerges et al. Jun 2012 A1
20120159183 Adams et al. Jun 2012 A1
20120166576 Orsini et al. Jun 2012 A1
20120166818 Orsini et al. Jun 2012 A1
20120179916 Staker et al. Jul 2012 A1
20120198241 O'Hare et al. Aug 2012 A1
20120204032 Wilkins et al. Aug 2012 A1
20120210119 Baxter et al. Aug 2012 A1
20120213360 Le Aug 2012 A1
20120233472 Faraboschi Sep 2012 A1
20120246489 Brelot Sep 2012 A1
20120257506 Bazlamacci et al. Oct 2012 A1
20120278529 Hars Nov 2012 A1
20120303826 Nelson Nov 2012 A1
20120324222 Massey et al. Dec 2012 A1
20120331088 O'Hare et al. Dec 2012 A1
20130013931 O'Hare et al. Jan 2013 A1
20130034229 Sauerwald Feb 2013 A1
20130054979 Basmov et al. Feb 2013 A1
20130077788 Blanchard et al. Mar 2013 A1
20130124852 Haeger May 2013 A1
20130254542 Buer et al. Sep 2013 A1
20130268931 O'Hare et al. Oct 2013 A1
20130305039 Gauda Nov 2013 A1
20130311780 Besehanic Nov 2013 A1
20130326220 Connelly et al. Dec 2013 A1
20130332724 Walters Dec 2013 A1
20140013123 Khazan et al. Jan 2014 A1
20140013452 Aissi et al. Jan 2014 A1
20140068262 Robertson et al. Mar 2014 A1
20140108782 Salinger et al. Apr 2014 A1
20140108785 Lindteigen et al. Apr 2014 A1
20140122866 Haeger et al. May 2014 A1
20140143533 Ganong, III et al. May 2014 A1
20140143538 Lindteigen May 2014 A1
20140195793 Lindteigen Jul 2014 A1
20140195798 Brugger et al. Jul 2014 A1
20140229731 O'Hare et al. Aug 2014 A1
20140245007 Buer et al. Aug 2014 A1
20140250300 Runkis et al. Sep 2014 A1
20140281526 Lindteigen Sep 2014 A1
20140324698 Dolcino et al. Oct 2014 A1
20150019443 Sheets Jan 2015 A1
20150074409 Reid et al. Mar 2015 A1
20150095645 Eldar Apr 2015 A1
20150128243 Roux et al. May 2015 A1
20150154418 Redberg Jun 2015 A1
20150163229 Lindteigen Jun 2015 A1
20150188893 Sood Jul 2015 A1
20150222604 Ylonen Aug 2015 A1
20150256518 Buer et al. Sep 2015 A1
20150271151 Brugger et al. Sep 2015 A1
20150363608 Redberg Dec 2015 A1
20150363611 Redberg Dec 2015 A1
20150381710 Kish Dec 2015 A1
20160056956 O'Hare Feb 2016 A1
20160219024 Verzun Jul 2016 A1
20160308680 Lindteigen Oct 2016 A1
20170019377 Lindteigen Jan 2017 A1
20170061141 Redberg Mar 2017 A1
20170075821 Takahashi Mar 2017 A1
20170083725 Takahashi Mar 2017 A1
20170085372 Anderson et al. Mar 2017 A1
20170093587 Glisson Mar 2017 A1
20170098096 Redberg Apr 2017 A1
20170118180 Takahashi Apr 2017 A1
20170118214 Vainstein Apr 2017 A1
20170126623 Lindteigen May 2017 A1
20170149748 Lindteigen May 2017 A1
20170201382 Lindteigen Jul 2017 A1
20170286669 O'Hare et al. Oct 2017 A1
20170359317 Anderson et al. Dec 2017 A1
20180041485 O'Hare et al. Feb 2018 A1
20180068125 Redberg Mar 2018 A1
20180082084 Takahashi et al. Mar 2018 A1
20180139061 Glisson May 2018 A1
20180176194 Xiong Jun 2018 A1
20180268173 Takahashi et al. Sep 2018 A1
20190050348 Takahashi et al. Feb 2019 A1
20210119979 Takahashi Apr 2021 A1
20220019699 Takahashi Jan 2022 A1
20220174049 Takahashi Jun 2022 A1
20220198069 Takahashi Jun 2022 A1
Foreign Referenced Citations (9)
Number Date Country
2337304 Jun 2011 EP
3350974 Jul 2018 EP
3613195 Feb 2020 EP
2005-167816 Jun 2005 JP
2012-137975 Jul 2012 JP
2014-176030 Sep 2014 JP
2017048896 Mar 2017 WO
2017074887 May 2017 WO
2018231519 Dec 2018 WO
Non-Patent Literature Citations (28)
Entry
Blum, Thomas et al. Worcester Polytechnic Institute ECE Department. “Montgomery Modular Exponentiation on Reconfigurable Hardware” Apr. 1999. pp. 1-8, 8 pages.
Carbonite White Paper—“The Better Backup Plan, Making Sense of the Cloud”; 5 pages.
Carbonite White Paper—“The Better Backup Plan, Trouble Free Backup Solutions”; 3 pages.
Korean Intellectual Property Office; International Patent Application No. PCT/US2016/058568, International Search Report and Written Opinion, dated Jan. 20, 2017; 9 pages; Korea.
Korean Intellectual Property Office; International Patent Application No. PCT/US2016/051834, International Search Report and Written Opinion, dated Dec. 21, 2016; 11 pages; Korea.
McIvor et al. The Institute of Electronics, Communications and Information Technology (ECIT) “High-Radix Systolic Modular Multiplication on Reconfigurable Hardware.” 2005. pp 13-18, 6 pages.
Nedjah, Nadia et al. State University of Rio de Janeiro, Department de Systems of Engineering and Computation. “Systolic Hardware Implementation for the Montgomery Modular Multiplication.” 6 pages.
Vasyltsov et al.; Fast Digital TRNG Based on Metastable Ring Oscillator; 17 pages; Samsung Electronics; Korea.
Wikipedia; Hardware Security Module; 6 pages.
The International Bureau of WIPO; PCT International Preliminary Report on Patentability, Issued for PCT/US2016/058568; dated May 11, 2018; 5 pages; Europe.
The International Bureau of WIPO; PCT International Preliminary Report on Patentability, Issued for PCT/US2016/051834; dated Mar. 20, 2018; 9 pages; Europe.
Korean Intellectual Property Office; International Patent Application No. PCT/US2018/035052, International Search Report and Written Opinion, dated Sep. 11, 2018; 11 pages; Korea.
European Patent Office; Extended European Search Report, issued in connection to EP16847265.2; dated Feb. 11, 2019; 11 pages; Europe.
Israeli Patent Office; Office Action issued in connection to application No. 258095; dated Dec. 17, 2019; 5 pages; Israel.
The International Bureau of WIPO; PCT International Preliminary Report on Patentability, issued in connection to PCT/US2018/035052; dated Dec. 17, 2019; 9 pages; Switzerland.
Australian Government, IP Australia; Examination Report No. 1 for Standard Patent Application, issued in connection to application No. 2016323147; dated Mar. 25, 2020; 5 pages; Australia.
European Patent Office; Extended European Search Report, issued in connection to EP18816604.5; dated Mar. 18, 2020; 8 pages; Europe.
Japanese Patent Office; Office Action Summary, issued in connection to application No. 2018-534774; dated Oct. 6, 2020; 4 pages; Japan.
European Patent Office; Communication Pursuant to Article 94(3) EPC, issued in connection to application No. EP16847265.2; dated Oct. 12, 2020; 6 pages; Europe.
Menezes, A. et al.; Chapter 7: Block Ciphers ED; Handbook of Applied Cryptography; Oct. 1, 1996; 223-282 pages; CRC Press Series on Discrete Mathematics and its Applications; CRC Press.
Jang-Jaccard et al.; Portable Key Management Service for Cloud Storage; Oct. 2012; IEEE; pp. 147-156.
European Patent Office; Communication Pursuant to Article 94(3) EPC, issued in connection to application No. 18816604.5; dated Dec. 21, 2021; 6 pages; Europe.
European Patent Office; Summons to Attend Oral Proceedings Pursuant to Rule 115(1) EPC; Feb. 21, 2022; 7 pages; Europe.
Australian Government, IP Australia; Examination Report No. 1 for Standard Patent Application, issued in connection to application No. 2021201714; dated May 19, 2022; 3 pages; Australia.
Canadian Intellectual Property Office; Examiner's Report, issued in connection to application No. 2997125; dated Dec. 29, 2022; 4 pages; Canada.
European Patent Office; Communication pursuant to Article 94(3) EPC, issued in connection to application No. 18816604.5; dated Feb. 22, 2023; 6 pages; Europe.
Japanese Patent Office; Office Action Summary, issued in connection to application No. 2021-176856; dated Nov. 8, 2022; 6 pages; Japan.
Eguro, Ken; FPGAS for trusted cloud computing; 2012; IEEE; pp. 63-70.
Related Publications (1)
Number Date Country
20220174050 A1 Jun 2022 US
Provisional Applications (2)
Number Date Country
62518117 Jun 2017 US
62219795 Sep 2015 US
Continuations (1)
Number Date Country
Parent 15688743 Aug 2017 US
Child 17672354 US
Continuation in Parts (1)
Number Date Country
Parent 15264840 Sep 2016 US
Child 15688743 US