Saving and retrieving data based on symmetric key encryption
First Claim
1. A method, implemented in a computing device, the method comprising:
- receiving data from a calling program; and
generating, using a symmetric cipher, ciphertext that includes the data, wherein the ciphertext is generated in a manner that allows only one or more target programs to be able to obtain the data from the ciphertext.
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.
122 Citations
85 Claims
-
1. A method, implemented in a computing device, the method comprising:
-
receiving data from a calling program; and
generating, using a symmetric cipher, ciphertext that includes the data, wherein the ciphertext is generated in a manner that allows only one or more target programs to be able to obtain the data from the ciphertext. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method, implemented in a computing device, the method comprising:
-
receiving a bit string from a calling program;
checking an identifier of the calling program to determine whether the calling program is allowed to access data encrypted in ciphertext of the bit string;
verifying the integrity of the data;
decrypting the data using a symmetric key; and
returning the data 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. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
-
-
30. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors of a computing device, causes the one or more processors to:
-
receive data from a calling program;
generate, using a symmetric cipher, ciphertext that includes the data, wherein the ciphertext is generated in a manner that allows only one or more target programs to be able to obtain the data from the ciphertext;
after the ciphertext is generated, receive a bit string from another calling program;
check an identifier of the other calling program to determine whether the other calling program is allowed to access data encrypted in the ciphertext of the bit string;
verify the integrity of the data;
decrypt the data using a symmetric key; and
return the data to the other calling program only if the other calling program is allowed to access the data and if the integrity of the data is successfully verified. - View Dependent Claims (31)
-
-
32. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors of a computing device, causes the one or more processors to:
-
obtain an identifier of a calling program;
generate a bit string including the identifier of the calling program, data to be sealed for the calling program, and an identifier of a target program that is allowed to unseal the data;
generate a message authentication code (MAC) value for the bit string;
encrypting the bit stream using a symmetric key and a symmetric cipher; and
returning the MAC value and the encrypted bit string to the calling program. - View Dependent Claims (33, 34, 35)
-
-
36. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors of a computing device, causes the one or more processors to:
-
receive, from a calling program, a bit string including ciphertext and a message authentication code (MAC) value;
decrypt the ciphertext in the bit string using a symmetric key to generate plaintext data;
generate a message authentication code (MAC) value for at least a portion of the plaintext data;
check whether the MAC value in the bit string is equal to the generated MAC value;
check whether the calling program is allowed to unseal the plaintext data; and
return the plaintext data to the calling program only if the MAC value in the bit string is equal to the generated MAC value and if the calling program is allowed to unseal the plaintext data. - View Dependent Claims (37, 38)
-
-
39. A system comprising:
-
means for receiving data from a calling program; and
means for using a symmetric key to generate ciphertext that includes the data, wherein the ciphertext is generated in a manner that allows only one or more target programs to be able to obtain the data from the ciphertext.
-
-
40. A system comprising:
-
means for receiving a bit string from a calling program;
means for checking an identifier of the calling program to determine whether the calling program is allowed to access data encrypted in ciphertext of the bit string;
means for verifying the integrity of the data;
means for decrypting the data using a symmetric key; and
means for returning the data 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.
-
-
41. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors of a computing device, causes the one or more processors to:
-
identify data to be sealed; and
invoke a seal operation, passing the data as an input to the seal operation and identifying one or more conditions that are to be satisfied in order for the data to be unsealed. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49)
-
-
50. A method, implemented in a computing device, the method comprising:
-
receiving, from a calling program, a request to generate and seal data;
generating a random value to use as the data; and
generating ciphertext that includes the data, wherein the ciphertext is generated in a manner that allows only one or more target programs to be able to obtain the data from the ciphertext.
-
-
51. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors of a computing device, causes the one or more processors to:
-
invoke a genseal operation, identifying one or more conditions that are to be satisfied in order for data to be unsealed; and
have, in response to the genseal operation, the data randomly generated sealed so that the data can be unsealed only if the one or more conditions are satisfied. - View Dependent Claims (52, 53, 54, 55, 56, 57, 58)
-
-
59. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors of a computing device, causes the one or more processors to:
-
invoke an unseal operation in order to have a bit string decrypted, passing the bit string as an input to the unseal operation; and
receive, in response to invoking the unseal operation, at least a portion of the decrypted bit string only if the plurality of instructions are allowed to unseal the bit string, wherein the data is decrypted using a symmetric cipher. - View Dependent Claims (60, 61)
-
-
62. One or more computer readable media having stored thereon a plurality of instructions that, when executed by one or more processors of a computing device, causes the one or more processors to:
-
invoke an unseal operation in order to obtain data from a sealed bit string; and
receive, in response to invoking the unseal operation, the data from the sealed bit string only if one or more conditions that are to be satisfied in order for the data to be unsealed are satisfied. - View Dependent Claims (63, 64, 65, 66)
-
-
67. A system comprising:
-
a plurality of hierarchical layers including a lowest layer that guards a root resource;
wherein the plurality of hierarchical layers further includes one or more intermediate layers that act as principals that request access to the root resource from the next lower layer and that act as guards to the root resource toward principals in the next higher layer; and
allowing access to the root resource only to principals authorized to access the root resource. - View Dependent Claims (68, 69, 70)
-
-
71. A system comprising:
-
a plurality of hierarchical layers including a lowest layer that guards a root resource;
a plurality of guards included in each of the plurality of hierarchical layers, wherein each guard is a service guard or a disclosure guard;
wherein each service guard allows principals in the next higher layer to request operations to be performed with protected data, and wherein the service guard performs the operation only if a condition is satisfied; and
wherein each disclosure guard allows principals in the next higher layer to request protected data to be disclosed to the principals, and wherein the disclosure guard discloses the protected data only if another condition is satisfied. - View Dependent Claims (72, 73, 74, 75, 76)
-
-
77. A system comprising:
-
a plurality of hierarchical layers including a lowest layer that guards a root resource;
wherein the plurality of hierarchical layers further includes one or more intermediate layers that, act as principals that request, from the next lower layer, operations to be performed using the root resource, and act as guards to the root resource toward principals in the next higher layer; and
allowing the operations to be performed using the root resource only for principals authorized to access the root resource. - View Dependent Claims (78, 79)
-
-
80. One or more computer readable media having stored thereon a plurality of instructions to implement a BoundMAC operation, wherein the plurality of instructions, when executed by one or more processors of a computing device, causes the one or more processors to:
-
receive, as an input, both data and a bound key blob, wherein the bound key blob is bound to the one or more processors;
recover, from the bound key blob, a bound symmetric key associated with the bound key blob;
generate a message authentication code (MAC) over the data using the bound symmetric key; and
output the digital signature. - View Dependent Claims (81)
-
-
82. One or more computer readable media having stored thereon a plurality of instructions to implement a BoundEncrypt operation, wherein the plurality of instructions, when executed by one or more processors of a computing device, causes the one or more processors to:
-
receive, as an input, both data to be encrypted and a bound key blob, wherein the bound key blob is bound to the one or more processors;
recover, based on data in the bound key blob, a bound symmetric key associated with the bound key blob;
encrypt the data using the bound symmetric key to generate ciphertext; and
output the ciphertext. - View Dependent Claims (83)
-
-
84. One or more computer readable media having stored thereon a plurality of instructions to implement a BoundDecrypt operation, wherein the plurality of instructions, when executed by one or more processors of a computing device, causes the one or more processors to:
-
receive, as an input, both ciphertext and a bound key structure, wherein the bound key structure is bound to the one or more processors;
recover, from the bound key structure, a symmetric key associated with the bound key structure;
decrypt the ciphertext using the symmetric key to generate plaintext corresponding to the ciphertext; and
output the plaintext. - View Dependent Claims (85)
-
Specification