Patent ID: 7308583

Claim:
A contents supply apparatus in a data distribution system structured from a key management apparatus, a plurality of the contents supply apparatuses, and a user apparatus, the key management apparatus (i) being operable to output to the user apparatus an apparatus key unique to the user apparatus, and (ii) for each contents supply apparatus, being operable to generate a first system apparatus key unique to the user apparatus by performing a one-way function, based on the apparatus key and system information unique to the contents supply apparatus, and output the first system apparatus key to the contents supply apparatus, the contents supply apparatus comprising: a storage unit operable to store a content which is a digital work; an obtaining unit operable to obtain the first system apparatus key from the key management apparatus; an encryption unit operable to determine, based on the first system apparatus key, a device key that an encryption of a content is based on, and to encrypt a content which is a digital work, based on the device key, to generate an encrypted content; a public list generation unit operable to generate, based on the first system apparatus key. a public list for specifying the device key; and an output unit operable to output the encrypted content to the user apparatus, and to release the public list; wherein the encryption unit includes a tree system in which the first system apparatus key is allotted to a leaf and node keys are allotted to other nodes, and is operable to determine the device key from among one or more node keys managed using the tree system; and wherein the public list generation unit is operable to generate, on an (x,y) plane, a (k+m−1) th order curve that connects node keys of k number of nodes sharing the same parent node in the tree system, and generates the public list to include (k+m−1) number of points on the curve excluding the node keys, where k is an integer greater than or equal to 2, m is an integer greater than or equal to 0, the tree system has a k-ary tree, and each node key is a point on the (x,y) plane.