Source: http://www.google.com/patents/US7890771?dq=5008718
Timestamp: 2017-11-21 07:06:29
Document Index: 309421473

Matched Legal Cases: ['Application No. 60', 'art.\n8', 'Application No. 200710152961', 'Application No. 2003', 'Application No. 2003', 'Application No. 10', 'Application No. 10']

Patent US7890771 - Saving and retrieving data based on public key encryption - Google Patents
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...http://www.google.com/patents/US7890771?utm_source=gb-gplus-sharePatent US7890771 - Saving and retrieving data based on public key encryption
Publication number US7890771 B2
Application number US 10/407,117
Also published as EP1391801A2, EP1391801A3, US7765397, US8589701, US8601286, US8621243, US8683230, US9183406, US20030200450, US20070088949, US20110119500, US20110119501, US20110119502, US20110119505, US20110154057
Publication number 10407117, 407117, US 7890771 B2, US 7890771B2, US-B2-7890771, US7890771 B2, US7890771B2
Inventors Paul England, Marcus Peinado
Patent Citations (173), Non-Patent Citations (62), Referenced by (24), Classifications (11), Legal Events (3)
Saving and retrieving data based on public key encryption
US 7890771 B2
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.
generating a ciphertext by encrypting, using public key encryption, multiple 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
2. A method as recited in claim 1, wherein the data comprises a cryptographic key.
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 multiple target programs.
4. A method as recited in claim 1, wherein one of the multiple target programs comprises the calling program.
5. A method as recited in claim 1, wherein receiving the data comprises receiving the data as part of a PKSeal operation.
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 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. A method as recited in claim 6, wherein the data comprises a cryptographic key.
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. A method as recited in claim 6, wherein receiving the bit string comprises receiving the bit string as part of a PKUnseal operation.
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
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. 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. 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. 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. 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. 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;
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. 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.
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. 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 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. 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. 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. 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. 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.
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:
obtain data to be sealed and one or more conditions that are to be satisfied in order for the data to be unsealed; and
encrypt, using public key encryption, both the data and the one or more conditions to generate a ciphertext that includes both the encrypted data and the encrypted one or more conditions, wherein one of the one or more conditions comprises a time constraint for when the data can be unsealed, and wherein the data is not unsealed if the one or more conditions are not satisfied.
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:
encrypt, using public key encryption, both the data and the one or more conditions to generate a ciphertext that includes both the encrypted data and the encrypted one or more conditions, wherein the data is not unsealed if the one or more conditions are not satisfied, wherein one of the one or more conditions comprises a logical formula to be evaluated, and wherein the data can be unsealed only if the logical formula evaluates true.
25. 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:
encrypt, using public key encryption, both the data and the one or more conditions to generate a ciphertext that includes both the encrypted data and the encrypted one or more conditions, wherein the data is not unsealed if the one or more conditions are not satisfied, wherein one of the one or more 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.
26. 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 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 identifies a different one of the multiple programs allowed to unseal the bit string, and wherein the bit string is decrypted using public key encryption.
27. One or more computer storage media as recited in claim 26, 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 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.
28. One or more computer storage media as recited in claim 26, wherein the input to the PKUnseal operation is a pointer to the bit string.
29. 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 obtain data from a bit string sealed in response to invocation of a PKSeal operation;
receive, in response to invoking the PKUnseal operation, the data from the sealed bit string only if conditions that are to be satisfied in order for the data to be unsealed are satisfied, the conditions being included in the sealed bit string, and one of the conditions comprising multiple encrypted program identifiers, each of the multiple encrypted program identifiers identifying one of multiple programs that are allowed to receive the data; and
otherwise not receive the data from the sealed bit string if the conditions that are to be satisfied in order for the data to be unsealed are not satisfied.
30. One or more computer storage media as recited in claim 29, wherein one of the conditions comprises a time constraint for when the data can be unsealed.
31. One or more computer storage media as recited in claim 29, 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.
32. One or more computer storage media as recited in claim 29, 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.
33. A computing device implementing 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 each act as principals that request access to the root resource from the next lower layer and that each act as guards to the root resource toward principals in the next higher layers, and wherein the plurality of hierarchical layers comprises four layers including the lowest layer comprising a security kernel layer, a next lowest layer comprising a basic input/output system layer, a next lowest layer comprising an operating system layer, and a highest layer comprising an application layer; and
each layer of the plurality of hierarchical layers allowing access to the root resource only to programs in the next higher layer that are authorized to access the root resource, wherein the allowing comprises using a PKSeal operation to encrypt the root resource along with digests of multiple principals that are allowed to access the root resource, and using a PKUnseal operation to decrypt and return the root resource only to principals having a digest that is the same as a digest of one of the multiple principals that are allowed to access the root resource and that is encrypted with the root resource.
34. A computing device implementing a system as recited in claim 33, wherein the root resource comprises a cryptographic key.
This application claims the benefit of U.S. Provisional Application No. 60/373,505, filed Apr. 17, 2002, entitled “Secure Store Processor”, to Paul England, Marcus Peinado, and Bryan M. Willman, which is hereby incorporated by reference.
In accordance with one aspect, 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.
A guard 104 can also be characterized as a disclosure guard and/or a service guard. A service guard performs certain operations (e.g., encryption, decryption, digital signing, etc.) with the protected data (e.g., a cryptographic key) at the request of principals without disclosing the protected data. A disclosure guard, on the other hand, reveals the protected data to authorized requesters. It should be noted that a particular guard 104 can be both a disclosure guard and a service guard.
By way of example, assume that a program 120 desires to retrieve a root resource 128 that is guarded by guard 126. Program 120 acts as a principal requesting access to the root resource 128 from module 122, which acts as a guard of the resource. If module 122 has a copy of the resource 128 (e.g., previously obtained from guard 126 in response to a previous request for the resource by program 120 or some other program in layer la, or when module 122 was initialized and loaded in the computing device), then module 122 checks whether program 120 is allowed to retrieve the resource. Module 122 then returns the resource to program 120 if program 120 is allowed to retrieve the resource.
Additionally, in either case, guard 104 authenticates the caller (principal 102). Authenticating a principal 102 is also referred to herein by a function ID( ), which returns a digest of the calling program (the program calling a gating function of guard 104). The digest can be generated in any of a wide variety of conventional manners, such as using any one or more of a variety of cryptographic hash functions (also referred to as one-way hash functions), such as SHA1 (Secure Hash Algorithm 1), MD 5 (Message Digest 5), MD 2 (Message Digest 2), etc.; using a keyed MAC (Message Authentication Code); and so forth.
One class of gating functions described herein implement sealed storage. The purpose of sealed storage is to allow programs to store secrets, such that only a particular set of one or more programs (defined by the program that stores the secret) can retrieve the secrets. In one implementation, only the program that originally saves (seals) the secret can recover (unseal) the secret. Typically, the life time of these secrets will exceed the time of individual executions of the program. Secrets used during a single execution of a program can be saved (sealed), or alternatively isolation and a random number generator also allow a program to maintain secrets during a single execution. Sealed storage also allows a program to maintain secrets across different executions, which may not overlap in time. A layer li exposes sealed storage to the next layer li+1 by means of the following interface (e.g., using the “Seal” and “UnSeal” operations and/or PKSeal and PKUnseal operations).
Pseudo code for the Seal operation is illustrated in Table I. In the pseudo code of Table I, ID( ) refers to the ID( ) function discussed above, e refers to the value (e.g., a string or sequence of bits) that is returned to the caller, data refers to the data to be sealed, and [t1 . . . , tm] refers to the digests of one or more (m) target program(s) that are allowed to retrieve (unseal) the data (or alternatively one or more other conditions).
e = store (data, [tl, . . . , tm], d)
(data, [tl, . . . , tm], d) = retrieve(e)
if ID( ) is in [tl, . . . , tm] then return (data, d)
(d, a)=ExtractKv(Sn)
([dl, . . . , dm], s) = DecryptKd(c)
if ID( ) is in [d1, . . . , dm] then return s
c=EncryptKe([dl, . . . , dm], s)
c = store (s, [tl, . . . , tm], d)
[in] DIGEST Target [2],
Allowed=FeatureEnable.MainEnable & (FeatureEnable.UseSymmKey==All| FeatureEnable.UseSymmKey==AuthSL
source Digest }
1. M=AES-1[KS](SealedBlob).
Allowed=FeatureEnable.MainEnable & (FeatureEnable.UsePrivKey==All| FeatureEnable.UsePrivKey==AuthSL
2. The SSP then uses KQ, PRIV to generate a signed message over M according to the default implementation of RSASSA-PSS-SIGN as specified in PKCS #1 V 2.1. If the function returns an error then return SSP_CRYPTO_ERROR with SigBlob set to 0.
3. The SSP returns SSP_SUCCESS and the signature value just calculated together with signatureAlgorithm rSASSA-PSS-Default-Identifier in SigBlob.
2. The SSP internally decrypts SealedBlob according to the default implementation of RSAES-OAEP-DECRYPT as specified in PKCS #1 V 2.1, obtaining a plaintext message M.
The BoundSign operation receives a data input that is to be signed using the bound key, and also receives a bound key blob. The SSP recovers the private signing key from, the bound key blob and then generates a digitally signed message over the data input using the recovered signing key. The SSP then outputs the digitally signed message. If the bound key blob is corrupted or the bound key usage condition(s), if any, are not satisfied, then the SSP does not perform the operation. The data input can thus be digitally signed using the recovered private key without the private key being revealed by the SSP.
The BoundQuote operation receives as an input data to be signed and a bound key blob. The SSP recovers the private key from the bound key blob and then uses the recovered signing key to generate a signature over the data input to the operation and the current PCR value (e.g., an identifier, such as a digest, of the program invoking the BoundQuote operation) as in the Quote operation described above. The SSP then outputs the digitally signed message. If the bound key blob corrupted or the bound key usage condition(s), if any, are not satisfied, then the SSP does not perform the operation. In one implementation, the BoundQuote operation is similar to the BoundSign operation, but differs in that the current PCR value is used in the BoundQuote operation.
The bound-to-PCR member is a flag that indicates whether the bound-to Digest field must match the current PCR value in order for the bound key to be used. {migrateable, migrate-auth} indicates whether the key is migrateable, and if under the control of what authority (if migrateable is false, then the migrate-auth value is unimportant). {exportable, export-auth} indicates whether the key is exportable, and if so under the control of what authority (if exportable is false, then the export-auth value is unimportant). Pub-key-digest is the digest of the corresponding public key to provide a strong binding between the PKCompressedPrivateKey and the public key that is needed to recover the private key.
SSP_STATUS BoundSign (
If Bound-to-PCR is set, the SSP checks that the current PCR value is as specified in the Bound-key-blob sequence. If it is not, the SSP returns SSP_CRYPTO ERROR.
6. The SSP then recovers the bound private key using the associated public key provided. If this fails, the SSP returns SSP_CRYPTO_ERROR. If it succeeds, the SSP uses the recovered private key bound-key to generate a signed message over the input message DataToBeSigned according to the default implementation of RSASSA-PSS-SIGN as specified in PKCS #1 V 2.1 If the function returns an error, then return SSP_CRYPTO_ERROR with SigBlob set to 0.
SSP_STATUS BoundQuote (
6. The SSP recovers the private key using the provided public key. The private key can be recovered as discussed above in the BoundQuote operation. It then uses the recovered private bound-key to decrypt the pk-sealed-blob using the default implementation of RSAES-OAEP-DECRYPT as specified in PKCS #1 V 2.1, obtaining a plaintext message M.
SSP_STATUS BoundPkUnseal (
[in] PKCiphertext DataToBeUnsealed,
[in] DIGEST BoundTo [2],
SSP_STATUS BoundKeyMigrate (
US4908861 Aug 28, 1987 Mar 13, 1990 International Business Machines Corporation Data authentication using modification detection codes based on a public one way encryption function
US4969189 Jun 19, 1989 Nov 6, 1990 Nippon Telegraph & Telephone Corporation Authentication system and apparatus therefor
US5283830 Sep 30, 1992 Feb 1, 1994 International Computers Limited Security mechanism for a computer system
US5339403 Apr 5, 1993 Aug 16, 1994 International Computers Limited Access control in a distributed computer system
US5448716 Oct 30, 1992 Sep 5, 1995 International Business Machines Corporation Apparatus and method for booting a multiple processor system having a global/local memory architecture
US5724527 Dec 28, 1995 Mar 3, 1998 Intel Corporation Fault-tolerant boot strap mechanism for a multiprocessor system
US5812980 Feb 16, 1995 Sep 22, 1998 Sega Enterprises, Ltd. Program operating apparatus
US5870467 Sep 15, 1995 Feb 9, 1999 Kabushiki Kaisha Toshiba Method and apparatus for data input/output management suitable for protection of electronic writing data
US6006332 Oct 21, 1997 Dec 21, 1999 Case Western Reserve University Rights management system for digital media
US6105137 Jul 2, 1998 Aug 15, 2000 Intel Corporation Method and apparatus for integrity verification, authentication, and secure linkage of software modules
US6148083 Aug 23, 1996 Nov 14, 2000 Hewlett-Packard Company Application certification for an international cryptography framework
US6148387 Jun 18, 1999 Nov 14, 2000 Phoenix Technologies, Ltd. System and method for securely utilizing basic input and output system (BIOS) services
US6192473 Dec 24, 1996 Feb 20, 2001 Pitney Bowes Inc. System and method for mutual authentication and secure communications between a postage security device and a meter server
US6230285 Sep 8, 1998 May 8, 2001 Symantec Corporation Boot failure recovery
US6338139 Jul 24, 1998 Jan 8, 2002 Kabushiki Kaisha Toshiba Information reproducing apparatus, authenticating apparatus, and information processing system
US6557104 May 2, 1997 Apr 29, 2003 Phoenix Technologies Ltd. Method and apparatus for secure processing of cryptographic keys
US6772133 Mar 3, 2000 Aug 3, 2004 Kabushiki Kaisha Toshiba Information recording device and information reproducting device
US6950941 Apr 30, 1999 Sep 27, 2005 Samsung Electronics Co., Ltd. Copy protection system for portable storage media
US7017188 May 12, 1999 Mar 21, 2006 Softricity, Inc. Method and apparatus for secure content delivery over broadband access networks
US20010044901 * Mar 24, 1998 Nov 22, 2001 Symantec Corporation Bubble-protected system for automatic decryption of file data on a per-use basis and automatic re-encryption
US20020069365 Sep 10, 1999 Jun 6, 2002 Christopher J. Howard Limited-use browser and security system
US20020120936 Mar 11, 2002 Aug 29, 2002 Del Beccaro David J. System and method for receiving broadcast audio/video works and for enabling a consumer to purchase the received audio/video works
US20020170053 Oct 26, 2001 Nov 14, 2002 General Instrument, Inc. ECM and EMM distribution for multimedia multicast content
US20030014315 * Dec 4, 2000 Jan 16, 2003 Harri Jaalinoja Method and a system for obtaining services using a cellular telecommunication system
US20030056112 Aug 26, 2002 Mar 20, 2003 Jeffrey Vinson Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US20030126454 Dec 28, 2001 Jul 3, 2003 Glew Andrew F. Authenticated code method and apparatus
US20030163711 Feb 22, 2002 Aug 28, 2003 Grawrock David W. Multi-token seal and unseal
US20030188179 Mar 28, 2002 Oct 2, 2003 International Business Machines Corporation Encrypted file system using TCPA
US20040003273 Jun 26, 2002 Jan 1, 2004 Grawrock David W. Sleep protection
US20070067624 Nov 8, 2006 Mar 22, 2007 Microsoft Corporation Saving and Retrieving Data Based on Symmetric Key Encryption
US20070086588 Nov 8, 2006 Apr 19, 2007 Microsoft Corporation Saving and Retrieving Data Based on Symmetric Key Encryption
US20070088946 Nov 8, 2006 Apr 19, 2007 Microsoft Corporation Saving and Retrieving Data Based on Symmetric Key Encryption
US20070088949 Nov 8, 2006 Apr 19, 2007 Microsoft Corporation Saving and Retrieving Data Based on Public Key Encryption
US20070104329 Dec 22, 2006 May 10, 2007 Microsoft Corporation System and Method for Authenticating an Operating System to a Central Processing Unit, Providing the CPU/OS with Secure Storage, and Authenticating the CPU/OS to a Third Party
EP1132828A1 Sep 14, 2000 Sep 12, 2001 Sony Corporation Data providing system and method therefor
GB2260629B Title not available
JP11265317A Title not available
JP2000260121A Title not available
JP2001282375A Title not available
JP2002049499A Title not available
JP2003271254A Title not available
1 ""Non-Final Office Action", U.S. Appl. No. 10/431,011, (Jun. 1, 2007),", U.S. Appl. No. 10/431,011, (Jun. 1, 2007), 1-6.
2 "AEGIS: Architecture for Tamper-Evident and Tamper-Resistant Processing", Suh et al., MIT Laboratory for Computer Science, XP-002265826, 2003, pp. 1-16.
3 "Authenticated Encryption: Relations among notions and analysis of the generic composition paradigm", Bellare et al., Sep. 25, 2000, pp. 1-29.
4 "Building a high-performance, programmable secure coprocessor", Smith et al., Computer Networks, vol. 31, No. 8, Apr. 1999, pp. 831-860.
5 "Defending Systems Against Viruses through Cryptographic Authentication", Davida et al., IEEE Computer Society Symposium on Security and Privacy, May 1-3, 1989, pp. 312-318.
6 "Department of Defense Trusted Computer System Evaluation Criteria", Department of Defense Standard, Dec. 1985, pp. 1-79.
7 "Facing an Internet Security Minefield,Microsoft Hardens NT Server Defenses", Young R., Windows Watcher, Sep. 12, 1997, vol. 7, Issue 9, p1, 6p, 1 chart.
8 "Final Office Action", U.S. Appl. No. 10/430,994, (Jul. 10, 2007).
9 "Final Office Action", U.S. Appl. No. 11/557,595, (Sep. 17, 2009),6 pages.
10 "First Office Action", Chinese Application No. 200710152961.4, (Jan. 8, 2010),8 pages
11 "Foreign Notice of Rejection", Japanese Patent Appln No. 2003-113502, (Sep. 15, 2009), 13 pages.
12 "Foreign Office Action", Application Serial No. 10-2003-0024377, (Feb. 22, 2010),7 pages.
13 "Foreign Office Action", Application Serial No. 2003-113503, (Sep. 15, 2009),14 pages.
14 "Foreign Office Action", Application Serial No. 200610059598.7, (Feb. 20, 2009), 9 pages.
15 "Foreign Office Action", Application Serial No. 200610059598.8, (Feb. 20, 2009), 7 pages.
16 "Foreign Office Action", Application Serial No. 200710152963.3, (Mar. 1, 2010),21 pages.
17 "Foreign Office Action", Japanese Application No. 2003-113502, (Oct. 26, 2010), 7 pages.
18 "Foreign Office Action", Japanese Application No. 2003-113503, (Oct. 26, 2010), 7 pages.
19 "Foreign Office Action", Korean Application No. 10-2003-24377, (Sep. 30, 2010), 9 pages.
20 "Handbook of Applied Cryptography", CRC Press Series on Discrete Mathematics and its applications, 1997, XP-002265828, pp. 33,493,509,510,546-552.
21 "Internet Security: SanDisk Products and New Microsoft Technology Provide Copy Protected Music for Internet Music Player Market. (Product Annoucement)", Edge: Work Group Computing Report, Apr. 19, 1999, 2 pages.
22 "Keying Hash Functions for Message Authentication", Bellare et al., Advances in Cryptology-CRYPTO, 1996, LNCS 1109, pp. 1-15.
23 "Non Final Office Action", U.S. Appl. No. 10/430,994, (Jan. 24, 2007).
24 "Non Final Office Action", U.S. Appl. No. 11/557,581, (Feb. 13, 2009), 21 pages.
25 "Non-Final Office Action", U.S. Appl. No. 10/430,994, (Aug. 09, 2006).
26 "Non-Final Office Action", U.S. Appl. No. 10/430,994, (Dec. 14, 2005).
27 "Non-Final Office Action", U.S. Appl. No. 10/430,994, (Jun. 16, 2005).
28 "Non-Final Office Action", U.S. Appl. No. 10/431,011 Jun. 30, 2006.
29 "Non-Final Office Action", U.S. Appl. No. 11/557,581, (Oct. 20, 2009),6 pages.
30 "Non-Final Office Action", U.S. Appl. No. 11/557,595, (Feb. 25, 2009),6 pages.
31 "Notice of Allowance", U.S. Appl. No. 11/557,581, (Apr. 6, 2010), 8 pages.
32 "Notice of Allowance", U.S. Appl. No. 11/557,595, (Mar. 11, 2010),4 pages.
33 "Notice of Allowance", U.S. Appl. No. 11/557,641, (Jun. 2, 2009), 6 pages.
34 "Notice of Preliminary Rejection", Korean Application No. 10-2003-0024374, (Mar. 26, 2010), 5 pages.
35 "Notice on Grant of Patent", Application Serial No. 200610059571.8, (Jun. 19, 2009), 4 pages.
36 "Notice on Grant of Patent", Application Serial No. 200610059598.7, (Jun. 19, 2009), 4 pages.
37 "On the (Im)possibility of Obfuscating Programs", Barak et al., CRYPTO, 2001, LNCS 2139, pp. 1-18.
38 "Personal Secure Booting", Itoi et al., ACISP 2001, LNCS 2119, pp. 130-144.
39 "Phoenix Technologies Partners with Secure Computing in Enterprise Security Marketplace", Jul. 12, 2001, Business Wire, Courtesy of Dialog Text Search, p. 1-2.
40 "Protection", Lampson, B.W., in Proc. Fifth Princeton Symposium on Information Sciences and Systems, Princeton University, Mar. 1971, pp. 437-443, reprinted in Operating Systems Review, 8, 1, Jan. 1974, pp. 18-24.
41 "Tamper-resistant software: An Implementation", Aucsmith, D., Lecture Notes in Computer Science, 1996, vol. 1174, pp. 317-333.
42 "TCPA main specification version 1.1a",Sep. 1, 2001, website: http//www.trustedpc.org, Trusted Computing Platform Alliance, 332 pages.
43 "The TrustNo 1 Cryptoprocessor Concept", Kuhn, M., XP-002265827, Apr. 30,1997, 6 pages.
44 "Trusted Computing Platform Alliance Main Specification Version 1.1b", Trusted Computing Group, Available at <http://www.trustedcomputinggroup.org/files/resource-files/64795356-1D09-3519-ADAB12F595B5FCDF/TCPA-Main-TCG-Architecture-v1-1b.pdf>,(Feb. 22, 2002), 25 pages.
45 "Trusted Computing Platform Alliance Main Specification Version 1.1b", Trusted Computing Group, Available at <http://www.trustedcomputinggroup.org/files/resource—files/64795356-1D09-3519-ADAB12F595B5FCDF/TCPA—Main—TCG—Architecture—v1—1b.pdf>,(Feb. 22, 2002), 25 pages.
46 "Trusting Trusted Hardware: Towards a Formal Model for Programmable Secure Coprocessors", Smith et al., Third USENIX Workshop on Electronic Commerce, 1998, pp. 83-98.
47 "Using a High-Performance, Programmable Secure Coprocessor", Smith et al., FC'98, LNCS 1465, 1998, pp. 73-89.
48 Abadi et al., "Authentication and Delegation with Smart-cards", Jul. 30, 1992, 30 pgs.
49 Arbaugh et al., "A Secure and Reliable Bootstrap Architecture", Distributed Systems Laboratory, Philadelphia, PA, 1997, pp. 65-71.
50 Arbaugh, William et al., "Automated Recovery in a Secure Bootstrap Process", Network and Distributed System Security Symposium, Internet Society, (Mar. 1998), 155-167.
51 Blaze, Matt "A Cryptographic File System for Unix", Conference on Computer and Communications Security, Proceedings of the 1st ACM conference on Computer and communications security, ACM, pp. 9-16, 1993,8 pages.
52 Clark et al., "Bits: A Smartcard Protected Operating System", Communications of the ACM, vol. 37, No. 11, Nov. 1994, pp. 66-70, 94.
53 Coffey, et al., "Non-repudiation with mandatory proof of reciept", ACM, vol. 26,(1996),6-17.
54 England, Paul et al., "Authenticated Operation of Open Computing Devices", In Proceedings of 7th Australian Conference on Information Security and Privacy, (Jul. 2002), 16 pages.
55 First Office Action from The Patent Office of the State Intellectual Property Office of the People's Republic of China in a counterpart foreign application, date of dispatch Nov. 4, 2005, including English translation, 11 pages.
56 Housley, R "Internet X.509 Public Key Infrastructure Certificate and CRL Profile", 1-3, Jan. 1999.
57 Lampson et al., "Authentication in Distributed Systems: Theory and Practice", Digital Equipment Corporation, ACM Transactions on Computer Systems, vol. 10, No. 4, Nov. 1992, pp. 265-310.
58 Muller-Schloer, Christian "A Microprocessor-based Cryptoprocessor", vol. 3 Issue 5, (Oct. 31, 1983), 5-15.
59 Murphy et al., "Preventing Piracy: Authorization Software May Ease Hollywood's Fear of the Net", Internet World Magazine, Apr. 1, 2000, 3 pages.
60 Schneier, B., "Applied Cryptography", Applied Cryptography. Protocols, Algoriths, and Source Code in C, 1996, pp. 574-577.
61 William Stallings, "Cryptography and Network Security: Principles and Practice", Prentice-Hall, Inc., Publishers, 1999, title page and pp. 50-56, 166-169, 249-255, and 272-273.
62 Yee, "Using Secure Coprocessors", School of Computer Science, Carnegie Mellon University, 1994, 104 pgs.
US8589701 * Jan 27, 2011 Nov 19, 2013 Microsoft Corporation Saving and retrieving data based on public key encryption
US8918907 * Apr 13, 2011 Dec 23, 2014 Phoenix Technologies Ltd. Approaches for firmware to trust an application
US8954546 Jan 25, 2013 Feb 10, 2015 Concurix Corporation Tracing with a workload distributor
US9021262 Jan 25, 2013 Apr 28, 2015 Concurix Corporation Obfuscating trace data
US9207969 Jan 25, 2013 Dec 8, 2015 Microsoft Technology Licensing, Llc Parallel tracing for performance and detail
US20120266259 * Apr 13, 2011 Oct 18, 2012 Lewis Timothy A Approaches for firmware to trust an application
WO2014116290A1 * May 21, 2013 Jul 31, 2014 Concurix Corporation Obfuscating trace data
U.S. Classification 713/193, 713/189, 380/287, 713/155
International Classification G06F21/00, G06F12/14, G06F11/30, G09C1/00, H04L9/32
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ENGLAND, PAUL;PEINADO, MARCUS;REEL/FRAME:013951/0848