Patent ID: 7568096

Claim:
A computer implemented method for rendering encrypted digital content on a computing device in accordance with a chain of licenses, each license in the chain of licenses having an associated set of rules that must be satisfied to allow the encrypted digital content to be rendered, the method comprising: receiving a request to render the content, the content having a link identifier identifying a first license associated with the content; locating the chain of licenses corresponding to the content, the chain including the first license linked to the content at one end of the chain, a root license at the other end of the chain not having a link identifier, and any intermediate licenses therebetween, the first license and any intermediate licenses in the chain each comprising a link identifier identifying the adjoining license in the chain toward the root license and the root license bound to an owner of a private key (PR-U), wherein locating the chain of licenses comprises: identifying the link identifier associated with the content; finding the first license on the computing device associated with the identified link identifier; verifying the found first license and confirming that a rule associated with the first license permits the rendering of the content; identifying that the found first license has an uplink identifier; and repeatedly: finding an (x)th license on the computing device having the uplink content identifier of the found (x−1)th license; verifying the found (x)th license and confirming that the found (x)th license permits the rendering of the content; and determining whether the found (x)th license has an uplink identifier; until it is determined that the found (x)th license does not have an uplink identifier and is therefore the root license; and upon determining each license in the chain of licenses is verified and the rules of each license in the chain are satisfied, obtaining a cryptographic key for decrypting the content from the first license, comprising: obtaining from the root license a link key KL(x−1) of the adjoining (x−1)th license toward the first license encrypted according to a public key PU-U to result in PU-U(KL(x−1)); applying a private key PR-U corresponding to PU-U to PU-U(KL(x−1)) to reveal KL(x−1); for each found license in the chain between the first license and the root license, and in order from the root license to the first license: obtaining from the (x)th license a link key of the adjoining (x−1)th license toward the first license KL(x−1) encrypted according to a link key of the (x)th license KLx to result in KLx(KL(x−1)); and applying KLx to KLx(KL(x−1)) to reveal KL(x−1), KLx being revealed in connection with the (x+1)th license in the chain; until KL 1 is revealed; obtaining from the first license a content key KD for decrypting the content encrypted according to KL 1 to result in KL 1 (KD); and applying KL 1 to KL 1 (KD) to reveal KD; and applying KD to the encrypted content to decrypt same.