1. Field of the Invention
The present invention relates to signature generation processing and signature verification processing.
2. Description of the Related Art
Recent rapid advancement and spread of computers and networks have resulted in digitization of various data, such as character data, image data, and audio data.
Digital data can be stored in perfect condition indefinitely without deterioration, such as aging. However, copying, editing, and processing can easily be performed thereon.
The copying, editing, and processing of the digital data are very useful to users, while protection of the digital data is a serious problem. Therefore, security technology rapidly increases in importance.
Accordingly, a technology called a digital signature has been proposed as a method of verifying additional falsification-proof data to enable a recipient to determine whether data transmitted to him is falsified. A digital signature technology has advantages in preventing not only data falsification but also Internet impersonation and repudiation.
Japanese Patent Application Laid-Open No. 2003-132028 has proposed a system configured to transmit digital data by preliminarily applying a digital signature technology thereto and to perform, when receiving the digital data to which a digital signature is added, verification processing on the digital signal applied thereto.
Although there are less serious problems in a case where a size of signed data to be received is small, the system described in Japanese Patent Application Laid-Open No. 2003-132028 cannot verify signed data in real time in synchronization with reception thereof especially in a case where the size of the signed data to be received is large. Also, it is necessary for verifying signed data to receive the entirety of the signed data. Thus, even when digital data or signed data is falsified, the entirety of the data should be received.
A system disclosed in U.S. Pat. No. 5,898,779 is configured to produce a digital signature that is not associated with the entire image but with a partial area of the image. This system can verify whether partial area data is falsified.
Although the system disclosed in U.S. Pat. No. 5,898,779 can verify whether partial area data is falsified, this system cannot verify association between image data and partial area data. Therefore, for example, even in a case where the partial area data is not included in the image data, or where the partial area data is a missing part of the image data, this system cannot verify validity of the image data.
An embodiment of the present invention is provided to overcome or at least mitigate the above-described problems and to enable verification of validity of signed data using received partial signed data even when the signed data is not received in its entirety.
According to a first aspect of the present invention, there is provided an information processing apparatus adapted to verify validity of signed data that includes a plurality of signed data parts. The information processing apparatus includes a signature data receiving unit, a signature data verification unit, a signed data receiving unit and a signed data part verification unit. The signature data receiving unit is adapted to receive signature data that includes a signature value and digests of a plurality of signed data parts. The signature data verification unit is adapted to verify the signature data using the signature value and the digests of a plurality of signed data parts. The signed data receiving unit is adapted to receive the signed data parts according to a result of verifying the signature data by the signature data verification unit. The signed data part verification unit is adapted to verify the signed data parts using the signed data parts and the digest of the signed data parts.
According to another aspect of the present invention, there is provided an information processing method for verifying validity of signed data that includes a plurality of signed data parts. The information processing method includes receiving signature data that includes a signature value and digests of a plurality of signed data parts, and verifying the signature data using the signature value and the digests of a plurality of signed data parts. The information processing method further includes receiving a first signed data part according to a result of verifying the signature data, and verifying the signed data part using the first signed data part and the digest of the first signed data part.
Further features of the present invention will become apparent from the following detailed description of exemplary embodiments with reference to the attached drawings.
The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate exemplary embodiments of the present invention and, together with the description, serve to describe the principles of the invention.
Exemplary embodiments of the invention will be described in detail below with reference to the drawings.
A Digital signature, a hash function, public key encryption, and a public key authentication infrastructure are briefly described below.
Digital Signature
A digital signature is described below.
In a verification step 1012, the receiver verifies whether data obtained by performing conversion (or decryption) processing on the digital signature data S, which is received in step 1010, using a public key Kp, which is set in step 1011, is matched with data obtained in step 1009 by performing, in step 1008, hash processing on the input data M, which is received in step 1007. If a result of verification shows no match in step 1013, the falsification of the data M is detected.
Public key encryption methods, such as RSA method and DSA method, which are described in detail later, are used for the digital signature. Security of the digital signature is based on computational difficulty in falsifying a signature or in decrypting a private key by an entity other than a holder of the private key.
Hash Function
Next, the hash function is described below. The hash function is utilized together with digital signature processing to irreversibly compress data to be signed, thereby reducing a signing processing time. That is, the hash function has functions of performing processing on data M having a given length, and of generating output data having a constant length. Hereunder, an output H(M) is referred to as hash data of plaintext data M.
Especially, a one-way hash function has a property that it is difficult in view of a calculation amount to calculate, when the data M is given, plaintext data M′ that satisfies the following equation: H(M′)=H(M). There are standard algorithms, such as MD2, MD5, and SHA-1, serving as the one-way hash functions.
Public Key Encryption
Next, the public key encryption is described below. The public key encryption utilizes two different keys and has a property that data encrypted by using one of the keys can be decrypted by using the other key. One of the two keys is referred to as a public key and is publicly disclosed. The other key is referred to as a private key and is known only to a party or parties that exchange secret messages.
Examples of the digital signature using the public key encryption are an RSA signature, a DSA signature, a Schnorr signature. Hereunder, the RSA signature and the DSA signature are described by way of example.
RSA Signature
First, the RSA signature is described below. Prime numbers p and q are generated. A number n is set to be a product of p and q as follows: n=pq.
Let λ(n) denote the least common multiple of (p−1) and (q−1). Then, an appropriate exponent e, which is coprime to λ(n), is selected. Also, another number d is set as follows: d=e−1 (mod λ(n)). Then, a pair of the numbers e and n is used as a public key. Also, the number d is used as a private key. In the following description, “H( )” represents a hash function. An RSA signature on a document M is generated by performing the following step. That is, signature data s is computed as follows:
s=H(M)d mod n
The RSA signature s on the document M is verified by performing the following step. That is, it is verified whether H(M)=se mod n.
DSA Signature
Next, the DSA signature is described below. Let p and q designate prime numbers. It is assumed that q is divisible by (p−1). Let g denote an element having an order q (a generator) optionally selected from Z_p* that is a multiplicative group obtained by omitting 0 from a cyclic group Z_p having an order p. It is assumed that a number x optionally selected from the group Z_p* is a private key, and that a corresponding public key y is computed as follows: y=gx mod P.
A DSA signature on the document M is generated by performing the following procedure.
Public Key Authentication Infrastructure
Next, the public key authentication infrastructure is described below. When a resource of a server is accessed in communication between a client and the server, user authentication is required. A public key certificate according to ITU-T Recommendation X.509 is frequently used as one of means for user authentication. The public key certificate represents data that assures a connection between the public key and a user thereof. A digital signature of a responsible third party called a certification authority is attached to the public key certificate. A user authentication method using SSL (Secure Sockets Layer) is performed by checking whether a user has a private key corresponding to a public key included in a public key certificate that is presented by the user.
Because the signature of the certification authority is attached to the public key certificate, the public key corresponding to a user or a server, which is included in the public key certificate, can be trusted. Therefore, in a case where the private key used by the certification authority to generate the signature thereof is revealed or is weak, all public key certificates issued by this certification authority are invalid. Some certification authorities manage an enormous number of public key certificates. Thus, to reduce a management cost, various techniques have been proposed. Exemplary embodiments of the present invention, which are described later, have advantages in suppressing the number of certificates to be issued and reducing accesses to a server serving as a public key repository.
An example of the public key certificate according to ITU (International Telecommunication Union)-T recommendation X.509 v.3 includes information on an identification (ID) and a public key of an entity (or subject) to be certified. Signature data is generated by performing a signature operation, such as the aforementioned RSA algorithm, on a digest that is obtained by applying a hash function to data to be signed.
Optional fields called “extensions” are provided in the data to be signed. Thus, this data may include new expansion data unique to an application program or to a protocol.
Image data is input to an electronic document creating apparatus 31. Key information corresponding to the image data is acquired. Also, a signature is attached to the image data. Subsequently, the image data, to which the signature is attached, is sent as an electronic document to an electronic document operating apparatus 33 through a network 32. The electronic document operating apparatus 33 verifies the image data received from the electronic creating apparatus 31. Also, the electronic document operating apparatus 33 processes, edits and prints the image data.
Next, a host computer adaptable to the present embodiment is described below with reference to
A monitor 22 shown in
A central processing unit (CPU) 23 can control each of the units provided in the host computer 21 and also can execute a program loaded into a random access memory (RAM) 25. A read-only memory (ROM) 24 can store a basic input-output system (BIOS) program and a boot program. The RAM 25 temporarily stores a program and image data to be processed in the CPU 23. An operating system (OS) program and other programs to be executed by the CPU 23 are loaded into the RAM 25.
The HD 26 is used to store the OS program and the other programs to be transferred to the RAM 25. While the unit operates, the unit causes the HD 26 to store image data, and also read the image data therefrom. A compact disk read-only memory (CD-ROM) drive 27 is enabled to read data, which is stored in a CD-ROM or a compact disk recordable (CD-R) serving as one of an external storage medium, and to write data thereto.
An FD drive 28 is enabled to read data, which is stored in an FD, and to write data thereto, similarly to the CD-ROM drive 27. A DVD-ROM/DVD-RAM drive 29 is enabled to read data, which is stored in a DVD-ROM or DVD-RAM, and to write data to a DVD-RAM, similarly to the CD-ROM drive 27. In a case where image processing programs are stored in a CD-ROM, an FD, and a DVD-ROM, these programs are installed in the HD 26. When needed, the programs are transferred to the RAM 25.
An interface (I/F) unit 211 is used to connect the host computer 21 to the NIC 210 that is adapted to connect image data, which is stored in the RAM 25, the HD 26, the CD-ROM 27, the FD 28, and the DVD 29, to a network, such as the Internet. The host computer 21 transmits data to the Internet through the I/F unit 211, and receives data from the Internet through the I/F unit 211.
An I/F unit 215 is used to connect the mouse 213 and the keyboard 214 to the host computer 21. Various instructions are input from the mouse 213 and the keyboard 214 to the CPU 23 through the I/F unit 215.
Electronic Document Creation
Next, an electronic document creating unit adaptable to the present embodiment is described below.
The electronic document creating apparatus 31 includes a paper document input unit 44 adapted to input data of a paper document 43, an intermediate electronic document creation unit 45 adapted to analyze the paper document 43 and to create an intermediate electronic document, a signature data generation unit 47 adapted to generate signature data from the intermediate electronic document and a private key input from a private key input unit 46, an electronic document archive unit 49 adapted to create an electronic document by integrating the intermediate electronic document and the signature data, and an electronic document transmission unit 410 adapted to transmit the electronic document to the electronic document operating apparatus 33.
First, the intermediate electronic document creation unit 45 is described in detail below.
In step S51, data obtained from the paper document input unit 44 is computerized.
A practical example of the technique for dividing the electronic data into regions is described in U.S. Pat. No. 5,680,478. In this example, sets of blocks of black pixels and blocks of white pixels in a document image are extracted. Then, according to feature quantities, such as shapes, sizes, and conditions of the sets, regions respectively named “character”, “graphic”, “diagram”, “table”, “frame” and “line” are extracted.
For instance,
Subsequently, in step S53, document information corresponding to each of the regions obtained in the precedent step. The “document information” includes attribute information, layout information which represents, for example, the position coordinate of a page, and document logical structure information which represents a character code string, a paragraph, and a title in a case where the attribute of the region is, for example, “character”.
In step S54, transmitted information is converted corresponding to each of the regions obtained in the precedent step. The “transmitted information” is information needed for rendering. More specifically, for example, file sizes of variable-resolution raster images, vector images, monochrome images, or color images, into which the regions are converted. For instance, in a case where the attribute of the regions obtained by dividing the image data is “character”, the transmitted information includes information on texts obtained as a result of character recognition, positions and fonts of individual characters, and degrees of reliability of characters obtained by character recognition.
The regions shown in
Subsequently, in step S55, the regions obtained in step S52, the document information generated in step S53, and the transmitted information converted in step S54 are associated with one another. The associated pieces of information are described as having a tree structure.
In step S56, the data, which have been generated in the precedent step and before then, are stored as an intermediate electronic document. As long as the tree structure can be represented, any format of documents to be stored can be employed. The present embodiment employs an XML format that is an example of a structured document format.
Next, the signature data generation unit 47 is described in detail below.
First, in step S61, a digest value of the partial signed data is generated corresponding to each of the plurality of partial signed data. The partial signed data is data to be signed, which is included in an intermediate electronic document. The partial signed data includes transmitted information a 121, transmitted information b 122, and document information 123 shown in
Subsequently, in step S62, identification information on the partial signed data is generated corresponding to each of the plurality of partial signed data. As long as the partial signed data can uniquely be identified according to the identification information, any information may be employed as the identification information. According to the present embodiment, a uniform resource identifier (URI) according to Request for Comments (RFC) 2396 is employed as the identification information corresponding to the partial signed data. However, the identification information according to the present invention is not limited thereto. Various values may be applied to the identification information. Each of the plurality of the partial signed data has identification information. According to the identification information, the partial signed data corresponding thereto can be identified.
In step S63, it is determined whether processing in steps S61 and processing in step S62 are performed on all of signed data that are objects to be signed. In a case where the processing in steps S61 and the processing in step S62 have been performed on all of the signed data, the process proceeds to step S64. Otherwise, the process returns to step S61.
In step S64, a digest value of signed data is generated by applying a hash function to digest values of the plurality of partial signed data, which are generated in step S61, and the identification information of each of the plurality of partial signed data, which is generated in step S62. Then, signature processing is performed on the digest values generated in step S64 using a private key. Thus, signature values are calculated. According to the present embodiment, a digital signature is employed to calculate the signature values.
Subsequently, in step S65, signature data is generated using the digest values of the plurality of the partial signed data, which are generated in step S61, the identification information corresponding to each of the plurality of partial signed data, which is generated in step S62, and the signature values generated in step S64. Then, the signature generation process is finished.
The signature data according to the present embodiment is described below with reference to
In the example shown in
The identification information 75 corresponding to the partial signed data 1, and the identification information 77 corresponding to the partial signed data 2 shown in
Next, the electronic document archive unit 49 is described below with reference to
Information 121 and information 122 are the transmitted information corresponding to an intermediate electronic document generated in the intermediate electronic document creation unit 45. Information 123 is document information corresponding thereto. Signature data 124 is generated in the signature data generation unit 47. As described above, the signature data includes pieces of identification information, which indicate the transmitted information corresponding to the partial signed data, and the document information, respectively. As shown in
As shown in
The information 121, the information 122, the information 123, and the data 124 shown in
Electronic Document Operation
Next, the electronic document operating apparatus 33 adaptable to the present embodiment is described below.
The electronic document operating apparatus 33 according to the present embodiment includes a transmitter-receiver unit 132, a public key input unit 133, a signature verification unit 134, a control unit 131, an output unit 135, an operating unit 136.
An electronic document received by the transmitter-receiver unit 132 is the same data as the electronic document 411 transmitted by the electronic document creating apparatus 31 shown in
The public key input unit 133 inputs key data corresponding to the private key used in the signature data generation unit 47 in the electronic document creating apparatus 31 (
The signature verification unit 134 verifies a signature included in the input electronic document using the key data input by the public key input unit 133. Also, the signature verification unit 134 controls the control unit 131 according to a result of verification of the signature.
The control unit 131 controls transmission and reception of data to and from the transmitter-receiver unit 132. Alternatively, the control unit 131 controls an operation of outputting a received electronic document to the output unit 135. Alternatively, the control unit 131 controls processing and editing of a received electronic document at the operating unit 136.
Hereinafter, a signature verification process and a control process to be performed in the signature verification unit 134 are described in detail.
First, in step S81, the signature verification unit 134 receives signature data that is the signature data 71 shown in
Subsequently, in step S82, the verification of the signature data is performed using the received signature data. A signature data verification process is described below in detail with reference to
First, in step S141, a digest value of the signature data is calculated from identification information of the partial signed data and the digest value of the partial signed data, which are included in the signature data received in step S81, by using the hash function. In the case of the example shown in
Subsequently, in step S142, a signature value included in the signature data received in step S81 is decrypted using the public key input by the public key input unit 133. For instance, in the case of the example shown in
Then, in step S143, the digest value generated in step S141 is compared with the value obtained by decryption in step S142.
Subsequently, in step S83 (
In step S84, the control unit 131 controls the electronic document operating apparatus 33. In the present embodiment, the control unit 131 issues an instruction that causes the electronic document creating apparatus 31 to stop data transmission/reception. The control unit 131 controls the transmitter-receiver unit 132 so that the electronic document operating apparatus 33 does not perform a data receiving process.
A method of controlling the apparatus according to the present embodiment is not limited thereto. The apparatus can be controlled by various methods. For example, the control unit 131 may transmit an instruction to the electronic document creating apparatus 31 so that the instruction causes the apparatus 31 to perform retransmission of the signature data and that the control unit 131 performs verification of the signature data again using the retransmitted signature data. This control operation is performed by considering a case where first transmission of the signature data may be unsuccessful due to a transmission error occurring in the middle of a transmission line, and where the verification of the signature data is performed again. The control unit 131 may cause the electronic document operating apparatus 33 to perform an operation of stopping reception of the signature data in a case where the retransmission of the signature data is performed a predetermined number of times, and where the verification has failed a predetermined number of times.
An example of another operation of controlling the apparatus is to control the output unit 135 so that only in a case where the verification of the signature data is successful, the data is output to, for instance, a printer or a display unit, and in a case where the verification thereof has failed, the data is not output.
Alternatively, the operating unit 136 may be controlled so that the edition and the processing of the data are performed only in a case where the verification of the signature data is successful, and that the edition and the processing of the data cannot be performed in a case where the verification thereof is unsuccessful.
Meanwhile, in step S85, the signature verification unit 134 receives the partial signed data. The partial signed data corresponds to the partial signed data 1 (72) or the partial signed data 2 (73) shown in
Subsequently, in step S86, the verification of the partial signed data is performed using the received partial signed data. The verification of the partial signed data according to the present embodiment is described in detail below with reference to
First, in step S151, the signature verification unit 134 calculates a digest value of the partial signed data from the partial signed data received in step S85 using the hash function.
Then, in step S152, the signature verification unit 134 compares the digest value generated in step S151 with the digest value included in the signature data received in step S81. At that time, the data to be signed, which corresponds to the partial signed data, can be verified according to the identification information of the partial signed data included in the signature data.
Subsequently, in step S87 (
Then, in step S88, it is determined whether all of the partial signed data are received. If not, the process returns to step S85. Otherwise, the verification process is finished.
An example of the above-described signature data verification process is described below with reference to
First, as shown in
As illustrated in
According to the present embodiment, the verification of the signature data is unsuccessful, for example, in a case where the data is not signed by a rightful holder of a private key corresponding to a public key (that is, a case where an electronic document is falsified). Alternatively, in a case where the digest value of the partial signed data included in the signature data is falsified, or where the identification information of the partial signed data is falsified, the verification of the signature data is unsuccessful. In such a case, the apparatus is controlled, as described above. Consequently, the necessity for receiving the falsified partial signed data resulting in unsuccessful verification of the signature data can be eliminated. Thus, the present embodiment is efficient.
Also, a signature value is generated by arranging the digest values of and pieces of the identification information respectively corresponding to the partial signed data in the order of receiving the partial signed data at a reception unit side. The present embodiment can verify whether there is a missing piece of the partial signed data, and whether the partial signed data are received in a correct order.
Furthermore, for example, in a case where the partial signed data is falsified, the verification of the partial signed data is unsuccessful. In this case, according to the present embodiment, the apparatus is controlled, as described above. Consequently, the need for receiving the subsequent partial signed data is eliminated. Thus, the present embodiment is efficient.
According to the first embodiment, the verification of signature data is performed by first receiving the signature data. Subsequently, the verification of the partial signed data is performed. According to a second embodiment, signature data is partially received. Then, an apparatus is controlled while it is verified whether a piece of the partial signed data is deleted, and whether the order, in which the received partial data are arranged, is falsified. Although the first embodiment describes the example of the electronic document including a plurality of components (that is, pieces of document information and transmitted information), moving image data, whose partial data respectively have sequence numbers, is employed by way of example in the following description of the second embodiment.
Overall Structure
Referring first to
As shown in
The image reproduction client 340 transmits a desired-image-data acquisition request to the image distribution server 310. Subsequently, the image reproduction client 340 reproduces image data distributed from the image distribution server 310 through the network 330. In the present embodiment, the image reproduction client 340 receives, in addition to the image data, the verification data corresponding to the image data. Then, the image reproduction client 340 verifies whether the image data is falsified.
The image distribution server 310 and the image reproduction client 340 are connected to each other through a network 330, such as the Internet. The image distribution server 310 and the image reproduction client 340 can exchange various data. Each of the image distribution server 310 and the image reproduction client 340 may be constituted by a general-purpose apparatus, such as an ordinary personal computer. A process flow is briefly described below.
A user utilizes the image reproduction client 340 and requests desired image data from the image distribution server 310. The image distribution server 310 acquires image data, which is requested by the image reproduction client 340, from the image DB 320 and divides the acquired image data into partial data. Simultaneously, the image distribution server 310 generates verification data corresponding to the partial data obtained by the division. Then, the image distribution server 310 transmits the partial data and the generated verification data sequentially to the image reproduction client 340. The image reproduction client 340 receives the partial data and the verification data, and utilizes the verification data to verify whether the received partial image data is correct. Also, the image reproduction client 340 reproduces the received partial data and deletes the partial data upon completion of reproduction thereof.
Thus, the outline of the system according to the present embodiment has been described above.
The basic configuration of the host computer functioning as the image reproduction client and the image distribution server according to the present embodiment are similar to that of the host computer shown in
Verification Data Generation Process
Next, the verification data generation unit adaptable to the present embodiment is described below with reference to
The verification data generation function illustrated in
First, the input unit 410 is described below. Image data D is input from the image DB 320 to the input unit 410. The input unit 410 outputs the input image data D.
In the present embodiment, moving image data according to Motion JPEG (Joint Photographic Experts Group) or Motion JPEG 2000, the respective frames of which are respectively compression-coded independent of one another, is employed as the image data D. However, image data, to which the present embodiment is applied, is not limited thereto. Various compression-coding methods utilizing an inter-frame correlation, such as an MPEG (Moving Picture Experts Group), can be employed as the image data D.
Next, the division unit 420 is described below. The image data D output from the input unit 410 is input to the division unit 420. The division unit 420 divides the image data D into a plurality of partial image data Di. Then, the division unit 420 outputs the partial image data Di obtained by the division.
It is assumed that the image data D is divided into frames according to the present embodiment. That is, the partial image data Di represents each of frame data included in the image data D. However, the partial image data Di according to the present embodiment is not limited thereto. The image data D may be divided into optional units of data. Each partial image data Di may be, for example, a set of a plurality of frames. It is assumed that according to the present embodiment, the partial image data have predetermined sequence numbers arranged in the order of frames.
Next, the key acquiring unit 430 is described below. The key acquiring unit 430 acquires key information K needed for verification data generation in the verification data generation unit 440, which will be described later, and outputs the key information K.
According to the present embodiment, the key information K acquired by the key acquiring unit 430 is assumed to be safely shared by the image distribution server 310 and the image reproduction client 340.
Next, the verification data generation unit 440 is described below. The partial image data Di output from the division unit 420 provided in the precedent stage and the key information K output from the key acquiring unit 430 are input to the verification data generation unit 440. The verification data generation unit 440 generates verification data VD0 corresponding to the partial image data Di by utilizing the key information K. Then, the verification data generation unit 440 outputs the generated verification data VD0.
The verification data generation process is performed only once and only on the first piece of the partial image data, which are obtained by the division unit 420. That is, according to the present embodiment, the verification data VD0 is generated only on the first frame D0.
According to the present embodiment, the verification data VD0 is calculated as follows:
VD0=F(K,D0) (equation 1)
F(x, y) represents generation of verification data with respect to data y using a key x.
According to the present embodiment, an HMAC (Hash-based Message Authentication Code) is applied to the verification data generation F(x, y). The HMAC is known to those skilled in the art. Therefore, the detailed description of the HMAC is omitted herein. Although a method utilizing the HMAC is described as a method of performing verification data generation in the present embodiment, the method of performing verification data generation according to the present invention is not limited thereto. Various MAC generation algorithms, such as for example a CMAC (Cipher-based Message Authentication Code) generation algorithm, can be applied.
Next, the verification data holding unit 450 is described below. The verification data VD0 generated by the verification data generation unit 440 provided in the precedent stage, or verification data VDi (or verification data VDi corresponding to current partial data Di) generated in the hash value generation unit 460 (to be described later) is input to the verification data holding unit 450. The verification data holding unit 450 once holds the data input thereto. Then, the verification data holding unit 450 outputs the held hash value VDi-1 (that is, the verification data VDi-1 corresponding to the precedent partial data Di-1) to the hash value generation unit 460.
That is, the verification data holding unit 450 serves as a temporary storage buffer adapted to once hold the hash value VDi generated in the hash value generation unit 460 (or the verification data VD0 generated in the verification data generation unit 440) and to provide the held hash value VDi (or the verification data VD0) to the hash value generation unit 460.
Next, the hash value generation unit 460 is described below. The partial image data Di obtained by the division in the division unit 420, which is provided in the precedent stage, and the verification data VDi-1 held in the verification data holding unit 450 are input to the hash value generation unit 460. Then, the hash value generation unit 460 generates a hash value VDi according to the partial data Di and the verification data Di-1. Subsequently, the hash value generation unit 460 outputs the generated hash value VDi.
According to the present embodiment, the hash value VDi is calculated as follows.
VDi=H(VDi-1∥Di) (equation 2)
H( ) represents a hash function. Also, the expression “x∥y” represents a link of x and y.
In the present embodiment, a hash function for use in generation of a hash value is not limited thereto. Various hash functions, such as MD5 and SHA-1, can be employed.
Next, the output unit 470 is described below. The output unit 470 outputs the verification data VDi generated by the hash value generation unit 460 (alternatively, the verification data VD0 generated in the verification data generation unit 440 provided in the preceding stage) and the partial data Di obtained by the division unit 420 by performing the division.
According to the present embodiment, the output unit 470 is adapted to output these data to the image reproduction client 340 (see
The output unit 470 outputs the verification data VDi and the partial data Di so that the verification data VDi and the partial data Di can be associated with each other by the image reproduction client 340. An example of the form of output data in the present embodiment is described below with reference to
Next, the above-described verification data generation process is described below with reference to
First, in step S610, the image data D input by the input unit 410 is divided by the division unit 420 shown in
Subsequently, in step S630, if i=0, the verification data VDi is calculated according to the equation 1 by the verification data generation unit 440. If i>0, the verification data VDi is calculated according to the equation 2 by the hash value generation unit 460. In step S640, the value of the (i−1)th verification data VDi-1 needed for generating the i-th verification data VDi, which is calculated in step S630, is held in the temporary storage buffer (that is, in the verification data holding unit 450).
In step S650, the partial data Di and the verification data VDi are output by the output unit 470 shown in
Verification Process and Method
Next, the verification process applicable to the present embodiment is described below with reference to
The verification function illustrated in
First, the input unit 710 is described below. Partial data D′i and verification data VDi are input to the input unit 710. The partial data D′i and verification data VDi are the data output by the output unit 470 shown in
Next, the key acquiring unit 720 is described below. The key acquiring unit 720 acquires key information K needed for verification data generation in the verification data generation unit 730. Then, the key acquiring unit 720 outputs the acquired key information K.
The key information K acquired by the key acquiring unit 720 is the same as that acquired by the key acquiring unit 430 shown in
Next, the verification data generation unit 730 is described below. The partial data D′i input by the input unit 710 and the key information K acquired by the key acquiring unit 720 are input to the verification data generation unit 730. Verification data VD′0 is generated from the partial data D′i using the key information K by the verification data generation unit 730. Then, the generated verification data VD′0 is output therefrom.
The verification data generation process performed by the verification data generation unit 730 is similar to the verification data generation process, which is performed by the verification data generation unit 440 using the equation 1.
Next, the verification data holding unit 740 is described below. The verification data VD0 generated by the verification data generation unit 730 provided in the precedent stage or the verification data VDi generated by the hash value generation unit 750 that will be described later (that is, the verification data VDi corresponding to current partial data Di) is input to the verification data holding unit 740. The verification data holding unit 740 holds the input data. Then, the hash value VDi-1 held by the verification data holding unit 740 (that is, the verification data Vdi-1 corresponding to the precedent partial data Di-1) is output therefrom to the hash value generation unit 750.
Next, the hash value generation unit 750 is described below. The partial data Di input by the input unit 710 provided in the preceding stage and the verification data VDi-1 held by the verification data holding unit 740 are input to the hash value generation unit 750. Then, the hash value generation unit 750 generates the hash value VDi according to the partial data Di and the verification data VDi-1. The generated hash value VDi is output therefrom.
The hash value generation process performed in the hash value generation unit 750 is the same as the hash value generation process that is performed by the hash value generation unit 460 (
Next, the judgment unit 760 is described below. The judgment unit 760 compares the verification data VD′i output from the hash value generation unit 750 provided in the preceding stage with the verification data VDi output from the input unit 710. Then, the judgment unit 760 outputs a result of the verification.
In the present embodiment, if the value VDi is equal to the value VD′i, it is determined that the partial data Di is correct (that is, the verification is successful). Conversely, if the value VDi differs from the value VD′i, it is determined that the partial data D′i is incorrect (that is, the verification is unsuccessful).
In the present embodiment, a result of the judgment made by the judgment unit 760 is displayed on the screen of the monitor 22. If it is determined that the verification is unsuccessful, the partial data reproduction unit 770 that will be described later is caused to stop a partial data reproduction process and the subsequent partial data reproduction process. Consequently, the reproduction of the falsified image data (that is, the image data the verification of which is unsuccessful) can be prevented.
Next, the partial data reproduction unit 770 and the partial data erasing unit 780 are described below. The partial data D′i input by the input unit 710 is input to the partial data reproduction unit 770. Then, the partial data D′i is reproduced on the screen of the monitor 22. After the partial data D′i is reproduced by the partial data reproduction unit 770, the partial data D′i is immediately deleted by the partial data erasing unit 780 provided in the subsequent stage. That is, the partial data D′i is not held in the image reproduction client 340.
Next, the flow of the above-described verification process is described below with reference to
First, in step S810, the parameter i is initialized.
The parameter i is used to specify the partial data Di. Then, the verification data VDi and the partial data D′i are input to the input unit 710 shown in
Subsequently, in step S830, if i=0, the verification data VDi is calculated according to the equation 1 by the verification data generation unit 730. If i>0, the verification data VDi is calculated according to the equation 2 by the hash value generation unit 750 shown in
After the verification data VDi is generated, it is determined by the judgment unit 760 shown in
Then, in step S880, it is determined whether the parameter i is equal to or less than (N−1). Incidentally, N is a total number of the partial data Di included in image data D. If the parameter i is equal to or less than (N−1), the parameter i is increased by 1 in step S890. Subsequently, the process returns to step S820. Otherwise, the verification data generation process is finished.
Example of Result of Verification
Hereinafter, the above-described verification data generation process and actual examples of the result of the verification process are described.
First, a result of the verification, which is performed in a case where a digital signature is generated corresponding to each of the partial data using a conventional method, is described below.
As shown in
Hereunder, examples 232 to 235 of the digital signatures VDi and the partial data D′i, which are received by the client, are described in sequence.
The example 232 corresponds to a case where all of the partial data D′i and the digital signatures VDi transmitted from the server are not falsified at a middle part of the network and are distributed to the client. In this case, as illustrated in
The example 233 corresponds to a case where, among the partial data Di, the partial data D′0, D′1, D′3, and D′4 are distributed to the client without being falsified, and where the partial data D*2 is distributed while being falsified at a middle part of the network. In this case, when the verification process is performed by using the partial data D′0, D′1, D′3, and D′4 and the received digital signatures VD0, VD1, VD3, and VD4, the verification is successful. Conversely, because the partial data D*2 is falsified, in a case where the verification is performed using the received partial data D*2 and the received digital signature VD2, the verification is determined to be unsuccessful.
The example 234 corresponds to a case where, among the partial data Di, the partial data D′0, D′2, D′3, and D′4 are distributed to the client without being falsified, and where only the partial data D′1 is not distributed. In this case, when the verification process is performed by using the partial data D′0, D′2, D′3, and D′4, which are not falsified, and the received digital signatures VD0, VD2, VD3, and VD4, the verification is successful. That is, although the partial data D′1 is not received, no verification is performed on the partial data D′1 according to this method. Thus, the verification is not determined to be unsuccessful.
The example 235 corresponds to a case where, among the partial data Di, the partial data D′0, D′1, and D′4 are distributed to the client without being falsified, and where the partial data D′3 and D′2 are distributed in an inverse order. In this case, when the verification process is performed by using the partial data D′0, D′1, and D′4, which are not falsified, and the received digital signatures VD0, VD1, and VD4, the verification is successful. Although the partial data D′3 and D′2 are distributed in an inverse order, when the verification is performed using the partial data D′3 and D′2 and the received digital signatures VD3 and VD2, the verification is determined to be successful.
Hereunder, examples 242 to 245 of the partial data D′i and the digital signatures VDi, which are received by the image reproduction client 340, are described in sequence.
The example 242 corresponds to a case where all of the partial data D′i and the digital signatures VDi distributed from the image distribution server 310 are not falsified at a middle part of the network and are distributed to the image reproduction client 340. In this case, as illustrated in
The example 243 corresponds to a case where, among the partial data Di transmitted from the image distribution server 310, the partial data D′0 and D′1 are distributed to the image reproduction client 340 without being falsified, and where the partial data D*2 is distributed while being falsified at a middle part of the network. In this case, the digital signatures VD′0 and VD′1 generated from the partial data D′0 and D′1 are matched with the received digital signatures VD0 and VD1, so that the verification is successful. Conversely, because the partial data D*2 is falsified, the verification data VD′2 generated from the partial data D*2 is not matched with the received verification data VD2. Consequently, at the time of the verification using the partial data D*2, the verification is determined to be unsuccessful.
The example 244 corresponds to a case where, among the partial data Di transmitted from the image distribution server 310, the partial data D′0, D′2, D′3, and D′4 are distributed to the image reproduction client 340 without being falsified, and where only the partial data D′1 is not distributed. In this case, when the verification data VD′0 generated from the partial data D′0, which is not falsified, is matched with the received verification data VD0, the verification is successful. Conversely, because the partial data D′1 is not received, the partial data distributed subsequently to the partial data D′0 is the partial data D′2. Thus, although the partial data D′2 is not falsified, the associated verification data VD′2 is generated from the precedent verification data VD′0. Consequently, the value of the verification data VD′2 generated in this manner differs from that of the received verification data VD2. Thus, at the verification of the partial data D′2, the verification can be determined to be unsuccessful. That is, according to the present embodiment, it can be determined that the partial data has been deleted at a middle point of the network. This cannot be determined by a conventional method.
The example 245 corresponds to a case where, among the partial data Di transmitted from the image distribution server 310, the partial data D′0, D′1, and D′4 are distributed to the client without being falsified, and where the partial data D′3 and D′2 are distributed in an inverse order. In this case, the verification data VD′0 and VD′1 respectively generated from the partial data D′0 and D′1, which are not falsified, are matched with the received verification data VD0 and VD1, so that the verification is successful. However, although the partial data D′2 should be distributed, the partial data D′3 is distributed. Thus, the verification data VD′2 generated from the received partial data D′3 and the received precedent verification data VD′1 differs from the received verification data VD2. Consequently, at the time of the verification of the partial data VD2, the verification can be determined to be unsuccessful. That is, it can be detected that an order, in which the partial data are distributed, has been falsified. This cannot be achieved according to a conventional method.
According to the present embodiment, even when the reception of all of the partial data (that is, the entire image data D) is not completed, whether received partial data Di is falsified can be verified at the timing at which the partial data Di is received. In addition to the falsification of the received partial data Di, it can be determined whether the partial data Dj to be distributed before the partial data Di is distributed is deleted (j<i), and whether the partial data Di are distributed in a correct order. Also, it is sufficient to perform the verification data generation process only on the first partial data D0 at the verification data generation unit 440 shown in
Hereinafter, modifications of the present embodiment are described below. The description of components of each of the modifications, which are similar to the corresponding components of the present embodiment, is omitted.
First Modification
The present embodiment is adapted so that the verification data VDi respectively corresponding to the partial data Di are transmitted together with the partial data Di, as illustrated in
Second Modification
The present embodiment is adapted so that the verification is repeatedly performed until the verification of a total number N of the partial data Di included in the image data D is completed, as described in step S660 shown in
Third Modification
The present embodiment has described the example in which a MAC is used as the verification data. The verification data according to the present invention is not limited thereto. Various verification data can be employed. Hereunder, digital signature data can be employed as the verification data.
The verification data generation process in the case of employing the digital signature data as the verification data is similar to that illustrated in
Next, the verification process in the case of employing the digital signature data as the verification data is described below with reference to
As illustrated in
As shown in
Next, the verification process in the case of employing the digital signature data as the verification data is described below with reference to
First, in step S1410, the parameter i is initialized. The parameter i is used to specify the partial data Di. Then, in step S1420, the input unit 1310 shown in
Subsequently, in step S1430, the verification data generation unit 1330 shown in
After step S1430, the judgment unit 1360 shown in
Then, in step S1470, the parameter i is increased only by 1. In step S1480, the hash value generation unit 750 calculates the verification data VDi using the equation 2.
The digital signature generation process and the process of verification of the signature are known techniques. Thus, the detailed description of these processes is omitted. The algorithms for the digital signature process and the verification process according to the present invention are not limited to specific ones. Various digital signature generation algorithms, such as RSA and DSA, can be employed.
The second embodiment has described the example in which the image data D is sequentially distributed from the image distribution server 310 to the image reproduction client 340 from the leading partial data (that is, the data D0) included in the image data D that is held in the image DB 320. However, the manner of distribution of the image data according to the present invention is not limited thereto. The image data D can be distributed from desired partial data included in the image data D (that is, a cue/play function can be performed). Thus, a third embodiment describes a case where the image data D is distributed from the desired partial data thereof.
The configuration of a system according to the present embodiment is similar to that described in the description of the second embodiment with reference to
First, the verification data generation unit applicable to the present embodiment is described below with reference to
First, the designation unit 1580 is described. The designation unit 1580 designates a parameter M indicating predetermined partial data and outputs the parameter M. The parameter M indicating desired partial data, which is designated by a user using the keyboard 214 or the mouse 213, is transmitted to the image distribution client 310.
Next, the output unit 1570 is described below. The partial data Di, the verification data VDi, and the parameter M are input to the output unit 1570. It is determined according to the parameter M whether the partial data Di and the verification data VDi are output. The partial data Di and the verification data VDi are output according to a result of the determination.
In the present embodiment, in a case where M=i, the output unit 1570 outputs the partial data Di, the verification data VDi, and the verification data VDi-1 provided in the precedent stage. In a case where M≧i, the output unit 1570 outputs the partial data Di and the verification data VDi. In a case where M<i, the output unit 1570 outputs no data.
Meanwhile, according to the present embodiment, the verification process performed in the image reproduction client 340 is similar to the verification process described in the second embodiment with reference to
Next, the verification data generation process and the verification process according to the present embodiment are described below.
First, the verification data generation process according to the present embodiment is described below with reference to
Steps shown in
After the verification data VDi is generated in step S630, it is determined in step S1050 whether the parameter i is larger than the parameter M. The parameter M is a parameter specifying the first partial data DM of the image data D, which is designated by the image reproduction client 340. That is, the partial data subsequent to the partial data DM is sequentially distributed to the image reproduction client 340 from the image distribution server 310. If the parameter i is larger than the parameter M, the process proceeds to step S1070. In step S1070, the output unit 1570 shown in
Subsequently, in step S1060, it is determined whether the parameter i is equal to the parameter M. If the parameter i is equal to the parameter M, the process proceeds to step S1080. In step S1080, the output unit 1570 shown in
As described above, if the parameter i<the parameter M, the verification data VDi is generated but is not output. If the parameter i=the parameter M, the partial data Di, the corresponding verification data VDi, and the verification data VDi-1 are output. Subsequently, if the parameter i>the parameter M, the partial data Di and the verification data VDi are output.
Next, the verification process according to the present embodiment is described below with reference to
The description of steps shown in
In step S291, the parameter i is initialized to the value of the parameter M. Subsequently, in step S292, the input unit 710 shown in
On the other hand, in step S294, the input unit 710 shown in
As described above, in the present embodiment, the partial data Di subsequent to the partial data DM is distributed from the image distribution server 310 to the image reproduction client 340. The image reproduction client 340 performs the verification process on the partial data subsequent to the partial data DM. In step S293, only in a case where the parameter i=the parameter M, the partial data D′i, and the verification data VDi and VDi-1 are received to generate associated verification data VD′i. Conversely, in a case where the parameter i>the parameter M, similarly to the second embodiment, only the partial data D′i and the verification data VDi are received in step S294.
Practical examples of the verification data generation process and the verification process are described below.
As illustrated in
Meanwhile, when the partial data D2 (the first one of the partial data requested by the image reproduction client 340) is distributed, the verification data VD1 generated in the precedent stage is transmitted in addition to the verification data VD2. Then, the image reproduction client 340 generates verification data VD′2 from the received partial data D′2 and the verification data VD1. Subsequently, the image reproduction client 340 compares the verification data VD′2 with the received verification data VD2. Thus, it can be verified whether the received partial data D′2 is correct.
When the partial data D3 and D4 are distributed, the verification data VD3 and VD4 respectively corresponding to the partial data D3 and D4 are distributed. Thus, the image reproduction client 340 can verify whether the received partial data D′3 and D′4 are correct.
As described above, according to the present embodiment, even when the image data D is distributed from a middle part thereof, it can be verified whether the distributed partial data is falsified, and whether the order, in which the distributed partial data are arranged, is falsified.
According to the first to third embodiments, even when all of the signed data are not received, the validity of the received signed data can be verified using the partial signed data received.
Although the above-described embodiments include hardware or the like constituting a network, each processing unit can actually be implemented by software. That is, the present invention can also be achieved by supplying a storage medium (or recording medium), in which software program code that realizes the functions of the above-described embodiments is stored, to a system or apparatus and by then causing a computer (or CPU or MPU) of the system or the apparatus to read and execute the program code stored in the storage medium. In this case, the program code itself read from the storage medium achieves the functions of the above-described embodiments. The storage medium, in which the program code is recorded, is also encompassed by the present invention. In an example, the present invention can be achieved by a non-transitory computer-readable storage medium which stores a program that when loaded into a computer and executed causes the computer to perform an information processing method of the above-described embodiments.
The case of achieving the present invention is not limited to the case of achieving the functions of the above-described embodiments by executing the program code, which is read by the computer, but includes a case where an operating system (OS) or the like, which is running on the computer, performs part or all of actual processing according to an instruction by the program code to thereby achieve the functions of the above-described embodiments. This case is also covered by the present invention.
Also, the case of achieving the present invention includes a case where the functions of the above-described embodiments are achieved after the program code read from the storage medium is stored in a memory provided in a function expansion board inserted into the computer or a function expansion unit connected to the computer. That is, the case of achieving the present invention also includes a case where a CPU or the like provided in the function expansion board or unit performs part or all of the actual processing according to an instruction from the program code to thereby achieve the functions of the above-described embodiments. This case is also covered by the present invention.
While the present invention has been described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. The scope of the following claims is to be accorded the broadest interpretation so as to encompass all modifications, equivalent structures, and functions.
This application claims priority from Japanese Patent Applications No. 2005-214529 filed Jul. 25, 2005, and No. 2005-260884 filed Sep. 8, 2005, which are hereby incorporated by reference herein in their entirety.
Number | Date | Country | Kind |
---|---|---|---|
2005-214529 | Jul 2005 | JP | national |
2005-260884 | Sep 2005 | JP | national |
Number | Name | Date | Kind |
---|---|---|---|
5898779 | Squilla et al. | Apr 1999 | A |
5907619 | Davis | May 1999 | A |
5995626 | Nishioka et al. | Nov 1999 | A |
6311271 | Gennaro et al. | Oct 2001 | B1 |
6523114 | Barton | Feb 2003 | B1 |
6785815 | Serret-Avila et al. | Aug 2004 | B1 |
7570764 | Morgan | Aug 2009 | B2 |
20030105950 | Hirano et al. | Jun 2003 | A1 |
20040181756 | Berringer et al. | Sep 2004 | A1 |
20050091545 | Soppera | Apr 2005 | A1 |
20050235154 | Serret-Avila | Oct 2005 | A1 |
20060136723 | Taylor | Jun 2006 | A1 |
20060136728 | Gentry et al. | Jun 2006 | A1 |
20070217763 | Siemens et al. | Sep 2007 | A1 |
Number | Date | Country |
---|---|---|
1267515 | Dec 2002 | EP |
2003-132028 | May 2003 | JP |
9940702 | Aug 1999 | WO |
0075925 | Dec 2000 | WO |
Number | Date | Country | |
---|---|---|---|
20070022293 A1 | Jan 2007 | US |