CA2425010C

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 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.

CA2425010C, drawing sheet 1
Sheet 1 of 11

Term

No projected expiry on record.

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

25 claims: 25 independent, 0 dependent

  1. 1
    CA 02425010 2013-01-16 52829-10 CLAIMS:1. A method comprising: receiving data from a calling program;generating a ciphertext by encrypting, using public key encryption, multiple 5 values that include both the data and multiple target program identifiers, wherein each of the multiple target program identifiers identifies a different one of multiple target programs that are to be able to obtain the data from the ciphertext, and wherein the multiple target programs are identified by the calling program;and returning the ciphertext to the calling program. 10
  2. 2
    A method as recited in claim 1, wherein the data comprises a cryptographic key.
  3. 3
    A method as recited in claim 1, wherein the multiple target program identifiers comprise multiple digest values, and wherein each of the multiple target program identifiers is a digest value generated by applying a cryptographic hash function to a different one of the 15 multiple target programs.
  4. 4
    A method as recited in claim 1, wherein one of the multiple target programs comprises the calling program.
  5. 5
    A method as recited in claim 1, wherein receiving the data comprises receiving the data as part of a PKSeal operation. 20
  6. 6
    A 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, the ciphertext including both the encrypted data and multiple encrypted identifiers each CA 02425010 2013-01-16 52829-10 identifying a different one of the multiple programs, and the checking comprising checking whether the identifier of the calling program is included as one of the multiple encrypted identifiers of the multiple programs included in the ciphertext;and returning the data, decrypted using public key decryption, to the calling program only if the calling program is one of the multiple programs allowed to access the data.
  7. 7
    A method as recited in claim 6, wherein the data comprises a cryptographic key.
  8. 8
    A method as recited in claim 6, wherein the identifier of the calling program comprises a digest value generated by applying a cryptographic hash function to the calling program.
  9. 9
    A method as recited in claim 6, wherein receiving the bit string comprises receiving the bit string as part of a PKUnseal operation.
  10. 10
    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 data from a calling program;generate, using public key encryption, a ciphertext that includes multiple values, the multiple values including the data and multiple target program identifiers, each of the multiple target program identifiers identifying a different one of multiple target programs;after the ciphertext is generated, receive a bit string from a second calling program;check an identifier of the second calling program to determine whether an identifier of the second calling program is included as one of the multiple target program identifiers in the ciphertext;and CA 02425010 2013-01-16 52829-10 return the data, decrypted using public key decryption, to the second calling program only if the identifier of the second calling program is included as one of the multiple target program identifiers in the ciphertext.
  11. 11
    One or more computer storage media as recited in claim 10, wherein the calling program and the second calling program are the same program.
  12. 12
    One or more computer storage 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 generate a ciphertext by encrypting, using public key encryption, multiple values that include the data and a set of multiple target program identifiers wherein each of the multiple target program identifiers identifies a different one of multiple target of programs that are allowed to decrypt the data.
  13. 13
    One or more computer storage media as recited in claim 12, wherein the set of multiple target program identifiers comprises a set of multiple digest values, and wherein each of the multiple target program identifiers is a digest value of a different one of the multiple target programs generated using a cryptographic hash function.
  14. 14
    One or more computer storage media as recited in claim 12, wherein one of the set of identifiers of programs comprises an identifier of a caller of the PKSeal operation.
  15. 15
    One or more computer storage media having stored thereon a plurality of instructions to implement a PKUnseal 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;82 CA 02425010 2013-01-16 52829-10 return the plaintext data to the calling program only if the calling program is one of a set of programs to which the plaintext data can be revealed, wherein the set of programs is identified by a set of multiple program identifiers included in the ciphertext, each of the multiple program identifiers identifying a different program of the set of programs.
  16. 16
    One or more computer storage media as recited in claim 15, wherein the instructions further cause the one or more processors to:generate a digest of the calling program using a cryptographic hash function, wherein the set of multiple program identifiers comprises a set of multiple digests;compare the digest of the calling program to the set of multiple digests in the ciphertext;and return the plaintext data to the calling program only if the digest of the calling program is the same as at least one digest of the set of multiple digests.
  17. 17
    A system comprising:means for receiving data from a calling program;and means for generating a ciphertext by encrypting, using public key encryption, multiple values that include the data and a set of multiple target program identifiers, wherein each of the multiple target program identifiers identifies a different one of multiple target programs that are allowed to obtain the data from the ciphertext.
  18. 18
    A device comprising a plurality of hardware means, the plurality of hardware means including: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, the ciphertext including both the encrypted data and multiple encrypted identifiers each identifying a different one of the plurality of programs, and the CA 02425010 2013-01-16 52829-10 means for checking comprising means for checking whether the identifier of the calling program is included as one of the multiple encrypted identifiers of the multiple programs included in the ciphertext;and 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.
  19. 19
    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:identify data to be sealed;invoke a PKSeal operation, passing the data as an input to the PKSeal operation and identifying multiple target programs that are allowed to unseal the data;and receive, in response to the PKSeal operation, a ciphertext including both the data and multiple encrypted target program identifiers, wherein each of the multiple encrypted target program identifiers identifies a different one of the multiple target programs, and wherein the data and identifiers of the multiple target programs are encrypted using public key encryption.
  20. 20
    One or more computer storage media as recited in claim 19, wherein the instructions further cause the one or more processors to pass, as another input to the PKSeal operation, the identifiers of the multiple target programs.
  21. 21
    One or more computer storage media as recited in claim 20, 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.
  22. 22
    One or more computer storage media as recited in claim 19, wherein a program that invokes the PKSeal operation is one of the multiple target programs. CA 02425010 2013-01-16 52829-10
  23. 23
    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:invoke a PKUnseal operation in order to have a bit string decrypted, passing 5 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, the multiple programs being identified by a set of multiple program identifiers in the bit string, wherein each of the set of multiple program identifiers 10 identifies a different one of the multiple programs allowed to unseal the bit string, and wherein the bit string is decrypted using public key decryption.
  24. 24
    One or more computer storage media as recited in claim 23, wherein each of the set of multiple program identifiers is a digest of one of the multiple programs, and wherein the plurality of instructions are allowed to unseal the bit string only if a digest generated by 15 applying a cryptographic hash function to the plurality of instructions is the same as one or more digests in the set of multiple program identifiers.
  25. 25
    One or more computer storage media as recited in claim 23, wherein the input to the PKUnseal operation is a pointer to the bit string.
Independent claims25