Claims
- 1. A cryptographic system enabling ownership of a secure process that includes one or more of secure distributing, loading and running of programs, comprising:
a memory having capacity for holding an imported program; and a cryptographic processor configured to hold securely one or more seed values, the cryptographic processor including
a physical security circuit configured to hold one of the seed values and a public key, a read only memory configured to hold a second one of the seed values and a program to be used by the cryptographic system for authenticating the imported program, and a random access memory configured to hold a third one of the seed values and a cryptographic key created from the seed values, wherein the cryptographic key is used by the cryptographic processor for decrypting the imported program, and wherein the public key is used by the cryptographic processor for authenticating the imported program.
- 2. A cryptographic system as in claim 1, wherein the public key corresponds to a private key that is known only to a provider of the imported program so that the provider can establish ownership of secure distribution, loading and execution of the imported program by signing the imported program with the private key.
- 3. A cryptographic system as in claim 1, further comprising:
a secure bus linking the memory and cryptographic processor.
- 4. A cryptographic system as in claim 1, wherein the cryptographic processor further includes
a hashing engine configured for generating an expected hash of the imported program to be used in authenticating the imported program.
- 5. A cryptographic system as in claim 1, wherein the physical security circuit is maintained by a buttery.
- 6. A cryptographic system as in claim 1, wherein the cryptographic processor further includes
a processing unit capable of executing the program, and an internal secure bus operatively linking the processing unit to the hashing engine, the physical security circuit, the read only memory and the random access memory.
- 7. A cryptographic system as in claim 1, wherein the read only memory is configured to further hold a flag, the flag being used in determining whether there is a International Cryptography Framework restriction associated with the cryptographic system.
- 8. A cryptographic system as in claim 1, further comprising:
cryptographic co-processors capable of operating in parallel for handling cryptographic tasks provided by the cryptographic processor.
- 9. A cryptographic system as in claim 1, wherein the cryptographic processor further includes
a decryption/encryption engine capable of using the keys for decrypting/encrypting the imported program.
- 10. A cryptographic system as in claim 1, wherein the cryptographic processor further includes
a public/private key cryptography engine capable of using the public key for decrypting a signature associated with the imported program and the private key.
- 11. A cryptographic system as in claim 1, wherein the program is a red-boot program executed each time the cryptographic system is powered off or reset.
- 12. A method, performed by a cryptographic system in a computer system, for enabling ownership of a secure process that includes one or more of secure distribution, loading and running of programs, comprising the steps of:
generating a cryptographic key from seed values held securely by the cryptographic processor; decrypting, using the cryptographic key, a packet that includes an imported program, a hash and a signature in encrypted form; and authenticating the imported program each time before it is to be loaded into or executed by the computer system, using also a public key to decrypt the signature and verify it against the hash value produced from the packet decryption, the signature resulting from previously signing the hash by a private key that corresponds to the public key and is known only to the provider of the imported program in order to maintain ownership over its distribution, loading and execution.
- 13. The method of claim 12, wherein the cryptographic processor executes a red-boot program for performing these steps each time it is powered-off or reset, the red-boot program requiring the public key for authenticating each imported program, the red-boot program transferring control to the imported program only if the imported program is successfully authenticated.
- 14. The method of claim 13, wherein the imported program is a black-boot program that is configured to perform these steps except that the black-boot program requires that the public key be a customized public key for authenticating each subsequently imported program associated with a user and the private key corresponding to the customized public key is a user-maintained private key, so that upon authenticating any of the subsequently imported program the user can take over ownership of the secure process from a provider of the cryptographic processor.
- 15. A method for initializing a secure system, comprising:
each time the cryptographic system is initialized upon power up, if the system is initialized in a secure mode, generating cryptographic keys, including a first cryptographic key, from seed values held securely in the cryptographic system; loading a first encrypted program packet into the system from an external memory; decrypting the first encrypted program packet with the first cryptographic key to provide a first program file and a first digital signature; authenticating the first digital signature prior to each execution of the first program file; and only when the first digital signature is authentic, executing the first program file.
- 16. The method of claim 15, further comprising:
loading a second encrypted program packet into the system from an external memory; decrypting the second encrypted program packet to provide a second program file and a second digital signature; and authenticating the second digital signature using a second cryptographic key from the first program file.
- 17. The method of claim 15, further comprising:
when the first digital signature is not authentic, not executing the first program file, and erasing the first cryptographic key from a volatile memory.
- 18. The method of claim 15 wherein the encrypted program packet is DES encrypted.
- 19. The method of claim 15 wherein the encrypted program packet is triple-DES encrypted using a CBC DES algorithm.
- 20. The method of claim 15 wherein the external memory is a flash memory.
- 21. The method of claim 15 wherein the decrypting further provides a header and a hash value for the program file.
- 22. The method of claim 21 wherein the first digital signature is an RSA encryption of the hash value.
- 23. The method of claim 2 wherein the RSA encryption is accomplished using a private key of a public/private key pair.
- 24. The method of claim 23 further comprising:
providing a public key of the public/private key pair; decrypting the first digital signature with the public key to produce a decrypted digital signature value; and determining the program file is not authentic if the decrypted digital signature value is not equal to an expected value.
- 25. The method of claim 24 wherein the expected value is the hash value.
- 26. The method of claim 21 wherein the hash value is produced using a FIPS 180-1 standard algorithm.
- 27. The method of claim 21 further comprising:
calculating an expected hash value for the program file; comparing the expected hash value with the hash value; and determining the program file is not authentic if the expected hash value does not equal the hash value.
- 28. The method of claim 21, further comprising:
examining the header; determining the program file is not authentic if the header is not of an expected format.
- 29. A method of initializing a secure system comprising:
loading a first encrypted program packet with a header into a system from an external memory; each time the cryptographic system is initialized upon power up, if the system is initialized in a secure mode, generating cryptographic keys, including a first cryptographic key from seed values held securely in the system; decrypting the first encrypted program packet with the first cryptographic key to provide a first program file, a hash value, and a first digital signature; prior to each execution of the first program file,
determining the first program file is not authentic if the header is not of an expected format; calculating an expected hash value from the first program file; determining the first program file is not authentic if the expected hash value is not equal to the hash value; decrypting the digital signature using an RSA public key to produce a decrypted digital signature value; and determining the first program file is not authentic if the decrypted digital signature value does not equal the hash value; and when the program file is not authentic, erasing the first cryptographic key, otherwise, executing the first program file.
- 30. The method of claim 29 wherein the hash value is produced using a FIPS 180-1 standard algorithm.
- 31. The method of claim 29 wherein the first program file is triple DES encoded with a CBC DES algorithm.
- 32. A computer software product including executable code stored on a computer readable storage medium causing a processor to:
load a first encrypted program packet into the system from an external memory; each time the cryptographic system is initialized upon power up, if the system is initialized in a secure mode, generating cryptographic keys, including a first cryptographic key, from seed values held securely in the cryptographic system; decrypt the first encrypted program packet with the first cryptographic key to provide a first program file and a first digital signature; authenticate the first digital signature prior to execution of the first program file; and only when the first digital signature is authentic, execute the first program file.
- 33. The computer software product of claim 32 wherein the storage medium is a secure non-volatile memory.
- 34. The computer software product of claim 32 wherein the processor operates the executable code after a system reset before running any other executable code.
- 35. A cryptographic system comprising:
a memory unit, the memory unit containing encrypted program file with which a hash value in encrypted form is associated; a cryptographic processor device, the cryptographic processor device including a processor; an engine capable of using a cryptographic key for decrypting the encrypted program file into a decrypted program file, the cryptographic key being generated from seed values held securely in the cryptographic system each time the cryptographic system is initialized in a secure mode upon power up; a hashing engine for determining the hash value of the decrypted program file; and a public key cryptography engine for decrypting a digital signature provided with the encrypted program file to produce a decrypted digital signature value that corresponds to the hash value in decrypted form, wherein prior to each execution the processor retrieves from the memory unit the encrypted file in order to obtain therefrom and authenticate the decrypted digital signatures.
- 36. The cryptographic system of claim 35 wherein the public key encryption engine performs RSA public key encryption using the public key of a public/private key pair for decrypting the digital signature.
- 37. A secure digital system, comprising:
a processor; a cryptography unit residing on the same substrate as the processor, the cryptography unit being coupled to the processor by a first data bus, the first data bus being protected from external probing; and a destination unit, the destination unit residing on a different substrate than the processor, the destination unit being coupled to the processor by a second data bus, wherein the processor directs data to the cryptography unit on the first data bus to produce encrypted data using a cryptographic key that is generated from seed values held securely in the secure digital system, wherein the processor directs the encrypted data to the destination unit on the second data bus and wherein the processor retrieves the encrypted data from the destination unit on the second data bus and directs the encrypted data to the cryptography unit to reproduce the data wherein the reproduced data is executed by the processor, but each time before its execution the reproduced data is verified and authenticated.
- 38. The secure digital system of claim 37, further comprising:
a decryption unit, wherein the processor retrieves the encrypted data from the destination unit on the second data bus, and directs the encrypted data to the decrypting unit to reproduce the data.
- 39. The secure digital system of claim 38, wherein the encryption unit and the decryption unit are a single unit.
- 40. The secure digital system of claim 37, wherein the cryptography unit performs DES encryption, and wherein the cryptographic key is a DES key.
- 41. The secure digital system of claim 37, wherein the destination unit is a memory.
- 42. The secure digital system of claim 41, wherein the memory is one of the set consisting of random access memory and flash memory.
- 43. The secure digital system of claim 37, wherein the destination unit is a co-processing unit.
- 44. The secure digital system of claim 43, wherein the destination unit includes an encryption/decryption unit for decrypting encrypted data received from the second data bus and for encrypting data sent on the second data bus.
- 45. The method of claim 15 wherein upon initialization the loading, decrypting, authenticating and executing of the first program file are performed before any other executable code is executed.
- 46. The method of claim 15 wherein the loading, decrypting and authenticating are done each time prior to execution of the first program file.
- 47. The method of claim 15 wherein the loading of the first encrypted program packet is done each time a system reset occurs.
- 48. The method of claim 15 wherein upon initialization the loading, decrypting, authenticating and executing of the first program file are performed before any other executable code is executed.
- 49. The method of claim 15 wherein the loading, decrypting and authenticating are done each time prior to execution of the first program file.
- 50. The method of claim 15 wherein the loading of the first encrypted program packet is done each time a system reset occurs.
- 51. A method of operating a cryptographic system in a secure manner, comprising:
loading by a processor in the cryptographic system a first encrypted packet with a first program file; decrypting the first encrypted packet with a first decryption key created from seed values held securely in the cryptographic system, the decryption creating a decrypted first program file; authenticating the decrypted first program file using a first authentication key provided in the cryptographic system; if the first program file is authenticated, executing the first program file to load a second encrypted packet with a second program file containing a key/option table with a second authentication key, wherein the second authentication key can be customized for a user of the cryptographic system so that the second authentication key is known only to that user; decrypting the second encrypted packet to create a decrypted second program file using a second decryption key generated from the seed values; before execution of the decrypted second program file, authenticating the decrypted second program file using the second authentication key.
- 52. A method for enabling ownership of a secure process in a computer system with a cryptographic system, comprising:
decrypting, by the cryptographic system using a cryptographic key created from seed values held securely in the cryptographic system, an encrypted packet with a load program to create an original load program; authenticating and validating the original load program using a public key of a public/private key pair the private key being maintained and known only to a provider of the cryptographic system; and if the original load program is determined to be a secure load file and is authenticated,
placing the cryptographic system in a secure mode, and authenticating a secondary loader program, wherein the secondary loader program can be customized for a user by placing a personalized public key in a table, the personalized public key corresponding to a personalized private key known only to the user, and wherein the secondary loader program is configured, in response to a load command from the cryptographic system, to allow a user program to be loaded and stored in memory if the user program is authenticated, using the personalized public key, the user program being signed by the personalized private key, and in response to a start command from the cryptographic system, to execute the stored user program if it is authenticated.
- 53. A method as in claim 42 further comprising:
if the original load program is determined to be a normal load file and is authenticated, determining the state of an exporting regulation flag, so that if the exporting regulation flag is set authenticating a program before allowing it to execute, and if the exporting regulation flag is reset allowing the program to execute in normal mode.
- 55. A cryptographic system, comprising:
means for loading a first encrypted packet with a first program file; means for decrypting the first encrypted packet with a first decryption key created from seed values held securely in the cryptographic system, the decryption creating a decrypted first program file; means for authenticating the decrypted first program file using a first authenticating key provided in the cryptographic system; means for causing the first program file, if the first program file is authenticated, to load a second encrypted packet with a second program file containing a key/option table with a second authentication key, wherein the second authentication key can be customized for a user of the cryptographic system so that the second authentication key is known only to that user; means for decrypting the second encrypted packet with a second decryption key generated from the seed values to create a decrypted second program file; and means for authenticating the decrypted second program file using the second authentication key before execution of the decrypted second program file.
- 56. A cryptographic system, comprising:
means for decrypting an encrypted packet with a load program to create an original load program; means for authenticating and validating the original load program using a key provided in the cryptographic system, the key corresponding to a private key known only to a provider of the cryptographic system, the private key being used to sign the load program; and if the original load program is determined to be a secure load file and is authenticated, means for placing the cryptographic system in a secure mode, and means for authenticating a secondary loader program, wherein the secondary loader program can be customized for a user by placing a personalized public key in a table, and wherein the secondary program is configured, in response to a load command from the cryptographic system, to allow a user program to be loaded and stored in memory if the user program is authenticated, the user program being signed by a private key corresponding to the personalized public key that is known only to the user, and in response to a start command from the cryptographic system, to execute the stored user program if it is authenticated via the personalized public key.
- 57. A cryptographic system as in claim 56 further comprising:
means for determining the state of an exporting regulation flag if the original load program is determined to be a normal load file and is authenticated; means for authenticating a program before allowing it to execute if the exporting regulation flag is set; and means for allowing the program to execute in normal mode if the exporting regulation flag is reset.
- 58. A cryptographic system as in claim 56, further comprising:
means for securely holding cryptographic system initialization instructions capable of placing the cryptographic system in a secure mode, the holding means being configured to prevent external probing, surreptitious access or alteration without its destruction, wherein upon power up the cryptographic system will be initialized to the secure mode if before power down the cryptographic system was in the secure mode, and wherein the cryptographic system will be initialized upon power up to a non-secure mode if before power down the cryptographic system was in the non-secure mode.
Parent Case Info
[0001] REFERENCE TO PRIOR APPLICATION
[0002] This Application is a continuation in part (CIP) of and incorporates by reference U.S. Application Ser. No. 09/017,759 filed Feb. 3, 1998, and titled “Cryptographic System”.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09017759 |
Feb 1998 |
US |
Child |
09949323 |
Sep 2001 |
US |