WO2010097942A1 - 電子署名プログラム、電子署名装置、および電子署名方法 - Google Patents

電子署名プログラム、電子署名装置、および電子署名方法 Download PDF

Info

Publication number
WO2010097942A1
WO2010097942A1 PCT/JP2009/053718 JP2009053718W WO2010097942A1 WO 2010097942 A1 WO2010097942 A1 WO 2010097942A1 JP 2009053718 W JP2009053718 W JP 2009053718W WO 2010097942 A1 WO2010097942 A1 WO 2010097942A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage area
area
target
hash value
eigenvalue
Prior art date
Application number
PCT/JP2009/053718
Other languages
English (en)
French (fr)
Inventor
武仲 正彦
孝司 吉岡
文嗣 松尾
史朗 千葉
Original Assignee
富士通株式会社
株式会社富士通アドバンストエンジニアリング
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社, 株式会社富士通アドバンストエンジニアリング filed Critical 富士通株式会社
Priority to EP09840795.0A priority Critical patent/EP2402882A4/en
Priority to JP2011501424A priority patent/JP5174233B2/ja
Priority to PCT/JP2009/053718 priority patent/WO2010097942A1/ja
Publication of WO2010097942A1 publication Critical patent/WO2010097942A1/ja
Priority to US13/137,543 priority patent/US8566597B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Definitions

  • the present disclosure technique relates to an electronic signature program, an electronic signature device, and an electronic signature method for generating a hash tree used for an electronic signature.
  • a technique for performing electronic signature of streaming data by dividing a moving image or audio streaming data to be signed, generating a hash tree using the divided partial data as a leaf, and obtaining a root hash value is disclosed.
  • a register / memory capable of holding the divided data is prepared.
  • FIG. 11 is an explanatory diagram showing a conventional hash tree creation method.
  • the streaming data is divided into a plurality of partial data.
  • MPEG Motion Picture Experts Group
  • An image unit and a GOP Group of Picture
  • the GOP is a minimum unit of a moving image in which several images are collected, and can be independently reproduced in that unit, and is a structure for reproducing or editing a moving image from the middle.
  • the division into partial data is set as a GOP unit.
  • streaming data is divided into input data f 0 to f 14 and given to the hash function H (), respectively, so that hash values h 0 to h 14 are stored in the register / memory.
  • This disclosed technique has an object to realize a significant reduction in registers / memory and a significant reduction in post-processing time by enabling sequential processing of tree generation in real time.
  • the disclosed technology acquires a series of input data that are continuously input in the order of input, and gives the acquired input data or target data to a one-way function. And calculating the eigenvalue of the input data or the target data to determine whether the target area selected from the storage area group to which the priority is assigned is a free area, and the target area is a free area If it is determined that the calculated input data or the unique value of the target data is stored in the target area, and if it is determined that the target area is not a free area, the stored unique value in the target area and the input Data or a combined eigenvalue with the eigenvalue of the target data is newly set as the target data, and when the eigenvalue of the input data is calculated, When the highest priority storage area is selected as the target area, and when it is determined that the target area is not a free area, the storage area prioritized next to the storage area selected as the target area is newly set as the target area. Requirement to select a
  • FIG. 1 is a block diagram illustrating a hardware configuration of the electronic signature device.
  • the electronic signature device 100 includes a CPU (Central Processing Unit) 101, a memory 102, a hard disk drive 103, and an I / F 104 (interface).
  • the CPU 101, the memory 102, the hard disk drive 103, and the I / F 104 are connected by a bus 105.
  • the CPU 101 controls the entire electronic signature device 100.
  • the CPU 101 has a register 106 inside.
  • the register 106 holds various data.
  • the register 106 may be external to the CPU 101.
  • the memory 102 is a main storage device that stores various data.
  • the memory 102 is also used as a work area for the CPU 101.
  • the memory 102 includes, for example, a ROM (Read Only Memory), a RAM (Random Access Memory), a flash memory, and the like.
  • the hard disk drive 103 has a hard disk for storing various data.
  • the hard disk stores an electronic signature program (which may be stored in the memory 102), a browser, and an OS (Operating System) of the disclosed technology.
  • the I / F 104 acquires data from an external device (for example, the digital video camera 108) or the network 109, and outputs data to the external device or the network 109.
  • the I / F 104 has a buffer 107, temporarily holds data from an external device or the network 109, and sends the data to a storage area such as the register 106, the memory 102, and a hard disk.
  • FIG. 2 is an explanatory diagram illustrating an example of the input data group.
  • moving image or audio streaming data ST to be signed is divided into a plurality of input data f 0 to f 14 .
  • the division into input data f 0 to f 14 is set as a GOP unit.
  • the hash value of each input data f 0 ⁇ f 14 performs binary tree process, eventually root hash value h 0, 14 is obtained, so that the digital signature 200 is generated.
  • the hash tree generation according to the present embodiment is roughly divided into two phases.
  • first phase hash values obtained from a series of input data divided from streaming data are stored in a target area sequentially selected from a storage area group to which a priority is assigned.
  • this is referred to as a first storage process.
  • the second storage process is repeatedly executed until the hash value becomes single.
  • the storage area group is a plurality of storage areas for storing eigenvalues obtained from a one-way function (for example, a hash function).
  • the storage area group may be, for example, a plurality of registers 106, or a plurality of storage areas addressed in the memory 102 or the hard disk of the hard disk drive 103.
  • FIGS. 3A to 3E illustrate the first storage process
  • FIGS. 4A and 4B illustrate the second storage process.
  • five storage areas M1 to M5 are set as a plurality of storage areas. Since priority is assigned to the storage area group M, the rightmost storage area M1 is the highest priority storage area, and the priority decreases as it goes to the left, and the leftmost storage area M5 The storage area has the lowest priority.
  • a series of input data is taken in the order of input data f 0 , f 1 , f 2 ,..., F 14 .
  • FIG. 3A is an explanatory diagram of the first storage process (part 1). Since (A) is an initial state, the five storage areas M1 to M5 are empty. When the input data f 0 is captured, the hash value h 0 is calculated by the hash function H (). The hash value h 0 is stored in the storage area M1 having the highest priority among the five storage areas.
  • the hash value h 0 is stored in the storage area M1.
  • a hash value h 1 is calculated by the hash function H ().
  • the hash value h 0 has already been stored in the storage area M1.
  • the hash value h 0 is read from the storage area M1, and the storage area M1 is emptied.
  • the read hash value h 0 and hash value h 1 are combined to obtain a combined hash value h 0
  • h 1 is a code string connecting the end of the hash value h 0 and the start of the hash value h 1 .
  • the hash value h 0,1 is stored in the storage area M2 having the highest priority next to the storage area M1.
  • the hash value h 0,1 is stored in the storage area M2.
  • the hash value h 2 is calculated by the hash function H ().
  • Hash value h 2 the priority of the five storage area is stored in the highest storage area M1.
  • FIG. 3B is an explanatory diagram of the first storage process (part 2).
  • a hash value h 2 is stored in the storage area M1
  • a hash value h 0,1 is stored in the storage area M2.
  • a hash value h 3 is calculated by the hash function H ().
  • the storage area M1 is already hash value h 2 is stored.
  • the hash value h 2 is read from the storage area M1 to empty the storage area M1. Then, the read hash value h 2 and hash value h 3 are combined to obtain a combined hash value h 2
  • h 3 is a code string connecting the end of the hash value h 2 and the start of the hash value h 3 . Then, the hash value h 2,3 is calculated by giving the combined hash value h 2
  • the hash value h0,1 has already been stored in the storage area M2 having the next highest priority after the storage area M1.
  • the hash value h 0,1 is read from the storage area M2 to empty the storage area M2.
  • the read hash value h 0,1 and hash value h 2,3 are combined to obtain a combined hash value h 0,1
  • h 2,3 is a code string connecting the end of the hash value h 0,1 and the beginning of the hash value h 2,3 .
  • h 2,3 is given to the hash function H () to calculate the hash value h 0,3 .
  • the hash value h 0,3 is stored in the storage area M3 having the highest priority next to the storage area M2.
  • the hash value h 0,3 is stored in the storage area M3.
  • the hash value h 4 is calculated by the hash function H ().
  • Hash value h 4 the priority of the five storage area is stored in the highest storage area M1.
  • the hash value h 4 is stored in the storage area M1, and the hash values h 0,3 are stored in the storage area M3.
  • the hash value h 5 is calculated by the hash function H ().
  • the hash value h 4 has already been stored in the storage area M1.
  • the hash value h 4 is read from the storage area M1 to empty the storage area M1. Then, the read hash value h 4 and hash value h 5 are combined to obtain a combined hash value h 4
  • h 5 is a code string connecting the end of the hash value h 4 and the start of the hash value h 5 . Then, the hash value h 4,5 is calculated by giving the combined hash value h 4
  • the hash values h 4,5 are stored in the storage area M2 having the next highest priority after the storage area M1.
  • FIG. 3C is an explanatory diagram of the first storage process (part 3).
  • hash values h 4,5 are stored in the storage area M2
  • hash values h 0,3 are stored in the storage area M3.
  • a hash value h 6 is calculated by the hash function H ().
  • Hash value h 6 the priority of the five storage area is stored in the highest storage area M1.
  • the hash value h 6 is stored in the storage area M1, and the hash values h 4, 5 are stored in the storage area M2.
  • a combined hash value h 0,3 is stored in the storage area M3.
  • the hash value h 7 is calculated by the hash function H ().
  • the hash value h 6 has already been stored in the storage area M1.
  • the hash value h 6 is read from the storage area M1 to empty the storage area M1. Then, the read hash value h 6 and hash value h 7 are combined to obtain a combined hash value h 6
  • h 7 is a code string connecting the end of the hash value h 6 and the start of the hash value h 7 . Then, the hash value h 6,7 is calculated by giving the combined hash value h 6
  • the hash value h 4,5 has already been stored in the storage area M2 having the next highest priority after the storage area M1.
  • the hash value h 4,5 is read from the storage area M2 to empty the storage area M2.
  • the read hash value h 4,5 and hash value h 6,7 are combined to obtain a combined hash value h 4,5
  • h 6,7 is a code string connecting the end of the hash value h 4,5 and the start of the hash value h 6,7 .
  • h 6,7 is given to the hash function H () to calculate the hash value h 4,7 .
  • the hash value h 0,3 has already been stored in the storage area M3 having the next highest priority after the storage area M2.
  • the hash value h 0,3 is read from the storage area M3 to empty the storage area M3.
  • the read hash value h 0,3 and the hash value h 4,7 are combined to obtain a combined hash value h 0,3
  • h 4,7 is a code string connecting the end of the hash value h 0,3 and the beginning of the hash value h 4,7 .
  • h 4,7 is given to the hash function H () to calculate the hash value h 0,7 .
  • the hash values h 0,7 are stored in the storage area M4 having the highest priority next to the storage area M3.
  • the hash value h 0,7 is stored in the storage area M4.
  • the hash value h 8 is calculated by the hash function H ().
  • Hash value h 8 the priority of the five storage area is stored in the highest storage area M1.
  • FIG. 3-4 is an explanatory diagram of the first storage process (part 4).
  • the hash value h 8 is stored in the storage area M1
  • the hash values h 0,7 are stored in the storage area M4.
  • the hash value h 9 is calculated by the hash function H ().
  • the hash value h 8 has already been stored in the storage area M1.
  • the hash value h 8 is read from the storage area M1 to empty the storage area M1. Then, the read hash value h 8 and hash value h 9 are combined to obtain a combined hash value h 8
  • h 9 is a code string connecting the end of the hash value h 8 and the start of the hash value h 9 . Then, the hash value h 8,9 is calculated by giving the combined hash value h 8
  • hash values h 8,9 are stored in the storage area M2, and hash values h 0,7 are stored in the storage area M4.
  • hash value h 10 is calculated by the hash function H ().
  • Hash value h 10 the priority of the five storage area is stored in the highest storage area M1.
  • the hash value h 10 is stored in the storage area M1
  • the hash values h 8,9 are stored in the storage area M2
  • the hash values h 0,7 are stored in the storage area M4.
  • a hash value h 11 is calculated by the hash function H ().
  • the storage area M1 is already hash value h 10 is already stored.
  • empty the storage area M1 reads the hash value h 10 from the storage area M1. Then, the read hash value h 10 and hash value h 11 are combined to obtain a combined hash value h 10
  • h 11 is a code string connecting the end of the hash value h 10 and the start of the hash value h 11 . Then, the hash values h 10 and 11 are calculated by giving the combined hash value h 10
  • the hash value h 8,9 has already been stored in the storage area M2 having the next highest priority after the storage area M1.
  • the hash value h 8,9 is read from the storage area M2 to empty the storage area M2.
  • the read hash value h 8,9 and hash value h 10,11 are combined to obtain a combined hash value h 8
  • h 11 is a code string connecting the end of the hash values h 8,9 and the start of the hash values h 10,11 .
  • the hash value h 8,11 is calculated by giving the combined hash value h 8
  • the hash values h 8 , 11 are stored in the storage area M3 having the highest priority next to the storage area M2.
  • FIG. 3-5 is an explanatory diagram of the first storage process (part 5).
  • (M) a memory area M3 is stored hash value h 8, 11, the hash value h 0, 7 is stored in the memory area M4.
  • the hash value h 12 is calculated by the hash function H ().
  • Hash value h 12 is the priority of the five storage areas M1 ⁇ M5 are stored in the highest storage area M1.
  • the hash value h 12 is stored in the storage area M1
  • the hash values h 8, 11 are stored in the storage area M3
  • the hash values h 0,7 are stored in the storage area M4.
  • a hash value h 13 is calculated by the hash function H ().
  • the storage area M1 is already hash value h 12 is already stored.
  • h 13 is a code string by connecting the beginning of the end and the hash value h 13 of the hash value h 12. Then, the combined hash value h 12
  • the cache values h 12 , 13 are stored in the storage area M2 having the highest priority next to the storage area M1.
  • Hash value h 14 is the priority of the five storage area is stored in the highest storage area M1.
  • the hash value h 14 is stored in the storage area M1
  • the hash values h 12, 13 are stored in the storage area M2
  • the storage area M3 is stored.
  • stored hash value h 8, 11 becomes the state in which the hash value h 0, 7 is stored in a memory area M4. Then, the process proceeds to the second storage process (second phase).
  • FIG. 4A is an explanatory diagram of the second storage process (part 1).
  • the hash value h 14, h 12, 13 stored in the storage area group, h 8, 11, retracts the h 0, 7 to another storage area, empty the storage area group M.
  • the storage area N of the save destination may be the same size as the storage area group M.
  • the data is taken from the save destination storage area N in the order of priority j of the storage area Mj stored in the storage area group M. Specifically, so that the captured hash value h 14, h 12,13, h 8,11 , in the order of h 0, 7.
  • the five storage areas are empty.
  • the priority of the five storage area is stored in the highest storage area M1.
  • the storage area M1 is the hash value h 14 is stored.
  • the hash value h 14 is read from the storage area M1 to empty the storage area M1.
  • the read hash value h 14 and hash values h 12 , 13 are combined to obtain a combined hash value h 12
  • h 14 is a code string connecting the end of the hash value h 12 , 13 and the beginning of the hash value h 14 .
  • h 14 is given to the hash function H (), and the hash value h 12,14 is calculated.
  • the hash values h 12,14 are stored in the storage area M2 having the highest priority next to the storage area M1.
  • FIG. 4B is an explanatory diagram of the second storage process (part 2).
  • (S) hash values h 12, 14 are stored in the storage area M2.
  • the hash values h 8, 11 are taken, they are stored in the storage area M1 having the highest priority among the five storage areas.
  • the hash values h 12, 14 have already been stored in the storage area M2 having the next highest priority after the storage area M1.
  • the hash values h 12,14 are read from the storage area M2 to empty the storage area M2. Then, the read hash value h 12,14 and the hash value h 0,11 are combined to obtain a combined hash value h 0,11
  • h 12,14 is a code string by connecting the beginning of the end and the hash value h 12,14 of the hash value h 0,11.
  • h 12,14 is given to the hash function H (), and the hash value h 0,14 is calculated.
  • the hash value h 0,14 is stored in the storage area M3 having the highest priority next to the storage area M2. Since there is no hash value in the save destination storage area N and the single hash value h 0,14 remains in the storage area group M, the hash value h 0,14 becomes the root hash value.
  • FIG. 5 is an explanatory diagram showing a hash tree generated by executing the first storage process and the second storage process.
  • the areas surrounded by reference numerals 501 to 504 indicate the hash tree obtained by the first storage process.
  • An area surrounded by reference numeral 505 represents the hash tree obtained by the second storage process.
  • FIG. 6 is a block diagram showing a functional configuration of the electronic signature device 100 according to the present embodiment.
  • the electronic signature device 100 includes an acquisition unit 601, a calculation unit 602, a determination unit 603, a storage unit 604, a setting unit 605, a selection unit 606, and a determination unit 607.
  • the functions (acquisition unit 601 to determination unit 607) serving as the control unit store, for example, programs stored in a storage device such as the register 106, the memory 102, and the hard disk drive 103 illustrated in FIG.
  • the function is realized by executing or by the I / F 104.
  • the acquisition unit 601 has a function of acquiring a series of input data f 0 to f 14 that are continuously input in the order of input. More specifically, for example, input data groups f 0 to f 14 obtained by dividing streaming data ST such as moving images and audio in GOP units are sequentially fetched by the I / F 104 and output from the buffer 107 of the I / F 104 in the input order. Imported data.
  • the calculation unit 602 gives the input data f i to the one-way function and calculates the eigenvalue of the input data f i. It has a function. In addition, it has a function of calculating eigenvalues of target data by giving target data set by a setting unit 605 described later to a one-way function. The target data will be described later.
  • the one-way function is a function that outputs a characteristic amount (eigenvalue) unique to given data. For example, the hash function H ().
  • the hash function H () calculates a hash value unique to given data.
  • the determination unit 603 has a function of determining whether or not the target area selected from the storage area group M to which the priority is assigned is an empty area.
  • the storage area group M is a plurality of storage areas M1 to M5 that store hash values obtained from the calculation unit 602. For example, a plurality of registers 106 or a plurality of storage areas addressed in the memory 102 or the hard disk drive 103 may be used.
  • the target area is a storage area Mj selected by the selection unit 606 described later. For example, as shown in (A) of FIG. 3A, since no hash value is stored in the storage area M1, which is the target area, it is determined to be empty. On the other hand, as shown in FIG. 3B, since the hash value h0 has already been stored in the storage area M1, which is the target area, it is determined that it is not empty.
  • the storage unit 604 has a function of storing the input data f i calculated by the calculation unit 602 or the eigenvalue of the target data in the target region when the determination unit 603 determines that the target region is a free space. If it is an empty area, the eigenvalue is stored as it is. For example, as shown in FIG. 3A, since the storage area M1, which is the target area, is determined to be empty, the hash value h 0 is stored. On the other hand, the case where it is not an empty area will be described later.
  • the setting unit 605 When the determination unit 603 determines that the target area is not an empty area, the setting unit 605 newly sets a combined eigenvalue between the stored eigenvalue in the target area and the input data f i or the eigenvalue of the target data as target data. It has a function. Specifically, when the target area is not a free area, a binary tree process with the stored eigenvalue is executed.
  • hy of the eigenvalue of the current target data and the stored eigenvalue in the target area is generated.
  • hy” (x and y are numbers and x ⁇ y) is a code string that connects the end of the eigenvalue hx and the start of the eigenvalue hy.
  • Hx and y are new eigenvalues obtained when the combined eigenvalue is given to the one-way function. In this way, since the combined eigenvalue is also the target data, it is passed to the calculation unit 602 and the eigenvalue is calculated.
  • the hash value h 0 since the hash value h 0 has already been stored in the storage area M1, which is the target area, the hash value h 0 and the hash value h 1 are combined.
  • h 1 is generated and set in the target data. Since the combined hash value h 0
  • the selection unit 606 has a function of selecting a storage area having the highest priority from the storage area group M as a target area when the eigenvalue of the input data f i is calculated. Specifically, when the eigenvalue of the input data f i is obtained, the storage area with the highest priority becomes the target area.
  • the selection unit 606 has a function of newly selecting a storage area that is prioritized after the storage area selected as the target area when the determination unit 603 determines that the target area is not a free area. . Thereby, the next storage destination can be secured. For example, as shown in FIG. 3B, since the hash value h 0 has already been stored in the storage area M1, which is the target area, the next highest priority storage area M2 is set as the target area. Selected. Then, the hash value h 0,1 is stored in the empty storage area M2 that is the target area.
  • the determination unit 607 After obtaining the series of input data f 0 to f 14 , the determination unit 607 generates electronic signatures for the series of input data f 0 to f 14 based on the number of eigenvalues stored in the storage area group M. More specifically, for example, when a single eigenvalue remains in the storage area group M, the single eigenvalue becomes the root. Therefore, it becomes a generation source of an electronic signature for a series of input data f 0 to f 14 . On the other hand, if multiple eigenvalues remain, the hash tree is incomplete. In this case, the second storage process (see FIGS. 4-1 and 4-2) is executed. There are two migration methods when migrating to the second storage process.
  • the first migration method is stored in the storage area group M with another storage area different from the storage area group M as a save destination storage area N.
  • the hash value group being moved is moved to the storage area N as the save destination.
  • hash values are sequentially extracted from the storage area N as the save destination.
  • the selection unit 606 selects the storage area M1 having the highest priority from the storage area group M as the target area. Then, the determination unit 603 determines whether or not the target area is empty. If it is empty, the hash value extracted from the save destination storage area is stored as it is. If not empty, as described above, a combined hash value with the stored hash value is generated and used as target data.
  • the storage area M2 having the next highest priority is selected as the target area, and the determination unit 603 determines whether or not the selected target area is empty. Thereafter, a new hash value is calculated by giving the combined hash value to the hash function H (). If the newly selected target area (storage area M2) is empty, a new hash value is stored. If it is not empty, the selection of the target area and the determination of the empty space, generation of a combined hash value, setting of target data, and storage are repeated.
  • a second storage area group M equivalent to the storage area group (hereinafter referred to as the first storage area group) M is prepared. That is, the second storage area group M has the same number and the same size of storage areas as the first storage area group M, and each of the storage areas M1 to M5 has the same priority as the first storage area group M. Is assigned.
  • the acquisition unit 601 sequentially extracts hash values from the storage area with the highest priority storing hash values from the first storage area group M. Then, the selection unit 606 selects a target area from the second storage area group M, the determination unit 603 determines whether the target area is empty, and the storage unit 604 has a hash value when it is empty. Will be stored.
  • the additionally used storage area is equivalent to the size of the storage area group M, so that memory saving can be achieved.
  • FIG. 7 is a flowchart showing a route hash value generation processing procedure according to the present embodiment.
  • the first storage process is executed (step S701), and it is determined whether or not the number of hash values after the first storage process is single (step S702). If the number is not single (step S702: No), the second storage process is executed (step S703), and it is determined again whether the number of hash values is single (step S702). If it is not single (step S702: No), the second storage process (step S703) will continue to be executed until it becomes single.
  • step S702 if it is single in step S702 (step S702: Yes), the single hash value is determined as the root hash value (step S704), and the root hash value and the input data group are associated and stored (step S704). S705). Thereby, the root hash value generation process is terminated.
  • FIG. 8 is a flowchart showing a detailed processing procedure of the first storage processing (step S701).
  • Step S802 If there is an input data f i (step S802: Yes), the acquiring unit 601 acquires the input data f i (step S803), the arithmetic unit 602 calculates a hash value hy the input data f i (step S804 ). Then, the determination unit 603 determines whether or not the storage area Mj is empty (step S805).
  • step S805 If it is empty (step S805: Yes), the storage unit 604 stores the unstored hash value hy in the storage area Mj (step S806). Then, i is incremented (step S807), and the process returns to step S802.
  • step S805: No the hash value hx stored in the storage area Mj is read and the hash value hx and the unstored hash value hy are combined. A combined hash value hx
  • FIG. 9 is a flowchart showing a detailed processing procedure of the second storage process (step S703).
  • a migration process (the first or second migration method described above) is executed (step S901).
  • it is determined whether or not there is a hash value of priority k (step S903).
  • step S903: No) the process proceeds to step S907.
  • step S903 when there is a hash value with priority k (step S903: Yes), the acquisition unit 601 acquires the hash value with priority k as an unstored hash value hy (step S904), and whether or not the storage area Mj is empty. Is determined (step S905).
  • step S905 If it is empty (step S905: Yes), the unstored hash value hy is stored in the storage area Mj (step S906).
  • step S907 k is decremented (step S907), and it is determined whether or not k ⁇ 0 (step S908). If k ⁇ 0 (step S908: Yes), the process returns to step S702. On the other hand, when k ⁇ 0 is not satisfied (step S908: No), the process returns to step S903.
  • step S905: No the hash value hx stored in the storage area Mj is read, and the hash value hx and the unstored hash value hy are combined. A combined hash value hx
  • step S910 the hash value of the combined hash value hx
  • FIG. 10 is a chart comparing the present embodiment and the prior art shown in FIG.
  • the number of input data in the prior art is n.
  • sequential processing is possible, and the number of registers / memory, the number of hash processes during shooting (input data capture), and the number of hash processes after shooting are significantly reduced.
  • the number of registers / memory can be greatly reduced, and post-processing time after photographing can be greatly reduced.
  • the hash tree generation method described in this embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
  • the electronic signature program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
  • the electronic signature program may be distributed via the network 109 such as the Internet.

Abstract

 (A)において、入力データ(f0)が取り込まれると、ハッシュ値(h0)が算出される。ハッシュ値(h0)は、優先度が最も高い記憶領域(M1)に格納される。(B)において、入力データ(f1)が取り込まれると、ハッシュ値(h1)が算出される。記憶領域(M1)には、すでにハッシュ値(h0)が格納済みである。この場合、ハッシュ値(h0)を記憶領域(M1)から読み出して記憶領域(M1)を空にする。そして、読み出したハッシュ値(h0)とハッシュ値(h1)とを結合して結合ハッシュ値(h0|h1)とする。そして、ハッシュ値(h0,1)が算出される。ハッシュ値(h0,1)は、記憶領域(M1)のつぎに優先度が高い記憶領域(M2)に格納される。(C)において、入力データ(f2)が取り込まれると、ハッシュ値(h2)が算出される。ハッシュ値(h2)は、5個の記憶領域のうち優先度が最も高い記憶領域(M1)に格納される。

Description

電子署名プログラム、電子署名装置、および電子署名方法
 本開示技術は、電子署名に用いられるハッシュツリーの生成をおこなう電子署名プログラム、電子署名装置、および電子署名方法に関する。
 署名対象となる動画像または音声のストリーミングデータを分割し、分割された部分データをリーフとしてハッシュツリーを生成してルートハッシュ値を求めることで、ストリーミングデータの電子署名をおこなう技術が開示されている(たとえば、下記特許文献1を参照。)。上述した従来技術では、分割されたデータが保持できるレジスタ/メモリが用意されていることが前提となる。
 図11は、従来のハッシュツリー作成方法を示す説明図である。ストリーミングデータは、複数の部分データに分割される。MPEG(Moving Picture Experts Group)-1のストリーミングデータを抽出可能なように部分データに分割する場合、画像単位とGOP(Group of Picture)単位が考えられる。GOPは、何枚かの画像をまとめた動画像の最小単位であり、その単位で独立した再生が可能であり、動画像を途中から再生したり編集したりするための構造である。ここでは、単純化のために、部分データへの分割をGOP単位とする。
 図11の(A)において、ストリーミングデータは入力データf0~f14に分割され、それぞれハッシュ関数H()に与えられることで、ハッシュ値h0~h14がレジスタ/メモリに格納される。
 (B)において、(A)で得られたハッシュ値h0~h14について隣接ハッシュ値どうしを結合する。“hx|hy”(x,yは番号)は、ハッシュ値hxの末尾とハッシュ値hyの先頭をつなげた符号列である。また、hx,yは結合ハッシュ値をハッシュ関数に与えた場合に得られるハッシュ値である。(C)~(E)においても同様に繰り返す。(E)において、ハッシュ値が単一になったため、ハッシュ値h0,14がルートハッシュ値となる。
 このように、従来技術では、(A)~(E)のハッシュツリー生成をおこなうには、ストリーミングデータをすべて取り込むことが可能な大容量のレジスタ/メモリが必要となる。また、ストリーミングデータをすべて取り込んだあとに、(A)~(E)のハッシュツリー生成をおこなうため、処理に時間を要することとなる。
特開2008-178048号公報
 本開示技術では、リアルタイムでツリー生成の逐次処理を可能とすることにより、レジスタ/メモリの大幅削減と後処理時間の大幅削減を実現することを課題とする。
 上述した課題を解決し、目的を達成するため、本開示技術は、連続的に入力されてくる一連の入力データを入力順に取得し、取得された入力データまたは対象データを一方向性関数に与えて前記入力データまたは前記対象データの固有値を演算し、優先順位が割り当てられている記憶領域群の中から選ばれた対象領域が空き領域か否かを判断し、前記対象領域が空き領域であると判断された場合、演算された前記入力データまたは前記対象データの固有値を前記対象領域に格納し、前記対象領域が空き領域でないと判断された場合、前記対象領域内の格納済み固有値と前記入力データまたは前記対象データの固有値との結合固有値をあらたに前記対象データとして設定し、前記入力データの固有値が演算された場合、前記記憶領域群の中から最優先される記憶領域を前記対象領域として選択するとともに、前記対象領域が空き領域でないと判断された場合、前記対象領域として選択された記憶領域の次に優先される記憶領域をあらたに前記対象領域として選択し、前記一連の入力データの取得後、前記記憶領域群に格納されている固有値の数に基づいて、前記一連の入力データに対する電子署名の生成元となる固有値を決定することを要件とする。
 本開示技術によれば、リアルタイムでツリー生成の逐次処理を可能とすることにより、レジスタ/メモリの大幅削減と後処理時間の大幅削減を実現することができるという効果を奏する。
電子署名装置のハードウェア構成を示すブロック図である。 入力データ群の一例を示す説明図である。 第1の格納処理(その1)を示す説明図である。 第1の格納処理(その2)を示す説明図である。 第1の格納処理(その3)を示す説明図である。 第1の格納処理(その4)を示す説明図である。 第1の格納処理(その5)を示す説明図である。 第2の格納処理(その1)を示す説明図である。 第2の格納処理(その2)を示す説明図である。 第1の格納処理および第2の格納処理の実行により生成されたハッシュツリーを示す説明図である。 本実施の形態にかかる電子署名装置の機能的構成を示すブロック図である。 本実施の形態にかかるルートハッシュ値生成処理手順を示すフローチャートである。 第1の格納処理の詳細な処理手順を示すフローチャートである。 第2の格納処理の詳細な処理手順を示すフローチャートである。 本実施の形態と図11に示した従来技術とを比較した図表である。 従来のハッシュツリー作成方法を示す説明図である。
 以下に添付図面を参照して、本開示技術にかかる電子署名装置、電子署名方法、および電子署名プログラムの好適な実施の形態を詳細に説明する。
(電子署名装置のハードウェア構成)
 図1は、電子署名装置のハードウェア構成を示すブロック図である。電子署名装置100は、CPU(Central Processing Unit)101と、メモリ102と、ハードディスクドライブ103と、I/F104(インターフェース)と、を備えている。CPU101、メモリ102、ハードディスクドライブ103、およびI/F104は、バス105により接続されている。
 ここで、CPU101は、電子署名装置100の全体の制御を司る。CPU101は内部にレジスタ106を有する。レジスタ106は、各種データを保持する。レジスタ106は、CPU101の外部にあってもよい。メモリ102は、各種データを記憶する主記憶装置である。メモリ102は、CPU101のワークエリアとしても利用される。メモリ102は、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリなどにより構成される。
 ハードディスクドライブ103は、各種データを記憶するハードディスクを有する。ハードディスクには、本開示技術の電子署名プログラム(メモリ102に記憶してもよい)やブラウザ、OS(Operating System)を記憶する。I/F104は、外部の装置(たとえば、デジタルビデオカメラ108)やネットワーク109からデータを取得したり、外部の装置やネットワーク109へデータを出力する。I/F104は、バッファ107を有し、外部の装置やネットワーク109からのデータを一時的に保持して、レジスタ106、メモリ102、ハードディスクなどの記憶領域にデータを送る。
 図2は、入力データ群の一例を示す説明図である。図2において、署名対象となる動画像または音声のストリーミングデータSTは、複数の入力データf0~f14に分割される。図11に示したように、説明の単純化のために、入力データf0~f14への分割をGOP単位とする。各入力データf0~f14のハッシュ値について2分木処理を施すことで、最終的にルートハッシュ値h0,14が得られ、電子署名200が生成されることとなる。
(ハッシュツリー生成の具体例)
 つぎに、本実施の形態におけるハッシュツリー生成の具体例について説明する。本実施の形態のハッシュツリー生成は、大きく分けて2つのフェーズからなる。第1のフェーズは、ストリーミングデータから分割された一連の入力データから得られるハッシュ値を、優先順位が割り当てられた記憶領域群から順次選ばれた対象領域に格納する。以降、第1の格納処理と称す。
 第2のフェーズは、第1の格納処理でハッシュツリーが未完成である場合に、再度第1の格納処理を実行させる。以降、第2の格納処理という。第2の格納処理は、ハッシュ値が単一になるまで繰り返し実行される。なお、記憶領域群とは、一方向性関数(たとえば、ハッシュ関数)から得られた固有値を格納する複数の記憶領域である。記憶領域群は、たとえば、複数個のレジスタ106でもよく、メモリ102やハードディスクドライブ103のハードディスクにおいてアドレス指定された複数の記憶領域でもよい。
 以降、図2に示した入力データ群を例にして説明する。図3-1~図3-5では第1の格納処理を説明し、図4-1,図4-2では第2の格納処理を説明する。なお、複数の記憶領域として5個の記憶領域M1~M5を設定する。記憶領域群Mには、優先順位が割り当てられているため、ここでは、右端の記憶領域M1が最も優先度が高い記憶領域であり、左に行くほど優先度が下がり、左端の記憶領域M5が最も優先度が低い記憶領域とする。また、一連の入力データは、入力データf0,f1,f2,…,f14の順に取り込まれるものとする。
 図3-1は、第1の格納処理(その1)を示す説明図である。(A)は初期状態であるため、5個の記憶領域M1~M5は空である。入力データf0が取り込まれると、ハッシュ関数H()により、ハッシュ値h0が算出される。ハッシュ値h0は、5個の記憶領域のうち優先度が最も高い記憶領域M1に格納される。
 (B)において、記憶領域M1には、ハッシュ値h0が格納されている。入力データf1が取り込まれると、ハッシュ関数H()により、ハッシュ値h1が算出される。記憶領域M1には、すでにハッシュ値h0が格納済みである。この場合、ハッシュ値h0を記憶領域M1から読み出して記憶領域M1を空にする。そして、読み出したハッシュ値h0とハッシュ値h1とを結合して結合ハッシュ値h0|h1とする。結合ハッシュ値h0|h1は、ハッシュ値h0の末尾とハッシュ値h1の先頭とをつなげたコード列である。そして、結合ハッシュ値h0|h1をハッシュ関数H()に与えて、ハッシュ値h0,1が算出される。ハッシュ値h0,1は、記憶領域M1のつぎに優先度が高い記憶領域M2に格納される。
 (C)において、記憶領域M2には、ハッシュ値h0,1が格納されている。入力データf2が取り込まれると、ハッシュ関数H()により、ハッシュ値h2が算出される。ハッシュ値h2は、5個の記憶領域のうち優先度が最も高い記憶領域M1に格納される。
 図3-2は、第1の格納処理(その2)を示す説明図である。(D)において、記憶領域M1にはハッシュ値h2が格納されており、記憶領域M2にはハッシュ値h0,1が格納されている。入力データf3が取り込まれると、ハッシュ関数H()により、ハッシュ値h3が算出される。記憶領域M1には、すでにハッシュ値h2が格納済みである。
 この場合、ハッシュ値h2を記憶領域M1から読み出して記憶領域M1を空にする。そして、読み出したハッシュ値h2とハッシュ値h3とを結合して結合ハッシュ値h2|h3とする。結合ハッシュ値h2|h3は、ハッシュ値h2の末尾とハッシュ値h3の先頭とをつなげたコード列である。そして、結合ハッシュ値h2|h3をハッシュ関数H()に与えて、ハッシュ値h2,3が算出される。
 ところが、記憶領域M1のつぎに優先度が高い記憶領域M2には、すでにハッシュ値h0,1が格納済みである。この場合、ハッシュ値h0,1を記憶領域M2から読み出して記憶領域M2を空にする。そして、読み出したハッシュ値h0,1とハッシュ値h2,3とを結合して結合ハッシュ値h0,1|h2,3とする。結合ハッシュ値h0,1|h2,3は、ハッシュ値h0,1の末尾とハッシュ値h2,3の先頭とをつなげたコード列である。そして、結合ハッシュ値h0,1|h2,3をハッシュ関数H()に与えて、ハッシュ値h0,3が算出される。ハッシュ値h0,3は、記憶領域M2のつぎに優先度が高い記憶領域M3に格納される。
 (E)において、記憶領域M3には、ハッシュ値h0,3が格納されている。入力データf4が取り込まれると、ハッシュ関数H()により、ハッシュ値h4が算出される。ハッシュ値h4は、5個の記憶領域のうち優先度が最も高い記憶領域M1に格納される。
 (F)において、記憶領域M1にはハッシュ値h4が格納されており、記憶領域M3にはハッシュ値h0,3が格納されている。入力データf5が取り込まれると、ハッシュ関数H()により、ハッシュ値h5が算出される。記憶領域M1には、すでにハッシュ値h4が格納済みである。
 この場合、ハッシュ値h4を記憶領域M1から読み出して記憶領域M1を空にする。そして、読み出したハッシュ値h4とハッシュ値h5とを結合して結合ハッシュ値h4|h5とする。結合ハッシュ値h4|h5は、ハッシュ値h4の末尾とハッシュ値h5の先頭とをつなげたコード列である。そして、結合ハッシュ値h4|h5をハッシュ関数H()に与えて、ハッシュ値h4,5が算出される。ハッシュ値h4,5は、記憶領域M1のつぎに優先度が高い記憶領域M2に格納される。
 図3-3は、第1の格納処理(その3)を示す説明図である。(G)において、記憶領域M2にはハッシュ値h4,5が格納されており、記憶領域M3にはハッシュ値h0,3が格納されている。入力データf6が取り込まれると、ハッシュ関数H()により、ハッシュ値h6が算出される。ハッシュ値h6は、5個の記憶領域のうち優先度が最も高い記憶領域M1に格納される。
 (H)において、記憶領域M1にはハッシュ値h6が格納されており、記憶領域M2にはハッシュ値h4,5が格納されている。記憶領域M3には結合ハッシュ値h0,3が格納されている。入力データf7が取り込まれると、ハッシュ関数H()により、ハッシュ値h7が算出される。記憶領域M1には、すでにハッシュ値h6が格納済みである。
 この場合、ハッシュ値h6を記憶領域M1から読み出して記憶領域M1を空にする。そして、読み出したハッシュ値h6とハッシュ値h7とを結合して結合ハッシュ値h6|h7とする。結合ハッシュ値h6|h7は、ハッシュ値h6の末尾とハッシュ値h7の先頭とをつなげたコード列である。そして、結合ハッシュ値h6|h7をハッシュ関数H()に与えて、ハッシュ値h6,7が算出される。
 ところが、記憶領域M1のつぎに優先度が高い記憶領域M2には、すでにハッシュ値h4,5が格納済みである。この場合、ハッシュ値h4,5を記憶領域M2から読み出して記憶領域M2を空にする。そして、読み出したハッシュ値h4,5とハッシュ値h6,7とを結合して結合ハッシュ値h4,5|h6,7とする。結合ハッシュ値h4,5|h6,7は、ハッシュ値h4,5の末尾とハッシュ値h6,7の先頭とをつなげたコード列である。そして、結合ハッシュ値h4,5|h6,7をハッシュ関数H()に与えて、ハッシュ値h4,7が算出される。
 ところが、記憶領域M2のつぎに優先度が高い記憶領域M3には、すでにハッシュ値h0,3が格納済みである。この場合、ハッシュ値h0,3を記憶領域M3から読み出して記憶領域M3を空にする。そして、読み出したハッシュ値h0,3とハッシュ値h4,7とを結合して結合ハッシュ値h0,3|h4,7とする。結合ハッシュ値h0,3|h4,7は、ハッシュ値h0,3の末尾とハッシュ値h4,7の先頭とをつなげたコード列である。そして、結合ハッシュ値h0,3|h4,7をハッシュ関数H()に与えて、ハッシュ値h0,7が算出される。そして、ハッシュ値h0,7は、記憶領域M3のつぎに優先度が高い記憶領域M4に格納される。
 (I)において、記憶領域M4にはハッシュ値h0,7が格納されている。入力データf8が取り込まれると、ハッシュ関数H()により、ハッシュ値h8が算出される。ハッシュ値h8は、5個の記憶領域のうち優先度が最も高い記憶領域M1に格納される。
 図3-4は、第1の格納処理(その4)を示す説明図である。(J)において、記憶領域M1にはハッシュ値h8が格納されており、記憶領域M4にはハッシュ値h0,7が格納されている。入力データf9が取り込まれると、ハッシュ関数H()により、ハッシュ値h9が算出される。記憶領域M1には、すでにハッシュ値h8が格納済みである。
 この場合、ハッシュ値h8を記憶領域M1から読み出して記憶領域M1を空にする。そして、読み出したハッシュ値h8とハッシュ値h9とを結合して結合ハッシュ値h8|h9とする。結合ハッシュ値h8|h9は、ハッシュ値h8の末尾とハッシュ値h9の先頭とをつなげたコード列である。そして、結合ハッシュ値h8|h9をハッシュ関数H()に与えて、ハッシュ値h8,9が算出される。ハッシュ値h8,9は、記憶領域M1のつぎに優先度が高い記憶領域M2に格納される。
 (K)において、記憶領域M2にはハッシュ値h8,9が格納されており、記憶領域M4にはハッシュ値h0,7が格納されている。入力データf10が取り込まれると、ハッシュ関数H()により、ハッシュ値h10が算出される。ハッシュ値h10は、5個の記憶領域のうち優先度が最も高い記憶領域M1に格納される。
 (L)において、記憶領域M1にはハッシュ値h10が格納されており、記憶領域M2にはハッシュ値h8,9が格納されており、記憶領域M4にはハッシュ値h0,7が格納されている。入力データf11が取り込まれると、ハッシュ関数H()により、ハッシュ値h11が算出される。記憶領域M1には、すでにハッシュ値h10が格納済みである。
 この場合、ハッシュ値h10を記憶領域M1から読み出して記憶領域M1を空にする。そして、読み出したハッシュ値h10とハッシュ値h11とを結合して結合ハッシュ値h10|h11とする。結合ハッシュ値h10|h11は、ハッシュ値h10の末尾とハッシュ値h11の先頭とをつなげたコード列である。そして、結合ハッシュ値h10|h11をハッシュ関数H()に与えて、ハッシュ値h10,11が算出される。
 ところが、記憶領域M1のつぎに優先度が高い記憶領域M2には、すでにハッシュ値h8,9が格納済みである。この場合、ハッシュ値h8,9を記憶領域M2から読み出して記憶領域M2を空にする。そして、読み出したハッシュ値h8,9とハッシュ値h10,11とを結合して結合ハッシュ値h8|h11とする。結合ハッシュ値h8|h11は、ハッシュ値h8,9の末尾とハッシュ値h10,11の先頭とをつなげたコード列である。そして、結合ハッシュ値h8|h11をハッシュ関数H()に与えて、ハッシュ値h8,11が算出される。ハッシュ値h8,11は、記憶領域M2のつぎに優先度が高い記憶領域M3に格納される。
 図3-5は、第1の格納処理(その5)を示す説明図である。(M)において、記憶領域M3にはハッシュ値h8,11が格納されており、記憶領域M4にはハッシュ値h0,7が格納されている。入力データf12が取り込まれると、ハッシュ関数H()により、ハッシュ値h12が算出される。ハッシュ値h12は、5個の記憶領域M1~M5のうち優先度が最も高い記憶領域M1に格納される。
 (N)において、記憶領域M1にはハッシュ値h12が格納されており、記憶領域M3にはハッシュ値h8,11が格納されており、記憶領域M4にはハッシュ値h0,7が格納されている。入力データf13が取り込まれると、ハッシュ関数H()により、ハッシュ値h13が算出される。記憶領域M1には、すでにハッシュ値h12が格納済みである。
 この場合、ハッシュ値h12を記憶領域M1から読み出して記憶領域M1を空にする。そして、読み出したハッシュ値h12とハッシュ値h13とを結合して結合ハッシュ値h12|h13とする。結合ハッシュ値h12|h13は、ハッシュ値h12の末尾とハッシュ値h13の先頭とをつなげたコード列である。そして、結合ハッシュ値h12|h13をハッシュ関数H()に与えて、ハッシュ値h12,13が算出される。ッシュ値h12,13は、記憶領域M1のつぎに優先度が高い記憶領域M2に格納される。
 (O)において、記憶領域M2には結合ハッシュ値h12,13が格納されており、記憶領域M3にはハッシュ値h8,11が格納されており、記憶領域M4にはハッシュ値h0,7が格納されている。最後の入力データf14が取り込まれると、ハッシュ関数H()により、ハッシュ値h14が算出される。ハッシュ値h14は、5個の記憶領域のうち優先度が最も高い記憶領域M1に格納される。
 これにより、一連の入力データf0~f14が取り込まれると、記憶領域M1にはハッシュ値h14が格納され、記憶領域M2にはハッシュ値h12,13が格納され、記憶領域M3にはハッシュ値h8,11が格納され、記憶領域M4にはハッシュ値h0,7が格納された状態となる。そして、第2の格納処理(第2のフェーズ)に移行する。
 図4-1は、第2の格納処理(その1)を示す説明図である。(P)において、記憶領域群に格納されているハッシュ値h14,h12,13,h8,11,h0,7を他の記憶領域に退避させ、記憶領域群Mを空にする。退避先の記憶領域Nは、記憶領域群Mと同等のサイズであればよい。(Q)以降では、退避先の記憶領域Nから、記憶領域群Mで格納されていた記憶領域Mjの優先順位j順に取り込まれる。具体的には、ハッシュ値h14,h12,13,h8,11,h0,7の順に取り込まれることとなる。
 (Q)では5個の記憶領域は空である。ハッシュ値h14が取り込まれると、5個の記憶領域のうち優先度が最も高い記憶領域M1に格納される。
 (R)において、記憶領域M1には、ハッシュ値h14が格納されている。ハッシュ値h12,13が取り込まれると、ハッシュ値h14を記憶領域M1から読み出して記憶領域M1を空にする。そして、読み出したハッシュ値h14とハッシュ値h12,13とを結合して結合ハッシュ値h12|h14とする。結合ハッシュ値h12,13|h14は、ハッシュ値h1213の末尾とハッシュ値h14の先頭とをつなげたコード列である。そして、結合ハッシュ値h12,13|h14をハッシュ関数H()に与えて、ハッシュ値h12,14が算出される。ハッシュ値h12,14は、記憶領域M1のつぎに優先度が高い記憶領域M2に格納される。
 図4-2は、第2の格納処理(その2)を示す説明図である。(S)において、記憶領域M2には、ハッシュ値h12,14が格納されている。ハッシュ値h8,11が取り込まれると、5個の記憶領域のうち優先度が最も高い記憶領域M1に格納される。
 (T)において、記憶領域M1にはハッシュ値h8,11が格納されており、記憶領域M2にはハッシュ値h12,14が格納されている。最後のハッシュ値h0,7が取り込まれると、ハッシュ値h8,11を記憶領域M1から読み出して記憶領域M1を空にする。そして、読み出したハッシュ値h8,11とハッシュ値h0,7とを結合して結合ハッシュ値h0,7|h8,11とする。結合ハッシュ値h0,7|h8,11は、ハッシュ値h0,7の末尾とハッシュ値h8,11の先頭とをつなげたコード列である。そして、結合ハッシュ値h0,7|h8,11をハッシュ関数H()に与えて、ハッシュ値h0,11が算出される。
 ところが、記憶領域M1のつぎに優先度が高い記憶領域M2には、すでにハッシュ値h12,14が格納済みである。この場合、ハッシュ値h12,14を記憶領域M2から読み出して記憶領域M2を空にする。そして、読み出したハッシュ値h12,14とハッシュ値h0,11とを結合して結合ハッシュ値h0,11|h12,14とする。結合ハッシュ値h0,11|h12,14は、ハッシュ値h0,11の末尾とハッシュ値h12,14の先頭とをつなげたコード列である。
 そして、結合ハッシュ値h0,11|h12,14をハッシュ関数H()に与えて、ハッシュ値h0,14が算出される。ハッシュ値h0,14は、記憶領域M2のつぎに優先度が高い記憶領域M3に格納される。退避先の記憶領域Nにはハッシュ値がなく、記憶領域群Mには単一のハッシュ値h0,14が残存するため、ハッシュ値h0,14がルートハッシュ値となる。
 図5は、第1の格納処理および第2の格納処理の実行により生成されたハッシュツリーを示す説明図である。符号501~504でそれぞれ囲まれた領域が、第1の格納処理で得られたハッシュツリーを示している。また、符号505で囲まれた領域が、第2の格納処理で得られたハッシュツリーを示している。
(電子署名装置100の機能的構成)
 図6は、本実施の形態にかかる電子署名装置100の機能的構成を示すブロック図である。図6において、電子署名装置100は、取得部601と、演算部602と、判断部603と、格納部604と、設定部605と、選択部606と、決定部607とを含む構成である。この制御部となる機能(取得部601~決定部607)は、具体的には、たとえば、図1に示したレジスタ106、メモリ102、ハードディスクドライブ103などの記憶装置に記憶されたプログラムをCPU101に実行させることにより、または、I/F104により、その機能を実現する。
 取得部601は、連続的に入力されてくる一連の入力データf0~f14を入力順に取得する機能を有する。具体的には、たとえば、動画像や音声などのストリーミングデータSTをGOP単位で分割した入力データ群f0~f14をI/F104で順次取り込み、I/F104のバッファ107から入力順で出力されたデータを取り込む。
 演算部602は、取得部601によって入力データfi(iはi番目の入力の意味)が取得される都度、入力データfiを一方向性関数に与えて入力データfiの固有値を演算する機能を有する。また、後述する設定部605によって設定された対象データを一方向性関数に与えて対象データの固有値を演算する機能を有する。対象データについては後述する。一方向性関数とは、与えられたデータ固有の特徴量(固有値)を出力する関数である。たとえば、ハッシュ関数H()である。ハッシュ関数H()は、与えられたデータ固有のハッシュ値を算出する。
 判断部603は、優先順位が割り当てられている記憶領域群Mの中から選ばれた対象領域が空き領域か否かを判断する機能を有する。記憶領域群Mとは、演算部602から得られたハッシュ値を格納する複数の記憶領域M1~M5である。たとえば、複数個のレジスタ106でもよく、メモリ102やハードディスクドライブ103においてアドレス指定された複数の記憶領域でもよい。対象領域とは、後述する選択部606によって選択された記憶領域Mjである。たとえば、図3-1の(A)に示したように、対象領域である記憶領域M1にはどのハッシュ値も格納されていないため、空であると判断する。一方、図3-1の(B)に示したように、対象領域である記憶領域M1にハッシュ値h0が格納済みであるため、空でないと判断する。
 格納部604は、判断部603によって対象領域が空き領域であると判断された場合、演算部602によって演算された入力データfiまたは対象データの固有値を対象領域に格納する機能を有する。空き領域であれば、そのまま固有値を格納する。たとえば、図3-1の(A)に示したように、対象領域である記憶領域M1は空と判断されるため、ハッシュ値h0を格納する。一方、空き領域でない場合については、後述する。
 設定部605は、判断部603によって対象領域が空き領域でないと判断された場合、対象領域内の格納済み固有値と入力データfiまたは対象データの固有値との結合固有値をあらたに対象データとして設定する機能を有する。具体的には、対象領域が空き領域でない場合は、格納済み固有値との2分木処理を実行する。
 すなわち、現時点での対象データの固有値と対象領域内の格納済み固有値との結合固有値hx|hyを生成する。“hx|hy”(x,yは番号でx<y)は、固有値hxの末尾と固有値hyの先頭をつなげた符号列である。また、hx,yは結合固有値を一方向性関数に与えた場合に得られるあらたな固有値である。このように、結合固有値も対象データとなるため、演算部602に渡されてその固有値が演算されることとなる。
 たとえば、図3-1の(B)に示したように、対象領域である記憶領域M1にはすでにハッシュ値h0が格納済みであるため、ハッシュ値h0とハッシュ値h1とを結合して結合ハッシュ値h0|h1を生成して、対象データに設定する。結合ハッシュ値h0|h1は対象データであるため、上述した演算部602に渡されてハッシュ値h0,1が算出される。
 選択部606は、入力データfiの固有値が演算された場合、記憶領域群Mの中から最優先される記憶領域を対象領域として選択する機能を有する。具体的には、入力データfiの固有値が得られると、最も優先度が高い記憶領域が対象領域となる。
 また、選択部606は、判断部603によって対象領域が空き領域でないと判断された場合、対象領域として選択された記憶領域の次に優先される記憶領域をあらたに対象領域として選択する機能を有する。これにより、次の格納先を確保することができる。たとえば、図3-1の(B)に示したように、対象領域である記憶領域M1にはすでにハッシュ値h0が格納済みであるため、次に優先度が高い記憶領域M2が対象領域に選択される。そして、対象領域である空の記憶領域M2にハッシュ値h0,1が格納されることとなる。
 決定部607は、一連の入力データf0~f14の取得後、記憶領域群Mに格納されている固有値の数に基づいて、一連の入力データf0~f14に対する電子署名の生成元となる固有値を決定する機能を有する、具体的には、たとえば、記憶領域群Mに単一の固有値が残存する場合は、その単一の固有値がルートとなる。したがって、一連の入力データf0~f14に対する電子署名の生成元となる。一方、固有値が複数残存している場合、ハッシュツリーが未完成である。この場合、第2の格納処理(図4-1および図4-2を参照)を実行することとなる。第2の格納処理への移行に際し、2通りの移行方法がある。
 1つ目の移行方法は、図4-1および図4-2に示したように、記憶領域群Mとは異なる他の記憶領域を退避先の記憶領域Nとして、記憶領域群Mに格納されているハッシュ値群を退避先の記憶領域Nに移動させる。そして、記憶領域群Mの各記憶領域M1~M5の優先度にしたがって、退避先の記憶領域Nから順次ハッシュ値を取り出す。
 この場合、選択部606では、記憶領域群Mのうち優先度が最も高い記憶領域M1を対象領域に選択する。そして、判断部603では対象領域が空きであるか否かを判断し、空きであれば退避先の記憶領域から取り出したハッシュ値をそのまま格納する。空きでない場合、上述したように、格納済みハッシュ値との結合ハッシュ値を生成して対象データとする。
 そして、次に優先度が高い記憶領域M2を対象領域に選択し、判断部603により、選択された対象領域が空きか否かを判断する。このあと、結合ハッシュ値をハッシュ関数H()に与えてあらたなハッシュ値を算出する。あらたに選択された対象領域(記憶領域M2)が空きであれば、あらたなハッシュ値が格納される。空きでなければ、対象領域の選択および空きの判断、結合ハッシュ値の生成、対象データの設定、格納を繰り返す。
 2つ目の移行方法は、記憶領域群(以下、第1の記憶領域群)Mと同等の第2の記憶領域群Mを用意しておく。すなわち、第2の記憶領域群Mは、第1の記憶領域群Mと同数かつ同サイズの記憶領域を有し、第1の記憶領域群Mと同じように各記憶領域M1~M5に優先順位が割り当てられている。この場合、取得部601では、第1の記憶領域群Mの中からハッシュ値が格納されている優先順位が最も高い記憶領域から順次ハッシュ値を取り出すこととなる。そして、選択部606は、第2の記憶領域群Mの中から対象領域を選択し、判断部603はその対象領域が空きか否かを判断し、格納部604は空きである場合にハッシュ値を格納することとなる。いずれの移行方法であっても、追加で利用される記憶領域は記憶領域群Mのサイズと同等であるため、省メモリ化を図ることができる。
(ルートハッシュ値生成処理手順)
 図7は、本実施の形態にかかるルートハッシュ値生成処理手順を示すフローチャートである。まず、第1の格納処理を実行し(ステップS701)、第1の格納処理後のハッシュ値の数が単一であるか否かを判断する(ステップS702)。単一でない場合(ステップS702:No)、第2の格納処理を実行し(ステップS703)、再度、ハッシュ値の数が単一であるか否かを判断する(ステップS702)。単一でなければ(ステップS702:No)、単一になるまで第2の格納処理(ステップS703)を実行し続けることとなる。
 一方、ステップS702において、単一である場合(ステップS702:Yes)、単一のハッシュ値をルートハッシュ値に決定し(ステップS704)、ルートハッシュ値と入力データ群とを関連付けて保存する(ステップS705)。これにより、ルートハッシュ値生成処理を終了する。
 図8は、第1の格納処理(ステップS701)の詳細な処理手順を示すフローチャートである。まず、入力データfiの入力順を示す変数iをi=0、記憶領域Mjの優先度を示す変数jをj=1とし(ステップS801)、入力データfiがあるか否かを判断する(ステップS802)。入力データfiがある場合(ステップS802:Yes)、取得部601により、入力データfiを取得し(ステップS803)、演算部602により、入力データfiのハッシュ値hyを算出する(ステップS804)。そして、判断部603により、記憶領域Mjが空であるか否かを判断する(ステップS805)。
 空である場合(ステップS805:Yes)、格納部604により、未格納ハッシュ値hyを記憶領域Mjに格納する(ステップS806)。そして、iをインクリメントし(ステップS807)、ステップS802に戻る。一方、ステップS805において、記憶領域Mjが空でない場合(ステップS805:No)、記憶領域Mjに格納されているハッシュ値hxを読み出して、当該ハッシュ値hxと未格納ハッシュ値hyとを結合して結合ハッシュ値hx|hyを生成する(ステップS808)。これにより、結合ハッシュ値hx|hyがあらたな対象データに設定される。そして、結合ハッシュ値hx|hyのハッシュ値を算出する(ステップS809)。
 このあと、jをインクリメントすることで(ステップS810)、次に優先度が高い記憶領域を対象領域として選択する。そして、j>Jであるか否かを判断する(ステップS811)。Jは記憶領域の総数である。図3-1~図4-2の場合は、J=5である。j>Jである場合(ステップS811:No)、ステップS805に戻る。一方、j>Jである場合(ステップS811:Yes)、未格納ハッシュ値hyを格納させる記憶領域がないため、エラー出力する(ステップS812)。これにより、一連の処理を終了する。また、ステップS802において、入力データfiがない場合(ステップS802:No)、ステップS702に移行する。
 図9は、第2の格納処理(ステップS703)の詳細な処理手順を示すフローチャートである。まず、移行処理(上述した第1または第2の移行方法)を実行する(ステップS901)。つぎに、優先順位を示す変数kをk=J、j=1とする(ステップS902)。そして、優先順位kのハッシュ値があるか否かを判断する(ステップS903)。優先順位kのハッシュ値がない場合(ステップS903:No)、ステップS907に移行する。一方、優先順位kのハッシュ値がある場合(ステップS903:Yes)、取得部601により、優先順位kのハッシュ値を未格納ハッシュ値hyとして取得し(ステップS904)、記憶領域Mjが空か否かを判断する(ステップS905)。
 空である場合(ステップS905:Yes)、未格納ハッシュ値hyを記憶領域Mjに格納する(ステップS906)。そして、ステップS907において、kをデクリメントし(ステップS907)、k<0であるか否かを判断する(ステップS908)。k<0である場合(ステップS908:Yes)、ステップS702に戻る。一方、k<0でない場合(ステップS908:No)、ステップS903に戻る。また、ステップS905において、記憶領域Mjが空でない場合(ステップS905:No)、記憶領域Mjに格納されているハッシュ値hxを読み出して、当該ハッシュ値hxと未格納ハッシュ値hyとを結合して結合ハッシュ値hx|hyを生成する(ステップS909)。
 これにより、結合ハッシュ値hx|hyがあらたな対象データに設定される。そして、結合ハッシュ値hx|hyのハッシュ値を算出する(ステップS910)。このあと、jをインクリメントすることで(ステップS911)、次に優先度が高い記憶領域を対象領域として選択する。そして、j>Jであるか否かを判断する(ステップS912)。j>Jである場合(ステップS912:No)、ステップS905に戻る。一方、j>Jである場合(ステップS912:Yes)、未格納ハッシュ値hyを格納させる記憶領域がないため、エラー出力する(ステップS913)。これにより、一連の処理を終了する。
 図10は、本実施の形態と図11に示した従来技術とを比較した図表である。図10では、従来技術における入力データ数をnとしている。図10において、本実施の形態では、逐次処理が可能であり、レジスタ/メモリ数、撮影(入力データ取り込み)中ハッシュ処理回数、撮影後ハッシュ処理回数が格段に減少している。このように、合計ハッシュ処理回数は同じでも、本実施の形態によれば、レジスタ/メモリ数の大幅削減と、撮影後の後処理の時間を大幅削減することができる。
 なお、本実施の形態で説明したハッシュツリーの生成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本電子署名プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本電子署名プログラムは、インターネット等のネットワーク109を介して配布してもよい。
符号の説明
100 電子署名装置
601 取得部
602 演算部
603 判断部
604 格納部
605 設定部
606 選択部
607 決定部

Claims (5)

  1.  コンピュータを、
     連続的に入力されてくる一連の入力データを入力順に取得する取得手段、
     前記取得手段によって取得された入力データまたは対象データを一方向性関数に与えて前記入力データまたは前記対象データの固有値を演算する演算手段、
     優先順位が割り当てられている記憶領域群の中から選ばれた対象領域が空き領域か否かを判断する判断手段、
     前記判断手段によって前記対象領域が空き領域であると判断された場合、前記演算手段によって演算された前記入力データまたは前記対象データの固有値を前記対象領域に格納する格納手段、
     前記判断手段によって前記対象領域が空き領域でないと判断された場合、前記対象領域内の格納済み固有値と前記入力データまたは前記対象データの固有値との結合固有値をあらたに前記対象データとして設定する設定手段、
     前記入力データの固有値が演算された場合、前記記憶領域群の中から最優先される記憶領域を前記対象領域として選択するとともに、前記判断手段によって前記対象領域が空き領域でないと判断された場合、前記対象領域として選択された記憶領域の次に優先される記憶領域をあらたに前記対象領域として選択する選択手段、
     前記一連の入力データの取得後、前記記憶領域群に格納されている固有値の数に基づいて、前記一連の入力データに対する電子署名の生成元となる固有値を決定する決定手段、
     として機能させることを特徴とする電子署名プログラム。
  2.  前記格納手段は、
     前記一連の入力データの取得後、前記記憶領域群に格納されている固有値の数が複数である場合、当該複数の固有値を前記記憶領域群から退避先となる他の記憶領域に移動させ、
     前記取得手段は、
     前記他の記憶領域に退避させられた前記複数の固有値を、当該固有値について前記記憶領域群に割り当てられていた優先順位に従って取得し、
     前記格納手段は、
     前記判断手段によって前記対象領域が空き領域であると判断された場合、前記取得手段によって前記優先順位に従って前記他の記憶領域から取得された固有値または前記演算手段によって演算された前記対象データの固有値を前記対象領域に格納し、
     前記設定手段は、
     前記判断手段によって前記対象領域が空き領域でないと判断された場合、前記対象領域内の格納済み固有値と前記取得手段または前記演算手段によって得られた固有値との結合固有値をあらたに前記対象データとして設定し、
     前記選択手段は、
     前記記憶領域群の中から最優先される記憶領域を前記対象領域として選択するとともに、前記判断手段によって前記対象領域が空き領域でないと判断された場合、前記対象領域として選択された記憶領域の次に優先される記憶領域をあらたに前記対象領域として選択し、
     前記決定手段は、
     前記複数の固有値の取得後、前記記憶領域群に格納されている固有値の数に基づいて、前記一連の入力データに対する電子署名の生成元となる固有値を決定することを特徴とする請求項1に記載の電子署名プログラム。
  3.  前記取得手段は、
     前記記憶領域群(以下、「第1の記憶領域群」)と同一記憶領域数でかつ優先順位が割り当てられている第2の記憶領域群の中から選ばれた記憶領域を対象領域とし、前記一連の入力データの取得後、前記第1の記憶領域群に格納されている固有値の数が複数である場合、当該複数の固有値を前記第1の記憶領域群に割り当てられていた優先順位に従って取得し、
     前記格納手段は、
     前記判断手段によって前記対象領域が空き領域であると判断された場合、前記取得手段によって前記優先順位に従って前記第1の記憶領域群から取得された固有値または前記演算手段によって演算された前記対象データの固有値を前記対象領域に格納し、
     前記設定手段は、
     前記判断手段によって前記対象領域が空き領域でないと判断された場合、前記対象領域内の格納済み固有値と前記取得手段または前記演算手段によって得られた固有値との結合固有値をあらたに前記対象データとして設定し、
     前記選択手段は、
     前記第2の記憶領域群の中から最優先される記憶領域を前記対象領域として選択するとともに、前記判断手段によって前記対象領域が空き領域でないと判断された場合、前記対象領域として選択された記憶領域の次に優先される記憶領域をあらたに前記対象領域として選択し、
     前記決定手段は、
     前記複数の固有値の取得後、前記第2の記憶領域群に格納されている固有値の数に基づいて、前記一連の入力データに対する電子署名の生成元となる固有値を決定することを特徴とする請求項1に記載の電子署名プログラム。
  4.  連続的に入力されてくる一連の入力データを入力順に取得する取得手段と、
     前記取得手段によって取得された入力データまたは対象データを一方向性関数に与えて前記入力データまたは前記対象データの固有値を演算する演算手段と、
     優先順位が割り当てられている記憶領域群の中から選ばれた対象領域が空き領域か否かを判断する判断手段と、
     前記判断手段によって前記対象領域が空き領域であると判断された場合、前記演算手段によって演算された前記入力データまたは前記対象データの固有値を前記対象領域に格納する格納手段と、
     前記判断手段によって前記対象領域が空き領域でないと判断された場合、前記対象領域内の格納済み固有値と前記入力データまたは前記対象データの固有値との結合固有値をあらたに前記対象データとして設定する設定手段と、
     前記入力データの固有値が演算された場合、前記記憶領域群の中から最優先される記憶領域を前記対象領域として選択するとともに、前記判断手段によって前記対象領域が空き領域でないと判断された場合、前記対象領域として選択された記憶領域の次に優先される記憶領域をあらたに前記対象領域として選択する選択手段と、
     前記一連の入力データの取得後、前記記憶領域群に格納されている固有値の数に基づいて、前記一連の入力データに対する電子署名の生成元となる固有値を決定する決定手段と、
     を備えることを特徴とする電子署名装置。
  5.  コンピュータが、
     連続的に入力されてくる一連の入力データを入力順に取得する取得工程と、
     前記取得工程によって取得された入力データまたは対象データを一方向性関数に与えて前記入力データまたは前記対象データの固有値を演算する演算工程と、
     優先順位が割り当てられている記憶領域群の中から選ばれた対象領域が空き領域か否かを判断する判断工程と、
     前記判断工程によって前記対象領域が空き領域であると判断された場合、前記演算工程によって演算された前記入力データまたは前記対象データの固有値を前記対象領域に格納する格納工程と、
     前記判断工程によって前記対象領域が空き領域でないと判断された場合、前記対象領域内の格納済み固有値と前記入力データまたは前記対象データの固有値との結合固有値をあらたに前記対象データとして設定する設定工程と、
     前記入力データの固有値が演算された場合、前記記憶領域群の中から最優先される記憶領域を前記対象領域として選択するとともに、前記判断工程によって前記対象領域が空き領域でないと判断された場合、前記対象領域として選択された記憶領域の次に優先される記憶領域をあらたに前記対象領域として選択する選択工程と、
     前記一連の入力データの取得後、前記記憶領域群に格納されている固有値の数に基づいて、前記一連の入力データに対する電子署名の生成元となる固有値を決定する決定工程と、
     を実行することを特徴とする電子署名方法。
PCT/JP2009/053718 2009-02-27 2009-02-27 電子署名プログラム、電子署名装置、および電子署名方法 WO2010097942A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP09840795.0A EP2402882A4 (en) 2009-02-27 2009-02-27 PROGRAM, DEVICE AND METHOD FOR ELECTRONIC SIGNATURE
JP2011501424A JP5174233B2 (ja) 2009-02-27 2009-02-27 電子署名プログラム、電子署名装置、および電子署名方法
PCT/JP2009/053718 WO2010097942A1 (ja) 2009-02-27 2009-02-27 電子署名プログラム、電子署名装置、および電子署名方法
US13/137,543 US8566597B2 (en) 2009-02-27 2011-08-24 Digital signature program, digital signature apparatus, and digital signature method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/053718 WO2010097942A1 (ja) 2009-02-27 2009-02-27 電子署名プログラム、電子署名装置、および電子署名方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/137,543 Continuation US8566597B2 (en) 2009-02-27 2011-08-24 Digital signature program, digital signature apparatus, and digital signature method

Publications (1)

Publication Number Publication Date
WO2010097942A1 true WO2010097942A1 (ja) 2010-09-02

Family

ID=42665170

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/053718 WO2010097942A1 (ja) 2009-02-27 2009-02-27 電子署名プログラム、電子署名装置、および電子署名方法

Country Status (4)

Country Link
US (1) US8566597B2 (ja)
EP (1) EP2402882A4 (ja)
JP (1) JP5174233B2 (ja)
WO (1) WO2010097942A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378535B2 (en) * 2013-08-29 2016-06-28 Advanced Micro Devices, Inc. Efficient duplicate elimination

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4309569A (en) * 1979-09-05 1982-01-05 The Board Of Trustees Of The Leland Stanford Junior University Method of providing digital signatures
JP2005032130A (ja) * 2003-07-10 2005-02-03 Sony Corp データ管理装置、およびデータ管理方法、並びにコンピュータ・プログラム
WO2006132143A1 (ja) * 2005-06-10 2006-12-14 Matsushita Electric Industrial Co., Ltd. 認証システム、認証装置、端末装置及び検証装置
WO2008026238A1 (fr) * 2006-08-28 2008-03-06 Mitsubishi Electric Corporation Système de traitement de données, procédé de traitement de données, et programme
JP2008178048A (ja) 2007-01-22 2008-07-31 Fujitsu Ltd 電子署名プログラム、該プログラムを記録した記録媒体、電子署名装置、および電子署名方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
NZ500194A (en) * 1997-03-21 2000-12-22 Canal Plus Sa Broadcasting randomized subscriber entitlement management messages for digital television
US6128623A (en) * 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache
US6959384B1 (en) * 1999-12-14 2005-10-25 Intertrust Technologies Corporation Systems and methods for authenticating and protecting the integrity of data streams and other data
US7043637B2 (en) * 2001-03-21 2006-05-09 Microsoft Corporation On-disk file format for a serverless distributed file system
US7996679B2 (en) * 2005-10-05 2011-08-09 International Business Machines Corporation System and method for performing a trust-preserving migration of data objects from a source to a target
JP4622811B2 (ja) * 2005-11-04 2011-02-02 株式会社日立製作所 電子文書の真正性保証システム
US8131998B2 (en) * 2007-03-05 2012-03-06 George Mason Intellectual Properties, Inc. Transparent authentication of continuous data streams
JP4584300B2 (ja) * 2007-12-19 2010-11-17 富士通株式会社 電子署名プログラム、コンピュータにより読み取り可能な記録媒体、電子署名装置、電子署名方法
US8572409B2 (en) * 2008-09-26 2013-10-29 Stephen P. Spackman Method and apparatus for non-redundant encrypted storage

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4309569A (en) * 1979-09-05 1982-01-05 The Board Of Trustees Of The Leland Stanford Junior University Method of providing digital signatures
JP2005032130A (ja) * 2003-07-10 2005-02-03 Sony Corp データ管理装置、およびデータ管理方法、並びにコンピュータ・プログラム
WO2006132143A1 (ja) * 2005-06-10 2006-12-14 Matsushita Electric Industrial Co., Ltd. 認証システム、認証装置、端末装置及び検証装置
WO2008026238A1 (fr) * 2006-08-28 2008-03-06 Mitsubishi Electric Corporation Système de traitement de données, procédé de traitement de données, et programme
JP2008178048A (ja) 2007-01-22 2008-07-31 Fujitsu Ltd 電子署名プログラム、該プログラムを記録した記録媒体、電子署名装置、および電子署名方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2402882A4

Also Published As

Publication number Publication date
US8566597B2 (en) 2013-10-22
EP2402882A4 (en) 2014-09-17
US20110314291A1 (en) 2011-12-22
JPWO2010097942A1 (ja) 2012-08-30
EP2402882A1 (en) 2012-01-04
JP5174233B2 (ja) 2013-04-03

Similar Documents

Publication Publication Date Title
US8331703B2 (en) Parallel image encoding
JP4746640B2 (ja) 動的イメージのモーション遷移処理方法とそのシステム、及び、そのプログラムを記録したコンピュータ読み取り可能な記録媒体
WO2012105593A1 (ja) データフローグラフ処理装置、データフローグラフ処理方法およびデータフローグラフ処理プログラム
JP4876051B2 (ja) 画像処理装置及びその制御方法
JP5174233B2 (ja) 電子署名プログラム、電子署名装置、および電子署名方法
JP4079965B2 (ja) 復号化システム
USRE45300E1 (en) Context-adaptive variable length coder with simultaneous storage of incoming data and generation of syntax elements
JP4045823B2 (ja) 画像処理装置および画像処理方法
JP4128439B2 (ja) 配列圧縮方法
JP2010097346A (ja) 画像処理装置、プログラム及びシステム
JP7172687B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JPH1153189A (ja) 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体
JP2001243018A (ja) データ変換装置
JP6951168B2 (ja) 画像処理装置及びその制御方法及びプログラム
KR102573202B1 (ko) 연산 회로, 그것의 연산 방법 및 뉴럴 네트워크 장치
US9456191B2 (en) Reproduction apparatus and reproduction method
JP5521501B2 (ja) 画像処理装置、および、画像処理方法
US20210067788A1 (en) Information processing apparatus, information processing method, and storage medium
JP2004104773A5 (ja)
US7941638B2 (en) Facilitating fast scanning for control transfer instructions in an instruction fetch unit
JP3328211B2 (ja) データ列制御装置
WO2015037265A1 (ja) データ圧縮方法及びその装置並びにそのプログラム
US20210089501A1 (en) Compression System with Longest Match Processing for Generating Compressed Data
JP2014026575A (ja) テスト装置、テスト方法及びテストプログラム
CN116977151A (zh) 一种图像填充方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09840795

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2011501424

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2009840795

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE