This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2007-305141, filed on Nov. 26, 2007; and Japanese Patent Application No. 2008-181884, filed on Jul. 11, 2008, the entire contents of both of which are incorporated herein by reference.
1. Field of the Invention
The present invention relates to a communication apparatus that receives an encrypted content encrypted with an encryption key from other communication apparatus, a key server that transmits a decryption key for decrypting the encrypted content, a management server that stores therein information used when the communication apparatus accesses other communication apparatus, a communication server, a content distribution system, a communication method, and a computer-readable recording medium.
2. Description of the Related Art
Generally speaking, systems used for distributing contents include “single server” systems and “distributed server” systems. In a single-server system, for example, one content server is connected to a license server and clients via a network so that content is distributed from the content server to each of the clients. The distributed content is encrypted, and key information related to the encryption process is stored in the license server. The content server stores the content therein as E(KT)[C]. In this expression, “KT” is a key called a title key, whereas “C” is content in plaintext. E(KT)[C] means that “C” is encrypted with “KT”. The key information contains “KT”. A client B obtains the key information from the license server, encrypts the key information with a key KB that is unique to the client (i.e., the client B), and stores therein the encrypted key information in correspondence with the content E(KT)[C] that has been received from the content server. After that, the client B decrypts the key information with the key KB, takes out the title key KT, and decrypts the content E(KT)[C] with the title key KT. Thus, the client B is able to use the content.
In this configuration, when the client B downloads the content E(KT)[C] from the content server, the client B and the content server perform an authentication process and a key exchange process with each other. As a result, the client B shares a temporary key KtmpB with the content server. The content server encrypts the content E(KT)[C] with the temporary key KtmpB and transmits content E(KtmpB)[E(KT)[C]] to the client B. The client B decrypts the content E(KtmpB)[E(KT)[C]] with the temporary key KtmpB that the client B shares with the content server as a result of the authentication and the key exchange processes described above and takes out E(KT)[C]. In this configuration, even if the encrypted content E(KtmpB)[E(KT)[C]] is illegitimately read on a path in the network, it is not possible to decrypt the illegitimately read content unless the temporary key KtmpB is available. In other words, the content is encrypted with the temporary key that is different for each of the clients, so that the content is individualized for each of the clients. As a result, it is possible to inhibit illegitimate use of the content. For example, by configuring a temporary key KtmpA for a client A and the temporary key KtmpB for the client B so as to be different from each other, content E(KtmpA)[E(KT)[C]] distributed to the client A and the content E(KtmpB)[E(KT)[C]] distributed to the client B are mutually different individual pieces of data. By individualizing the content with the mutually different encryption keys in this manner, it is possible to inhibit illegitimate use of the content.
In a single-server system, however, because the communication is performed between each of the clients and the content server in a one-to-one manner, when a large number of clients try to receive the distribution of content from the content server, a problem arises where the level of distribution efficiency is lowered.
On the other hand, examples of the distributed-server systems include a content distribution system called BitTorrent that uses a peer-to-peer (P2P) network (see, for example, BitTorrent Protocol Specification v. 1.0). In this system, a tracker that is different for each of the contents, a seeder, and a leecher are connect to one another by using the P2P network. Also, each of the distributed contents is divided into a plurality of pieces. The seeder is a node that distributes the pieces constituting content for distributing (i.e., uploading) the content. The leecher is a node that receives the pieces constituting the content and distributes the pieces constituting the content for the purpose of receiving (i.e., downloading) the content. In other words, a leecher may become a seeder when the leecher has obtained a certain number of pieces that constitute the content. Thus, some of the seeders have become a seeder after they, as a leecher, have received a part or all of the pieces that constitute content, and other seeders are each a seeder (from the beginning) that is provided on the system side (in advance or during a distribution). The latter type of seeders will be referred to as initial seeders. An initial seeder stores therein a part or all of the pieces that constitute one content. In the explanation below, a “seeder” denotes either a seeder or an initial seeder, unless stated otherwise. A node denotes one of a leecher, a seeder, and an initial seeder. A tracker stores therein node information related to each of the nodes. When a leecher has accessed the tracker, the tracker provides the node information for the leecher.
In this configuration, when a leecher is to receive a distribution of content, the leecher first obtains information called a Torrent File. The Torrent File is, for example, given from a server (hereinafter, a “sales server”) offering a service of selling contents to content providers or users, to another node or another sales server, and is further given by the other node or the other sales server to a leecher. Alternatively, another arrangement is acceptable in which the Torrent File is recorded on a recording medium like a Compact Disk Read-Only Memory (CD-ROM) and distributed offline to a leecher. The Torrent File stores therein tracker information related to the content and file information of the content. The tracker information contains a connection destination of the tracker. The file information contains, for example, hash information of the pieces that constitute the content. The hash information is used for checking the completeness of the pieces. In other words, the hash information is used for calculating hash values of the pieces downloaded by the leecher, comparing the calculated hash values with hash values of the pieces in the hash information, and checking to see if the received pieces have not been tampered.
When having obtained the Torrent File, the leecher connects to the tracker based on the tracker information. The tracker transmits the node information described above to the leecher. The node information contains a list of connection destinations of one or more nodes. The leecher connects to a plurality of nodes, based on the node information. As for the pieces distributed by the nodes, it is often the case that the pieces are mutually different for each of the nodes. Because the leecher is able to receive the mutually different pieces from the plurality of nodes, the leecher is able to receive the content at a high speed.
As explained above, in such a content distribution system that uses a P2P network, the content is stored as being distributed in the plurality of nodes. Thus, in such a system, even if a large number of nodes try to receive the content, each of the nodes is able to receive the content from the plurality of other nodes via the P2P network. Thus, P2P content distribution systems have a higher level of distribution efficiency than single-server systems.
Japanese Patent No. 3917395 discloses a content distributing method by which content is divided into a plurality of pieces and, for each of the pieces, a plurality of encrypted pieces are generated by encrypting the piece with a plurality of encryption keys.
In a content distribution system like the one described in the BitTorrent Protocol Specification v. 1.0 where it is possible to distribute content through a plurality of nodes, it is also desirable to protect the distributed content with an encryption process so that it is possible to inhibit illegitimate use of the content. In such a content distribution system, however, encrypted contents that are received by mutually different leechers must be the same for all the leechers, unlike in a single-server system. Thus, it is difficult to distribute an individually encrypted content to each of the leechers. Consequently, if one key that is used for decrypting the encrypted content is disclosed, there is a possibility that it may become possible to decrypt all of the large number of the same encrypted contents that are present in the network.
The content distributing method disclosed in Japanese Patent No. 3917395 requires that each of the users who are to receive the distribution of the content should obtain all the encrypted pieces. Thus, when this content distributing method is applied to a P2P content distribution system without any modification, there is a possibility that the level of distribution efficiency may be lowered. Further, even if there is a plurality of keys used for decrypting the encrypted content, if the keys are disclosed, there is a possibility that it may become possible to decrypt the content without having to legitimately obtain the decryption keys.
According to one aspect of the present invention, there is provided a communication apparatus that receives a plurality of pieces constituting a part of content. A plurality of first encrypted pieces is generated by encrypting the pieces with a first encryption key. A second encrypted piece is generated by encrypting at least one of the pieces with a second encryption key. The first encryption key and the second encryption key for encrypting a same piece are different from each other. The communication apparatus includes a content receiving unit that receives either one of the first encrypted piece and the second encrypted piece from other communication apparatus for each of the pieces; a key request transmitting unit that transmits a request message for requesting a decryption key for decrypting the either one of the first encrypted piece and the second encrypted piece to a key server; and a key receiving unit that receives the decryption key from the key server in response to the request message.
Furthermore, according to another aspect of the present invention, there is provided a communication apparatus that receives a plurality of pieces constituting a part of content. A plurality of first encrypted pieces is generated by encrypting the pieces with a first encryption key. A second encrypted piece is generated by encrypting at least one of the pieces with a second encryption key. The first encryption key and the second encryption key for encrypting a same piece are different from each other. The communication apparatus includes a storage unit that stores therein either one of the first encrypted piece and the second encrypted piece for each of the pieces; a request receiving unit that receives a piece request for requesting all or a part of data of the either one of the first encrypted piece and the second encrypted piece from other communication apparatus; and a transmitting unit that transmits the all or the part of the data requested in the piece request to the other communication apparatus.
Moreover, according to still another aspect of the present invention, there is provided a key server that communicates with a communication apparatus that receives a plurality of pieces constituting a part of content. A plurality of first encrypted pieces is generated by encrypting the pieces with a first encryption key. A second encrypted piece is generated by encrypting at least one of the pieces with a second encryption key. The first encryption key and the second encryption key for encrypting a same piece are different from each other. The communication apparatus receives either one of the first encrypted piece and the second encrypted piece from other communication apparatus for each of the pieces. The key server includes a receiving unit that receives a request message for requesting a decryption key for decrypting the either one of the first encrypted piece and the second encrypted piece for each of the pieces from the communication apparatus; a first storage unit that stores therein the decryption key; a determining unit that determines whether to transmit the decryption key based on a combination of decryption keys requested in the request message; and a key transmitting unit that, when the determining unit determines to transmit the decryption key, reads decryption keys in the combination requested in the request message from the first storage unit, and transmits the decryption keys to the communication apparatus.
Furthermore, according to still another aspect of the present invention, there is provided a management server that communicates with a communication apparatus that receives a plurality of pieces constituting a part of content. A plurality of first encrypted pieces is generated by encrypting the pieces with a first encryption key. A second encrypted piece is generated by encrypting at least one of the pieces with a second encryption key. The first encryption key and the second encryption key for encrypting a same piece are different from each other. The communication apparatus receives either one of the first encrypted piece and the second encrypted piece from other communication apparatus for each of the pieces. The management server includes a first storage unit that stores therein connection destination information for accessing the other communication apparatus; a selecting unit that selects the either one of the first encrypted piece and the second encrypted piece obtained by encrypting at least one of the pieces; and a transmitting unit that reads the connection destination information from the first storage unit, and transmits the connection destination information and seeder information specifying selected either one of the first encrypted piece and the second encrypted piece to the communication apparatus.
Moreover, according to still another aspect of the present invention, there is provided a communication apparatus that receives a plurality of pieces constituting a part of content. A plurality of first encrypted pieces is generated by encrypting the pieces with a first encryption key. A second encrypted piece is generated by encrypting at least one of the pieces with a second encryption key. A third encrypted piece is generated by encrypting at least one of the pieces with a third encryption key. The first encryption key, the second encryption key, and the third encryption key for encrypting a same piece are different from one another. The communication apparatus receives either one of the first encrypted piece and the second encrypted piece from other communication apparatus for each of the pieces. The communication server includes a first storage unit that stores therein the third encrypted piece; a second storage unit that, when the third encrypted piece is transmitted to the communication apparatus, stores therein identification information for identifying the communication apparatus; a first receiving unit that receives a special piece request for requesting the third encrypted piece and contains the identification information for identifying the communication apparatus from the communication apparatus; and a first transmitting unit that, when the identification information contained in the special piece request is not stored in the second storage unit, reads the third encrypted piece from the first storage unit, and transmits the third encrypted piece to the communication apparatus.
Furthermore, according to still another aspect of the present invention, there is provided a computer-readable recording medium that stores therein a computer program for a communication apparatus that receives a plurality of pieces constituting a part of content. A plurality of first encrypted pieces is generated by encrypting the pieces with a first encryption key. A second encrypted piece is generated by encrypting at least one of the pieces with a second encryption key. The first encryption key and the second encryption key for encrypting a same piece are different from each other. The computer program when executed causes a computer to execute receiving either one of a first encrypted piece and a second encrypted piece from other communication apparatus for each of the pieces; transmitting a request message for requesting a decryption key for decrypting the either one of the first encrypted piece and the second encrypted piece to a key server; and receiving the decryption key from the key server in response to the request message.
Exemplary embodiments of the present invention will be explained in detail below with reference to the accompanying drawings.
The leecher 50A receives the Torrent File from the sales server 54, obtains the node information by accessing the tracker 51 based on the Torrent File, receives the decrypted pieces by accessing at least one of the seeders 52A, 52B, 52C, and the leecher SOB based on the obtained node information, obtains all the encrypted pieces corresponding to the pieces, and receives a key ring containing the decryption keys that are respectively used for decrypting the encrypted pieces from the key server 53. The leecher 50B also performs the same processes. In the following explanation, in the case where the leechers 50A and 50B do not need to be distinguished from each other, each of them will be simply referred to as the leecher 50. Similarly, in the case where the seeders 52A, 52B, and 52C do not need to be distinguished from one another, each of them will be simply referred to as the seeder 52.
Next, a configuration of the content will be explained. The content is any of various types of digital data such as moving-picture data and audio data like Moving Picture Experts Group (MPEG) 2 and MPEG 4 as well as text data and still image data. Also, data that is obtained by encrypting such digital data will be also referred to as content. For example, data that is obtained by encrypting a High Definition Digital Versatile Disk (HD DVD) prepared video content according to the Advanced Access Content System (AACS) specifications can also serve as content. In the following explanation, the entire content will be identified as “C”. The content “C” may be in plaintext or encrypted.
Next, a hardware configuration of each of the apparatuses such as the leecher 50, the tracker 51, the seeder 52, and the key server 53 will be explained. Each of the apparatuses includes: a controlling device such as a Central Processing Unit (CPU) that exercises the overall control of the apparatus; storage devices such as a Read-Only Memory (ROM) and Random Access Memory (RAM) that store therein various types of data and various types of computer programs (hereinafter, “programs”); external storage devices such as a Hard Disk Drive (HDD) and a Compact Disk (CD) drive device that store therein various types of data and various types of programs; and a bus that connects these constituent elements to one another. Each of the apparatuses has a hardware configuration to which a commonly-used computer can be applied. In addition, a display device that displays information, input devices such as a keyboard and a mouse that receive inputs of instructions from the user, and a communication interface (I/F) that controls communication with external apparatuses are connected to each of the apparatuses in a wired or wireless manner.
Next, various types of functions that are realized in the hardware configuration described above when the CPU of the seeder 52 executes the various types of programs stored in the storage devices and the external storage devices will be explained. The seeder 52 stores therein the encrypted pieces that have been obtained by encrypting the plurality of pieces C1 to CN constituting the content C, in correspondence with indexes (i.e., suffixes) of the decryption keys that are used for decrypting the pieces C1 to CN, respectively. The decryption keys may be the same as the encryption keys or may be different from the encryption keys. In either situation, because the pieces C1 to CN have been encrypted with the encryption keys respectively, it is possible to identify each of the encrypted pieces by using the index of the corresponding one of the decryption keys used for decrypting the encrypted piece. These encrypted pieces are stored in, for example, an external storage device.
To simplify the explanation in the following sections, it is assumed that the encryption keys are identical to the decryption keys, respectively. In the case where the index of each decryption key is expressed as (i,j), and the decryption key is expressed as K(i,j), each encrypted piece can be expressed as below, for example:
where i and j are each an integer that satisfy 1≦i≦m and 1≦j≦N (m>1); With regard to mutually different indexes (i,j) and (i′,j′) where (i,j)≠(i′,j′), K(i,j)=K(i′,j′) may be satisfied.
The encrypted content that is constituted with the encrypted pieces can be expressed as below, for example:
where 1≦i1, . . . , iN≦m is satisfied.
The sequence of the encrypted pieces in the encrypted content is expressed with the combination of the indexes of the encrypted pieces and can be expressed as below, for example (In the example below, the indexes corresponding to the pieces C1 to CN are arranged in a row from the left side):
{(i1,1), (i2,2), . . . , (iN,N)}
where 1≦i1, . . . , iN≦m is satisfied.
Accordingly, what is stored in the seeder 52 while keeping the encrypted pieces in correspondence with the indexes can be expressed as below, for example:
{(E(K(i1,1))[C1],(i1,1)), E(K(i2,2))[C2],(i2,2)), . . . , E(K(iN,N))[CN],(iN,N))}
where 1≦i1, . . . , iN≦m is satisfied.
Further, the seeder 52A, which is an initial seeder, stores therein all the encrypted pieces that have been generated by encrypting each of the encrypted pieces that respectively correspond to the pieces constituting the content, by using the plurality of encryption keys per piece.
The first embodiment is not limited to the example described above. For example, another arrangement is acceptable in which “a=N” is satisfied as shown in
In the configuration as described above, when being accessed by the leecher 50, the seeder 52 transmits piece information to the leecher 50, the piece information indicating the sequence of the encrypted pieces stored in the seeder 52.
Next, various types of functions that are realized in the hardware configuration described above when the CPU of the leecher 50 executes the various types of programs stored in the storage devices and the external storage devices will be explained.
The content obtaining unit 500 receives the encrypted pieces that constitute the encrypted content from at least one of the seeders 52, via the P2P network NT. More specifically, the content obtaining unit 500 first receives a Torrent File from the sales server 54. The Torrent File contains tracker information including tracker connection destination information used for connecting to the tracker 51 and file information indicating what encrypted pieces constitute the encrypted content.
Based on the Torrent File, the content obtaining unit 500 accesses the tracker 51 via the P2P network NT and receives, from the tracker 51, node information used for accessing the other nodes (e.g., the seeders 52 and other leechers 50) connected to the P2P network NT. (The node information will be explained in detail later.) After that, based on the node information, the content obtaining unit 500 accesses at least one of the nodes and obtains piece information indicating the sequence of encrypted pieces stored in the node. Based on the piece information, the content obtaining unit 500 then transmits a piece request to at least one of the nodes to request one or more of the encrypted pieces that constitute the encrypted content. By receiving the encrypted pieces that are transmitted in response to the piece request, the content obtaining unit 500 obtains all the encrypted pieces (hereinafter, the “piece sequence”) that constitute the encrypted content. For example, of the encrypted pieces shown in
The key ring requesting unit 501 transmits a request message to the key server 53 to request a key ring used for decrypting the piece sequence. The key ring contains the decryption keys used for decrypting the encrypted pieces in the piece sequence in correspondence with the sequence of the encrypted pieces. The key ring and the decryption keys will be explained in detail later. The request message contains index information as information that specifies the sequence of the decryption keys contained in the key ring, the index information indicating the combination (i.e., the sequence) of the indexes of the encrypted pieces in the piece sequence.
For example, the sequence can be expressed as below:
{(i1,1), (i2,2), . . . , (iN,N)}
where 1≦i1, . . . , iN≦m is satisfied.
The key ring obtaining unit 502 receives the key ring that has been transmitted from the key server 53 in response to the request message. The content decrypting unit 503 decrypts the encrypted pieces that have been obtained by the content obtaining unit 500, with the decryption keys that are contained in the key ring obtained by the key ring obtaining unit 502 and that correspond to the encrypted pieces respectively. The content decrypting unit 503 thus obtains the content that is constituted with the pieces resulting from the decryption process.
There is a situation in which the leecher 50 functions as a seeder, as explained above; however, because the functional configuration of a seeder has already been explained in the description of the seeder 52, the explanation thereof will be omitted.
Next, various types of functions that are realized when the CPU of the key server 53 executes the various types of programs stored in the storage devices and the external storage devices will be explained.
The controlling unit 530 controls the entirety of the key server 53 and also intermediates instructions from the sequence information comparing unit 535 to the key supplying unit 537. The packet processing unit 531 packetizes various types of data to be transmitted to external apparatuses such as a leecher 50 and forwards the packet to the network interface unit 532. The packet processing unit 531 also obtains data, based on packets forwarded from the network interface unit 532. The network interface unit 532 controls communication with external apparatuses, transmits the packetized data forwarded from the packet processing unit 531 to the external apparatuses, and forwards the packets received from the external apparatuses to the packet processing unit 531.
The authentication and key exchange processing unit 533 receives the request message from the leecher 50 via the network interface unit 532, performs a mutual authentication process with the leecher 50, and, after the authentication process has been finished, transmits an acceptance message to the leecher 50 so as to indicate that the request has been accepted.
The key storage unit 534 is provided in, for example, an external storage device such as an HDD and stores therein the decryption keys used for decrypting the encrypted pieces. Each of the decryption keys is expressed as, for example, K(i,j), as explained above.
The sequence information storage unit 536 is provided in, for example, an external storage device such as an HDD and stores therein sequence information indicating the sequences that respectively correspond to all the key rings that were transmitted to the leechers 50 in the past. For example, the sequences that respectively correspond to the key rings can be expressed as below, like the sequences indicated in the index information described above:
{(i1,1), (i2, 2), . . . , (iN,N)}
where 1≦i1, . . . , iN≦m is satisfied.
The sequence information comparing unit 535 compares the sequence information stored in the sequence information storage unit 536 with the index information received from the leecher 50 and determines whether the key ring corresponding to the sequence indicated in the index information should be transmitted. More specifically, in the case where the sequence information storage unit 536 stores therein no sequence information indicating the same sequence as the sequence indicated in the index information, the sequence information comparing unit 535 determines that the key ring corresponding to the sequence indicated in the index information should be transmitted. For example, the key ring can be expressed as below (In the example below, the decryption keys that respectively correspond to the pieces C1 to CN are arranged in a row from the left side):
where 1≦i1, . . . , iN≦m is satisfied.
In the case where the sequence information comparing unit 535 has determined that the key ring should be transmitted, the sequence information comparing unit 535 instructs, via the controlling unit 530, the key supplying unit 537 to transmit the key ring to the leecher 50. On the contrary, in the case where the sequence information comparing unit 535 has determined that the key ring should not be transmitted, the sequence information comparing unit 535 instructs, via the controlling unit 530, the key supplying unit 537 that the transmission of the key ring to the leecher 50 is prohibited.
According to the instruction received from the sequence information comparing unit 535 via the controlling unit 530 instructing that the key ring should be transmitted, the key supplying unit 537 reads the decryption keys that correspond to the sequence of the key ring out of the key storage unit 534 and transmits the key ring that contains the read decryption keys to the leecher 50 via the network interface unit 532.
Next, a configuration of the tracker 51 will be explained. When being accessed by the leecher 50, the tracker 51 transmits the node information to the leecher 50, the node information being used for accessing the nodes connected to the P2P network NT. The node information contains sets each made up of an IP address and a port number of a different one of the nodes.
Next, how the tracker 51 generates the node information will be explained. It is assumed that a node stores therein a Torrent File containing the tracker connection destination information used for connecting to the tracker 51 and also stores therein encrypted pieces. The node refers to the tracker connection destination information contained in the Torrent File, accesses the tracker 51, and transmits the IP address and the port number for identifying the node itself to the tracker 51. The tracker 51 generates the node information by using the piece information, the IP address, and the port number that have been received.
Next, a procedure in a content distributing process performed in the content distribution system according to the first embodiment will be explained, with reference to
First, the leecher 50 accesses the sales server 54 and obtains the Torrent File (Step S1). After that, the leecher 50 accesses the tracker 51 by using the tracker connection destination information included in the tracker information contained in the Torrent File (Step S2). The tracker 51 then transmits the node information to the leecher 50 (Step S3).
When the leecher 50 has received the node information (Step S4), the leecher 50 accesses, for example, at least one of the seeders 52A, 52B, and 52C by using the node information (Step S5). When the seeder 52 is accessed by the leecher 50, the seeder 52 transmits the piece information to the leecher 50 to indicate the sequence of the encrypted pieces stored therein (Step S6).
When the leecher 50 has received the piece information (Step S7), the leecher 50 accesses at least one of the seeders 52 by using the piece information (Step S8). The leecher 50 transmits a piece request to the seeder 52 to request, for each of the pieces C1 to CN, at least one of the plurality of encrypted pieces that can possibly exist in correspondence with the piece, so that the leecher 50 is able to receive the encrypted pieces. In response to the piece request from the leecher 50, the seeder 52 transmits the encrypted piece stored therein to the leecher 50 (Step S9). More specifically, for example, by using the piece information that has been received by accessing the seeder 52B, the leecher 50 judges whether the seeder 52B stores therein the encrypted piece corresponding to “i1=1” among the encrypted pieces E(K(i1,1))[C1] (where i1 is an integer that satisfies 1≦i1≦m) obtained by encrypting the piece C1. In the case where the result of the judging process is in the affirmative, the leecher 50 accesses the seeder 52B and obtains the encrypted piece E(K(1,1)) [C1] by receiving it from the seeder 52B. In the case where the seeder 52B actually does not store therein the encrypted piece E(K(1,1))[C1], the leecher 50 subsequently accesses another seeder 52 (e.g., the seeder 52C) and obtains piece information from the other seeder (e.g., the seeder 52C). In the same manner as described above, by using the piece information, the leecher 50 judges whether the seeder 52C stores therein the encrypted piece. In the case where the result of the judging process is in the affirmative, the leecher 50 accesses the seeder 52C and attempts to obtain the encrypted piece. By repeating the process described above, the leecher 50 obtains the encrypted content {E(K(i1,1))[C1], E(K(i2,2))[C2], . . . , E(K(iN,N))[CN]}
that is constituted with the encrypted pieces.
As the target to be obtained, the leecher 50 is able to arbitrarily select any one of the plurality of encrypted pieces that can possibly exist in correspondence with a piece Cj (where 1≦j≦N). In other words, with regard to E(K(i1,j))[Cj] (where i1 is an integer that satisfies 1≦i1≦m), the leecher 50 is able to arbitrarily set “i1” to any one of the values from “1” to “m”. Accordingly, the sequence of the encrypted pieces {(i1,1), (i2,2), . . . , (iN,N)} that have been obtained by the leecher 50 in correspondence with the pieces C1 to CN is arbitrary.
When the leecher 50 has obtained all the encrypted pieces that respectively correspond to the pieces constituting the content and that constitute the encrypted content, the leecher 50 transmits the request message to the key server 53 to request the key ring that contains the decryption keys used for decrypting the encrypted pieces (Step S10). The request message contains the index information {(i1,1), . . . , (iN,N)} indicating the sequence corresponding to the decryption keys.
When the authentication and key exchange processing unit 533 included in the key server 53 has received the request message via the network interface unit 532 (Step S11), the authentication and key exchange processing unit 533 performs a mutually authentication process with the leecher 50. In the case where the authentication process has been performed successfully, the authentication and key exchange processing unit 533 transmits an acceptance message to the leecher 50 to indicate that the request has been accepted (Step S12). When the leecher 50 has received the acceptance message from the key server 53 (Step S13), the leecher 50 waits for the key ring to be transmitted from the key server 53.
On the other hand, the sequence information comparing unit 535 included in the key server 53 performs a comparing process by using the index information contained in the request message that has been received at Step S11 (Step S14).
In the case where the result of the judging process is in the negative (Step S141: No), the sequence information comparing unit 535 determines that the key ring {K(i1,1), K(i2,2), . . . , K(iN,N)} corresponding to the sequence indicated in the index information should be transmitted. Thus, the sequence information comparing unit 535 instructs, via the controlling unit 530, the key supplying unit 537 to transmit the key ring to the leecher 50. In addition, the sequence information comparing unit 535 stores sequence information indicating the sequence into the sequence information storage unit 536 (Step S142). The key supplying unit 537 reads the key ring of which the transmission has been instructed by the sequence information comparing unit 535 via the controlling unit 530 out of the key storage unit 534 and transmits the read key ring to the leecher 50 via the network interface unit 532 (Step S143). On the contrary, in the case where the result of the judging process at Step S141 is in the affirmative, the sequence information comparing unit 535 determines that the key ring should not be transmitted and instructs, via the controlling unit 530, the key supplying unit 537 that the transmission of the key ring to the leecher 50 is prohibited (Step S144).
Returning to the description of
On the contrary, in the case where the leecher 50 does not receive the key ring at Step S15 and has received an error message transmitted from the key server 53 at Step S143 shown in
As explained above, in the case where the one content is distributed to the plurality of leechers 50 via the P2P network, the key server 53 determines whether the key rings should be transmitted by using the sequences of the encrypted pieces. In this situation, because the key server 53 avoids re-using the sequences that have already been used, it is possible to individualize the content for each of the leechers 50. Accordingly, for example, even if one key ring is leaked, it is possible to decrypt only the encrypted content that corresponds to the leaked key ring. Thus, it is possible to inhibit illegitimate use of the content. In addition, by using, instead of a predetermined sequence, the sequence defined by the encrypted pieces that are arbitrarily obtained by the leecher 50, it is possible to realize a flexible content distributing process that is compliant with the environment of the P2P network.
According to the first embodiment, the Torrent File is not limited to the example described above. For example, another arrangement is acceptable in which the file information contains hash values that are calculated through a hash calculation process by using the encrypted pieces.
For example, the hash values of the encrypted pieces can be expressed as below:
{hash(E(K(i,j))[Cj])}
where 1≦i≦m and 1≦j≦N are satisfied.
Also, by referring to such a Torrent File, it is possible to identify the index based on the hash value of each of the encrypted pieces. As a result, it is also possible to identify the decryption key for decrypting the encrypted piece.
In this configuration, yet another arrangement is acceptable in which the seeder 52 further transmits piece information containing hash values to the leecher 50.
The file information does not need to show all the indexes. (In the example described above, the file information shows all combinations of (i,j) that satisfy 1≦i≦m and 1≦j≦N). It is acceptable if the file information shows only a part of the indexes.
Yet another arrangement is acceptable in which the Torrent File contains a version number thereof and/or information related to the validity period thereof. In this situation, the leecher 50 is able to find out whether the obtained Torrent File is valid at the time of the obtainment. For example, an arrangement is acceptable in which, in the case where the obtained Torrent File is not valid at a certain point in time, the leecher 50 obtains a newer Torrent File. Alternatively, another arrangement is acceptable in which the leecher 50 starts obtaining the encrypted pieces by using the Torrent File obtained at the certain point in time and, if the seeder 52 stores therein the encrypted piece that corresponds to an index that is unknown (to the leecher 50), the leecher 50 receives the encrypted piece corresponding to the unknown index from the seeder 52, and after the encrypted piece has been received, the leecher 50 obtains a newer Torrent File and checks the completeness and the authenticity of the received encrypted pieces.
According to the first embodiment described above, the leecher 50 puts the index information into the request message and transmits the request message to the key server 53 at Step S10; however, the present invention is not limited to this example. Another arrangement is acceptable in which the leecher 50 transmits the index information to the key server 53 after having received the acceptance message.
At Step S6 described above, the seeder 52 transmits the piece information indicating the sequence of the pieces stored therein when the leecher 50 has accessed the seeder 52; however, another arrangement is acceptable in which the seeder 52 transmits the piece information to the leecher 50, without waiting for the access from the leecher 50.
At Step S9 described above, the seeder 52 transmits the encrypted piece to the leecher 50. In addition, it is also acceptable for the seeder 52 to transmit the corresponding index to the leecher 50. For example, an arrangement is acceptable in which, if the transmitted encrypted piece is E(K(1,1))[C1], the seeder 52 transmits the corresponding index (1,1) to the leecher 50, in addition to the encrypted piece.
In the first embodiment described above, the leecher 50 receives the encrypted pieces from the seeder 52; however, the present invention is not limited to this example. Another arrangement is acceptable in which the leecher 50 obtains the encrypted pieces from any of the other leechers 50.
Yet another arrangement is acceptable in which, with respect to each of the encrypted pieces that respectively correspond to the pieces C1 to CN, the leecher 50 obtains a plurality of mutually different encrypted pieces for the piece. For example, with respect to the piece C1, it is acceptable for the leecher 50 to obtain the encrypted pieces E(K(i1,1)) [C1] and E(K(i1′,1))[C1] (where i1≠i1′, 1≦i1≦m, and 1≦i1′≦m are satisfied). With this arrangement, when the leecher 50 requests the key ring from the key server 53, if the sequence containing the index (i1,1) has already been used, the leecher 50 is not able to obtain the key ring corresponding to the sequence, but if the sequence containing the index (i1′,1) is usable, the leecher 50 is able to obtain the key ring corresponding to this sequence from the key server 53 without having to access the seeder 52 again. With this arrangement in which the leecher 50 obtains the extra encrypted piece in advance, the leecher 50 is able to prepare the plurality of sequence candidates in advance. Thus, the leecher 50 is able to avoid the trouble of having to access the seeder 52 again.
In the first embodiment described above, in the case where the sequence information storage unit 536 already stores therein the sequence that corresponds to the key ring being requested by the leecher 50, the sequence information comparing unit 535 included in the key server 53 instructs, via the controlling unit 530, the key supplying unit 537 that the transmission of the key ring to the leecher 50 is prohibited, at Step S144; however, the present invention is not limited to this example. Another arrangement is acceptable in which, for example, in the case where the leecher 50 has obtained the encrypted contents E(K(i1,1))[C1], E(K(i2,2))[C2], . . . , E(K(iN,N))[CN] and requests the corresponding key ring from the key server 53, if the sequence information storage unit 536 has already stored therein the sequence {(i1,1), (i2,2), . . . , (iN,N)} that corresponds to the key ring requested by the leecher 50, the key server 53 generates another sequence {(i1′,1), (i2,2), . . . , (iN,N)} that is not stored in the sequence information storage unit 536 and transmits, to the leecher 50, the encrypted piece E(K(i1′1))[C1] with which the leecher 50 should replace the other encrypted piece and information related to the index thereof ((i1′,1) in the present example). In addition, the key server 53 transmits a key ring containing the decryption keys that respectively correspond to the other sequence {(i1′,1), (i2,2), . . . , (iN,N)} to the leecher 50. With this arrangement, the leecher 50 is able to avoid the trouble of having to access the tracker 51 again for the purpose of obtaining the encrypted pieces that correspond to the sequence for which the transmission of the key ring is permitted in the comparing process performed by the sequence information comparing unit 535 included in the key server 53. In this situation, the key server 53 needs to store therein, in advance, the encrypted piece that can be transmitted to the leecher 50. The number of stored encrypted pieces may be one or may be more than one. In the case where the key server 53 stores therein more than one encrypted piece, it is acceptable for the key server 53 to transmit, to the leecher 50, the plurality of encrypted pieces each as the encrypted piece with which the leecher 50 should replace the other encrypted piece (together with the information related to the indexes thereof). In the case where the sequence information storage unit 536 has not yet stored therein the sequence {(i1,1), (i2,2), . . . , (iN,N)} that corresponds to the key ring requested by the leecher 50, the key server 53 may or may not perform the replacement process described above.
According to the first embodiment described above, during the comparing process, the sequence information comparing unit 535 instructs that the key ring should not be transmitted if the key ring requested by the leecher 50 was transmitted in the past at least once to any of the leechers 50; however, the present invention is not limited to this example. Another arrangement is acceptable in which the key server 53 is allowed to transmit one key ring up to a predetermined number of times such as twice or more. In this situation, the authentication and key exchange processing unit 533 included in the key server 53 obtains, from the leecher 50, leecher identification information for identifying the leecher 50, during the mutual authentication process performed with the leecher 50. The leecher identification information may be, for example, the IP address of the leecher 50, the port number of the leecher 50, a Media Access Control (MAC) address of the leecher 50, or a subscriber's ID, or a combination of any of these. The sequence information comparing unit 535 stores, into the sequence information storage unit 536, the sequence information that indicates the sequence of the key ring, the leecher identification information, and a use-number-of-times value that indicates how many times the leecher 50 identified with the leecher identification information has requested a transmission of the key ring, while keeping these pieces of information in correspondence with one another.
With this arrangement, it is permitted to use the same sequence of encrypted pieces a plurality of times, instead of only once. Thus, it is possible to realize a more flexible content distributing process.
In the first embodiment described above, the node information indicates the IP addresses and the port numbers of the nodes; however, the present invention is not limited to this example. Another arrangement is acceptable in which the node information indicates the MAC addresses of the nodes. Yet another arrangement is acceptable in which the node information indicates subscribers' IDs that are assigned to the subscribers when they subscribe to the content distribution service. In this situation, it is sufficient if each of the nodes transmits, to the tracker 51, at least one of the IP addresses of the node, the MAC address of the node, the subscriber's ID, and the URL, as the node identification information.
Further, in the first embodiment described above, when the tracker 51 generates the node information, each of the nodes transmits the received piece information, the IP address, and the port number, to the tracker 51; however, the present invention is not limited to this example. Another arrangement is acceptable in which the each of the nodes transmits Torrent File identification information to the tracker 51, in addition to the piece information, the IP address, and the port number. The Torrent File identification information may be, for example, a hash value of a part or all of the Torrent File or the file name of the Torrent File. Alternatively, in the case where the Torrent File has a field showing the ID thereof, it is acceptable if the Torrent File identification information is the value of the shown ID. In this situation, an arrangement is acceptable in which, when the tracker 51 has received pieces of Torrent File identification information in addition to the piece information, the IP addresses, and the port numbers that have been received, the tracker 51 generates node information for each of the received pieces of Torrent File identification information. In other words, an arrangement is acceptable in which the tracker 51 generates node information corresponding to the piece of Torrent File identification information transmitted by a node that has made an access to the tracker 51 and transmits the generated node information to the node.
Yet another arrangement is acceptable in which the tracker 51 divides the nodes into groups based on the IP addresses and the port numbers thereof and generates node information for each of the groups. In other words, an arrangement is acceptable in which the tracker 51 generates node information corresponding to the group to which the IP address and the port number transmitted by the node that has made an access to the tracker 51 belong and transmits the generated node information to the node. In this arrangement, it is acceptable for the tracker 51 to divide the nodes into groups in such a manner that each of the nodes belongs to two or more of the groups. In that situation, the tracker 51 generates node information corresponding to a part or all of the groups to which the IP address and the port number transmitted by the node that has made an access to the tracker 51 belong and transmits the generated node information to the node.
In the first embodiment described above, another arrangement is acceptable in which, in the case where the leecher 50 has successfully obtained an encrypted piece at Step S9, the leecher 50 informs the seeder 52 from which the encrypted piece has been transmitted that the encrypted piece has successfully been obtained. For example, it is acceptable to judge whether the encrypted piece has successfully been obtained in the following manner: The seeder 52 transmits the encrypted piece after attaching a mark indicating the end of the encrypted piece to the end of the data. When the leecher 50 has received the encrypted piece, the leecher 50 judges that the entirety of the data corresponding to the encrypted piece has been received by detecting the mark.
In the case where the file information contained in the Torrent File includes hash values calculated through a hash calculation process by using the encrypted pieces as explained in one of the modification examples of the first embodiment above, an arrangement is acceptable in which the leecher 50 calculates a hash value of the encrypted piece received from the seeder 52 and compares the calculated hash value with the hash value of the encrypted piece contained in the Torrent File, so that the leecher 50 judges that the encrypted piece has successfully been obtained if these hash values match. Another arrangement is acceptable in which, when the leecher 50 transmits a notification message to the seeder 52 to notify the seeder 52 that the encrypted piece has successfully been obtained, the leecher 50 puts any of the following types of information into the notification message: the hash values of the encrypted piece, the index of the encrypted piece indicated in the Torrent File, the time at which the encrypted piece was successfully obtained, and the node information of the leecher 50.
In the first embodiment described above, another arrangement is acceptable in which a maximum limit is set to the number of encrypted pieces that the leecher 50 is able to request from the seeder 52 at one time. In this situation, if the seeder 52 has received a piece request requesting a larger number of encrypted pieces than the maximum limit, it is acceptable for the seeder 52 to reject the request. Yet another arrangement is acceptable in which the seeder 52 does not reject the request, but transmits a number of encrypted pieces that are equal to or fewer than the maximum limit to the leecher 50 that has transmitted the piece request. After the seeder 52 has confirmed that the transmission of at least one of the encrypted pieces has been completed, it is acceptable for the seeder 52 to transmit, to the leecher 50, a number of encrypted pieces that are equal to or fewer than the maximum limit and that are among the remaining encrypted pieces that have been requested in the piece request but have not yet been transmitted.
In the first embodiment described above, another arrangement is acceptable in which, in the case where the seeder 52 is not able to transmit the encrypted piece requested in the piece request transmitted by the leecher 50 because, for example, the seeder 52 does not store therein the requested encrypted piece, the seeder 52 transmits a message to the leecher 50 to inform the leecher 50 of the situation.
Next, a second embodiment of the content distribution system according to the present invention will be explained. Parts of the second embodiment that are the same as the first embodiment will be explained by using the same reference characters or will be omitted from the explanation.
The configuration of the content distribution system according to the second embodiment is different from the configuration of the content distribution system according to the first embodiment in the following: According to the second embodiment, the tracker 51 determines a part or all of the sequence of the encrypted pieces that correspond to the pieces C1 to CN.
The seeder database 512 stores therein, with respect to the pieces C1 to CN, the indexes of the decryption keys used for decrypting the encrypted pieces and seeder connection destination information used for accessing the nodes storing therein the encrypted pieces corresponding to the indexes, while keeping these types of information in correspondence with one another. In the present example, it is assumed that the seeder connection destination information is URLs.
The tracker 51 generates seeder connection destination information as described below and stores the generated seeder connection destination information into the seeder database 512, while keeping the seeder connection destination information in correspondence with the indexes. As explained in the description of the first embodiment above, the tracker 51 obtains the node identification information from each of the nodes. According to the second embodiment, in addition to the node identification information, the tracker 51 also obtains piece information of the encrypted pieces stored in each of the node. After that, that tracker 51 generates the seeder connection destination information based on the node identification information, like the node information explained in the description of the first embodiment. The tracker 51 stores the generated seeder connection destination information into the seeder database 512, while keeping the seeder connection destination information in correspondence with the indexes in the sequence indicated in the piece information.
When being accessed by the leecher 50, the index generating unit 510 first obtains Torrent File identification information from the leecher 50. After that, the index generating unit 510 defines a range of indexes from which indexes can be selected for each of the encrypted pieces, based on the Torrent File identification information to determine the indexes for the encrypted pieces that respectively correspond to the pieces and to generate a combination of indexes (i.e., a sequence). Subsequently, the index generating unit 510 inquires whether the generated sequence has already been stored in the index database 513. The index generating unit 510 judges whether the sequence is usable according to the result of the inquiry. Sequence information indicating the sequence that has been judged to be usable by the index generating unit 510 is stored into the index database 513.
For each of the encrypted pieces corresponding to the sequence, the seeder information generating unit 511 identifies a node that stores therein the encrypted piece, by referring to the seeder database 512 based on the sequence that has been judged to be usable by the index generating unit 510. In the case where two or more nodes each store therein the targeted encrypted piece, it is acceptable for the seeder information generating unit 511 to identify one of the nodes by arbitrarily selecting one out of the two or more nodes. After that, the seeder information generating unit 511 generates seeder information indicating the node that has been identified for each of the encrypted pieces and transmits the generated seeder information to the leecher 50. The seeder information contains index information that indicates the indexes in the sequence that has been judged to be usable by the index generating unit 510 and connection destination information used for accessing the nodes storing therein the encrypted pieces that correspond to the indexes.
The index database 513 stores therein sequence information that indicates the sequence of the indexes that has been generated by the index generating unit 510. When the index database 513 stores therein a piece of sequence information, it means that the sequence indicated in the piece of sequence information has already been used. The index database 513 has a controller on the outside or the inside thereof and conducts a search in the sequence information in response to an inquiry from the index generating unit 510. According to the result of the search, the index database 513 returns a result of the inquiry to the index generating unit 510 or stores sequence information therein.
Next, a procedure in a content distributing process performed in the content distribution system according to the second embodiment will be explained, with reference to
The processes performed at Steps S1 and S2 are the same as those according to the first embodiment. When being accessed by the leecher 50, the tracker 51 obtains Torrent File identification information from the leecher 50 and performs an index generating process based on the Torrent File identification information (Step S20). In the following section, an example in which the tracker 51 determines a sequence of all the encrypted pieces will be explained.
On the contrary, in the case where the index database 513 has not stored therein any sequence information indicating the same sequence as the sequence in the inquiry (Step S201: No), the index database 513 stores therein the sequence information indicating the sequence in the inquiry and returns “0” to the index generating unit 510 (Step S202). When the index generating unit 510 has received “0” from the index database 513, the seeder information generating unit 511 refers to the seeder database 512 and identifies, for each of the encrypted pieces corresponding to the sequence, a seeder 52 that stores therein the encrypted piece. The seeder information generating unit 511 then generates seeder information indicating the seeders that have been identified for the encrypted pieces and transmits the generated seeder information to the leecher 50 (Step S203). The seeder information contains the index information and the connection destination information described above.
Returning to the description of
In the configuration described above, the tracker 51 is able to provide the leecher 50 with a sequence of encrypted pieces that constitute the encrypted content, while avoiding the sequences that have already been used. For example, let us discuss a situation where the tracker 51 has transmitted the seeder information as shown in
Because the tracker 51 determines the sequences in this manner, it is possible to inhibit illegitimate use of the content corresponding to mutually the same sequence. For example, in the case where all of the decryption keys used for decrypting the encrypted pieces is leaked, it is possible to identify the source from which the decryption keys are leaked.
In other words, to cope with the illegitimate action of leaking key rings, the tracker 51 is able to assign the sequences to the nodes, not only for the purpose of avoiding the sequences that have already been used, but also for the purpose of identifying the source from which a key ring has been leaked. To achieve the latter purpose, it is possible to use a traceability (TA) code described in a reference document by J. Staddon, D. R. Stinson, and R. Wei, “Combinatorial properties of frameproof and traceability codes”, the Institute of Electrical and Electronics Engineers (IEEE) Transactions on Information Theory 47(3): pp. 1042-1049 (2001). For example, in the case where a code word in the TA code assigned to a node is expressed as w=(i1 i2 . . . iN′) (where i1, i2, . . . , and iN′ are each a symbol constituting the code word), an encrypted piece E(K(i1,1))[C1], E(K(i2,2))[C2], . . . , E(K(iN′,N′))[CN′] is stored into the node.
If a key ring is leaked, by identifying the sequence that corresponds to the key ring, (i.e., the corresponding code word), it is possible to identify the node to which the sequence has been assigned by the tracker 51. Thus, as a result, it is possible to inhibit legitimate use of the content.
In the second embodiment described above, the connection destination information is not limited to the example described above. Another arrangement is acceptable in which the connection destination information contains the IP addresses and the port numbers of the seeders, instead of the URLs of the seeders. Yet another arrangement is acceptable in which the connection destination information contains sets each made up of an IP address and a port number of a seeder, in addition to the URLs of the seeders.
In the second embodiment described above, another arrangement is acceptable in which the seeder information contains the indexes of the encrypted pieces and hash values of the encrypted pieces.
In the second embodiment described above, in the case where the Torrent File contains the hash information of the encrypted pieces as explained in one of the modification examples of the first embodiment, the tracker 51 does not have to obtain the Torrent File identification information from the leecher 50.
Further, in the second embodiment described above, the seeder information generated by the tracker 51 contains the connection destination information used for accessing the nodes; however, the seeder information does not necessarily have to contain the connection destination information.
Further, in the second embodiment described above, the tracker 51 stores, in the seeder database 512, the connection destination information in correspondence with the indexes of the decryption keys used for decrypting the encrypted pieces; however, the present invention is not limited to this example. The connection destination information itself does not necessarily have to be stored. The operation performed by the leecher 50 in this situation is the same as the one described above.
In the second embodiment described above, during the index generating process, it is not possible to use again the sequences that have already been used once; however, another arrangement is acceptable in which it is possible to use each of the sequences up to a predetermined number of times such as twice or more. In that situation, the authentication and key exchange processing unit 533 included in the key server 53 obtains, from the leecher 50, leecher identification information for identifying the leecher 50, during the mutual authentication process performed with the leecher 50. The sequence information comparing unit 535 stores, into the seeder database 512, the sequence information, the leecher identification information, and a use-number-of-times value that indicates how many times the sequence information indicating the generated sequence has been transmitted to the leecher 50 identified with the leecher identification information, while keeping these types of information in correspondence with one another.
With this arrangement, it is permitted to use the same sequence of encrypted pieces a plurality of times, instead of only once. Thus, it is possible to realize a more flexible content distributing process.
In the explanation above, the tracker 51 itself judges whether the sequence that has been generated by the index generating unit 510 has already been used; however, another arrangement is acceptable in which the tracker 51 does not perform this judging process. In that situation, in the same manner as described in the first embodiment, the key server 53 performs the comparing process at Step S14 after the process at Step S12 has been performed, so that it is possible to avoid using the same sequence again.
For example, in that situation, another arrangement is acceptable in which, with respect to each of the encrypted pieces of which the sequence is determined by the tracker 51, the leecher 50 obtains a plurality of mutually different encrypted pieces for the piece. For example, with respect to the piece C1, it is acceptable for the leecher 50 to obtain the encrypted pieces E(K(i1,1))[C1] and E(K(i1′,1))[C1] (where i1≠i1′, 1≦i1≦m, and 1≦i1′≦m are satisfied). With this arrangement, when the leecher 50 requests the key ring from the key server 53, if the sequence containing the index (i1,1) has already been used, the leecher 50 is not able to obtain the key ring corresponding to the sequence, but if the sequence containing the index (i1′,1) is usable, the leecher 50 is able to obtain the key ring corresponding to this sequence from the key server 53 without having to access the tracker 51 again. With this arrangement in which the leecher 50 obtains the extra encrypted piece in advance, the leecher 50 is able to prepare the plurality of sequence candidates in advance. Thus, the leecher 50 is able to avoid the trouble of having to access the tracker 51 again.
Further, in the description above, the tracker 51 determines the sequence of the encrypted pieces that correspond to all of the pieces C1 to CN that constitute the content; however, the present invention is not limited to this example. Another arrangement is acceptable in which the tracker 51 determines a sequence of only a part of the encrypted pieces. In that situation, it is sufficient if the remaining encrypted pieces of which the sequence is not determined by the tracker 51 are arbitrarily obtained by the leecher 50 from any of the other nodes, as described in the first embodiment. In that situation, it is acceptable for the key server 53 to perform the comparing process on the sequence as described above.
In that situation, during the comparing process, an arrangement is acceptable in which the key server 53 performs the comparing process only on such a part of the sequence other than the sequence corresponding to the part of encrypted pieces that has been determined by the tracker 51. In this situation, the sequence information storage unit 536 stores therein sequence information indicating such a part of the sequence other than the part of the sequence determined by the tracker 51. It is assumed that, for example, the Torrent File defines in advance which ones of the encrypted pieces corresponding to the pieces C1 to CN are included in the part of the sequence determined by the tracker 51. During the comparing process, the sequence information comparing unit 535 included in the key server 53 compares the index information contained in the request message with the sequence information stored in the sequence information storage unit 536, with regard to such a part of the sequence other than the part of the sequence determined by the tracker 51.
With this arrangement, it is possible to reduce the amount of information stored in the sequence information storage unit 536. Also, it is possible to reduce the amount of information used in the comparing process. Thus, it is possible to reduce the processing load of the key server 53.
Further, in the second embodiment described above, the index database 513 is included in the tracker 51; however, the present invention is not limited to this example. Another arrangement is acceptable in which the index database 513 is included in a database server connected to the tracker 51. In this configuration, the index generating unit 510 included in the tracker 51 refers to the sequence stored in the index database 513 via the database server.
Next, a third embodiment of the content distribution system according to the present invention will be explained. Parts of the third embodiment that are the same as the first embodiment or the second embodiment will be explained by using the same reference characters or will be omitted from the explanation.
The configuration of the content distribution system according to the third embodiment is different from the configuration of the content distribution system according to the first embodiment or the second embodiment in the following: In the content distribution system according to the third embodiment, an example will be explained in which a specific encrypted piece (e.g., an encrypted piece corresponding to the piece C1) is distributed from the key server 53 to the leecher 50. In the present example, let us assume that the encrypted pieces are generated as shown in
In this configuration, when the leecher 50 transmits the request message to the key server 53 to request the key ring, the leecher 50 puts the leecher identification information for identifying the leecher 50 into the request message and transmits the request message. The request message does not necessarily have to contain the index information. Alternatively, it is also acceptable if the request message indicates a sequence of the indexes of all the pieces except for the specific encrypted piece (e.g., a sequence of the indexes of the pieces C2 to CN, if the specific encrypted piece is the encrypted piece corresponding to the piece C1).
The key storage unit 534 included in the key server 53 stores therein the encrypted piece corresponding to the piece C1, in addition to the decryption keys. The sequence information storage unit 536 stores therein leecher identification information of the leechers 50 to which key rings have been transmitted from the key server 53 in the past, in correspondence with the sequence information. The sequence information comparing unit 535 judges whether the leecher identification information transmitted from the leecher 50 is stored in the sequence information storage unit 536 and determines whether the key ring and the specific encrypted piece should be transmitted according to the result of the judging process. The key supplying unit 537 transmits the key ring and the encrypted piece to the leecher 50, according to the result of the determining process performed by the sequence information comparing unit 535.
Next, a procedure in a content distributing process performed in the content distribution system according to the third embodiment will be explained, with reference to
With this arrangement in which the specific encrypted piece is distributed from the key server 53, it is possible to allow the leechers 50 to obtain the encrypted pieces that are arranged in mutually different sequences, without causing the leechers 50 to access the tracker 51 again. Thus, the leechers 50 are able to avoid the trouble of accessing the tracker 51 again.
At Step S140F above, it is acceptable to perform the process of replacing the encrypted piece as explained in one of the modification examples of the first embodiment above. For example, let us discuss a situation in which the leecher 50 has obtained the encrypted content E(K(i2,2))[C2], E(K(i3,3))[C3], . . . , E(K(iN,N))[CN] and has requested the corresponding key ring from the key server 53. In the case where the sequence information storage unit 536 has already stored therein the sequence {(i2,2), (i3,3), . . . , (iN,N)} corresponding to the key ring requested by the leecher 50 (i.e., the result of the judging process performed by the sequence information comparing unit 535 is in the affirmative), the key server 53 generates another sequence {(i2′,2), (i3,3), . . . , (iN,N)} that is not stored in the sequence information storage unit 536 and transmits, to the leecher 50, an encrypted piece E(K(i2′,2))[C2] with which the leecher 50 should replace the other encrypted piece and information related to the index (i.e., in the present example, (i2′,2)). In addition, the key server 53 transmits, to the leecher 50, a key ring that contains the decryption keys that corresponds to the sequence {(i1,1), (i2′,2), (iN,N)} and the encrypted piece E(K(i1,1))[C1] that corresponds to the piece C1. On the contrary, in the case where the sequence information storage unit 536 has not yet stored therein the sequence {(i2,2), (i3,3), . . . , (iN,N)} corresponding to the key ring requested by the leecher 50 (i.e., the result of the judging process performed by the sequence information comparing unit 535 is in the negative), the key server 53 may or may not perform the replacing process explained above.
In the third embodiment described above, the specific encrypted piece does not necessarily have to be the encrypted piece corresponding to the piece C1. The number of specific encrypted pieces does not necessarily have to be one, either. For example, it is acceptable to use, as the specific encrypted piece, an encrypted piece defined by using the TA code disclosed in the reference document cited in the second embodiment. For example, in the case where a code word in the TA code assigned to a node is expressed as w=(i1 i2 . . . iN′), it is acceptable if an encrypted piece E(K(i1,1))[C1], E(K(i2,2))[C2], . . . , E(K(iN′,N′))[CN′] is transmitted from the key server 53 to the node, as the specific encrypted piece.
Further, the specific encrypted piece does not necessarily have to be distributed to the leecher 50 by the key server 53. It is also acceptable if the specific encrypted piece is distributed by the tracker 51, the sales server 54, or a reliable third-party server. In that situation, the key server 53 transmits only the key ring to the leecher 50 at Step S140F.
In the third embodiment described above, the encrypted piece and the leecher identification information do not necessarily have to be stored in the key storage unit 534 and the sequence information storage unit 536, respectively. For example, another arrangement is acceptable in which the key server 53 further includes mutually different storage units so that the encrypted piece and the leecher identification information can be stored in these storage units, respectively.
In the third embodiment described above, the specific encrypted piece is transmitted from the key server 53 to the leecher 50. However, the present invention is not limited to this example. Another arrangement is acceptable in which the key server 53 specifies the index of the specific encrypted piece (e.g., the value of i1 in the index (i1,1) corresponding to the piece C1, in the example above) and causes another node, the sales server 54, or a separately-provided dedicated server to transmit the encrypted piece E(K(i1,1))[C1] that corresponds to the index to the leecher 50. Yet another arrangement is acceptable in which the key server 53 does not specify the index, but another node, the sales server 54, or a separately-provided dedicated server specifies the index of the specific encrypted piece so that the dedicated server transmits the encrypted piece corresponding to the specified index to the leecher 50.
Next, a fourth embodiment of the content distribution system according to the present invention will be explained. Parts of the fourth embodiment that are the same as any of the first through the third embodiments will be explained by using the same reference characters or will be omitted from the explanation.
In the fourth embodiment, it is assumed that the file information contained in the Torrent File includes hash values {hash(E(K(i,j))[Cj]} (where 1≦i≦m and 1≦j≦N are satisfied) that are calculated through a hash calculation process by using the encrypted pieces, as explained in one of the modification examples of the first embodiment (see
In the following section, each of the indexes j used for distinguishing the pieces C1 to CN from one another will be referred to as a “piece index”. Each of the indexes i that offer variations according to the number of decryption keys will be referred to as a “variation index”. A set (i,j) made up of a piece index and a variation index will be simply referred to as an “index”. With regard to a piece that corresponds to a piece index j, in the case where there are two or more encrypted pieces that are obtained by encrypting the piece with mutually different two or more encryption keys, a set including these encrypted pieces will be referred to as an “encrypted piece string j”, as necessary.
In this configuration, when the content obtaining unit 500 included in the leecher 50 has obtained an encrypted piece, based on the piece information as described above, the content obtaining unit 500 performs a process to identify the variation index i with respect to the encrypted piece. More specifically, the content obtaining unit 500 calculates a hash value through a hash calculation process by using the encrypted piece, refers to the file information contained in the Torrent File, and identifies the variation index i that corresponds to the piece index j of the encrypted piece, within the index (i,j) that corresponds to the hash value.
Next, a procedure in a content distributing process performed in the content distribution system according to the fourth embodiment will be explained, with reference to
After that, at Step S4001, the leecher 50 calculates a hash value of the received encrypted piece. Subsequently at Step S4002, the leecher 50 refers to the Torrent File as shown in
Each of the variation indexes i1, . . . , iN in the indexes (i1,1), . . . , (iN,N) corresponding to the decryption keys is identified every time the process at Step S4001 is performed. The processes performed at Steps S11 through S16 are the same as those according to the first embodiment.
In this configuration described above, it is not possible to identify the variation index i of each of the encrypted pieces stored in the seeder 52 before the leecher 50 receives each of the encrypted pieces. With this arrangement, for example, it is possible to inhibit the leecher 50 from attempting to obtain the encrypted piece corresponding to a certain index (i,j) for which the decryption key has been leaked. In addition, as for each of the obtained encrypted pieces, it is possible to identify the variation index thereof, based on the hash value and the Torrent File. Thus, the leecher 50 is able to obtain, like in the first embodiment, the key ring containing the decryption keys used for decrypting the obtained encrypted pieces from the key server 53.
In the fourth embodiment described above, the indexes indicated in the piece information are not limited to the example shown in
In the fourth embodiment described above, another arrangement is acceptable in which, when transmitting the encrypted piece to the leecher 50, the seeder 52 transmits, to the leecher 50, variation index information indicating the variation index of the encrypted piece, separately from the piece information. In that situation, the leecher 50 does not need to calculate the hash value of the encrypted piece, unlike the example described above Thus, the file information contained in the Torrent File does not need to include the hash value of each of the encrypted pieces.
In this configuration described above, it is possible to make it easy for the leecher 50 to identify the variation indexes of the encrypted pieces and also to inhibit the leecher 50 from attempting to obtain the encrypted piece corresponding to, for example, an index (i,j) for which the decryption key has been leaked.
In the fourth embodiment described above, another arrangement is acceptable in which, when transmitting the encrypted piece to the leecher 50, the seeder 52 transmits the hash value of the encrypted piece to the leecher 50. In that situation also, the leecher 50 does not need to calculate the hash value of the encrypted piece, unlike the example described above. The file information contained in the Torrent File includes the hash values of the encrypted pieces, like in the fourth embodiment described above.
In this configuration as described above, instead of directly informing the leecher 50 of the variation index of the encrypted piece, the seeder 52 informs the leecher 50 of the hash value. Thus, it is possible to allow the leecher 50 to identify the variation index of the encrypted piece without increasing the processing load on the leecher 50.
In the case where the seeder 52 transmits the hash value of the encrypted piece to the leecher 50, another arrangement is acceptable in which, instead of the leecher 50, the key server 53 identifies the variation index of the encrypted piece. In other words, it is acceptable if the process corresponding to Step S4002 is performed by the key server 53.
After that, at Step S11, in the case where the key server 53 has received the request message that contains the hash value as described above, after performing the process at Step S12, subsequently at Step S4007 the key server 53 identifies the variation index of the encrypted piece, by referring to the Torrent File as shown in
In this configuration as described above, the leecher 50 is able to obtain the decryption keys used for decrypting the encrypting pieces, without the leecher 50 itself having to identify the variation indexes of the encrypted pieces.
In the fourth embodiment described above, after the leecher 50 calculates the hash value of the encrypted piece, the leecher 50 performs the process of identifying the variation index of the encrypted piece; however, the present invention is not limited to this example. Another arrangement is acceptable in which the key server 53 performs this process. In that situation, the key server 53 obtains the Torrent File as shown in
In this configuration also, the leecher 50 is able to obtain the decryption keys used for decrypting the encrypted pieces, without the leecher 50 itself having to identify the variation indexes of the encrypted pieces.
Next, a fifth embodiment of the content distribution system according to the present invention will be explained. Parts of the fifth embodiment that are the same as any of the first through the fourth embodiments will be explained by using the same reference characters or will be omitted from the explanation.
According to the fifth embodiment, an example will be explained in which the leecher 50 requests an encrypted piece from the seeder 52 at a plurality of different times. In that situation, with respect to the one encrypted piece, the leecher 50 transmits a piece request (hereinafter, a “partial data request”) to request partial data (hereinafter, a “sub-piece”) that constitutes a part of the encrypted piece, from the seeder 52. The data length of each of the sub-pieces may be a predetermined length or may be a variable length. The number of sub-pieces that constitute each of the encrypted pieces is not limited. Each of the encrypted pieces may be constituted with a predetermined number of sub-pieces or may be constituted with a variable number of sub-pieces. The data length of each of the sub-pieces and the total number of sub-pieces that constitute each of the encrypted pieces may be specified in the content distribution system as initial values or may be specified in advance in the Torrent File. In the following section, it is assumed that the file information contained in the Torrent File includes the data length of each of the encrypted pieces, but does not necessarily have to include the hash values.
When transmitting a piece request to the seeder 52, the content obtaining unit 500 according to the fifth embodiment judges whether the data of the encrypted piece that is the target to be obtained has partially been obtained already. In the case where the content obtaining unit 500 has judged that the data has partially been obtained already, the content obtaining unit 500 generates a partial data request and transmits the generated partial data request to the seeder 52. The partial data request indicates, for example, a set (i,j) made up of a specified piece index and a specified variation index that specify the encrypted piece that is the target to be obtained and that has partially been obtained as well as sub-piece specifying information that specifies a sub-piece that constitutes partial data of the encrypted piece that has partially been obtained already. The sub-piece specifying information specifies a data range of the partial data (i.e., the sub-piece) of the encrypted piece that has partially been obtained already. The data range is specified by using, for example, an offset value expressed with a number of bytes or the like that indicates the starting position of the sub-piece, an offset value expressed with a number of bytes or the like that indicates the ending position of the sub-piece, the data length of the sub-piece, or a combination of any of these.
When transmitting a piece request to the seeder 52, in the case where the content obtaining unit 500 has judged the data of the encrypted piece that is the target to be obtained has not partially been obtained (i.e., none of the data of the encrypted piece has been obtained yet), the content obtaining unit 500 generates a piece request as described in the first embodiment and transmits the generated piece request to the seeder 52.
When the content obtaining unit 500 has obtained an encrypted piece or a sub-piece, the sub-piece completion judging unit 504 performs a completion judging process of judging whether the entirety of the data of the received encrypted piece or the encrypted piece partially constituted with the received sub-piece has already been obtained. The completion judging process is performed based on, for example, the data length or a data length calculated from the head position and the ending position of the partial data within the encrypted piece. In the present example, the sub-piece completion judging unit 504 performs the completion judging process by referring to an obtained amount indicated in session information (explained later) and the data length contained in the Torrent File. In the case where the sub-piece completion judging unit 504 has judged that, with respect to the encrypted piece that is the target of the judging process, the entirety of the data has already been obtained, and if the encrypted piece is constituted with a plurality of sub-pieces, the sub-piece completion judging unit 504 performs a completing process of completing the encrypted piece by putting together all the sub-pieces that constitute the encrypted piece.
On the contrary, in the case where the sub-piece completion judging unit 504 has judged that, with respect to the encrypted piece that is the target of the judging process, the entirety of the data has not yet been obtained, the sub-piece completion judging unit 504 refers to the session information (explained later), accesses the seeder 52 that has transmitted the one or more sub-pieces that constitute the encrypted piece, and transmits a partial data request to the seeder 52 via the content obtaining unit 500 to request one of the sub-pieces that have not yet been obtained (hereinafter, am “unobtained sub-piece”) among the sub-pieces that constitute the encrypted piece. The sub-piece completion judging unit 504 attempts to obtain the unobtained sub-piece via the content obtaining unit 500 in this manner. For example, the sub-piece completion judging unit 504 repeatedly performs the process of obtaining an unobtained sub-piece from the seeder 52 until all the sub-pieces that constitute the encrypted piece have been obtained.
The session information managing unit 505 generates the session information used for requesting again one of the unobtained sub-pieces from the seeder 52 that has previously transmitted the one or more of the sub-pieces and stores the generated session information therein. The session information indicates, for example, seeder identifying information and an obtained amount. The seeder identifying information is information that identifies the seeder 52 that has previously transmitted the one or more of the sub-pieces. The seeder identifying information may be, for example, the IP address and the port number of the seeder 52, the MAC address of the seeder 52, the subscriber's ID as described above, or a combination of any of these. The obtained amount indicates the amount of data of the encrypted piece that has already been obtained. The obtained amount may be, for example, a data length calculated from the head position of the data and the ending position of the obtained partial data within the encrypted piece, a total of the data lengths of the sub-pieces that have already been obtained among the sub-pieces that constitute the encrypted piece, or the number of sub-pieces that have already been obtained.
The seeder 52 reads the sub-piece that has been requested in the partial data request out of an external storage device and transmits the read sub-piece to the leecher 50. In the case where the seeder 52 has received the partial data request as shown in
Next, a procedure in a content distributing process performed in the content distribution system according to the fifth embodiment will be explained, with reference to
On the other hand, when the seeder 52 has received the piece request transmitted at Step S312, the seeder 52 reads the encrypted piece or the sub-piece that corresponds to the piece request out of an external storage device and transmits the encrypted piece or the sub-piece that has been read to the leecher 50 (Step S315). When the leecher 50 has received the encrypted piece or the sub-piece (Step S316), the leecher 50 updates the obtained amount in the session information (Step S317). After that, the leecher 50 judges whether the piece request has been completed (Step S318). In the present example, in the case where the leecher 50 has received a sub-piece at Step S312, the leecher 50 compares the obtained amount indicated in the session information with the data length contained in the Torrent File, with respect to the encrypted piece that is partially constituted with the sub-piece. In the case where the obtained amount and the data length match, the leecher 50 judges that the entirety of the data of the encrypted piece has been obtained and judges that the piece request has been completed (Step S318: Yes). After that the leecher 50 performs the completing process of completing the encrypted piece by putting together all the sub-pieces that constitute the encrypted piece. Subsequently, the leecher 50 judges whether the leecher 50 should receive another encrypted piece by accessing another seeder 52 (Step S319). In the case where the result of the judging process is in the affirmative, the process returns to Step S5 where the leecher 50 accesses another seeder 52. On the contrary, in the case where the result of the judging process at Step S319 is in the negative, the process ends.
On the other hand, in the case where the obtained amount indicated in the session information and the data length contained in the Torrent File do not match at Step S318, the leecher 50 judges that the entirety of the data of the encrypted piece has not yet been obtained and that the piece request has not been completed (Step S318: No). In that situation, the process returns to Step S5 where the leecher 50 refers to the session information and accesses again the seeder 52 that has previously transmitted one or more of the sub-pieces that constitute the encrypted piece. In the processes thereafter, the leecher 50 generates a partial data request for requesting one of the unobtained sub-piece among the sub-pieces that constitute the encrypted piece and transmits the generated partial data request to the seeder 52. The leecher 50 repeatedly performs the process of obtaining an unobtained sub-piece from the seeder 52, until all the sub-pieces that constitute the encrypted piece have been obtained.
After performing the process at Step S311, in the case where the leecher 50 receives an encrypted piece at Step S316, there is a possibility that the leecher 50 may not be able to receive the entirety of the data of the encrypted piece for some reason. In that situation also, like the example in which the leecher 50 receives a sub-piece at Step S315, the leecher 50 judges, at Step S318, whether the piece request has been completed by comparing the obtained amount indicated in the session information with the data length contained in the Torrent File. In the case where the leecher 50 has judged that the piece request has not been completed, the process returns to Step S5 where the leecher 50 refers to the session information and accesses again the seeder 52 that has transmitted the encrypted piece. In the processes thereafter, the leecher 50 generates a partial data request for requesting the unobtained part of the data of the encrypted piece (treated in the same manner as an unobtained sub-piece) and transmits the generated partial data request to the seeder 52. The processes performed thereafter are the same as those described above. On the other hand, in the case where the leecher 50 has judged at Step S318 that the piece request has been completed in one receiving process, the leecher 50 performs the process at Step S319 described above.
Returning to the description of
In the configuration described above, the leecher 50 is able to obtain the necessary data with respect to the encrypted piece that has partially been obtained by the leecher 50. Thus, the leecher is able to complete each of the encrypted pieces more quickly. Because the leecher 50 is able to share each of the encrypted pieces with other leechers, the level of distribution efficiency is expected to improve.
In the fifth embodiment described above, an arrangement is acceptable in which, when the seeder 52 transmits a sub-piece, the seeder 52 transmits a part of the data of the sub-piece, instead of the entirety of the data of the sub-piece requested in the partial data request. Another arrangement is acceptable in which the seeder 52 transmits information that identifies the sub-piece, together with the sub-piece transmitted to the leecher 50. It is acceptable if the information that identifies the sub-piece is information that is similar to or the same as the information used for specifying a sub-piece described above. Further, in the case where a plurality of sub-pieces are transmitted all at once, even if the sub-pieces are to be serially arranged within one encrypted piece, an arrangement is acceptable in which the information for identifying each of the sub-pieces is transmitted together with the sub-pieces. Another arrangement is acceptable in which information showing how many sub-pieces are being transmitted is transmitted together with the sub-pieces.
Further, yet another arrangement is acceptable in which, in the case where the piece request has requested the entirety of the data of an encrypted piece, the seeder 52 transmits information indicating that, instead of sub-pieces, the entirety of the data of the encrypted piece is to be transmitted, together with the encrypted piece.
In addition, yet another arrangement is acceptable in which, when the seeder 52 has received, from the leecher 50, a piece request (hereinafter, the “new piece request”) requesting an encrypted piece or a sub-piece, the seeder 52 rejects or suspends the request in the new piece request depending on the data amount of an encrypted piece or a sub-piece of which the transmission has not been completed and that had previously been requested in another piece request (hereinafter, the “previous piece request”) that was received before the new piece request was received. More specifically, for example, an arrangement is acceptable in which the seeder 52 counts the number of encrypted pieces or sub-pieces of which the transmission is ongoing and has not yet been completed and that had been requested in the previous piece request or the number of previous piece requests of which the transmissions have not yet been completed. In the case where the counted value is equal to or larger than a threshold value, the seeder 52 rejects the request in the new piece request. Alternatively, another arrangement is acceptable in which the seeder 52 suspends the request in the new piece request until the seeder 52 has completed some or all of the ongoing transmissions so that the number of encrypted pieces or sub-pieces that are being transmitted in response to the previous piece request that is currently processed becomes smaller than a threshold value.
Further, yet another arrangement is acceptable in which, every time the leecher 50 has obtained an encrypted piece or a sub-piece, the leecher 50 transmits a message to the seeder 52 to inform the seeder 52 of the obtainment. Yet another arrangement is acceptable in which, as information for identifying the encrypted piece or the sub-piece, the message contains a set (i,j) made up of the specified piece index and the specified variation index as well as information specifying the sub-piece and/or a hash value. Yet another arrangement is acceptable in which, when the leecher 50 has completed an encrypted piece by using the obtained sub-pieces, the leecher 50 transmits a message to the seeder 52 to inform the seeder 52 of the completion. Yet another arrangement is acceptable in which, as the information for identifying the encrypted piece, the message contains a set (i,j) made up of the specified piece index and the specified variation index and/or a hash value.
In the fifth embodiment described above, another arrangement is acceptable in which the partial data request further contains flag information indicating that this request is a partial data request. Yet another arrangement is acceptable in which one partial data request requests a plurality of sub-pieces. In that situation, yet another arrangement is acceptable in which the partial data request indicates, for each of the plurality of sub-pieces, a set (i,j) made up of a specified piece index and a specified variation index as well as information specifying the sub-piece. The plurality of sub-pieces requested in one partial data request may be sub-pieces that are to be serially arranged in one encrypted piece or may be sub-pieces that are not to be serially arranged in one encrypted piece. Further, it is also acceptable if the sub-pieces are such sub-pieces that are respectively a part of mutually different encrypted pieces that are decrypted to become mutually different pieces. On the other hand, yet another arrangement is acceptable in which the seeder 52 transmits, to the leecher 50, at least one of the plurality of sub-pieces that are requested in a partial data request.
Further, yet another arrangement is acceptable in which, to specify an encrypted piece that has partially been obtained, the partial data request indicates at least a specified piece index j, instead of the set (i,j) made up of the specified piece index and the specified variation index. In that situation, yet another arrangement is acceptable in which, when the seeder 52 has received such a partial data request, the seeder 52 inquires of the leecher 50 about the specified variation index that specifies the encrypted piece that has partially been obtained and information specifying the sub-piece and obtains these types of information so that the seeder 52 is able to identify the sub-piece that is the target to be transmitted and to transmit the identified sub-piece to the leecher 50. With this arrangement, it is possible to improve the tolerance level of the seeder 52 against attacks.
Yet another arrangement is acceptable in which the partial data request indicates a hash value calculated through a hash calculation by using the encrypted piece that has partially been obtained, so that the encrypted piece that has partially been obtained and that is the target to be obtained is specified by the hash value. In that situation, the seeder 52 obtains, in advance, the Torrent File that contains the file information including the hash value of each of the encrypted pieces. Thus, by referring to the Torrent File, the seeder 52 is able to identify the encrypted piece that has partially been obtained and that has been specified by the hash value indicated in the partial data request.
In the fifth embodiment described above, another arrangement is acceptable in which each of the encrypted piece is configured in advance so as to be divided into a predetermined number of sub-pieces and a data number (hereinafter, the “sub-piece index”) is assigned to each of the sub-pieces in advance. In this configuration, it is acceptable to use the sub-piece index as the sub-piece specifying information contained in the partial data request. In that situation, the file information contained in the Torrent File is configured so as to indicate the total number of sub-pieces that constitute the encrypted piece. Further, another arrangement is acceptable in which the sub-piece completion judging unit 504 included in the leecher 50 performs the completion judging process by using the number of sub-pieces that have been obtained by the leecher 50 with respect to an encrypted piece and the number of sub-pieces indicated in the file information contained in the Torrent File with respect to the encrypted piece.
In the fifth embodiment described above, another arrangement is acceptable in which the Torrent File contains a hash value calculated by using each of the sub-pieces.
In the case where the file information contained in the Torrent File includes a hash value calculated through a hash calculation process by using each of the encrypted pieces, another arrangement is acceptable in which the sub-piece completion judging unit 504 included in the leecher 50 performs the completion judging process in the following manner: With regard to the encrypted piece that is the target of the judging process, the sub-piece completion judging unit 504 calculates a hash value of the sub-pieces that have been put together, and if the calculated hash value and the hash value of the encrypted piece contained in the Torrent File match, the sub-piece completion judging unit 504 judges that the entirety of the data of the encrypted piece has been obtained.
In the fifth embodiment described above, another arrangement is acceptable in which, when transmitting the partial data request to the seeder 52, the content obtaining unit 500 included in the leecher 50 transmits, to the seeder 52, the leecher identification information for identifying the leecher 50, so that the seeder 52 is able to identify the leecher 50.
In the fifth embodiment described above, in the case where the result of the judging process at Step S318 is in the negative, another arrangement is acceptable in which, the leecher 50 transmits the partial data request for requesting the unobtained sub-piece to another seeder 52 storing therein the encrypted piece, instead of transmitting the partial data request to the seeder 52 that has previously transmitted one or more of the sub-pieces.
Further, in the case where the leecher 50 is not able to receive the unobtained sub-piece that partially constitutes the encrypted piece from the seeder 52 that has previously transmitted one or more of the sub-pieces that constitute the encrypted piece, another arrangement is acceptable in which the leecher 50 transmits the partial data request to the seeder 52 after a predetermined period of time has elapsed. Yet another arrangement is acceptable in which the leecher 50 transmits the partial data request to another seeder 52, or transmits a piece request that is different from the partial data request to the seeder 52 or another seeder 52.
In other words, in the explanation above, in the case where it has been judged that the entirety of the data of the encrypted piece that is the target of the judging process has not been obtained, the leecher 50 repeatedly performs the process of obtaining, from the seeder 52, one of the unobtained sub-pieces among the sub-pieces that constitute the encrypted piece, until all the sub-pieces that constitute the encrypted piece have been obtained; however, it is acceptable to configure the leecher 50 so as not to perform this process.
In addition, in the case where it has been judged that the entirety of the data of the encrypted piece that is the target of the judging process has not been obtained, another arrangement is acceptable in which the leecher 50 does not attempt to obtain the unobtained sub-pieces, but discards the obtained sub-pieces for the encrypted piece, so that the leecher 50 starts the process all over again to obtain the encrypted piece, with respect to the piece obtained by decrypting the encrypted piece.
At Step S313 described above, another arrangement is acceptable in which the seeder 52 judges whether the piece request transmitted from the leecher 50 is illegitimate so that the seeder 52 is able to reject the transmission of the encrypted piece of the sub-piece according to the result of the judging process.
The session information managing unit 528 stores therein session information used for managing a session related to the transmission of an encrypted piece or a sub-piece. The session information is stored in correspondence with the leecher identification information used for identifying the leecher 50 to which the encrypted piece or the sub-piece is to be transmitted. The session information contains the piece index and the variation index of the encrypted piece or the encrypted piece that is partially constituted with the sub-piece as well as the amount of transmitted data. When the content transmitting unit 526 receives a piece request from the leecher 50, the content transmitting unit 526 also receives the leecher identification information. The obtained amount indicates the amount of data of the encrypted piece that has already been obtained. The obtained amount may be, for example, a data length calculated from the head position of the data and the ending position of the obtained partial data within the encrypted piece, a total of the data lengths of the sub-pieces that have already been obtained among the sub-pieces that constitute the encrypted piece, or the number of sub-pieces that have already been obtained.
The illegitimate request judging unit 527 judges whether the piece request received by the content transmitting unit 526 from the leecher 50 is illegitimate. In the present example, the starting position of the data and the data length are used as the sub-piece specifying information indicated in the partial data request, which is a type of piece request. In addition, a starting position (hereinafter, the “judging position”) that can be specified only if a predetermined condition is satisfied is determined in advance as a predetermined value. The predetermined condition is, for example, that it has been confirmed that one leecher 50 is not attempting to collect more encrypted pieces than a predetermined number, the encrypted pieces each being obtained by encrypting mutually the same piece, or that it has been confirmed that one leecher 50 is not attempting to collect more of the same encrypted piece than a predetermined number, or that both of these have been confirmed. It is possible to judge whether such a predetermined condition is satisfied by referring to the session information described above. It is possible to judge whether one leecher 50 (i.e., the same one) is attempting to collect the encrypted pieces by judging whether the leecher identification information received from the leecher 50 is the same as the leecher identification information indicated in the session information. It is possible to judge whether the encrypted pieces are each obtained by encrypting mutually the same piece by judging whether the piece index specified in the piece request received from the leecher 50 is the same as the piece index indicated in the session information.
In the case where the predetermined condition is satisfied, the illegitimate request judging unit 527 judges that the piece request received by the content transmitting unit 526 from the leecher 50 is not illegitimate. On the contrary, in the case where the predetermined condition is not satisfied, the illegitimate request judging unit 527 judges whether the piece request is illegitimate by judging whether the starting position indicated in the partial data request that has been received, as a piece request, by the content transmitting unit 526 from the leecher 50 is the same as the judging position. For example, the head position (e.g., “0”) of the data of the encrypted piece is used as the judging position. In this situation, it is judged whether the starting position indicated in the partial data request is the head position (i.e., “0”). In the case where the result of the judging process is in the affirmative, it means that the leecher 50 is requesting the data from the head position of the data of the encrypted piece by transmitting the partial data request, unlike the example explained in the first embodiment where the leecher 50 transmits the piece request when none of the data has been obtained yet. Thus, this action is judged to be illegitimate.
In the configuration described above, in the case where the illegitimate request judging unit 527 has judged that the piece request is illegitimate, the content transmitting unit 526 rejects the piece request that is requesting the transmission of the encrypted piece or the sub-piece and will not transmit the encrypted piece or the sub-piece to the leecher 50. In that situation, the content transmitting unit 526 may or may not transmit, to the leecher 50, a message indicating that the request for requesting the transmission of the encrypted piece or the sub-piece has been rejected. On the contrary, in the case where the illegitimate request judging unit 527 has judged that the piece request is not illegitimate, the content transmitting unit 526 transmits the encrypted piece or the sub-piece requested in the piece request to the leecher 50.
On the other hand, every time the leecher 50 transmits a piece request to the seeder 52, the leecher 50 transmits the leecher identification information thereof to the seeder 52. In the case where the seeder 52 has judged that the transmitted piece request is illegitimate or where some failure has occurred, the leecher 50 is not able to receive the encrypted piece or the sub-piece from the seeder 52. In that situation, an arrangement is acceptable in which the leecher 50 starts the process all over again from any of the steps before Step S315 in
Further, yet another arrangement is acceptable in which the seeder 52 suspends the piece request from the leecher 50, without transmitting the rejection message to the leecher 50. In that situation, an arrangement is acceptable in which the seeder 52 transmits the rejection message to the leecher 50 after a predetermined period has elapsed or the seeder 52 forces the connection with the leecher 50 to be terminated.
As long as the illegitimate request judging unit 527 is able to judge that a piece request in which an attacking intention of the leecher 50 is suspected is illegitimate, any other processes besides the examples described above are acceptable. The judging position is not limited to the one described above, either. It is also acceptable to judge whether a piece request is illegitimate by judging whether the starting position is before or after the judging position, instead of judging whether the starting position is the same as the judging position.
In the case where the sub-piece index as explained in one of the modification examples of the fifth embodiment is used, it is acceptable to use a value of the sub-piece index as a judging index, instead of the judging position. For example, it is acceptable to configure the value of the sub-piece index of the sub-piece positioned at the head of an encrypted piece so as to be used as the judging index (i.e., the predetermined value). It is also acceptable if the judging position and the judging index are each a variable value, instead of a predetermined value.
Next, a sixth embodiment of the content distribution system according to the present invention will be explained. Parts of the sixth embodiment that are the same as any of the first through the fifth embodiments will be explained by using the same reference characters or will be omitted from the explanation.
In this configuration described above, the leecher 50 transmits a piece request (hereinafter, the “special piece request) to the residual server 55 to request an uncirculated encrypted piece. In this situation, the leecher 50 puts the leecher identification information for identifying the leecher 50 into the special piece request and transmits the special piece request. In this situation, it is assumed that the piece index j of the uncirculated encrypted piece requested by the leecher 50 is specified in advance as an initial value for each of the leechers 50. It is acceptable if the initial value is randomly selected from the values of j that satisfy 1≦j≦L. An arrangement is acceptable in which the initial value of the piece index j is specified in advance in the program executed by the leecher 50, or notified by another node to the leecher 50, or determined by the leecher 50 in advance. When the leecher 50 has received the uncirculated encrypted piece E(K(i,j))[Cj] from the residual server 55, the leecher 50 transmits a request message to the residual server 55 to request the decryption key for decrypting the uncirculated encrypted piece.
The hardware configuration of the residual server 55 is substantially the same as the hardware configuration of each of the apparatuses such as the leechers 50 explained in the description of the first embodiment. Next, various types of functions that are realized in the hardware configuration described above when the CPU of the residual server 55 executes the various types of programs stored in the storage devices or the external storage devices will be explained.
The controlling unit 550 controls the entirety of the residual server 55 and also intermediates instructions from the leecher identification information comparing unit 555 to the key supplying unit 559. The packet processing unit 551 packetizes various types of data to be transmitted to external apparatuses such as the leecher 50 and forwards the packet to the network interface unit 552. The packet processing unit 551 also obtains data, based on packets forwarded from the network interface unit 552. The network interface unit 552 controls communication with external apparatuses, transmits the packetized data forwarded from the packet processing unit 551 to the external apparatuses, and forwards the packets received from the external apparatuses to the packet processing unit 551.
The uncirculated encrypted piece storage unit 554 stores therein the uncirculated encrypted pieces. The leecher identification information storage unit 556 stores therein leecher identification information of the leechers 50 to which the residual server 55 transmitted uncirculated encrypted pieces in the past. The leecher identification information comparing unit 555 judges whether the leecher identification information storage unit 556 stores therein leecher identification information transmitted from the leecher 50 and determines whether the uncirculated encrypted piece should be transmitted according to the result of the judging process. According to the result of the determining process performed by the leecher identification information comparing unit 555, when the uncirculated encrypted piece supplying unit 557 is instructed, via the controlling unit 550, to transmit the uncirculated encrypted piece that is the target to be transmitted, the uncirculated encrypted piece supplying unit 557 reads the uncirculated encrypted piece from the uncirculated encrypted piece storage unit 554 and transmits the read uncirculated encrypted piece to the leecher 50.
The authentication exchange processing unit 553 receives the special piece request from the leecher 50 via the network interface unit 552 and performs a mutual authentication process with the leecher 50. After the authentication process has been performed, the authentication exchange processing unit 553 transmits an acceptance message to leecher 50 to indicate that the request has been accepted. The key storage unit 558 is provided in, for example, an external storage device such as an HDD and stores therein the decryption keys used for decrypting the uncirculated encrypted pieces, respectively. As explained above, each of the decryption keys is expressed as, for example, K(i,j) (where m+1≦i≦m′ and 1≦j≦L are satisfied). The key supplying unit 559 receives the request message for requesting the decryption key for decrypting the uncirculated encrypted piece, reads the decryption key from the key storage unit 558 in response to the request message, and transmits the read decryption key to the leecher 50 via the network interface unit 552.
Next, a procedure in a content distributing process performed in the content distribution system according to the sixth embodiment will be explained, with reference to
On the other hand, when the residual server 55 has received the special piece request (Step S962), the residual server 55 performs a mutual authentication process with the leecher 50. After the mutual authentication process has been performed, the residual server 55 transmits an acceptance message to the leecher 50 to indicate that the special piece request has been accepted (Step S963). When the leecher 50 has received the acceptance message from the residual server 55 (Step S964), the leecher 50 waits for the transmission of the uncirculated encrypted piece from the residual server 55. At Step S965, the residual server 55 performs a comparing process described below with regard to the special piece request.
On the other hand, in the case where the leecher identification information comparing unit 555 has judged at Step S9652 that the leecher identification information storage unit 556 stores therein the same leecher identification information, in other words, in the case where the residual server 55 transmitted the uncirculated encrypted piece to the leecher 50 in the past, the leecher identification information comparing unit 555 determines that the uncirculated encrypted piece should not be transmitted and instructs, via the controlling unit 550, the uncirculated encrypted piece supplying unit 557 that the transmission of the uncirculated encrypted piece to the leecher 50 is prohibited (Step S9654).
The following explanation is based on an assumption that the uncirculated encrypted piece has been transmitted at Step S9653. Returning to the description of
In the configuration described above, it is possible to keep secret which one among the pieces C1 to CN is obtained by decrypting the uncirculated encrypted piece. Thus, it is possible to inhibit such an attack where the piece obtained by decrypting the uncirculated encrypted piece and the decryption keys used for decrypting the circulated encrypted pieces obtained by encrypting the other pieces are disclosed so that the content is illegitimately used.
In the sixth embodiment described above, the piece index j of the uncirculated encrypted piece E(K(i,j))[Cj] (where “m+1≦i≦m′ and 1≦j≦L are satisfied) requested by the leecher 50 in the special piece request is specified in advance; however, the piece index j does not necessarily have to be specified in advance. In that situation, an arrangement is acceptable in which the special piece request contains information that specifies the piece index of the uncirculated encrypted piece that is the target to be obtained, or the special piece request contains sequence information indicating the sequence of the indexes of the circulated encrypted pieces that have already been obtained.
In the case where the special piece request is configured so as to contain the sequence information, another arrangement is acceptable in which the residual server 55 stores the set made up of the leecher identification information and the sequence information contained in the special piece request into the leecher identification information storage unit 556 so that the comparing process is performed at Step S965 by using the set made up of the leecher identification information and the sequence information.
Further, it is acceptable if the subject that determines the piece index j of the uncirculated encrypted piece to be transmitted to the leecher 50 is the residual server 55, the key server 53, the seeder 52, or any other communication apparatus.
Furthermore, the piece index j of the uncirculated encrypted piece transmitted to the leecher 50 may have an arbitrary value or may have a value that is incremented according to the order in which special piece requests are received by the residual server 55. Also, in the case where a content index is assigned to the content, it is acceptable if the piece index j has a value that is calculated with a hash function by using a number of pieces of information such as the content index, the node information, and the leecher identification information. The subject that determines the piece index j of the uncirculated encrypted piece to be transmitted to the leecher 50 is able to determine the piece index j by obtaining such pieces of information from the leecher 50 in advance.
In terms of the timing, another arrangement is acceptable in which, after the special piece request has been transmitted from the leecher 50 to the residual server 55, it is determined which uncirculated encrypted piece is to be transmitted to the leecher 50.
It is acceptable for the leecher 50 to request a plurality of uncirculated encrypted pieces in the special piece request. Also, another arrangement is acceptable in which the number of uncirculated encrypted pieces that the leecher 50 is able to obtain is different for each of the leechers 50.
Yet another arrangement is acceptable in which the piece index j of the uncirculated encrypted piece obtained by leecher 50 is specified in such a manner that the piece index j is different for each of the leechers 50. In other words, it is acceptable for the residual server 55 to transmit the uncirculated encrypted pieces to the leechers 50, respectively, in such a manner that the piece obtained by decrypting the uncirculated encrypted piece is different for each of the leechers 50.
Further, yet another arrangement is acceptable in which the set made up of a piece index j and a variation index i of the uncirculated encrypted piece obtained by the leecher 50 is specified in such a manner that the set is different for each of the leechers 50. In other words, it is acceptable for the residual server 55 to transmit the uncirculated encrypted pieces to the leechers 50, respectively, in such a manner that the uncirculated encrypted piece is different for each of the leechers 50.
In the sixth embodiment described above, the residual server 55 arbitrarily determines the variation index i of the uncirculated encrypted piece E(K(i,j))[Cj] (where m+1≦i≦m′ and 1≦j≦L are satisfied) to be transmitted to the leecher 50; however, another arrangement is acceptable in which the variation index i has a fixed value or a value that is incremented according to the order in which special piece requests are received by the residual server 55. Also, in the case where a content index is assigned to the content, it is acceptable if the variation index i has a value that is calculated with a hash function by using a number of pieces of information such as the content index, the node information, and the leecher identification information. Further, it is acceptable if the value of the variation index of the uncirculated encrypted piece is determined either before or after the value of the piece index j of the uncirculated encrypted piece has been determined. Another arrangement is acceptable in which the variation index i of the uncirculated encrypted piece to be transmitted to the leecher 50 is determined in such a manner that the level of dispersion in the distribution of the number of the leechers 50 to which the uncirculated encrypted pieces are distributed becomes small.
In the sixth embodiment described above, the file information contained in the Torrent File obtained by the leecher 50 at Step S1 contains no information indicating what pieces are the uncirculated encrypted pieces. Thus, there is a possibility that the leecher 50 may obtain a circulated encrypted piece for each of the pieces C1 to CN. In that situation, an arrangement is acceptable in which, when the leecher 50 requests the circulated encrypted pieces from the seeder 52, the leecher 50 requests the encrypted pieces that correspond to the indexes other than the index that has been specified in advance as the piece index j of the uncirculated encrypted piece. Yet another arrangement is acceptable in which, if the leecher 50 has received, from the seeder 52, an encrypted piece that corresponds to the piece index j, the leecher 50 deletes the received encrypted piece.
At Step S9 shown in
In the sixth embodiment described above, in terms of the timing, the leecher 50 requests the uncirculated encrypted piece from the residual server 55 after the leecher 50 has obtained the circulated encrypted pieces for the pieces among the pieces C1 to CN other than the piece corresponding to the piece index j that has been specified in advance as the uncirculated encrypted piece; however, the present invention is not limited to this example. Another arrangement is acceptable in which the leecher 50 requests the uncirculated encrypted piece before the leecher 50 obtains the circulated encrypted pieces for the pieces C1 to CN respectively, or while the leecher 50 is obtaining the circulated encrypted pieces, or in parallel to the leecher 50's obtaining the circulated encrypted pieces.
In terms of the timing, it is acceptable for the leecher 50 to request the decryption key for decrypting the uncirculated encrypted piece from the residual server 55, after the leecher 50 has transmitted the request message to the key server 53 to request the key ring containing the decryption keys used for decrypting the circulated encrypted pieces obtained by the leecher 50 or in parallel to the leecher 50's transmitting the request message.
In the sixth embodiment described above, another arrangement is acceptable in which the request message transmitted by the leecher 50 to the residual server 55 to request the decryption key for decrypting the uncirculated encrypted piece contains at least one of the following, as the information for identifying the uncirculated encrypted piece for which the decryption key is to be used: the piece index and the variation index of the uncirculated encrypted piece; partial data of the uncirculated encrypted piece; a hash value of the partial data; a hash value of the uncirculated encrypted piece; and the identification information of the leecher 50. In this configuration, the residual server 55 reads, from the uncirculated encrypted piece storage unit 554, the decryption key for decrypting the uncirculated encrypted piece that is identified by using such contained information and transmits the read decryption key to the leecher 50.
In the sixth embodiment described above, the decryption key for decrypting the uncirculated encrypted piece is transmitted by the residual server 55; however, another arrangement is acceptable in which the key server 53 stores therein the decryption keys respectively used for decrypting the uncirculated encrypted pieces so that the leecher 50 requests, in the request message for requesting the key ring for the circulated encrypted pieces, the decryption key for decrypting the uncirculated encrypted piece that has been obtained by the leecher 50. In that situation, it is acceptable if the key server 53 is configured so as to transmit, in response to the request message, the decryption keys to the leecher 50, after the comparing process explained in the description of the first embodiment has been performed. Yet another arrangement is acceptable in which, instead of the key server 53, other communication apparatus stores therein the decryption keys used for decrypting the uncirculated encrypted pieces so that the other communication apparatus transmits the decryption keys to the leecher 50, in response to the request from the leecher 50.
In the sixth embodiment described above, the key storage unit 558 included in the residual server 55 stores therein the decryption key for decrypting the uncirculated encrypted piece; however, another arrangement is acceptable in which the residual server 55 does not include the key storage unit 558, and the uncirculated encrypted piece storage unit 554 stores therein the decryption key together with the uncirculated encrypted piece. At Step S9653, yet another arrangement is acceptable in which the uncirculated encrypted piece supplying unit 557 included in the residual server 55 reads the uncirculated encrypted piece of which the transmission has been instructed by the leecher identification information comparing unit 555 via the controlling unit 550 out of the uncirculated encrypted piece storage unit 554 and also reads the decryption key for decrypting the uncirculated encrypted piece, so that the uncirculated encrypted piece supplying unit 557 transmits the uncirculated encrypted piece and the decryption key to the leecher 50 via the network interface unit 552.
In the sixth embodiment described above, another arrangement is acceptable in which the residual server 55 further stores therein the circulated encrypted pieces, and the leecher 50 requests not only the uncirculated encrypted piece, but also the circulated encrypted pieces from the residual server 55. In that situation, in the case where the residual server 55 has judged at Step S9652 that the leecher identification information storage unit 556 does not store therein the same leecher identification information, the residual server 55 transmits, to the leecher 50, at least one of the uncirculated encrypted piece and the circulated encrypted piece that have been requested by the leecher 50.
In the first through the sixth embodiments described above, another arrangement is acceptable in which the key server 53 and the leecher 50 encrypt the data that is the target of the communication, after having performed the mutual authentication process.
In the first through the sixth embodiments described above, it is acceptable if the process of dividing the content into the pieces and the process of encrypting each of the pieces are performed by any of the tracker 51, the key server 53, and a server provided by the content creator. It is also assumed that the encrypted pieces are given to the seeder 52A (i.e., the initial seeder) by any of the tracker 51, the key server 53, and a reliable third party (e.g., a server provided by the content creator).
In the first through the sixth embodiments described above, an arrangement is acceptable in which the key server 53 itself issues and generates one or both of the encryption keys and the decryption keys. Yet another arrangement is acceptable in which the key server 53 obtains keys that have been issued or generated by the tracker 51 or a server provided by the content creator.
In the description above, each of all the pieces C1 to CN into which the content C has been divided is encrypted with a different one of the encryption keys; however, the present invention is not limited to this example. Another arrangement is acceptable in which two or more of the pieces are encrypted with mutually the same encryption key.
In the first through the sixth embodiments above, the number of trackers 51, the number of seeders 52, and the number of leechers 50 are not limited to the examples above.
In the description above, the sales server 54 is connected to the P2P network NT so that the leecher 50 obtains the Torrent File from the sales server 54; however, the sales server 54 does not necessarily have to be connected to the P2P network NT. Another arrangement is acceptable in which the leecher 50 obtains the Torrent File by, for example, reading the Torrent File recorded on a recording medium such as a CD-ROM.
Further, in the description above, the leecher 50 is connected to the key server 53 via the network; however, another arrangement is acceptable in which the leecher 50 is connected to the key server 53 via a dedicated line or via a proxy server, instead of via the network. With this arrangement, it is possible to enhance the management capability and to protect the key server, which is positioned at a stage subsequent to the proxy server, from a direct attack.
It is acceptable to combine a part or all of any of the first through the sixth embodiments. In the case where the second embodiment is combined with the third embodiment, it is a good idea to configure the seeder information, like the Torrent File, so as not to contain the information related to the specific encrypted piece stored in the key server 53.
In the first through the sixth embodiments described above, an arrangement is acceptable in which the program executed by the leecher 50 is stored in a computer connected to a network such as the Internet so that the program is provided as being downloaded via the network. Another arrangement is acceptable in which the various types of programs are provided as being recorded on a computer-readable recording medium such as a CD-ROM, a flexible disk (FD), a Compact Disk Recordable (CD-R), or a Digital Versatile Disk (DVD), in a file that is in an installable format or in an executable format. In that situation, the program is loaded into a main storage device (e.g., the RAM) when the leecher 50 reads and executes the program from the recording medium described above so that the constituent elements explained in the description of the functional configurations are generated in the main storage device. The same applies to the various types of programs implemented in the seeder 52, the various types of programs implemented in the key server 53, the various types of programs implemented in the tracker 51, and the various types of programs implemented in the residual server 55.
The communication apparatus according to claim 3, wherein the second receiving unit receives the either one of the first encrypted piece and the second encrypted piece for at least one of the pieces from among all of the first encrypted piece and the second encrypted piece indicated by the file information.
The communication apparatus according to claim 3 or 4, wherein
the second receiving unit includes:
The communication apparatus according to Other Modes of the Invention 2, wherein
the first receiving unit receives node information used for accessing a plurality of other communication apparatuses from the management server, and
in a case where the fourth receiving unit has failed to receive, by using the piece information, the one of the first encrypted piece and the second encrypted piece from the other communication apparatus, the third receiving unit accesses yet other communication apparatus by using the node information and receives the piece information from said yet other communication apparatus, and
the fourth receiving unit receives, from said yet other communication apparatus, the one of the first encrypted piece and the second encrypted piece, based on the file information, by using the piece information that has been received from said yet other communication apparatus.
The communication apparatus according to claim 7, wherein the content receiving unit includes a seventh receiving unit that receives, from the other communication apparatus, an arbitrary one of the first encrypted piece and the second encrypted piece that have been obtained by encrypting a piece other than the piece that has been encrypted so as to become the one of the first encrypted piece and the second encrypted piece specified in the received seeder information.
The communication apparatus according to claim 1, wherein
there are two or more second encrypted pieces, and the second encrypted pieces are generated by encrypting each of all the pieces with the second encryption key, and
the content receiving unit receives, for each of the pieces, one of the first encrypted piece and the second encrypted piece from the other communication apparatus.
The communication apparatus according to claim 1, wherein
the second encrypted piece is generated by encrypting one of the plurality of pieces with the second encryption key, and
the content receiving unit receives, for each of the pieces, one of the first encrypted piece and the second encrypted piece from the other communication apparatus.
The communication apparatus according to claim 5, wherein
the obtaining unit obtains, for each of the pieces, file information indicating one of (i) a correspondence relationship between a calculated value calculated through a predetermined calculation process by using the first encrypted piece and the decryption key for decrypting the first encrypted piece and (ii) a correspondence relationship between a calculated value calculated through a predetermined calculation process by using the second encrypted piece and the decryption key for decrypting the second encrypted piece,
the third receiving unit accesses the other communication apparatus and receives, from the other communication apparatus, piece information used for identifying the piece that corresponds to the one of the first encrypted piece and the second encrypted piece stored in the other communication apparatus,
the fourth receiving unit receives the one of the first encrypted piece and the second encrypted piece by using the received piece information,
the content receiving unit further includes a calculating unit that calculates a calculated value through the predetermined calculation process by using the received one of the first encrypted piece and the second encrypted piece, and
the key request transmitting unit transmits, to the key server, a request message for requesting the decryption key of which the correspondence relationship with the calculated value is indicated in the file information.
The communication apparatus according to claim 5, wherein
the obtaining unit obtains, for each of the pieces, file information indicating one of (i) a correspondence relationship between a calculated value calculated through a predetermined calculation process by using the first encrypted piece and the decryption key for decrypting the first encrypted piece and (ii) a correspondence relationship between a calculated value calculated through a predetermined calculation process by using the second encrypted piece and the decryption key for decrypting the second encrypted piece,
the third receiving unit accesses the other communication apparatus and receives, from the other communication apparatus, piece information used for identifying the piece that corresponds to the one of the first encrypted piece and the second encrypted piece stored in the other communication apparatus,
the fourth receiving unit receives, from the other communication apparatus, the one of the first encrypted piece and the second encrypted piece, based on the file information, by using the received piece information,
the content receiving unit further includes a calculated value receiving unit that receives, from the other communication apparatus, the calculated value calculated through the predetermined calculation process by using the one of the first encrypted piece and the second encrypted piece, and
the key request transmitting unit transmits, to the key server, a request message for requesting the decryption key of which the correspondence relationship with the calculated value is indicated in the file information.
The communication apparatus according to claim 5, wherein
the third receiving unit accesses the other communication apparatus and receives, from the other communication apparatus, piece information used for identifying the piece that corresponds to the one of the first encrypted piece and the second encrypted piece stored in the other communication apparatus,
the fourth receiving unit receives, from the other communication apparatus, the one of the first encrypted piece and the second encrypted piece, based on the file information, by using the received piece information,
the content receiving unit further includes a calculated value receiving unit that receives, from the other communication apparatus, the calculated value calculated through the predetermined calculation process by using the one of the first encrypted piece and the second encrypted piece, and
the key request transmitting unit transmits, to the key server, a request message for requesting the decryption key identified based on the calculated value.
The communication apparatus according to claim 12, further comprising a judging unit that judges, based on the data range specified in the partial data request, whether the partial data request is illegitimate, and
in a case where the partial data request has been judged to be illegitimate, the piece transmitting unit does not transmit, to the other communication apparatus, the data in the data range that has been specified in the partial data request.
The communication apparatus according to claim 13, wherein
the piece request transmitting unit transmits, to the communication server, the special piece request that is for requesting the one of the third encrypted piece obtained by encrypting the piece that has been assigned, in advance, to the communication apparatus and that contains the identification information.
The communication apparatus according to Other Modes of the Invention 10, wherein the content receiving unit receives, from the other communication apparatus, one of the first encrypted piece and the second encrypted piece for each of pieces among the pieces other than the piece that has been assigned, in advance, to the communication apparatus.
The communication apparatus according to claim 13, wherein
the piece request transmitting unit transmits, to the communication server, the special piece request that is for requesting one of the first encrypted piece, the second encrypted piece, and the third encrypted piece and that contains the identification information, and
the content receiving unit receives, from the other communication apparatus, the one of the first encrypted piece, the second encrypted piece, and the third encrypted piece that has been transmitted by the communication server in response to the special piece request.
The communication apparatus according to claim 13, further comprising:
a special key request transmitting unit that transmits, to the communication server, a special request message for requesting a decryption key for decrypting the received third encrypted piece; and
a special key receiving unit that receives, from the communication server, the decryption key that has been requested in the special request message.
The communication apparatus according to claim 15, further comprising a judging unit that judges, based on the data range specified in the partial data request, whether the partial data request is illegitimate, wherein
in a case where the partial data request has been judged to be illegitimate, the transmitting unit does not transmit, to the other communication apparatus, the data in the data range that has been specified in the partial data request.
The communication apparatus according to claim 15, wherein the partial data request specifies, as the data range, at least one of a starting position of the data, an ending position of the data, and a data length from the starting position of the data, within the one of the first encrypted piece and the second encrypted piece.
The communication apparatus according to claim 15, wherein
the one of the first encrypted piece and the second encrypted piece is configured so as to be divided into a predetermined number of sections of data, and a data number is assigned to each of the sections of data in advance, and
the partial data request specifies, as the data range, one or more of the data numbers assigned to the sections of data.
The communication apparatus according to claim 15, wherein the judging unit judges whether the partial data request is illegitimate by judging whether the data range specified in the partial data request is a predetermined value.
The communication apparatus according to claim 15, wherein
the one of the first encrypted piece and the second encrypted piece is kept in correspondence with a piece index used for identifying one of the pieces and a variation index used for identifying the one of the first encrypted piece and the second encrypted piece that corresponds to the piece, and
the request receiving unit receives the partial data request in which the piece index and the variation index are used to specify the one of the first encrypted piece and the second encrypted piece of which the part of the data is requested in the partial data request.
The communication apparatus according to claim 15, wherein the request receiving unit receives the partial data request in which a calculated value calculated through a predetermined calculation process by using the one of the first encrypted piece and the second encrypted piece is used for specifying the one of the first encrypted piece and the second encrypted piece of which the part of the data is requested in the partial data request.
The communication apparatus according to claim 16, further comprising a rejection transmitting unit that, in a case where the transmitting unit does not transmit the data requested in the first piece request, transmits a rejection message to the other communication apparatus.
The communication apparatus according to claim 14, wherein
in a case where the transmitting unit has received a first piece request but has not completed a transmission of a part or all of data requested in a second piece request that had been received before the first piece request was received, and an amount of data of which the transmission has not been completed is equal to or larger than a threshold value, the transmitting unit suspends a transmission of data requested in the first piece request, and
after the transmitting unit has transmitted a part or all of the data of which the transmission has not been completed in response to the second piece request, and the amount of the data of which the transmission has not been completed becomes smaller than the threshold value, the transmitting unit transmits a part or all of the data requested in the first piece request.
The key server according to claim 19, comprising a second storage unit stores therein pieces of sequence information each of which indicates a combination of the decryption keys, first identification information for identifying the communication apparatus, and number-of-times values each of which indicates how many times a corresponding one of the combinations of the decryption keys has been transmitted to the communication apparatus, while keeping these pieces of information in correspondence with one another, wherein
with respect to the decryption keys that have been requested in the request message, the receiving unit receives the index information and the first identification information for identifying the communication apparatus, from the communication apparatus, and
the determining unit determines that the decryption keys should be transmitted in a case where the second storage unit stores therein a piece of sequence information indicating a combination of the decryption keys that is same as the combination indicated in the index information, and also the number-of-times value stored in the second storage unit in correspondence with the piece of sequence information and the first identification information is equal to or smaller than a predetermined value.
The key server according to claim 20, further comprising a third storage unit that stores therein a specific encrypted piece obtained by encrypting a specific piece among the pieces, wherein
in the case where the determining unit has determined that the decryption keys should be transmitted, the key transmitting unit reads the specific encrypted piece from the third storage unit and transmits the read specific encrypted piece to the communication apparatus.
The key server according to OTHER MODES OF THE INVENTION 24, wherein in the case where the determining unit has determined that the decryption keys should be transmitted, the key transmitting unit reads, from the first storage unit, the decryption keys that are requested in the request message and each of which is used for decrypting the one of the encrypted piece and the second encrypted piece for a different one of the pieces and reads, from the first storage unit, the decryption key for decrypting one of specific encrypted pieces that is kept in correspondence with the communication apparatus, the specific encrypted pieces each having been obtained by encrypting a specific piece that constitutes a part of the content and is different from the pieces and having been kept into correspondence with the other communication apparatus and the communication apparatus, and the key transmitting unit transmits the read decryption keys to the communication apparatus.
The key server according to claim 17, further comprising a replacement identifying unit that, in a case where the determining unit has determined that the decryption keys should not be transmitted, identifies a combination of the decryption keys that is different from the combination indicated in pieces of sequence information stored in a second storage unit, wherein
in the case where the determining unit has determined that the decryption keys should not be transmitted, the key transmitting unit transmits the replacement index information that indicates the identified combination.
The key server according to claim 17, further comprising:
an obtaining unit that obtains, for each of the pieces, file information indicating one of (i) a correspondence relationship between a calculated value calculated through a predetermined calculation process by using the first encrypted piece and the decryption key for decrypting the first encrypted piece and (ii) a correspondence relationship between a calculated value calculated through a predetermined calculation process by using the second encrypted piece and the decryption key for decrypting the second encrypted piece, wherein
the receiving unit receives, from the communication apparatus, the request message that contains the calculated value calculated through the predetermined calculation process by using the one of the first encrypted piece and the second encrypted piece, and
the determining unit includes:
The communication server according to claim 26, further comprising:
a third storage unit that stores therein decryption keys used for decrypting the third encrypted pieces;
a second receiving unit that receives, from the communication apparatus, a request message for requesting one of the decryption keys; and
a second transmitting unit that transmits the one of the decryption keys requested in the request message to the communication apparatus.
A content distribution system in which a communication apparatus that receives a plurality of pieces that constitute a part of content, at least other communication apparatus, a management server that stores therein node information used for accessing the other communication apparatus, and a key server communicate with one another,
a plurality of first encrypted pieces are generated by encrypting the plurality of pieces each with a first encryption key,
one or more second encrypted pieces are generated by encrypting one or more of the plurality of pieces each with a second encryption key,
for each of the pieces, the first encryption key is different from the second encryption key,
the communication apparatus comprises:
the key server comprises:
A communication method implemented by a communication apparatus that comprises a content receiving unit, a transmitting unit, and a key receiving unit and that receives a plurality of pieces that constitute a part of content, wherein
a plurality of first encrypted pieces are generated by encrypting the plurality of pieces each with a first encryption key,
one or more second encrypted pieces are generated by encrypting one or more of the plurality of pieces each with a second encryption key,
for each of the pieces, the first encryption key is different from the second encryption key,
the content receiving unit receives, for each of the pieces, one of the first encrypted piece and the second encrypted piece from other communication apparatus, and
the transmitting unit transmits, to a key server storing therein decryption keys, a request message for requesting the decryption keys each of which is used for decrypting a corresponding one of the encrypted pieces, and
the key receiving unit receives the decryption keys that have been provided by the key server in response to the request message.
A communication method implemented by a key server that comprises a receiving unit, a determining unit, a key transmitting unit, and a storage unit storing therein decryption keys and that communicates with a communication apparatus that receives a plurality of pieces that constitute a part of content, wherein
a plurality of first encrypted pieces are generated by encrypting the plurality of pieces each with a first encryption key,
one or more second encrypted pieces are generated by encrypting one or more of the plurality of pieces each with a second encryption key,
for each of the pieces, the first encryption key is different from the second encryption key,
the communication apparatus receives, for each of the pieces, one of the first encrypted piece and the second encrypted piece from other communication apparatus,
the receiving unit receives, from the communication apparatus, a request message for requesting decryption keys each of which is used for decrypting the one of the first encrypted piece and the second encrypted piece for a different one of the pieces,
the determining unit determines whether the decryption keys should be transmitted, based on a combination of the decryption keys that has been requested in the request message, and
in a case where the determining unit has determined that the decryption keys should be transmitted, the key transmitting unit reads the decryption keys corresponding to the combination requested in the request message out of the storage unit and transmits the read decryption keys to the communication apparatus.
A communication method implemented by a management server that comprises a selecting unit, a transmitting unit, and a storage unit and that communicates with a communication apparatus that receives a plurality of pieces that constitute a part of content, wherein
a plurality of first encrypted pieces are generated by encrypting the plurality of pieces each with a first encryption key,
one or more second encrypted pieces are generated by encrypting one or more of the plurality of pieces each with a second encryption key,
for each of the pieces, the first encryption key is different from the second encryption key,
the communication apparatus receives, for each of the pieces, one of the first encrypted piece and the second encrypted piece from other communication apparatus,
the storage unit stores therein connection destination information used for accessing the other communication apparatus,
the selecting unit selects, for at least one of the pieces, the one of the first encrypted piece and the second encrypted piece that have been obtained by encrypting said at least one of the pieces, and
the transmitting unit reads the connection destination information used for accessing the other communication apparatus out of the storage unit and transmits, to the communication apparatus, the read connection destination information and seeder information specifying the one of the first encrypted piece and the second encrypted piece that has been selected.
A communication method implemented by a communication server that comprises a first storage unit, a second storage unit, a first receiving unit, and a first transmitting unit and that communicates with a communication apparatus that receives a plurality of pieces that constitute a part of content, wherein
a plurality of first encrypted pieces are generated by encrypting the plurality of pieces each with a first encryption key,
one or more second encrypted pieces are generated by encrypting one or more of the plurality of pieces each with a second encryption key,
one or more third encrypted pieces are generated by encrypting one or more of the plurality of pieces each with a third encryption key,
for each of the pieces, the first encryption key, the second encryption key, and the third encryption key are different from one another,
the communication apparatus receives, for each of the pieces, one of the first encrypted piece and the second encrypted piece from other communication apparatus,
the first storage unit stores therein the third encrypted pieces,
in a case where one of the third encrypted pieces has been transmitted to the communication apparatus, the second storage unit stores therein identification information for identifying the communication apparatus,
the first receiving unit receives, from the communication apparatus, a special piece request that is for requesting the one of the third encrypted pieces and contains the identification information for identifying the communication apparatus, and
in a case where the second storage unit does not store therein the identification information contained in the special piece request, the first transmitting unit reads the one of the third encrypted pieces from the first storage unit and transmits the read third encrypted piece to the communication apparatus.
Additional advantages and modifications will readily occur to those skilled in the art. Therefore, the invention in its broader aspects is not limited to the specific details and representative embodiments shown and described herein. Accordingly, various modifications may be made without departing from the spirit or scope of the general inventive concept as defined by the appended claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
2007-305141 | Nov 2007 | JP | national |
2008-181884 | Jul 2008 | JP | national |