Hierarchical trusted code for content protection in computers
AssigneeMicrosoft Corporation
InventorsPaul England, Butler Lampson
Life of this patent
Estimating the term…
Abstract
An architecture for protecting premium content in a nonsecure computer environment executes only a small number of code modules in a secure memory. The modules are arranged in a hierarchy of trust, where a module names other modules that it is willing to trust, and those modules in turn name other modules that they are willing to trust. A secure loader loads a security manager that oversees a number of content-providing modules for manipulating the content. A memory manager assigns permissions to various pages of the secure memory. The memory has rings of different security. The security model can be extended to program modules and other devices on the computer's bus, such as DMA controllers and peripherals.
Claims29
A system for handling digital content in a secure manner, comprising:
- first handling means, comprising a first module trusted by a content distributor for handling the digital content;
- second handling means, comprising at least one other module specified by the first module as trusted for handling the digital content;
- third handling means, comprising at least one additional module specified by the at least one other module as trusted for handling the digital content, where the second handling means includes a security manager, and where the application program includes a component specified as trusted for handling the digital content;
- a secure memory divided into multiple pages for holding code and secret data for executing the modules and a table for storing a number of permissions for the modules for each of the pages.
A system for handling digital content in a secure manner, comprising:
- secure memory means;
- secure loader means for manipulating secret data;
- security manager means named by the secure loader means as trusted for handling secret premium data comprising the digital content;
- a number of content providers named by the security manager means as trusted for performing operations upon the premium data;
- where the security manager means specifies at least one entry point for multiple code modules executing in the secure memory means.
Computer readable code embodied in computer-readable storage media that is configured to cause one or more processors to perform acts of:
- executing a first code module;
- calling a second code module from the first module;
- setting pages in a secure memory for the use of the second module;
- executing the second module from the secure memory;
- prior to setting, determining that the second module is trusted by determining that a previously trusted code module names the second module as trusted;
- initiating a trusted interrupt handler for trapping interrupts during execution of the second module.
Computer readable code embodied in computer-readable storage media that is configured to cause one or more processors to perform acts of:
- starting a secure loader in the system;
- initiating a secure session with the secure loader;
- receiving a trusted security manager during the session;
- storing the security manager to a nonvolatile storage;
- thereafter, handling the premium content with the security manager;
- storing the security manager in a secure memory;
- calling a code module for handling the content via an entry point in the security manager;
- determining that the code module is named in the security manager as a trusted module;
- designating one or more pages in the secure memory for the code module;
- executing the code module from the designated pages.
Computer readable code embodied in computer-readable storage media that is configured to cause one or more processors to perform acts of:
- starting a secure loader in the system;
- initiating a secure session with the secure loader;
- receiving a trusted security manager during the session;
- storing the security manager to a nonvolatile storage;
- thereafter, handling the premium content with the security manager;
- requesting the premium content from a distributor;
- determining that the security manager trusts a component for handling the premium data;
- vouching for the trusted component to the distributor;
- executing the trusted component upon the premium data.
Dependencies are inferred from the claim text.