WO2005098795A1 - 整数を加算するコンピュータシステム - Google Patents

整数を加算するコンピュータシステム Download PDF

Info

Publication number
WO2005098795A1
WO2005098795A1 PCT/JP2005/005136 JP2005005136W WO2005098795A1 WO 2005098795 A1 WO2005098795 A1 WO 2005098795A1 JP 2005005136 W JP2005005136 W JP 2005005136W WO 2005098795 A1 WO2005098795 A1 WO 2005098795A1
Authority
WO
WIPO (PCT)
Prior art keywords
group
addition
computer system
instruction group
unit
Prior art date
Application number
PCT/JP2005/005136
Other languages
English (en)
French (fr)
Inventor
Yuichi Futa
Motoji Ohmori
Hiroyuki Shizuya
Masahiro Mambo
Masato Yamamichi
Original Assignee
Matsushita Electric Industrial Co., Ltd.
Yamamichi, Masami
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 Matsushita Electric Industrial Co., Ltd., Yamamichi, Masami filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to EP05727024A priority Critical patent/EP1732052B1/en
Priority to DE602005025615T priority patent/DE602005025615D1/de
Priority to US10/591,846 priority patent/US7434898B2/en
Priority to JP2006511988A priority patent/JPWO2005098795A1/ja
Publication of WO2005098795A1 publication Critical patent/WO2005098795A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation

Definitions

  • the present invention relates to a tamper-resistant software technology that makes it difficult to analyze a computer program.
  • an encryption program (encryption software) is used for performing secret communication or authenticating a partner.
  • Patent Document 1 discloses a technique that makes it difficult to estimate the original operation and data by converting the operation and data areas.
  • Integers k and k are stored in advance, and the input data a
  • Patent document 1 U.S. Pat.
  • Patent Document 2 Japanese Patent No. 3402441
  • Patent Document 3 Japanese Patent No. 2760799 Patent Publication
  • Non-Patent Document 1 Tatsuaki Okamoto, Hiroshi Yamamoto, “Contemporary Cryptography”, Industrial Books (1997)
  • Non-Patent Aiden 2 Henn and ohen, A Course in Computational Algebraic Number
  • Non-Patent Document 3 1.Blake, G. Seroussi and N. Smart, "Elliptic Curves in
  • Patent Document 4 N. Kuniniro and K. Koyama, "Two Discrete Log Algorithms for
  • the present invention is a computer system for adding two or more integers, which stores a computer program configured by combining a plurality of computer instructions.
  • a memory unit and a processor that reads and decodes one computer instruction at a time from the computer program stored in the storage unit, and operates according to the decoding result.
  • the computer system is an information security device that safely and reliably handles the target information
  • the computer program further includes a security instruction group for performing a security process on the target information
  • the security instruction group includes: In the addition operation, the conversion instruction group, the operation instruction group, and the inverse conversion instruction group may be used.
  • the group G may be a multiplicative group of a remainder integer ring
  • the conversion instruction group may perform a power to each integer
  • the operation instruction group may perform a multiplication on the element.
  • the operation performed after the conversion is multiplication, which is different from addition, so that the operation S can be hidden.
  • the group G is represented by using two prime numbers p and q and a positive integer m.
  • n p m X q is a multiplicative group of Z / nZ
  • the conversion instruction group may perform a power to each integer
  • the operation instruction group may perform a multiplication on the element.
  • the operation performed after the conversion is multiplication, which is different from addition, so that the operation S can be hidden.
  • the subgroup S is a group of anomalous elliptic curves
  • the conversion instruction group performs multiplication on the elliptic curve for each integer
  • the operation instruction group is an ellipse with respect to the element.
  • An addition on a curve may be performed.
  • the group G is a direct product of two groups of anomalous elliptic curves
  • the conversion instruction group performs multiplication on each elliptic curve on an integer
  • the operation instruction group performs a multiplication on the elliptic curve with respect to the element. May be added.
  • the operation performed after the conversion is an addition on an elliptic curve, which is different from the addition of integers, so that the operation can be hidden.
  • the group of inverse conversion instructions further stores a plurality of powers and powers or multiplications of the respective powers in association with each other. The inverse calculation of may be obtained.
  • the information security device decrypts or decrypts the target information based on the key information
  • the security instruction group encrypts or decrypts the target information based on the key information.
  • the decoding or decryption includes an addition operation of the key information or the secondary key information obtained from the key information, and the target information or the secondary information obtained from the target information.
  • Group, the operation instruction group, and the inverse transformation instruction group, the key information or the secondary key information obtained from the key information is added to the target information or the secondary target information obtained from the target information. Is also good.
  • the information security device performs digital signature or signature verification on the target information based on the key information
  • the security instruction group performs digital signature or signature on the target information based on the key information.
  • the digital signature or signature verification includes an addition operation of the key information or the secondary key information obtained from the key information and the target information or the secondary target information obtained from the target information.
  • Addition may be performed using the conversion instruction group, the operation instruction group and the inverse conversion instruction group, the key information or secondary key information obtained from the key information, and the target information or the secondary target information obtained from the target information.
  • the operation itself can be concealed not only by concealing the value used for the operation, and its value is large.
  • FIG. 1 is a configuration diagram showing a configuration of a content distribution system 10.
  • FIG. 2 is a block diagram showing a configuration of a content server device 100.
  • FIG. 3 is a flowchart illustrating the contents of a content distribution program 131.
  • FIG. 4 is a flowchart illustrating the contents of a content encryption program 132.
  • FIG. 5 is a configuration diagram showing a configuration of an encryption program 133.
  • FIG. 6 is a flowchart illustrating the contents of a symbol control module 141. Continue to Figure 7.
  • FIG. 7 is a flowchart illustrating the contents of a symbol control module 141. Continued from Figure 6
  • FIG. 8 is a block diagram showing a configuration of a personal computer 200.
  • FIG. 9 is a flowchart illustrating the contents of a content reception program 231.
  • FIG. 10 is a flowchart illustrating the contents of a content decryption program 232.
  • FIG. 11 is a configuration diagram showing a configuration of a decryption program 234.
  • FIG. 12 is a flowchart illustrating the contents of a decryption control module 241.
  • FIG. 13 is a flowchart illustrating the contents of a decryption control module 241. Continued from Figure 12.
  • FIG. 14 is a configuration diagram showing a configuration of an addition module 243.
  • FIG. 15 is a flowchart showing an addition operation by an addition module 243.
  • FIG. 16 is a configuration diagram showing a configuration of an addition module 501.
  • FIG. 17 is a flowchart showing an addition operation performed by an addition module 501.
  • FIG. 18 is a configuration diagram showing a configuration of an addition module 601.
  • FIG. 19 is a flowchart showing an addition operation by an addition module 601.
  • a content distribution system 10 according to a first embodiment of the present invention will be described.
  • the content distribution system 10 includes a content server device 100, a distribution server device 300a, a broadcasting device 300b, a BD manufacturing device 300c, a personal computer 200, a digital broadcast receiving device 200a, and a BD reproducing device 200b. Te, ru.
  • the content server device 100 stores movie content composed of video data and sound data, and encrypts the stored content in response to a request from the distribution server device 300a. It generates encrypted content and transmits the generated content to the distribution server device 300a connected via the dedicated line 21.
  • the distribution server device 300a receives the encrypted content and transmits the encrypted content to the personal computer 200 connected via the Internet 20.
  • the personal computer 200 receives the content, decodes the received content, generates decoded content, reproduces the generated content, and outputs video and audio.
  • the content server device 100 generates an encrypted content in response to a request from the broadcasting device 300b, and connects the generated content to the content server device via the dedicated line 22.
  • the broadcast device 300b receives the encrypted content and broadcasts the received encrypted content on a broadcast wave
  • the digital broadcast receiving device 200a receives the broadcast wave and receives the broadcast content from the received broadcast wave. Is extracted, the extracted encrypted content is decrypted to generate decrypted content, and the generated decrypted content is reproduced to output video and audio.
  • content server apparatus 100 generates a ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ content in response to a request from BD manufacturing apparatus 300c, and transmits the generated ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ content via dedicated line 23.
  • the BD manufacturing device 300c receives the encrypted content and writes the received encrypted content on the recording medium 400.
  • the recording medium 400 on which the encrypted content is written is sold and purchased by the user.
  • the user reads the encrypted content from the recording medium 400, decrypts the read encrypted content to generate decrypted content, and reproduces the generated decrypted content. And output video and sound.
  • the content server device 100 is a computer system including a microprocessor 101, a hard disk unit 102, a memory unit 103, an input control unit 104, a display control unit 105, a communication unit 106, and the like.
  • the input control unit 104 and the display control unit 105 are connected to a keyboard 107 and a monitor 108, respectively.
  • Communication unit The port 106 is connected to the distribution server device 300a, the broadcast device 300b, and the BD manufacturing device 300c via dedicated lines 21, 22, and 23, respectively.
  • the hard disk unit 102 stores contents 120, contents 121, contents 122, ..., keys 123, keys 124, keys 125, ..., and other computer programs (not shown). are doing.
  • an area for storing the encrypted content 126, the encrypted content 127, the encrypted content 128, and the like is provided.
  • the content 120, the content 121, the content 122, ... respectively correspond to the key 123, the key 124, the key 125, ..., and the encrypted content 126, the encrypted content 127, It supports encrypted content 128, ⁇ ⁇ ⁇ .
  • the content 120, the content 121, the content 122,... are respectively the compressed data in which the video data and the audio data are compressed and encoded with high efficiency.
  • the key 123, the key 124, the key 125, ... are subjected to an encryption algorithm for the content 120, the content 121, the content 122, ..., respectively, so that the encrypted content 126, the encrypted content 127, the encryption
  • These are encryption keys used to generate the content 128,..., Each of which is 64-bit data.
  • the encryption algorithm will be described later.
  • Encrypted contents 126, encrypted contents 127, encrypted contents 128, ... are generated by applying the above-mentioned encryption algorithm to contents 120, contents 121, contents 122, ..., respectively. Encrypted data.
  • the memory unit 103 stores a content distribution program 131, a content number program 132, a number program 133, a transmission program 134, and other programs not shown.
  • Each of these programs is a computer program configured by combining a plurality of instruction codes in a machine language format.
  • the machine language The format is a format that is decoded and executed by the microprocessor 101.
  • each computer program will be described in a flow chart that is separated by an expression using an instruction code in a machine language to facilitate understanding of the content of each computer program.
  • Each computer program will be described using a flowchart.
  • the content distribution program 131 includes instruction code groups S101, S102, S103, and S104, and these instruction code groups are arranged in this order in the content distribution program 131. Are lined up. Each instruction code group includes one or more instruction codes.
  • the instruction code group S101 includes a plurality of instruction codes indicating that the specification of the content is received from the administrator of the content server device 100 or the specification of the content is received from the device to which the content is distributed.
  • the instruction code group S102 includes a plurality of instruction codes indicating that the designation of the device to which the content is to be distributed is received.
  • the instruction code group S103 specifies the received specification or the content indicated by the received specification, calls the content encryption program 132, and then encrypts the encrypted content generated by the content code program 132.
  • a plurality of instruction codes indicating that the encrypted content 126 is to be written to the hard disk unit 102 are included.
  • the instruction code group S104 includes a plurality of instruction codes indicating that the transmission program 134 is to be called by designating the destination device specified by the received specification and the encrypted content generated and written in the hard disk unit 102. Including. By executing the instruction code group S104, the generated encrypted content is transmitted to the distribution destination device indicated by the received specification.
  • the content day code program 132f (including instruction code groups Slll, S112, S113, S114, S115, and S116, and these instruction code groups are No. 132 in this order.
  • the group contains one or more instruction codes.
  • the instruction code group S111 substitutes a value "-64" as an initial value for a read point indicating the position of data in the content whose specification has been received by a bit, and generates a key corresponding to the content whose specification has been received.
  • the read point having the value “-64” indicates a position outside the content, but the value “ ⁇ 64” is substituted for the read point as an initial value at the beginning of the instruction code group S112 described later. In this case, the read point indicates the position of the beginning of the content.
  • 64 bits are added to the read point, and the read point has a value "0". The position of is shown.
  • the instruction code group S112 adds 64 bits to the read point, and then attempts to read one block of data from the position indicated by the added read point in the content. If the position indicated by the plurality of instruction codes and the read point is within the content, one block of data is read from the position, and if the position indicated by the read point indicates outside the content, And a plurality of instruction codes indicating that an end code indicating that reading of the block has been completed is output.
  • one block is 64-bit data.
  • the instruction code group S113 terminates the processing by the content encryption program 132 when the end code is output from the instruction code group S112, and when the end code is not output, the next instruction code group A plurality of instruction codes indicating that control is transferred to S114 are included.
  • the instruction code group S114 includes a plurality of instruction codes indicating that the symbol program 133 is to be called with the read key and the read one block.
  • the instruction code group S115 includes a plurality of instruction codes indicating that one encrypted block generated by the symbol program 133 is to be written into the hard disk unit 102 as a part of the symbol code content 126. including.
  • the instruction code group S116 next includes an instruction code indicating that control is transferred to the instruction code group S112.
  • the encryption program 133 includes an encryption control module 141, an extended key generation module 142, a rotation module A143, a rotation module B144, a rotation module C145, and a rotation module D146.
  • Each module is a computer program configured by combining a plurality of instruction codes in a machine language format.
  • the machine language form is a form that is decoded and executed by the microprocessor 101.
  • the extended key generation module 142 receives the 64-bit key K from the calling program, and generates eight extended keys Kl, ⁇ 2, ⁇ 3, ⁇ , ⁇ 8 using the received key K, Includes multiple instruction codes to output the generated eight extended keys Kl, ⁇ 2, ⁇ 3, ⁇ , ⁇ 8 to the calling program.
  • the rotation module A143 receives multiple 32-bit data X from the calling program, calculates Rot2 (X) + X + 1 for the data X, and outputs multiple instructions to output the calculation result to the calling program. Including code.
  • Rot2 (X) indicates that 32-bit data X is cyclically shifted left by 2 bits.
  • To shift the 32-bit data X to the left by 2 bits cyclically means to divide the data X into the most significant 2 bits XI and the least significant 30 bits X2, shift X2 to the most significant 30 bits of data X, and This means shifting to the least significant 2 bits of data X.
  • Rotation module B144 includes multiple instruction codes that receive 32-bit data X from the calling program, calculate Rot4 (X) XOR X on data X, and output the operation result to the calling program .
  • Rot4 (X) indicates that data X is cyclically shifted left by 4 bits, and X ⁇ R is an exclusion. Shows the other OR. Shifting 32-bit data X to the left by 4 bits means that data X is divided into the most significant 4 bits XI and the least significant 28 bits X2, and X2 is shifted to the most significant 28 bits of data X. And shift XI to the least significant 4 bits of data X.
  • the rotation module C145 includes multiple instruction codes that receive 32-bit data X from the calling program, calculate Rot8 (X) XOR X for the data X, and output the calculation result to the calling program .
  • Rot8 (X) indicates that the data X is cyclically shifted left by 8 bits.
  • To shift the 32-bit data X to the left by 8 bits cyclically means to divide the data X into the most significant 8 bits XI and the least significant 24 bits X2, and shift X2 to the most significant 24 bits of the data X. , XI to the least significant 8 bits of data.
  • Rotation module D146 receives 32-bit data X and 32-bit data Y from the calling program, calculates Rotl6 (X) + (X AND Y) for data X and data Y, and calculates the calculation result. Includes multiple instruction codes to output to the calling program.
  • Rotl6 (X) indicates that data X is cyclically shifted left by 16 bits, and AND indicates a logical product. Note that shifting the 32-bit data X to the left by 16 bits means that the data X is divided into the most significant 16 bits XI and the least significant 16 bits X2, and X2 is shifted to the most significant 16 bits of data X. , Means to shift XI to the least significant 16 bits of data X.
  • the signal control module 141 includes an instruction code group S121—an instruction code group S140, and these instruction codes are stored in the signal control module 141. , Are arranged in this order.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S121 includes a plurality of instruction codes indicating that a plaintext M and a key K of one block are to be received from the calling program of the symbol control module 141.
  • one block is 64-bit data.
  • the instruction code group SI 22 includes a plurality of instruction codes indicating that the extended key generation module 142 is to be called with the received key K.
  • eight extended keys Kl, ⁇ 2, ⁇ 3, ⁇ , ⁇ 8 are generated as a result.
  • Instruction code group S123 includes an instruction code defining data Ml and an instruction code defining data # 2.
  • Data Ml is the most significant 32-bit data of received plaintext M
  • data M2 is the least significant 32-bit data of received plaintext M.
  • the instruction code group S124 includes a plurality of instruction codes indicating that exclusive OR XOR is performed on the data Ml and the data M2, and the operation result is stored in the variable TMP1.
  • TMP1 M1 XOR M2
  • the instruction code group S125 includes a plurality of instruction codes indicating that the addition is performed on the variable TMP1 and the extended key K1 and the operation result is stored in the variable TMP2.
  • TMP2 TMP1 + K1
  • the instruction code group S126 includes a plurality of instruction codes indicating that the rotation module A143 is called with the variable TMP2 and the operation result is stored in the variable TMP3.
  • TMP3 Rot2 (TMP2) + TMP2 + 1
  • the instruction code group S127 includes a plurality of instruction codes indicating that the rotation module B144 is called with the variable TMP3 and the operation result is stored in the variable TMP4.
  • TMP4 Rot4 (TMP3) XOR TMP3
  • the instruction code group S128 includes a plurality of instruction codes indicating that an exclusive OR XOR operation is performed on the variable TMP4 and the data Ml and the operation result is stored in the variable TMP5.
  • TMP5 TMP4 XOR Ml
  • the instruction code group S129 includes a plurality of instruction codes indicating that the addition is performed on the variable TMP5 and the extended key K2, and the operation result is stored in the variable TMP6.
  • the instruction code group S131 includes a plurality of instruction codes indicating that the rotation module C145 is called with the variable TMP7 and the operation result is stored in the variable TMP8.
  • TMP8 Rot8 (TMP7) XOR TMP7
  • the instruction code group S132 includes a plurality of instruction codes indicating that addition is performed on the variable TMP8 and the extended key K3, and the operation result is stored in the variable TMP9.
  • the instruction code group S133 includes a plurality of instruction codes indicating that the rotation module A143 is called with the variable TMP9 and the operation result is stored in the variable TMP10.
  • TMP10 Rot2 (TMP9) + TMP9 + 1
  • the instruction code group S134 includes a plurality of instruction codes indicating that the rotation module D146 is to be called with the variables TMP7 and TMP10 and the operation result is stored in the variable TMP11.
  • TMPl l Rotl6 (TMP10) + (TMP10 AND TMP7)
  • the instruction code group S135 includes a plurality of instruction codes indicating that exclusive OR XOR is performed on the variable TMP11 and the variable TMP1, and the operation result is stored in the variable TMP12.
  • TMP12 TMP11 XOR TMP1
  • the instruction code group S136 includes a plurality of instruction codes indicating that the addition is performed on the variable TMP12 and the extended key K4 and the operation result is stored in the variable TMP13.
  • the instruction code group S137 includes a plurality of instruction codes indicating that the rotation module A143 is called with the variable TMP13 and the operation result is stored in the variable TMP14.
  • TMP 14 Rot 2 (TMP 13) + TMP13 + 1
  • the instruction code group S138 performs an exclusive OR XOR on the variable TMP14 and the variable TMP4, Includes multiple instruction codes indicating that the operation result is stored in variable TMP15.
  • TMP15 TMP14 XOR TMP4
  • the instruction code group S139 includes a plurality of instruction codes indicating that exclusive OR XOR is performed on the variable TMP15 and the variable TMP12, and the operation result is stored in the variable TMP16.
  • TMP16 TMP15 XOR TMP 12
  • the instruction code group S140 includes a plurality of instruction codes indicating that a 64-bit integer having the variable TMP15 as the most significant 32 bits and the variable TMP16 as the least significant 32 bits is output to the calling program as a 64-bit integer C.
  • the transmission program 134 (not shown) is configured by arranging a plurality of instruction codes.
  • the transmission program 134 receives designation of data and designation of a distribution destination device from a calling program, and transmits the communication unit 106. It includes a plurality of instruction codes indicating that the designated data is to be transmitted to the designated destination device.
  • the personal computer 200 is a computer system including a microprocessor 201, a hard disk unit 202, a memory unit 203, an input control unit 204, a display control unit 205, a communication unit 206, and the like.
  • the input control unit 204 and the display control unit 205 are connected to a keyboard 707 and a monitor 208, respectively.
  • the communication unit 206 is connected to the Internet 20.
  • the digital broadcast receiving device 200a and the BD reproducing device 200b have the same configuration as the personal computer 200, description of these devices will be omitted.
  • the hard disk unit 202 stores a key 222 and has an area for storing a ⁇ - ⁇ content 221.
  • the encrypted content 221 and the key 222 correspond.
  • the encrypted content 221 and the key 222 are the same as the encrypted content 126 and the key 123 stored in the hard disk unit 102 of the content server device 100, respectively.
  • the memory unit 203 stores a content reception program 231, a content decryption program 232, a reproduction program 233, a decryption program 234, and an addition program 235. Further, the memory unit 203 includes a decrypted content area 236. Each of these programs is a combination program composed of a combination of multiple instruction codes in machine language.
  • the machine language form is a form that is decoded and executed by the microprocessor 201.
  • decrypted content area 2366 decrypted content generated by decrypting the ⁇ content is temporarily written.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S201 includes a plurality of instruction codes indicating that the specification of the content is received from the user of the personal computer 200.
  • the instruction code group S202 acquires a content identifier that identifies the content whose specification has been accepted, and indicates that the acquired content identifier is to be transmitted to the distribution server device 300a via the communication unit 206 and the Internet 20. Including the instruction code.
  • the instruction code group S203 is transmitted from the distribution server 300a to the Internet 20 and the communication unit. It includes a plurality of instruction codes indicating that encrypted content is to be received via the unit 206. In this case, the received content is identified by the content identifier.
  • the instruction code group S204 includes a plurality of instruction codes indicating that the received decryption content is to be written to the hard disk unit 202 as the decrypted content 221.
  • the content decryption program 232f includes instruction codes S211, S212, S213, S214, S215, S216, S217, and S218. Within 232, they are arranged in this order. Each instruction code group includes one or more instruction codes.
  • the instruction code group S211 includes a plurality of instruction codes indicating that the user of the personal computer 200 accepts designation of any of the encrypted contents stored in the hard disk unit 202.
  • the instruction code group S212 includes a plurality of instruction codes indicating that the reproduction program 233 stored in the memory unit 203 is called. By executing the instruction code group S212, as a result, the content decryption program 232 and the reproduction program 233 are executed in parallel.
  • the instruction code group S213 substitutes the value "-64" as an initial value into a read point indicating the position of the data in the received content in the received content by a bit, and then accepts the specification. It contains a plurality of instruction codes indicating that a key corresponding to the “ ⁇ ” is read from the hard disk unit 202.
  • the instruction code group S214 adds 64 bits to the read point, and then generates a plurality of instructions indicating that an attempt is made to read one block of data from the position indicated by the added read point in the encrypted content. If the position indicated by the code and the readout point is within the encrypted content, one block of data is read from the position, and if the position indicated by the readout point is outside the ⁇ content. For example, a plurality of instruction codes indicating that an end code indicating that the reading of the block has been completed is output. Here, one block is 64-bit data.
  • the instruction code group S215 terminates the process by the content decryption program 232 when the end code is output from the instruction code group S214, and when the end code is not output, the next instruction code group Contains multiple instruction codes indicating that control is transferred to S216.
  • the instruction code group S216 includes a plurality of instruction codes indicating that the decryption program 234 is to be called, with the read key and the read one block.
  • the instruction code group S 217 includes a plurality of instruction codes indicating that one decrypted block generated by the decryption program 234 is to be written to the decrypted content area 236 of the memory unit 203.
  • the instruction code group S218 includes an instruction code indicating that control is transferred to the instruction code group S214.
  • the playback program, ram 233 includes instruction code groups S218, S219, and S220, and these instruction code groups are arranged in this order within the playback program 233. Have been.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S218 includes a plurality of instruction codes indicating that one or more decrypted blocks are to be read from the decrypted content area 236 of the memory unit 203.
  • the instruction code group S219 generates video data and audio data from the read decoded block, converts the generated video data and audio data into video signals and audio signals, and outputs the video and audio signals to the monitor 208 via the display control unit 205. It contains a plurality of instruction codes indicating output to
  • the instruction code group S220 includes an instruction code indicating that control is transferred to the instruction code group S218 next.
  • the decryption program 234 includes a decryption control module 241, an extended key generation module 242, an addition module 243, a rotation module A244, a rotation module B245, a rotation module C246, and a rotation module. It is composed of Le D247.
  • Each module is a computer program configured by combining a plurality of instruction codes in a machine language format.
  • the machine language form is a form that is decoded and executed by the microprocessor 201.
  • extension key generation module 242, rotation module A244, rotation module B245, rotation module C246, and rotation module D247 are the extension key generation module 142 and rotation module A1 shown in Figure 5, respectively.
  • the decoding control module 241 includes an instruction code group S221 and an instruction code group S240, and these instruction code groups are arranged in this order in the decoding control module 241. Are lined up.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S 221 includes a plurality of instruction codes indicating that one block of the cipher text M and the key K are received from the calling program of the decryption control module 241.
  • one block is 64-bit data.
  • the instruction code group S222 includes a plurality of instruction codes indicating that the extended key generation module 242 is to be called with the received key K.
  • eight extended keys Kl, ⁇ 2, ⁇ 3, ⁇ , ⁇ 8 are generated as a result.
  • Instruction code group S223 includes an instruction code defining data Ml and an instruction code defining data # 2.
  • Data Ml is the most significant 32-bit data of the received ciphertext M
  • data M2 is the least significant 32-bit data of the received ciphertext M.
  • the instruction code group S224 includes a plurality of instruction codes indicating that an exclusive OR XOR operation is performed on the data Ml and the data M2, and the operation result is stored in a variable TMP1.
  • TMP1 M1 XOR M2
  • the instruction code group S226 includes a plurality of instruction codes indicating that the rotation module A244 is called with the variable TMP2 and the operation result is stored in the variable TMP3.
  • TMP3 Rot2 (TMP2) + TMP2 + 1
  • the instruction code group S227 includes a plurality of instruction codes indicating that the rotation module B245 is called with the variable TMP3 and the operation result is stored in the variable TMP4.
  • TMP4 Rot4 (TMP3) XOR TMP3
  • the instruction code group S228 includes a plurality of instruction codes indicating that the exclusive OR X ⁇ R is performed on the variable TMP4 and the data Ml, and the operation result is stored in the variable TMP5.
  • TMP5 TMP4 XOR Ml
  • the instruction code group S230 includes a plurality of instruction codes indicating that the rotation module A244 is called with the variable TMP6 and the operation result is stored in the variable TMP7.
  • TMP7 Rot2 (TMP6) + TMP6 + 1
  • the instruction code group S231 includes a plurality of instruction codes indicating that the rotation module C246 is called with the variable TMP7 and the operation result is stored in the variable TMP8.
  • TMP8 Rot8 (TMP7) XOR TMP7
  • the instruction code group S232 includes a plurality of instruction codes indicating that the addition module 243 is called with the variable TMP8 and the extended key K3, and the operation result is stored in the variable TMP9.
  • TMP9 TMP8 + K3 is calculated by the addition module 243.
  • the instruction code group S233 includes a plurality of instruction codes indicating that the rotation module A244 is called with the variable TMP9 and the operation result is stored in the variable TMP10. No.
  • TMP10 Rot2 (TMP9) + TMP9 + 1
  • the instruction code group S234 includes a plurality of instruction codes indicating that the rotation module D247 is to be called with the variables TMP7 and TMP10 and the operation result is stored in the variable TMP11.
  • TMPl l Rotl6 (TMP10) + (TMP10 AND TMP7)
  • the instruction code group S235 includes a plurality of instruction codes indicating that the exclusive OR is performed on the variable TMP11 and the variable TMP1 and the operation result is stored in the variable TMP12.
  • TMP12 TMP11 XOR TMP1
  • the instruction code group S237 includes a plurality of instruction codes indicating that the rotation module A244 is called with the variable TMP13 and the operation result is stored in the variable TMP14.
  • TMP 14 Rot 2 (TMP 13) + TMP13 + 1
  • the instruction code group S238 includes a plurality of instruction codes indicating that the exclusive OR is performed on the variable TMP14 and the variable TMP4 and the operation result is stored in the variable TMP15.
  • TMP15 TMP14 XOR TMP4
  • the instruction code group S239 includes a plurality of instruction codes indicating that the exclusive OR is performed on the variable TMP15 and the variable TMP12, and the operation result is stored in the variable TMP16.
  • TMP16 TMP15 XOR TMP 12
  • the instruction code group S240 includes a plurality of instruction codes indicating that a 64-bit integer having the variable TMP15 as the most significant 32 bits and the variable TMP16 as the least significant 32 bits is output to the calling program as a 64-bit integer C.
  • the adder module 243 calculates data a + b for the input data a and b, and As shown in FIG. 14, the computer program includes a conversion unit 251, a main operation unit 252, and an inverse conversion unit 253.
  • the conversion unit 251 includes a name storage unit 261 and an exponentiation operation unit 262.
  • the main operation unit 252 includes a parameter storage unit 263 and a multiplication unit 2 64. .
  • the addition module 243 uses a multiplicative group operation of a remainder integer ring Z / nZ composed of mod n integers.
  • L LCM (p — 1, p — 1, ⁇ , p — 1).
  • the input data a and b are each a non-negative integer smaller than L / 2.
  • the conversion unit 251 includes a parameter storage unit 261 and a power operation unit 262.
  • the parameter storage unit 261 stores n and g.
  • the main operation unit 252 includes a parameter storage unit 263 and a multiplication unit 264.
  • the parameter storage unit 263 stores n.
  • the multiplication unit 264 receives g and g from the exponentiation operation unit 262, and receives the received g and g
  • the inverse transform unit 253 includes a parameter storage unit 265, a discrete logarithmic calculation unit 266, and a CRT unit 267.
  • the parameter storage unit 265 stores p, ⁇ ,..., ⁇ .
  • the discrete logarithmic calculation unit 266 receives g from the multiplication unit 264,
  • GCD (a, b, c, ⁇ ⁇ ⁇ indicates the greatest common divisor of a, b, c, ⁇ ⁇ ⁇ .
  • the CRT unit 267 outputs the obtained c to the program that called the addition module 243.
  • the addition module 243 outputs data a + b with respect to the input data a and b.
  • the addition module 243 converts the value to be added. Even when the transform unit 251 and the inverse transform unit 253 are difficult to analyze, the analyst knows the values of g 1, g 2, and g 3
  • the addition module 243 performs multiplication in the main calculation section 252, and it is difficult to estimate that the addition module 243 realizes addition because of the calculation power of this multiplication. Therefore, not only the concealment of the input value to be added but also the addition itself can be concealed. The embodiment is effective.
  • the decryption control module 241 uses the addition module 243 in addition of the key and other data. Therefore, it is difficult to estimate the value to be added, that is, the value of the key. Also, even when the analyst knows the encryption algorithm, it is difficult to guess that the key addition part is performing “addition” with the key. Therefore, even if the analyst makes an attack to search for the key addition part, which is a feature of the cryptographic algorithm, from within the program, it is difficult to find the key addition part, and the attack becomes difficult. Thus, the attack of the analyst becomes difficult, and this embodiment is effective.
  • An addition module 501 may be used instead of the addition module 243 in the first embodiment. Here, the adding module 501 will be described.
  • the calorie calculation module 501 is a computer program that calculates data a + b for input data a and b and outputs data a + b, as shown in FIG.
  • the conversion section 511 includes a name storage section 521, a random number generation section 522, and an exponentiation section 523, and the main calculation section 512
  • the inverse transform unit 513 includes a parameter storage unit 524 and a multiplication unit 525, and includes a parameter storage unit 526, a discrete logarithmic calculation unit 527, and a reduction unit 528.
  • the addition module 501 uses the operation of the multiplicative group of the remainder integer ring ZZnZ composed of the integers of mod n. g is of order of ⁇ ⁇ mod p 2 is a number given in advance belonging to the multiplicative group is the number is p. Also,
  • the input data a and b are non-negative integers smaller than p / 2.
  • the conversion unit 511 includes a parameter storage unit 521, a random number generation unit 522, and a power calculation unit 523.
  • the parameter storage unit 521 stores n and g.
  • the random number generation section 522 generates random numbers Rl and R2 equal to or less than n.
  • the exponentiation operation unit 523 uses the random numbers Rl and R2 generated by the random number generation unit 522 for the input data a and b,
  • g g "(b + n X R2) mod n is calculated.
  • exponentiation operation section 523 outputs calculation results g 1 and g 2 to main operation section 512.
  • the main calculation unit 512 includes a parameter storage unit 524 and a multiplication unit 525.
  • the parameter storage unit 524 stores n.
  • the multiplication unit 525 receives the calculation results g and g from the power operation unit 523, and receives the received g
  • the inverse transform unit 513 includes a parameter storage unit 526, a discrete logarithmic calculation unit 527, and a reduction unit 528.
  • the parameter storage unit 526 stores p.
  • the discrete logarithmic calculation unit 527 receives the calculation result g from the multiplication unit 525, and
  • c g ( ⁇ — ⁇ mod p 2 is calculated, and then c is output to the reduction unit 528.
  • Reduction unit 528 receives c from discrete logarithmic calculation unit 527,
  • c (c — l) / (g ⁇ 1) mod p.
  • the exponentiation operation unit 523 receives the input data a and b from the calling program (step S311), the random number generation unit 522 generates random numbers Rl and R2 equal to or less than n (step S312), and the exponentiation operation unit 523 Is
  • g g "(b + nXR2) mod n is calculated (steps S313-S314).
  • the addition module 501 outputs a + b for the input data a and b.
  • the inverse transform unit 513 further determines the discrete logarithm c of c with respect to g in mod p 2
  • the calorie calculation module 501 calculates the addition result a + b of the input data a and b. Output.
  • the calorie calculation module 501 converts the value to be added in the same manner as the addition module 243 of the first embodiment. It is difficult to infer the value before conversion from. Further, the addition module 501 performs multiplication in the main operation unit 512, and it is difficult to guess that the addition module 501 realizes addition from the calculation power of this multiplication. Therefore, not only the concealment of the value of the input to be added but also the addition itself can be concealed, and the present invention is effective.
  • a power operation in the multiplicative group of the remainder integer ring Z / nZ is performed by the conversion unit 511, and the discrete logarithm problem in the multiplicative group of the remainder integer ring Z / p 2 Z which is a subgroup of the multiplicative group is solved. It is solved by the inverse transform unit 513.
  • the analyst does not know p and q, but can analyze that the conversion unit 511 performs a power operation. This case is a case where only the inverse transform unit 513 is difficult for the analyst to analyze.
  • n is such that it is difficult to factorize it, for example, if it is about 1024 bits, it will be difficult to obtain p and q which are the result of factoring n. If p and q are not obtained, it will be difficult to solve the discrete logarithm problem in the multiplicative group of the remainder integer ring Z / nZ. In general, when the size (original number) of the multiplicative group is large, such as a 1024-bit number, the discrete logarithm problem on it becomes difficult.
  • inverse change if p is known The inverse logarithmic method in the transposing unit 513 allows the discrete logarithm problem in the multiplicative group of Z / p 2 Z to be easily solved.
  • the conversion in the addition module 501 is different from the calorie calculation module 2431 in that it utilizes the fact that if p is known, the inverse conversion is easy, and if it is not known, it is difficult.
  • the calorie counting module 501 may be configured as follows.
  • the calorie calculation module 501 uses the operation of the multiplicative group of the remainder integer ring ZZnZ formed by the integer power of mod n.
  • the discrete logarithmic calculation unit 527 receives the calculation result g from the multiplication unit 525, uses the stored g in the parameter storage unit 526,
  • c g (p_1) mod p m is calculated, and then c is output to the reduction unit 528.
  • the reduction unit 528 receives c from the discrete logarithmic calculation unit 527,
  • the resulting c is output to the calling program.
  • the addition module 601 may be employed instead of the addition module 243 in the first embodiment. Here, the addition module 601 will be described.
  • the addition module 601 uses scalar multiplication on an elliptic curve.
  • Non-Patent Document 3 describes the elliptic curve in detail.
  • the adder module 601 is a computer program that calculates data a + b for input data a and b and outputs data a + b, as in the adder module 243, as shown in FIG.
  • the conversion unit 611 includes a conversion unit 611, a main calculation unit 612, and an inverse conversion unit 613.
  • the conversion unit 611 includes a name storage unit 621 and a scalar multiplication unit 622.
  • the main calculation unit 612 includes a parameter storage unit 623 and an ellipse.
  • the inverse transformation unit 613 includes a curve addition unit 624, and the parameter conversion unit 625 includes a parameter storage unit 625, a reduction unit 626, and a discrete logarithmic calculation unit 627. [0120] 3.2 Definition of various parameters and symbols, and input data conditions
  • A, B, and G are held by the conversion unit 611, the main operation unit 612, and the inverse conversion unit 613.
  • a group consisting of points of an elliptic curve on a field GF (p) having an equation of an elliptic curve E is represented by E (GF
  • E (GF (p)) and E (GF (q)) are regarded as subgroups of E (GF (p)) X E (GF (q)).
  • Non-Patent Document 4 describes the Superanomalous elliptic curve in detail.
  • Input data a and b are non-negative integers smaller than p / 2.
  • the conversion unit 611 includes a parameter storage unit 621 and a scalar multiplication unit 622.
  • the parameter storage unit 621 stores n, A, B, and G.
  • the scalar multiplication unit 622 receives input data a and b from the calling program, and receives n, A, B, and G stored in the parameter storage unit 621 for the received input data a and b. Using,
  • G a * G mod n
  • a * G is a point obtained by adding G a times by adding elliptic curves.
  • a * G mod n is obtained by applying mod n to each coordinate of a * G.
  • the scalar multiplication unit 622 outputs the calculation results G and G to the main calculation unit 612.
  • the main operation unit 612 includes a parameter storage unit 623 and an elliptic curve addition unit 624.
  • the parameter storage unit 623 stores n, A, and B.
  • the elliptic curve addition unit 624 receives the calculation results G and G from the scalar multiplication unit 622, and
  • an elliptic curve is formed for G and G.
  • G G + G mod n
  • the inverse transform unit 613 includes a parameter storage unit 625, a reduction unit 626, and a discrete logarithmic calculation unit 627.
  • the parameter storage unit 625 stores p, A, B, and G mod p.
  • the reduction unit 626 receives the calculation result G from the elliptic curve addition unit 624, and receives the received G
  • G G mod p is calculated, and the calculation result is output to the discrete logarithmic calculation unit 627.
  • Discrete logarithmic calculation section 627 calculates a discrete logarithm c mod p of G with respect to G mod p.
  • c in the elliptic discrete logarithmic calculation unit 627 is the solution of the discrete logarithm problem on the Anomaras elliptic curve.
  • the method of solving the discrete logarithm problem on the Anomaras elliptic curve is described in detail in Non-Patent Document 3 at page 8891. Since the calculation method is described in this document, the description is omitted here.
  • the scalar multiplication unit 622 receives input data a and b from the calling program ( Step S321), for the received input data a and b, using n, A, B, and G stored in the parameter storage unit 621,
  • G a ⁇ G mod n
  • G b * G mod n is calculated (step S322—S323).
  • the elliptic curve addition unit 624 calculates
  • G G + G mod n is calculated (step S324).
  • the discrete logarithm calculator 627 calculates a discrete logarithm c of G with respect to G mod p (step
  • the addition module 601 calculates and outputs a + b for the input data a and b.
  • G a ⁇ G mod n
  • the addition module 601 Since a + b and p, the addition module 601 outputs the addition result a + b of the input data a and b.
  • the Caro calculation module 601 is similar to the Caro calculation module 243 and the Caro calculation module 501, When the value to be added is converted and the conversion unit 611 and the inverse conversion unit 613 are difficult to analyze, it is difficult to estimate the value before the conversion and the value before the conversion.
  • the kazumi calculation module 601 performs elliptic curve addition in the main operation unit 612, and estimates from the calculation of this elliptic curve addition that the addition module 601 realizes addition of integers. It is difficult to do.
  • the adder module 601 performs a scalar multiplication operation on the group of elliptic curves E (GF (p)) XE (GF (q)) on ZZnZ in the conversion unit, and calculates the subgroup E (GF (p))
  • the discrete logarithm problem is solved by the inverse transformer.
  • n is such that it is difficult to perform prime factorization, for example, if it is about 1024 bits, it will be difficult to obtain p and q, which are the result of the prime factorization of n. If p and q are not obtained, it will be difficult to solve the discrete logarithm problem in the group of elliptic curves E (GF (p)) XE (GF (q)) on Z / nZ.
  • the conversion in the addition module 601 differs from the first embodiment in that, as described above, the force S that makes it easy to perform the inverse conversion if p is known is used, and that the conversion is difficult if it is not known.
  • Addition modules 243, 501 and 601 indicate that the addition of two non-negative integers a and b is required.Each addition module adds three or more non-negative integers. You may do it. In this case, the conversion unit of each addition module converts each non-negative integer, the main operation units of the addition modules 243 and 501 multiply each conversion result, and the main operation unit of the addition module 601. Performs elliptic curve addition on each conversion result.
  • the addition module 243, 501 or 601 is used only for the key addition section. Each addition module may be used in another addition section.
  • each adder module is applied to the decryption control module 241.
  • the above signal control module 141, other signal programs, decryption programs, and signatures for generating digital signatures It may be applied to a generation program. As described above, any information processing operation in which an operation by addition appears can be applied.
  • modules 243, 501, and 601 a multiplicative group of a remainder integer ring, a force using a group on an elliptic curve, or another group may be used.
  • addition modules 243 and 501 perform an exponentiation operation to convert an integer
  • addition module 601 performs a scalar multiplication operation of an elliptic curve to convert an integer. May be converted by performing a power operation of.
  • the power operation is a basic operation of a group, that is, an operation for obtaining a result obtained by performing an integer number of times of multiplication in a remainder integer ring and addition of an elliptic curve in a group on an elliptic curve.
  • the exponentiation of the multiplicative group of the remainder integer ring is a power operation
  • the exponentiation of the group on the elliptic curve is a scalar multiplication of the elliptic curve.
  • the addition module 501 solves the discrete logarithm problem in the multiplicative group of the remainder integer ring ZZP 2 Z, which is a “subgroup” of the multiplicative group of the remainder integer ring ZZnZ.
  • the discrete logarithm problem may be solved in the “subgroup” of the other group by the inverse transform unit similarly to the addition module 501.
  • Each of the above devices is, specifically, a computer system including a microprocessor, a ROM, a RAM, a hard disk unit, a display unit, a keyboard, a mouse, and the like.
  • a computer program is stored in the RAM or the hard disk unit.
  • the computer program is configured by combining a plurality of instruction codes indicating instructions to the computer in order to achieve a predetermined function.
  • Each device achieves its function by operating according to the microprocessor power and the computer program. That is, the microprocessor reads each instruction included in the computer program one by one, decodes the read instruction, and operates according to the decoding result.
  • System LSIs are super-multifunctional LSIs manufactured by integrating multiple components on a single chip.
  • a computer system that includes a microprocessor, R ⁇ M, RAM, etc. It is.
  • the RAM stores a computer program. By operating in accordance with the computer program, the microprocessor achieves its functions.
  • each device described above may be configured as an IC card or a single module that is removable from each device.
  • the IC card or the module is a computer system including a microprocessor, a ROM, a RAM, and the like.
  • the IC card or the module may include the above super-multifunctional LSI. By operating according to a microprocessor-powered computer program, the IC card or the module achieves its function. This IC card or this module may have tamper resistance.
  • the present invention may be the method described above. Further, the present invention may be a computer program that realizes these methods by a computer, or may be a computer program. It may be a digital signal consisting of a program.
  • the present invention provides a computer-readable recording medium capable of reading the computer program or the digital signal, for example, a flexible disk, hard disk, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, BD (Blu-ray Disc), semiconductor memory, or the like. Further, the present invention may be the computer program or the digital signal recorded on these recording media.
  • the computer program or the digital signal may be transmitted via an electric communication line, a wireless or wired communication line, a network represented by the Internet, data broadcasting, or the like.
  • the present invention may be a computer system including a microprocessor and a memory, wherein the memory stores the computer program, and the microprocessor operates according to the computer program.
  • the operation itself can be concealed, not only by hiding the value used for the operation. Therefore, it is useful to incorporate the obfuscation software using this technology into devices such as IC cards.
  • Each device, each method, and each computer program that constitute the present invention can be used in any industry where information must be handled safely and securely, in a business-oriented manner, and continuously and repeatedly.
  • each apparatus, each method, and each computer program constituting the present invention can be manufactured and sold in the electric appliance manufacturing industry in a business-wise manner, continuously and repeatedly.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

 演算の内容を解析しにくくするコンピュータシステムを提供する。  べき乗演算部262は、入力データa、bに対し、  ga =ga mod n,gb =gb mod nを計算する。  次に、乗算部264は、ga 及びgb に対し、  gab =ga ×gb  mod nを計算する。  次に、離散対数計算部266は、  gab =gci mod pi (i=1,2,…,k)となるci mod pi −1を求める。  次に、CRT部267は、中国人剰余定理(CRT)により、ci =c mod pi −1(i=1,2,…,k)となるcを求める。

Description

明 細 書 整数を加算するコンピュータシステム
技術分野
[0001] 本発明は、コンピュータプログラムの解析を困難にする耐タンパ一ソフト技術に関す る。
背景技術
[0002] 従来より、コンピュータプログラムに従って動作するプロセッサを備えるコンピュータ システムにおいて、秘密の通信や相手の認証をする際に、暗号プログラム(暗号ソフ トウエア)が用いられる。
このとき、鍵や暗号アルゴリズムなどを含む暗号ソフトウェアをコンピュータシステム にそのまま実装すると、実装された暗号ソフトウェアを解析された場合に、簡単に不 正な使用がされてしまう。このような問題点を解決するために、特許文献 1は、演算及 びデータの領域を変換することにより、元の演算及びデータを推測困難にする技術 を開示している。
[0003] 例えば、入力データ a、 bに対し、加算を施して、加算結果 a + bを出力する加算プロ グラムを想定する。
予め、整数 k、k を保持し、これらを用いて、入力データ a
1 2 、 bを、それぞれ t =k a 1
X a + k , t =k X b + k に変換する。ここで、 「X」は、乗算を示す演算子である。
2 b 1 2
[0004] 次に t
a, t に対して、 t =t +t を計算する。
b ab a b
さらに、 t に対して、 c = (t -2k ) /k を計算する。
ab ab 2 1
次に、演算結果 cを出力する。
上記のように処理すると、 ab a b
=k X a + k +k X b + k
1 2 1 2
=k X (a + b) + 2k より、
1 2
(t -2k ) /k = a + bが成り立つ。
ab 2 1
[0005] 従って、 c = a + bとなり、加算プログラムにより aと bの加算結果が得られる。 特許文献 1 :米国特許第 6594761号公報
特許文献 2 :日本国特許第 3402441号特許公報
特許文献 3 :日本国特許第 2760799号特許公報
非特許文献 1 :岡本龍明、山本博資、「現代暗号」、産業図書(1997年)
非特許乂献 2 : Hennし ohen, A Course in Computational Algebraic Number
Theory", GTM 138, Springer- Verlag, 1993, pp.19-20
非特許文献 3 : 1. Blake, G. Seroussi and N. Smart, "Elliptic Curves in
Cryptography", CAMBRIDGE UNIVERSITY PRESS, 1999
特許文献 4: N. Kuniniro and K. Koyama, "Two Discrete Log Algorithms for
Super- Anomalous Elliptic Curves", SCIS'99, 1999, pp. 869-874
発明の開示
発明が解決しょうとする課題
[0006] 上記従来例の方式によると、変換後の領域においても通常の加算と同じ加算を行う ため、変換後の演算を解析することにより、変換前の演算が加算であることが推測さ れる可能性があるという問題点がある。プログラムにおいて、加算をしている箇所が、 解析者により知られた場合に、その前後の部分がさらに集中して解析されると、どの ような変換を行っているか知られてしまう恐れがある。ゆえに、可能な限り、変換前の 演算を知られなレ、ようにした方がょレ、。
[0007] 本発明は、演算の内容を解析しに《することができるコンピュータシステム、コンビ ユータブログラム、加算方法及び記録媒体を提供することを目的とする。 課題を解決するための手段
[0008] 上記目的を達成するために、本発明は、 2個以上の整数を加算するコンピュータシ ステムであって、複数のコンピュータ命令が組み合わされて構成されるコンピュータプ ログラムを記憶してレ、るメモリ部と、前記記憶手段に記憶されてレ、る前記コンピュータ プログラムから 1個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて 動作するプロセッサとを備え、前記コンピュータプログラムは、各整数に、群 G上の冪 演算を施すことにより、群 Gに属する元を生成する変換命令群と、生成された全ての 前記元に対して、前記加算とは異なる群 G上の基本演算を施して、演算値を生成す る演算命令群と、群 G又は群 Gに真に含まれる部分群 Sにおいて、前記演算値に対 して、前記変換命令群により施される冪演算の逆算を施すことにより、前記整数の加 算値を生成する逆変換命令群とを含むことを特徴とする。
発明の効果
[0009] この構成によると、演算に使用する値の隠蔽だけでなぐ演算そのものを隠蔽するこ とができる。
ここで、前記コンピュータシステムは、対象情報を安全かつ確実に扱う情報セキユリ ティ装置であって、前記コンピュータプログラムは、さらに、対象情報にセキュリティ処 理を施すセキュリティ命令群を含み、前記セキュリティ命令群は、加算演算において 、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いるとしてもよい。
[0010] この構成によると、セキュリティ処理における加算において、使用する値及び演算を 隠蔽することができる。
ここで、前記群 Gは、剰余整数環の乗法群であり、前記変換命令群は、各整数に冪 乗を施し、演算命令群は、前記元に対して、乗算を施すとしてもよい。
この構成によると、変換後に施される演算は、乗算であり、加算と異なるので、演算 を隠蔽すること力 Sできる。
[0011] ここで、前記群 Gは、 2つの素数 p, qと正整数 mを用いて表される
n = pm X qに対し、 Z/nZの乗法群であり、前記変換命令群は、各整数に冪乗を施 し、演算命令群は、前記元に対して、乗算を施すとしてもよい。
この構成によると、変換後に施される演算は、乗算であり、加算と異なるので、演算 を隠蔽すること力 Sできる。
[0012] ここで、前記部分群 Sは、ァノマラス楕円曲線の群であり、前記変換命令群は、各整 数に楕円曲線上の乗算を施し、演算命令群は、前記元に対して、楕円曲線上の加 算を施すとしてもよい。また、前記群 Gは、二つのァノマラス楕円曲線の群の直積で あり、前記変換命令群は、各整数に楕円曲線上の乗算を施し、演算命令群は、前記 元に対して、楕円曲線上の加算を施すとしてもよい。
[0013] これらの構成によると、変換後に施される演算は、楕円曲線上の加算であり、整数 の加算と異なるので、演算を隠蔽することができる。 ここで、さらに、前記逆変換命令群は、複数の冪数と、各冪数による冪乗値又は冪 倍値とを対応付けて記憶しており、その対応付けを検索することにより、冪演算の逆 算を求めるとしてもよい。
[0014] この構成によると、逆変換命令群による逆算が容易である。
ここで、前記情報セキュリティ装置は、鍵情報に基づいて対象情報を喑号ィ匕し又は 復号し、前記セキュリティ命令群は、前記鍵情報に基づいて、対象情報を暗号化し又 は復号し、喑号ィ匕又は復号において、鍵情報又は鍵情報力 得られる二次鍵情報と 、対象情報又は対象情報力 得られる二次対象情報との加算演算が含まれ、前記加 算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用い て、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得ら れる二次対象情報とに、加算を施すとしてもよい。
[0015] この構成によると、暗号化又は復号における加算において、使用する値及び演算 を隠蔽すること力 Sできる。
ここで、前記情報セキュリティ装置は、鍵情報に基づいて対象情報にデジタル署名 を施し又は署名検証を施し、前記セキュリティ命令群は、前記鍵情報に基づいて、対 象情報にデジタル署名を施し又は署名検証を施し、デジタル署名又は署名検証に おいて、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から 得られる二次対象情報との加算演算が含まれ、前記加算演算において、前記変換 命令群、前記演算命令群及び前記逆変換命令群を用いて、鍵情報又は鍵情報から 得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報とに、加 算を施すとしてもよい。
[0016] この構成によると、デジタル署名又は署名検証における加算において、使用する値 及び演算を隠蔽することができる。
以上説明したように、本発明の構成によると、演算に使用する値の隠蔽だけでなぐ 演算そのものを隠蔽することができ、その価値は大きレ、。
図面の簡単な説明
[0017] [図 1]コンテンツ配信システム 10の構成を示す構成図である。
[図 2]コンテンツサーバ装置 100の構成を示すブロック図である。 [図 3]コンテンツ配信プログラム 131の内容を説明するフローチャートである。
[図 4]コンテンツ暗号プログラム 132の内容を説明するフローチャートである。
園 5]暗号プログラム 133の構成を示す構成図である。
[図 6]喑号制御モジュール 141の内容を説明するフローチャートである。図 7へ続く。
[図 7]喑号制御モジュール 141の内容を説明するフローチャートである。図 6から続く
[図 8]パーソナルコンピュータ 200の構成を示すブロック図である。
[図 9]コンテンツ受信プログラム 231の内容を説明するフローチャートである。
[図 10]コンテンツ復号プログラム 232の内容を説明するフローチャートである。
園 11]復号プログラム 234の構成を示す構成図である。
[図 12]復号制御モジュール 241の内容を説明するフローチャートである。図 13へ続く
[図 13]復号制御モジュール 241の内容を説明するフローチャートである。図 12から続 く。
園 14]加算モジュール 243の構成を示す構成図である。
[図 15]加算モジュール 243による加算の動作を示すフローチヤートである。
[図 16]加算モジュール 501の構成を示す構成図である。
[図 17]加算モジュール 501による加算の動作を示すフローチヤートである。
[図 18]加算モジュール 601の構成を示す構成図である。
[図 19]加算モジュール 601による加算の動作を示すフローチヤートである。
発明を実施するための最良の形態
1.コンテンツ配信システム 10
本発明に係る第 1の実施の形態としてのコンテンツ配信システム 10について説明 する。
1. 1 コンテンツ配信システム 10の構成
コンテンツ配信システム 10は、図 1に示すように、コンテンツサーバ装置 100、配信 サーバ装置 300a、放送装置 300b、 BD製造装置 300c、パーソナルコンピュータ 20 0、デジタル放送受信装置 200a及び BD再生装置 200bから構成されてレ、る。 [0019] コンテンツサーバ装置 100は、映像データ及び音データから構成される映画のコン テンッを記憶しており、配信サーバ装置 300aからの要求に応じて、記憶しているコン テンッを暗号化して暗号化コンテンツを生成し、生成した喑号ィ匕コンテンツを専用回 線 21を介して接続されている配信サーバ装置 300aへ送信する。配信サーバ装置 3 00aは、暗号化コンテンツを受信し、インターネット 20を介して接続されているパーソ ナルコンピュータ 200へ暗号化コンテンツを送信する。パーソナルコンピュータ 200 は、喑号ィ匕コンテンツを受信し、受信した喑号ィ匕コンテンツを復号して復号コンテンツ を生成し、生成した復号コンテンツを再生して映像及び音を出力する。
[0020] また、コンテンツサーバ装置 100は、上記と同様に、放送装置 300bからの要求に 応じて、暗号化コンテンツを生成し、生成した喑号ィ匕コンテンツを専用回線 22を介し て接続されている放送装置 300bへ送信する。放送装置 300bは、暗号化コンテンツ を受信し、受信した暗号化コンテンツを放送波に乗せて放送し、デジタル放送受信 装置 200aは、放送波を受信し、受信した放送波から前記喑号ィ匕コンテンツを抽出し 、抽出した暗号化コンテンツを復号して復号コンテンツを生成し、生成した復号コンテ ンッを再生して映像及び音を出力する。
[0021] さらに、コンテンツサーバ装置 100は、上記と同様に、 BD製造装置 300cからの要 求に応じて、喑号ィ匕コンテンツを生成し、生成した喑号ィ匕コンテンツを専用回線 23を 介して接続されている BD製造装置 300cへ送信する。 BD製造装置 300cは、暗号 化コンテンツを受信し、受信した暗号化コンテンツを記録媒体 400に書き込む。暗号 ィ匕コンテンツが書き込まれた記録媒体 400は、販売されて利用者が購入する。利用 者により、記録媒体 400が装着された BD再生装置 200bは、記録媒体 400から前記 暗号化コンテンツを読み出し、読み出した暗号化コンテンツを復号して復号コンテン ッを生成し、生成した復号コンテンツを再生して映像及び音を出力する。
[0022] 1. 2 コンテンツサーバ装置 100
コンテンツサーバ装置 100は、図 2に示すように、マイクロプロセッサ 101、ハードデ イスク部 102、メモリ部 103、入力制御部 104、表示制御部 105及び通信ユニット 106 などから構成されるコンピュータシステムである。入力制御部 104及び表示制御部 10 5は、それぞれ、キーボード 107及びモニタ 108に接続されている。また、通信ュニッ ト 106は、専用回線 21、 22及び 23を介して、それぞれ、配信サーバ装置 300a、放 送装置 300b及び BD製造装置 300cに接続されている。
[0023] ハードディスク部 102及びメモリ部 103には、様々なコンピュータプログラムが記憶 されており、マイクロプロセッサ 101が、前記コンピュータプログラムに従って動作する ことにより、コンテンツサーバ装置 100は、その一部の機能を達成する。
(1)ハードディスク部 102
ハードディスク部 102は、図 2に示すように、コンテンツ 120、コンテンツ 121、コンテ ンッ 122、 · · ·、鍵 123、鍵 124、鍵 125、 · · ·、及び図示していないその他のコンビュ ータプログラムを記憶している。また、暗号化コンテンツ 126、暗号化コンテンツ 127、 暗号化コンテンツ 128、 · · ·を記憶するための領域を備えている。
[0024] コンテンツ 120、コンテンツ 121、コンテンツ 122、…は、それぞれ、鍵 123、鍵 12 4、鍵 125、 · · ·、に対応しており、また、暗号化コンテンツ 126、暗号化コンテンツ 12 7、暗号化コンテンツ 128、 · · ·に対応している。
コンテンツ 120、コンテンツ 121、コンテンツ 122、 · · ·は、それぞれ、映像データ及 び音データが高効率に圧縮符号化された圧縮データである。
[0025] 鍵 123、鍵 124、鍵 125、…は、それぞれ、コンテンツ 120、コンテンツ 121、コン テンッ 122、 …に、暗号化アルゴリズムを施して、暗号化コンテンツ 126、暗号化コ ンテンッ 127、暗号化コンテンツ 128、 · · ·を生成する際に使用される暗号鍵であり、 それぞれ、 64ビット長のデータである。ここで、前記暗号化アルゴリズムについては、 後述する。
[0026] 暗号化コンテンツ 126、暗号化コンテンツ 127、暗号化コンテンツ 128、 · · ·は、そ れぞれ、コンテンツ 120、コンテンツ 121、コンテンツ 122、 …に、前記暗号化アルゴ リズムが施されて生成された暗号化データである。
(2)メモリ部 103
メモリ部 103は、図 2に示すように、コンテンツ配信プログラム 131、コンテンツ喑号 プログラム 132、喑号プログラム 133、送信プログラム 134及び図示していないその 他のプログラムを記憶している。これらのプログラムは、それぞれ、機械語形式の複数 の命令コードを組み合わせて構成されるコンピュータプログラムである。前記機械語 形式は、マイクロプロセッサ 101により解読され実行される形式である。
[0027] 以下において、各コンピュータプログラムの内容を説明する力 S、各コンピュータプロ グラムの内容の理解を容易にするために、機械語形式の命令コードを用いた表現で はなぐフローチャートにより各コンピュータプログラムの内容を表現し、フローチヤ一 トを用いて、各コンピュータプログラムを説明する。
(a)コンテンツ配信プログラム 131
コンテンツ配信プログラム 131は、図 3に示すように、命令コード群 S101、 S102、 S 103及び S104を含んで構成されており、これらの命令コード群は、コンテンツ配信プ ログラム 131内において、この順序で並べられている。各命令コード群は、 1個又は 複数個の命令コードを含んでレ、る。
[0028] 命令コード群 S101は、コンテンツサーバ装置 100の管理者からコンテンツの指定 を受け付け、又はコンテンツの配信先の装置からコンテンツの指定を受け取ることを 示す複数の命令コードを含む。
命令コード群 S102は、コンテンツの配信先の装置の指定を受け取ることを示す複 数の命令コードを含む。
[0029] 命令コード群 S103は、受け付けた指定又は受け取った指定により示されるコンテ ンッを指定して、コンテンツ暗号プログラム 132を呼び出し、次に、コンテンツ喑号プ ログラム 132により生成された暗号化コンテンツを暗号化コンテンツ 126としてハード ディスク部 102へ書き込むことを示す複数の命令コードを含む。
命令コード群 S104は、受け取った指定による配信先の装置と、生成されハードディ スク部 102に書き込まれた暗号化コンテンッとを指定して、送信プログラム 134を呼 び出すことを示す複数の命令コードを含む。命令コード群 S104が実行されることに より、受け取った指定により示される配信先の装置へ、生成された暗号化コンテンツ が送信される。
[0030] (b)コンテンツ喑号プログラム 132
コンテンツ日音号プログラム 132fま、図 4ίこ示すよう (こ、命令コード群 Sl l l、 S112、 S 113、 S114、 S115及び S116を含んで構成されており、これらの命令コード群は、コ ンテンッ喑号プログラム 132内において、この順序で並べられている。各命令コード 群は、 1個又は複数個の命令コードを含んでいる。
[0031] 命令コード群 S111は、指定を受け付けたコンテンツ内におけるデータの位置をビ ットにより示す読出しポイントに、初期値として値「一 64」を代入し、指定を受け付けた コンテンツに対応する鍵をハードディスク部 102から読み出すことを示す複数の命令 コードを含む。ここで、値「一 64」を有する読出しポイントは、前記コンテンツ外の位置 を示しているが、読出しポイントに初期値として値「-64」を代入するのは、後述する 命令コード群 S112の最初の実行において、読出しポイントが、前記コンテンツの先 頭の位置を示すようにするためである。後述する命令コード群 S 112の最初の実行に おいて、前記読出しポイントに 64ビットが加算され、読出しポイントは、値「0」を有す ることになり、この読出しポイントは、前記コンテンツの先頭の位置を示している。
[0032] 命令コード群 S112は、前記読出しポイントに 64ビットをカ卩算し、次に、前記コンテ ンッにおいて、加算された読出しポイントにより示される位置から 1ブロック分のデータ の読出しを試みることを示す複数の命令コードと、読出しポイントにより示される位置 が前記コンテンツ内であるならば、当該位置から 1ブロック分のデータを読み出し、読 出しポイントにより示される位置が前記コンテンツの外を示すならば、ブロックの読み 出しが終了したことを示す終了コードを出力することを示す複数の命令コードとを含 む。ここで、 1ブロックは、 64ビット長のデータである。
[0033] 命令コード群 S113は、命令コード群 S112から終了コードが出力された場合には、 コンテンツ暗号プログラム 132による処理を終了し、終了コードが出力されていない 場合には、次の命令コード群 S 114に制御を移すことを示す複数の命令コードを含 む。
命令コード群 S114は、読み出された前記鍵及び読み出された前記 1ブロックを伴 つて、喑号プログラム 133を呼び出すことを示す複数の命令コードを含む。
[0034] 命令コード群 S115は、喑号プログラム 133により生成された 1個の暗号化ブロック を、ハードディスク部 102に対して、喑号ィ匕コンテンツ 126の一部として書き込むこと を示す複数の命令コードを含む。
命令コード群 S116は、次に、制御を命令コード群 S112へ移すことを示す命令コ ードを含む。 [0035] (c)暗号プログラム 133
暗号プログラム 133は、図 5に示すように、暗号制御モジュール 141、拡張鍵生成 モジュール 142及びローテーションモジユーノレ A143、ローテーションモジュール B1 44、ローテーションモジュール C145及びローテーションモジュール D146から構成 されている。
[0036] 各モジュールは、機械語形式の複数の命令コードを組み合わせて構成されるコン ピュータプログラムである。前記機械語形式は、マイクロプロセッサ 101により解読さ れ実行される形式である。
(拡張鍵生成モジュール 142)
拡張鍵生成モジュール 142は、呼出し元のプログラムから、 64ビットの鍵 Kを受け 取り、受け取った鍵 Kを用いて、 8個の拡張鍵 Kl、 Κ2、 Κ3、 · · ·、 Κ8を生成し、生成 した 8個の拡張鍵 Kl、 Κ2、 Κ3、 · · ·、 Κ8を呼出し元のプログラムへ出力する複数の 命令コードを含む。
[0037] なお、拡張鍵を生成する方法については、特許文献 3に記載されているため、説明 を省略する。
(ローテーションモジュール A143)
ローテーションモジユーノレ A143は、呼出し元のプログラムから 32ビットのデータ X を受け取り、データ Xに対して、 Rot2 (X) +X+ 1を演算し、演算結果を呼出し元の プログラムへ出力する複数の命令コードを含む。
[0038] ここで、 Rot2 (X)は、 32ビットのデータ Xを左へ 2ビット循環シフトすることを示す。
なお、 32ビットのデータ Xを左へ 2ビット循環シフトするとは、データ Xを最上位 2ビット XIと最下位 30ビット X2に分け、 X2を、データ Xの最上位 30ビットにシフトし、 XIを データ Xの最下位 2ビットにシフトすることを言う。
(ローテーションモジュール B144)
ローテーションモジュール B144は、呼出し元のプログラムから 32ビットのデータ Xを 受け取り、データ Xに対して、 Rot4 (X) XOR Xを演算し、演算結果を呼出し元の プログラムへ出力する複数の命令コードを含む。
[0039] ここで、 Rot4 (X)は、データ Xを左へ 4ビット循環シフトすることを示し、 X〇Rは、排 他的論理和を示す。なお、 32ビットのデータ Xを左へ 4ビット循環シフトするとは、デ ータ Xを最上位 4ビット XIと最下位 28ビット X2に分け、 X2を、データ Xの最上位 28ビ ットにシフトし、 XIをデータ Xの最下位 4ビットにシフトすることを言う。
[0040] (ローテーションモジュール C145)
ローテーションモジュール C145は、呼出し元のプログラムから 32ビットのデータ X を受け取り、データ Xに対して、 Rot8 (X) XOR Xを演算し、演算結果を呼出し元 のプログラムへ出力する複数の命令コードを含む。
ここで、 Rot8 (X)は、データ Xを左へ 8ビット循環シフトすることを示す。なお、 32ビ ットのデータ Xを左へ 8ビット循環シフトするとは、データ Xを最上位 8ビット XIと最下 位 24ビット X2に分け、 X2を、データ Xの最上位 24ビットにシフトし、 XIをデータ の 最下位 8ビットにシフトすることを言う。
[0041] (ローテーションモジュール D146)
ローテーションモジュール D146は、呼出し元のプログラムから 32ビットのデータ X 及び 32ビットのデータ Yを受け取り、データ X及びデータ Yに対して、 Rotl6 (X) + ( X AND Y)を演算し、演算結果を呼出し元のプログラムへ出力する複数の命令コ ードを含む。
[0042] ここで、 Rotl6 (X)は、データ Xを、左へ 16ビット循環シフトすることを示し、 ANDは 、論理積を示す。なお、 32ビットのデータ Xを左へ 16ビット循環シフトするとは、デー タ Xを最上位 16ビット XIと最下位 16ビット X2に分け、 X2を、データ Xの最上位 16ビ ットにシフトし、 XIをデータ Xの最下位 16ビットにシフトすることを言う。
[0043] (暗号制御モジュール 141)
喑号制御モジュール 141は、図 6及び図 7に示すように、命令コード群 S121—命 令コード群 S140を含んで構成されており、これらの命令コード群は、喑号制御モジュ ール 141内において、この順序で並べられている。各命令コード群は、 1個又は複数 個の命令コードを含む。
[0044] 命令コード群 S121は、喑号制御モジュール 141の呼出し元のプログラムから、 1ブ ロックの平文 M及び鍵 Kを受け取ることを示す複数の命令コードを含む。ここで、 1ブ ロックは、 64ビット長のデータである。 命令コード群 SI 22は、受け取った鍵 Kを伴って、拡張鍵生成モジュール 142を呼 び出すことを示す複数の命令コードを含む。命令コード群 S122が実行されると、そ の結果、 8個の拡張鍵 Kl、 Κ2、 Κ3、 · · ·、 Κ8が生成される。
[0045] 命令コード群 S123は、データ Mlを定義する命令コード及びデータ Μ2を定義する 命令コードを含む。データ Mlは、受け取った平文 Mの最上位の 32ビットのデータで あり、データ M2は、受け取った平文 Mの最下位の 32ビットのデータである。
命令コード群 S124は、データ Mlとデータ M2とに排他的論理和 XORを施し、そ の演算結果を変数 TMP1に格納することを示す複数の命令コードを含む。
[0046] TMP1 =M1 XOR M2
命令コード群 S125は、変数 TMP1と拡張鍵 K1とに加算を施し、その演算結果を 変数 TMP2に格納することを示す複数の命令コードを含む。
TMP2=TMP1 + K1
命令コード群 S126は、変数 TMP2を伴って、ローテーションモジユーノレ A143を呼 び出し、その演算結果を変数 TMP3に格納することを示す複数の命令コードを含む
[0047] TMP3 = Rot2 (TMP2) +TMP2 + 1
命令コード群 S127は、変数 TMP3を伴って、ローテーションモジュール B144を呼 び出し、その演算結果を変数 TMP4に格納することを示す複数の命令コードを含む
TMP4 = Rot4 (TMP3) XOR TMP3
命令コード群 S128は、変数 TMP4とデータ Mlとに排他的論理和 XORを施し、そ の演算結果を変数 TMP5に格納することを示す複数の命令コードを含む。
[0048] TMP5=TMP4 XOR Ml
命令コード群 S129は、変数 TMP5と拡張鍵 K2とに加算を施し、その演算結果を 変数 TMP6に格納することを示す複数の命令コードを含む。
TMP6 =TMP5 + K2
命令コード群 S130は、変数 TMP6を伴って、ローテーションモジユーノレ A143を呼 び出し、その演算結果を変数 TMP7に格納することを示す複数の命令コードを含む [0049] TMP7 = Rot2 (TMP6) +TMP6 + 1
命令コード群 S131は、変数 TMP7を伴って、ローテーションモジュール C145を呼 び出し、その演算結果を変数 TMP8に格納することを示す複数の命令コードを含む
TMP8 = Rot8 (TMP7) XOR TMP7
命令コード群 S132は、変数 TMP8と拡張鍵 K3とに加算を施し、その演算結果を 変数 TMP9に格納することを示す複数の命令コードを含む。
[0050] TMP9=TMP8 + K3
命令コード群 S133は、変数 TMP9を伴って、ローテーションモジユーノレ A143を呼 び出し、その演算結果を変数 TMP10に格納することを示す複数の命令コードを含 む。
TMP10 = Rot2 (TMP9) +TMP9 + 1
命令コード群 S134は、変数 TMP7及び変数 TMP10を伴って、ローテーションモ ジュール D146を呼び出し、その演算結果を変数 TMP11に格納することを示す複 数の命令コードを含む。
[0051] TMPl l =Rotl6 (TMP10) + (TMP10 AND TMP7)
命令コード群 S135は、変数 TMP11と変数 TMP1とに排他的論理和 XORを施し、 その演算結果を変数 TMP12に格納することを示す複数の命令コードを含む。
TMP12=TMP11 XOR TMP1
命令コード群 S136は、変数 TMP12と拡張鍵 K4とに加算を施し、その演算結果を 変数 TMP13に格納することを示す複数の命令コードを含む。
[0052] TMP13=TMP12 + K4
命令コード群 S 137は、変数 TMP13を伴って、ローテーションモジユーノレ A143を 呼び出し、その演算結果を変数 TMP14に格納することを示す複数の命令コードを 含む。
TMP 14 = Rot 2 (TMP 13) +TMP13 + 1
命令コード群 S138は、変数 TMP14と変数 TMP4とに排他的論理和 XORを施し、 その演算結果を変数 TMP15に格納することを示す複数の命令コードを含む。
[0053] TMP15=TMP14 XOR TMP4
命令コード群 S 139は、変数 TMP 15と変数 TMP 12とに排他的論理和 XORを施し 、その演算結果を変数 TMP16に格納することを示す複数の命令コードを含む。
TMP16 =TMP15 XOR TMP 12
命令コード群 S140は、変数 TMP15を最上位 32ビット、変数 TMP16を最下位 32 ビットとする 64ビットの整数を暗号文 Cとして、呼出し元のプログラムへ出力することを 示す複数の命令コードを含む。
[0054] (d)送信プログラム 134
送信プログラム 134 (図示していなレ、)は、複数の命令コードが並べられて構成され ており、呼出し元のプログラムから、データの指定及び配信先の装置の指定を受け取 り、通信ユニット 106を制御して、指示されたデータを指定された配信先の装置へ送 信することを示す複数の命令コードを含む。
[0055] 1. 3 パーソナルコンピュータ 200
パーソナルコンピュータ 200は、図 8に示すように、マイクロプロセッサ 201、ハード ディスク部 202、メモリ部 203、入力制御部 204、表示制御部 205及び通信ユニット 2 06などから構成されるコンピュータシステムである。入力制御部 204及び表示制御部 205は、それぞれ、キーボード 707及びモニタ 208に接続されている。また、通信ュ ニット 206は、インターネット 20に接続されている。
[0056] ハードディスク部 202及びメモリ部 203には、様々なコンピュータプログラムが記憶 されており、マイクロプロセッサ 201が、各コンピュータプログラムに従って動作するこ とにより、パーソナルコンピュータ 200は、その一部の機能を達成する。
なお、デジタル放送受信装置 200a及び BD再生装置 200bは、パーソナルコンビュ ータ 200と同様の構成を有しているので、これらの装置についての説明を省略する。
[0057] (1)ハードディスク部 202
ハードディスク部 202は、図 8に示すように、鍵 222を記憶しており、また喑号ィ匕コン テンッ 221を記憶するための領域を備えている。暗号化コンテンツ 221と鍵 222とは 、対応している。 暗号化コンテンツ 221及び鍵 222は、それぞれ、コンテンツサーバ装置 100のハー ドディスク部 102に記憶されている喑号ィ匕コンテンツ 126及び鍵 123と同じものである
[0058] (2)メモリ部 203
メモリ部 203は、図 8に示すように、コンテンツ受信プログラム 231、コンテンツ復号 プログラム 232、再生プログラム 233、復号プログラム 234及び加算プログラム 235を 記憶している。また、メモリ部 203は、復号コンテンツ領域 236を含む。これらのプログ ラムは、それぞれ、機械語形式の複数の命令コードを組み合わせて構成されるコンビ ユータブログラムである。前記機械語形式は、マイクロプロセッサ 201により解読され 実行される形式である。
[0059] 復号コンテンツ領域 236には、喑号ィ匕コンテンツが復号されて生成された復号コン テンッが一時的に書き込まれる。
以下において、各コンピュータプログラムの内容を説明する力 S、各コンピュータプロ グラムの内容の理解を容易にするために、機械語形式の命令コードを用いた表現で はなぐフローチャートにより各コンピュータプログラムの内容を表現し、フローチヤ一 トを用いて、各コンピュータプログラムを説明する。
[0060] (a)コンテンツ受信プログラム 231
コンテンツ受信プログラム 231 ίま、図 9に示すように、命令コード群 S201、 S202、 S
203及び S204を含んで構成されており、これらの命令コード群は、コンテンツ受信プ ログラム 231内において、この順序で並べられている。各命令コード群は、 1個又は 複数個の命令コードを含んでレ、る。
[0061] 命令コード群 S201は、パーソナルコンピュータ 200の利用者からコンテンツの指定 を受け付けることを示す複数の命令コードを含んでいる。
命令コード群 S202は、指定を受け付けた前記コンテンツを識別するコンテンツ識 別子を取得し、取得したコンテンツ識別子を、通信ユニット 206及びインターネット 20 を介して、配信サーバ装置 300aへ送信することを示す複数の命令コードを含んでレ、 る。
[0062] 命令コード群 S203は、配信サーバ装置 300aから、インターネット 20及び通信ュニ ット 206を介して、暗号化コンテンツを受信することを示す複数の命令コードを含んで いる。ここで、受信する前記喑号ィ匕コンテンツは、前記コンテンツ識別子により識別さ れるものである。
命令コード群 S204は、受信した喑号ィ匕コンテンツをハードディスク部 202へ、喑号 化コンテンツ 221として書き込むことを示す複数の命令コードを含んでいる。
[0063] (b)コンテンツ復号プログラム 232
コンテンツ復号プログラム 232fま、図 1CHこ示すよう ίこ、命令コード群 S211、 S212、 S213、 S214、 S215、 S216、 S217及び S218を含んで構成されており、これらの 命令コード群は、コンテンツ復号プログラム 232内において、この順序で並べられて いる。各命令コード群は、 1個又は複数個の命令コードを含んでいる。
[0064] 命令コード群 S211は、パーソナルコンピュータ 200の利用者から、ハードディスク 部 202に記憶されているいずれかの暗号化コンテンツの指定を受け付けることを示 す複数の命令コードを含んでレ、る。
命令コード群 S212は、メモリ部 203に記憶されている再生プログラム 233を呼び出 すことを示す複数の命令コードを含んでいる。命令コード群 S212が実行されることに より、その結果、コンテンツ復号プログラム 232と再生プログラム 233とが並行して実 行される。
[0065] 命令コード群 S213は、指定を受け付けた喑号ィ匕コンテンツ内におけるデータの位 置をビットにより示す読出しポイントに初期値として値「-64」を代入し、次に、指定を 受け付けた喑号ィ匕コンテンツに対応する鍵をハードディスク部 202から読み出すこと を示す複数の命令コードを含んでいる。
命令コード群 S214は、前記読出しポイントに 64ビットを加算し、次に、前記暗号化 コンテンツにおいて、加算された読出しポイントにより示される位置から 1ブロック分の データの読出しを試みることを示す複数の命令コードと、読出しポイントにより示され る位置が前記暗号化コンテンツ内であるならば、当該位置から 1ブロック分のデータ を読み出し、読出しポイントにより示される位置が前記喑号ィ匕コンテンツの外を示す ならば、ブロックの読み出しが終了したことを示す終了コードを出力することを示す複 数の命令コードとを含んでいる。ここで、 1ブロックは、 64ビット長のデータである。 [0066] 命令コード群 S215は、命令コード群 S214から終了コードが出力された場合には、 コンテンツ復号プログラム 232による処理を終了し、終了コードが出力されていない 場合には、次の命令コード群 S216に制御を移すことを示す複数の命令コードを含ん でいる。
命令コード群 S216は、読み出された前記鍵及び読み出された前記 1ブロックを伴 つて、復号プログラム 234を呼び出すことを示す複数の命令コードを含んでレ、る。
[0067] 命令コード群 S217は、復号プログラム 234により生成された 1個の復号ブロックを、 メモリ部 203の復号コンテンツ領域 236へ書き込むことを示す複数の命令コードを含 んでいる。
命令コード群 S218は、次に制御を命令コード群 S214へ移すことを示す命令コー ドを含んでいる。
[0068] (c)再生プログラム 233
再生プロク、、ラム 233ίま、図 10に示すように、命令コード群 S218、 S219及び S220 を含んで構成されており、これらの命令コード群は、再生プログラム 233は内におい て、この順序で並べられている。各命令コード群は、 1個又は複数個の命令コードを 含んでいる。
[0069] 命令コード群 S218は、メモリ部 203が有する復号コンテンツ領域 236から 1個以上 の復号ブロックを読み出すことを示す複数の命令コードを含んでいる。
命令コード群 S219は、読み出した前記復号ブロックから映像データ及び音データ を生成し、生成した映像データ及び音データを映像信号及び音信号に変換して、表 示制御部 205を介して、モニタ 208へ出力することを示す複数の命令コードを含んで いる。
[0070] 命令コード群 S220は、次に制御を命令コード群 S218へ移すことを示す命令コー ドを含んでいる。
(d)復号プログラム 234
復号プログラム 234は、図 11に示すように、復号制御モジュール 241、拡張鍵生成 モジュール 242、加算モジュール 243、ローテーションモジユーノレ A244、ローテーシ ヨンモジュール B245、ローテーションモジュール C246及びローテーションモジユー ル D247から構成されてレ、る。
[0071] 各モジュールは、機械語形式の複数の命令コードを組み合わせて構成されるコン ピュータプログラムである。前記機械語形式は、マイクロプロセッサ 201により解読さ れ実行される形式である。
拡張鍵生成モジュール 242、ローテーションモジユーノレ A244、ローテーションモジ ユール B245、ローテーションモジュール C246及びローテーションモジュール D247 は、それぞれ、図 5に示す拡張鍵生成モジュール 142、ローテーションモジユーノレ A1
43、ローテーションモジュール B144、ローテーションモジュール C145及びローテ一 ションモジュール D 146と同じであるので、説明を省略する。
[0072] (復号制御モジュール 241)
復号制御モジュール 241は、図 12及び図 13に示すように、命令コード群 S221 命令コード群 S240を含んで構成されており、これらの命令コード群は、復号制御モ ジュール 241内において、この順序で並べられている。各命令コード群は、 1個又は 複数個の命令コードを含む。
[0073] 命令コード群 S221は、復号制御モジュール 241の呼出し元のプログラムから、 1ブ ロックの暗号文 M及び鍵 Kを受け取ることを示す複数の命令コードを含む。ここで、 1 ブロックは、 64ビット長のデータである。
命令コード群 S222は、受け取った鍵 Kを伴って、拡張鍵生成モジュール 242を呼 び出すことを示す複数の命令コードを含む。命令コード群 S222が実行されると、そ の結果、 8個の拡張鍵 Kl、 Κ2、 Κ3、 · · ·、 Κ8が生成される。
[0074] 命令コード群 S223は、データ Mlを定義する命令コード及びデータ Μ2を定義する 命令コードを含む。データ Mlは、受け取った暗号文 Mの最上位の 32ビットのデータ であり、データ M2は、受け取った暗号文 Mの最下位の 32ビットのデータである。 命令コード群 S224は、データ Mlとデータ M2とに排他的論理和 XORを施し、そ の演算結果を変数 TMP1に格納することを示す複数の命令コードを含む。
[0075] TMP1 =M1 XOR M2
命令コード群 S225は、変数 TMP1と拡張鍵 K1とを伴って、加算モジュール 243を 呼び出し、その演算結果を変数 TMP2に格納することを示す複数の命令コードを含 む。この結果、加算モジュール 243により、 TMP2=TMP1 + K1が算出される。
[0076] 命令コード群 S226は、変数 TMP2を伴って、ローテーションモジユーノレ A244を呼 び出し、その演算結果を変数 TMP3に格納することを示す複数の命令コードを含む
TMP3 = Rot2 (TMP2) +TMP2 + 1
命令コード群 S227は、変数 TMP3を伴って、ローテーションモジュール B245を呼 び出し、その演算結果を変数 TMP4に格納することを示す複数の命令コードを含む
[0077] TMP4 = Rot4 (TMP3) XOR TMP3
命令コード群 S228は、変数 TMP4とデータ Mlとに排他的論理和 X〇Rを施し、そ の演算結果を変数 TMP5に格納することを示す複数の命令コードを含む。
TMP5=TMP4 XOR Ml
命令コード群 S229は、変数 TMP5と拡張鍵 K2とを伴って、加算モジュール 243を 呼び出し、その演算結果を変数 TMP6に格納することを示す複数の命令コードを含 む。この結果、加算モジュール 243により、 TMP6 =TMP5 + K2が算出される。
[0078] 命令コード群 S230は、変数 TMP6を伴って、ローテーションモジユーノレ A244を呼 び出し、その演算結果を変数 TMP7に格納することを示す複数の命令コードを含む
TMP7 = Rot2 (TMP6) +TMP6 + 1
命令コード群 S231は、変数 TMP7を伴って、ローテーションモジュール C246を呼 び出し、その演算結果を変数 TMP8に格納することを示す複数の命令コードを含む
[0079] TMP8 = Rot8 (TMP7) XOR TMP7
命令コード群 S232は、変数 TMP8と拡張鍵 K3とを伴って、加算モジュール 243を 呼び出し、その演算結果を変数 TMP9に格納することを示す複数の命令コードを含 む。この結果、加算モジュール 243により、 TMP9=TMP8 + K3が算出される。
[0080] 命令コード群 S233は、変数 TMP9を伴って、ローテーションモジユーノレ A244を呼 び出し、その演算結果を変数 TMP10に格納することを示す複数の命令コードを含 む。
TMP10 = Rot2 (TMP9) +TMP9 + 1
命令コード群 S234は、変数 TMP7及び変数 TMP10を伴って、ローテーションモ ジュール D247を呼び出し、その演算結果を変数 TMP11に格納することを示す複 数の命令コードを含む。
[0081] TMPl l =Rotl6 (TMP10) + (TMP10 AND TMP7)
命令コード群 S235は、変数 TMP11と変数 TMP1とに排他的論理和 XORを施し、 その演算結果を変数 TMP12に格納することを示す複数の命令コードを含む。
TMP12=TMP11 XOR TMP1
命令コード群 S236は、変数 TMP12と拡張鍵 K4とを伴って、加算モジュール 243 を呼び出し、その演算結果を変数 TMP13に格納することを示す複数の命令コード を含む。この結果、加算モジュール 243により、 TMP13=TMP12 + K4が算出 される。
[0082] 命令コード群 S237は、変数 TMP13を伴って、ローテーションモジユーノレ A244を 呼び出し、その演算結果を変数 TMP14に格納することを示す複数の命令コードを 含む。
TMP 14 = Rot 2 (TMP 13) +TMP13 + 1
命令コード群 S238は、変数 TMP14と変数 TMP4とに排他的論理和 XORを施し、 その演算結果を変数 TMP15に格納することを示す複数の命令コードを含む。
[0083] TMP15=TMP14 XOR TMP4
命令コード群 S 239は、変数 TMP 15と変数 TMP 12とに排他的論理和 XORを施し 、その演算結果を変数 TMP16に格納することを示す複数の命令コードを含む。
TMP16 =TMP15 XOR TMP 12
命令コード群 S240は、変数 TMP15を最上位 32ビット、変数 TMP16を最下位 32 ビットとする 64ビットの整数を復号文 Cとして、呼出し元のプログラムへ出力することを 示す複数の命令コードを含む。
[0084] (加算モジュール 243)
加算モジュール 243は、入力データ a、 bに対し、データ a + bを演算し、データ a + b を出力するコンピュータプログラムであり、図 14に示すように、変換部 251、主要演算 部 252及び逆変換部 253から構成されており、変換部 251は、ノ メタ格納部 261及 びべき乗演算部 262を含み、主要演算部 252は、パラメタ格納部 263及び乗算部 2 64を含み、逆変換部 253は、パラメタ格納部 265、離散対数計算部 266及び CRT ( Chinese Remainder Theorem)部 267を' sむ。
[0085] (i)各種パラメータ及び記号の定義、並びに入力データの条件
ここで、加算モジュール 243で使用する各種パラメータ及び記号の定義、並びに入 力データの条件について説明する。
p (i=l, 2,…, k)を、それぞれ異なる素数とする。例えば、 p
(i=l, 2,…, k)は、 p =3、p =5、p =7、p = 13、 ···などのように、それぞれ
1 2 3 4
小さい素数である。また、例えば、 k=17である。また、それらの積 p Xp X… Xp
1 2 k を nとする。ここで、 Xは乗算を示す。 nは、例えば、 64ビット程度で表現できる数であ る。例えば、 k=17のとき、 n=p Xp Χ···Χρ >264となる。
1 2 k
[0086] p (i=l, 2, ···, k)は、逆変換部 253により保持され、 nは、変換部 251及び主要 演算部 252により保持されている。
加算モジュール 243では、 mod nの整数から構成される剰余整数環 Z/nZの乗 法群の演算を用いる。 gは、その乗法群に属する予め与えられた数であり、 p (i=l, 2, ···, k)に対して原始元とする。
[0087] 原始元とは、 mを 1, 2, …と動かしたとき、初めて gm = 1 mod p となる mの値 、 p— 1であるような gである。
L = LCM(p —1, p —1, ···, p — 1)とする。ここで、 LCM(p —1, p —1, ···, p
1 2 k 1 2 k
— 1)は、 p — 1, p — 1,…, p _1の最小公倍数(Least Common Multiple)を示す。
1 2 k
[0088] 入力データ a、 bは、それぞれ、 L/2より小さレ、非負整数とする。
(ii)変換部 251の構成
変換部 251は、パラメタ格納部 261及びべき乗演算部 262を含む。
パラメタ格納部 261は、 nと gとを格納してレ、る。
べき乗演算部 262は、入力データ a、 bを受け取り、受け取った入力データ a、 bに対 し、 g =ga mod n,及び
a
g =gb mod nを計算し、得られた g 及び g を主要演算部 252へ出力する。 b a b
[0089] (iii )主要演算部 252の構成
主要演算部 252は、パラメタ格納部 263及び乗算部 264を含む。
パラメタ格納部 263は、 nを格納している。
乗算部 264は、べき乗演算部 262から g 及び g を受け取り、受け取った g 及び g
a b a b に対し、
g =g Xg mod nを計算し、得られた g を逆変換部 253へ出力する。 ab a b ab
[0090] (iv)逆変換部 253の構成
逆変換部 253は、パラメタ格納部 265、離散対数計算部 266及び CRT部 267を含 む。
パラメタ格納部 265は、 p 、ρ 、 ···、ρ を格納している。
1 2 k
離散対数計算部 266は、乗算部 264から g を受け取り、
ab
受け取った g について、 g mod p に対する g mod p (i=l, 2,…, の離散
ab i ab i
対数 Cimod p.-l(i=l, 2, ···, k)を計算する。
[0091] つまり、 g =gci mod p (i=l, 2,…, k)となる c mod p— l(i=l, 2,…, k)
ab i i i
を求める。次に、得られた mod p.-l(i=l, 2, ···, k)を CRT部 267へ出力する 離散対数計算部 266による ci mod pi— 1の計算方法については、様々なものが あるが、以下にその一例を示す。
[0092] wを 1, 2, 3,…と順番に動力して、 gw =g mod p となる wを求める。その wを c
ab i i とする。なお、各 に関し、 g1, g2 ,…,
g(pi2) mod piを計算した結果をテーブルとして保持し、そのテーブルの値から、 g
ab mod p と一致する gwを探す、としてもよレ、。
CRT部 267は、離散対数計算部 266から c mod p— l(i=l, 2,…, k)を受け取
i i
り、中国人剰余定理(CRT)により、受け取った c mod p— l(i=l, 2,…, k)から、
i i
g mod nの g mod nに対する離散対数 c mod Lを求める。つまり、中国人剰 ab
余定理により、 c =c mod p _l(i=l, 2,…, k)となる cを求める。
i i [0093] 離散対数 Ci mod p.-l(i=l, 2,…, から、中国人剰余定理を用いて、 c mod L (ここで、 L=LCM(p -1, p -1, ···, p _1) )を求めるには、次に示すように
1 2 k
する。
ここで、式が複雑になるのを避けるために、 m =p _1とおく。
u =m X(m— 1 mod (m /GCD(m m ))) X (c— c )+c を計算する。
2 1 1 2 1, 2 2 1 1
[0094] ここで、 GCD(a,b,c, · · は、 a,b,c, · · ·の最大公約数 (Greatest Common Divisor)を 示す。
次に、
u =(m X m ) X ((m Xm )— 1 mod (m /GCD(m
1,m
2,m ))) X (c - u )+u
3 1 2 1 2 3 3 3 2 2
を計算し、
u =(m Xm X m ) X ((m Xm X m ) 1 mod (m / GCD(m
1 2 3 1 2 3 4 1,m
2,m ))
4 3,m )
4
X(c u)+u を計算し、
4 3 3
以下順に、同様に、 U
5,U ,' "
6 ,U を計算し、
k-1
u =(m Xm Xm X · · · Xm ) X ((m X m X m · · · X m )
k 1 2 3 k-1 1 2 3 k-1
mod (m /GCD(m ,m ,m ,m · · · ,m ))) X (c - u )+u を計算する。
k 1 2 3 4 k-1 k k-1 k-1
[0095] 次に、 c=u とする。こうして、 cが得られる。
k
なお、 CRT咅 B267よる (i=l, 2, · · · , k)力ら,
c mod ;_1=^を満たす c mod Lを計算する方法については、非特許文献 2 に詳しく述べられている。
次に、 CRT部 267は、得られた cを加算モジュール 243の呼び出し元のプログラム へ出力する。
[0096] (V)加算モジュール 243による加算の動作
加算モジュール 243による加算の動作について、図 15に示すフローチャートを用 いて説明する。
べき乗演算部 262は、加算モジュール 243の呼び出し元のプログラムから入力デ 一タ&、 bを受け取り(ステップ S301)、受け取った入力データ a、 bに対し、 g =ga mo d n, g =gb mod nを計算する(ステップ S302— S303)。
[0097] 次に、乗算部 264は、 g 及び g に対し、 g =g Xg mod nを計算する (ステツ a ab a b プ S304)。
次に、離散対数計算部 266は、 g =gci mod p (i= l , 2, · · · , k)となる c mod
ab i i p -1を求め(ステップ S305)、 CRT部 267は、中国人剰余定理(CRT)により、 c = c mod p _l (i= l , 2,…, k)となる cを求め(ステップ S306)、次に、得られた c を加算モジュール 243の呼び出し元のプログラムへ出力する(ステップ S307)。
[0098] (vi)加算モジュール 243による加算の動作の検証
以下で、加算モジュール 243が、入力データ a、 bに対し、データ a + bを出力してい ることを検証する。
変換部 251において、入力データ a、 bに対し、 g =ga mod n,
g =gb mod nを計算し、主要演算部 252において、
b
g =g X g mod nを計算する。このとき、 g =g(a+b) mod nを満たすことは明らか ab a b ab
である。
逆変換部 253では、 gと g から g =gci mod p (i= l , 2, · · · , k)を満たす cを計算
ab ab i i し、その結果を用いて、 c = c mod p _1を満たす c mod Lを計算する。このとき、
i i
Cは g = g
ab
mod nを満たす。なぜなら、 a + b = c mod Lより、 g(a+b— = 1 mod nとなるため である。したがって、 g(a+b) mod n=gc mod nを満たすため、 a + b = c mod ( (pi -1) X (p2— 1) X〜X (pk_l) )を満たす。 a< L/2, bく L/2より a + bく Lであるの で、加算モジュール 243は、入力データ aと入力データ bとの加算結果であるデータ a + bを出力していることになる。
[0099] 1. 4 第 1の実施の形態の効果
加算モジュール 243は、加算を行う値を変換している。変換部 251及び逆変換部 2 53が解析困難な場合であっても、解析者は g , g , g の値を知り、 g , g から g を
a b ab a o ab 計算する処理を知る可能性がある。このような場合であっても、変換後の値 g , g か
a b ら変換前の値 a, bを推測することは困難である。さらに、加算モジュール 243は、主 要演算部 252において、乗算を行っており、この乗算という演算力、ら加算モジュール 243が加算を実現していることを推測することは困難である。したがって、加算を行う 入力の値の隠蔽だけではなぐ加算という演算自体も隠蔽できることになり、第 1の実 施の形態は有効である。
[0100] 復号制御モジュール 241は、鍵と他のデータとの加算において、加算モジュール 2 43を利用している。そのため、加算の対象となる値、すわなち、鍵の値を推測するこ とが困難になる。また、解析者が暗号アルゴリズムを知っている場合においても、鍵 加算部分が、鍵との「加算」を行っていると推測しにくい。そのため、解析者が、暗号 アルゴリズムの特徴である鍵加算部分をプログラム内から探し出す攻撃をした場合で も、鍵加算部分を探し出すことが困難なため、攻撃も困難となる。このように、解析者 の攻撃が困難になり、本実施の形態は有効である。
[0101] 2.変形例(1)
第 1の実施の形態における加算モジュール 243の代わりに、加算モジュール 501を 採用するとしてもよい。ここでは、加算モジュール 501について説明する。
2. 1 加算モジュール 501の構成
カロ算モジユーノレ 501は、加算モジュール 243と同様に、入力データ a、 bに対し、デ ータ a + bを演算し、データ a + bを出力するコンピュータプログラムであり、図 16に示 すように、変換部 511、主要演算部 512及び逆変換部 513から構成されており、変換 部 511は、ノ メタ格納部 521、乱数発生部 522及びべき乗演算部 523を含み、主 要演算部 512は、パラメタ格納部 524及び乗算部 525を含み、逆変換部 513は、パ ラメタ格納部 526、離散対数計算部 527及び還元部 528を含む。
[0102] 2. 2 各種パラメータ及び記号の定義、並びに入力データの条件
ここで、加算モジュール 501で使用する各種パラメータ及び記号の定義、並びに入 力データの条件について説明する。
p, qを素数とし、 n = p2 X qとする。 p, qは、逆変換部 513により保持され、 nは、そ れぞれ、変換部 511及び主要演算部 512により保持される。
[0103] 加算モジュール 501では、 mod nの整数から構成される剰余整数環 ZZnZの乗 法群の演算を用いる。 gは、その乗法群に属する予め与えられた数であり § ϋ mod p2の位数が pである数とする。また、
g =g( mod p と定義する。
入力データ a、 bは、 p/2より小さい非負整数とする。 [0104] 2. 3 変換部 511の構成
変換部 511は、パラメタ格納部 521、乱数発生部 522及びべき乗演算部 523から 構成されている。
パラメタ格納部 521は、 nと gとを記憶してレ、る。
乱数発生部 522は、 n以下の乱数 Rl , R2を生成する。
[0105] べき乗演算部 523は、入力データ a、 bに対し、乱数発生部 522により生成された乱 数 Rl , R2を用いて、
g =g +n X Rl) mod η、
a
g =g" (b + n X R2) mod nを計算する。
b
なお、本明細書において、記号「」は、べき乗を示す演算子である。例えば、 a"b = abである。本明細書において、表現上の都合により、 a b及び
abの両方の表記を使い分けている。
[0106] 次に、べき乗演算部 523は、計算結果 g , g を主要演算部 512へ出力する。
a b
2. 4 主要演算部 512の構成
主要演算部 512は、パラメタ格納部 524及び乗算部 525から構成されている。 パラメタ格納部 524は、 nを記憶している。
乗算部 525は、べき乗演算部 523から計算結果 g , g を受け取り、受け取った g
a b a
, g に対し、
b
g =g X g mod nを計算し、計算結果 g を逆変換部 513へ出力する。
ab a b ab
[0107] 2. 5 逆変換部 513の構成
逆変換部 513は、パラメタ格納部 526、離散対数計算部 527及び還元部 528から 構成されている。
パラメタ格納部 526は、 pを格納している。
離散対数計算部 527は、乗算部 525から計算結果 g を受け取り、受け取った g に
ab ab 対し、パラメタ格納部 526に格納されている pを用いて、
c =g ϋ mod p2を計算し、次に、 c を還元部 528へ出力する。
p ab p
[0108] 還元部 528は、離散対数計算部 527から c を受け取り、
受け取った c を用いて、 mod p2における g に対する c の離散対数 cを計算し、計 算して得られた cを、呼び出し元のプログラムへ出力する。
還元部 528における cの計算方法については、特許文献 2に詳しく述べられている 。具体的には、以下のように行う。
[0109] c に対し、 c=(c _l)/(g -1) mod pとして cを求める。
P P P
2. 6 加算モジュール 501による加算の動作
加算モジュール 501による加算の動作について、図 17に示すフローチャートを用 いて説明する。
べき乗演算部 523は、呼び出し元のプログラムから入力データ a、 bを受け取り(ステ ップ S311)、乱数発生部 522は、 n以下の乱数 Rl, R2を生成し(ステップ S312)、 べき乗演算部 523は、
g =g +nXRl)mod n、
a
g =g"(b + nXR2)mod nを計算する(ステップ S313— S314)。
b
[0110] なお、本明細書において、記号「」は、べき乗を示す演算子であり、例えば、 a"b = abである。本明細書では、場合によって、「 b」及び「ab」の両方の表記を使い分け ている。
次に、乗算部 525は、 g =g Xg mod nを計算する(ステップ S315)。
ab a
[0111] 次に、離散対数計算部 527は、 c =g (p_1) mod p2を計算し (ステップ S316)、 p ab
還元部 528は、 c=(c -l)/(g -1) mod pとして cを求め(ステップ S317)、次
P P
に、 c( = a + b)を呼び出し元のプログラムへ出力する(ステップ S318)。
[0112] 2. 7 加算モジュール 501による加算の動作の検証
以下において、加算モジュール 501が、入力データ a、 bに対し、 a + bを出力してい ることを検証する。
変換部 511において、 a, bに対し、
g =g (a + nXRl)mod n、
a
g =g"(b+nXR2)mod nを計算し、
b
主要演算部 512において、 g =g Xg mod nを計算する。このとき、 g =g"(a ab a b ab
+ b + nX (R1+R2)) mod nを満たすことは明らかである。逆変換部 513では、ま ず、 c =g ( _1) =g ' (a + b + n X (R1 +R2) ) mod p2となり、
g P = 1 mod p より、
g = 1 mod p2であるため、
c =g mod p2となる。
[0113] 逆変換部 513では、さらに、 mod p2における g に対する c の離散対数 cを求める
。すなわち、
c =g mod p 力 S成り つ。したがって、
c = a + b mod pであり、 aく pZ2, bく p/2より、 a + bく pであるため、カロ算モジュ 一ノレ 501は、入力データ aと bの加算結果 a + bを出力していることになる。
[0114] 2. 8 加算モジュール 501による効果
カロ算モジユーノレ 501は、第 1の実施の形態 1の加算モジュール 243と同様に、加算 を行う値を変換しており、変換部 511及び逆変換部 513が解析困難な場合に、変換 後の値から変換前の値を推測することは困難である。さらに、加算モジュール 501は 、主要演算部 512において、乗算を行っており、この乗算という演算力ら加算モジュ ール 501が加算を実現していることを推測することは困難である。したがって、加算を 行う入力の値の隠蔽だけではなぐ加算という演算自体も隠蔽できることになり、この 発明は有効である。
[0115] 2. 9 その他(1)
加算モジュール 501では、剰余整数環 Z/nZの乗法群における冪乗演算を変換 部 511で行い、その乗法群の部分群である剰余整数環 Z/p2 Zの乗法群における離 散対数問題を逆変換部 513で解いている。ここで、もし、解析者が p, qは分からない が、変換部 511で冪乗演算を行っていることを解析できた場合を考える。このケース は、すなわち、逆変換部 513のみが解析者により解析困難である場合である。この場 合においても、 nの大きさが素因数分解が困難なぐらい、例えば、 1024ビットぐらレ、 であれば、 nの素因数分解結果である p, qを得ることが困難になる。また、 p, qが得ら れなければ、剰余整数環 Z/nZの乗法群における離散対数問題を解くことが困難に なる。一般に乗法群の大きさ(元の数)が 1024ビットの数のように大きい場合は、それ 上の離散対数問題も困難になる。加算モジュール 501では、 pが既知の場合は逆変 換部 513における逆変換の方法によって、 Z/p2 Zの乗法群における離散対数問題 を容易に解けるようになる。加算モジュール 501における変換はこのように、 pが既知 であれば逆変換が容易である力 既知でなければ困難であることを利用している点 が、カロ算モジユーノレ 2431と異なる。
[0116] 2. 10 その他(2)
カロ算モジユーノレ 501は、次のように構成してもよい。
p, qを素数とし、 n = pm X qとする。 mは、正整数である。また、カロ算モジユーノレ 501 では、 mod nの整数力 構成される剰余整数環 ZZnZの乗法群の演算を用いる。 g は、その乗法群に属する予め与えられた数であり g(P1〉 mod pmの位数力 ¾である数 とする。また、 g =g(Pϋ mod pmと定義する。
P
[0117] 離散対数計算部 527は、乗算部 525から計算結果 g を受け取り、受け取った g に ab ab 対し、パラメタ格納部 526に格納されている pを用いて、
c =g (p_1) mod pmを計算し、次に、 c を還元部 528へ出力する。
p ab p
還元部 528は、離散対数計算部 527から c を受け取り、
受け取った c を用いて、 mod pmにおける g に対する c の離散対数 cを計算し、計
P P P
算して得られた cを、呼び出し元のプログラムへ出力する。
[0118] 3·変形例(2)
第 1の実施の形態における加算モジュール 243の代わりに、加算モジュール 601を 採用するとしてもよい。ここでは、加算モジュール 601について説明する。加算モジュ ール 601は、楕円曲線上のスカラ倍演算を利用している。楕円曲線については、非 特許文献 3に詳しく説明されている。
[0119] 3. 1 加算モジュール 601の構成
加算モジュール 601は、加算モジュール 243と同様に、入力データ a、 bに対し、デ ータ a + bを演算し、データ a + bを出力するコンピュータプログラムであり、図 18に示 すように、変換部 611、主要演算部 612及び逆変換部 613から構成されており、変換 部 611は、ノ メタ格納部 621及びスカラ倍演算部 622を含み、主要演算部 612は、 パラメタ格納部 623及び楕円曲線加算部 624を含み、逆変換部 613は、パラメタ格 納部 625、還元部 626及び離散対数計算部 627を含む。 [0120] 3. 2 各種パラメータ及び記号の定義、並びに入力データの条件
ここで、加算モジュール 601で使用する各種パラメータ及び記号の定義、並びに入 力データの条件について説明する。
p、 qを素数とし、 n = pXqとする。 p、 qは、逆変換部 613により保持され、 nは、それ ぞれ、変換部 611及び主要演算部 612により保持されてレ、る。
[0121] 楕円曲線 Eの方程式を
y =x3 +AXx + Bとする。ここで、 A、 Bは、楕円曲線 Eのパラメータである。 G=(x , y ) mod nを楕円曲線 E上の点とする。すなわち、
g g
y 2 =x u +AXx +B mod nを満たす。
g g g
A、 B、 Gは、変換部 611、主要演算部 612、逆変換部 613により保持される。
[0122] 楕円曲線 Eの方程式をもつ体 GF(p)上の楕円曲線の点から構成される群を E(GF
(p) )と表現する。同様に、楕円曲線 Eの方程式をもつ体 GF(q)上の楕円曲線の点 力 構成される群を E (GF (q) )と表現する。
Z/nZ上の楕円曲線の群を
E(GF(p) E(GF(q)
直積 E(GF(p)) XE(GF(q))で表す。なお、 Z/nZは体ではなく、環であるため、数 学的には楕円曲線とは呼べないが、ここでは便宜上、その直積 Z/nZ上の楕円曲線 の群とよぶ。
[0123] £(0? ))上の点0 =(x , y ) mod pと、
P g g
E(GF(q))上の点 G = (x , y ) mod qとに対応する Z/nZ上の楕円曲線 E (G q gq gQ
F(p)) XE(GF(q))の
^,G= (x , y ) mod ηίこつレヽて、
g
x ¾r
g
x mod p = x 及び
g g
x mod q = x を満たす数と定義し、
g gq
y を
g
y mod p = y 及び
g gP
x mod q = x を満たす数と定義する。 [0124] この定義より、
E(GF(p)) XE(GF(q))上の点 G=(x , y ) mod nに対応する E (GF (p) )上の 点 G を
G = (x , y ) mod pとし、
£(0 ))上の点0 を G =(x , y )とすることで、
E (GF (p) ) , E (GF (q) )を E (GF (p) ) X E (GF (q) )の部分群とみなす。
[0125] 加算部 601においては、上記楕円曲線 Eは、 mod pでの楕円曲線の位数、すなわ ち、点の個数が、 pであるとする。このような体 GF(p)上の楕円曲線をァノマラス( Anomalous)楕円曲線とよ 。
さらに、 mod qでの楕円曲線の位数が qである、すなわち、 GF(q)上でもァノマラ ス楕円曲線であるとする。
[0126] このとき、 Z/nZ上の楕円曲線を、スーパーァノマラス(Super-Anomalous)楕円曲 線とよぶ。スーパーァノマラス楕円曲線については非特許文献 4に詳しく説明されて いる。
このとき、 Z/nZ上の楕円曲線の群は E(GF(p)) XE(GF(q))であるので、楕円 曲線の位数は、
n( = pXq)となる。
[0127] 入力データ a、 bは、 p/2より小さい非負整数とする。
3.3 変換部 611の構成
変換部 611は、パラメタ格納部 621及びスカラ倍演算部 622から構成されている。 パラメタ格納部 621は、 n、 A、 B、 Gを記憶している。
[0128] スカラ倍演算部 622は、呼び出し元のプログラムから、入力データ a、 bを受け取り、 受け取った入力データ a、 bに対し、パラメータ格納部 621に格納されている n、 A、 B 、Gを用いて、
G =a*G mod n 及び
G =b*G mod nを計算する。
[0129] ここで、 a*Gは、 Gを a回、楕円曲線の加算により足し合わせて得られる点である。
また、 a*G mod nは、 a * Gの各座標に、 mod nを施したものである。 スカラ倍演算部 622は、計算結果 G , G を主要演算部 612へ出力する。
a b
3. 4 主要演算部 612の構成
主要演算部 612は、パラメタ格納部 623及び楕円曲線加算部 624から構成されて いる。
[0130] パラメタ格納部 623は、 n、 A、 Bを記憶している。
楕円曲線加算部 624は、スカラ倍演算部 622から計算結果 G , G を受け取り、パ
a b
ラメタ格納部 623に記憶されている n、A、 Bを用いて、 G 及び G に対して、楕円曲
a b
線加算を実行して、
G =G +G mod n
ab a b
を計算し、その計算結果 G を逆変換部 613へ出力する。
ab
[0131] 3. 5 逆変換部 613の構成
逆変換部 613は、パラメタ格納部 625、還元部 626及び離散対数計算部 627から 構成されている。
パラメタ格納部 625は、 p, A, B, G mod pを記憶している。
還元部 626は、楕円曲線加算部 624から計算結果 G を受け取り、受け取った G
ab ab に対し、パラメタ格納部 625に格納されている pを用いて、
G =G mod p を計算し、計算結果を離散対数計算部 627へ出力する。
abp ab
[0132] 離散対数計算部 627は、 G mod pに対する G の離散対数 c mod pを計算す
abp
る。つまり、 G =c * G mod pの cを求める。次に、 cを呼び出し元のプログラムへ
abp
出力する。
ここで、楕円離散対数計算部 627における cは、ァノマラス楕円曲線上の離散対数 問題の解である。ァノマラス楕円曲線上の離散対数問題を解く方法については、非 特許文献 3の 88 91ページに詳しく説明されている。計算方法はこの文献に記載さ れているため、ここでは説明を省略する。
[0133] 3. 6 加算モジュール 601の動作
加算モジュール 601の動作について、図 19に示すフローチャートを用いて説明す る。
スカラ倍演算部 622は、呼び出し元のプログラムから、入力データ a、 bを受け取り( ステップ S321)、受け取った入力データ a、 bに対し、パラメータ格納部 621に格納さ れている n、 A、 B、 Gを用いて、
G = a ^ G mod n 及び
a
G =b * G mod nを計算する(ステップ S322— S323)。
b
[0134] 次に、楕円曲線加算部 624は、
G =G + G mod nを計算する(ステップ S324)。
ab a b
次に、還元部 626は、
G =G mod p を計算し(ステップ S325)、
abp ab
離散対数計算部 627は、 G mod pに対する G の離散対数 cを計算し (ステップ
abp
S326)、次に、 cを呼び出し元のプログラムへ出力する(ステップ S327)。
[0135] 3. 7 加算モジュール 601の動作検証
以下において、加算モジュール 601が、入力データ a, bに対し、 a + bを計算して出 力していることを検証する。
変換部 611において、 a, bに対し、
G = a ^ G mod n,
a
G =b * G mod nを計算し、
b
主要演算部 612において、
Gab = Ga + Gb mod nを計算する。
[0136] このとき、 Gab = (a + b) * G mod nを満たすことは明らかである。
逆変換部 613において、まず、
G =Gab mod pを計算し、
abp
G mod pに対する G の離散対数 cを求める。
abp
すなわち、 G = c * G mod pが成り立つ。
abp
[0137] 従って、 c = a + b mod pであり、 aく p,2, bく pZ2より、
a + bく pであるため、加算モジュール 601は、入力データ aと bとの加算結果 a + bを 出力していることになる。
3. 8 加算モジュール 601の効果
カロ算モジユーノレ 601は、カロ算モジユーノレ 243及び、カロ算モジユーノレ 501と同様に、 加算を行う値を変換しており、変換部 611及び逆変換部 613が解析困難な場合に、 変換後の値力 変換前の値を推測することは困難である。
[0138] さらに、カ卩算モジュール 601は、主要演算部 612において、楕円曲線加算を行って おり、この楕円曲線加算という演算から加算モジュール 601が整数の加算を実現して レ、ることを推測することは困難である。
従って、整数の加算を行う入力の値の隠蔽だけではなぐ整数の加算という演算自 体も隠蔽できることになり、加算モジュール 601は、有効である。
[0139] 3. 9 その他
加算モジュール 601では、 ZZnZ上の楕円曲線の群 E (GF (p) ) X E (GF (q) )のス カラ倍演算を変換部で行い、その部分群である E (GF (p) )における離散対数問題を 逆変換部で解いている。
ここで、もし、解析者が p, qは分からないが、変換部で冪乗演算を行っていることを 解析できた場合を考える。このケースは、すなわち、逆変換部のみが解析者により解 析困難である場合である。
[0140] この場合においても、 nの大きさが素因数分解が困難なぐらい、例えば、 1024ビット ぐらいであれば、 nの素因数分解結果である p, qを得ることが困難になる。また、 p, q が得られなければ、 Z/nZ上の楕円曲線の群 E (GF (p) ) X E (GF (q) )における離 散対数問題を解くことが困難になる。
一般に群の大きさ(元の数)が 1024ビットの数のように大きい場合は、それ上の離 散対数問題も困難になる。加算モジュール 601では、 pが既知の場合は逆変換モジ ユールにおける逆変換の方法によって、楕円曲線の群 E (GF (p) )における離散対数 問題を容易に解けるようになる。加算モジュール 601における変換はこのように、 pが 既知であれば逆変換が容易である力 S、既知でなければ困難であることを利用してい る点が、第 1の実施の形態と異なる。
[0141] 4.その他の変形例
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の 実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれ る。 (1)加算モジュール 243、 501及び 601におレ、て、 2個の非負整数 a及び bの加算 を行うとしている力 各加算モジュールは、 3個、又はそれ以上の個数の非負整数の 加算を行うとしてもよい。この場合に、各加算モジュールの変換部は、それぞれの非 負整数を変換し、加算モジュール 243及び 501の主要演算部は、それぞれの変換 結果に対して乗算を施し、加算モジュール 601の主要演算部は、それぞれの変換結 果に対して、楕円曲線加算を施す。
[0142] (2)復号制御モジュール 241において、鍵加算部分のみに加算モジュール 243、 5 01又は 601を使用するとしている力 他の加算部分において、各加算モジュールを 使用するとしてもよい。
(3)第 1の実施の形態では、各加算モジュールを復号制御モジュール 241に適用 するとしている力 上記の喑号制御モジュール 141や、他の喑号プログラム、復号プ ログラム、デジタル署名を生成する署名生成プログラムに適用するとしてもよい。この ように、加算による演算が出現する情報処理演算であれば、どのようなものであっても 適用することができる。
[0143] (4)加算モジュール 243、 501及び 601におレ、て、剰余整数環の乗法群、楕円曲 線上の群を利用した力 その他の群を利用するとしてもよい。
また、加算モジュール 243及び 501においては、冪乗演算を行って、整数を変換し 、加算モジュール 601においては、楕円曲線のスカラ倍演算を行って、整数を変換 するとしている力 S、その他の群の冪演算を行うことにより変換するとしてもよい。
[0144] ここで、冪演算とは、群の基本演算、すなわち、剰余整数環では乗算を、また楕円 曲線上の群では楕円曲線加算を、整数回行った結果を求める演算である。
したがって、剰余整数環の乗法群の冪演算は冪乗演算、楕円曲線上の群の冪演 算は楕円曲線のスカラ倍演算である。
加算モジュール 501では、剰余整数環 ZZnZの乗法群の「部分群」である、剰余整 数環 ZZP2 Zの乗法群において離散対数問題を解いている。その他の群を使用する 場合は、加算モジュール 501と同様に逆変換部でその他の群の「部分群」において 離散対数問題を解くとしてもよい。
[0145] (5)加算モジュール 243において、 gは、 mod p (i= l, 2,…, k)において原始 元としたが、原始元でなくてもよい。
その場合は、 gmi = 1 mod p (m >0)となる m に対し、
i i i
L=m X m X · · · X m とする。
1 2 k
(6)上記の各装置は、具体的には、マイクロプロセッサ、 ROM、 RAM,ハードディ スクユニット、ディスプレイユニット、キーボード、マウスなど力も構成されるコンピュータ システムである。前記 RAM又は前記ハードディスクユニットには、コンピュータプログ ラムが記憶されている。ここで、コンピュータプログラムは、所定の機能を達成するた めに、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成さ れたものである。前記マイクロプロセッサ力 前記コンピュータプログラムに従って動 作することにより、各装置は、その機能を達成する。つまり、前記マイクロプロセッサは 、前記コンピュータプログラムに含まれる各命令を 1個ずつ読み出し、読み出した命 令を解読し、解読結果に従って動作する。
[0146] (7)上記の各装置を構成する構成要素の一部又は全部は、 1個のシステム LSI (
Large Scale Integration :大規模集積回路)から構成されているとしてもよレ、。システム LSIは、複数の構成部を 1個のチップ上に集積して製造された超多機能 LSIであり、 具体的には、マイクロプロセッサ、 R〇M、 RAMなどを含んで構成されるコンピュータ システムである。前記 RAMには、コンピュータプログラムが記憶されている。前記マイ クロプロセッサ力 前記コンピュータプログラムに従って動作することにより、システムし SIは、その機能を達成する。
[0147] (8)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能な I Cカード又は単体のモジュールから構成されているとしてもよい。前記 ICカード又は 前記モジュールは、マイクロプロセッサ、 ROM、 RAM,など力 構成されるコンビュ ータシステムである。前記 ICカード又は前記モジュールは、上記の超多機能 LSIを 含むとしてもよレ、。マイクロプロセッサ力 コンピュータプログラムに従って動作するこ とにより、前記 ICカード又は前記モジュールは、その機能を達成する。この ICカード 又はこのモジュールは、耐タンパ性を有するとしてもよレ、。
[0148] (9)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンビュ ータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプ ログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ 読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、 CD-RO M、 MO、 DVD、 DVD-ROM, DVD-RAM, BD (Blu-ray Disc)、半導体メモリ など、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コ ンピュータプログラム又は前記デジタル信号であるとしてもよい。
[0149] また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信 回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送 等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって 、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサ は、前記コンピュータプログラムに従って動作するとしてもよい。
[0150] また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送する ことにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由し て移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい
(10)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
(11)以上説明したように、本発明によると、演算に使用する値の隠蔽だけでなぐ 演算そのものを隠蔽することができる。したがって、本技術を用いた難読化ソフトゥェ ァを ICカード等の機器に組み込むことは有用である。
産業上の利用可能性
[0151] 本発明を構成する各装置、各方法及び各コンピュータプログラムは、情報を安全か つ確実に扱う必要があるあらゆる産業において、経営的に、また継続的及び反復的 に使用することができる。また、本発明を構成する各装置、各方法及び各コンビユー タプログラムは、電器機器製造産業において、経営的に、また継続的及び反復的に 、製造し、販売することができる。

Claims

請求の範囲
[1] 2個以上の整数を加算するコンピュータシステムであって、
複数のコンピュータ命令が組み合わされて構成されるコンピュータプログラムを記憶 しているメモリ部と、
前記記憶手段に記憶されている前記コンピュータプログラムから 1個ずつコンビユー タ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備え、 前記コンピュータプログラムは、
各整数に、群 G上の冪演算を施すことにより、群 Gに属する元を生成する変換命令 群と、
生成された全ての前記元に対して、前記加算とは異なる群 G上の基本演算を施し て、演算値を生成する演算命令群と、
群 G又は群 Gに真に含まれる部分群 Sにおいて、前記演算値に対して、前記変換 命令群により施される冪演算の逆算を施すことにより、前記整数の加算値を生成する 逆変換命令群とを含む
ことを特徴とするコンピュータシステム。
[2] 前記コンピュータシステムは、対象情報を安全かつ確実に扱う情報セキュリティ装 置であって、
前記コンピュータプログラムは、さらに、対象情報にセキュリティ処理を施すセキユリ ティ命令群を含み、
前記セキュリティ命令群は、加算演算において、前記変換命令群、前記演算命令 群及び前記逆変換命令群を用いる
ことを特徴とする請求項 1に記載のコンピュータシステム。
[3] 前記群 Gは、剰余整数環の乗法群であり、
前記変換命令群は、各整数に冪乗を施し、
演算命令群は、前記元に対して、乗算を施す
ことを特徴とする請求項 2に記載のコンピュータシステム。
[4] 前記群 Gは、複数個の相異なる素数 p , ρ , · · · , p (k> l)の積 η=ρ Χ ρ Χ · ' ·
1 2 k 1 2
X p に対し、 Z/nZの乗法群であり、 Xは、乗算を示す演算子であり、 Zは、整数環であり、 Z/nZは、 mを法とし整数と 合同である値から構成される剰余整数環である
ことを特徴とする請求項 3に記載のコンピュータシステム。
[5] 前記逆変換命令群は、前記素数 p , p ,…, p を用いた Z/p Z、 Z/p Z、 · · -、
1 2 k 1 2
Z/p Zの乗法群における離散対数問題を解く命令を含む
k
ことを特徴とする請求項 4に記載のコンピュータシステム。
[6] 前記逆変換命令群は、前記素数 p , p ,…, p を用いた ZZp Z, Z/p Z,…,
1 2 k 1 2
Z/p Zの乗法群における離散対数問題の解に対し、中国人の剰余定理を用いる κ
命令を含む
ことを特徴とする請求項 5に記載のコンピュータシステム。
[7] 前記群 Gは、 2つの素数 p, qと正整数 mを用いて表される n = pm X qに対し、 ZZn Zの乗法群であり、
前記変換命令群は、各整数に冪乗を施し、
演算命令群は、前記元に対して、乗算を施す
ことを特徴とする請求項 2に記載のコンピュータシステム。
[8] 前記部分群 Sは、 Z/pm Zの乗法群である
ことを特徴とする請求項 7に記載のコンピュータシステム。
[9] 前記正整数 mは、 2である
ことを特徴とする請求項 7に記載のコンピュータシステム。
[10] 前記部分群 Sは、ァノマラス楕円曲線の群であり、
前記変換命令群は、各整数に楕円曲線上の乗算を施し、
演算命令群は、前記元に対して、楕円曲線上の加算を施す
ことを特徴とする請求項 2に記載のコンピュータシステム。
[11] 前記群 Gは、二つのァノマラス楕円曲線の群の直積であり、
前記変換命令群は、各整数に楕円曲線上の乗算を施し、
演算命令群は、前記元に対して、楕円曲線上の加算を施す
ことを特徴とする請求項 2に記載のコンピュータシステム。
[12] さらに、前記逆変換命令群は、複数の冪数と、各冪数による冪乗値又は冪倍値とを 対応付けて記憶しており、その対応付けを検索することにより、冪演算の逆算を求め る
ことを特徴とする請求項 2に記載のコンピュータシステム。
[13] さらに、前記逆変換命令群は、前記群 Gに属する元を前記部分群 Sに属する元に 還元する還元部を備える
ことを特徴とする請求項 2に記載のコンピュータシステム。
[14] 前記情報セキュリティ装置は、鍵情報に基づいて対象情報を暗号化し又は復号し、 前記セキュリティ命令群は、前記鍵情報に基づいて、対象情報を暗号化し又は復 号し、暗号化又は復号において、鍵情報又は鍵情報から得られる二次鍵情報と、対 象情報又は対象情報力 得られる二次対象情報との加算演算が含まれ、
前記加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令 群を用いて、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報 力 得られる二次対象情報とに、加算を施す
ことを特徴とする請求項 2に記載のコンピュータシステム。
[15] 前記暗号化又は復号は、共通鍵方式の暗号化又は復号アルゴリズムである
ことを特徴とする請求項 14に記載のコンピュータシステム。
[16] 前記情報セキュリティ装置は、鍵情報に基づいて対象情報にデジタル署名を施し 又は署名検証を施し、
前記セキュリティ命令群は、前記鍵情報に基づいて、対象情報にデジタル署名を 施し又は署名検証を施し、デジタル署名又は署名検証において、鍵情報又は鍵情 報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報と の加算演算が含まれ、
前記加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令 群を用いて、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報 力 得られる二次対象情報とに、加算を施す
ことを特徴とする請求項 2に記載のコンピュータシステム。
[17] 前記コンピュータシステムは、前記メモリ部と前記プロセッサとが高密度に集積され た集積回路を含む ICカードである ことを特徴とする請求項 2に記載のコンピュータシステム。
[18] メモリ部とプロセッサとを備えるコンピュータシステムにおいて用いられ、 2個以上の 整数を加算する加算方法であって、
各整数に、群 G上の冪演算を施すことにより、群 Gに属する元を生成する変換ステ ップと、
生成された全ての前記元に対して、前記加算とは異なる群 G上の基本演算を施し て、演算値を生成する演算ステップと、
群 G又は群 Gに真に含まれる部分群 Sにおいて、前記演算値に対して、前記変換 命令群により施される冪演算の逆算を施すことにより、前記整数の加算値を生成する 逆変換ステップとを含む
ことを特徴とする加算方法。
[19] 2個以上の整数を加算するコンピュータプログラムであって、
各整数に、群 G上の冪演算を施すことにより、群 Gに属する元を生成する変換命令 群と、
生成された全ての前記元に対して、前記加算とは異なる群 G上の基本演算を施し て、演算値を生成する演算命令群と、
群 G又は群 Gに真に含まれる部分群 Sにおいて、前記演算値に対して、前記変換 命令群により施される冪演算の逆算を施すことにより、前記整数の加算値を生成する 逆変換命令群とを含む
ことを特徴とするコンピュータプログラム。
[20] 前記コンピュータプログラムは、コンピュータ読み取り可能な記録媒体に記録されて いる
ことを特徴とする請求項 19に記載のコンピュータプログラム。
[21] 前記コンピュータプログラムは、搬送波に乗せられて送信される
ことを特徴とする請求項 19に記載のコンピュータプログラム。
[22] 2個以上の整数を加算するコンピュータプログラムを記録してレ、るコンピュータ読み 取り可能な記録媒体であって、
前記コンピュータプログラムは、 各整数に、群 G上の冪演算を施すことにより、群 Gに属する元を生成する変換命令 群と、
生成された全ての前記元に対して、前記加算とは異なる群 G上の基本演算を施し て、演算値を生成する演算命令群と、
群 G又は群 Gに真に含まれる部分群 Sにおいて、前記演算値に対して、前記変換 命令群により施される冪演算の逆算を施すことにより、前記整数の加算値を生成する 逆変換命令群とを含む
ことを特徴とする記録媒体。
PCT/JP2005/005136 2004-03-31 2005-03-22 整数を加算するコンピュータシステム WO2005098795A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP05727024A EP1732052B1 (en) 2004-03-31 2005-03-22 Computer system, computer program, and addition method
DE602005025615T DE602005025615D1 (de) 2004-03-31 2005-03-22 Computersystem, computerprogramm und verfahren zur addition
US10/591,846 US7434898B2 (en) 2004-03-31 2005-03-22 Computer system, computer program, and addition method
JP2006511988A JPWO2005098795A1 (ja) 2004-03-31 2005-03-22 コンピュータシステム、コンピュータプログラム及び加算方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004-107778 2004-03-31
JP2004107778 2004-03-31

Publications (1)

Publication Number Publication Date
WO2005098795A1 true WO2005098795A1 (ja) 2005-10-20

Family

ID=35125300

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/005136 WO2005098795A1 (ja) 2004-03-31 2005-03-22 整数を加算するコンピュータシステム

Country Status (7)

Country Link
US (1) US7434898B2 (ja)
EP (1) EP1732052B1 (ja)
JP (1) JPWO2005098795A1 (ja)
KR (1) KR20060134992A (ja)
CN (1) CN100585670C (ja)
DE (1) DE602005025615D1 (ja)
WO (1) WO2005098795A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007074836A1 (ja) * 2005-12-28 2007-07-05 Matsushita Electric Industrial Co., Ltd. 署名生成装置、署名生成方法及び署名生成プログラム
JP2013228763A (ja) * 2013-08-14 2013-11-07 Nippon Telegr & Teleph Corp <Ntt> 離散対数計算装置、事前計算装置、離散対数計算方法、事前計算方法、プログラム
JP2017533458A (ja) * 2014-09-30 2017-11-09 コーニンクレッカ フィリップス エヌ ヴェKonink 難読化された算術を実行するための電子計算装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5133973B2 (ja) * 2007-01-18 2013-01-30 パナソニック株式会社 難読化支援装置、難読化支援方法、プログラムおよび集積回路
EP2242032B1 (en) * 2008-01-21 2013-10-02 Nippon Telegraph and Telephone Corporation Secure computing system, secure computing method, secure computing apparatus and program therefor
US20100290503A1 (en) * 2009-05-13 2010-11-18 Prime Photonics, Lc Ultra-High Temperature Distributed Wireless Sensors
US20110087861A1 (en) * 2009-10-12 2011-04-14 The Regents Of The University Of Michigan System for High-Efficiency Post-Silicon Verification of a Processor
EP2720403A1 (en) * 2012-10-12 2014-04-16 Thomson Licensing Aggregator-oblivious encryption of time-series data
JP6368051B2 (ja) 2014-12-12 2018-08-01 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 電子生成装置
US10579337B1 (en) * 2015-06-18 2020-03-03 Chorus Call, Inc. Method, software and apparatus for computing discrete logarithms modulo a prime
WO2018135566A1 (ja) * 2017-01-20 2018-07-26 日本電信電話株式会社 秘密計算システム、秘密計算装置、秘密計算方法、プログラム
KR102336535B1 (ko) * 2021-10-05 2021-12-08 (주) 가온칩스 테일러 급수를 이용한 제곱근 연산 방법 및 이를 이용한 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
WO2000077597A1 (en) * 1999-06-09 2000-12-21 Cloakware Corporation Tamper resistant software encoding
JP2005049925A (ja) * 2003-07-29 2005-02-24 Nara Institute Of Science & Technology プログラム難読化装置、プログラム難読化プログラム及びプログラム難読化方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5073935A (en) * 1990-12-17 1991-12-17 Jose Pastor Method for secure communication
US6252958B1 (en) * 1997-09-22 2001-06-26 Qualcomm Incorporated Method and apparatus for generating encryption stream ciphers
DE69840959D1 (de) * 1997-12-17 2009-08-20 Nippon Telegraph & Telephone Verschlüsselungs- und Entschlüsselungsvorrichtungen für Kryptosysteme mit öffentlichem Schlüssel und Aufzeichnungsmedium mit darauf gespeicherten zugehörigen Verarbeitungsprogrammen.
JP3402441B2 (ja) 1997-12-17 2003-05-06 日本電信電話株式会社 公開鍵暗号化装置、公開鍵暗号復号装置及び復号プログラム記録媒体
JP3313654B2 (ja) * 1998-11-19 2002-08-12 エヌイーシーソフト株式会社 電子投票システム、方法、及び記録媒体
US7164765B2 (en) * 2001-04-11 2007-01-16 Hitachi, Ltd. Method of a public key encryption and a cypher communication both secure against a chosen-ciphertext attack

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
WO2000077597A1 (en) * 1999-06-09 2000-12-21 Cloakware Corporation Tamper resistant software encoding
JP2005049925A (ja) * 2003-07-29 2005-02-24 Nara Institute Of Science & Technology プログラム難読化装置、プログラム難読化プログラム及びプログラム難読化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SATO ET AL.: "Dato no Fugoka to Enzan no Henkan ni yoru Program no Nandokuka Shuho.", THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS GIJUTSU KENKYU HOKOKU, vol. 102, no. 743, 19 March 2003 (2003-03-19), pages 13 - 18, XP002994426 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007074836A1 (ja) * 2005-12-28 2007-07-05 Matsushita Electric Industrial Co., Ltd. 署名生成装置、署名生成方法及び署名生成プログラム
JP5001176B2 (ja) * 2005-12-28 2012-08-15 パナソニック株式会社 署名生成装置、署名生成方法及び署名生成プログラム
US8280039B2 (en) 2005-12-28 2012-10-02 Panasonic Corporation Signature generating device, signature generating method and signature generating program
JP2013228763A (ja) * 2013-08-14 2013-11-07 Nippon Telegr & Teleph Corp <Ntt> 離散対数計算装置、事前計算装置、離散対数計算方法、事前計算方法、プログラム
JP2017533458A (ja) * 2014-09-30 2017-11-09 コーニンクレッカ フィリップス エヌ ヴェKonink 難読化された算術を実行するための電子計算装置

Also Published As

Publication number Publication date
EP1732052A1 (en) 2006-12-13
EP1732052A4 (en) 2009-07-08
CN100585670C (zh) 2010-01-27
US20070192622A1 (en) 2007-08-16
JPWO2005098795A1 (ja) 2008-02-28
US7434898B2 (en) 2008-10-14
EP1732052B1 (en) 2010-12-29
CN1938740A (zh) 2007-03-28
DE602005025615D1 (de) 2011-02-10
KR20060134992A (ko) 2006-12-28

Similar Documents

Publication Publication Date Title
WO2005098795A1 (ja) 整数を加算するコンピュータシステム
CN101061526B (zh) 密码处理运算装置
US7469048B2 (en) Methods for point compression for jacobians of hyperelliptic curves
KR101965628B1 (ko) 동형 암호화를 수행하는 단말 장치와 그 암호문을 처리하는 서버 장치 및 그 방법들
JP4825199B2 (ja) 情報セキュリティ装置及び楕円曲線演算装置
US7908641B2 (en) Modular exponentiation with randomized exponent
US20100329454A1 (en) Encryption parameter setting apparatus, key generation apparatus, cryptographic system, program, encryption parameter setting method, and key generation method
JP4611305B2 (ja) 情報伝達システム、暗号装置及び復号装置
WO2004051920A1 (ja) 鍵共有システム、共有鍵生成装置及び共有鍵復元装置
WO2007074836A1 (ja) 署名生成装置、署名生成方法及び署名生成プログラム
JP2007510947A (ja) 多数当事者の効率的な乗算のための方法及び装置
US20100046745A1 (en) Encrypting apparatus, decrypting apparatus, cryptocommunication system, and methods and computer program products therefor
US20090207999A1 (en) Decryption processing apparatus, system, method, and computer program product
US20100046741A1 (en) Apparatus, method, and computer program product for decrypting, and apparatus, method, and computer program product for encrypting
JP5679344B2 (ja) 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム
CN1745537B (zh) 密钥共享系统、共享密钥生成装置及共享密钥复原装置
US20100049777A1 (en) Representation converting apparatus, arithmetic apparatus, representation converting method, and computer program product
JP5103407B2 (ja) 暗号化数値二進変換システム、暗号化数値二進変換方法、暗号化数値二進変換プログラム
JP4485175B2 (ja) 鍵共有システム、共有鍵生成装置及び共有鍵復元装置
JP4634046B2 (ja) 故障利用攻撃に対抗できる楕円べき倍演算装置及び情報セキュリティ装置
JP2001503164A (ja) 暗号化および復号化システムとキー・エスクローシステムを含む暗号システム、および関連機器
CN102713921B (zh) 使用聚集的求逆来确定曲线上的配对
CN117394983A (zh) 用于实现对称加密和非对称加密的轻量级同态加密方法
JP2004201293A (ja) 鍵共有システム、共有鍵生成装置及び共有鍵復元装置
JP2013145410A (ja) 表現変換装置、演算装置、表現変換方法及びプログラム

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2006511988

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 10591846

Country of ref document: US

Ref document number: 2007192622

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2005727024

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1020067019184

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 200580010699.9

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Ref document number: DE

WWP Wipo information: published in national office

Ref document number: 2005727024

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020067019184

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 10591846

Country of ref document: US