Claims
- 1. A method of sending a secure message between a first application program and a second application program by restricting the use of a cryptographic key to the first application program and the second application program, said first application program and the second application program running on a device, comprising:
providing a first key known to a cryptographic processing module; providing an application container data structure that contains a cryptographically sealed form of the data for the first application program and second application program to access; performing a cryptographic gatekeeping function that computes a cryptographic digest of a portion of an in-memory image of at least one of the first application program and second application program; performing an integrity-check by the cryptographic processing module by examining the application container data structure, the cryptographic digest, and the first key to determine if at least one of the first application program and second application program is allowed to unseal the cryptographically sealed form of the data; and authenticating, by the first application program, the secure message sent by the second application using the application container data structure.
- 2. The method of claim 1 further comprising performing a privacy operation by the cryptographic processing module that encrypts or decrypts the cryptographically sealed form of the data in the application container data structure using a key derived from at least the first key and cryptographic digest, and when the cryptographically sealed form of the data is to be encrypted, the crytographic processing module adds to the application container data structure the cryptographic digest before the encryption is performed.
- 3. The method of claim 1 further comprising providing an authorization buffer that specifies the result of the integrity-check, and wherein the cryptographic gatekeeping function confirms that the at least one of the first application program and second application program is allowed to unseal the cryptographically sealed form of the data.
- 4. The method of claim 1 wherein the integrity-check includes:
deriving a cryptographic variable from the cryptographic digest and the first key; and using the cryptographic variable to check a message authentication code that is stored in the application container data structure.
- 5. The method of claim 1 wherein the integrity-check includes:
decrypting data derived from the application container data structure using a key derived from the first key to create a resulting value and comparing the resulting value to data derived from the cryptographic digest; and allowing access to the cryptographically sealed form of the data if the resulting value is the same as the data derived from the cryptographic digest.
- 6. The method of claim 2 wherein the privacy operation includes:
deriving a cryptographic variable from the cryptographic digest and the first key, wherein the cryptographic variable is used to decrypt or encrypt a portion of the application container data structure.
- 7. The method of claim 1 wherein the first key is stored in a secure database indexed by a key ID.
- 8. The method of claim 1 wherein the device is one of an encryption/decryption hardware device and a limited access server.
- 9. A system for sending a secure message between a first application program and a second application program by restricting the use of a cryptographic key to the first application program and the second application program running on a device of said system, comprising:
a memory containing instruction sequences, a first key that is known to a cryptographic processing module, and an application container data structure that contains a cryptographically sealed form of the data for the first application program and second application program to access; and, a processor, coupled to the memory, said processor to execute the cryptographic processing module, said instruction sequences to cause the processor to:
compute a cryptographic digest of a portion of an in-memory image of at least one of the first application program and second application program; perform an integrity-check by the cryptographic processing module by examining the application container data structure, the cryptographic digest, and the first key to determine if at least one of the first application program and second application program is allowed to unseal the cryptographically sealed form of the data; and authenticate, by the first application program, the secure message sent by the second application using the application container data structure.
- 10. The system of claim 9 wherein said instruction sequences further cause the processor to perform a privacy operation by the cryptographic processing module that encrypts or decrypts the cryptographically sealed form of the data in the application container data structure using a key derived from at least the first key and cryptographic digest, and when the cryptographically sealed form of the data is to be encrypted, the crytographic processing module adds to the application container data structure the cryptographic digest before the encryption is performed.
- 11. The system of claim 9 further comprising an authorization buffer that specifies the result of the integrity-check, and wherein the system confirms that the at least one of the first application program and second application program is allowed to unseal the cryptographically sealed form of the data.
- 12. The system of claim 9 wherein said processor, in performing the integrity-check, further:
derives a cryptographic variable from the cryptographic digest and the first key; and uses the cryptographic variable to check a message authentication code that is stored in the application container data structure.
- 13. A system of authenticating a device and an application program that is running on the device, said system comprising:
a hidden storage containing a first key; a memory for storing instruction sequences; and a processor, coupled to the hidden storage and the memory, said instruction sequences to cause the processor to:
execute a cryptographic gatekeeper module that runs in a restricted mode and computes a cryptographic digest of a portion of the application program; and authenticate the device and the application program using the first key and the cryptographic digest.
- 14. The system of claim 13, wherein the application program is part of an operating system kernel.
- 15. The system of claim 13, wherein the application program and device are authenticated before the application program is allowed to access sensitive data.
- 16. The system of claim 13, wherein the first key is a shared key for use in a symmetric key cryptosystem.
- 17. The system of claim 13, wherein firmware controls the system during a system initialization process that begins in response to a power-on or reset signal.
- 18. The system of claim 13, wherein:
the hidden storage is in a system management random access memory which is not accessible by any program running in a normal operating mode of the system; and the restricted operating mode is a system management mode in which access to the system management random access memory is permitted.
- 19. The system of claim 13, wherein the first key is generated in cooperation with a shared server that computes application keys to be shared with at least one other system.
- 20. The system of claim 13, wherein the shared server shares said application keys with the at least one other system to authenticate devices and device-bound applications.
CROSS-REFERENCE TO RELATED APPLICATION
[0001] The present application is a continuation-in-part application of U.S. patent application Ser. No. 09/829,074, entitled “System and Method for Security of Computing Devices,” filed Apr. 9, 2001.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09829074 |
Apr 2001 |
US |
Child |
10342709 |
Jan 2003 |
US |