Claims
- 1. A controller for controlling a device, comprising:
a processor adapted to execute a program, and a trusted cache, the trusted cache being coupled to the processor and including:
a nonvolatile memory; a context data save engine adapted to selectively save the context of the program to the nonvolatile memory, and a context data recovery engine adapted to recover the saved context from the nonvolatile memory, the processor being adapted continue execution of the program from the recovered saved context of the program upon failure of one of the controller, the program and the host device.
- 2. The controller of claim 1, wherein the processor and the trusted cache are one of:
formed together on a single chip integrated circuit; disposed on a single piece hybrid circuit; and disposed on a single electronic board.
- 3. The controller of claim 1, wherein the controller further comprises a hardware random number generator coupled to the processor, the hardware random number generator being configured to provide the processor with random encryption keys or random numbers.
- 4. The controller of claim 1, wherein the trusted cache further comprises a watchdog timer, the watchdog timer being configured to timeout and generate an alert signal unless periodically reset.
- 5. The controller of claim 4, further including a restart engine configured to initiate a controller restart cycle upon receiving the alert signal.
- 6. The controller of claim 5, wherein the restart engine is configured to initiate a three phase controller restart cycle comprising a software reboot cycle, a hardware reset cycle and a power off cycle, the hardware reset cycle only being initiated upon failure of the software reboot cycle and the power off cycle only being initiated upon failure of the hardware reset cycle.
- 7. The controller of claim 1, further including a hardware random number generator.
- 8. The controller of claim 7, wherein the processor, the trusted cache and the hardware random number generator are one of:
formed together on a single chip integrated circuit; disposed on a single piece hybrid circuit; and disposed on a single electronic board.
- 9. A method of securely executing a software program, comprising the steps of:
retrieving a timeout value and a secret key from an entry in a table; setting a counter to the timeout value and starting the counter; receiving a secret key provided by the software program; determining whether the secret key retrieved from the table matches the secret key received from the software program, and terminating an execution of the software program if the counter indicates that the timeout value has been exceeded or if the secret key retrieved from the table does not match the secret key received from the software program.
- 10. The method of claim 9, further comprising the step of returning to the retrieving step to retrieve a timeout value and a secret key from a next entry in the table.
- 11. The method of claim 9, further comprising the step of allowing the software program to continue execution if the secret key retrieved from the table matches the secret key received from the software program and the timeout value has not been exceeded.
- 12. The method of claim 9, wherein the secret key retrieved from the table and received from the software program are encrypted and wherein the determining step includes a step of decrypting the secret keys retrieved from the table and received from the software program.
- 13. The method of claim 9, wherein the terminating step includes a step of cutting a power off from and returning power to a hardware executing the software program.
- 14. The method of claim 9, wherein the software program is divided into a plurality of execution sequences, each of the execution sequences being divided by a checkpoint at which the secret key is provided and wherein execution of each execution sequence is contingent upon a timely provision of the secret key at the preceding checkpoint.
- 15. Method of carrying out an online transaction between a user device and a remote server over a network, comprising the steps of:
initiating a user transaction at the user device; storing a copy of the user transaction in a trusted cache memory within the user device; sending the user transaction to the remote server under a control of the user device, and carrying out one of:
receiving a confirmed acknowledgment of the user transaction from the remote server and providing the confirmed acknowledgment, and generating a provisional acknowledgment of the user transaction from the stored copy of the user transaction in the trusted cache if the confirmed acknowledgment is not received within a predetermined period of time.
- 16. The method of claim 15, further comprising the step of:
receiving the confirmed acknowledgment from the remote server after the predetermined period of time and storing the received confirmed acknowledgment in the trusted cache.
- 17. The method of claim 16, further including a step of providing the stored confirmed acknowledgment upon request from a user of the user device.
- 18. The method of claim 15, further comprising the step of re-sending the copy of the user transaction stored in the trusted cache to the remote server upon failure to receive the confirmed acknowledgment from the remote server.
- 19. The method of claim 18, wherein the re-sending step is carried out until a confirmed acknowledgment of the user transaction is received from the remote server.
- 20. The method of claim 18, wherein the re-sending step is carried out a predetermined number of times.
- 21. The method of claim 15, wherein the generating step includes a step of printing the provisional acknowledgment together with a corresponding machine-readable indicia that uniquely identifies the user transaction.
- 22. The method of claim 16, wherein the generating step includes a step of printing the provisional acknowledgment together with machine-readable indicia uniquely identifying the user transaction and wherein the method further includes a step of reading the machine-readable indicia and providing the stored confirmed acknowledgment that corresponds to the read machine-readable indicia.
- 23. The method of claim 22, wherein the stored confirmation acknowledgment providing step includes a step of printing the confirmation acknowledgment.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to co-pending and commonly assigned application No. ______ filed on ______, attorney reference CYBS5738 entitled “Trusted Transactional Set-Top Box” and co-pending and commonly assigned application No. ______ filed on ______, attorney reference CYBS5739 entitled “Trusted Transactional Kiosk”, the disclosures of each being incorporated herewith by reference.