CA2425010A1

Saving and retrieving data based on public key encryption

Abstract

In accordance with certain aspects, data is received from a calling progra m. Ciphertext that includes the data is generated, using public key encryption, in a manner that allows only one or more target programs to be able to obtain the data from the ciphertext. In accordance with another aspect, a bit string is received frown 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 data is decrypted using public key decryption and returned to the calling program only if the calling program is allowed to access the data.

CA2425010A1, drawing sheet 1
Sheet 1 of 1

Term

Term ended

Projected expiry passed 9 April 2023, 3.5 years ago.

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

72 claims: 72 independent, 0 dependent

  1. 1
    CA 02425010 2003-04-09 CLAIMS 1. A method, implemented in a computing device, the method comprising:receiving data from a calling program;and generating, using public key encryption, ciphertext that includes the data, wherein the ciphertext is generated in a manner that allows any of multiple target programs to be able to obtain the data from the ciphertext.
  2. 2
    A method as recited in claim 1, wherein the multiple target programs are identified by the calling program.
  3. 3
    A method as recited in claim 1, further comprising returning the ciphertext to the calling program. 4- A method as recited in claim 1, wherein the data comprises a cryptographic key.
  4. 4
    5. A method as recited in claim 1, wherein the multiple target programs comprises a plurality of target programs.
  5. 5
    6. A method as recited in claim 1. wherein each of the multiple target programs is identified by a digest value generated by applying a cryptographic hash function to the target program. tee@hayes p*c $39-324-9256 Airy. Docket No. MS/-I315US CA 02425010 2003-04-09
  6. 6
    7. A method as recited in claim 1, wherein the multiple target programs comprises the calling program.
  7. 7
    8. A method as recited in daim 1, wherein receiving the data comprises receiving the data as part of a PKSeal operation.
  8. 8
    9. 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 one of multiple programs allowed to access data encrypted in ciphertext of the bit string;and returning the data, decrypted using public key decryption, to the calling program only if the calling program is one of multiple programs allowed to access the data.
  9. 9
    10. A method as recited in claim 9, wherein the data comprises a cryptographic key.
  10. 10
    11. A method as recited in claim 9, wherein the checking comprising:obtaining, from the bit string, an identifier of a target program that is allowed to access the data;checking whether the identifier of the target program is the same as the identifier of the calling program;and lee@hayes pdc 509-324-9256 Atty. Docket No. MSJ-13ISUS CA 02425010 2003-04-09 1 determining that the calling program is one of the multiple target programs 2 allowed to access the data if the identifier of the target program is the same as the 3 identifier of the calling program. 1Ï
  11. 11
    12. A method as recited in claim 9, wherein the checking comprising:obtaining, from the bit string, identifiers of the multiple target programs that are allowed to access the data;checking whether the identifier of the calling program is the same as at least one of the identifiers of the multiple target programs;determining that the calling program is allowed to access the data if the identifier of the calling program is the same as at least one of the identifiers of the multiple target programs;and determining that the calling program is not allowed to access the data if the identifier of the calling program is not the same as any of the identifiers of the multiple target programs.
  12. 12
    13. A method as recited in claim 9, wherein the identifier of the calling program comprises a digest value generated by applying a cryptographic hash function to the target program.
  13. 13
    14. A method as recited in claim 9, wherein receiving the bit string comprises receiving the bit string as part of an PKUnseal operation. iee@hayes p«e 509·32Λ·β2« Any. Docket No. MSI-1315US CA 02425010 2003-04-09
  14. 14
    15. 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 public key encryption, ciphertext that Includes the data, wherein the ciphertext is generated in a manner that allows any of multiple 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 one of the multiple target programs allowed to access data encrypted in the ciphertext of the bit string;and return the data, decrypted using public key decryption, to the other calling program only if the other calling program is one of the multiple target programs allowed to access the data.
  15. 15
    16. One or more computer readable media as recited in claim 15, wherein the calling program and the other calling program are the same program.
  16. 16
    17. One or more computer readable media as recited in claim 15, wherein the plurality of instructions further cause the one or more processors to implement a BoundSign operation, a BoundQuote operation, a BoundDecrypt operation, a BoundPkUnseal operation, a GenBoundKey operation, a BoundKeyMi grate operation, and a BoundKeyExport operation. lee@hayes o«c Atty. Docket No. MS1-13I5US CA 02425010 2003-04-09
  17. 17
    18. One or more computer readable media having stored thereon a plurality of instructions to implement a PKSeal operation, wherein the plurality of instructions, when executed by one or more processors of a computing device, causes the one or more processors to:obtain data to be encrypted;and encrypt, using public key encryption, the data and a set of identifiers of programs that are allowed to decrypt the data.
  18. 18
    19. One or more computer readable media as recited in claim 18, wherein the identifiers of the programs comprise digests of the programs generated using a cryptographic hash function.
  19. 19
    20. One or more computer readable media as recited in claim 18, wherein the set of identifiers comprises an identifier of a caller of the PKSeal operation.
  20. 20
    21. One or more computer readable media having stored thereon a plurality of instructions to implement a PKUnseai 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, from a calling program, a bit string including ciphertext;decrypt, using public key decryption, the ciphertext to generate plaintext;return the plaintext data to the calling program only if the calling program is one of a set of identified programs to which the plaintext data can be revealed. Iee@hayes c* SO32.-9K6 Atty. Docket No. MSI-1315US CA 02425010 2003-04-09 22, One or more computer readable media as recited in claim 21, wherein the instructions further cause the one or more processors to: generate a digest of the calling program using a cryptographic hash function;compare the digest of the calling program to a set of digests identified in the bit string;and return the plaintext data to the calling program only if the digest of the calling program is the same as at least one of the set of digests identified in the bit string. 23, One or more computer readable media as recited in claim 22, wherein the one or more digests identified in the bit string are part of the ciphertext.
  21. 21
    24. A system comprising:means for receiving data from a calling program;and means for using public key encryption to generate ciphertext that includes the data, wherein the ciphertext is generated in a manner that allows one of a plurality of target programs to be able to obtain the data from the ciphertext.
  22. 22
    25. 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 one of a plurality of programs allowed to access data encrypted in ciphertext of the bit string;and lee@hayes jxw 509-334-9355 Aity. Docket No. MSD13/5DS CA 02425010 2003-04-09 ό means for returning the data, decrypted using public key decryption, to the calling program only if the calling program is one of the plurality of programs allowed to access the data.
  23. 23
    26. 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 PKSeal operation, passing the data as an input to the PKSeal operation and identifying conditions that are to be satisfied in order for the data to be unsealed.
  24. 24
    27. One or more computer readable media as recited in claim 26, wherein the instructions further cause the one or more processors to receive, in response to the PKSeal operation, ciphertext including the data in an encrypted form, wherein the data is encrypted using public key encryption.
  25. 25
    28. One or more computer readable media as recited in claim 26, wherein the conditions comprise identifiers of multiple target programs that are allowed to unseal the data.
  26. 26
    29. One or more computer readable media as recited in claim 28, wherein the instructions further cause the one or more processors to pass, as another input to the PKSeal operation, identifiers of the multiple target programs. lee@hayes p*;509-324^25« Airy. Docket Wo. MS1-U15US CA 02425010 2003-04-09
  27. 27
    30. One or more computer readable media as recited in claim 29, wherein for each of the multiple target programs, the identifier of the target program comprises a digest generated by applying a cryptographic hash function to the target program,
  28. 28
    31. One or more computer readable media as recited in claim 28, wherein a program that invokes the PKSeal operation is one of the multiple target programs.
  29. 29
    32. One or more computer readable media as recited in claim 26, wherein one of the conditions comprises a time constraint for when the data can be unsealed.
  30. 30
    33. One or more computer readable media as recited in claim 26, wherein one of the conditions comprises a logical formula to be evaluated, and wherein the data can be unsealed only if the logical formula evaluates true.
  31. 31
    34. One or more computer readable media as recited in claim 26, wherein one of the conditions comprises a program to be executed, and wherein the data can be unsealed only if execution of the program returns an indication of true. Iee©hayes p«c 509-32.-9255 Any. Docket No. MSI-1315US CA 02425010 2003-04-09 i i
  32. 32
    35. 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 PKUnseal operation in order to have a bit string decrypted, passing the bit string as an input to the PKUnseal operation;and receive, in response to invoking the PKUnseal operation, at least a portion of the decrypted bit string only if the plurality of instructions are one of multiple programs allowed to unseal the bit string, wherein the data is decrypted using public key encryption.
  33. 33
    36. One or more computer readable media as recited in claim 35, wherein the plurality of instructions are allowed to unseal the bit string if a digest generated by applying a cryptographic hash function to the plurality of instructions is the same as one or more digests identified by a calling program when data encrypted in the bit string was previously sealed using a PKSeal operation.
  34. 34
    37. One or more computer readable media as recited in claim 35, wherein the input to the PKUnseal operation is a pointer to the bit string.
  35. 35
    38. 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 PKUnseal operation in order to obtain data from a bit string sealed in response to invocation of a PKSeal operation;and lee@hayes p* 509-324^25« Any. Docket No. MSI-131SUS CA 02425010 2003-04-09 receive, in response to invoking the unseal operation, the data from the sealed bit string only if conditions that are io be satisfied in order for the data to be unsealed are satisfied.
  36. 36
    39. One or more computer readable media as recited in claim 38, wherein the conditions comprise identifiers of programs that are allowed to unseal the data.
  37. 37
    40. One or more computer readable media as recited in claim 38, wherein one of the conditions comprises a time constraint for when the data can be unsealed.
  38. 38
    41. One or more computer readable media as recited in claim 38, wherein one of the conditions comprises a logical formula to be evaluated, and wherein the data can be unsealed only if the logical formula evaluates true.
  39. 39
    42. One or more computer readable media as recited in claim 38, wherein one of the conditions comprises a program to be executed, and wherein the data can be unsealed only if execution of the program returns an indication of true.
  40. 40
    43. A system comprising:a plurality of hierarchical layers including a lowest layer that guards a root resource;lee@hayes pk so>324-32se Atty. Docket No. MS1-131SUS CA 02425010 2003-04-09 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 layers;and allowing access to the root resource only to programs authorized to access the root resource, wherein the allowing comprises using a PKSeal operation to securely seal the root resource and a PKUnseal operation to retrieve the root resource.
  41. 41
    44. A system as recited in claim 43, wherein the plurality of hierarchical layers comprises four layers, wherein the lowest layer comprises a security kernel layer, wherein a next lowest layer comprises a basic input/output system layer, wherein a next lowest layer comprises an operating system layer, and wherein a highest layer comprises an application layer.
  42. 42
    45. A system as recited in claim 43, wherein the root resource comprises a cryptographic key.
  43. 43
    46. One or more computer readable media having stored thereon a plurality of instructions to implement a BoundSign 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 signed and a bound key blob, wherein the bound key blob is bound to the one or more processors;lee ©ha y es c*: 509-324-925« Any. Docker No. MS1-I3I3US CA 02425010 2003-04-09 recover, from the bound key blob, a private key associated with the bound key blob;generate a digital signature over the data using the private key;and output the digital signature.
  44. 44
    47. One or more computer readable media as recited in claim 46, wkerein the bound key blob is bound to the one or more processors by encrypting the bound key blob using the public key of the one or more processors.
  45. 45
    48. One or more computer readable media as recited in claim 46, wherein the private key is restricted, by an element of the bound key blob, to being used by the BoundSign operation.
  46. 46
    49. One or more computer readable media having stored thereon a plurality of instructions to implement a BoundQuote 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 signed and a bound key, wherein the bound key is bound to the one or more processors;reconstruct, based at least in part on the bound key, a private key associated with the bound key;generate a digital signature over the data using the private key;and output the digital signature. lee@hayes ww Docket No. MSf-DUZS CA 02425010 2003-04-09
  47. 47
    50. One or more computer readable media as recited in claim 49, wherein the bound key is bound to the one or more processors by encrypting the bound key using the public key of the one or more processors. I ί
  48. 48
    51. One or more computer readable media as recited in claim 49, wherein the bound key is restricted to being used by the BoundQuote operation.
  49. 49
    52. 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 private key associated with the bound key structure;decrypt the ciphertext using the private key to generate plaintext corresponding to the ciphertext;and output the plaintext.
  50. 50
    53. One or more computer readable media as recited in claim 52, wherein the bound key structure is bound to the one or more processors by encrypting the bound key structure using the public key of the one or more processors. lee^hayes pec s»324-92S6 Airy. Docker No. MS1-1315US CA 02425010 2003-04-09
  51. 51
    54. One or more computer readable media as recited in claim 52, wherein the private key is restricted, based on a key usage element of the bound key structure, to being used by the BoundDecrypt operation.
  52. 52
    55. One or more computer readable media having stored thereon a plurality of instructions to implement a BoundPkUnseal 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, wherein the bound key is bound to the one or more processors;reconstruct, based at least in part on the bound key, a private key associated with the bound key;decrypt the ciphertext using the private key to generate plaintext corresponding to the ciphertext;and output the plaintext.
  53. 53
    56. One or more computer readable media as recited in claim 55, wherein the bound key is bound to the one or more processors by encrypting the bound key using the public key of the one or more processors.
  54. 54
    57. One or more computer readable media as recited in claim 55, wherein the bound key is restricted to being used by the BoundPkUnseal operation. lee@M^ayes p* 509.32.-9:56 Arty. Docket No. MS1-!3!SUS CA 02425010 2003-04-09 B
  55. 55
    58. One or more computer readable media having stored thereon a plurality of instructions to implement a GenBoundKey operation, wherein the plurality of instructions, when executed by one or more processors of a computing device, causes the one or more processors to:generate a data structure for a new bound key that is to be bound to the one or more processors, wherein the new bound key includes data that allows a private key of a public/private key pair to be recovered from the data structure;and cryptographically protect the data structure.
  56. 56
    59. One or more computer readable media as recited in claim 58, wherein the instructions that cause the one or more processors to cryptographically protect the data structure comprise instructions that cause the one or more processors to encrypt the data structure using a public key of the public/private key pair.
  57. 57
    60. One or more computer readable media having stored thereon a plurality of instructions to implement a BoundKeyMigrate 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, a bound key, wherein the bound key is bound to a program;verify that a usage condition associated with the key can be changed by the program;and change the usage condition if the verification is successful. lee@hayes s*e »9·324·92Μ Atty. Docket No. MS1-131SVS CA 02425010 2003-04-09 Ιό IS
  58. 58
    61. One or more computer readable media as recited in claim 60, wherein the usage condition comprises an identifier of a program to which the key is bound.
  59. 59
    62. One or more computer readable media as recited in claim 60, wherein the instructions that cause the one or more processors to verify that a usage condition associated with the key can be changed by the program comprise instructions that cause the one or more processors to verify that the bound key is marked as being migrateable.
  60. 60
    63. One or more computer readable media as recited in claim 60, wherein the instructions that cause the one or more processors to verify that a usage condition associated with the key can be changed by the program comprise instructions that cause the one or more processors to verify that the program calling the BoundKeyMigrate operation is permitted to migrate the bound key.
  61. 61
    64. One or more computer readable media as recited in claim 60, wherein the instructions that cause the one or more processors to verify that a usage condition associated with the key can be changed by the program comprise instructions that cause the one or more processors to verify that a logical formula evaluates true. iee©hayes wk 505-32.-92¾ Atty. Docket No. MS/-I3JSVS CA 02425010 2003-04-09
  62. 62
    65. One or more computer readable media as recited in claim 60, wherein the instructions that cause the one or more processors to verify that a usage condition associated with the key can be changed by the program comprise instructions that cause the one or more processors to verify that execution of a particular program returns an indication of true.
  63. 63
    66. One or more computer readable media as recited in claim 60, wherein the instructions that cause the one or more processors to verify that a usage condition associated with the key can be changed by the program comprise instructions that cause the one or more processors to verify that a time constraint is satisfied.
  64. 64
    67. One or more computer readable media as recited in claim 60, wherein the usage condition is an element of a data structure that includes the bound key.
  65. 65
    68. One or more computer readable media having stored thereon a plurality of instructions to implement a BoundKeyExport operation, wherein the plurality of instructions, when executed by a processor of a computing device, causes the processor to:receive, as an input, a bound key, wherein the bound key is bound to a guard;verify that the key can be re-bound to a different guard;and re-bind the key to the different guard if the verification is successful. Iee@hayes pec 509-334-9556 Atty. Docket No. MS1-1U5US CA 02425010 2003-04-09
  66. 66
    69. One or more computer readable media as recited in claim 68, wherein the guard comprises the processor and the different guard comprises another processor.
  67. 67
    70. One or more computer readable media as recited in claim 68, wherein the different guard is identified as an input to the BoundKeyExport operation.
  68. 68
    71. One or more computer readable media as recited in claim 68, wherein the instructions that cause the processor to verify that the key can be rebound to a different guard comprise instructions that cause the processor to verify that the bound key is marked as being exportable.
  69. 69
    72. One or more computer readable media as recited in claim 68, wherein the instructions that cause the processor to verify that the key can be rebound to a different guard comprise instructions that cause the processor to verify that the program calling the BoundKeyExport operation is permitted to export the bound key,
  70. 70
    73. One or more computer readable media as recited in claim 68, wherein the instructions that cause the processor to verify that the key can be rebound to a different guard comprise instructions that cause the processor to verify that a logical formula evaluates true. tee<&hayes p«c sos-w-srs Atty. Docket No. MSI-131SISS CA 02425010 2003-04-09
  71. 71
    74. One or more computer readable media as recited in claim 68, wherein the instructions that cause the processor to verify that the key can be rebound to a different guard comprise instructions that cause the processor to verify that execution of a particular program returns an indication of true.
  72. 72
    75. One or more computer readable media as recited in claim 68, wherein the instructions that cause the processor to verify that the key can be rebound to a different guard comprise instructions that cause the processor to verify that a time constraint is satisfied. Smart & Biggar Ottawa, Canada Patent Agents lee^hayes o* sw-iw-ws* Atry. Docket No. MS1-J31 SUS
Independent claims72