CA2778805C

Saving and retrieving data based on public key encryption

Abstract

In accordance with certain aspects, data is received from a calling program. 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 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 data is decrypted using public key decryption and returned to the calling program only if the calling program is allowed to access the data.

CA2778805C, drawing sheet 1
Sheet 1 of 28

Term

Term ended

Expired 9 April 2023, 3.5 years ago.

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

43 claims: 43 independent, 0 dependent

  1. 1
    CA 02778805 2014-09-25 52829-10D CLAIMS:1. 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 containing the ciphertext 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 contained in 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, 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 BoundKeyMigrate operation, and a BoundKeyExport operation.
  2. 2
    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;CA 02778805 2014-09-25 52829-10D 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.
  3. 3
    One or more computer readable media as recited in claim 2, wherein the bound key blob is bound to the one or more processors by encrypting the bound key blob using a public key of the one or more processors.
  4. 4
    One or more computer readable media as recited in claim 2, wherein the private key is restricted, by an element of the bound key blob, to being used by the BoundSign operation.
  5. 5
    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.
  6. 6
    One or more computer readable media as recited in claim 5, wherein the bound key is bound to the one or more processors by encrypting the bound key using a public key of the one or more processors. CA 02778805 2014-09-25 52829-10D
  7. 7
    One or more computer readable media as recited in claim 5, wherein the bound key is restricted to being used by the BoundQuote operation.
  8. 8
    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.
  9. 9
    One or more computer readable media as recited in claim 8, wherein the bound key structure is bound to the one or more processors by encrypting the bound key structure using a public key of the one or more processors.
  10. 10
    One or more computer readable media as recited in claim 8, wherein the private key is restricted, based on a key usage element of the bound key structure, to being used by the BoundDecrypt operation.
  11. 11
    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;CA 02778805 2014-09-25 52829-10D 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.
  12. 12
    One or more computer readable media as recited in claim 11, wherein the bound key is bound to the one or more processors by encrypting the bound key using a public key of the one or more processors.
  13. 13
    One or more computer readable media as recited in claim 11, wherein the bound key is restricted to being used by the BoundPkUnseal operation.
  14. 14
    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.
  15. 15
    One or more computer readable media as recited in claim 14, 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.
  16. 16
    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:CA 02778805 2014-09-25 52829-10D 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.
  17. 17
    One or more computer readable media as recited in claim 16, wherein the usage condition comprises an identifier of a program to which the key is bound.
  18. 18
    One or more computer readable media as recited in claim 16, 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.
  19. 19
    One or more computer readable media as recited in claim 16, 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.
  20. 20
    One or more computer readable media as recited in claim 16, 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.
  21. 21
    One or more computer readable media as recited in claim 16, 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.
  22. 22
    One or more computer readable media as recited in claim 16, wherein the instructions that cause the one or more processors to verify that a usage condition associated CA 02778805 2014-09-25 52829-10D 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.
  23. 23
    One or more computer readable media as recited in claim 16, wherein the usage condition is an element of a data structure that includes the bound key.
  24. 24
    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.
  25. 25
    One or more computer readable media as recited in claim 24, wherein the guard comprises the processor and the different guard comprises another processor.
  26. 26
    One or more computer readable media as recited in claim 24, wherein the different guard is identified as an input to the BoundKeyExport operation.
  27. 27
    One or more computer readable media as recited in claim 24, wherein the instructions that cause the processor to verify that the key can be re-bound to a different guard comprise instructions that cause the processor to verify that the bound key is marked as being exportable.
  28. 28
    One or more computer readable media as recited in claim 24, wherein the instructions that cause the processor to verify that the key can be re-bound 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.
  29. 29
    One or more computer readable media as recited in claim 24, wherein the instructions that cause the processor to verify that the key can be re-bound to a different guard comprise instructions that cause the processor to verify that a logical formula evaluates true. CA 02778805 2014-09-25 52829-10D
  30. 30
    One or more computer readable media as recited in claim 24, wherein the instructions that cause the processor to verify that the key can be re-bound to a different guard comprise instructions that cause the processor to verify that execution of a particular program returns an indication of true.
  31. 31
    One or more computer readable media as recited in claim 24, wherein the instructions that cause the processor to verify that the key can be re-bound to a different guard comprise instructions that cause the processor to verify that a time constraint is satisfied.
  32. 32
    A method of implementing a BoundSign operation, the method comprising:receiving, as an input, both data to be signed and a bound key blob, wherein the bound key blob is bound to one or more processors;recovering, from the bound key blob, a private key associated with the bound key blob;generating a digital signature over the data using the private key;and outputting the digital signature.
  33. 33
    A method as recited in claim 32, wherein the bound key blob is bound to the one or more processors by encrypting the bound key blob using a public key of the one or more processors.
  34. 34
    A method as recited in claim 32, wherein the private key is restricted, by an element of the bound key blob, to being used by the BoundSign operation.
  35. 35
    A method as recited in claim 32, further comprising outputting the digital signature only if one or more bound key usage conditions included in the bound key blob are satisfied. CA 02778805 2014-09-25 52829-10D
  36. 36
    A method of implementing a BoundDecrypt operation, the method comprising:receiving, as an input, both ciphertext and a bound key structure, wherein the bound key structure is bound to one or more processors;recovering, from the bound key structure, a private key associated with the bound key structure;decrypting the ciphertext using the private key to generate plaintext corresponding to the ciphertext;and outputting the plaintext.
  37. 37
    A method as recited in claim 36, wherein the bound key structure is bound to the one or more processors by encrypting the bound key structure using a public key of the one or more processors.
  38. 38
    A method as recited in claim 36, wherein the private key is restricted, based on a key usage element of the bound key structure, to being used by the BoundDecrypt operation.
  39. 39
    A method as recited in claim 36, further comprising outputting the plaintext only if one or more bound key usage conditions included in the bound key structure are satisfied.
  40. 40
    A method of implementing a BoundPkUnseal operation, the method comprising:receiving, as an input, both ciphertext and a bound key, wherein the bound key is bound to one or more processors;reconstructing, based at least in part on the bound key, a private key associated with the bound key;decrypting the ciphertext using the private key to generate plaintext corresponding to the ciphertext;and CA 02778805 2014-09-25 52829-10D outputting the plaintext.
  41. 41
    A method as recited in claim 40, wherein the bound key is bound to the one or more processors by encrypting the bound key using a public key of the one or more processors. 5
  42. 42
    A method as recited in claim 40, wherein the bound key is restricted to being used by the BoundPkUnseal operation.
  43. 43
    A method as recited in claim 40, further comprising outputting the plaintext only if one or more bound key usage conditions of bound key are satisfied.
Independent claims43