Saving and retrieving data based on symmetric key encryption
First Claim
1. A method, implemented in a computing device, the method comprising:
- receiving data, at a guard in a first layer among multiple layers, from a calling program executing in a second layer adjacent to the first layer, each of the multiple layers having a respective guard configured to control access to a resource by a program in an adjacent layer, the resource including the data;
generating ciphertext by at least;
generating, with the guard, an identifier of the calling program;
generating a bit string which is a combination of the data, the identifier of the calling program, and identifiers of multiple target programs configured to execute in the second layer;
encrypting the bit string by applying a symmetric cipher and a same symmetric key to both the data and the identifiers of the multiple target programs, wherein the ciphertext is generated in a manner that allows only the multiple target programs in the second layer to obtain the data from the ciphertext and further allows individual ones of the multiple target programs in the second layer to obtain the data from the ciphertext regardless of the other target programs of the multiple target programs in the second layer; and
returning the ciphertext to the calling program.
2 Assignments
0 Petitions
Accused Products
Abstract
In accordance with certain aspects, data is received from a calling program. Ciphertext that includes the data is generated, using a symmetric cipher, in a manner that allows only one or more target programs to be able to obtain the data from the ciphertext. In accordance with other aspects, a bit string is received from a calling program. An identifier of the calling program is checked to determine whether the calling program is allowed to access data encrypted in ciphertext of the bit string. The integrity of the data is also verified, and the data is decrypted using a symmetric key. The data is returned to the calling program only if the calling program is allowed to access the data and if the integrity of the data is successfully verified.
140 Citations
15 Claims
-
1. A method, implemented in a computing device, the method comprising:
-
receiving data, at a guard in a first layer among multiple layers, from a calling program executing in a second layer adjacent to the first layer, each of the multiple layers having a respective guard configured to control access to a resource by a program in an adjacent layer, the resource including the data; generating ciphertext by at least; generating, with the guard, an identifier of the calling program; generating a bit string which is a combination of the data, the identifier of the calling program, and identifiers of multiple target programs configured to execute in the second layer; encrypting the bit string by applying a symmetric cipher and a same symmetric key to both the data and the identifiers of the multiple target programs, wherein the ciphertext is generated in a manner that allows only the multiple target programs in the second layer to obtain the data from the ciphertext and further allows individual ones of the multiple target programs in the second layer to obtain the data from the ciphertext regardless of the other target programs of the multiple target programs in the second layer; and returning the ciphertext to the calling program. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. One or more computer storage media having stored thereon a plurality of instructions that, when executed by a processor, causes the processor to perform acts comprising:
-
receiving data, at a guard in a first layer among multiple layers, from a calling program configured to execute in a second layer, the second layer being adjacent to the first layer, the guard being configured to guard access to the data; generating, with the guard, using a same symmetric key that is associated with the guard, ciphertext by at least; generating a bit string which is a concatenation of the data, an identifier of the calling program, and identifiers of multiple target programs that are configured to execute in the second layer; generating a message authentication code (MAC) value for the bit string by applying a message authentication code (MAC) to the bit string using a first part of the same symmetric key; including the MAC value in the bit string prior to encrypting the bit string; encrypting the bit string using a symmetric cipher and a second part of the same symmetric key to form an encrypted bit string; wherein the ciphertext includes the encrypted bit string, wherein the ciphertext is generated in a manner that allows only the multiple target programs to obtain the data from the ciphertext and further allows individual ones of the multiple target programs to obtain the data from the ciphertext regardless of the other target programs of the multiple target programs; wherein the first layer is in isolation from the multiple layers, the isolation comprising at least one of time isolation or space isolation; and returning the ciphertext and the MAC value to the calling program. - View Dependent Claims (14)
-
-
15. A method, implemented in a computing device, the method comprising:
-
receiving, from a calling program that executes in a first layer among multiple layers, a request to generate and seal data in a second layer that is adjacent to the first layer; receiving, from the calling program, digests of multiple target programs, the multiple target programs being configured to execute in the first layer; generating a random value to use as the data; isolating the second layer using time isolation and space isolation; generating ciphertext by; generating a bit string which is a combination of the data and digests of the multiple target programs in the first layer; encrypting the bit string using a symmetric key; the ciphertext being generated in a manner that allows only the multiple target programs in the first layer to obtain the data from the ciphertext and further allows individual ones of the multiple target programs to obtain the data from the ciphertext regardless of the other target programs of the multiple target programs, wherein the isolating and the random value allow the ciphertext to be maintained during a single execution of the calling program; and returning the ciphertext to the calling program.
-
Specification