CA2425006C

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.

CA2425006C, drawing sheet 1
Sheet 1 of 11

Term

No projected expiry on record.

  1. Priority
  2. Filed
  3. Granted
  4. Today

70 claims: 70 independent, 0 dependent

  1. 1
    CLAIMS:1. 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 5 calling program is allowed to access data encrypted in ciphertext of the bit string, the checking comprising: obtaining, from the bit string, identifiers of multiple target programs that are allowed to access the data;checking whether one of the identifiers of the multiple target programs 10 is the same as the identifier of the calling program;determining that the calling program is allowed to access the data if one of the identifiers of the multiple target programs is the same as the identifier of the calling program;and determining that the calling program is not allowed to access the data if 15 none of the identifiers of the multiple target programs is the same as the identifier of the calling program;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 20 allowed to access the data and if the integrity of the data is successfully verified.
  2. 2
    A method as recited in claim 1, wherein the data comprises a cryptographic key. CA 02425006 2011-08-09 52829-11
  3. 3
    A method as recited in claim 1, further comprising:returning, to the calling program, an identifier of a program that previously sealed the data.
  4. 4
    A method as recited in claim 3, wherein the identifier of the program
  5. 5
    5 that previously sealed the data comprises a digest value generated by applying a cryptographic hash function to the program that previously sealed the data. 5. A method as recited in claim 1, wherein the identifier of the calling program comprises a digest value generated by applying a cryptographic hash function to the target program. 10
  6. 6
    A method as recited in claim 1, wherein receiving the bit string comprises receiving the bit string as part of an UnSeal operation.
  7. 7
    A method as recited in claim 1, wherein the bit string comprises a combination of the ciphertext and a message authentication code (MAC) value for the ciphertext. 15
  8. 8
    A method as recited in claim 1, wherein the bit string comprises a combination of the ciphertext and a message authentication code (MAC) value for the data.
  9. 9
    A method as recited in claim 1, wherein the bit string comprises a ciphertext generated from a combination of the data and a message authentication 20 code (MAC) value for the data.
  10. 10
    A method as recited in claim 1, wherein the verifying comprises:obtaining the data by decrypting the ciphertext;generating a message authentication code (MAC) value for the obtained data;CA 02425006 2011-08-09 52829-
  11. 11
    11 comparing the generated MAC value to a MAC value received as part of the bit string;and successfully verifying the integrity of the data only if the generated MAC value is equal to the MAC value received as part of the bit string. 5 11. A method as recited in claim 10, wherein the generating the MAC value comprises generating the MAC value using a first part of the symmetric key, and wherein the decrypting the data comprises decrypting the data using a second part of the symmetric key.
  12. 12
    One or more computer storage media having stored thereon a plurality 10 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 and identifiers of multiple target programs that are allowed to access the data;15 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 one of the multiple target programs;verify the integrity of the data;20 decrypt the data using a symmetric key;and return the data to the other calling program only if the other calling program is one of the multiple target programs and if the integrity of the data is successfully verified. CA 02425006 2011-08-09 52829-11
  13. 13
    One or more computer storage media as recited in claim 12, wherein the calling program and the other calling program are the same program.
  14. 14
    One or more computer storage media as recited in claim 12, wherein to verify the integrity ofthe data is to verify the integrity using one part ofthe symmetric key and wherein to decrypt the data is to decrypt the data using another part of the symmetric key.
  15. 15
    One or more computer storage 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 application;generate a bit string including the identifier ofthe calling application, data to be sealed for the calling application, and identifiers of multiple target applications that are allowed to unseal the data;generate a message authentication code (MAC) value for the bit string;encrypt the bit string using a symmetric key and a symmetric cipher;and return the MAC value and the encrypted bit string to the calling application.
  16. 16
    One or more computer storage media as recited in claim 15, wherein the instructions that when executed by the one or more processors cause the one or more processors to obtain the identifier of the calling application comprise instructions that when executed by the one or more processors cause the one or more processors to generate a digest of the calling application using a cryptographic hash function.
  17. 17
    One or more computer storage media as recited in claim 15, wherein the instructions when executed by the one or more processors further cause the one or more processors to receive, from the calling application, the data. CA 02425006 2011-08-09 52829-11
  18. 18
    One or more computer storage media as recited in claim 15, wherein the instructions when executed by the one or more processors further cause the one or more processors to generate a random value to be used as the data.
  19. 19
    One or more computer storage media as recited in claim 15, wherein the symmetric key includes a first part and a second part that are independent of one another, wherein to generate the MAC value is to generate the MAC value with the first part of the symmetric key, and wherein to encrypt the bit string is to encrypt the bit string with the second part of the symmetric key.
  20. 20
    One or more computer storage 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 an identifier of the calling program is included as one of multiple target program identifiers in the plaintext data, the multiple target program identifiers identifying multiple target programs that are 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 identifier of the calling program is included as one of the multiple target program identifiers in the plaintext data. CA 02425006 2011-08-09 52829-11
  21. 21
    One or more computer storage media as recited in claim 20, wherein the identifier of the calling program comprises a digest ofthe calling program generated using a cryptographic hash function.
  22. 22
    One or more computer storage media as recited in claim 20, wherein to 5 generate the MAC value is to generate the MAC value using a first part of the symmetric key, and wherein to decrypt the ciphertext in the bit string is to decrypt the ciphertext in the bit string using a second part of the symmetric key.
  23. 23
    A device comprising a plurality of hardware means, the plurality of hardware means including:10 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, the means for checking determining that the calling program is allowed to access the data if the identifier of the calling program is included as one of multiple 15 target program identifiers in the ciphertext;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 ofthe data is successfully 20 verified.
  24. 24
    One or more computer storage 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 a bit string from a calling program;CA 02425006 2011-08-09 52829-11 check an identifier of the calling program to determine whether the calling program is allowed to access data encrypted in ciphertext of the bit string, wherein to check the identifier is to: obtain, from the bit string, identifiers of multiple target programs that are 5 allowed to access the data;check whether one of the identifiers of the multiple target programs is the same as the identifier of the calling program;determine that the calling program is allowed to access the data if one of the identifiers of the multiple target programs is the same as the identifier of the 10 calling program;and determine that the calling program is not allowed to access the data if none of the identifiers of the multiple target programs is the same as the identifier of the calling program;verify the integrity of the data;15 decrypt the data using a symmetric key;and return 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.
  25. 25
    One or more computer storage media as recited in claim 24, wherein the data comprises a cryptographic key. 20
  26. 26
    One or more computer storage media as recited in claim 24, wherein the plurality of instructions when executed by the one or more processors further causes the one or more processors to:return, to the calling program, an identifier of a program that previously sealed the data. CA 02425006 2011-08-09 52829-11
  27. 27
    One or more computer storage media as recited in claim 26, wherein the identifier of the program that previously sealed the data comprises a digest value generated by applying a cryptographic hash function to the program that previously sealed the data.
  28. 28
    One or more computer storage media as recited in claim 24, wherein the identifier of the calling program comprises a digest value generated by applying a cryptographic hash function to the target program.
  29. 29
    One or more computer storage media as recited in claim 24, wherein to receive the bit string is to receive the bit string as part of an UnSeal operation.
  30. 30
    One or more computer storage media as recited in claim 24, wherein the bit string comprises a combination of the ciphertext and a message authentication code (MAC) value for the ciphertext.
  31. 31
    One or more computer storage media as recited in claim 24, wherein the bit string comprises a combination of the ciphertext and a message authentication code (MAC) value for the data.
  32. 32
    One or more computer storage media as recited in claim 24, wherein the bit string comprises a ciphertext generated from a combination of the data and a message authentication code (MAC) value for the data.
  33. 33
    One or more computer storage media as recited in claim 24, wherein to verify the integrity of the data is to:obtain the data by decrypting the ciphertext;generate a message authentication code (MAC) value for the obtained data;compare the generated MAC value to a MAC value received as part of the bit string;and CA 02425006 2011-08-09 52829-11 successfully verify the integrity of the data only if the generated MAC value is equal to the MAC value received as part of the bit string.
  34. 34
    One or more computer storage media as recited in claim 33, wherein to generate the MAC value is to generate the MAC value using a first part of the 5 symmetric key, and wherein to decrypt the data is to decrypt the data using a second part of the symmetric key.
  35. 35
    A computing device comprising:a processor;and a memory, coupled to the processor, storing a plurality of instructions that 10 when executed by the processor cause the processor to perform acts 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, the checking comprising: 15 obtaining, from the bit string, identifiers of multiple target programs that are allowed to access the data;checking whether one of the identifiers of the multiple target programs is the same as the identifier of the calling program;determining that the calling program is allowed to access the data if one 20 of the identifiers of the multiple target programs is the same as the identifier of the calling program;and determining that the calling program is not allowed to access the data if none of the identifiers of the multiple target programs is the same as the identifier of the calling program;CA 02425006 2011-08-09 52829-11 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.
  36. 36
    A computing device as recited in claim 35, wherein the data comprises a cryptographic key.
  37. 37
    A computing device as recited in claim 35, wherein the plurality of instructions when executed by the processor further cause the processor to perform acts comprising:returning, to the calling program, an identifier of a program that previously sealed the data.
  38. 38
    A computing device as recited in claim 37, wherein the identifier of the program that previously sealed the data comprises a digest value generated by applying a cryptographic hash function to the program that previously sealed the data.
  39. 39
    A computing device as recited in claim 35, wherein the identifier of the calling program comprises a digest value generated by applying a cryptographic hash function to the target program.
  40. 40
    A computing device as recited in claim 35, wherein receiving the bit string comprises receiving the bit string as part of an UnSeal operation.
  41. 41
    A computing device as recited in claim 35, wherein the bit string comprises a combination of the ciphertext and a message authentication code (MAC) value for the ciphertext.
  42. 42
    A computing device as recited in claim 35, wherein the bit string comprises a combination of the ciphertext and a message authentication code (MAC) value for the data. CA 02425006 2011-08-09 52829-11
  43. 43
    A computing device as recited in claim 35, wherein the bit string comprises a ciphertext generated from a combination of the data and a message authentication code (MAC) value for the data.
  44. 44
    A computing device as recited in claim 35, wherein the verifying 5 comprises:obtaining the data by decrypting the ciphertext;generating a message authentication code (MAC) value for the obtained data;comparing the generated MAC value to a MAC value received as part 10 of the bit string;and successfully verifying the integrity of the data only if the generated MAC value is equal to the MAC value received as part of the bit string.
  45. 45
    A computing device as recited in claim 44, wherein the generating the MAC value comprises generating the MAC value using a first part of the symmetric 15 key, and wherein the decrypting the data comprises decrypting the data using a second part of the symmetric key.
  46. 46
    A method, implemented in a computing device, the method comprising:receiving data from a calling program;generating, using a symmetric cipher, ciphertext that includes the data 20 and identifiers of multiple target programs that are allowed to access the data;after the ciphertext is generated, receiving a bit string from another calling program;checking an identifier of the other calling program to determine whether the other calling program is one of the multiple target programs;CA 02425006 2011-08-09 52829-11 verifying the integrity of the data;decrypting the data using a symmetric key;and returning the data to the other calling program only if the other calling program is one of the multiple target programs and if the integrity of the data is 5 successfully verified.
  47. 47
    A method as recited in claim 46, wherein the calling program and the other calling program are the same program.
  48. 48
    A method as recited in claim 46, wherein verifying the integrity of the data comprises verifying the integrity using one part of the symmetric key and 10 wherein decrypting the data comprises decrypting the data using another part of the symmetric key.
  49. 49
    A computing device comprising:a processor;and a memory, coupled to the processor, storing a plurality of instructions 15 that when executed by the processor cause the processor to: receive data from a calling program;generate, using a symmetric cipher, ciphertext that includes the data and identifiers of multiple target programs that are allowed to access the data;after the ciphertext is generated, receive a bit string from another calling 20 program;check an identifier of the other calling program to determine whether the other calling program is one of the multiple target programs;verify the integrity of the data;CA 02425006 2011-08-09 52829-11 decrypt the data using a symmetric key;and return the data to the other calling program only if the other calling program is one of the multiple target programs and if the integrity of the data is successfully verified. 5
  50. 50
    A computing device as recited in claim 49, wherein the calling program and the other calling program are the same program.
  51. 51
    A computing device as recited in claim 49, wherein to verify the integrity of the data is to verify the integrity using one part of the symmetric key and wherein to decrypt the data is to decrypt the data using another part of the symmetric key. 10
  52. 52
    A method, implemented in a computing device, the method comprising:obtaining an identifier of a calling application;generating a bit string including the identifier of the calling application, data to be sealed for the calling application, and identifiers of multiple target applications that are allowed to unseal the data;15 generating a message authentication code (MAC) value for the bit string;encrypting the bit string using a symmetric key and a symmetric cipher;and returning the MAC value and the encrypted bit string to the calling application. 20
  53. 53
    A method as recited in claim 52, wherein obtaining the identifier of the calling application comprises generating a digest of the calling application using a cryptographic hash function.
  54. 54
    A method as recited in claim 52, further comprising receiving, from the calling application, the data. CA 02425006 2011-08-09 52829-11
  55. 55
    A method as recited in claim 52, further comprising generating a random value to be used as the data.
  56. 56
    A method as recited in claim 52, wherein the symmetric key includes a first part and a second part that are independent of one another, wherein generating 5 the MAC value comprises generating the MAC value with the first part of the symmetric key, and wherein encrypting the bit string comprises encrypting the bit string with the second part of the symmetric key.
  57. 57
    A computing device comprising:a processor;and 10 a memory, coupled to the processor, storing a plurality of instructions that when executed by the processor cause the processor to: obtain an identifier of a calling application;generate a bit string including the identifier ofthe calling application, data to be sealed for the calling application, and identifiers of multiple target 15 applications that are allowed to unseal the data;generate a message authentication code (MAC) value for the bit string;encrypt the bit string using a symmetric key and a symmetric cipher;and return the MAC value and the encrypted bit string to the calling 20 application.
  58. 58
    A computing device as recited in claim 57, wherein the instructions that when executed by the processor cause the processor to obtain the identifier of the calling application comprise instructions that when executed by the processor cause the processor to generate a digest of the calling application using a cryptographic 25 hash function. CA 02425006 2011-08-09 52829-11
  59. 59
    A computing device as recited in claim 57, wherein the instructions when executed by the processor further cause the processor to receive, from the calling application, the data.
  60. 60
    A computing device as recited in claim 57, wherein the instructions when executed by the processor further cause the processor to generate a random value to be used as the data.
  61. 61
    A computing device as recited in claim 57, wherein the symmetric key includes a first part and a second part that are independent of one another, wherein to generate the MAC value is to generate the MAC value with the first part of the symmetric key, and wherein to encrypt the bit string is to encrypt the bit string with the second part of the symmetric key.
  62. 62
    A method, implemented in a computing device, the method comprising:receiving, from a calling program, a bit string including ciphertext and a message authentication code (MAC) value;decrypting the ciphertext in the bit string using a symmetric key to generate plaintext data;generating a message authentication code (MAC) value for at least a portion of the plaintext data;checking whether the MAC value in the bit string is equal to the generated MAC value;checking whether an identifier of the calling program is included as one of multiple target program identifiers in the plaintext data, the multiple target program identifiers identifying multiple target programs that are allowed to unseal the plaintext data;and returning 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 identifier of the calling program is included as one of the multiple target program identifiers in the plaintext data. CA 02425006 2011-08-09 52829-11
  63. 63
    A method as recited in claim 62, wherein the identifier of the calling program comprises a digest of the calling program generated using a cryptographic hash function.
  64. 64
    A method as recited in claim 62, wherein the generating the MAC value comprises generating the MAC value using a first part of the symmetric key, and wherein decrypting the ciphertext in the bit string comprises decrypting the ciphertext in the bit string using a second part of the symmetric key.
  65. 65
    A computing device comprising:a processor;and a memory, coupled to the processor, storing a plurality of instructions that when executed by the processor cause the processor 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 an identifier of the calling program is included as one of multiple target program identifiers in the plaintext data, the multiple target program identifiers identifying multiple target programs that are 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 identifier of the calling program is included as one of the multiple target program identifiers in the plaintext data. CA 02425006 2011-08-09 52829-11
  66. 66
    A computing device as recited in claim 65, wherein the identifier of the calling program comprises a digest of the calling program generated using a cryptographic hash function.
  67. 67
    A computing device as recited in claim 65, wherein to generate the 5 MAC value is to generate the MAC value using a first part of the symmetric key, and wherein to decrypt the ciphertext in the bit string is to decrypt the ciphertext in the bit string using a second part of the symmetric key.
  68. 68
    A method, implemented in a computing device, the method comprising:receiving a bit string from a calling program;10 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, the checking determining that the calling program is allowed to access the data if the identifier of the calling program is included as one of multiple target program identifiers in the ciphertext;15 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.
  69. 69
    One or more computer storage media having stored thereon a plurality 20 of instructions that, when executed by one or more processors of a computing device, causes the one or more processors to:receive a bit string from a calling program;check an identifier of the calling program to determine whether the calling program is allowed to access data encrypted in ciphertext of the bit string, 25 wherein to check the identifier is to determine that the calling program is allowed to 96 CA 02425006 2011-08-09 52829-11 access the data if the identifier of the calling program is included as one of multiple target program identifiers in the ciphertext;verify the integrity of the data;decrypt the data using a symmetric key;and 5 return 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.
  70. 70
    A computing device comprising:a processor;and a memory, coupled to the processor, storing a plurality of instructions 10 that when executed by the processor cause the processor to: receive a bit string from a calling program;check an identifier of the calling program to determine whether the calling program is allowed to access data encrypted in ciphertext of the bit string, wherein to check the identifier is to determine that the calling program is allowed to 15 access the data if the identifier of the calling program is included as one of multiple target program identifiers in the ciphertext;verify the integrity of the data;decrypt the data using a symmetric key;and return the data to the calling program only if the calling program is 20 allowed to access the data and if the integrity of the data is successfully verified. CA 02425006 2003-04-09 100 CA 02425006 2003-04-09 LU g > or LU ω LU Ο < Ll_ or LU I— CO CM CO CM < Q_ Ü a: Q_ XT CM LU g > LU ω LU o < U_ Œ LU I— a CC < ZD LU g > cc LU ω LU o < LL CC LU I— < g o a: CL Û CC < ZD < g o CC CL CM CM O CM CA 02425006 2003-04-09 200 202 204 206 250 252 254 256 258 CA 02425006 2003-04-09 220 CA 02425006 2003-04-09 270 CA 02425006 2003-04-09 300 CA 02425006 2003-04-09 340 CA 02425006 2003-04-09 360 362 364 366 380 382 384 386 388 CA 02425006 2003-04-09 Remote 1 Computing Device Printer! Mouse! Keyboard \ 446 — 436 Other Device(S) 434 S\.
Independent claims70