Patent Description:
Due to their complexity, currently existing key management services require separate groups of servers per project and therefore introduce tremendous overall costs due to the additional hardware and overhead. These services also require large storage resources to store the numerous keys being managed and used for encryption and decryption purposes, and the storage of encrypted data. Moreover, these services utilize complex exponential processing during key generation and derivation processing, meaning that they are also processor intensive.

Further still, conventional access permission protocols are binary, such that a user either is granted full access to a key and can therefore encrypt and decrypt data or has no access to a key at all. However, in some instances, granting a user encryption only permissions are needed or would be beneficial for a specific task. But there are no mechanisms that allow encryption only permissions for symmetric encryption schemes. As such, under conventional approaches, when a user requires encryption permission, full access is provided to that user, which violates the principle of least privilege (i.e., a concept in computer security that limits users' access rights to only what are strictly required to do their jobs). As can be appreciated, all of these results are undesirable. Beierle: "SKINNY-AEAD and SKINNY-Hash"; and A. Biryukov, D. Khovratovich: "PAEQ: Parallelizable Permutation-Based Authenticated Encryption", disclose the existence of encryption-only cryptographic schemes.

Accordingly, there is a need and desire for a new and improved key derivation process that overcomes the shortcomings of today's key management services.

Many conventional methods lack the proper protocols to prevent a malicious server from being forced to derive a key to a value of its choice. For example, in one conventional approach, Oblivious Pseudorandom Function (OPRF) is a two-party protocol for computing the output of a pseudorandom function (PRF). One party (the server) holds the PRF secret key, and the other (the client) holds the PRF input. The 'obliviousness' property ensures that the server does not learn anything about the client's input during the evaluation. In OPRF systems, there is no distinction between derivation for encryption protocols and derivation for decryption protocols, thus these protocols cannot be used to block decryption. As such, a malicious OPRF server could be forced to derive a key to enable decryption, thereby violating a vital security property that is required by most security / intrusion detection and prevention systems.

In contrast to conventional approaches, the disclosed solution may involve a key derivation protocol and management system that implements a unique protocol in which (remote) key derivation may be executed between the server that holds the root key and a client that holds the derivation data and obtains an encryption key. The key derivation protocol may include two separate derivation paths, one path that derives a key for encryption and a second path that derives a key for decryption. The disclosed solution combines the key derivation protocol with a policy that blocks the decryption path. Some embodiments described herein may enable the blocking of decryption permissions for users that should not have permission to decrypt on given system, using a novel key derivation protocol that derives a new key with a random string for each derivation encryption request. The generation of a new key with a random string enables the disclosed key derivation protocol and management system to block decryption requests from certain entities, while simultaneously enabling the key derivation protocol and management system to benefit from the efficiency of symmetric key encryption techniques.

Moreover, in one or more embodiments, the derivation data may be hashed and may include some information, potentially secret, associated with the data to be encrypted. The use of the hashed data and processing disclosed herein provides the advantage of simplifying the computations used throughout the process such as e.g., by removing complex derivation computations that utilize exponents and exponential processing. Instead, the principles disclosed herein are based on simplified probabilistic and multiplication operations rather than complex exponential processing, reducing the load on the processors when carrying out the disclosed protocol. In addition, the hashed data and processing disclosed herein allow for the use of very short headers when encrypted data (e.g., ciphertext) is stored. Thus, the principles disclosed herein require significantly less storage resources to store the keys being managed and used for encryption and decryption purposes.

Moreover, the disclosed protocol ensures that the server does not get access to or learn anything about the client's derived key, while the client does not get access to or learn anything about the server's root key. Significantly, the server cannot force the derived key to a value of its choice. These features allow the protocol to run simultaneous mutually distrustful key derivation processes on the same cluster of machines, thereby reducing the number of servers needed when keys for multiple projects are being derived and or managed.

In one or more embodiments, the protocol may be executed between a client computing device and one or more server computing devices in communication with the client computing device. In one or more embodiments, the protocol may have the following high-level structure: (<NUM>) the client computing device may provide blinded and or hashed derivation data, while the one or more server computing devices (<NUM>) may provide an encrypted key, and (<NUM>) may compute a derived key based on the root key injected with a random string, and the derivation data. In one or more embodiments, the derived key may be blinded when on the one or more server computing devices, meaning that the one or more server computing devices will not have access to the cleartext derived key, and can only be unblinded (revealed) by the client.

<FIG> shows an example system <NUM> configured to perform multitenant key derivation according to an embodiment of the present disclosure. In the illustrated example, the system <NUM> includes elements such as a remote crypto cluster (RCC) <NUM>, virtual key manager (VKM) <NUM>, project key server (PKS) <NUM>, and/or at least one client device <NUM>. Each of these elements may include one or more physical computing devices. In one or more embodiments, the RCC <NUM> may be merged into the VKM <NUM>. In some embodiments, the client device <NUM> may be any device configured to provide access to remote applications. For example, the client device <NUM> may be a smartphone, personal computer, tablet, laptop computer, or other device. It should be appreciated that the disclosed principles should not be limited to the illustrated example and that they can be applied to one or more server computing devices that are separate from a client computing device.

The elements may communicate with one another through at least one network <NUM>. Network <NUM> may be the Internet and/or other public or private networks or combinations thereof. For example, in some embodiments, at least the RCC <NUM>, VKM <NUM>, and PKS <NUM> may communicate with one another over secure channels (e.g., one or more TLS/SSL channels). In some embodiments, communication between at least some of the elements of the system <NUM> may be facilitated by one or more application programming interfaces (APIs). APIs of the system <NUM> may be proprietary and/or may be examples available to those of ordinary skill in the art such as Amazon® Web Services (AWS) APIs or the like.

Specific examples of the processing performed by the elements of the system <NUM> in combination with one another are given below with respect to the key derivation encryption process <NUM> illustrated in <FIG>, and the key derivation decryption process <NUM> illustrated in <FIG>.

The RCC <NUM>, VKM <NUM>, PKS <NUM>, and client device <NUM> are each depicted as single devices for ease of illustration, but those of ordinary skill in the art will appreciate that the RCC <NUM>, VKM <NUM>, PKS <NUM>, and/or client device <NUM> may be embodied in different forms for different implementations. For example, the RCC <NUM> may be merged into the VKM <NUM> and they may reside on one or more computing devices. In other embodiments, the RCC <NUM>, VKM <NUM>, and/or PKS <NUM> may include a plurality of devices. In another example, a plurality of client devices <NUM> may be connected to the network <NUM> and may use the key derivation services described herein. Furthermore, as noted above, the network <NUM> may be a single network or a combination of networks, which may or may not all use similar communication protocols and/or techniques.

<FIG> shows an example key derivation encryption process <NUM> according to an embodiment of the present disclosure. The entire system <NUM> may work together to perform process <NUM> in a distributed manner. The process <NUM> may consist of a derive twice application programming interface (API). In accordance with the disclosed principles, the client device <NUM> may provide blinded and or hashed derivation data, the VKM <NUM> may provide an encrypted key, and the RCC <NUM> may compute a derived key based on the root key and the derivation data. In one or more embodiments, the derived key may be blinded when on the RCC, <NUM> meaning that the RCC <NUM> will not have access to the cleartext derived key, and can only be unblinded (revealed) by the client device <NUM>. This arrangement will yield a low-cost, multitenant system <NUM> with strong protection of stored and/or managed data. The process <NUM> is presented as deriving a single new key per derivation request and it should be appreciated that process <NUM> may be repeated as new derivation requests are received.

Some portions of process <NUM> and other processes discussed herein are described as using specific equations. However, it will be clear to those of ordinary skill in the art that some portions of process <NUM> may be performed with modifications to the example equations and/or with different processing altogether. The following definitions may be useful for understanding the example equations presented herein:.

At <NUM>, client device <NUM> is assigned a policy that defines access permissions to the APIs defined by the key derivation protocol. For example, client device <NUM> may assigned a policy the permits the client device <NUM> either full access (i.e., to both encrypt and decrypt) or to encrypt only.

At <NUM>, the client device <NUM> sends an encryption derive request to the RCC <NUM>. In some instances, the request may be transmitted to the RCC <NUM> with a master key (which may be masked/blinded), a key name, and derivation data. Derivation data may include but is not limited to a table name, column name, and / or data included in a table or column.

At <NUM>, once the derive request is received at the RCC <NUM>, the RCC computes a digest parameter as the keyed hash function of vj and d (i.e., digest = HKDF(vj, d, <NUM>)). The RCC <NUM> may also compute a modified d parameter (i.e., d) as the keyed hash function of vj and digest (i.e., d = HKDF(vj, digest, <NUM>) ▪ zj▪ bi-<NUM>). Here, the RCC <NUM> may additionally generate a random string and inject it into the digest calculation. The random string may be one or more of a timestamp, a random phrase, a predictable phrase, a series of numbers, and/or a series of random alphanumeric characters that have no particular pattern. The injection of the random string into the digest ensures that a fresh key is created that cannot be subsequently used for decryption. The random string may be generated according to predefined rules. For example, the random string may be generated at predetermined time intervals (e.g., every second, minute, hour, day, etc.). In addition, or alternatively, the random string may be generated subject to predetermined rules related to the needs of a project or the required permissions of a particular user or team.

At <NUM>, the RCC <NUM> sends a message "message (Remote-derive-Client, digest, d)" to the client device <NUM> (Ci) requesting that the client compute a derived key. The message (Remote-derive-Client, digest, d) may send the parameters digest and d, to the client device <NUM> (Ci) along with a partially derived key (i.e., "partial derived key"). In the illustrated embodiment, the RCC <NUM> is shown as performing step <NUM>, but it should be appreciated that this step may be performed by the VKM <NUM>, particularly if the RCC <NUM> is merged into the VKM <NUM>.

At <NUM>, after receiving the message (Remote-derive-Client, digest, d), the client device <NUM> (Ci) computes the derived key dd as the hash function of w ⊕ tj and d ▪ bj (i.e., dd = HKDF((w ⊕ tj, d ▪ bi, <NUM>/<NUM>). In addition, the client device <NUM> (Ci) may encrypt the message m using the derived key dd and store the digest and ciphertext.

According to the process <NUM>, blinded and or hashed derivation data DD (e.g., from the client and only known by the client) and an encrypted key (e.g., from the VKM) may be used to compute a derived key (e.g., by the RCC or VKM) that is blinded when on the RCC (or VKM). This means that the computing device implementing the VKM and RCC does not get access to or learn anything about the client's derived key, while the client does not get access to or learn anything about the server's root key. As such, privacy is ensured throughout the encryption, storage and decryption of the message m. Moreover, as discussed in more detail below in relation to <FIG>, this additionally ensures that the derived key cannot be used for decryption in one or more downstream processes.

<FIG> shows an example process for computing a derived key <NUM> according to an embodiment of the present disclosure. The entire system <NUM> may work together to perform process <NUM> in a distributed manner.

At <NUM>, the client device <NUM> (Ci) sends a decryption derive request (Remote-derive-VKM, d, ei, σi, key-name) to the RCC <NUM>. Here, the client device <NUM> may identify the ciphertext stored on the client device <NUM> and extract a digest from the header of the ciphertext. The decryption derive request may include a key name and digest data.

At <NUM>, once the request is received at the RCC <NUM>, a policy assigned to client device <NUM> is verified at the RCC <NUM> before the message is processed by the VKM <NUM>. For example, upon receiving the decryption derive request (Remote-derive-VKM, d, ei, σi, key-name), the VKM <NUM> may verify the policy assigned to the client device <NUM>.

At <NUM>, if it is determined that the client device <NUM> was assigned an encryption only policy, then the decryption derive request is denied at <NUM>, at which point process <NUM> terminates.

Alternatively, if at <NUM>, if it is determined that the policy assigned to client device <NUM> was assigned full access permission (i.e., both encryption and decryption permission), then the decryption derive request is processed at <NUM>.

At <NUM>, the RCC <NUM> computes the digest parameter as the keyed hash function of vj and d (i.e., digest = HKDF(vj, d, <NUM>)). The RCC <NUM> may also compute a modified d parameter (i.e., d) as the keyed hash function of vj and digest (i.e., d = HKDF(vj, digest, <NUM>) ▪ zj▪ bi-<NUM>). In addition, the RCC <NUM> may send a message "message (Remote-derive-Client, digest, d)" to the client device <NUM> (Ci) requesting that the client compute a derived key. The message (Remote-derive-Client, digest, d) may send the parameters digest and d to the client device <NUM> (Ci). While this embodiment has been discussed with RCC <NUM> as performing steps <NUM>-<NUM>, it should be appreciated that this process <NUM> may be performed by the VKM <NUM>, particularly if the RCC <NUM> is merged into the VKM <NUM>.

<FIG> is a block diagram of an example computing device <NUM> that may implement various features and processes as described herein. For example, in some embodiments the computing device <NUM> may function as the RCC <NUM>, VKM <NUM>, PKS <NUM>, or client device <NUM>, or a portion of any of these elements. The computing device <NUM> may be implemented on any electronic device that runs software applications derived from instructions, including without limitation personal computers, servers, smart phones, media players, electronic tablets, game consoles, email devices, etc. In some implementations, the computing device <NUM> may include one or more processors <NUM>, one or more input devices <NUM>, one or more display devices <NUM>, one or more network interfaces <NUM>, and one or more computer-readable mediums <NUM>. Each of these components may be coupled by a bus <NUM>.

The display device <NUM> may be any known display technology, including but not limited to display devices using Liquid Crystal Display (LCD) or Light Emitting Diode (LED) technology. The processor(s) <NUM> may use any known processor technology, including but not limited to graphics processors and multi-core processors. The input device <NUM> may be any known input device technology, including but not limited to a keyboard (including a virtual keyboard), mouse, track ball, and touch-sensitive pad or display. The bus <NUM> may be any known internal or external bus technology, including but not limited to ISA, EISA, PCI, PCI Express, USB, Serial ATA or FireWire. The computer-readable medium <NUM> may be any non-transitory medium that participates in providing instructions to the processor(s) <NUM> for execution, including without limitation, non-volatile storage media (e.g., optical disks, magnetic disks, flash drives, etc.), or volatile media (e.g., SDRAM, ROM, etc.).

The computer-readable medium <NUM> may include various instructions for implementing an operating system <NUM> (e.g., Mac OS®, Windows®, Linux). The operating system may be multi-user, multiprocessing, multitasking, multithreading, real-time, and the like. The operating system may perform basic tasks, including but not limited to: recognizing input from the input device <NUM>; sending output to the display device <NUM>; keeping track of files and directories on the computer-readable medium <NUM>; controlling peripheral devices (e.g., disk drives, printers, etc.) which can be controlled directly or through an I/O controller; and managing traffic on the bus <NUM>. The network communications instructions <NUM> may establish and maintain network connections (e.g., software for implementing communication protocols, such as TCP/IP, HTTP, Ethernet, telephony, etc.). The network interface(s) <NUM> may be used for receiving instructions (such as the key derivation service instructions <NUM>) by way of a computer-readable communication medium (for example carrier waves, transmission signals or the like). Similarly the bus <NUM> may use a computer-readable communication medium for transfer of instructions between the medium <NUM> and the processor(s) <NUM>. In this way it will be understood that computer-readable medium may include both a computer-readable storage medium (as exemplified by medium(s) <NUM>) and/or a computer-readable transmission medium.

The key derivation service instructions <NUM> may include instructions that perform the various multitenant key derivation functions as described herein. The key derivation service instructions <NUM> may vary depending on whether the computing device <NUM> is functioning as the RCC <NUM>, VKM <NUM>, PKS <NUM>, or client device <NUM>. For example, the RCC <NUM> may include key derivation service instructions <NUM> for requesting data from other devices and using it to compute a blinded derived key. The client device <NUM> may include key derivation service instructions <NUM> for generating public/private key pairs and using the private key to decrypt the blinded derived key. The VKM <NUM> and/or PKS <NUM> may include key derivation service instructions <NUM> for generating and/or transmitting data used throughout the process <NUM>, process <NUM> and or required by other devices.

The applications <NUM> may be an application that uses or implements the processes described herein and/or other processes. The processes may also be implemented in the operating system <NUM>.

The described features may be implemented in one or more computer programs that may be executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program may be written in any form of programming language (e.g., Objective-C, Java), including compiled or interpreted languages, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.

Suitable processors for the execution of a program of instructions may include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors or cores, of any kind of computer. Generally, a processor may receive instructions and data from a read-only memory or a random access memory or both. The baseline elements of a computer may include a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer may also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data may include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).

To provide for interaction with a user, the features may be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.

The features may be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination thereof. The components of the system may be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a telephone network, a LAN, a WAN, and the computers and networks forming the Internet.

The computer system may include clients and servers. A client and server may generally be remote from each other and may typically interact through a network. The relationship of client and server may arise by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

One or more features or steps of the disclosed embodiments may be implemented using an API. An API may define one or more parameters that are passed between a calling application and other software code (e.g., an operating system, library routine, function) that provides a service, that provides data, or that performs an operation or a computation.

The API may be implemented as one or more calls in program code that send or receive one or more parameters through a parameter list or other structure based on a call convention defined in an API specification document. A parameter may be a constant, a key, a data structure, an object, an object class, a variable, a data type, a pointer, an array, a list, or another call. API calls and parameters may be implemented in any programming language. The programming language may define the vocabulary and calling convention that a programmer will employ to access functions supporting the API.

Thus, from one perspective, there have been disclosed systems and methods that may be used to provide policies and protocols for blocking decryption capabilities in symmetric key encryption using a unique protocol in which key derivation may include injecting a random string into each key derivation. For example, a policy may be assigned to each client device indicating whether the client device has been assigned encryption only permission or full access permission to both encrypt and decrypt data. The disclosed protocol prevents client devices with encryption only permission from obtaining keys for decryption.

While various embodiments have been described above, it should be understood that they have been presented by way of example and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and detail can be made therein without departing from the spirit and scope. In fact, after reading the above description, it will be apparent to one skilled in the relevant art(s) how to implement alternative embodiments. For example, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.

In addition, it should be understood that any figures which highlight the functionality and advantages are presented for example purposes only. The disclosed methodology and system are each sufficiently flexible and configurable such that they may be utilized in ways other than that shown.

Claim 1:
A system including one or more processors configured to implement a protocol for blocking decryption comprising:
receiving (<NUM>) an encryption derive request from a client device;
generating a random string according to one or more predefined rules; characterized by further comprising:
generating (<NUM>) a digest parameter based on the random string and a masked secret key;
generating a blinded partial derived key based on the digest parameter; and
transmitting (<NUM>) the blinded partial derived key to the client device, wherein the partial derived key is configured to used to generate a derived key for encrypting data.