Integrity of data is to be ensured in a simple manner. A data verifier
generates a signature generation request from data to be signed and signature request
time, and sends the request to a data generator. The data generator extracts the
data to be signed from the signature generation request, and its signature generation
unit generates a signature for the data. A key generation unit generates a key
from a previous key, the signature request time in the signature generation request,
and the identifier of the data generator, and an encryptor encrypts the signature.
After that, the encrypted signature and the like are returned to the data verifier,
which generates a decrypting key with a key generation unit from the previous key,
the signature request time, and the identifier of the data generator, then extracts
an encrypted signature, and decrypts it with a decryptor. A signature verification
unit checks whether or not the result of decrypting is the correct signature.