1. Field of the Invention
The present invention relates to an alteration detection method of data stored in a data storage unit, a data alteration detection device and a data alteration detection program.
2. Description of the Related Art
With the spread of networks, a possibility that an illegal access is made to a database and data is altered has been increased. In order to detect such an illegal data alteration, for example, a data alteration detection method shown in
In the data alteration detection method shown in
When reading data, a data extraction unit 14 reads the relevant record from the database 13. Then, a record alteration detection code verification unit 15 applies a prescribed operation to the read data to calculate a record alteration detection code and verifies whether the calculated record alteration detection code coincides with the recode alteration detection code attached to the data to determine whether the data is altered.
However, by the alteration detection method, the addition/deletion of a record cannot be detected.
In order to detect the alteration, such as addition/deletion, of a record, an alteration detection code must be provided for a specific record unit. For example, as shown in
Japanese Patent Application No. 2002-259216 (Patent Reference 1) discloses that when transmitting an electronic file, a describer H for verifying the integrity of each unit file and a describer C for verifying the continuity of each unit file (whether a previous or subsequent unit file is lost) are provided.
However, in the method disclosed by Patent Reference 1, when the structure of a unit file is known, the describer C for verifying the continuity of each unit file can be easily generated. Therefore, it is difficult to prevent the alteration of data.
An object of the present invention is to be able to detect the alteration, such as addition, deletion and the like, of data without the increase of a process time for detecting data alteration.
In the data alteration detection method of the present invention, when writing data in the data storage unit in a prescribed order, the data alteration detection code of data to write current time is calculated. Then, an inter-data alteration detection code is calculated based on both the data alteration detection code of at least the immediately previous data of the data to write current time and the data alteration detection code of the data to write current time. And the data alteration detection code of the data to write current time and the inter-data alteration detection code are stored data storage unit in correspondence with the data to write current time. Then, when reading the data stored in the data storage unit, the data alteration detection code of data to read is calculated, and it is verified whether the calculated data alteration detection code coincides with the data alteration detection code stored in correspondence with the data to read. Then, an inter-data alteration detection code is calculated based on the data alteration detection code of the data to read and the data alteration detection code of the immediately previous data of the data, and it is verified whether the calculated inter-data alteration detection code coincides with the inter-data alteration detection code stored in correspondence with the data to read. Thus, it is verified whether data is altered.
According to the present invention, an inter-data alteration detection code is calculated using the alteration detection codes of at least two segments of data. When reading data, the alteration, such as modification, deletion, addition and the like, of data can be detected by verifying the inter-data alteration detection code.
Since in order to alter data, the record alteration detection codes of at least two segments of data and the inter-record alteration detection code must be completely generated, it is very difficult to alter data. As a result, the alteration of data can be detected more accurately.
For example, when detecting alteration to a plurality of segments of consecutive data, the alteration, such as modification, addition, deletion and the like, of the target plurality of segments of data can be detected by calculating only the respective inter-data alteration detection codes between two segments of individual target data and between its leading data and the immediately previous data of the data, and there is no need to calculate the alteration detection code of data other than them. Therefore, calculation time can be shortened.
In another data alteration detection method of the present invention, when writing data in the data storage unit in a prescribed order, an inter-data alteration detection code is calculated based on data to write current time and the immediately previous data of the data, and is stored in the data storage unit in correspondence with the data to write current time. When reading data stored in the data storage unit, an inter-data alteration detection code is calculated based on both the data to read and at least the immediately previous data of the data, and it is verified whether the calculated inter-data alteration detection code coincides with the inter-data alteration detection code stored in correspondence with the data to read. Thus, it is detected whether data is altered.
According to this invention, an inter-data alteration detection code is calculated using at least two segments of data. When reading data, the alteration, such as modification, deletion, addition and the like, of data can be detected by verifying the inter-data alteration detection code. In this case, since it is sufficient to calculate an inter-data alteration detection code, a process time for calculation of alteration detection codes and a process time for detection can be shortened. Since an alteration detection code is calculated based on two segments of data, it is difficult to generate an illegal alteration detection code, compared with the case where the alteration detection code is calculated based on one segment of data.
The data alteration detection device of the present invention comprises a data alteration detection code calculation unit calculating the data alteration detection code of data to write into a data storage unit, an inter-data alteration detection code calculation unit calculating an inter-data alteration detection code, based on both the data alteration detection code of at least the immediately previous data of the data to write and the data alteration detection code, a data writing unit relating and writing the data, the data alteration detection code and the inter-data alteration detection code into the data storage unit, a data reading unit reading data from the data storage unit, a data alteration detection code verification unit calculating the data alteration detection code of the read data and verifying whether the calculated data alteration detection code coincides with the data alteration detection code stored in correspondence with the read data, and an inter-data alteration detection code verification unit calculating an inter-data alteration detection code, based on both the data alteration detection code of the read data and the data alteration detection code of at least the immediately previous data of the data and verifying whether the inter-data alteration detection code coincides with the inter-data alteration detection code stored in correspondence with the read data.
According to the present invention, an inter-data alteration detection code is generated from the alteration detection codes of at least two segments of data. When reading data, the alteration, such as modification, deletion, addition and the like, of data can be detected by verifying the inter-data alteration detection code.
Alternatively, the data alteration detection code calculation unit and the inter-data alteration detection code calculation unit can write the generated data alteration detection code and inter-data alteration detection code, respectively, into the data storage unit.
The preferred embodiments of the present invention are described below with reference to the drawings.
A data alteration detection code calculation unit 21 for calculating the data alteration detection code of data to write into a data storage unit 24.
An inter-data alteration detection code calculation unit 22 for calculating an inter-data alteration detection code, based on both the data alteration detection code of at least the immediately previous data of the data to write and the data alteration detection code.
A data writing unit 23 for relating and writing the data, the data alteration detection code and the inter-data alteration detection code into the data storage unit 24.
A data reading unit 25 for reading data from the data storage unit 24.
A data alteration detection code verification unit 26 for calculating the data alteration detection code of the read data and verifying whether the calculated data alteration detection code coincides with the data alteration detection code stored in correspondence with the read data.
An inter-data alteration detection code verification unit 27 for calculating an inter-data alteration detection code, based on both the data alteration detection code of the read data and the data alteration detection code of at least the immediately previous data of the data and verifying whether the inter-data alteration detection code coincides with the inter-data alteration detection code stored in correspondence with the read data.
According to this configuration, an inter-data alteration detection code is generated from the alteration detection codes of at least two segments of data. When reading data, the alteration, such as modification, deletion, addition and the like, of data can be detected by verifying the inter-data alteration detection code.
Alternatively, the data alteration detection code calculation unit 21 and the inter-data alteration detection code calculation unit 22 can write the generated data alteration detection code and inter-data alteration detection code, respectively, into the data storage unit.
A data storing unit (data writing unit) 31 writes generated data into a database (data storage unit) 34.
A record alteration detection code calculation unit 32 applies a prescribed operation, such as a hash operation or the like, to data to write (data of the current record) to calculate a record alteration detection code, and outputs the calculated record alteration detection code in an inter-record alteration detection code calculation unit 33.
The record alteration detection code calculation unit 32 also writes the calculated record alteration detection code into the current record of the database 34.
The inter-record alteration detection code calculation unit 33 calculates an inter-record alteration detection code, based on both the record alteration detection code of at least the immediately previous record of the current record and the record alteration detection code calculated by the record alteration detection code calculation unit 32.
Each record of the database 34 stores a primary key indicating the order of data (update date, order, etc.), as shown in
The data storing unit 31, record alteration detection code calculation unit 32 and inter-record alteration detection code calculation unit 33 store data, a record alteration detection code and an inter-record alteration detection code in one record of the database 34, as shown in
When reading data, the data extraction unit (data reading unit) 37 reads the data of a corresponding record and outputs the data to the record alteration detection code verification unit 35.
The record alteration detection code verification unit 35 applies a prescribed operation to the read data to calculate a record alteration detection code and verifies whether the calculated record alteration detection code coincides with the record alteration detection code of the read record.
An inter-alteration detection code verification unit 36 calculates an inter-record alteration detection code, based on both the record alteration detection code of the immediately previous record and the record alteration detection code of the read record, and verifies whether the calculated inter-record alteration detection code coincides with the inter-record alteration detection code of the read record.
If the data read from the database 34 is altered, it is determined by the verification that the record alteration detection codes or the inter-record alteration detection codes do not coincide. Thus, the alteration, such as modification, deletion, addition and the like, of data can be detected.
Although in
Next, the respective processes of the record alteration detection code calculation unit 32, inter-record alteration detection code calculation unit 33, record alteration detection verification unit 35 and inter-record alteration detection code verification unit 36 of the first preferred embodiment are described with reference to the flowcharts shown in
Firstly, the process of the record alteration detection code calculation unit 32 is described with reference to the flowchart shown in
The record alteration detection code calculation unit 32 obtains data to write (data of the current record) (S11 shown in
In the process in step S11, for example, if there is a data write request, a record is generated in the database 34. If data is simultaneously written into the record, data is obtained from the record of the database 34. If data to write is temporarily stored in the data storing unit 31 and is finally stored in the database 34 together with an alteration detection code after the calculation of the alteration detection code, data is obtained from the data storing unit 31.
Then, the record alteration detection code of the current record is calculated (S12 shown in
Then, the calculated alteration detection code is written into the corresponding record of the database 34 as a record alteration detection code (S13 shown in
Next, the process of an inter-record alteration detection code calculation unit 33 is described with reference to the flowchart shown in
The inter-record alteration detection code calculation unit 33 obtains the record alteration detection code of data to write (data of the current record) (S21 shown in
Then, the record alteration detection code of the immediately previous record of the data to write is obtained from the database 34 (S22 shown in
Then, an alteration detection code is calculated by applying a prescribed operation, such as a hash operation, to a code obtained by merging the two record alteration detection codes or generating a digital signature (S23 shown in
The calculated alteration detection code is written into the corresponding record of the database 34 as an inter-record alteration detection code (S23 shown in
Next, the process of the data storing unit 31 is described with reference to the flowchart shown in
It is determined whether data to be written into the database 34 is the first data (S31 shown in
If it is the first data (yes in S31), the process proceeds to step S32, and a register storing the alteration detection code of the previous record is cleared to zero.
If it is not the first data (no in S31), the process proceeds to step S33, and data to be written in the current record is obtained. If data is written in a record when the data is generated or obtained, data is obtained from the record into which the data is written.
Then, the data of the current record is transferred to the record alteration detection code calculation unit 32, a record alteration detection code is obtained from the record alteration detection code calculation unit 32 (S34 shown in
Then, the record alteration detection code of the current record and the record alteration detection code of the immediately previous record are transferred to the inter-record alteration detection code calculation unit 33, and an inter-record alteration detection code is obtained from the inter-record alteration detection calculation unit 33 (S35 shown in
Then, data is written into the corresponding record of the database 34 (S36 shown in
Then, the record alteration detection code of the current record is stored in a register as the alteration detection code of the previous record (S37 shown in
If, for example, data is written in the n-th record in
Next, the process of the record alteration detection code verification unit 35 is described with reference to the flowchart shown in
The data of a record to read (data of the current record) is obtained (S41 shown in
Then, an alteration detection code is calculated by applying a prescribed operation, such as a hash operation, to the data of the record to read (S42 shown in
Then, it is verified whether the calculated record alteration detection code coincides with the record alteration detection code stored in the record to read (S43 shown in
By the process of the record alteration detection code verification unit 35, it can be verified whether the record alteration detection code that is calculated using the data read from the database 34 coincides with the record alteration detection code stored in the record, and accordingly, it can be determined whether the data is altered.
Next, the process of the inter-record alteration detection code verification unit 36 is described with reference to the flowchart shown in
The record alteration detection code of the current record is obtained from the record alteration detection code calculation unit 35 (S51 shown in
Then, the record alteration detection code of the immediately previous record by searching for the immediately previous record of the current record, using a primary key indicating the order of a record S52 shown in
Then, an inter-record alteration detection code is calculated by applying a prescribed hash operation to a code obtained by merging the respective record alteration detection codes of the current record and the immediately previous record (S53 shown in
Then, it is verified whether the calculated inter-record alteration detection code coincides with the inter-record alteration detection code of the current record (S54 shown in
By the process of the inter-record alteration detection code verification unit 36, an inter-record alteration detection code can be calculated using the respective record alteration detection codes of the current record and the immediately previous record, and it can be verified whether the calculated inter-record alteration detection code coincides with the inter-record alteration detection code stored in the current record. Thus, the alteration, such as deletion, addition and the like, can be detected.
Next, The process of the data extraction unit 37 is described with reference to the flowchart shown in
0 is set as the initial value of the number of extracted records from the database 34 (S61 shown in
Then, the data of requested record, a record alteration detection code and an inter-record alteration detection code are read from the database 34 (62 shown in
Then, the record data and the record alteration detection code are transferred to the record alteration detection code verification unit 35, and the alteration detection code of the current record is verified (S63 shown in
Then, it is determined whether the number of records to extract is 0, that is, whether the request record is leading one (S64 shown in
If the number of records to extract is 0 (yes in S64), the process proceeds to step S65, and both the data and record alteration detection code of the current record are outputted to a requester. In this case, since it is the leading record requested to output, the inter-record alteration detection code is not outputted.
However, if the number of extracted records is not 0 (no in S64), that is, it is not the leading record requested to output, the process proceeds to step S66. In step S66, the record alteration detection code, inter-record alteration detection code of the current record and the record alteration detection code of the immediately previous record are transferred to the inter-record alteration detection code verification unit 36, and the inter-record alteration detection code is verified.
If the record alteration detection code verification unit 35 determines that the record alteration detection codes coincide and if the inter-record alteration detection code verification unit 36 determines that the inter-record alteration detection codes coincide, the record data, record alteration detection code and inter-record alteration detection code of the current record are outputted to the requester (S67 shown in
Then, the number of extracted codes is incremented (S68 shown in
Then, it is determined whether the output of all requested records is completed (S70 shown in
If the output of all the records is not completed, the process returns to step S62, the above-mentioned process is repeated.
By the above-mentioned processes in
According to the first preferred embodiment, by calculating an inter-record alteration detection code, based on the respective record alteration detection codes of the current record and the immediately previous record and storing the inter-record alteration detection code in the current record, for example, the alteration, such as deletion, addition and the like, of a record can be detected.
Since the alteration, such as deletion, addition and the like, of a record can be detected from the record alteration detection codes of at least two records, a process time for detecting the alteration of data can be shortened, compared with the conventional method of calculating the entire alteration detection code, using the alteration detection codes of a lot of records.
Furthermore, since by re-calculating the inter-record alteration detection code of the immediately subsequent record of the record, the data of a specific record can be legally modified, instead of being illegally altered, a time needed to re-calculate an alteration detection code can be shortened.
Next,
The data alteration detection method is described below with reference to
Immediately after introducing a public key or at the time of modifying the key, the CPU performs the process shown in
Firstly, a pair of the secret key and public key of a public key encryption RSA key is generated and stored (S71 shown in
Then, in order to apply for the authentication of a public key, both a public key and necessary information are stored in PKCS#10 format specifying encryption data format (S72 shown in
Then, a certificate issue request is transmitted to the authentication office (S73 shown in
By regularly performing the process in step S75 shown in
Next, the process of generating a record alteration detection code, using a digital signature when storing data in the record of the database 34 is described with reference to the flowchart shown in
A message digest is generated by applying secure hash algorithm (SHA)-1, which is one of hash operations, to data to be written into the database shown in
Then, padding is applied to the generated message digest (a bit is added) so as to meet a prescribed format, and a digital signature is generated by encoding the message digest, using the RSA encryption private key (secret key)(S82 shown in
Then, the generated digital signature, the public key certificate obtained from the authentication office, the authentication path and the certificate revocation list are store in PKCS#7 format and are stored in the corresponding record of the database 34 shown
By the above-mentioned processes in steps S81 through 83, as shown in
Next, The generation of an inter-record alteration detection code by a digital signature is described with reference to the flowchart shown in
Firstly, the record alteration detection code of the current record calculated by the above-mentioned record alteration detection code calculation unit 32 and the like and the record alteration detection code of the immediately previous record are merged (S91 shown in
Then, a message digest is generated by applying hash operation SHA-1 to the merged data (S92 shown in
Then, padding is applied to the generated message digest so as to meet a prescribed format, and a digital signature is generated by encoding the generated message digest, using the RSA encryption secret key (S93 shown in
Then, the generated digital signature, the public key certificate obtained by the authentication office, the authentication path and certificate revocation list are stored in PKCS#7 format as an inter-record alteration detection code (S94 shown in
By the above-mentioned processes in
Next, the verification method of the record alteration detection code generated by a digital signature in PKCS#7 format is described with reference to the flowchart shown in
A message digest is generated by applying hash operation SHA-1 to the data of a record to be read from the database 34 (S101 shown in
Then, it is verified that the public key of a signer was valid when the digital signature was generated (S102 shown in
Then, the digital signature in the record alteration detection code is decoded using the public key (RSA encryption public key) of the signer (S103 shown in
Then, it is verified whether the message digest in the data decoded by the public key of the signer coincides with the message digest obtained by applying hash operation SHA-1 to the record alteration detection code calculated using the data of the record and whether padding is applied as specified. Since in padding applied to a message digest, data is added in the format specified by PKCS#7, the message digest can be extracted from the data decoded by the public key.
By the above-mentioned process shown in
Next, the verification method of an inter-record alteration detection code generated by a digital signature is described with reference to the flowchart shown in
The respective record alteration detection codes of a record to read and the immediately previous record are merged (S111 shown in
Then, a message digest is generated by applying hash operation SHA-1 to the merged data (S112 shown in
Then, it is verified that the public key of a signer was valid when the digital signature was generated (S113 shown in
The signature in the inter-record alteration detection code is decoded using a public key extracted from the public key certificate in the inter-record alteration detection code (S114 shown in
Then, it is verified whether the message digest in the data decoded by the public key coincides with the message digest of the inter-record alteration detection code calculated using the record alteration detection code of the immediately previous record of the current record, and also whether padding is applied to the decoded data as specified (S115 shown in
If in the verification of step S115, it is determined that the message digests coincide, it can be confirmed that the signature of the inter-record alteration detection code in PKCS#7 is that of the owner of the public key and also that the inter-record alteration detection code of the current record is not altered. Thus, it is verified that the data of the current record is not altered.
However, if in the verification of step S115, it is determined that the message digests do not coincide, it is determined that the signature of the inter-record alteration detection code in PKCS#7 format is false, or that the data is illegally deleted or added. As a result, it is determined that the inter-record alteration detection codes do not coincide. Thus, by the verification in step S115, it can be detected that the record data is altered by deletion, addition and the like.
Next, the process of verifying that the public key was valid when a signature is generated in step S102 of
It is determined whether the public key certificate stored in the record alteration detection code or inter-record alteration detection code in PKCS#7 format is already verified (S121 shown in
If the public key certificate is not verified yet (no in S121), the process proceeds to step S123, and it is confirmed that the public key certificate is not registered in the latest certificate revocation list yet. Then, it is determined whether the public key certificate is not registered in the certificate revocation list (S124 shown in
If the public key stored in the public key certificate is not registered in the certificate revocation list (yes in S124), the process proceeds to step S125, In step S125, data other than the signature of the issuer (authentication office in the first layer) is extracted from the first public key certificate in the authentication path, and a message digest is generated from the data, using a prescribed algorithm (S125 shown in
Then, the digital signature of the issuer (authentication office) in the first public key certificate of the authentication path is decoded using the public key of the authentication office in the public key certificate (S126 shown in
Then, it is verified whether the message digest in the data decoded, using the public key of the authentication office coincides with the message digest generated from the data of the public key certificate, using the prescribed algorithm and also whether padding is applied as specified (S127 shown in
If the message digests coincide and the result is verified (yes in S128), the process proceeds to step S129, and it is determined whether the authentication office is the route authentication office (the highest-order authentication office). If the authentication office is not the route authentication office (no in S129), the process proceeds to step S130. In step S130, the authentication path is traced back, and the subsequent public key certificate in the authentication path is obtained in order to verify the higher-order authentication office. Then, the process returns to step S123, and the processes in steps S123 through S130 are repeated.
Firstly, in steps S123 and 124, it is confirmed that the public key of the authentication office that has issued the public key certificate of the data creator is not registered. Then, in step S125, a message digest is generated from data other than the signature of the public key certificate of the authentication office in the authentication path. Furthermore, the signature in the public key certificate is decoded using the public key of the higher-order authentication office, which is the issuer of the public key certificate, and it is verified whether the message digest in the decoded data coincides with the generated message digest. If both coincide, the lower-order authentication office, which is the signer, can be guaranteed by the higher-order authentication office. When the authentication path can be traced back and the route authentication office is reached by repeating the same process, it can be confirmed that the public key of the signer of the alteration detection code was valid.
By the above-mentioned processes in steps S123 through S130, it can be confirmed that at the time of signing, the public key of the signer of the alteration detection code (record alteration detection code and inter-record alteration detection code) was guaranteed by the authentication office and valid.
According to the second preferred embodiment, an alteration detection code (record alteration detection code and inter-record alteration detection code) can be generated using a digital signature and both are stored. When reading data, it can be determined whether the data is altered, by decoding the data, using the public key of a signer, stored in the record alteration detection code and inter-record alteration detection code and comparing the message digest of the record alteration detection code generated from the data with that of the inter-record alteration detection code generated from the respective record alteration detection codes of the current record and the immediately previous record. Thus, it can be detected whether the data is altered.
In the second preferred embodiment, since an alteration detection code can be verified using the public key of the public key certificate of the alteration detection code, persons other than the creator of the database 34 can verify an alteration detection code.
Since an RSA encryption digital signature is used, it is difficult to illegally generate an alteration detection code.
The present invention can also be configured as follows.
(1) The application of the present invention is not limited to data in the format of a record, and the present invention can be applied to arbitrary data, a file and the like whose format is not specified.
(2) The calculation of an inter-record alteration detection code is not limited to that using both the alteration detection code of the immediately previous record (data) and the alteration detection code of the current record, and it can also be calculated using two or more segments of record information (other than a alteration detection code), such as two segments of information about the immediately previous record of the current record and the twice previous record of the current record, or three segments of information about the immediately previous record of the current record, the twice previous record of the current record and the three times previous record of the current record.
(3) The calculation of an inter-record alteration detection code is not limited to the merging of the respective record alteration detection codes of the immediately previous and the current record, and an inter-record alteration detection code can also be calculated using at least the immediately previous record data and the data of the current record without generating a record alteration detection code.
(4) The database 34 for storing data is not always disposed inside the data alteration detection device, and it can also be another data storage device connected via a network.
According to the present invention, when writing data, the alteration, such as modification, deletion, addition of data can be detected without the increase of a processing time by generating an inter-data alteration detection code, using both the immediately previous data and data to write.
This application is a continuation of international PCT application No. PCT/JP03/00900 filed on Jan. 30, 2003.
Number | Name | Date | Kind |
---|---|---|---|
4933969 | Marshall et al. | Jun 1990 | A |
5982890 | Akatsu | Nov 1999 | A |
6144745 | Akiyama et al. | Nov 2000 | A |
20040019785 | Hawkes et al. | Jan 2004 | A1 |
Number | Date | Country |
---|---|---|
9-311806 | Dec 1997 | JP |
10-283262 | Oct 1998 | JP |
10-283263 | Oct 1998 | JP |
10-283264 | Oct 1998 | JP |
2000-132459 | May 2000 | JP |
2000-285024 | Oct 2000 | JP |
2001-232436 | Aug 2001 | JP |
2001-337600 | Dec 2001 | JP |
2002-82834 | Mar 2002 | JP |
2002-229835 | Aug 2002 | JP |
2002-259216 | Sep 2002 | JP |
2002-351864 | Dec 2002 | JP |
Number | Date | Country | |
---|---|---|---|
20050204248 A1 | Sep 2005 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/JP03/00900 | Jan 2003 | US |
Child | 11082113 | US |