EP1391802A2

Saving and retrieving data based on symmetric key encryption

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.

EP1391802A2, drawing sheet 1
Sheet 1 of 40

Term

Term ended

Projected expiry passed 16 April 2023, 3.4 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

85 claims: 18 independent, 67 dependent

  1. 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. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
Independent claims18