WO2013129134A1 - 演算装置、制御方法、及びプログラム - Google Patents

演算装置、制御方法、及びプログラム Download PDF

Info

Publication number
WO2013129134A1
WO2013129134A1 PCT/JP2013/053651 JP2013053651W WO2013129134A1 WO 2013129134 A1 WO2013129134 A1 WO 2013129134A1 JP 2013053651 W JP2013053651 W JP 2013053651W WO 2013129134 A1 WO2013129134 A1 WO 2013129134A1
Authority
WO
WIPO (PCT)
Prior art keywords
stored
output
registers
register
shift register
Prior art date
Application number
PCT/JP2013/053651
Other languages
English (en)
French (fr)
Inventor
玄良 樋渡
徹 秋下
Original Assignee
ソニー株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソニー株式会社 filed Critical ソニー株式会社
Priority to US14/366,129 priority Critical patent/US9672007B2/en
Priority to EP13754141.3A priority patent/EP2800084A4/en
Publication of WO2013129134A1 publication Critical patent/WO2013129134A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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/544Methods 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 for evaluating functions by calculation
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/552Powers or roots, e.g. Pythagorean sums
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • H04L9/3221Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Definitions

  • This technology relates to an arithmetic device, a control method, and a program.
  • the electronic signature is used to specify the creator of the electronic document. For this reason, the electronic signature should be generated only by the creator of the electronic document. If a malicious third party can generate the same electronic signature, the third party can impersonate the creator of the electronic document. That is, an electronic document is forged by a malicious third party. In order to prevent such forgery, various discussions have been made on the security of electronic signatures. As an electronic signature method that is currently widely used, for example, an RSA signature method and a DSA signature method are known.
  • the RSA signature method uses “difficulty of prime factorization for large composite numbers (hereinafter referred to as prime factorization problem)” as the basis of security.
  • prime factorization problem large composite numbers
  • DSA signature scheme uses “difficulty in derivation of a solution to the discrete logarithm problem” as the basis of security.
  • Examples of digital signature schemes that base security on multivariable polynomial problems include MI (Matsumoto-Imai cryptography), HFE (Hidden Field Equivalence cryptography), and OV (Oil-Vinegar signatureMetermetmTM). ) Based method is known.
  • MI Matsumoto-Imai cryptography
  • HFE Hidden Field Equivalence cryptography
  • OV Olet-Vinegar signatureMetermetmTM
  • non-patent documents 1 and 2 disclose a digital signature scheme based on HFE.
  • the multivariate polynomial problem is an example of a problem called an NP difficulty problem that is difficult to solve even using a quantum computer.
  • a public key authentication method using a multivariate polynomial problem typified by HFE or the like uses a multi-order multivariable simultaneous equation in which a special trap door is charged.
  • the multi-order multivariable simultaneous equations F and the linear transformations A and B serve as trapdoors.
  • a public key authentication scheme and a digital signature scheme based on the difficulty of solving multi-order multivariable simultaneous equations as the basis of security are realized.
  • the present inventor has an efficient public key authentication method having high security using a multi-order multivariable simultaneous equation whose means for efficiently solving (trap door) is not known, and Invented an electronic signature method (Koi Sakumoto, Taizo Shirai and Harunaga Hiwatari, “Public-Key Identification Schems3, Multi20Pal201.
  • these public key authentication schemes and digital signature schemes use multivariate polynomial operations. Therefore, a method for efficiently calculating a multivariable polynomial is required.
  • these public key authentication schemes and digital signature schemes include a step of calculating a multivariate polynomial calculation result for a plurality of inputs.
  • the multivariate polynomial is calculated individually for each input, there is room for improvement from the viewpoint of miniaturization and speedup, such as an increase in circuit scale at the time of mounting and a longer critical path. is there.
  • the present technology has been devised with the intention of providing a new and improved arithmetic device, control method, and program that are smaller and can realize multivariate polynomial operations at high speed.
  • a shift register storing values x 1, ..., x N, c (c is a predetermined number) so that movement of the stored value for the first of the shift register which is stored in each of the first to N + 1 of the register, the Other shift registers in which stored values x N ′,..., X 1 ′, c ′ (c ′ is a predetermined number) are stored in the first to N + 1 registers, respectively, in the same cycle as the first shift register.
  • a control unit that moves the stored value for the control unit, so that the control unit outputs all combinations of a pair of stored values that can be selected from the stored values x 1 ,..., X N , c. While moving the stored value, the first shift The stored value is output from a predetermined pair of registers constituting the data register, and all combinations of a pair of stored values that can be selected from the stored values x N ′,..., X 1 ′, c ′ are output. There is provided an arithmetic unit that outputs a stored value from a predetermined pair of registers constituting the other shift register while moving the stored value.
  • the stored values x N ′,..., X 1 ′, c ′ (c ′ is a predetermined number) are stored in the first to N + 1 registers, respectively.
  • the stored values are moved so that all combinations of a pair of stored values and all combinations of a pair of stored values that can be selected from the stored values x N ′′,..., X 1 ′′, c ′′ are output.
  • An arithmetic unit is provided that outputs stored values from a predetermined pair of registers constituting the second and third shift registers.
  • the stored values x 1 ,..., X N , c (c is a predetermined number) are moved to the first shift register stored in the first to N + 1 registers, respectively.
  • the stored values x 1 ,..., X N , c (c is a predetermined number) are moved to the first shift register stored in the first to N + 1 registers, respectively.
  • the stored value While moving the stored value, the stored value is output from a predetermined pair of registers constituting the first shift register, and a selectable pair from the stored values x N ′,..., X 1 ′, c ′.
  • the stored values are moved so that all combinations of stored values and all combinations of a pair of stored values that can be selected from the stored values x N ′′,..., X 1 ′′, c ′′ are output.
  • a control method in which processing for outputting a stored value from a predetermined pair of registers constituting the second and third shift registers is executed.
  • the stored values x 1 ,..., X N , c (c is a predetermined number) are moved to the first shift register stored in the first to N + 1 registers, respectively.
  • the combination will be output
  • the stored value is output from a predetermined pair of registers constituting the first shift register, and selected from the stored values x N ′,..., X 1 ′, c ′.
  • the stored values x 1 ,..., X N , c (c is a predetermined number) are moved to the first shift register stored in the first to N + 1 registers, respectively.
  • the third shift register stored in the register of A program for causing a computer to realize a control function for moving a stored value for a star, wherein the control function is a combination of a pair of stored values selectable from the stored values x 1 ,..., X N , c.
  • the stored values are moved so that the stored values are output from a predetermined pair of registers constituting the first shift register, and the stored values x N ′,..., X 1 ′, c All combinations of a pair of stored values selectable from 'and all combinations of a pair of stored values selectable from the stored values x N ′′,..., X 1 ′′, c ′′ are output.
  • a plurality of arithmetic circuits including the first shift in which stored values x 1 ,..., X N , c (c is a predetermined number) are stored in the first to N + 1 registers, respectively.
  • the stored value is moved with respect to the register, and in the same cycle as the first shift register, the stored values x M ′,..., X 1 ′, c ′ (c ′ is a predetermined number) are the first to M + 1th registers, respectively.
  • the second shift register stored in the And a control unit configured to move the stored value, wherein the plurality of arithmetic circuits are configured such that the first shift register and the second shift register execute pipeline processing in the same order, and the control The unit shifts the stored value and outputs the first shift register so that all combinations of a pair of stored values that can be selected from the stored values x 1 ,..., X N , c are output.
  • the stored value is output from a predetermined pair of registers, and all combinations of a pair of stored values selectable from the stored values x M ′,..., X 1 ′, c ′ are output. While moving the stored value, the stored value is output from a predetermined pair of registers constituting the second shift register, and the number N + 1 of the registers of the first shift register is sent to the arithmetic circuit after the pipeline processing. Naruho A computing device is provided that is configured to be less.
  • a plurality of arithmetic circuits including the first shift in which stored values x 1 ,..., X N , c (c is a predetermined number) are stored in the first to N + 1 registers, respectively.
  • the stored value is moved with respect to the register, and in the same cycle as the first shift register, the stored values x M ′,..., X 1 ′, c ′ (c ′ is a predetermined number) are the first to M + 1th registers, respectively.
  • the second shift register stored in the A control unit for moving the storage value each,
  • the plurality of arithmetic circuits are configured to execute pipeline processing in the reverse order of the first shift register and the second shift register, and the control unit is configured to store the stored value x 1 , .., X N , stored from a predetermined pair of registers constituting the first shift register while moving the stored values so as to output all combinations of stored values that can be selected from among the stored values.
  • the stored value is output from a predetermined pair of registers constituting two shift registers, and the number N + 1 of the first shift registers and the number M + 1 of the registers of the second shift register are calculated by an arithmetic circuit after the pipeline processing. Indeed less so as configured, computing device is provided.
  • the stored values are moved so that all combinations are output, while the stored values are output from a predetermined pair of registers constituting the first shift register, and the stored values x M ′,..., X 1 ′ are output.
  • C ′ a predetermined pair of registers constituting the second shift register while moving the stored values so that all combinations of a pair of stored values that can be selected from among the stored values are output.
  • a control method is provided in which processing for outputting a stored value is executed.
  • the stored value x 1 ,..., X N , c from a predetermined pair of registers constituting the first shift register while moving the stored values so that all combinations of stored pairs of stored values are output.
  • the stored value is output, and the stored value is moved so that all combinations of a pair of stored values that can be selected from the stored values x M ′,..., X 1 ′, c ′ are output.
  • a control method in which a process of outputting a stored value from a predetermined pair of registers constituting the second shift register is executed.
  • a computer-readable recording medium on which the above program is recorded is provided.
  • FIG. 26 is an explanatory diagram for describing a hardware configuration example of an information processing apparatus capable of executing an algorithm according to each embodiment of the present technology. It is explanatory drawing for demonstrating the structure of the circuit which performs the calculation of a multivariable polynomial. It is explanatory drawing for demonstrating the structure of the circuit which performs the calculation of a multivariable polynomial.
  • FIG. 36 is an explanatory diagram showing an example in which a plurality of arithmetic circuits 401 shown in FIG. 35 are arranged in parallel.
  • the present embodiment relates to a public key authentication scheme and a digital signature scheme that base security on the difficulty of solving problems for multi-order multivariable simultaneous equations.
  • this embodiment relates to a public key authentication method and an electronic signature method that use a multi-order multivariable simultaneous equation that does not have means for efficiently solving (trap door), unlike conventional methods such as the HFE electronic signature method.
  • the outline of the algorithm of the public key authentication method, the algorithm of the electronic signature method, and the n-pass public key authentication method will be briefly described.
  • FIG. 1 is an explanatory diagram for explaining an outline of an algorithm of a public key authentication method.
  • Public key authentication is used for a certain person (certifier) to convince another person (verifier) that he / she is the person using the public key pk and the secret key sk.
  • the prover A's public key pk A is disclosed to the verifier B.
  • the prover A's private key sk A is secretly managed by the prover A.
  • a person who knows the secret key sk A corresponding to the public key pk A is regarded as the prover A himself.
  • the prover A uses the secret key sk corresponding to the public key pk A via the interactive protocol. Evidence that A is known may be presented to verifier B. Then, when the prover A knows the secret key sk A is presented to the verifier B and the verifier B has confirmed the evidence, the validity of the prover A (identity) It will be proved.
  • the first condition is “to minimize the probability that a perjury will be established by a fake person who does not have the secret key sk when the interactive protocol is executed”.
  • the fact that this first condition is satisfied is called “soundness”. In other words, soundness can be paraphrased as “a perjury who does not have a secret key sk does not have a falsification with a probability that cannot be ignored during the execution of the dialogue protocol”.
  • the second condition is that “the information of the secret key sk A possessed by the prover A is never leaked to the verifier B even if the interactive protocol is executed”. The fact that this second condition is satisfied is called “zero knowledge”.
  • model In the public key authentication model, there are two entities, a prover and a verifier, as shown in FIG.
  • the prover uses a key generation algorithm Gen to generate a pair of a secret key sk and a public key pk unique to the prover.
  • the prover executes an interactive protocol with the verifier using the set of the secret key sk and the public key pk generated using the key generation algorithm Gen.
  • the prover uses the prover algorithm P to execute the interactive protocol.
  • the prover uses the prover algorithm P to present evidence that the secret key sk is held in the interactive protocol to the verifier.
  • the verifier executes the interactive protocol by using the verifier algorithm V, and verifies whether or not the prover has a secret key corresponding to the public key published by the prover. That is, the verifier is an entity that verifies whether the prover has a secret key corresponding to the public key.
  • the public key authentication method model includes two entities, a prover and a verifier, and three algorithms, a key generation algorithm Gen, a prover algorithm P, and a verifier algorithm V.
  • the expressions “prover” and “verifier” are used, but these expressions only mean entities. Therefore, the subject that executes the key generation algorithm Gen and the prover algorithm P is an information processing apparatus corresponding to the entity of the “certifier”. Similarly, the subject that executes the verifier algorithm V is an information processing apparatus.
  • the hardware configuration of these information processing apparatuses is, for example, as shown in FIG. That is, the key generation algorithm Gen, the prover algorithm P, and the verifier algorithm V are executed by the CPU 902 or the like based on programs recorded in the ROM 904, the RAM 906, the storage unit 920, the removable recording medium 928, and the like.
  • the key generation algorithm Gen is used by the prover.
  • the key generation algorithm Gen is an algorithm for generating a set of a secret key sk and a public key pk unique to the prover.
  • the public key pk generated by the key generation algorithm Gen is made public.
  • the public key pk that is made public is used by the verifier.
  • the prover secretly manages the secret key sk generated by the key generation algorithm Gen.
  • the secret key sk managed secretly by the prover is used to prove to the verifier that the prover holds the secret key sk corresponding to the public key pk.
  • the key generation algorithm Gen is expressed as the following equation (1) as an algorithm that inputs a security parameter 1 ⁇ ( ⁇ is an integer of 0 or more) and outputs a secret key sk and a public key pk.
  • the prover algorithm P is used by the prover.
  • the prover algorithm P is an algorithm for proving to the verifier that the prover has the secret key sk corresponding to the public key pk. That is, the prover algorithm P is an algorithm that executes the interactive protocol with the secret key sk and the public key pk as inputs.
  • the verifier algorithm V is used by the verifier.
  • the verifier algorithm V is an algorithm for verifying whether or not the prover has a secret key sk corresponding to the public key pk in the interactive protocol.
  • the verifier algorithm V is an algorithm that takes the public key pk as an input and outputs 0 or 1 (1 bit) according to the execution result of the interactive protocol.
  • the verifier determines that the prover is illegal when the verifier algorithm V outputs 0, and determines that the prover is valid when 1 is output.
  • the verifier algorithm V is expressed as the following equation (2).
  • the dialogue protocol needs to satisfy the two conditions of soundness and zero knowledge.
  • the prover executes a procedure depending on the secret key sk, notifies the verifier of the result, and then includes the notification contents. It is necessary to make the verifier perform the verification based on it.
  • the execution of the procedure depending on the secret key sk is necessary to ensure soundness.
  • FIG. 2 is an explanatory diagram for explaining the outline of the algorithm of the electronic signature method.
  • the electronic signature refers to a mechanism in which signature data known only to the creator of the data is provided to the recipient in association with the data, and the signature data is verified on the recipient side.
  • the digital signature scheme model has two entities, a signer and a verifier.
  • the model of the electronic signature scheme is composed of three algorithms: a key generation algorithm Gen, a signature generation algorithm Sig, and a signature verification algorithm Ver.
  • the signer uses a key generation algorithm Gen to generate a pair of a signer-specific signature key sk and a verification key pk. Further, the signer generates an electronic signature ⁇ to be given to the document M using the signature generation algorithm Sig. That is, the signer is an entity that gives an electronic signature to the document M.
  • the verifier verifies the electronic signature ⁇ attached to the document M using the signature verification algorithm Ver. That is, the verifier is an entity that verifies the electronic signature ⁇ in order to confirm whether or not the creator of the document M is a signer.
  • the expressions “signer” and “verifier” are used, but these expressions only mean entities. Accordingly, the subject that executes the key generation algorithm Gen and the signature generation algorithm Sig is an information processing apparatus corresponding to the entity of the “signer”. Similarly, the subject that executes the signature verification algorithm Ver is an information processing apparatus.
  • the hardware configuration of these information processing apparatuses is, for example, as shown in FIG. That is, the key generation algorithm Gen, the signature generation algorithm Sig, and the signature verification algorithm Ver are executed by the CPU 902 or the like based on programs recorded in the ROM 904, the RAM 906, the storage unit 920, the removable recording medium 928, and the like.
  • the key generation algorithm Gen is used by the signer.
  • the key generation algorithm Gen is an algorithm for generating a set of a signer-specific signature key sk and a verification key pk.
  • the verification key pk generated by the key generation algorithm Gen is made public.
  • the signature key sk generated by the key generation algorithm Gen is secretly managed by the signer.
  • the signature key sk is used to generate an electronic signature ⁇ given to the document M.
  • the key generation algorithm Gen receives the security parameter 1 ⁇ ( ⁇ is an integer greater than or equal to 0), and outputs the signature key sk and the public key pk.
  • the key generation algorithm Gen can be formally expressed as the following equation (3).
  • the signature generation algorithm Sig is used by the signer.
  • the signature generation algorithm Sig is an algorithm for generating an electronic signature ⁇ given to the document M.
  • the signature generation algorithm Sig is an algorithm that receives the signature key sk and the document M and outputs an electronic signature ⁇ .
  • This signature generation algorithm Sig can be formally expressed as the following formula (4).
  • the signature verification algorithm Ver is used by a verifier.
  • the signature verification algorithm Ver is an algorithm for verifying whether or not the electronic signature ⁇ is a valid electronic signature for the document M.
  • the signature verification algorithm Ver is an algorithm that inputs the verification key pk of the signer, the document M, and the electronic signature ⁇ , and outputs 0 or 1 (1 bit).
  • This signature verification algorithm Ver can be formally expressed as the following formula (5).
  • the verifier determines that the electronic signature ⁇ is invalid when the signature verification algorithm Ver outputs 0 (when the public key pk rejects the document M and the electronic signature ⁇ ), and outputs 1 ( When the public key pk accepts the document M and the electronic signature ⁇ , it is determined that the electronic signature ⁇ is valid.
  • FIG. 3 is an explanatory diagram for explaining an n-pass public-key authentication scheme.
  • the public key authentication scheme is an authentication scheme that proves to the verifier that the prover has the secret key sk corresponding to the public key pk in the interactive protocol.
  • the dialogue protocol needs to satisfy two conditions of soundness and zero knowledge. Therefore, in the interactive protocol, as shown in FIG. 3, both the prover and the verifier exchange information n times while executing processes.
  • FIG. 4 is an explanatory diagram for describing a specific algorithm configuration related to the 3-pass scheme.
  • the second-order polynomial f i (x) is assumed to be expressed as the following equation (6).
  • a vector (x 1 ,..., X n ) is expressed as x
  • a set of quadratic polynomials f 1 (x),..., F m (x)
  • F (x) is expressed as a multivariable polynomial F (x).
  • a set of quadratic polynomials (f 1 (x),..., F m (x)) can be expressed as the following equation (7).
  • a 1 ,..., Am are n ⁇ n matrices.
  • b 1 ,..., B m are n ⁇ 1 vectors, respectively.
  • the multivariate polynomial F can be expressed as shown in the following expressions (8) and (9). It can be easily confirmed from the following formula (10) that this expression holds.
  • G (x, y) corresponding to is bilinear with respect to x and y.
  • G (x, y) may be referred to as a bilinear term. If this property is used, an efficient algorithm can be constructed.
  • the sum of the multivariate polynomial F (x + r 0 ) and F 1 (x) is expressed as the following equation (11).
  • the three-pass algorithm described here includes a key generation algorithm Gen, a prover algorithm P, and a verifier algorithm V as follows.
  • the key generation algorithm Gen (f 1 (x 1, ..., x n), ..., f m (x 1, ..., x n), y) is set to public key pk, and the s in the secret key Set.
  • Process # 1 As shown in FIG. 4, first, the prover algorithm P generates vectors r 0 , t 0 ⁇ K n and e 0 ⁇ K m at random. Next, the prover algorithm P calculates r 1 ⁇ s ⁇ r 0 . This calculation corresponds to an operation to mask by the vector r 0 a secret key s. Further, the prover algorithm P calculates t 1 ⁇ r 0 -t 0 . Next, the prover algorithm P calculates e 1 ⁇ -F (r 0 ) ⁇ e 0 .
  • Step # 1 (continued): Next, the prover algorithm P calculates c 0 ⁇ -H (r 1 , G (t 0 , r 1 ) + e 0 ). Next, the prover algorithm P calculates c 1 ⁇ -H (t 0 , e 0 ). Next, the prover algorithm P calculates c 2 ⁇ -H (t 1 , e 1 ). The message (c 0 , c 1 , c 2 ) generated in step # 1 is sent to the verifier algorithm V.
  • Process # 2 The verifier algorithm V that has received the message (c 0 , c 1 , c 2 ) selects which verification pattern to use from among the three verification patterns. For example, the verifier algorithm V selects one numerical value from three numerical values ⁇ 0, 1, 2 ⁇ representing the type of verification pattern, and sets the selected numerical value in the request Ch. This request Ch is sent to the prover algorithm P.
  • Process # 3 The prover algorithm P that has received the request Ch generates a response Rsp to be sent to the verifier algorithm V in accordance with the received request Ch.
  • the response Rsp generated in step # 3 is sent to the verifier algorithm V.
  • Process # 4 The verifier algorithm V that has received the response Rsp executes the following verification processing using the received response Rsp.
  • a serial method that sequentially exchanges a message, a request, and a response a plurality of times, and a message, a request, and a response for a plurality of times in a single exchange
  • a parallel method is considered.
  • a hybrid method combining a serial method and a parallel method is also conceivable.
  • an algorithm hereinafter referred to as a parallelization algorithm for executing the above interactive protocol related to the 3-pass scheme in parallel will be described with reference to FIG.
  • Process (1) The prover algorithm P randomly generates vectors r 0i , t 0i ⁇ K n and e 0i ⁇ K m .
  • Process (3) The prover algorithm P calculates e 1i ⁇ -F (r 0i ) ⁇ e 0i .
  • the hash value Cmt generated in step # 1 is sent to the verifier algorithm V.
  • the message (c 01 , c 11 , c 21 ,..., C 0N , c 1N , c 2N ) is converted into a hash value and then sent to the verifier algorithm V, thereby reducing the amount of communication. It becomes possible.
  • Process # 3 Request Ch 1, ..., a prover algorithm P that received Ch N, requested Ch 1 received, ..., reply Rsp 1 to send to the verifier algorithm V in accordance respective Ch N, ..., to produce a Rsp N.
  • the responses Rsp 1 ,..., Rsp N generated in step # 3 are sent to the verifier algorithm V.
  • ⁇ 3 Algorithm structure for a 5-pass public-key authentication scheme> Next, an algorithm related to a 5-pass public key authentication scheme will be described. In the following description, a 5-pass public-key authentication scheme may be referred to as a “5-pass scheme”.
  • the false verification probability per interactive protocol was 2/3, but in the case of the 5-pass scheme, the false verification probability per interactive protocol is 1/2 + 1 / q. Where q is the order of the ring used. Therefore, when the order of the ring is sufficiently large, the 5-pass scheme can reduce the false perception probability per time, and the false authentication probability can be sufficiently reduced with a small number of interactive protocol executions. it can.
  • FIG. 6 is an explanatory diagram for explaining a specific algorithm configuration related to the 5-pass scheme.
  • the quadratic polynomial f i (x) is assumed to be expressed as in the above equation (6).
  • a vector (x 1 ,..., X n ) is expressed as x
  • a set of quadratic polynomials f 1 (x),..., F m (x)
  • F (x) is expressed as a multivariable polynomial F (x).
  • the multivariate polynomial F 1 (x) used to mask the multivariate polynomial F (x + r 0 ) using the two vectors t 0 ⁇ K n and e 0 ⁇ K m. Is expressed as F 1 (x) G (x, t 0 ) + e 0 .
  • F 1 (x) G (x, t 0 ) + e 0 .
  • the 5-pass algorithm described here includes a key generation algorithm Gen, a prover algorithm P, and a verifier algorithm V as follows.
  • the key generation algorithm Gen sets (f 1 ,..., F m , y) as the public key pk and sets s as the secret key.
  • the vector (x 1 ,..., X n ) is represented as x
  • the set of multivariable polynomials (f 1 (x),..., F m (x)) is represented as F (x).
  • Process # 1 As shown in FIG. 6, first, the prover algorithm P randomly generates vectors r 0 ⁇ K n , t 0 ⁇ K n , and e 0 ⁇ K m . Next, the prover algorithm P calculates r 1 ⁇ s ⁇ r 0 . This calculation corresponds to an operation to mask by the vector r 0 a secret key s. Next, the prover algorithm P generates a hash value c 0 of the vectors r 0 , t 0 , e 0 . That is, the prover algorithm P calculates c 0 ⁇ -H (r 0 , t 0 , e 0 ).
  • the prover algorithm P generates G (t 0 , r 1 ) + e 0 and a hash value c 1 of r 1 . That is, the prover algorithm P calculates c 0 ⁇ -H (r 1 , G (t 0 , r 1 ) + e 0 ). The message (c 0 , c 1 ) generated in step # 1 is sent to the verifier algorithm V.
  • Process # 2 The verifier algorithm V that has received the message (c 0 , c 1 ) selects one number Ch A at random from the elements of the ring K existing in q ways, and sends the selected number Ch A to the prover algorithm P.
  • Process # 3 The prover algorithm P that has received the number Ch A calculates t 1 ⁇ -Ch A ⁇ r 0 ⁇ t 0 . Further, the prover algorithm P calculates e 1 ⁇ -Ch A ⁇ F (r 0 ) ⁇ e 0 . Then, the prover algorithm P sends t 1 and e 1 to the verifier algorithm V.
  • Process # 4 The verifier algorithm V receiving t 1 and e 1 selects which verification pattern to use from the two verification patterns. For example, the verifier algorithm V selects one numerical value from two numerical values ⁇ 0, 1 ⁇ representing the type of verification pattern, and sets the selected numerical value in the request Ch B. This request Ch B is sent to the prover algorithm P.
  • Process # 5 Request Ch prover algorithm P that B has received the generates a response Rsp to send to the verifier algorithm V in response to the received challenge Ch B.
  • the response Rsp generated in step # 5 is sent to the verifier algorithm V.
  • Process # 6 The verifier algorithm V that has received the response Rsp executes the following verification processing using the received response Rsp.
  • Ch B 1
  • a serial method that sequentially exchanges a message, a request, and a response a plurality of times, and a message, a request, and a response for a plurality of times in a single exchange
  • a parallel method is considered.
  • a hybrid method combining a serial method and a parallel method is also conceivable.
  • an algorithm for executing the above interactive protocol related to the 5-pass scheme in parallel hereinafter referred to as a parallel algorithm
  • Process (1) The prover algorithm P randomly generates vectors r 0i , t 0i ⁇ K n and e 0i ⁇ K m .
  • an efficient algorithm (see, for example, FIG. 5) related to the 3-pass scheme is expressed by three dialogs and four steps # 1 to # 4.
  • the Cmt generated by the prover algorithm P in step # 1 is sent to the verifier algorithm V.
  • Step # 2 includes a process of selecting Ch 1 ,..., Ch N. Ch 1 ,..., Ch N selected by the verifier algorithm V in step # 2 are sent to the prover algorithm P.
  • Step # 3 Ch 1, ..., Ch N and a 1, ..., Rsp 1 with a N, ..., consisting of the process of generating Rsp N. This process is expressed as Rsp i ⁇ Select (Ch i , a i ). Rsp 1 ,..., Rsp N generated by the prover algorithm P in step # 3 are sent to the verifier algorithm V.
  • the algorithm of the public key authentication method expressed in the above steps # 1 to # 4 is transformed into a signature generation algorithm Sig and a signature verification algorithm Ver as shown in FIG.
  • the signature generation algorithm Sig includes the following processes (1) to (5).
  • Process (3): The signature generation algorithm Sig calculates (Ch 1 ,..., Ch N ) ⁇ H (M, Cmt). This M is a document to which a signature is attached.
  • the signature verification algorithm Ver includes the following processes (1) to (3).
  • Process (1): The signature verification algorithm Ver calculates (Ch 1 ,..., Ch N ) ⁇ H (M, Cmt). Processing (2): The signature verification algorithm Ver, Ch 1, ..., Ch N and Rsp 1, ..., c 01, c 11, c 21 using Rsp N, generate ..., c 0N, c 1N, c 2N To do. Process (3): The signature verification algorithm Ver uses the regenerated c 01 , c 11 , c 21 ,..., C 0N , c 1N , c 2N and Cmt H (c 01 , c 11 , c 21 ,. c 0N , c 1N , c 2N ).
  • the public key authentication method algorithm can be transformed into an electronic signature method algorithm.
  • an efficient algorithm (for example, see FIG. 7) according to the 5-pass scheme is expressed by 5 dialogs and 6 steps # 1 to # 6.
  • the Cmt generated by the prover algorithm P in step # 1 is sent to the verifier algorithm V.
  • Step # 2 includes processing for selecting Ch A1 ,..., Ch AN .
  • Ch A1 ,..., Ch AN selected by the verifier algorithm V in step # 2 is sent to the prover algorithm P.
  • Step # 4 includes processing for selecting Ch B1 ,..., Ch BN .
  • Ch B1 ,..., Ch BN selected by the verifier algorithm V in step # 4 is sent to the prover algorithm P.
  • Step # 5 Ch B1, ..., Ch BN , a 1, ..., a N, b 1, ..., Rsp 1 with b N, ..., consisting of the process of generating Rsp N. This process is expressed as Rsp i ⁇ Select (Ch Bi , a i , b i ). Rsp 1 ,..., Rsp N generated by the prover algorithm P in step # 5 are sent to the verifier algorithm V.
  • the algorithm of the public key authentication method expressed in the above steps # 1 to # 6 is transformed into a signature generation algorithm Sig and a signature verification algorithm Ver as shown in FIG.
  • the signature generation algorithm Sig includes the following processes (1) to (7).
  • Process (6) The signature generation algorithm Sig calculates Rsp i ⁇ -Select (Ch Bi , a i , b i ).
  • the signature verification algorithm Ver includes the following processes (1) to (4).
  • Process (1) The signature verification algorithm Ver calculates (Ch A1 ,..., Ch AN ) ⁇ H (M, Cmt).
  • Process (2) The signature verification algorithm Ver calculates (Ch B1 ,..., Ch BN ) ⁇ H (M, Cmt, Ch A1 ,..., Ch AN , d).
  • the signature verification algorithm Ver executes (Ch B1, ..., Ch BN ) ⁇ H (Ch A1, ..., Ch aN, d) is calculated.
  • Process (3) The signature verification algorithm Ver uses Ch A1 ,..., Ch AN , Ch B1 ,..., Ch BN , Rsp 1 , ..., Rsp N to t 11 , e 11 , ..., t 1N , e 1N. , C 01 , c 11 ,..., C 0N , c 1N are generated.
  • the public key authentication method algorithm can be transformed into an electronic signature method algorithm.
  • FIG. 10 Hardware configuration example (FIG. 10)>
  • Each of the above algorithms can be executed using, for example, the hardware configuration of the information processing apparatus shown in FIG. That is, the processing of each algorithm is realized by controlling the hardware shown in FIG. 10 using a computer program.
  • the form of this hardware is arbitrary.
  • personal computers, mobile phones, PHS, PDA and other portable information terminals, game machines, contact type or non-contact type IC chips, contact type or non-contact type ICs This includes cards or various information appliances.
  • PHS is an abbreviation for Personal Handy-phone System.
  • the PDA is an abbreviation for Personal Digital Assistant.
  • this hardware mainly includes a CPU 902, a ROM 904, a RAM 906, a host bus 908, and a bridge 910. Further, this hardware includes an external bus 912, an interface 914, an input unit 916, an output unit 918, a storage unit 920, a drive 922, a connection port 924, and a communication unit 926.
  • the CPU is an abbreviation for Central Processing Unit.
  • the ROM is an abbreviation for Read Only Memory.
  • the RAM is an abbreviation for Random Access Memory.
  • the CPU 902 functions as, for example, an arithmetic processing unit or a control unit, and controls the overall operation or a part of each component based on various programs recorded in the ROM 904, the RAM 906, the storage unit 920, or the removable recording medium 928.
  • the ROM 904 is a means for storing a program read by the CPU 902, data used for calculation, and the like.
  • a program read by the CPU 902 various parameters that change as appropriate when the program is executed, and the like are temporarily or permanently stored.
  • a host bus 908 capable of high-speed data transmission.
  • the host bus 908 is connected to an external bus 912 having a relatively low data transmission speed via a bridge 910, for example.
  • a bridge 910 for example.
  • the input unit 916 for example, a mouse, a keyboard, a touch panel, a button, a switch, a lever, or the like is used.
  • a remote controller capable of transmitting a control signal using infrared rays or other radio waves may be used.
  • a display device such as a CRT, LCD, PDP, or ELD
  • an audio output device such as a speaker or a headphone, a printer, a mobile phone, or a facsimile, etc.
  • the CRT is an abbreviation for Cathode Ray Tube.
  • the LCD is an abbreviation for Liquid Crystal Display.
  • the PDP is an abbreviation for Plasma Display Panel.
  • the above ELD is an abbreviation for Electro-Luminescence Display.
  • the storage unit 920 is a device for storing various data.
  • a magnetic storage device such as a hard disk drive (HDD), a semiconductor storage device, an optical storage device, a magneto-optical storage device, or the like is used.
  • HDD hard disk drive
  • the above HDD is an abbreviation for Hard Disk Drive.
  • the drive 922 is a device that reads information recorded on a removable recording medium 928 such as a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory, or writes information to the removable recording medium 928.
  • the removable recording medium 928 is, for example, DVD media, Blu-ray media, HD DVD media, various semiconductor storage media, and the like.
  • the removable recording medium 928 may be, for example, an IC card on which a non-contact IC chip is mounted, an electronic device, or the like.
  • the above IC is an abbreviation for Integrated Circuit.
  • the connection port 924 is a port for connecting an external connection device 930 such as a USB port, an IEEE 1394 port, a SCSI, an RS-232C port, or an optical audio terminal.
  • the external connection device 930 is, for example, a printer, a portable music player, a digital camera, a digital video camera, or an IC recorder.
  • the USB is an abbreviation for Universal Serial Bus.
  • the SCSI is an abbreviation for Small Computer System Interface.
  • the communication unit 926 is a communication device for connecting to the network 932.
  • a wired or wireless LAN for example, a wired or wireless LAN, Bluetooth (registered trademark), or a WUSB communication card, an optical communication router, an ADSL router, or a contact Or a device for non-contact communication.
  • the network 932 connected to the communication unit 926 is configured by a wired or wireless network, such as the Internet, home LAN, infrared communication, visible light communication, broadcast, or satellite communication.
  • the above LAN is an abbreviation for Local Area Network.
  • the WUSB is an abbreviation for Wireless USB.
  • the above ADSL is an abbreviation for Asymmetric Digital Subscriber Line.
  • the circuit is designed paying attention to evaluation items such as processing speed, circuit scale, and power consumption.
  • the processing speed here is evaluated based on, for example, the maximum operating frequency and the number of processing cycles.
  • the maximum operating frequency is determined by the length of a path (critical path) through which signal propagation is slowest in the circuit.
  • the smaller the circuit scale the better from the viewpoints of design freedom and manufacturing cost.
  • power consumption is regarded as important from various viewpoints such as the battery duration of mounted equipment and the degree of freedom in thermal design.
  • a circuit that adds the calculated values (hereinafter referred to as intermediate values) of each term in accordance with the operation cycle of the arithmetic circuit a circuit that calculates the second-order multivariable polynomial f (x) can be constructed. it can.
  • a circuit that calculates one second-order multivariate polynomial f (x) expressed by the above equation (13) includes an intermediate value generation circuit 11, an XOR circuit 12, and an intermediate value holding as shown in FIG.
  • the circuit 13 is configured.
  • the intermediate value generation circuit 11 is a circuit that generates intermediate values by calculating the terms a ij x i x j and b i x i .
  • the XOR circuit 12 is a circuit for adding the intermediate values of the terms generated by the intermediate value generation circuit 11.
  • the intermediate value holding circuit 13 is a circuit that temporarily holds the result added using the XOR circuit 12.
  • the intermediate value generated by the intermediate value generation circuit 11 is added each time, and the operation result of the secondary multivariable polynomial f (x) is finally obtained.
  • the circuit scale can be reduced.
  • the intermediate value generation circuit 11 is constructed using, for example, a variable generation circuit 21 and an AND circuit 22 as shown in FIG.
  • the variable generation circuit 12 generates a variable x i x j or x i of each term corresponding to an input for each cycle.
  • the AND circuit 22 is a 1-bit logic between the value of the variable x i x j or x i of each term generated by the variable generation circuit 12 and the value of the coefficient a ij or b i of the term. Perform product operation.
  • the AND circuit 22 can be shared for operations of all terms, and the circuit scale can be reduced. It is assumed that the coefficient value input to the AND circuit 22 is stored in advance in a recording memory (ROM, RAM, etc.) in the format shown in FIG. 13, for example. Therefore, a desired coefficient value can be obtained by accessing a desired address at a desired timing.
  • ROM read-only memory
  • RAM random access memory
  • the coefficients a 1ij , ..., a mij or b 1i , ..., m of the m second-order multivariable polynomials f 1 (x), ..., f m (x) at a time It is preferable to generate b mi so that an operation on a term relating to a certain variable x i x j or x j can be executed in parallel.
  • the arithmetic circuit includes one variable generation circuit 31, a plurality of AND circuits 32 and 35, a plurality of multipliers 33 and 36, and a plurality of intermediate value holding circuits 34 and 37.
  • the variable x i x j or x j generated once by the variable generation circuit 31 is used in parallel for the calculation of the second-order multivariable polynomial f 1 (x),..., F m (x).
  • the coefficients a 1ij ,..., A mij or b 1i ,..., B mi are assumed to be stored in advance in a recording memory (ROM, RAM, etc.) in the format shown in FIG. Therefore, by accessing a desired address at a desired timing, a desired coefficient value for f 1 (x),..., F m (x) can be obtained at a time.
  • m secondary multivariable polynomials f 1 (x),..., F m (x) can be calculated in parallel, and the number of processing cycles is reduced.
  • the description will be given focusing on one second-order multivariable polynomial f i , but m second-order multivariate polynomial f 1 ( x),..., f m (x) can be constructed in parallel.
  • a circuit configuration using a multi-bit input selector As a configuration of the arithmetic circuit as described above, a circuit configuration using a multi-bit input selector, a circuit configuration using a shift register, or the like can be applied.
  • a circuit configuration using a multi-bit input selector see, for example, Reference 1 (David Arditi, Come Berbain, Olivier Billet, Henri Gilbert, “Compact FPGA Implementations of QUAD”, ASIACCS'07, 2 Singapore.).
  • Reference 2 As for the circuit configuration using the shift register, for example, Reference 2 (Andrey Bogdanov, Thomas Eisenbarth, Andy Rupp, and Christopher Wolf, “Time-Area Optimized Public-Mixed-Public-Migrated-Pic-M-E-Cred-E-Cim-Pe-Mim-Ep ", CHES 2008, LNCS 5154, pp. 45-61, 2008.).
  • Reference 2 introduces a circuit configuration in which a feedback loop is introduced into the shift register.
  • the circuit configurations described in Reference Documents 1 and 2 calculate a second-order multivariable polynomial f (x) for one input x ⁇ ⁇ 0, 1 ⁇ n . Therefore, in order to calculate the second-order multivariable polynomials f (x 1 ) and f (x 2 ) for two inputs x 1 , x 2 ⁇ ⁇ 0, 1 ⁇ n , are the two arithmetic circuits operated in parallel? Alternatively, it is necessary to operate one arithmetic circuit twice. As will be described in detail below, the circuit configurations described in References 1 and 2 have room for improvement from the viewpoint of processing speed or circuit scale.
  • An arithmetic circuit using a multi-bit input selector has a first circuit portion (see FIGS. 16 and 17) that generates a variable x i x j or x i of each term constituting the second-order multivariable polynomial f (x). And a second circuit portion (see FIG. 18) that adds the intermediate value obtained by multiplying the variable of each term by the coefficient a ij or b j and outputs the operation result z.
  • the register 101 as shown in FIG. 17, the registers R 1, ..., R n and the selector S 1, ..., constituted by S n.
  • Register R 1, ..., the R n in the first cycle, the selector S 1, respectively, ..., x 1 through S n, ..., x n are stored.
  • the register R 1 at any timing, ..., x 1 stored in R n, ..., x n is y 1, ..., are output as y n.
  • the output values y 1 ,..., N n of the register 101 are input to the selectors 102 and 103 as shown in FIG.
  • the selector 102, the value y 1 is input, ..., from the y n, each select one value inputted into the AND circuit 104.
  • the selector 103 selects one value from the input values y 2 ,..., Y n and the constant “1”, and inputs the selected value to the AND circuit 104.
  • the AND circuit 104 performs an AND operation on the two input values and outputs x i x j or x i .
  • the output value of the AND circuit 104 is input to the AND circuit 105 constituting the second circuit portion.
  • the second circuit portion includes an XOR circuit 106 and a register 107 in addition to the AND circuit 105 as shown in FIG. Also, the wiring widths shown in FIG. 18 are all 1 bit.
  • the AND circuit 105 receives the coefficient a ij or b i together with the output value of the AND circuit 104.
  • the output value (intermediate value) of the AND circuit 105 is input to the XOR circuit 106.
  • the stored value of the register 107 is input to the XOR circuit 106 together with the intermediate value.
  • the XOR circuit 106 performs an exclusive OR operation on the two input values, and inputs the operation result (intermediate value) to the register 107.
  • the value stored in the register 107 is output as the operation result z.
  • the first cycle (P1) the register R 1 constituting the register 101, ..., input x ⁇ to R n ⁇ 0,1 ⁇ n are stored.
  • the register R 1 ..., in a state where the stored value is retained in R n, the register R 1, ..., stored value x 1 of R n, ..., x n is y 1, ..., It is output as y n.
  • the process of selecting a value from y 1 ,..., Y n and the constant “1” is executed by the n-bit input selectors 102 and 103.
  • “1” is output from one of the selectors 102 and 103.
  • the operation circuit of the second-order multivariable polynomial f (x) can be constructed by using the multi-bit input selector.
  • the critical path is lengthened and the maximum operating frequency is lowered.
  • the circuit scale increases.
  • an arithmetic circuit that calculates a second-order multivariable polynomial f (x) for a plurality of inputs is constructed by mounting an arithmetic circuit using a multi-bit input selector in parallel, a plurality of AND circuits and XOR circuits are provided. It is necessary to prepare a set. There is room for improvement in these respects.
  • the arithmetic circuit using the shift register includes a first circuit portion (see FIGS. 20 and 21) that generates a variable x i x j or x i of each term constituting the second-order multivariable polynomial f (x). , And a second circuit portion (see FIG. 22) that adds the intermediate value obtained by multiplying the variable of each term by the coefficient a ij or b j and outputs the operation result z.
  • the first circuit portion includes a shift register 201 and an AND circuit 202.
  • the shift register 201 as shown in FIG. 21, the selector S 1, ..., S n + 1 and the register R 1, ..., constituted by R n + 1.
  • the selectors S 1 and S n + 1 are “3-bit input: 1-bit output” registers.
  • the selectors S 2 ,..., Sn are “2-bit input: 1-bit output” registers. All the wiring widths are 1 bit.
  • the second circuit portion includes an AND circuit 203, an XOR circuit 204, and a register 205 as shown in FIG.
  • the AND circuit 203, the output value of the AND circuit 202 constituting the first circuit portion, and the coefficient a ij or b i is inputted.
  • the output value of the AND circuit 203 is input to the XOR circuit 204.
  • the stored value stored in the register 205 is input to the XOR circuit 204 together with the output value of the AND circuit 203.
  • the stored value of the register 205 is updated with the output value of the XOR circuit 204.
  • the stored values are rotated in the registers R 2 ,..., R n + 1 .
  • one-bit value x 2 which has been stored in the register R 2 are moved to register R n + 1, register R 3, ..., R n + 1 has been stored in the one-bit value x 3, ..., x n, 1 is the register R 2, ..., move to R n.
  • the two values y 1 and y 2 output from the shift register 201 are input to the AND circuit 202 and stored in the register 205 via the AND circuit 203 and the XOR circuit 204 (see FIG. 22).
  • next cycle As shown in FIG. 24, while the value stored in the register R 1 is maintained, the stored value is output from the shift register 201 as an output value y 1.
  • the stored value of the register R 2 is output from the shift register 201 as the output value y 2 .
  • the stored values are rotated in the registers R 2 ,..., R n + 1 .
  • the output of y 1 and y 2 and the rotation of the stored value are repeatedly performed.
  • the value stored is output from the shift register 201 as an output value y 1.
  • the stored value of the register R 2 is output from the shift register 201 as the output value y 2 .
  • the stored values are rotated in the registers R 2 ,..., R n + 1 .
  • the shift register 201, a register R 2, ..., and rotation of the storage values in R n + 1, the register R 1, ..., combining the rotation of the storage values in R n + 1, 2 one value y 1 is output, to control the combination of y 2.
  • the register R 1, ..., input to the R 5 x 1, ..., x 4, 1 is stored.
  • the stored values x 1 and x 2 are output from the registers R 1 and R 2 as output values y 1 and y 2 .
  • These output values y 1 and y 2 are input to the AND circuit 202.
  • the logical sum y is input to the AND circuit 203.
  • a logical product with the coefficient a 12 is calculated by the AND circuit 203 and stored in the register 205.
  • the stored values are rotated in the registers R 2 ,..., R 5 , and the stored values are updated to x 3 , x 4 , 1 and x 2 , respectively. Therefore, the output values y 1 and y 2 of the shift register 201 are x 1 and x 3 , respectively.
  • the stored values in the registers R 2 ,..., R 5 are rotated, and the values y 1 and y 2 are output from the shift register 201 every cycle.
  • the stored values of the registers R 1 ,..., R 5 are respectively x 1 ,..., X 4 , 1 and when the stored values are output as they are from the registers R 1 , R 2
  • the already output values x 1 and x 2 are output. Therefore, the AND circuit 203 is devised to input “0” where the coefficients a ij and b i are originally input, or to add a function that does not update the stored value of the register 205, so that the register 205 Hold the stored value. At that time, rotation is performed in the registers R 1 ,..., R 5 .
  • the shift register 201 When the rotation is performed, the stored values of the registers R 1 ,..., R 5 are in the order of x 2 , x 3 , x 4 , 1, x 1 as described in the column of the number of cycles 5 + 1. Therefore, the shift register 201 outputs the stored value from the registers R 1 and R 2 .
  • the shift register 201 outputs the stored values from the registers R 1 and R 2 while rotating the stored values in the registers R 2 ,..., R 5 .
  • the stored value of the register 205 is not updated when the number of cycles is 5 + 4.
  • the value stored in register 205 is not updated, the register R 1, ..., register R 1 to align the stored values of R 5, ..., Rotate stored value of R 5 .
  • the shift register 201 a register R 2 with the output from the register R 1, R 2, ..., and rotation of R 5, the register R 1, register R 2 with no output from R 2, ..., R 5 and rotation of the register R 1 with no output from the register R 1, R 2, ..., for all combinations of the stored values to implement the rotation of R 5 outputs the value.
  • the values y 1 and y 2 output from the shift register 201 are added each time by the AND circuits 202 and 203, the XOR circuit 204, and the register 205.
  • the stored value of the register 205 is output from the arithmetic circuit as the operation result z.
  • the arithmetic circuit using the shift register includes a first circuit portion (see FIGS. 27 and 28) that generates variables x i x j or x i of each term constituting the second-order multivariable polynomial f (x). , And a second circuit portion (see FIG. 29) that adds the intermediate value obtained by multiplying the variable of each term by the coefficient a ij or b j and outputs the operation result z.
  • the first circuit portion mainly includes a shift register 301 and an AND circuit 302.
  • the description of the mask circuit 303 (see FIG. 29) provided in the previous stage of the AND circuit 302 is omitted for the sake of convenience in order to facilitate comparison with the shift register 201 illustrated in FIG. .
  • the shift register 301 as shown in FIG. 28, the selector S 1, ..., S n and the register R 1, ..., constituted by R n.
  • the selector S 1 is a register of “3-bit input: 1-bit output”.
  • the selectors S 2 ,..., Sn are “4-bit input: 1-bit output” registers. All the wiring widths are 1 bit.
  • the second circuit portion includes an AND circuit 304, an XOR circuit 305, and a register 306.
  • the mask circuit 303 outputs 1 regardless of the input y 2 value.
  • the mask circuit 303 outputs the inputted value of y 2.
  • the output value of the mask circuit 303 is input to the AND circuit 302. That is, one value y 1 output from the shift register 301 and the output value of the mask circuit 303 are input to the AND circuit 302.
  • the output value of the AND circuit 302 constituting the first circuit portion and the coefficient a ij or b i are input.
  • the output value of the AND circuit 304 is input to the XOR circuit 305.
  • the stored value stored in the register 306 is input to the XOR circuit 305 together with the output value of the AND circuit 304.
  • the stored value of the register 306 is updated with the output value of the XOR circuit 306.
  • the value x 2 of 1 bit stored in the register R 2 are moved to register R n, the register R 3, ..., a 1-bit that was stored in the R n value x 3, ..., x n moves to registers R 2 ,..., R n ⁇ 1 .
  • the register R 1, ..., the R n respectively, 1-bit value x 1, x 3, ..., x n, a state in which x 2 is stored.
  • the two values y 1 and y 2 output from the shift register 301 are input to the AND circuit 302 and the mask circuit 303, respectively, and stored in the register 305 via the AND circuit 304 and the XOR circuit 305 (see FIG. 29). reference).
  • next cycle As shown in FIG. 31, while the value stored in the register R1 is maintained, the stored value is output from the shift register 301 as an output value y 1.
  • the stored value of the register R 2 is output from the shift register 301 as the output value y 2 .
  • the stored values are rotated in the registers R 2 ,..., R n .
  • the output of y 1 and y 2 and the rotation of the stored value are repeatedly performed.
  • the registers R 1, ..., a R n respectively, 1-bit value x 1, x 2, ..., at the stage of the state in which x n are stored, the register R 1, ..., rotation stored value is carried out in R n (P5).
  • the shift register 301 outputs the stored value from the registers R 1 and R 2 .
  • the set of stored values x 1 and x 2 output at this timing has already been output, but the value x 2 (y 2 ) is masked by setting the mask value to 1, and the AND circuit 302 receives the value x 1 (y 1 ) and the value “1” are input.
  • the register R 1, ..., the R n respectively, 1-bit value x 2, x 3, ..., x n, a state in which x 1 is stored (P6).
  • the stored value is output from the shift register 301 as an output value y 1.
  • the stored value of the register R 2 is output from the shift register 301 as the output value y 2 .
  • the stored value of R n which x 1 is stored is also maintained. Under this condition, the stored values are rotated in the registers R 2 ,..., R n ⁇ 1 . Thereafter, when the generation processing of the term relating to the variable x 2 is completed, the stored values in the registers R 1 ,..., R n are rotated.
  • the combination of the two values y 1 and y 2 is controlled.
  • the register R 1, ..., input to the R 4 x 1, ..., x 4 are stored.
  • the stored values x 1 and x 2 are output from the registers R 1 and R 2 as output values y 1 and y 2 .
  • These output values y 1 and y 2 are input to the AND circuit 302 and the mask circuit 303, respectively.
  • the logical sum y is input to the AND circuit 304.
  • a logical product with the coefficient a 12 is calculated by the AND circuit 304 and stored in the register 306.
  • the stored values are rotated in the registers R 2 ,..., R 4 , and the stored values are updated to x 3 , x 4 , and x 2 , respectively. Therefore, the output values y 1 and y 2 of the shift register 301 are x 1 and x 3 , respectively.
  • the stored values in the registers R 2 ,..., R 4 are rotated, and the values y 1 and y 2 are output from the shift register 301. At this time, the output values y 1 and y 2 of the shift register 301 are x 1 and x 4 , respectively.
  • the shift register 301 while switching the setting of the mask value mask, the register R 1, ..., a holding of the stored value of R 4, the register R 1, ..., all of the stored values to implement a rotation R 4 Output values for combinations.
  • the values y 1 and y 2 output from the shift register 301 are added each time by the mask circuit 303, the AND circuits 302 and 304, the XOR circuit 305, and the register 306.
  • the value stored in the register 306 is output from the arithmetic circuit as the arithmetic result z.
  • Example # 1 (calculation of multivariable polynomial F)]
  • the arithmetic circuit according to the embodiment # 1 calculates the second-order multivariable polynomials F (x 1 ) and F (x 2 ) in parallel for the two inputs x 1 and x 2 (f (x 1 ), f (x It is designed to be able to execute the calculation 2 ).
  • the arithmetic circuit according to the embodiment # 1 includes a shift register 401, AND circuits 402 and 403, a selector 404, an AND circuit 405, an XOR circuit 406, and selectors 407 and 409. And registers 408 and 410 and a selector 411.
  • the shift register 401 includes a first shift register 4011 and a second shift register 4012.
  • first shift register 4011 is substantially the same as the configuration of the shift register 201 illustrated in FIG.
  • the structure of the second shift register 4012 is substantially the same as the structure of the shift register 201 illustrated in FIG. 21 except that the combination of registers that output values is different.
  • the first shift register 4011 and the second shift register 4012 operate in cooperation in the same cycle.
  • the first shift register 4011 is configured to output a stored value from the registers R 1,1 and R 1,2 .
  • the second shift register 4012 is configured to output the stored value from the registers R 2,1 and R 2, n + 1 .
  • the values y 1,1 , y 1,2 output from the first shift register 4011 are input to the AND circuit 402 as shown in FIG.
  • the values y 2,1 , y 2,2 output from the second shift register 4012 are input to the AND circuit 403.
  • the AND circuit 402 calculates a logical product of the input values y 1,1 , y 1,2 and inputs the calculation result to the selector 404.
  • the AND circuit 403 calculates the logical product of the input values y 2,1 , y 2,2 and inputs the calculation result to the selector 404.
  • the selector 404 selects one value from the two input values, and inputs the selection result to the AND circuit 405.
  • the AND circuit 405 receives the coefficients a ij and b i together with the output value of the selector 404.
  • the AND circuit 405 calculates a logical product of the input output value and the coefficient, and inputs the calculation result to the XOR circuit 406.
  • the XOR circuit 406 receives an output value of the AND circuit 405 and an output value of a selector 411 described later.
  • the XOR circuit 406 performs an exclusive OR operation on the two input values, and inputs the operation result to the selectors 407 and 409.
  • the calculation result is stored in the register 408 or the register 410 depending on the state of the selectors 407 and 409. Further, one of the stored values of the registers 408 and 410 is input to the XOR circuit 406 or output from the arithmetic circuit as the operation result z depending on the state of the selector 411.
  • the registers R 1, 1, ..., R 1, the input value to the n x 1,1, ..., x 1 , n is stored.
  • the value “1” is stored in the registers R 1 and n + 1 .
  • the value “1” stored here is used to calculate a first-order term included in the second-order multivariable polynomial f (x 1 ).
  • the register R 2,1, ..., the input values to the R 2, n x 2, n , ..., x 2,1 ( note a reverse order) are stored.
  • the value “1” is stored in the registers R 2 and n + 1 .
  • the value “1” stored here is used to calculate a first-order term included in the second-order multivariable polynomial f (x 2 ).
  • the stored values x 1,1 , x 1,2 stored in the registers R 1,1 , R 1,2 are converted into output values y 1,1 , y. 1 and 2 are output. Further, the stored value of the register R 1,1 is held, and the stored value of the register R 1,2 ,..., R 1, n + 1 is rotated. Specifically, the 1-bit values x 1 and 2 stored in the registers R 1 and 2 have moved to the registers R 1, n + 1 and stored in the registers R 1,3 ,..., R 1, n + 1 .
  • the stored value of the register R 2,1 is held, and the stored value of the register R 2,2 ,..., R 2, n + 1 is rotated. Specifically, the register value of 1 bit stored in the R 2,2 x 2, n-1 is moved to register R 2, n + 1, register R 2,3, ..., is stored in R 2, n + 1 it was one-bit value x 2, n-2, ... , x 2,1, 1 is the register R 2,2, ..., move to R 2, n. As a result, the registers R 2,1 ,..., R 2, n + 1 have 1-bit values x 2, n , x 2, n-2 ,..., X 2,1 , 1, x 2, n ⁇ respectively. 1 is stored. At this time, the stored values of the registers R 2,1 , R 2, n + 1 are not output from the shift register 401 (actually, the output value of the AND circuit 402 is selected by the selector 404).
  • the values y 1,1 , y 1,2 output from the shift register 401 are input to the AND circuit 402 as shown in FIG.
  • the logical product value output from the AND circuit 402 is input to the selector 404.
  • the selector 404 is controlled to select the output value of the AND circuit 402. Therefore, the value input to the selector 404 is input to the AND circuit 405 as the output value y of the selector 404, and is multiplied by the coefficient.
  • the output of the AND circuit 405 is input to the XOR circuit 406.
  • the value input to the XOR circuit 406 is input to the selectors 407 and 409.
  • the selector 409 blocks the path connected to the output of the XOR circuit 406 and connects the path connected to the output of the register 410. Therefore, the output value of the XOR circuit 406 is stored in the register 408 via the selector 407 connected to the output of the XOR circuit 406.
  • the output of the XOR circuit 406 and the input of the selector 407 are connected. Control is performed so that the input of the selector 409 and the output of the register 410 are connected.
  • the selector 411 is maintained in a state where the output of the register 408 and the input of the XOR circuit 406 are connected. While maintaining this state, the shift register 401, the register R 1,2, ..., R 1, n + 1 and the register R 2, 2, ..., while rotation the stored value of R 2, n + 1, the register R 1, 1 , R 1 , 2 are output. Each time a value is output from the shift register 401, the intermediate value is added via the AND circuit 402, the selector 404, the XOR circuit 406, and the selector 407, and the stored value in the register 408 is updated.
  • the registers R 1, 1, ..., the R 1, n + 1, respectively, 1-bit value x 1,1, x 1,2, ..., x 1, n, 1 is stored
  • the stored values are rotated in the registers R 1,1 ,..., R 1, n + 1 (P3).
  • the registers R 1,1 ,..., R 1, n + 1 have 1-bit values x 1,2 , x 1,3 ,..., X 1, n , 1, x 1, respectively. , 1 are stored.
  • the stored values are rotated in the registers R 2,1 ,..., R 2, n + 1 .
  • the stored value is output from the registers R 2,1 , R 2, n + 1 .
  • the input of the selector 404 is controlled to be connected to the output of the AND circuit 403.
  • the input of the selector 407 is controlled to be connected to the output of the register 408.
  • the input of the selector 409 is controlled to be connected to the output of the XOR circuit 406.
  • the input of the selector 411 is controlled to be connected to the output of the register 410.
  • the output value of the AND circuit 403 is input to the AND circuit 405 via the selector 404.
  • the output value of the AND circuit 405 is stored in the register 410 via the XOR circuit 406 and the selector 409.
  • the first shift register 4011 rotates the registers R 1 , 2 ,..., R 1, n + 1 so that the stored values are aligned, or the register R 1, 1 ,..., R 1, n + 1 , the output value of the second shift register 4012 is processed at the timing when the rotation is performed.
  • the selectors 404, 407, 409, and 411 are controlled, and the signal path is returned to the original state.
  • the register R 1, 2, ..., the register R 1, 1 while rotation the value stored in R 1, n + 1, the process of outputting the stored value of R 1, 2 is carried out.
  • the register R 1, 2, ..., rotation of stored values in R 1, 5 is performed, each storing value x 1,3, x 1,4, 1, x 1, Updated to 2 . Therefore, the output values y 1,1 , y 1,2 of the shift register 401 are x 1,1 , x 1,3 respectively. Furthermore, the register R 2, 2, ..., rotation of stored values in R 2, 5 is performed, each storing value x 2, 2, x 2,1, is updated to 1, x 2,3. Similarly, in cycles 3 and 4, rotation of stored values in registers R1,2 , ..., R1,5 and R2,2 , ..., R2,5 is performed, and from cycle register 401 every cycle. The values y 1,1 , y 1,2 are output.
  • the register R 1, 1, ..., stored value each x 1, 1 of R 1, 5, ..., x l, 4, has a 1, it registers R 1,
  • the shift register 401 performs rotation in the registers R 1,1 ,..., R 1,5 without outputting values from the registers R 1,1 , R 1,2 .
  • the shift register 401 outputs the stored value from the registers R 2,1 , R 2,5 .
  • the output of the AND circuit 403 is adopted by the selector 404.
  • the stored values of the registers R 1,1 ,..., R 1,5 are respectively x 1 , 2 , x 1,3 , x 1,4 , 1, as described in the column of the number of cycles 5 + 1.
  • the order is x 1,1 .
  • the stored values of the registers R 2,1 ,..., R 2,5 are in the order of x 2,3 , x 2,2 , x 2,1 , 1, x 2,4 respectively.
  • the output of the AND circuit 402 is again adopted by the selector 404 in the cycle numbers 5 + 1 to 5 + 3.
  • the first shift register 4011 performs rotation of the stored value in the registers R 1 , 2 ,..., R 1,5 .
  • the stored value is output from the registers R 1,1 , R 1,2 .
  • the second shift register 4012 rotates the stored values of the registers R 2,2 ,..., R 2,5 in the cycle numbers 5 + 1 to 5 + 4. Further, at the cycle number 5 + 4, the stored value is output from the registers R 2,1 , R 2,5 . Next, in the cycle number 2 ⁇ 5, the stored values are output from the registers R 2,1 , R 2,5 while rotating the stored values of the registers R 2,1 ,..., R 2,5 . However, the output of the AND circuit 403 is adopted by the selector 404 at the timing of the cycle number 5 + 4 and the cycle number 2 ⁇ 5.
  • the shift register 401 performs the rotation accompanied by the outputs from the registers R 1,1 , R 1,2 and the rotation accompanied by the outputs from the registers R 2,1 , R 2,5 to perform all of the stored values.
  • the value x 1, 1, ..., x l, 4, all possible combinations selected from 1, and the value x 2, 4, ..., x 2,1, summation for all possible combinations chosen from 1 Is completed the stored value is output as the operation result z from the registers 408 and 410, respectively.
  • the selectors 404, 407, 409, and 411 are controlled by a control unit (not shown) provided in the arithmetic circuit or a control device (not shown) provided outside the arithmetic circuit.
  • the input of the selector 404 is connected to the output of the AND circuit 402. Further, the input of the selector 407 is connected to the output of the XOR circuit 406. Further, the input of the selector 409 is connected to the output of the register 410. The input of the selector 411 is connected to the output of the register 408.
  • the input of the selector 404 is connected to the output of the AND circuit 403.
  • the input of the selector 409 is connected to the output of the XOR circuit 406.
  • the input of the selector 407 is connected to the output of the register 408.
  • the input of the selector 411 is connected to the output of the register 410.
  • the arithmetic circuit according to the embodiment # 1 since the arithmetic circuit according to the embodiment # 1 uses the shift register, it does not include a multi-bit input selector.
  • the arithmetic circuit includes only two types of shift register feedback loops. Further, in the arithmetic circuit, since one shift register outputs the stored value at the timing when one shift register aligns the stored value of the register, the cycle is not wasted only by aligning the stored value.
  • the two shift registers share an AND circuit for multiplying coefficients and an XOR circuit for addition. As a result, an increase in critical paths and an increase in circuit scale are suppressed, and a small arithmetic circuit with a high arithmetic speed is realized.
  • Example # 2 (calculation of multivariable polynomials F and G)]
  • the arithmetic circuit according to the embodiment # 2 calculates the second-order multivariate polynomials F (x 1 ) and G (x 2 , x 3 ) in parallel for the three inputs x 1 , x 2 , x 3 (f (x 1 ), g (calculation of g (x 2 , x 3 )).
  • the arithmetic circuit according to the embodiment # 2 includes a shift register 501, AND circuits 502, 503, and 504, an XOR circuit 505, a selector 506, an AND circuit 507, and an XOR circuit. 508, selectors 509 and 511, registers 510 and 512, and a selector 513.
  • the shift register 501 includes a first shift register 5011, a second shift register 5012, and a third shift register 5013.
  • the configuration of the first shift register 5011 is substantially the same as the configuration of the first shift register 4011 according to Example # 1 described above.
  • the configurations of the second shift register 5012 and the third shift register 5013 are substantially the same as the configuration of the second shift register 4012 according to the above-described embodiment # 1. Therefore, the description of the detailed configuration is omitted. Note that the first shift register 5011, the second shift register 5012, and the third shift register 5013 operate in cooperation in the same cycle.
  • the main differences between the arithmetic circuit according to the embodiment # 1 and the arithmetic circuit according to the embodiment # 2 are the number of shift registers included in the shift register 501 and the configuration of the XOR circuit 505. Thus, focusing on this difference, the configuration of the arithmetic circuit according to the embodiment # 2 will be described.
  • This difference is added to calculate the second-order multivariable polynomial g (x 2 , x 3 ).
  • the secondary multivariate polynomial f (x 1 ) to be calculated together is expressed as in the following equation (14)
  • the secondary multivariate polynomial g (x 2 , x 3 ) is expressed by the following equation (15): It is expressed as follows.
  • a second shift register 5012, a third shift register 5013, and an AND circuit 503 are provided to calculate x 2i x 3j, and a second shift register and a third shift for calculating x 2j x 3i are provided.
  • a register 5013 and an AND circuit 504 are provided, and an XOR circuit 505 is provided to add these calculation results. Therefore, the second shift register 5012 and the third shift register 5013 output the stored value of the register in the same cycle. Further, in that cycle, the output of the XOR circuit 505 is input to the AND circuit 507 via the selector 506. Note that the configuration of each circuit in the subsequent stage of the AND circuit 507 is substantially the same as that of the arithmetic circuit according to Configuration Example # 2, and thus description thereof is omitted.
  • the configuration of the arithmetic circuit according to Example # 2 has been described above.
  • the arithmetic circuit according to the example # 2 replaces the second shift register 4012 in the arithmetic circuit according to the example # 1 with a second shift register 5012 and a third shift register 5013, and the AND circuit 403 is replaced with an AND circuit. It will be easier to understand if it is considered as a replacement of the set of 503 and 504 and the XOR circuit 505. However, it should be noted that the value input to the register R 3, n + 1 of the register R 2, n + 1 and the third shift register 5013 of the second shift register 5012 is "0". This difference is due to the fact that the first-order term is not included in the second-order multivariable polynomial g (x 2 , x 3 ).
  • the part which showed the wiring with the chain line in the figure represents that it is controlled so that a signal does not flow substantially in the applicable cycle.
  • the part indicated by the solid line represents that the signal is controlled to flow in the corresponding cycle.
  • the first shift register 4011 and the second shift register 5012 Focusing on the operation of the first shift register 5011 and the second shift register 5012, as shown in FIGS. 45, 46, and 48, the first shift register 4011 and the second shift register according to the embodiment # 1. It can be seen that the operation of the register 4012 is substantially the same.
  • the operation of the third shift register 5013 is the same as that of the second shift register 5012.
  • the input of the selector 506 is connected to the output of the AND circuit 502, so that the operation of the arithmetic circuit according to the embodiment # 1 Be the same.
  • the input of the selector 506 is connected to the output of the XOR circuit 505. Therefore, the output values of the second shift register 5012 and the third shift register 5013 are input to the AND circuits 503 and 504, respectively, the output values of the AND circuits 503 and 504 are input to the XOR circuit 505, and the output of the XOR circuit 505 is output.
  • the value is input to the AND circuit 507 via the selector 506.
  • the operation of the circuit located at the subsequent stage of the AND circuit 507 is substantially the same as that of the arithmetic circuit according to the embodiment # 1.
  • FIG. 50 specifically shows the configuration of the stored values of the registers constituting the shift register 501, the output values from the shift registers, and the intermediate values calculated in the AND circuit 507.
  • the description method is the same as in FIG.
  • the arithmetic circuit according to the example # 2 includes each term of the second-order multivariate polynomial f (x 1 ) shown in the above equation (14),
  • the terms of the second-order multivariable polynomial g (x 2 , x 3 ) shown in Expression (15) can be generated efficiently.
  • the arithmetic circuit according to the embodiment # 2 is used, it is possible to realize multivariate polynomial arithmetic necessary for the implementation of the public key authentication scheme and the electronic signature scheme described above.
  • the configuration of the arithmetic circuit that can be used for the implementation of the public key authentication method and the electronic signature method that bases security on the solution problem of multivariable polynomials has been described.
  • the circuit scale can be reduced and the processing speed can be improved.
  • FIG. 83 is an explanatory diagram showing an example in which a plurality of arithmetic circuits 401 shown in FIG. 35 are arranged in parallel. As shown in FIG. 83, when a plurality of arithmetic circuits 401 are arranged in parallel, the arithmetic processing of the second-order polynomials f (x 1 ) and f (x 2 ) multiple times can be accelerated.
  • the arithmetic circuit needs to access the recording memory storing the coefficients as shown in FIG. 15 at the same time.
  • the arithmetic circuit needs to access the recording memory storing the coefficients as shown in FIG. 15 at the same time.
  • multiple arithmetic circuits are arranged in parallel, due to restrictions on the arrangement of arithmetic circuits close to the recording memory and arithmetic circuits that are far from the recording memory, simultaneous access to the recording memory and the maximum operating frequency are possible. It becomes a factor causing the decrease.
  • M a plurality (M) of arithmetic circuits that execute quadratic polynomial arithmetic processing are arranged in parallel, the circuit scale is simply M times that of one arithmetic circuit.
  • the recording memory storing the coefficients as shown in FIG. 15 has a data structure that is easy to divide, and the calculation processing of the second-order polynomial is pipelined, thereby relaxing the constraints on the arrangement of the arithmetic circuits.
  • a technique for preventing a decrease in the maximum operating frequency will be described.
  • the number of registers in the arithmetic circuit can be reduced by pipelining the arithmetic processing of the second-order polynomial.
  • FIG. 51 is an explanatory diagram of a data structure example of the recording memory.
  • FIG. 51 is an explanatory diagram showing a data structure example of a recording memory referred to by a 4-bit, 4-stage pipeline arithmetic circuit to be described later.
  • the data structure as shown in FIG. 51 eliminates the need for double addresses. This is because the address is incremented when the arithmetic processing is executed, and when the last address is reached, the address should be decremented this time.
  • FIG. 52 is an explanatory diagram of a configuration of the arithmetic circuit according to the embodiment # 3.
  • the arithmetic circuit shown in FIG. 52 calculates and outputs a quadratic polynomial when the input x is 4 bits.
  • the arithmetic circuit according to the embodiment # 3 includes arithmetic circuits 600a, 600b, 600c, and 600d, and a ROM 690 that stores coefficients.
  • the ROM 690 is divided into two areas 690a and 690b.
  • the arithmetic circuits 600a, 600b, 600c, and 600d are circuits that generate parallel multivariable polynomials f (x 1 ) and f (x 2 ) in parallel from two inputs x 1 and x 2 .
  • the arithmetic circuit according to the embodiment # 1 and the embodiment # 2 is a single circuit, and calculates the second-order multivariate polynomials f (x 1 ) and f (x 2 ) in parallel for the two inputs x 1 and x 2. Was designed to run.
  • f (x) performs a second-order multivariate polynomial f (x) from two inputs x 1 and x 2 by pipeline processing using four arithmetic circuits 600a, 600b, 600c, and 600d. 1 ), f (x 2 ) are designed to be generated in parallel.
  • Pipeline processing is processing in which processing elements are connected in series, and the output of a certain processing element becomes the input of the next processing element, and each pipelined processing element is processed in parallel.
  • FIG. 53 is an explanatory diagram showing an example of the data structure of the ROM 690, and is an explanatory diagram showing an example of coefficients stored in the areas 690a and 690b.
  • the coefficients stored in the area 690a are referred to by the arithmetic circuits 600a and 600d, and the coefficients stored in the area 690b are referred to by the arithmetic circuits 600b and 600c, respectively.
  • the arithmetic circuit 600a includes a shift register 601a, AND circuits 602a and 603a, a selector 604a, an AND circuit 605a, an XOR circuit 606a, selectors 607a and 609a, a register 608a, 610a and a selector 611a.
  • the shift register 601a includes a first shift register 6011a and a second shift register 6012a.
  • the configurations of the first shift register 6011a and the second shift register 6012a are the same as the configurations of the first shift register 4011 and the second shift register 4012 shown in FIG. It is substantially the same. However, the first shift register 6011a and the second shift register 6012a operate in cooperation in the same cycle.
  • the first shift register 6011a includes registers RA 1,1 , RA 1,2 , RA 1,3 , RA 1,4 , RA 1,5 , and selectors SA 1,1 , SA 1. , 2 , SA 1,3 , SA 1,4 , SA 1,5 .
  • the first shift register 6011a is configured to output a stored value from the registers RA 1,1 , RA 1,2 and RA 1,3 .
  • the second shift register 6012a includes registers RA 2,1 , RA 2,2 , RA 2,3 , RA 2,4 , RA 2,5 and selectors SA 2,1 , SA 2,2 , SA. 2 , 3 , SA 2 , 4 , SA 2 , 5 .
  • the second shift register 6012a is configured to output a stored value from the registers RA 2,1 , RA 2,2 , RA 2,3 and RA 2,5 .
  • the values ya 1,1 , ya 1,2 , ya 1,3 output from the first shift register 6011a are input to the subsequent arithmetic circuit 600b. Further, the values ya 1,1 , ya 1,2 output from the first shift register 6011a are input to the AND circuit 602a as shown in FIG. Similarly, the values ya 2,1 , ya 2,2 , ya 2,3 , ya 2,5 output from the second shift register 6012a are input to the arithmetic circuit 600b in the subsequent stage. Further, the values ya 2,1 , ya 2,5 output from the second shift register 6012a are input to the AND circuit 603a.
  • the AND circuit 602a calculates a logical product of the input values ya 1 , 1 , ya 1 , 2 and inputs the calculation result to the selector 604a.
  • the AND circuit 603a calculates the logical product of the input values ya 2 , 1 , ya 2 , 5 and inputs the calculation result to the selector 604a.
  • the selector 604a selects one value from the two input values, and inputs the selection result to the AND circuit 605a.
  • the AND circuit 605a receives the coefficients a ij and b i together with the output value of the selector 604a.
  • the AND circuit 605a calculates a logical product of the input output value and the coefficient, and inputs the calculation result to the XOR circuit 606a.
  • the XOR circuit 606a receives an output value of the AND circuit 605a and an output value of a selector 611a described later.
  • the XOR circuit 606a performs an exclusive OR operation on the two input values, and inputs the operation results to the selectors 607a and 609a. This calculation result is stored in the register 608a or the register 610a depending on the state of the selectors 607a and 609a.
  • the stored values of the registers 608a and 610a are either input to the XOR circuit 606a or output from the arithmetic circuit 600a as the operation results za 1 and za 2 depending on the state of the selector 611a.
  • the values za 1 and za 2 from the registers 608a and 610a are input to the arithmetic circuit 600b at the subsequent stage.
  • the selectors 604a and 611a select and output one of the input values according to the value of selA described later.
  • 56 and 57 are explanatory diagrams showing the circuit configuration of the arithmetic circuit 600b.
  • the arithmetic circuit 600b includes a shift register 601b, AND circuits 602b and 603b, a selector 604b, an AND circuit 605b, an XOR circuit 606b, selectors 607b and 609b, a register 608b, 610b and a selector 611b.
  • the shift register 601b includes a first shift register 6011b and a second shift register 6012b.
  • the configuration of the first shift register 6011b is one less than that of the first shift register 6011a shown in FIG.
  • the configuration of the second shift register 6012b is substantially the same as the configuration of the second shift register 6012a illustrated in FIG. 54 except that the combination of registers that output values is different.
  • the first shift register 6011b and the second shift register 6012b operate in cooperation in the same cycle.
  • the first shift register 6011b includes registers RB 1,1 , RB 1,2 , RB 1,3 , RB 1,4 and selectors SB 1,1 , SB 1,2 , SB 1. , 3 , SB 1 , 4 .
  • the first shift register 6011b is configured to output stored values from the registers RB 1,1 and RB 1,2 .
  • the second shift register 6012b includes registers RB 2,1 , RB 2,2 , RB 2,3 , RB 2,4 , RB 2,5 and selectors SB 2,1 , SB 2,2 , SB. 2 , 3 , SB 2 , 4 , SB 2 , 5 .
  • the second shift register 6012b is configured to output a stored value from the registers RB 2,1 , RB 2,2 , RB 2,4 and RB 2,5 .
  • the values yb 1,1 , yb 1 , 2 output from the first shift register 6011b are input to the arithmetic circuit 600c at the subsequent stage. Further, the values yb 1,1 , yb 1 , 2 output from the first shift register 6011b are input to the AND circuit 602b as shown in FIG. Similarly, the values yb 2,1 , yb 2,2 , yb 2,4 , yb 2,5 output from the second shift register 6012b are input to the arithmetic circuit 600c at the subsequent stage. The values yb 2,1 , yb 2,5 output from the second shift register 6012b are input to the AND circuit 603b.
  • the AND circuit 602b calculates the logical product of the input values yb 1,1 , yb 1 , and 2 , and inputs the calculation result to the selector 604b.
  • the AND circuit 603b calculates the logical product of the input values yb 2,1 , yb 2,5 and inputs the calculation result to the selector 604b.
  • the selector 604b selects one value from the two input values, and inputs the selection result to the AND circuit 605b.
  • the AND circuit 605b receives the coefficients a ij and b i together with the output value of the selector 604b.
  • the AND circuit 605b calculates a logical product of the input output value and the coefficient, and inputs the calculation result to the XOR circuit 606b.
  • the output value of the AND circuit 605b and the output value of the selector 611b described later are input to the XOR circuit 606b.
  • the XOR circuit 606b performs an exclusive OR operation on the two input values, and inputs the operation result to the selectors 607b and 609a. This calculation result is stored in the register 608b or the register 610b depending on the state of the selectors 607b and 609b.
  • either one of the stored values of the registers 608b and 610b is input to the XOR circuit 606b or output from the arithmetic circuit as arithmetic results zb 1 and zb 2 depending on the state of the selector 611b.
  • the values zb 1 and zb 2 from the registers 608b and 610b are input to the arithmetic circuit 600c at the subsequent stage.
  • selectors 604b and 611b select and output one of the input values according to the value of selB described later.
  • the selector 607b selects and outputs either the output of the XOR circuit 606b, the value za 1 supplied from the arithmetic circuit 600a, or the output of the register 608b.
  • the selector 609b selects and outputs either the output of the XOR circuit 606b, the value za 2 supplied from the arithmetic circuit 600a, or the output of the register 610b.
  • the arithmetic circuit 600c includes a shift register 601c, AND circuits 602c and 603c, a selector 604c, an AND circuit 605c, an XOR circuit 606c, selectors 607c and 609c, a register 608c, 610c and a selector 611c.
  • the shift register 601c includes a first shift register 6011c and a second shift register 6012c.
  • the configuration of the first shift register 6011c has one more register than the configuration of the first shift register 6011b shown in FIG.
  • the configuration of the second shift register 6012c is substantially the same as the configuration of the second shift register 6012a illustrated in FIG. 54 except that the combination of registers that output values is different.
  • the first shift register 6011c and the second shift register 6012c operate in cooperation in the same cycle.
  • the first shift register 6011c includes registers RC 1,1 , RC 1,2 and RC 1,3 and selectors SC 1,1 , SC 1,2 and SC 1,3.
  • the first shift register 6011c is configured to output the stored value from the registers RC 1,1 and RC 1,2 .
  • the second shift register 6012c includes a register RC 2,1, RC 2,2, RC 2,3 , RC 2,4, RC 2,5, and selectors SC 2,1, SC 2, 2, SC 2 , 3 , SC 2 , 4 , SC 2 , 5 .
  • the second shift register 6012c is configured to output the stored value from the registers RC 2,1 , RC 2,3 , RC 2,4 and RC 2,5 .
  • the value yc 1,1 output from the first shift register 6011c is input to the arithmetic circuit 600d at the subsequent stage. Also, the values yc 1,1 , yc 1 , 2 output from the first shift register 6011c are input to the AND circuit 602c as shown in FIG. Similarly, the values yc 2,1 , yc 2,3 , yc 2,4 , yc 2,5 output from the second shift register 6012c are input to the arithmetic circuit 600d at the subsequent stage. Further, the values yc 2,1 , yc 2,5 output from the second shift register 6012c are input to the AND circuit 603c.
  • the AND circuit 602c calculates the logical product of the input values yc 1,1 , yc 1 , and 2 , and inputs the calculation result to the selector 604c.
  • the AND circuit 603c calculates the logical product of the input values yc 2,1 , yc 2,5 and inputs the calculation result to the selector 604c.
  • the selector 604c selects one value from the two input values, and inputs the selection result to the AND circuit 605c.
  • the AND circuit 605c receives the coefficients a ij and b i together with the output value of the selector 604c.
  • the AND circuit 605c calculates a logical product of the input output value and the coefficient, and inputs the calculation result to the XOR circuit 606c.
  • the output value of the AND circuit 605c and the output value of the selector 611c described later are input to the XOR circuit 606c.
  • the XOR circuit 606c performs an exclusive OR operation on the two input values, and inputs the operation result to the selectors 607c and 609c. This calculation result is stored in the register 608c or the register 610c depending on the state of the selectors 607c and 609c.
  • either one of the stored values of the registers 608c and 610c is input to the XOR circuit 606c or output from the arithmetic circuit as the arithmetic results zc 1 and zc 2 depending on the state of the selector 611c.
  • the values zc 1 and zc 2 from the registers 608c and 610c are input to the arithmetic circuit 600d at the subsequent stage.
  • the selectors 604c and 611c select and output one of the input values according to the value of selC described later.
  • the selector 607c selects and outputs either the output of the XOR circuit 606c, the value zb 1 supplied from the arithmetic circuit 600b, or the output of the register 608c.
  • the selector 609c selects and outputs either the output of the XOR circuit 606c, the value zb 2 supplied from the arithmetic circuit 600b, or the output of the register 610c.
  • the arithmetic circuit 600d includes a shift register 601d, AND circuits 602d and 603d, a selector 604d, an AND circuit 605d, an XOR circuit 606d, selectors 607d and 609d, and registers 608d and 610d. And a selector 611d.
  • the shift register 601d includes a first shift register 6011d and a second shift register 6012d.
  • the configuration of the first shift register 6011d is one register less than that of the first shift register 6011c shown in FIG.
  • the configuration of the second shift register 6012d is substantially the same as the configuration of the second shift register 6012a illustrated in FIG. 54 except that the combination of registers that output values is different.
  • the first shift register 6011d and the second shift register 6012d operate in cooperation in the same cycle.
  • the first shift register 6011d includes registers RD 1,1 and RD 1,2 and selectors SD 1,1 and SD 1,2 .
  • the first shift register 6011d is configured to output stored values from the registers RD 1,1 and RD 1,2 .
  • the second shift register 6012d includes registers RD 2,1 , RD 2,2 , RD 2,3 , RD 2,4 , RD 2,5 and selectors SD 2,1 , SD 2,2 , SD. 2 , 3 , SD 2 , 4 , SD 2 , 5 .
  • the second shift register 6012d is configured to output the stored value from the registers RD 2,1 and RD 2,5 .
  • the values yd 1,1 , yd 1 , 2 output from the first shift register 6011d are input to the AND circuit 602d as shown in FIG.
  • the values yd 2,1 , yd 2 , and 5 output from the second shift register 6012d are input to the AND circuit 603d.
  • the AND circuit 602d calculates a logical product of the input values yd 1,1 , yd 1 , and 2 , and inputs the calculation result to the selector 604d.
  • the AND circuit 603d calculates a logical product of the input values yd 2,1 , yd 2,5 and inputs the calculation result to the selector 604d.
  • the selector 604d selects one value from the two input values, and inputs the selection result to the AND circuit 605d.
  • the AND circuit 605d receives the coefficients a ij and b i together with the output value of the selector 604d.
  • the AND circuit 605d calculates a logical product of the input output value and the coefficient, and inputs the calculation result to the XOR circuit 606d.
  • the output value of the AND circuit 605d and the output value of the selector 611d described later are input to the XOR circuit 606d.
  • the XOR circuit 606d performs an exclusive OR operation on the two input values, and inputs the operation result to the selectors 607d and 609d. This calculation result is stored in the register 608d or the register 610d depending on the state of the selectors 607d and 609d.
  • the stored values of the registers 608d and 610d are either input to the XOR circuit 606d or output from the arithmetic circuit as the arithmetic results zd 1 and zd 2 depending on the state of the selector 611d.
  • the values zd 1 and zd 2 from the registers 608d and 610d correspond to f (x 1 ) and f (x 2 ), respectively.
  • the selectors 604d and 611d select and output one of the input values according to the value of selD described later.
  • the selector 607d selects and outputs either the output of the XOR circuit 606d, the value zc 1 supplied from the arithmetic circuit 600c, or the output of the register 608d.
  • the selector 609d selects and outputs either the output of the XOR circuit 606d, the value zc 2 supplied from the arithmetic circuit 600c, or the output of the register 610d.
  • FIGS. 62 to 65 summarize the stored values of the registers of the arithmetic circuits 600a to 600d, the coefficients read from the ROM 690, the signals supplied to the selector, and the output values from the arithmetic circuits 600a to 600d, respectively.
  • the basic operation of the arithmetic circuits 600a to 600d is the same as that of the arithmetic circuit according to the embodiment # 1. That is, values are stored and rotated under the control of each selector included in the arithmetic circuits 600a to 600d.
  • the stored value of the register of the arithmetic circuit 600a, the coefficient read from the ROM 690, the signal supplied to the selector, and the output value from the arithmetic circuit 600a will be described with reference to FIG.
  • T 1, i and T 2, i shown in FIGS. 62 to 65 represent the following mathematical expressions, respectively.
  • f (x 1 ) and f (x 2 ) can be expressed by the following mathematical formula.
  • values are stored in the respective registers of the arithmetic circuit 600a as shown in FIG. Further, the coefficients a 1 and 2 are read from the area 690a of the ROM 690.
  • the selectors 604a and 611a are supplied with a signal that outputs an input from “0” in FIG. As a result, the outputs from the registers 608a and 610a are both zero.
  • cycle number 2 under the control of each selector, a value is stored in each register of arithmetic circuit 600a as shown in FIG. Also, the coefficients a 1 and 3 are read from the area 690a of the ROM 690.
  • the selectors 604a and 611a are supplied with a signal that outputs an input from “0” in FIG. As a result, the output from register 608a becomes a 1,2 x 1,1 x 1,2, and the output from register 610a is 0.
  • cycle number 3 under the control of each selector, a value is stored in each register of arithmetic circuit 600a as shown in FIG. Also, the coefficients a 1 and 4 are read from the area 690a of the ROM 690.
  • the selectors 604a and 611a are supplied with a signal that outputs an input from “0” in FIG. As a result, the output from register 608a becomes a 1,2 x 1,1 x 1,2 + a 1,3 x 1,1 x 1,3 , and the output from register 610a 0.
  • cycle number 4 under the control of each selector, a value is stored in each register of arithmetic circuit 600a as shown in FIG. Further, the coefficient b 1 is read from the area 690 a of the ROM 690.
  • the selectors 604a and 611a are supplied with a signal that outputs an input from “0” in FIG. As a result, the output from register 608a is a 1,2 x 1,1 x 1,2 + a 1,3 x 1,1 x 1,3 + a 1,4 x 1,1 x 1,4 next, from register 610a Output is zero.
  • each selector under the control of each selector, a value is stored in each register of arithmetic circuit 600a as shown in FIG. Also, the coefficient b 4 is read from the area 690a of the ROM 690.
  • the arithmetic circuit 600a repeats the cycle number 1 to the cycle number 6 and outputs the calculation result to the arithmetic circuit 600b. When the cycle number 6 ends, the arithmetic circuit 600a similarly performs arithmetic processing for the next x 1 and x 2 .
  • the stored value of the register of the arithmetic circuit 600b, the coefficient read from the ROM 690, the signal supplied to the selector, and the output value from the arithmetic circuit 600b will be described with reference to FIG. Note that the stored value of the register of the arithmetic circuit 600b shown in FIG. 63 is supplied to the arithmetic circuit 600b after the arithmetic circuit 600a performs the rotation of the cycle number 1 to the cycle number 6.
  • values are stored in the respective registers of the arithmetic circuit 600b as shown in FIG. Further, the coefficients a 2 and 3 are read from the area 690b of the ROM 690.
  • cycle number 2 under the control of each selector, a value is stored in each register of arithmetic circuit 600b as shown in FIG.
  • the coefficients a 2 and 4 are read from the area 690b of the ROM 690.
  • the selectors 604b and 611b are supplied with a signal that outputs an input from “0” in FIG.
  • the output from the register 608b is T 1,1 + a 2,3 x 1,2 x 1,3
  • the output from the register 610b is T 2,4 .
  • cycle number 3 under the control of each selector, a value is stored in each register of arithmetic circuit 600b as shown in FIG. Further, the coefficient b 2 is read from the area 690 b of the ROM 690.
  • the selectors 604b and 611b are supplied with a signal that outputs an input from “0” in FIG. As a result, the output from register 608b is T 1,1 + a 2,3 x 1,2 x 1,3 + a 2,4 x 1,2 x 1,4 , and the output from register 610b is a T 2, 4 Become.
  • cycle number 4 under the control of each selector, a value is stored in each register of arithmetic circuit 600b as shown in FIG. Also, the coefficient b 3 is read from the area 690 b of the ROM 690.
  • each selector under the control of each selector, a value is stored in each register of the arithmetic circuit 600b as shown in FIG. Also, the coefficients a 3 and 4 are read from the area 690b of the ROM 690.
  • the selectors 604b and 611b are supplied with a signal that outputs an input from “1” in FIG. As a result, the output from the register 608b is T 1,1 + T 1,2 and the output from the register 610b is T 2,4 + b 3 x 2,3 .
  • cycle number 6 under the control of each selector, a value is stored in each register of arithmetic circuit 600b as shown in FIG.
  • the output from the register 608b is T 1,1 + T 1,2
  • the arithmetic circuit 600b repeats the cycle number 1 to the cycle number 6 and outputs the calculation result to the arithmetic circuit 600c. When the number of cycles 6 ends, the arithmetic circuit 600b similarly performs arithmetic processing on the next x 1 and x 2 .
  • the stored value of the register of the arithmetic circuit 600c, the coefficient read from the ROM 690, the signal supplied to the selector, and the output value from the arithmetic circuit 600c will be described with reference to FIG. Note that the stored value of the register of the arithmetic circuit 600c shown in FIG. 64 is supplied to the arithmetic circuit 600c after the arithmetic circuit 600b executes the rotation having the cycle number 1 to the cycle number 6.
  • the coefficients a 3 and 4 are read from the area 690b of the ROM 690.
  • the selectors 604c and 611c are supplied with a signal that outputs an input from “0” in FIG.
  • cycle number 2 under the control of each selector, a value is stored in each register of arithmetic circuit 600c as shown in FIG. Also, the coefficient b 3 is read from the area 690 b of the ROM 690.
  • the selectors 604c and 611c are supplied with a signal that outputs an input from “0” in FIG. As a result, the output from the register 608c is T 1,1 + T 1,2 + a 3,4 x 1,3 x 1,4 , and the output from the register 610c is T 2,4 + T 2,3 .
  • cycle number 3 under the control of each selector, a value is stored in each register of arithmetic circuit 600c as shown in FIG. Further, the coefficient b 2 is read from the area 690 b of the ROM 690.
  • the output from the register 610c is T 2,4 + T 2,3 .
  • the value is stored in each register of the arithmetic circuit 600c as shown in FIG. 64 by the control of each selector.
  • the coefficients a 2 and 4 are read from the area 690b of the ROM 690.
  • the selectors 604c and 611c are supplied with a signal that outputs an input from “1” in FIG. As a result, the output from the register 608c is T 1,1 + T 1,2 + T 1,3 , and the output from the register 610c is T 2,4 + T 2,3 + b 2 x 2,2 .
  • cycle number 5 under the control of each selector, a value is stored in each register of arithmetic circuit 600c as shown in FIG. Further, the coefficients a 2 and 3 are read from the area 690b of the ROM 690.
  • the selectors 604c and 611c are supplied with a signal that outputs an input from “1” in FIG. As a result, the output from the register 608c is T 1,1 + T 1,2 + T 1,3 , and the output from the register 610c is T 2,4 + T 2,3 + b 2 x 2,2 + a 2,4 x 2, 2 x 2,4 .
  • cycle number 6 under the control of each selector, a value is stored in each register of arithmetic circuit 600c as shown in FIG.
  • the output from the register 608c is T 1,1 + T 1,2 + T 1,3
  • the arithmetic circuit 600c repeats the cycle number 1 to the cycle number 6 and outputs the calculation result to the arithmetic circuit 600d. When the number of cycles 6 ends, the arithmetic circuit 600c similarly performs the arithmetic processing for the next x 1 and x 2 .
  • the stored value of the register of the arithmetic circuit 600d, the coefficient read from the ROM 690, the signal supplied to the selector, and the output value from the arithmetic circuit 600d will be described with reference to FIG. Note that the value stored in the register of the arithmetic circuit 600d shown in FIG. 65 is supplied to the arithmetic circuit 600d after the arithmetic circuit 600c performs the rotation of the cycle number 1 to the cycle number 6.
  • the coefficient b 4 is read from the area 690a of the ROM 690.
  • the selectors 604d and 611d are supplied with a signal that outputs an input from “0” in FIG.
  • cycle number 2 under the control of each selector, a value is stored in each register of arithmetic circuit 600d as shown in FIG. Further, the coefficient b 1 is read from the area 690 a of the ROM 690.
  • cycle number 3 under the control of each selector, a value is stored in each register of arithmetic circuit 600d as shown in FIG. Also, the coefficients a 1 and 4 are read from the area 690a of the ROM 690.
  • the selectors 604d and 611d are supplied with a signal that outputs an input from “1” in FIG. As a result, the output from the register 608d is T 1,1 + T 1,2 + T 1,3 + T 1,4 , and the output from the register 610d is T 2,4 + T 2,3 + T 2,2 + b 1 x 2, 1
  • the value is stored in each register of the arithmetic circuit 600d as shown in FIG. 65 by the control of each selector. Also, the coefficients a 1 and 3 are read from the area 690a of the ROM 690.
  • the selectors 604d and 611d are supplied with a signal that outputs an input from “1” in FIG. As a result, the output from the register 608d is T 1,1 + T 1,2 + T 1,3 + T 1,4 , and the output from the register 610d is T 2,4 + T 2,3 + T 2,2 + b 1 x 2, 1 + a 1,4 x 2,1 x 2,4 .
  • the value is stored in each register of the arithmetic circuit 600d as shown in FIG. 65 by the control of each selector. Further, the coefficients a 1 and 2 are read from the area 690a of the ROM 690.
  • the selectors 604d and 611d are supplied with a signal that outputs an input from “1” in FIG. As a result, the output T 1,1 + T 1,2 + T 1,3 + T 1,4 from the register 608d is obtained, and the output from the register 610d is T 2,4 + T 2,3 + T 2,2 + b 1 x 2,1. + A 1,4 x 2,1 x 2,4 + a 1,3 x 2,1 x 2,3
  • the value is stored in each register of the arithmetic circuit 600d as shown in FIG. 65 by the control of each selector.
  • the output from the register 608d is T 1,1 + T 1,2 + T 1,3 + T 1,4
  • the arithmetic circuit 600d repeats the cycle number 1 to the cycle number 6 and outputs the calculation results of f (x 1 ) and f (x 2 ). When the number of cycles 6 ends, the arithmetic circuit 600d similarly performs arithmetic processing on the next x 1 and x 2 .
  • the arithmetic circuit according to the embodiment # 3 divides the area of the ROM 690 in which the coefficients a ij and b i are stored into a plurality of parts, and calculates the quadratic polynomials f (x 1 ) and f (x 2 ). By making the processing pipeline, it is possible to relax restrictions on the arrangement of the ROM 690 and prevent a decrease in the maximum operating frequency.
  • the arithmetic circuit according to the embodiment # 3 since the output of a certain arithmetic circuit can be used as the input of the arithmetic circuit in the subsequent stage, the number of registers can be reduced in the order of shift registers 6011a, 6011b, 6011c, and 6011d. Therefore, the arithmetic circuit according to the embodiment # 3 can reduce the number of registers compared to a case where a plurality of arithmetic circuits according to the embodiment # 1 are simply provided in parallel.
  • FIG. 66 is an explanatory diagram illustrating the configuration of the arithmetic circuit according to the example # 4.
  • the arithmetic circuit shown in FIG. 66 calculates and outputs a quadratic polynomial when the input x is 4 bits.
  • the arithmetic circuit according to the embodiment # 4 includes the arithmetic circuits 700a, 700b, 700c, and 700d, and the ROM 790 that stores the coefficients.
  • the ROM 790 is divided into two areas 790a and 790b.
  • Arithmetic circuits 700a, 700b, 700c, 700 d has two inputs x 1, x 2 from the secondary multivariate polynomial f (x 1), a circuit for generating the f (x 2) in parallel.
  • the arithmetic circuit according to the embodiment # 3 performs the second-order multivariate polynomial f (x 1 ), f from the two inputs x 1 and x 2 by pipeline processing in the order of the four arithmetic circuits 600a, 600b, 600c, and 600d. It was designed to generate (x 2 ) in parallel.
  • the arithmetic circuit according to the embodiment # 4 converts the second-order multivariate polynomial f (x 1 ) from the input x 1 to the reverse pipeline by the pipeline processing in the order of the four arithmetic circuits 700a, 700b, 700c, and 700d.
  • the processing is designed to generate a second-order multivariate polynomial f (x 2 ) from the input x 2 in parallel.
  • the ROM 790 that stores the coefficients has 2 It is divided into two areas 790a and 790b.
  • the coefficients stored in the areas 790a and 790b are the same as those shown in FIG.
  • the arithmetic circuit 700a includes a shift register 701a, AND circuits 702a and 703a, a selector 704a, an AND circuit 705a, an XOR circuit 706a, selectors 707a and 709a, a register 708a, 710a and a selector 711a.
  • the shift register 701a includes a first shift register 7011a and a second shift register 7012a.
  • the configuration of the first shift register 7011a is substantially the same as the configuration of the first shift register 4011 shown in FIG. 35 except that the combination of registers that output values is different. However, the first shift register 7011a and the second shift register 7012a operate in cooperation in the same cycle.
  • the first shift register 7011a includes registers RA 1,1 , RA 1,2 , RA 1,3 , RA 1,4 , RA 1,5 , and selectors SA 1,1 , SA 1. , 2 , SA 1,3 , SA 1,4 , SA 1,5 .
  • the first shift register 7011a is configured to output the stored value from the registers RA 1,1 , RA 1,2 and RA 1,3 .
  • the second shift register 7012a includes registers RA 2,1 , RA 2,2 and selectors SA 2,1 , SA 2,2 .
  • the second shift register 7012a is configured to output the stored value from the registers RA 2,1 and RA 2,2 .
  • the values ya 1,1 , ya 1,2 , ya 1,3 output from the first shift register 7011a are input to the arithmetic circuit 700b in the subsequent stage. Further, the values ya 1 , 1 , ya 1 , 2 output from the first shift register 7011a are input to the AND circuit 702a as shown in FIG. The values ya 2,1 , ya 2,2 output from the second shift register 7012a are input to the AND circuit 703a.
  • the AND circuit 702a calculates the logical product of the input values ya 1 , 1 , ya 1 , 2 , and inputs the calculation result to the selector 704a.
  • the AND circuit 703a calculates a logical product of the input values ya 2 , 1 , ya 2 , 2 , and inputs the calculation result to the selector 704a.
  • the selector 704a selects one value from the two input values, and inputs the selection result to the AND circuit 705a.
  • the AND circuit 705a receives the coefficients a ij and b i together with the output value of the selector 704a.
  • the AND circuit 705a calculates the logical product of the input output value and the coefficient, and inputs the calculation result to the XOR circuit 706a.
  • the XOR circuit 706a receives an output value of the AND circuit 705a and an output value of a selector 711a described later.
  • the XOR circuit 706a performs an exclusive OR operation on the two input values, and inputs the operation result to the selectors 707a and 709a. This calculation result is stored in the register 708a or the register 710a depending on the state of the selectors 707a and 709a.
  • the stored values of the registers 708a and 710a are either input to the XOR circuit 706a or output from the arithmetic circuit 700a as the operation results za 1 and za 2 depending on the state of the selector 711a.
  • the value za 1 from the register 708a is input to the arithmetic circuit 700b at the subsequent stage.
  • the value za 2 from the register 710a is output from the arithmetic circuit as a second-order multivariable polynomial f (x 2 ).
  • the selectors 704a and 711a select and output one of the input values according to the value of selA described later.
  • the selector 707a selects and outputs either the output of the XOR circuit 706a, the value “0”, or the output of the register 708a.
  • the selector 709a selects and outputs either the output of the XOR circuit 706a, the value zb 2 supplied from the arithmetic circuit 700b, or the output of the register 710a.
  • 69 and 70 are explanatory diagrams showing a circuit configuration of the arithmetic circuit 700b.
  • the arithmetic circuit 700b includes a shift register 701b, AND circuits 702b and 703b, a selector 704b, an AND circuit 705b, an XOR circuit 706b, selectors 707b and 709b, a register 708b, 710b and a selector 711b.
  • the shift register 701b includes a first shift register 7011b and a second shift register 7012b.
  • the configuration of the first shift register 7011b is one less than that of the first shift register 7011a shown in FIG.
  • the configuration of the second shift register 7012b includes one register more than the configuration of the first shift register 7012a illustrated in FIG.
  • the first shift register 7011b and the second shift register 7012b operate in cooperation in the same cycle.
  • the first shift register 7011b includes registers RB 1,1 , RB 1,2 , RB 1,3 , RB 1,4 , and selectors SB 1,1 , SB 1,2 , SB 1. , 3 , SB 1 , 4 .
  • the first shift register 7011b is configured to output stored values from the registers RB 1,1 and RB 1,2 .
  • the second shift register 7012b includes registers RB 2,1 , RB 2,2 , RB 2,3 and selectors SB 2,1 , SB 2,2 , SB 2,3 .
  • the second shift register 7012b is configured to output the stored value from the registers RB 2,1 , RB 2,2 and RB 2,3 .
  • the values yb 1,1 , yb 1,2 output from the first shift register 7011b are input to the arithmetic circuit 700c at the subsequent stage. Further, the values yb 1,1 , yb 1 , 2 output from the first shift register 7011b are input to the AND circuit 702b as shown in FIG. Similarly, the values yb 2 and 2 output from the second shift register 7012b are input to the arithmetic circuit 700a at the subsequent stage. The values yb 2,1 , yb 2,2 output from the second shift register 7012b are input to the AND circuit 703b.
  • the AND circuit 702b calculates the logical product of the input values yb 1,1 , yb 1 , and 2 , and inputs the calculation result to the selector 704b.
  • the AND circuit 703b calculates a logical product of the input values yb 2,1 , yb 2,2 , and inputs the calculation result to the selector 704b.
  • the selector 704b selects one value from the two input values, and inputs the selection result to the AND circuit 705b.
  • the AND circuit 705b receives the coefficients a ij and b i together with the output value of the selector 704b.
  • the AND circuit 705b calculates a logical product of the input output value and the coefficient, and inputs the calculation result to the XOR circuit 706b.
  • the XOR circuit 706b receives an output value of the AND circuit 705b and an output value of a selector 711b described later.
  • the XOR circuit 706b performs an exclusive OR operation on the two input values, and inputs the operation result to the selectors 707b and 709a. This calculation result is stored in the register 708b or the register 710b depending on the state of the selectors 707b and 709b.
  • one of the stored values of the registers 708b and 710b is input to the XOR circuit 706b or output from the arithmetic circuit 700b as the operation results zb 1 and zb 2 depending on the state of the selector 711b.
  • the value zb 1 from the register 708b is input to the subsequent arithmetic circuit 700c.
  • the value zb 2 from the register 710b is input to the arithmetic circuit 700a at the subsequent stage.
  • the selectors 704b and 711b select and output one of the input values according to the value of selB described later.
  • the selector 707b selects and outputs either the output of the XOR circuit 706b, the value za 1 supplied from the arithmetic circuit 700a, or the output of the register 708b.
  • the selector 709b selects and outputs either the output of the XOR circuit 706b, the value zc 2 supplied from the arithmetic circuit 700c, or the output of the register 710b.
  • 71 and 72 are explanatory diagrams showing the circuit configuration of the arithmetic circuit 700c.
  • the arithmetic circuit 700c includes a shift register 701c, AND circuits 702c and 703c, a selector 704c, an AND circuit 705c, an XOR circuit 706c, selectors 707c and 709c, a register 708c, 710c and a selector 711c.
  • the shift register 701c includes a first shift register 7011c and a second shift register 7012c.
  • the configuration of the first shift register 7011c is one register less than that of the first shift register 7011b shown in FIG.
  • the second shift register 7012c has one more register than the first shift register 7012b illustrated in FIG.
  • the first shift register 7011c and the second shift register 7012c operate in cooperation in the same cycle.
  • the first shift register 7011c includes registers RC 1,1 , RC 1,2 and RC 1,3 and selectors SC 1,1 , SC 1,2 and SC 1,3.
  • the first shift register 7011c is configured to output a stored value from the registers RC 1,1 , RC 1,2 and RC 1,3 .
  • the second shift register 7012c includes a register RC 2,1, RC 2,2, RC 2,3 , RC 2,4, and selectors SC 2,1, SC 2,2, SC 2,3 , SC 2 and 4 .
  • the second shift register 7012c is configured to output a stored value from the registers RC 2,1 and RC 2,2 .
  • the value yc 1,1 output from the first shift register 7011c is input to the arithmetic circuit 700d at the subsequent stage. Further, the values yc 1,1 , yc 1 , 2 output from the first shift register 7011c are input to the AND circuit 702c as shown in FIG. Similarly, the values yc 2,1 , yc 2,2 output from the second shift register 7012c are input to the arithmetic circuit 700b at the subsequent stage. The values yc 2,1 , yc 2,2 output from the second shift register 7012c are input to the AND circuit 703c.
  • the AND circuit 702c calculates a logical product of the input values yc 1,1 , yc 1 , and 2 , and inputs the calculation result to the selector 704c.
  • the AND circuit 703c calculates a logical product of the input values yc 2,1 , yc 2,2 and inputs the calculation result to the selector 704c.
  • the selector 704c selects one value from the two input values, and inputs the selection result to the AND circuit 705c.
  • the AND circuit 705c receives the coefficients a ij and b i together with the output value of the selector 704c.
  • the AND circuit 705c calculates a logical product of the input output value and the coefficient, and inputs the calculation result to the XOR circuit 706c.
  • the XOR circuit 706c receives the output value of the AND circuit 705c and the output value of the selector 711c described later.
  • the XOR circuit 706c performs an exclusive OR operation on the two input values, and inputs the operation result to the selectors 707c and 709c. This calculation result is stored in the register 708c or the register 710c depending on the state of the selectors 707c and 709c.
  • either one of the stored values of the registers 708c and 710c is input to the XOR circuit 706c or output from the arithmetic circuit as the arithmetic results zc 1 and zc 2 depending on the state of the selector 711c.
  • the value zc 1 from the register 708c is input to the subsequent arithmetic circuit 700d.
  • the value zc 2 from register 710c is input to the subsequent calculating circuit 700b.
  • the selectors 704c and 711c select and output one of the input values according to the value of selC described later.
  • the selector 707c selects and outputs either the output of the XOR circuit 706c, the value zb 1 supplied from the arithmetic circuit 700b, or the output of the register 708c.
  • the selector 709c selects and outputs either the output of the XOR circuit 706c, the value zd 2 supplied from the arithmetic circuit 700d, or the output of the register 710c.
  • the arithmetic circuit 700d includes a shift register 701d, AND circuits 702d and 703d, a selector 704d, an AND circuit 705d, an XOR circuit 706d, selectors 707d and 709d, registers 708d, 710d and a selector 711d.
  • the shift register 701d includes a first shift register 6011d and a second shift register 7012d.
  • the configuration of the first shift register 7011d is one register less than that of the first shift register 7011c shown in FIG.
  • the configuration of the second shift register 7012d is one more register than the configuration of the first shift register 7012c illustrated in FIG.
  • the first shift register 7011d and the second shift register 7012d operate in cooperation in the same cycle.
  • the first shift register 7011d includes registers RD 1,1 and RD 1,2 and selectors SD 1,1 and SD 1,2 .
  • the first shift register 7011d is configured to output stored values from the registers RD 1,1 and RD 1,2 .
  • the second shift register 7012d includes registers RD 2,1 , RD 2,2 , RD 2,3 , RD 2,4 , RD 2,5 , and selectors SD 2,1 , SD 2,2 , SD 2,3. , SD 2,4 and SD 2,5 .
  • the second shift register 7012d is configured to output stored values from the registers RD 2,1 , RD 2,2 and RD 2,3 .
  • the values yd 1,1 , yd 1 , 2 output from the first shift register 7011d are input to the AND circuit 702d as shown in FIG.
  • the values yd 2,1 , yd 2,2 output from the second shift register 7012d are input to the AND circuit 703d.
  • the AND circuit 702d calculates a logical product of the input values yd 1,1 , yd 1 , and 2 , and inputs the calculation result to the selector 704d.
  • the AND circuit 703d calculates a logical product of the input values yd 2,1 , yd 2,2 and inputs the calculation result to the selector 704d.
  • the selector 704d selects one value from the two input values, and inputs the selection result to the AND circuit 705d.
  • the AND circuit 705d receives the coefficients a ij and b i together with the output value of the selector 704d.
  • the AND circuit 705d calculates a logical product of the input output value and the coefficient, and inputs the calculation result to the XOR circuit 706d.
  • the output value of the AND circuit 705d and the output value of the selector 711d described later are input to the XOR circuit 706d.
  • the XOR circuit 706d performs an exclusive OR operation on the two input values, and inputs the operation result to the selectors 707d and 709d. This calculation result is stored in the register 708d or the register 710d depending on the state of the selectors 707d and 709d.
  • one of the stored values of the registers 708d and 710d is input to the XOR circuit 706d or output from the arithmetic circuit as the operation results zd 1 and zd 2 depending on the state of the selector 711d.
  • the value zd 1 from register 708d corresponds to f (x 1 ).
  • the value zd 2 from register 710d is input to the subsequent calculating circuit 700c.
  • the selectors 704d and 711d select and output one of the input values according to the value of selD described later.
  • the selector 707d selects and outputs either the output of the XOR circuit 706d, the value zc 1 supplied from the arithmetic circuit 700c, or the output of the register 708d.
  • the selector 709d selects and outputs either the output of the XOR circuit 706d, the value “0”, or the output of the register 710d.
  • FIGS. 75 to 82 summarize the values stored in the registers of the arithmetic circuits 700a to 700d, the coefficients read from the ROM 690, the signals supplied to the selector, and the output values from the arithmetic circuits 700a to 700d, respectively.
  • 75 and 76 summarize the arithmetic circuit 700a
  • FIGS. 77 and 78 summarize the arithmetic circuit 700b
  • FIGS. 79 and 80 summarize the arithmetic circuit 700c.
  • 81 and 82 summarize the arithmetic circuit 700d.
  • the coefficients a 1 and 2 are read from the area 790a of the ROM 790.
  • the selectors 704a and 711a are supplied with a signal that outputs an input from “0” in FIG. 68, and the selectors 704d and 711d have a signal that outputs an input from “1” in FIG. Is supplied.
  • the outputs from the registers 708a and 710d become zero.
  • the values are stored in the registers of the arithmetic circuits 700a and 700d as shown in FIGS. 75 and 81 by the control of each selector. Further, the coefficients a 1 and 3 are read from the area 790a of the ROM 790.
  • the selectors 704a and 711a are supplied with a signal that outputs an input from “0” in FIG. 68, and the selectors 704d and 711d have a signal that outputs an input from “1” in FIG. Is supplied.
  • the output from register 708a is next to a 1,2 x 1,1 x 1,2, output from register 710d becomes a 1,2 x 2,1 x 2,2.
  • the values are stored in the registers of the arithmetic circuits 700a and 700d as shown in FIGS. 75 and 81 by the control of each selector. Also, the coefficients a 1 and 4 are read from the area 790a of the ROM 790.
  • the selectors 704a and 711a are supplied with a signal that outputs an input from “0” in FIG. 68, and the selectors 704d and 711d have a signal that outputs an input from “1” in FIG. Is supplied.
  • the output from register 708a is a 1,2 x 1,1 x 1,2 + a 1,3 x 1,1 x 1,3
  • the output from the register 710d a 1,2 x 2,1 x the 2,2 + a 1,3 x 2,1 x 2,3 .
  • the values are stored in the registers of the arithmetic circuits 700a and 700d as shown in FIGS. 75 and 81 by the control of each selector. Further, the coefficient b 1 is read from the area 790a of the ROM 790.
  • the selectors 704a and 711a are supplied with a signal that outputs an input from “0” in FIG. 68, and the selectors 704d and 711d have a signal that outputs an input from “1” in FIG. Is supplied.
  • the output from register 708a is a 1,2 x 1,1 x 1,2 + a 1,3 x 1,1 x 1,3 + a 1,4 x 1,1 x 1,4 next, from register 710d the output of the a 1,2 x 2,1 x 2,2 + a 1,3 x 2,1 x 2,3 + a 1,4 x 2,1 x 2,4.
  • the values are stored in the registers of the arithmetic circuits 700a and 700d as shown in FIGS. 75 and 81 by the control of each selector.
  • the coefficient b 4 is read from the area 790 a of the ROM 790.
  • the values are stored in the registers of the arithmetic circuits 700a and 700d as shown in FIGS. 76 and 81 by the control of each selector.
  • the output from the register 708a is T 1,1
  • the output from the register 710d is T 2,1 .
  • the arithmetic circuits 700a and 700d repeat the six cycles of the cycle number 1 to the cycle number 6 and output the operation results to the arithmetic circuits 700b and 700c, respectively. When the six cycles are completed, the arithmetic circuits 700a and 700d similarly perform the arithmetic processing for the next x 1 and x 2 respectively.
  • values are stored in the registers of the arithmetic circuits 700b and 700c as shown in FIGS. 77 and 79 by the control of each selector. Further, the coefficients a 2 and 3 are read from the area 790b of the ROM 790.
  • the selectors 704b and 711b are supplied with a signal that outputs an input from “0” in FIG. 70, and the selectors 704c and 711c have a signal that outputs an input from “1” in FIG. Is supplied.
  • the output from the register 708b is T 1,1
  • the output from the register 710c is T 2,1 .
  • values are stored in the registers of the arithmetic circuits 700b and 700c as shown in FIGS. 77 and 79 by the control of each selector. Further, the coefficients a 2 and 4 are read from the area 790b of the ROM 790.
  • the selectors 704b and 711b are supplied with a signal that outputs an input from “0” in FIG. 70, and the selectors 704c and 711c have a signal that outputs an input from “1” in FIG. Is supplied.
  • the output from the register 708b is T 1,1 + a 2,3 x 1,2 x 1,3
  • the output from the register 710c is T 2,1 + a 2,3 x 2,2 x 2,3 .
  • values are stored in the registers of the arithmetic circuits 700b and 700c as shown in FIGS. 77 and 79 by the control of each selector.
  • the coefficient b 2 is read from the area 790 b of the ROM 790.
  • the selectors 704b and 711b are supplied with a signal that outputs an input from “0” in FIG. 70, and the selectors 704c and 711c have a signal that outputs an input from “1” in FIG. Is supplied.
  • the output from register 708b is T 1,1 + a 2,3 x 1,2 x 1,3 + a 2,4 x 1,2 x 1,4
  • the output from register 710c T 2,1 + a the 2,3 x 2,2 x 2,3 + a 2,4 x 2,2 x 2,4.
  • the arithmetic circuits 700b and 700c repeat these six cycles and output the calculation results to the arithmetic circuits 700c and 700b, respectively.
  • the arithmetic circuits 700a and 700d similarly perform arithmetic processing on values supplied from the arithmetic circuits 700a and 700d, respectively.
  • values are stored in the registers of the arithmetic circuits 700b and 700c as shown in FIGS. 77 and 79 by the control of each selector.
  • the registers RB 2,1 , RB 2,2 and RB 2,3 in which the value is not stored in the cycle number 6 + 1, the output value or “1” from the shift register 7012c of the arithmetic circuit 700c is stored.
  • the output value or “1” from the shift register 7012b of the arithmetic circuit 700b is stored in the registers RC 1,1 , RC 1,2 and RC 1,3 which have not been stored in the cycle number 6 + 1.
  • the coefficients a 2 and 3 are read from the area 790b of the ROM 790.
  • the selectors 704b and 711b are supplied with a signal that outputs an input from “0” in FIG. 70, and the selectors 704c and 711c have a signal that outputs an input from “1” in FIG. Is supplied.
  • values are stored in the registers of the arithmetic circuits 700b and 700c as shown in FIGS. 77 and 79 by the control of each selector. Further, the coefficients a 2 and 4 are read from the area 790b of the ROM 790.
  • the selectors 704b and 711b are supplied with a signal that outputs an input from “0” in FIG. 70, and the selectors 704c and 711c have a signal that outputs an input from “1” in FIG. Is supplied. As a result, as shown in FIGS.
  • the output from the register 708b is T 1,1 + a 2,3 x 1,2 x 1,3
  • the output from the register 710b is T 2,1 + T 2, 2
  • the output from the register 708c is T 1,1 + T 1,2
  • the output from the register 710c is T 2,1 + a 2,3 x 2,2 x 2,3 .
  • values are stored in the registers of the arithmetic circuits 700b and 700c as shown in FIGS. 77 and 79 by the control of each selector.
  • the coefficient b 2 is read from the area 790 b of the ROM 790.
  • the selectors 704b and 711b are supplied with a signal that outputs an input from “0” in FIG. 70, and the selectors 704c and 711c have a signal that outputs an input from “1” in FIG. Is supplied. As a result, as shown in FIGS.
  • the output from the register 708b is T 1,1 + a 2,3 x 1,2 x 1,3 + a 2,4 x 1,2 x 1,4 .
  • the output from 710b is T 2,1 + T 2,2
  • the output from register 708c is T 1,1 + T 1,2
  • the output from register 710c is T 2,1 + a 2,3 x 2,2 x 2,3 + a 2,4 x 2,2 x 2,4 .
  • values are stored in the registers of the arithmetic circuits 700b and 700c as shown in FIGS. 77 and 79 by the control of each selector. Further, the coefficient b 3 is read from the area 790 b of the ROM 790.
  • the selectors 704b and 711b are supplied with a signal that outputs an input from “1” in FIG. 70, and the selectors 704c and 711c have a signal that outputs an input from “0” in FIG. Is supplied. As a result, as shown in FIGS.
  • the output from the register 710b is T 2,1 + T 2,2
  • the output from the register 708c is T 1,1 + T 1,2
  • values are stored in the registers of the arithmetic circuits 700b and 700c as shown in FIGS. 77 and 79 by the control of each selector. Also, the coefficients a 3 and 4 are read from the area 790b of the ROM 790.
  • the selectors 704b and 711b are supplied with a signal that outputs an input from “1” in FIG. 70, and the selectors 704c and 711c have a signal that outputs an input from “0” in FIG. Is supplied. As a result, as shown in FIGS.
  • the output from the register 708b is T 1,1 + T 1,2
  • the output from the register 710b is T 2,1 + T 2,2 + b 3 x 2,3
  • the output from the register 708c is T 1,1 + T 1,2 + b 3 x 1,3
  • the output from the register 710c is T 2,1 + T 2,2 .
  • values are stored in the registers of the arithmetic circuits 700a and 700d as shown in FIGS. 75 and 81 by the control of each selector.
  • the registers RA 2,1 and RA 2,2 where no value is stored in the number of cycles 1 to 2 ⁇ 6 + 6, the output value or “1” from the shift register 7012b of the arithmetic circuit 700b is stored.
  • the output value or “1” from the shift register 7012c of the arithmetic circuit 700c is stored in the registers RD 1,1 and RD 1 and 2 , in which no value is stored in the cycle number 1 to 2 ⁇ 6 + 6. .
  • the coefficients a 1 and 2 are read from the area 790a of the ROM 790.
  • the selectors 704a and 711a are supplied with a signal that outputs an input from “0” in FIG. 68, and the selectors 704d and 711d have a signal that outputs an input from “1” in FIG. Is supplied.
  • the output from the register 708a is 0, the output from the register 710a is T 2,1 + T 2,2 + T 2,3 , and the output from the register 708d is T 1.
  • 1 + T 1,2 + T 1,3 , and the output from the register 710d is zero.
  • values are stored in the registers of the arithmetic circuits 700a and 700d as shown in FIGS. 75 and 81 by the control of each selector. Further, the coefficients a 1 and 3 are read from the area 790a of the ROM 790.
  • the selectors 704a and 711a are supplied with a signal that outputs an input from “0” in FIG. 68, and the selectors 704d and 711d have a signal that outputs an input from “1” in FIG. Is supplied. As a result, as shown in FIGS.
  • the output from the register 708a is a 1,2 x 1,1 x 1,2
  • the output from the register 710a is T 2,1 + T 2,2 + T 2, 3
  • the output from the register 708d is T 1,1 + T 1,2 + T 1,3
  • the output from the register 710d is a 1,2 x 2,1 x 2,2 .
  • values are stored in the registers of the arithmetic circuits 700a and 700d as shown in FIGS. 75 and 81 by the control of each selector. Also, the coefficients a 1 and 4 are read from the area 790a of the ROM 790.
  • the selectors 704a and 711a are supplied with a signal that outputs an input from “0” in FIG. 68, and the selectors 704d and 711d have a signal that outputs an input from “1” in FIG. Is supplied.
  • the output from register 708a as shown in FIG. 76 and FIG.
  • the output from register 710a Is T 2,1 + T 2,2 + T 2,3
  • the output from the register 708d is T 1,1 + T 1,2 + T 1,3
  • the output from the register 710d is a 1,2 x 2,1 x the 2,2 + a 1,3 x 2,1 x 2,3 .
  • the output from the register 708a is a 1,2 x 1,1 x 1,2 + a 1,3 x 1,1 x 1,3 + a 1,4 x 1, 1 x 1,4
  • the output from register 710a is T 2,1 + T 2,2 + T 2,3
  • the output from register 708d is T 1,1 + T 1,2 + T 1,3
  • the output of register 710d the output of the a 1,2 x 2,1 x 2,2 + a 1,3 x 2,1 x 2,3 + a 1,4 x 2,1 x 2,4.
  • the output from the register 710a is T 2,1 + T 2,2 + T 2,3
  • the output from the register 708d is T 1,1 + T 1 , 2 + T 1,3
  • the output value T 2,1 + T 2,2 + T 2,3 + T 2,4 from the register 710a at the number of cycles 3 ⁇ 6 + 6 corresponds to f (x 2 ) as shown in the equation (19)
  • the output value T 1,1 + T 1,2 + T 1,3 + T 1,4 from the register 708d corresponds to f (x 1 ) as shown in Equation (18).
  • the arithmetic circuit according to the example # 4 divides the area of the ROM 790 in which the coefficients a ij and b i are stored into a plurality of parts, and calculates the quadratic polynomials f (x 1 ) and f (x 2 ).
  • the arithmetic circuit according to the embodiment # 4 is different from the arithmetic circuit according to the embodiment # 4 from the input x 1 by the pipeline processing in the order of the four arithmetic circuits 700a, 700b, 700c, and 700d.
  • the example of the arithmetic circuit when the input x is 4 bits and the coefficients a ij and b i are 1 ⁇ i ⁇ j ⁇ 4 has been described. It is not limited to.
  • the arithmetic circuit is simply As compared with the case where a plurality of registers are provided, it is possible to perform arithmetic processing in parallel while reducing the number of registers in the entire arithmetic circuit.
  • the ROM area is divided into 10 and 20 arithmetic circuits are arranged in parallel to form a pipeline. By doing so, it is possible to perform arithmetic processing in parallel while reducing the number of registers in the entire arithmetic circuit as compared to a case where a plurality of arithmetic circuits are simply provided.
  • the arithmetic circuit according to the example # 3 and the arithmetic circuit according to the example # 4 also execute the calculation of the multivariable polynomials F and G in parallel as in the arithmetic circuit according to the example # 2. It goes without saying that it can be expanded as well.
  • the functional configuration of the above device is expressed as follows.
  • the other shift registers output the stored values in a cycle in which the stored values are not output.
  • the circuit scale can be reduced.
  • the stored values x 1 ,..., X N , c (c is a predetermined number) are moved to the first shift register in which the first to N + 1 registers are stored, and the first shift register is moved.
  • the controller is Predetermining the first shift register while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x 1 ,..., X N , c are output.
  • the stored value is output from a pair of registers,
  • the other shift registers are configured while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x N ′,..., X 1 ′, c ′ are output.
  • the stored value is output from a predetermined pair of registers. Arithmetic unit.
  • a variable multiplier for multiplying two stored values output from each shift register; A selection unit that selects one from a plurality of output results from the variable multiplication unit; A coefficient multiplier that multiplies the output value of the selector by a predetermined coefficient; A first summing unit that adds all the output values of the coefficient multiplication unit related to the stored value output from the first shift register; A second summing unit that adds all the output values of the coefficient multiplication unit related to the stored values output from the other shift registers; Further comprising The arithmetic unit according to (1) above.
  • the predetermined pair of registers in the first shift register are the first and second registers
  • the predetermined pair of registers in the other shift register are the first and N + 1th registers,
  • the control unit moves the stored values stored in the second to (N + 1) th registers while maintaining the stored value stored in the first register, and the first to N + 1th control values. And a second control process for moving all the stored values stored in the register, and controlling the shift register so that all combinations of the pair of stored values are output.
  • the arithmetic unit according to any one of (1) to (3) above.
  • the stored values x 1 ,..., X N , c (c is a predetermined number) are moved to the first shift register stored in the first to N + 1 registers, respectively, and the first shift register is moved.
  • the stored value is output from a pair of registers,
  • the stored values are output from a predetermined pair of registers constituting the second and third shift registers while moving the stored values so that all combinations of possible pairs of stored values are output. Arithmetic unit.
  • a variable multiplier for multiplying two stored values output from each shift register; An output value of the variable multiplier based on the first stored value output from the second shift register and the second stored value output from the third shift register; and output from the second shift register in the previous period.
  • An adder that adds the second stored value that has been generated and the output value of the variable multiplier based on the first stored value output from the third shift register;
  • a selection unit that selects one of a plurality of output results from the variable multiplication unit and the addition unit;
  • a coefficient multiplier that multiplies the output value of the selector by a predetermined coefficient;
  • a first summing unit that adds all the output values of the coefficient multiplication unit related to the stored value output from the first shift register;
  • a second summing unit for adding the output values of the coefficient multipliers related to the stored values output from the second and third shift registers; Further comprising The arithmetic unit according to (5) above.
  • the predetermined pair of registers in the first shift register are the first and second registers
  • the predetermined pair of registers in the second and third shift registers are the first and N + 1th registers
  • the control unit moves the stored values stored in the second to (N + 1) th registers while maintaining the stored value stored in the first register, and the first to N + 1th control values. And a second control process for moving all the stored values stored in the register, and controlling the shift register so that all combinations of the pair of stored values are output.
  • the arithmetic unit according to any one of (5) to (8) above.
  • the moving step Predetermining the first shift register while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x 1 ,..., X N , c are output.
  • the stored value is output from a pair of registers,
  • a process of outputting a stored value from a predetermined pair of registers is executed, Control method.
  • the stored value is output from a pair of registers,
  • a process of outputting stored values from a predetermined pair of registers constituting the second and third shift registers while moving the stored values so that all possible combinations of stored values are output is executed.
  • the control function is Predetermining the first shift register while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x 1 ,..., X N , c are output.
  • the stored value is output from a pair of registers,
  • the other shift registers are configured while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x N ′,..., X 1 ′, c ′ are output.
  • the stored value is output from a predetermined pair of registers. program.
  • the stored value is output from a pair of registers,
  • the stored values are output from a predetermined pair of registers constituting the second and third shift registers while moving the stored values so that all combinations of possible pairs of stored values are output. program.
  • the stored values x 1 ,..., X N , c (c is a predetermined number) are moved to the first shift registers in which the first to N + 1 registers are stored.
  • the plurality of arithmetic circuits are connected in series, and the first shift register and the second shift register are configured to execute pipeline processing in the same order,
  • the controller is Predetermining the first shift register while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x 1 ,..., X N , c are output.
  • the stored value is output from a pair of registers,
  • the second shift register is moved while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x M ′,..., X 1 ′, c ′ are output.
  • the stored value is output from a predetermined pair of registers to be configured,
  • the number N + 1 of the registers of the first shift register is configured to become smaller as it becomes a later arithmetic circuit in the pipeline processing. Arithmetic unit.
  • Each said arithmetic circuit is A variable multiplier for multiplying two stored values output from each shift register; A selection unit for selecting one from the output results from the variable multiplication unit; A coefficient multiplier that multiplies the output value of the selector by a predetermined coefficient; A first summing unit that adds all the output values of the coefficient multiplication unit related to the stored value output from the first shift register; A second summing unit that adds all the output values of the coefficient multiplication unit related to the stored value output from the second shift register; Further comprising The first summing unit and the second summing unit are added to the output value of the coefficient multiplying unit to a value summed by the first summing unit and the second summing unit in the arithmetic circuit in the previous stage in pipeline processing. Add more, The arithmetic unit according to (13) above.
  • the predetermined pair of registers in the first shift register are the first and second registers
  • the predetermined pair of registers in the second shift register are the first and M + 1th registers
  • the stored values x 1 ,..., X N , c (c is a predetermined number) are moved to the first shift registers in which the first to N + 1 registers are stored.
  • the plurality of arithmetic circuits are connected in series, and the first shift register and the second shift register are configured to execute pipeline processing in reverse order,
  • the controller is Predetermining the first shift register while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x 1 ,..., X N , c are output.
  • the stored value is output from a pair of registers,
  • the second shift register is moved while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x M ′,..., X 1 ′, c ′ are output.
  • the stored value is output from a predetermined pair of registers to be configured,
  • the number N + 1 of the first shift registers and the number M + 1 of the registers of the second shift register are configured so as to become smaller as it becomes a later arithmetic circuit in the pipeline processing. Arithmetic unit.
  • Each said arithmetic circuit is A variable multiplier for multiplying two stored values output from each shift register; A selection unit for selecting one from the output results from the variable multiplication unit; A coefficient multiplier that multiplies the output value of the selector by a predetermined coefficient; A first summing unit that adds all the output values of the coefficient multiplication unit related to the stored value output from the first shift register; A second summing unit that adds all the output values of the coefficient multiplication unit related to the stored value output from the second shift register; Further comprising The first summing unit and the second summing unit are added to the output value of the coefficient multiplying unit to a value summed by the first summing unit and the second summing unit in the arithmetic circuit in the previous stage in pipeline processing. Add more, The arithmetic device according to (16) above.
  • x 1 ,..., x N , c move the stored value for the first shift register stored in the first to N + 1 registers, respectively, and are the same as the first shift register
  • the stored values x M ′,..., X 1 ′, c ′ (c ′ is a predetermined number) are moved in the first to M + 1 registers, respectively, and the stored value is moved.
  • the plurality of arithmetic circuits are connected in series, and the first shift register and the second shift register are configured to execute pipeline processing in the same order, and the number of registers of the first shift register N + 1 is configured to decrease as the later arithmetic circuit in the pipeline processing becomes,
  • the stored value is output from a pair of registers
  • the second shift register is moved while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x M ′,..., X 1 ′, c ′ are output.
  • a process for outputting a stored value from a predetermined pair of registers to be configured is executed. Control method.
  • x 1 ,..., x N , c move the stored value for the first shift register stored in the first to N + 1 registers, respectively, and are the same as the first shift register
  • the stored values x M ′,..., X 1 ′, c ′ (c ′ is a predetermined number) are moved in the first to M + 1 registers, respectively, and the stored value is moved.
  • the plurality of arithmetic circuits are connected in series, and are configured to execute pipeline processing in the reverse order of the first shift register and the second shift register, and the register of the first shift register
  • the number N + 1 and the number M + 1 of the registers of the second shift register are configured so as to become smaller as it becomes a later arithmetic circuit in the pipeline processing.
  • the stored value is output from a pair of registers,
  • the second shift register is moved while moving the stored values so that all combinations of a pair of stored values that can be selected from the stored values x M ′,..., X 1 ′, c ′ are output.
  • a process for outputting a stored value from a predetermined pair of registers to be configured is executed. Control method.

Abstract

 第1~第N+1のレジスタで構成される複数のシフトレジスタと、前記シフトレジスタについて格納値を移動させる制御部と、を備え、前記制御部は、前記格納値の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、演算装置が提供される。

Description

演算装置、制御方法、及びプログラム
 本技術は、演算装置、制御方法、及びプログラムに関する。
 情報処理技術や通信技術の急速な発展に伴い、公文書、私文書を問わず、文書の電子化が急速に進んでいる。これに伴い、多くの個人や企業は、電子文書の安全管理に大きな関心を寄せている。こうした関心の高まりを受け、各方面で電子文書の盗聴や偽造等のタンパリング行為に対する対抗策が盛んに研究されるようになってきた。電子文書の盗聴に対しては、例えば、電子文書を暗号化することにより安全性が確保される。また、電子文書の偽造に対しては、例えば、電子署名を利用することにより安全性が確保される。但し、利用する暗号や電子署名が高いタンパリング耐性を有していなければ、十分な安全性が保証されない。
 電子署名は、電子文書の作成者を特定するために利用される。そのため、電子署名は、電子文書の作成者しか生成できないようにすべきである。仮に、悪意ある第三者が同じ電子署名を生成できてしまうと、その第三者が電子文書の作成者に成りすますことができてしまう。つまり、悪意ある第三者により電子文書が偽造されてしまう。こうした偽造を防止するため、電子署名の安全性については様々な議論が交わされてきた。現在広く利用されている電子署名方式としては、例えば、RSA署名方式やDSA署名方式などが知られている。
 RSA署名方式は、「大きな合成数に対する素因数分解の困難性(以下、素因数分解問題)」を安全性の根拠とする。また、DSA署名方式は、「離散対数問題に対する解の導出の困難性」を安全性の根拠とする。これらの根拠は、古典的なコンピュータを利用して素因数分解問題や離散対数問題を効率的に解くアルゴリズムが存在しないことに起因する。つまり、上記の困難性は、古典的なコンピュータにおける計算量的な困難性を意味する。しかしながら、量子コンピュータを用いると、素因数分解問題や離散対数問題に対する解答が効率的に算出されてしまうと言われている。
 現在利用されている電子署名方式や公開鍵認証方式の多くは、RSA署名方式やDSA署名方式と同様、素因数分解問題や離散対数問題の困難性に安全性の根拠をおいている。そのため、こうした電子署名方式や公開鍵認証方式は、量子コンピュータが実用化された場合に、その安全性が確保されないことになる。そこで、素因数分解問題や離散対数問題など、量子コンピュータにより容易に解かれてしまう問題とは異なる問題に安全性の根拠をおく新たな電子署名方式及び公開鍵認証方式の実現が求められている。量子コンピュータにより容易に解くことが難しい問題としては、例えば、多変数多項式問題がある。
 多変数多項式問題に安全性の根拠をおく電子署名方式としては、例えば、MI(Matsumoto-Imai cryptography)、HFE(Hidden Field Equation cryptography)、OV(Oil-Vinegar signature scheme)、TTM(Tamed Transformation Method cryptography)に基づく方式が知られている。例えば、下記の非特許文献1、2には、HFEに基づく電子署名方式が開示されている。
Jacques Patarin Asymmetric Cryptography with a Hidden Monomial. CRYPTO 1996, pp.45-60. Patarin, J., Courtois, N., and Goubin, L. QUARTZ, 128-Bit Long Digital Signatures. In Naccache,D., Ed. Topics in Cryptology - CT-RSA 2001 (San Francisco, CA, USA, April 2001), vol. 2020 of Lecture Notes in Computer Science, Springer-Verlag., pp.282-297.
 上記の通り、多変数多項式問題は、量子コンピュータを用いても解くことが困難なNP困難問題と呼ばれる問題の一例である。通常、HFEなどに代表される多変数多項式問題を利用した公開鍵認証方式は、特殊なトラップドアが仕込まれた多次多変数連立方程式を利用している。例えば、x,…,xに関する多次多変数連立方程式F(x,…,x)=yと線形変換A及びBが用意され、線形変換A及びBが秘密に管理される。この場合、多次多変数連立方程式F、線形変換A及びBがトラップドアとなる。
 トラップドアF,A,Bを知っているエンティティは、x,…,xに関する方程式B(F(A(x,…,x)))=y’を解くことができる。一方、トラップドアF,A,Bを知らないエンティティは、x,…,xに関する方程式B(F(A(x,…,x)))=y’を解くことができない。この仕組みを利用することにより、多次多変数連立方程式の解答困難性を安全性の根拠とする公開鍵認証方式や電子署名方式が実現される。
 上記の通り、こうした公開鍵認証方式や電子署名方式を実現するには、B(F(A(x,…,x)))=yを満たすような特殊な多次多変数連立方程式を用意する必要がある。また、署名生成時に多次多変数連立方程式Fを解く必要がある。そのため、利用可能な多次多変数連立方程式Fは、比較的容易に解けるものに限られていた。すなわち、これまでの方式においては、比較的容易に解ける3つの関数(トラップドア)B、F、Aを合成した形の多次多変数連立方程式B(F(A(x,…,x)))=yしか用いることができず、十分な安全性を確保することが難しかった。
 そこで、本件発明者は、上記の事情に鑑みて、効率的に解く手段(トラップドア)が知られていない多次多変数連立方程式を用いて高い安全性を有する効率的な公開鍵認証方式及び電子署名方式を考案した(Koichi Sakumoto,Taizo Shirai and Harunaga Hiwatari,“Public-Key Identification Schemes Based on Multivariate Quadratic Polynomials”,CRYPTO 2011,LNCS 6841,pp.706-723,2011.)。
 これらの公開鍵認証方式や電子署名方式においては、多変数多項式の演算が利用される。そのため、多変数多項式を効率的に演算する手法が求められている。例えば、これらの公開鍵認証方式や電子署名方式の中では、複数の入力について多変数多項式の演算結果を算出する工程が含まれる。しかし、各入力について個別に多変数多項式を演算する構成とすると、実装時の回路規模が大きくなってしまったり、クリティカルパスが長くなってしまうなど、小型化及び高速化の観点から改善の余地がある。本技術は、より小型で、高速に多変数多項式の演算を実現することが可能な、新規かつ改良された演算装置、制御方法、及びプログラムの提供を意図して考案されたものである。
 また、本技術のある観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御部と、を備え、前記制御部は、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、演算装置が提供される。
 また、本技術の別の観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値x”,…,x”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御部と、を備え、前記制御部は、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値x”,…,x”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、演算装置が提供される。
 また、本技術の別の観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる工程を含み、前記移動させる工程では、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、制御方法が提供される。
 また、本技術の別の観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値x”,…,x”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる工程を含み、前記移動させる工程では、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値x”,…,x”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、制御方法が提供される。
 また、本技術の別の観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、前記制御機能は、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、プログラムが提供される。
 また、本技術の別の観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値x”,…,x”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、前記制御機能は、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値x”,…,x”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、プログラムが提供される。
 また、本技術の別の観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、各前記演算回路に対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、を備え、前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、前記制御部は、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、演算装置が提供される。
 また、本技術の別の観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、各前記演算回路に対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、
を備え、前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、前記制御部は、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記第1のシフトレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、演算装置が提供される。
 また、本技術の別の観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、前記移動させる工程では、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、制御方法が提供される。
 また、本技術の別の観点によれば、第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、前記移動させる工程では、前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、制御方法が提供される。
 また、本技術の別の観点によれば、上記のプログラムが記録された、コンピュータにより読み取り可能な記録媒体が提供される。
 以上説明したように本技術によれば、より小型で、高速に多変数多項式の演算を実現することが可能な装置を提供することができるようになる。
公開鍵認証方式に係るアルゴリズムの構成について説明するための説明図である。 電子署名方式に係るアルゴリズムの構成について説明するための説明図である。 nパスの公開鍵認証方式に係るアルゴリズムの構成について説明するための説明図である。 3パスの公開鍵認証方式に係る効率的なアルゴリズムについて説明するための説明図である。 3パスの公開鍵認証方式に係る効率的なアルゴリズムの並列化について説明するための説明図である。 5パスの公開鍵認証方式に係る効率的なアルゴリズムの構成例について説明するための説明図である。 5パスの公開鍵認証方式に係る効率的なアルゴリズムの並列化について説明するための説明図である。 3パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。 5パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。 本技術の各実施形態に係るアルゴリズムを実行することが可能な情報処理装置のハードウェア構成例について説明するための説明図である。 多変数多項式の計算を実行する回路の構成について説明するための説明図である。 多変数多項式の計算を実行する回路の構成について説明するための説明図である。 多変数多項式の計算を実行する回路の構成について説明するための説明図である。 複数の多変数多項式を並列に計算する回路の構成について説明するための説明図である。 複数の多変数多項式を並列に計算する回路の構成について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(多ビット入力のセレクタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(多ビット入力のセレクタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(多ビット入力のセレクタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(多ビット入力のセレクタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(シフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(シフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(シフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(シフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(シフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(シフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(シフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(複数フィードバックループのシフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(複数フィードバックループのシフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(複数フィードバックループのシフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(複数フィードバックループのシフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(複数フィードバックループのシフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(複数フィードバックループのシフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(複数フィードバックループのシフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(複数フィードバックループのシフトレジスタを利用する構成例)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#1)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#1)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#1)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#1)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#1)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#1)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#1)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#1)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#2)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#2)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#2)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#2)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#2)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#2)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#2)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#2)について説明するための説明図である。 記録メモリのデータ構造例を示す説明図である。 多変数多項式の計算を実行する回路の構成(実施例#3)について説明するための説明図である。 記録メモリのデータ構造例を示す説明図である。 多変数多項式の計算を実行する回路の構成(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#3)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の構成(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#4)について説明するための説明図である。 多変数多項式の計算を実行する回路の動作(実施例#4)について説明するための説明図である。 図35に示した演算回路401を複数個並列に配置する例を示す説明図である。
 以下に添付図面を参照しながら、本技術の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
 [説明の流れについて]
 ここで、以下に記載する本技術の実施形態に関する説明の流れについて簡単に述べる。まず、図1を参照しながら、公開鍵認証方式のアルゴリズム構成について説明する。次いで、図2を参照しながら、電子署名方式のアルゴリズム構成について説明する。次いで、図3を参照しながら、nパスの公開鍵認証方式について説明する。
 次いで、図4及び図5を参照しながら、3パスの公開鍵認証方式に係るアルゴリズムの構成例について説明する。次いで、図6及び図7を参照しながら、5パスの公開鍵認証方式に係るアルゴリズムの構成例について説明する。次いで、図8及び図9を参照しながら、3パス及び5パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明する。次いで、図10を参照しながら、本技術の実施形態に係る各アルゴリズムを実現することが可能な情報処理装置のハードウェア構成例について説明する。
 次いで、図11~図13を参照しながら、多変数多項式の計算を実行する回路の構成について説明する。次いで、図14及び図15を参照しながら、複数の多変数多項式を並列に計算する回路の構成について説明する。次いで、図16~図19を参照しながら、多変数多項式の計算を実行する回路の構成及び動作(多ビット入力のセレクタを利用する構成例)について説明する。次いで、図20~図26を参照しながら、多変数多項式の計算を実行する回路の構成及び動作(シフトレジスタを利用する構成例)について説明する。
 次いで、図27~図34を参照しながら、多変数多項式の計算を実行する回路の構成及び動作(複数フィードバックループのシフトレジスタを利用する構成例)について説明する。次いで、図35~図42を参照しながら、多変数多項式の計算を実行する回路の構成及び動作(実施例#1)について説明する。次いで、図43~図50を参照しながら、多変数多項式の計算を実行する回路の構成及び動作(実施例#2)について説明する。次いで、図51~図65を参照しながら、多変数多項式の計算を実行する回路の構成及び動作(実施例#3)について説明する。次いで、図66~図82を参照しながら、多変数多項式の計算を実行する回路の構成及び動作(実施例#4)について説明する。最後に、本実施形態の技術的思想について纏め、当該技術的思想から得られる作用効果について簡単に説明する。
 (説明項目)
 1:はじめに
   1-1:公開鍵認証方式のアルゴリズム
   1-2:電子署名方式のアルゴリズム
   1-3:nパスの公開鍵認証方式
 2:3パスの公開鍵認証方式に係るアルゴリズムの構成
   2-1:具体的なアルゴリズムの構成例
   2-2:並列化アルゴリズムの構成例
 3:5パスの公開鍵認証方式に係るアルゴリズムの構成
   3-1:具体的なアルゴリズムの構成例
   3-2:並列化アルゴリズムの構成例
 4:電子署名方式への変形
   4-1:3パスの公開鍵認証方式から電子署名方式への変形
   4-2:5パスの公開鍵認証方式から電子署名方式への変形
 5:ハードウェア構成例
 6:多変数多項式を計算する回路の構成
   6-1:概要
   6-2:多ビット入力のセレクタを利用する構成
     6-2-1:回路構成
     6-2-2:動作
   6-3:シフトレジスタを利用する構成#1
     6-3-1:回路構成
     6-3-2:動作
   6-4:シフトレジスタを利用する構成#2(フィードバックループ)
     6-4-1:回路構成
     6-4-2:動作
   6-5:実施例#1(多変数多項式Fの計算)
     6-5-1:回路構成
     6-5-2:動作
   6-6:実施例#2(多変数多項式F及びGの計算)
     6-5-1:回路構成
     6-5-2:動作
   6-7:実施例#3(多変数多項式Fの計算のパイプライン化)
     6-5-1:回路構成
     6-5-2:動作
   6-8:実施例#4(多変数多項式Fの計算のパイプライン化)
     6-5-1:回路構成
     6-5-2:動作
 7:まとめ
 <1:はじめに>
 本実施形態は、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式に関する。但し、本実施形態は、HFE電子署名方式などの従来手法とは異なり、効率的に解く手段(トラップドア)を持たない多次多変数連立方程式を利用する公開鍵認証方式及び電子署名方式に関する。まず、公開鍵認証方式のアルゴリズム、電子署名方式のアルゴリズム、及びnパスの公開鍵認証方式について、その概要を簡単に説明する。
 [1-1:公開鍵認証方式のアルゴリズム]
 まず、図1を参照しながら、公開鍵認証方式のアルゴリズムについて概要を説明する。図1は、公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
 公開鍵認証は、ある人(証明者)が、公開鍵pk及び秘密鍵skを利用して、他の人(検証者)に本人であることを納得させるために利用される。例えば、証明者Aの公開鍵pkは、検証者Bに公開される。一方、証明者Aの秘密鍵skは、証明者Aにより秘密に管理される。公開鍵認証の仕組みにおいては、公開鍵pkに対応する秘密鍵skを知る者が証明者A本人であるとみなされる。
 公開鍵認証の仕組みを利用して証明者Aが証明者A本人であることを検証者Bに証明するには、対話プロトコルを介して、証明者Aが公開鍵pkに対応する秘密鍵skを知っているという証拠を検証者Bに提示すればよい。そして、証明者Aが秘密鍵skを知っているという証拠が検証者Bに提示され、その証拠を検証者Bが確認し終えた場合、証明者Aの正当性(本人であること)が証明されたことになる。
 但し、公開鍵認証の仕組みには、安全性を担保するために以下の条件が求められる。
 1つ目の条件は、「対話プロトコルを実行した際に秘密鍵skを持たない偽証者により偽証が成立してしまう確率を限りなく小さくする」ことである。この1つ目の条件が成り立つことを「健全性」と呼ぶ。つまり、健全性とは、「秘密鍵skを持たない偽証者により、対話プロトコルの実行中に無視できない確率で偽証が成立することはないこと」と言い換えられる。2つ目の条件は、「対話プロトコルを実行したとしても、証明者Aが有する秘密鍵skの情報が検証者Bに一切漏れることがない」ことである。この2つ目の条件が成り立つことを「零知識性」と呼ぶ。
 安全に公開鍵認証を行うには、健全性及び零知識性を有する対話プロトコルを利用する必要がある。仮に、健全性及び零知識性を有しない対話プロトコルを用いて認証処理を行った場合には、偽証された可能性及び秘密鍵の情報が漏れてしまった可能性が否定できないため、処理自体が成功裡に完了しても証明者の正当性を証明したことにはならない。従って、対話プロトコルの健全性及び零知識性を如何に保証するかが重要になる。
 (モデル)
 公開鍵認証方式のモデルには、図1に示すように、証明者と検証者という2つのエンティティが存在する。証明者は、鍵生成アルゴリズムGenを用いて、証明者固有の秘密鍵skと公開鍵pkの組を生成する。次いで、証明者は、鍵生成アルゴリズムGenを用いて生成した秘密鍵skと公開鍵pkの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムPを利用して対話プロトコルを実行する。上記の通り、証明者は、証明者アルゴリズムPを利用し、対話プロトコルの中で秘密鍵skを保有している証拠を検証者に提示する。
 一方、検証者は、検証者アルゴリズムVを利用して対話プロトコルを実行し、証明者が公開している公開鍵に対応する秘密鍵を、その証明者が保有しているか否かを検証する。つまり、検証者は、証明者が公開鍵に対応する秘密鍵を保有しているか否かを検証するエンティティである。このように、公開鍵認証方式のモデルは、証明者と検証者という2つのエンティティ、及び、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVという3つのアルゴリズムにより構成される。
 なお、以下の説明において、「証明者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、証明者アルゴリズムPを実行する主体は、「証明者」のエンティティに対応する情報処理装置である。同様に、検証者アルゴリズムVを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図10に示した通りである。つまり、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVは、ROM904、RAM906、記憶部920、リムーバブル記録媒体928などに記録されたプログラムに基づいてCPU902などにより実行される。
 (鍵生成アルゴリズムGen)
 鍵生成アルゴリズムGenは、証明者により利用される。鍵生成アルゴリズムGenは、証明者に固有の秘密鍵skと公開鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された公開鍵pkは公開される。そして、公開された公開鍵pkは、検証者により利用される。一方、鍵生成アルゴリズムGenにより生成された秘密鍵skは、証明者が秘密に管理する。そして、証明者により秘密に管理される秘密鍵skは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するために利用される。形式的に、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、秘密鍵skと公開鍵pkを出力するアルゴリズムとして、下記の式(1)のように表現される。
Figure JPOXMLDOC01-appb-M000001
 (証明者アルゴリズムP)
 証明者アルゴリズムPは、証明者により利用される。証明者アルゴリズムPは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するためのアルゴリズムである。つまり、証明者アルゴリズムPは、秘密鍵skと公開鍵pkとを入力とし、対話プロトコルを実行するアルゴリズムである。
 (検証者アルゴリズムV)
 検証者アルゴリズムVは、検証者により利用される。検証者アルゴリズムVは、対話プロトコルの中で、公開鍵pkに対応する秘密鍵skを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムVは、公開鍵pkを入力とし、対話プロトコルの実行結果に応じて0又は1(1bit)を出力するアルゴリズムである。なお、検証者は、検証者アルゴリズムVが0を出力した場合には証明者が不正なものであると判断し、1を出力した場合には証明者が正当なものであると判断する。形式的に、検証者アルゴリズムVは、下記の式(2)のように表現される。
Figure JPOXMLDOC01-appb-M000002
 上記の通り、意味のある公開鍵認証を実現するには、対話プロトコルが健全性及び零知識性という2つの条件を満たしている必要がある。しかし、証明者が秘密鍵skを保有していることを証明するためには、証明者が秘密鍵skに依存した手続きを実行し、その結果を検証者に通知した上で、その通知内容に基づく検証を検証者に実行させる必要がある。秘密鍵skに依存した手続きを実行するのは、健全性を担保するために必要である。一方で、秘密鍵skの情報が一切検証者に漏れないようにする必要がある。そのため、これらの要件を満たすように、上記の鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVを巧妙に設計する必要がある。
 以上、公開鍵認証方式のアルゴリズムについて、その概要を説明した。
 [1-2:電子署名方式のアルゴリズム]
 次に、図2を参照しながら、電子署名方式のアルゴリズムについて概要を説明する。図2は、電子署名方式のアルゴリズムについて概要を説明するための説明図である。
 紙文書とは異なり、ある電子化されたデータに対して押印したり署名を記載したりすることはできない。そのため、電子化されたデータの作成者を証明するためには、紙文書に押印したり署名を記載したりするのと同等の効果が得られる電子的な仕組みを必要とする。この仕組みが電子署名である。電子署名とは、データの作成者しか知らない署名データをデータに関連付けて受領者に提供し、その署名データを受領者側で検証する仕組みのことを言う。
 (モデル)
 電子署名方式のモデルには、図2に示すように、署名者及び検証者という2つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerという3つのアルゴリズムにより構成される。
 署名者は、鍵生成アルゴリズムGenを利用して署名者固有の署名鍵skと検証鍵pkとの組を生成する。また、署名者は、署名生成アルゴリズムSigを利用して文書Mに付与する電子署名σを生成する。つまり、署名者は、文書Mに電子署名を付与するエンティティである。一方、検証者は、署名検証アルゴリズムVerを利用して文書Mに付与された電子署名σを検証する。つまり、検証者は、文書Mの作成者が署名者であるか否かを確認するために、電子署名σを検証するエンティティである。
 なお、以下の説明において、「署名者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、署名生成アルゴリズムSigを実行する主体は、「署名者」のエンティティに対応する情報処理装置である。同様に、署名検証アルゴリズムVerを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図10に示した通りである。つまり、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerは、ROM904、RAM906、記憶部920、リムーバブル記録媒体928などに記録されたプログラムに基づいてCPU902などにより実行される。
 (鍵生成アルゴリズムGen)
 鍵生成アルゴリズムGenは、署名者により利用される。鍵生成アルゴリズムGenは、署名者固有の署名鍵skと検証鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された検証鍵pkは公開される。一方、鍵生成アルゴリズムGenにより生成された署名鍵skは、署名者により秘密に管理される。そして、署名鍵skは、文書Mに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、署名鍵sk及び公開鍵pkを出力する。この場合、鍵生成アルゴリズムGenは、形式的に、下記の式(3)のように表現することができる。
Figure JPOXMLDOC01-appb-M000003
 (署名生成アルゴリズムSig)
 署名生成アルゴリズムSigは、署名者により利用される。署名生成アルゴリズムSigは、文書Mに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムSigは、署名鍵skと文書Mとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムSigは、形式的に、下記の式(4)のように表現することができる。
Figure JPOXMLDOC01-appb-M000004
 (署名検証アルゴリズムVer)
 署名検証アルゴリズムVerは、検証者により利用される。署名検証アルゴリズムVerは、電子署名σが文書Mに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムVerは、署名者の検証鍵pk、文書M、電子署名σを入力とし、0又は1(1bit)を出力するアルゴリズムである。この署名検証アルゴリズムVerは、形式的に、下記の式(5)のように表現することができる。なお、検証者は、署名検証アルゴリズムVerが0を出力した場合(公開鍵pkが文書Mと電子署名σを拒否する場合)に電子署名σが不当であると判断し、1を出力した場合(公開鍵pkが文書Mと電子署名σを受理する場合)に電子署名σが正当であると判断する。
Figure JPOXMLDOC01-appb-M000005
 以上、電子署名方式のアルゴリズムについて、その概要を説明した。
 [1-3:nパスの公開鍵認証方式]
 次に、図3を参照しながら、nパスの公開鍵認証方式について説明する。図3は、nパスの公開鍵認証方式について説明するための説明図である。
 上記の通り、公開鍵認証方式は、対話プロトコルの中で、証明者が公開鍵pkに対応する秘密鍵skを保有していることを検証者に証明する認証方式である。また、対話プロトコルは、健全性及び零知識性という2つの条件を満たす必要がある。そのため、対話プロトコルの中では、図3に示すように、証明者及び検証者の双方がそれぞれ処理を実行しながらn回の情報交換を行う。
 nパスの公開鍵認証方式の場合、証明者アルゴリズムPを用いて証明者により処理(工程#1)が実行され、情報Tが検証者に送信される。次いで、検証者アルゴリズムVを用いて検証者により処理(工程#2)が実行され、情報Tが証明者に送信される。さらに、k=3~nについて処理の実行及び情報Tの送信が順次行われ、最後に処理(工程#n+1)が実行される。このように、情報がn回送受信される方式のことを「nパス」の公開鍵認証方式と呼ぶ。
 以上、nパスの公開鍵認証方式について説明した。
 <2:3パスの公開鍵認証方式に係るアルゴリズムの構成>
 以下、3パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、3パスの公開鍵認証方式のことを「3パス方式」と呼ぶ場合がある。
 [2-1:具体的なアルゴリズムの構成例(図4)]
 まず、図4を参照しながら、3パス方式に係る具体的なアルゴリズムの構成例について紹介する。図4は、3パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。ここでは、公開鍵pkの一部として2次多項式の組(f(x),…,f(x))を利用する場合について考える。但し、2次多項式f(x)は、下記の式(6)のように表現されるものとする。また、ベクトル(x,…,x)をxと表記し、2次多項式の組(f(x),…,f(x))を多変数多項式F(x)と表記することにする。
Figure JPOXMLDOC01-appb-M000006
 また、2次多項式の組(f(x),…,f(x))は、下記の式(7)のように表現することができる。また、A,…,Aは、n×n行列である。さらに、b,…,bはそれぞれn×1ベクトルである。
Figure JPOXMLDOC01-appb-M000007
 この表現を用いると、多変数多項式Fは、下記の式(8)及び式(9)のように表現することができる。この表現が成り立つことは、下記の式(10)から容易に確認することができる。
Figure JPOXMLDOC01-appb-M000008
 このようにF(x+y)をxに依存する第1の部分と、yに依存する第2の部分と、x及びyの両方に依存する第3の部分とに分けたとき、第3の部分に対応する項G(x,y)は、x及びyについて双線形になる。以下、項G(x,y)を双線形項と呼ぶ場合がある。この性質を利用すると、効率的なアルゴリズムを構築することが可能になる。
 例えば、ベクトルt∈K、e∈Kを用いて、多変数多項式F(x+r)のマスクに利用する多変数多項式F(x)をF(x)=G(x,t)+eと表現する。この場合、多変数多項式F(x+r)とF(x)との和は、下記の式(11)のように表現される。ここで、t=r+t、e=F(r)+eとおけば、多変数多項式F(x)=F(x+r)+F(x)は、ベクトルt∈K、e∈Kにより表現することができる。そのため、F(x)=G(x,t)+eに設定すれば、K上のベクトル及びK上のベクトルを用いてF及びFを表現できるようになり、通信に必要なデータサイズの少ない効率的なアルゴリズムを実現することが可能になる。
Figure JPOXMLDOC01-appb-M000009
 なお、F(或いはF)からrに関する情報が一切漏れることはない。例えば、e及びt(或いはe及びt)を与えられても、e及びt(或いはe及びt)を知らない限り、rの情報を一切知ることはできない。従って、零知識性が担保される。以下、上記の論理に基づいて構築された3パス方式のアルゴリズムについて説明する。ここで説明する3パス方式のアルゴリズムは、以下のような鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVにより構成される。
 (鍵生成アルゴリズムGen)
 鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多項式f(x,…,x),…,f(x,…,x)、及びベクトルs=(s,…,s)∈Kを生成する。次に、鍵生成アルゴリズムGenは、y=(y,…,y)←(f(s),…,f(s))を計算する。そして、鍵生成アルゴリズムGenは、(f(x,…,x),…,f(x,…,x),y)を公開鍵pkに設定し、sを秘密鍵に設定する。
 (証明者アルゴリズムP、検証者アルゴリズムV)
 以下、図4を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図4に示したフローチャートに沿って説明を進める。
 工程#1:
 図4に示すように、まず、証明者アルゴリズムPは、ランダムにベクトルr,t∈K及びe∈Kを生成する。次いで、証明者アルゴリズムPは、r←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、t←r-tを計算する。次いで、証明者アルゴリズムPは、e←F(r)-eを計算する。
 工程#1(続き):
 次いで、証明者アルゴリズムPは、c←H(r,G(t,r)+e)を計算する。次いで、証明者アルゴリズムPは、c←H(t,e)を計算する。次いで、証明者アルゴリズムPは、c←H(t,e)を計算する。工程#1で生成されたメッセージ(c,c,c)は、検証者アルゴリズムVに送られる。
 工程#2:
 メッセージ(c,c,c)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求Chに設定する。この要求Chは証明者アルゴリズムPに送られる。
 工程#3:
 要求Chを受け取った証明者アルゴリズムPは、受け取った要求Chに応じて検証者アルゴリズムVに送る返答Rspを生成する。Ch=0の場合、証明者アルゴリズムPは、返答Rsp=(r,t,e)を生成する。Ch=1の場合、証明者アルゴリズムPは、返答Rsp=(r,t,e)を生成する。Ch=2の場合、証明者アルゴリズムPは、返答Rsp=(r,t,e)を生成する。工程#3で生成された返答Rspは、検証者アルゴリズムVに送られる。
 工程#4:
 返答Rspを受け取った検証者アルゴリズムVは、受け取った返答Rspを利用して以下の検証処理を実行する。
 Ch=0の場合、検証者アルゴリズムVは、c=H(r-t,F(r)-e)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c=H(t,e)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
 Ch=1の場合、検証者アルゴリズムVは、c=H(r,G(t,r)+e)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c=H(t,e)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
 Ch=2の場合、検証者アルゴリズムVは、c=H(r,y-F(r)-G(t,r)-e)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c=H(t,e)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
 以上、3パス方式に係る効率的なアルゴリズムの構成例について説明した。
 [2-2:並列化アルゴリズムの構成例(図5)]
 次に、図5を参照しながら、図4に示した3パス方式のアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムGenの構成については説明を省略する。
 さて、上記の対話プロトコルを適用すれば、偽証が成功する確率を2/3以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(2/3)以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(2/3)となり、Nを十分に大きい数(例えば、N=140)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
 対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、1回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。さらに、直列的な方法と並列的な方法とを組み合わせたハイブリッド型の方法も考えられる。ここでは、図5を参照しながら、3パス方式に係る上記の対話プロトコルを並列的に実行するアルゴリズム(以下、並列化アルゴリズム)について説明する。
 工程#1:
 図5に示すように、まず、証明者アルゴリズムPは、i=1~Nについて以下の処理(1)~処理(6)を実行する。
 処理(1):証明者アルゴリズムPは、ランダムにベクトルr0i,t0i∈K及びe0i∈Kを生成する。
 処理(2):証明者アルゴリズムPは、r1i←s-r0iを計算する。この計算は、秘密鍵sをベクトルr0iによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、t1i←r0i+t0iを計算する。
 処理(3):証明者アルゴリズムPは、e1i←F(r0i)-e0iを計算する。
 処理(4):証明者アルゴリズムPは、c0i←H(r1i,G(r1i,t0i)+e0i)を計算する。
 処理(5):証明者アルゴリズムPは、c1i←H(t0i,e0i)を計算する。
 処理(6):証明者アルゴリズムPは、c2i←H(t1i,e1i)を計算する。
 工程#1(続き)
 i=1~Nについて上記の処理(1)~処理(6)を実行した後、証明者アルゴリズムPは、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する。工程#1で生成されたハッシュ値Cmtは、検証者アルゴリズムVに送られる。このように、メッセージ(c01,c11,c21,…,c0N,c1N,c2N)をハッシュ値に変換してから検証者アルゴリズムVに送ることで、通信量を削減することが可能になる。
 工程#2:
 ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求Chに設定する。要求Ch,…,Chは、証明者アルゴリズムPに送られる。
 工程#3:
 要求Ch,…,Chを受け取った証明者アルゴリズムPは、受け取った要求Ch,…,Chのそれぞれ応じて検証者アルゴリズムVに送る返答Rsp,…,Rspを生成する。Ch=0の場合、証明者アルゴリズムPは、Rsp=(r0i,t1i,e1i,c0i)を生成する。Ch=1の場合、証明者アルゴリズムPは、Rsp=(r1i,t0i,e0i,c2i)を生成する。Ch=2の場合、証明者アルゴリズムPは、Rsp=(r1i,t1i,e1i,c1i)を生成する。
 工程#3で生成された返答Rsp,…,Rspは、検証者アルゴリズムVに送られる。
 工程#4:
 返答Rsp,…,Rspを受け取った検証者アルゴリズムVは、受け取った返答Rsp,…,Rspを利用して以下の処理(1)~処理(3)をi=1~Nについて実行する。但し、検証者アルゴリズムVは、Ch=0の場合に処理(1)を実行し、Ch=1の場合に処理(2)を実行し、Ch=2の場合に処理(3)を実行する。
 処理(1):Ch=0の場合、検証者アルゴリズムVは、Rspから(r0i,t1i,e1i,c0i)を取り出す。次いで、検証者アルゴリズムVは、c1i=H(r0i-t1i,F(r0i)-e1i)を計算する。さらに、検証者アルゴリズムVは、c2i=H(t1i,e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,c2i)を保持する。
 処理(2):Ch=1の場合、検証者アルゴリズムVは、Rspから(r1i,t0i,e0i,c2i)を取り出す。次いで、検証者アルゴリズムVは、c0i=H(r1i,G(t0i,r1i)+e0i)を計算する。さらに、検証者アルゴリズムVは、c1i=H(t0i,e0i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,c2i)を保持する。
 処理(3):Ch=2の場合、検証者アルゴリズムVは、Rspから(r1i,t1i,e1i,c1i)を取り出す。次いで、検証者アルゴリズムVは、c0i=H(r1i,y-F(r1i)-G(t1i,r1i)-e1i)を計算する。さらに、検証者アルゴリズムVは、c2i=H(t1i,e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,c2i)を保持する。
 処理(1)~処理(3)をi=1~Nについて実行した後、検証者アルゴリズムVは、Cmt=H(c01,c11,c21,…,c0N,c1N,c2N)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗した場合に認証失敗を示す値0を出力する。
 以上、3パス方式に係る効率的な並列化アルゴリズムの構成例について説明した。
 <3:5パスの公開鍵認証方式に係るアルゴリズムの構成>
 次に、5パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、5パスの公開鍵認証方式のことを「5パス方式」と呼ぶ場合がある。
 3パス方式の場合には対話プロトコル1回当たりの偽証確率が2/3であったが、5パス方式の場合には対話プロトコル1回当たりの偽証確率が1/2+1/qとなる。但し、qは、利用する環の位数である。従って、環の位数が十分に大きい場合、5パス方式の方が1回当たりの偽証確率を低減することが可能になり、少ない対話プロトコルの実行回数で、偽証確率を十分に小さくすることができる。
 例えば、偽証確率を1/2以下にしたい場合、3パス方式においては、n/(log3-1)=1.701n回以上、対話プロトコルを実行する必要がある。一方、偽証確率を1/2以下にしたい場合、5パス方式においては、n/(1-log(1+1/q))回以上、対話プロトコルを実行する必要がある。従って、q=24にすれば、同じセキュリティレベルを実現するのに必要な通信量は、3パス方式に比べ、5パス方式の方が少なくなるのである。
 [3-1:具体的なアルゴリズムの構成例(図6)]
 まず、図6を参照しながら、5パス方式に係る具体的なアルゴリズムの構成例について紹介する。図6は、5パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。ここでは、公開鍵pkの一部として2次多項式の組(f(x),…,f(x))を利用する場合について考える。但し、2次多項式f(x)は、上記の式(6)のように表現されるものとする。また、ベクトル(x,…,x)をxと表記し、2次多項式の組(f(x),…,f(x))を多変数多項式F(x)と表記することにする。
 3パス方式に係るアルゴリズムと同様、2つのベクトルt∈K、e∈Kを用いて、多変数多項式F(x+r)をマスクするために用いた多変数多項式F(x)をF(x)=G(x、t)+eのように表現する。この表現を用いると、多変数多項式F(x+r)について、下記の式(12)で表現される関係が得られる。
Figure JPOXMLDOC01-appb-M000010
 そのため、t=Ch・r+t、e=Ch・F(r)+eとすれば、マスク後の多変数多項式F(x)=Ch・F(x+r)+F(x)も、2つのベクトルt∈K、e∈Kにより表現することができる。これらの理由から、F(x)=G(x,t)+eと設定すれば、K上のベクトル及びK上のベクトルを用いてF及びFを表現できるようになり、通信に必要なデータサイズが少ない効率的なアルゴリズムを実現することが可能になる。
 なお、F(或いはF)からrに関する情報が一切漏れることはない。例えば、e及びt(或いはe及びt)を与えられても、e及びt(或いはe及びt)を知らない限り、rの情報を一切知ることはできない。従って、零知識性は担保される。以下、上記の論理に基づいて構築された5パス方式のアルゴリズムについて説明する。ここで説明する5パス方式のアルゴリズムは、以下のような鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVにより構成される。
 (鍵生成アルゴリズムGen)
 鍵生成アルゴリズムGenは、環K上で定義される多変数多項式f(x,…,x),…,f(x,…,x)、及びベクトルs=(s,…,s)∈Kを生成する。次に、鍵生成アルゴリズムGenは、y=(y,…,y)←(f(s),…,f(s))を計算する。そして、鍵生成アルゴリズムGenは、(f,…,f,y)を公開鍵pkに設定し、sを秘密鍵に設定する。なお、以下では、ベクトル(x,…,x)をxと表記し、多変数多項式の組(f(x),…,f(x))をF(x)と表記する。
 (証明者アルゴリズムP、検証者アルゴリズムV)
 以下、図6を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図6に示したフローチャートに沿って説明を進める。
 工程#1:
 図6に示すように、まず、証明者アルゴリズムPは、ランダムにベクトルr∈K、t∈K、e∈Kを生成する。次いで、証明者アルゴリズムPは、r←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。次いで、証明者アルゴリズムPは、ベクトルr,t,eのハッシュ値cを生成する。つまり、証明者アルゴリズムPは、c←H(r,t,e)を計算する。次いで、証明者アルゴリズムPは、G(t,r)+e及びrのハッシュ値cを生成する。つまり、証明者アルゴリズムPは、c←H(r,G(t,r)+e)を計算する。工程#1で生成されたメッセージ(c,c)は、検証者アルゴリズムVに送られる。
 工程#2:
 メッセージ(c,c)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数Chを選択し、選択した数Chを証明者アルゴリズムPに送る。
 工程#3:
 数Chを受け取った証明者アルゴリズムPは、t←Ch・r-tを計算する。さらに、証明者アルゴリズムPは、e←Ch・F(r)-eを計算する。そして、証明者アルゴリズムPは、t及びeを検証者アルゴリズムVに送る。
 工程#4:
 t及びeを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求Chに設定する。この要求Chは証明者アルゴリズムPに送られる。
 工程#5:
 要求Chを受け取った証明者アルゴリズムPは、受け取った要求Chに応じて検証者アルゴリズムVに送り返す返答Rspを生成する。Ch=0の場合、証明者アルゴリズムPは、返答Rsp=rを生成する。Ch=1の場合、証明者アルゴリズムPは、返答Rsp=rを生成する。工程#5で生成された返答Rspは、検証者アルゴリズムVに送られる。
 工程#6:
 返答Rspを受け取った検証者アルゴリズムVは、受け取った返答Rspを利用して以下の検証処理を実行する。
 Ch=0の場合、検証者アルゴリズムVは、r←Rspを実行する。そして、検証者アルゴリズムVは、c=H(r,Ch・r-t,Ch・F(r)-e)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
 Ch=1の場合、検証者アルゴリズムVは、r←Rspを実行する。そして、検証者アルゴリズムVは、c=H(r,Ch・(y-F(r))-G(t,r)-e)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
 以上、5パス方式に係る効率的なアルゴリズムの構成例について説明した。
 [3-2:並列化アルゴリズムの構成例(図7)]
 次に、図7を参照しながら、図6に示した5パス方式のアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムGenの構成については説明を省略する。
 先に述べた通り、5パス方式に係る対話プロトコルを適用すれば、偽証が成功する確率を(1/2+1/q)以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(1/2+1/q)以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(1/2+1/q)となり、Nを十分に大きい数(例えば、N=80)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
 対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、1回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。さらに、直列的な方法と並列的な方法とを組み合わせたハイブリッド型の方法も考えられる。ここでは、5パス方式に係る上記の対話プロトコルを並列的に実行するアルゴリズム(以下、並列化アルゴリズム)について説明する。
 工程#1:
 図7に示すように、まず、証明者アルゴリズムPは、i=1~Nについて処理(1)~処理(4)を実行する。
 処理(1):証明者アルゴリズムPは、ランダムにベクトルr0i,t0i∈K及びe0i∈Kを生成する。
 処理(2):証明者アルゴリズムPは、r1i←s-r0iを計算する。この計算は、秘密鍵sをベクトルr0iによりマスクする操作に相当する。
 処理(3):証明者アルゴリズムPは、c0i←H(r0i,t0i,e0i)を計算する。
 処理(4):証明者アルゴリズムPは、c1i←H(r1i,G(t0i,r1i)+e0i)を計算する。
 i=1~Nについて処理(1)~処理(4)を実行した後、証明者アルゴリズムPは、ハッシュ値Cmt←H(c01,c11,…,c0N,c1N)を実行する。そして、工程#1で生成されたハッシュ値Cmtは、検証者アルゴリズムVに送られる。
 工程#2:
 ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、q通り存在する環Kの元からランダムに1つの数ChAiを選択し、選択した数ChAi(i=1~N)を証明者アルゴリズムPに送る。
 工程#3:
 数ChAi(i=1~N)を受け取った証明者アルゴリズムPは、i=1~Nのそれぞれについて、t1i←ChAi・r0i-t0iを計算する。さらに、証明者アルゴリズムPは、i=1~Nのそれぞれについて、e1i←ChAi・F(r0i)-e0iを計算する。次いで、証明者アルゴリズムPは、ハッシュ値d←H(t11,e11,…,t1N,e1N)を計算する。そして、証明者アルゴリズムPは、ハッシュ値dを検証者アルゴリズムVに送る。
 工程#4:
 ハッシュ値dを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求ChBiに設定する。要求ChBi(i=1~N)は証明者アルゴリズムPに送られる。
 工程#5:
 要求ChBi(i=1~N)を受け取った証明者アルゴリズムPは、i=1~Nについて、受け取った要求ChBiに応じて検証者アルゴリズムVに送り返す返答Rspを生成する。ChBi=0の場合、証明者アルゴリズムPは、返答Rsp=(r0i,t0i,e0i,c1i)を生成する。ChBi=1の場合、証明者アルゴリズムPは、返答Rsp=(r1i,t1i,e1i,c0i)を生成する。工程#5で生成された返答Rsp(i=1~N)は、検証者アルゴリズムVに送られる。
 工程#6:
 返答Rsp(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答Rsp(i=1~N)を利用して以下の処理(1)及び処理(2)を実行する。
 処理(1):ChBi=0の場合、検証者アルゴリズムVは、(r0i,t0i,e0i,c1i)←Rspを実行する。そして、検証者アルゴリズムVは、c0i=H(r0i,t0i,e0i)を計算する。さらに、検証者アルゴリズムVは、t1i←ChAi・r0i+t0i、及びe1i←ChAi・F(r0i)-e0iを計算する。そして、検証者アルゴリズムVは、(c0i,c1i,t1i,e1i)を保持する。
 処理(2):ChBi=1の場合、検証者アルゴリズムVは、(r1i,t1i,e1i,c0i)←Rspを実行する。そして、検証者アルゴリズムVは、c1i=H(r1i,ChAi・(y-F(r1i))-G(t1i,r1i)-e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,t1i,e1i)を保持する。
 i=1~Nについて処理(1)及び処理(2)を実行した後、検証者アルゴリズムVは、Cmt=H(c01,c11,…,c0N,c1N)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、d=H(t11,e11,…,t1N,e1N)の等号が成り立つか否かを検証する。そして、検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
 以上、5パス方式に係る効率的な並列化アルゴリズムの構成例について説明した。
 <4:電子署名方式への変形>
 次に、上記の公開鍵認証方式を電子署名方式へと変形する方法を紹介する。
 公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させると、証明者のみが検証者を納得させられるという点において、電子署名方式のモデルと近似していることが容易に理解されよう。こうした考えに基づき、上述した公開鍵認証方式を電子署名方式へと変形する方法について説明する。
 [4-1:3パスの公開鍵認証方式から電子署名方式への変形(図8)]
 まず、3パスの公開鍵認証方式から電子署名方式への変形について説明する。
 図8に示すように、3パス方式に係る効率的なアルゴリズム(例えば、図5を参照)は、3回の対話及び4つの工程#1~工程#4で表現される。
 工程#1は、i=1~Nについて、a=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)を生成する処理(1)と、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する処理(2)とで構成される。工程#1で証明者アルゴリズムPにより生成されたCmtは、検証者アルゴリズムVへと送られる。
 工程#2は、Ch,…,Chを選択する処理で構成される。工程#2で検証者アルゴリズムVにより選択されたCh,…,Chは、証明者アルゴリズムPへと送られる。
 工程#3は、Ch,…,Ch及びa,…,aを用いてRsp,…,Rspを生成する処理で構成される。この処理をRsp←Select(Ch,a)と表現する。工程#3で証明者アルゴリズムPにより生成されたRsp,…,Rspは、検証者アルゴリズムVへと送られる。
 工程#4は、Ch,…,Ch及びRsp,…,Rspを用いてc01,c11,c21,…,c0N,c1N,c2Nを再生する処理(1)と、再生したc01,c11,c21,…,c0N,c1N,c2Nを用いてCmt=H(c01,c11,c21,…,c0N,c1N,c2N)を検証する処理(2)とで構成される。
 上記の工程#1~工程#4で表現される公開鍵認証方式のアルゴリズムは、図8に示すような署名生成アルゴリズムSig及び署名検証アルゴリズムVerに変形される。
 (署名生成アルゴリズムSig)
 まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)~処理(5)で構成される。
 処理(1):署名生成アルゴリズムSigは、a=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)を生成する。
 処理(2):署名生成アルゴリズムSigは、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する。
 処理(3):署名生成アルゴリズムSigは、(Ch,…,Ch)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
 処理(4):署名生成アルゴリズムSigは、Rsp←Select(Chi,)を計算する。
 処理(5):署名生成アルゴリズムSigは、(Cmt,Rsp,…,Rsp)を署名に設定する。
 (署名検証アルゴリズムVer)
 次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)~処理(3)で構成される。
 処理(1):署名検証アルゴリズムVerは、(Ch,…,Ch)←H(M,Cmt)を計算する。
 処理(2):署名検証アルゴリズムVerは、Ch,…,Ch及びRsp,…,Rspを用いてc01,c11,c21,…,c0N,c1N,c2Nを生成する。
 処理(3):署名検証アルゴリズムVerは、再生したc01,c11,c21,…,c0N,c1N,c2Nを用いてCmt=H(c01,c11,c21,…,c0N,c1N,c2N)を検証する。
 以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムへと変形することが可能になる。
 [4-2:5パスの公開鍵認証方式から電子署名方式への変形(図9)]
 次に、5パスの公開鍵認証方式から電子署名方式への変形について説明する。
 図9に示すように、5パス方式に係る効率的なアルゴリズム(例えば、図7を参照)は、5回の対話及び6つの工程#1~工程#6で表現される。
 工程#1は、i=1~Nについて、a=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i)を生成する処理(1)と、Cmt←H(c01,c11,…,c0N,c1N)を計算する処理(2)とで構成される。工程#1で証明者アルゴリズムPにより生成されたCmtは、検証者アルゴリズムVへと送られる。
 工程#2は、ChA1,…,ChANを選択する処理で構成される。工程#2で検証者アルゴリズムVにより選択されたChA1,…,ChANは、証明者アルゴリズムPへと送られる。
 工程#3は、i=1~Nについて、b=(t1i,e1i)を生成する処理、及びd=H(t11,e11,…,t1N,e1N)を生成する処理で構成される。工程#3で証明者アルゴリズムPにより生成されたdは、検証者アルゴリズムVへと送られる。
 工程#4は、ChB1,…,ChBNを選択する処理で構成される。工程#4で検証者アルゴリズムVにより選択されたChB1,…,ChBNは、証明者アルゴリズムPへと送られる。
 工程#5は、ChB1,…,ChBN,a,…,a,b,…,bを用いてRsp,…,Rspを生成する処理で構成される。この処理をRsp←Select(ChBi,a,b)と表現する。工程#5で証明者アルゴリズムPにより生成されたRsp,…,Rspは、検証者アルゴリズムVへと送られる。
 工程#6は、ChA1,…,ChAN,ChB1,…,ChBN,Rsp,…,Rspを用いてc01,c11,…,c0N,c1N,t11,e11,…,t1N,e1Nを再生する処理と、再生したc01,c11,…,c0N,c1Nを用いてCmt=H(c01,c11,…,c0N,c1N)を検証する処理と、d=H(t11,e11,…,t1N,e1N)を検証する処理とで構成される。
 上記の工程#1~工程#6で表現される公開鍵認証方式のアルゴリズムは、図9に示すような署名生成アルゴリズムSig及び署名検証アルゴリズムVerに変形される。
 (署名生成アルゴリズムSig)
 まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)~処理(7)で構成される。
 処理(1):署名生成アルゴリズムSigは、a=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i)を生成する。
 処理(2):署名生成アルゴリズムSigは、Cmt←H(c01,c11,…,c0N,c1N)を計算する。
 処理(3):署名生成アルゴリズムSigは、(ChA1,…,ChAN)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
 処理(4):署名生成アルゴリズムSigは、i=1~Nについて、b=(t1i,e1i)を生成する。さらに、署名生成アルゴリズムSigは、d=H(t11,e11,…,t1N,e1N)を算出する。
 処理(5):署名生成アルゴリズムSigは、(ChB1,…,ChBN)←H(M,Cmt,ChA1,…,ChAN,d)を計算する。なお、(ChB1,…,ChBN)←H(ChA1,…,ChAN,d)と変形してもよい。
 処理(6):署名生成アルゴリズムSigは、Rsp←Select(ChBi,a,b)を計算する。
 処理(7):署名生成アルゴリズムSigは、(Cmt,d,Rsp,…,Rsp)を電子署名に設定する。
 (署名検証アルゴリズムVer)
 次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)~処理(4)で構成される。
 処理(1):署名検証アルゴリズムVerは、(ChA1,…,ChAN)←H(M,Cmt)を計算する。
 処理(2):署名検証アルゴリズムVerは、(ChB1,…,ChBN)←H(M,Cmt,ChA1,…,ChAN,d)を計算する。なお、署名検証アルゴリズムVerが実行する処理(5)において、(ChB1,…,ChBN)←H(ChA1,…,ChAN,d)と変形した場合、署名検証アルゴリズムVerは、(ChB1,…,ChBN)←H(ChA1,…,ChAN,d)を計算する。
 処理(3):署名検証アルゴリズムVerは、ChA1,…,ChAN,ChB1,…,ChBN,Rsp,…,Rspを用いてt11,e11,…,t1N,e1N,c01,c11,…,c0N,c1Nを生成する。
 処理(4):署名検証アルゴリズムVerは、再生したc01,c11,…,c0N,c1Nを用いてCmt=H(c01,c11,…,c0N,c1N)及びd=H(t11,e11,…,t1N,e1N,)を検証する。
 以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムへと変形することが可能になる。
 <5:ハードウェア構成例(図10)>
 上記の各アルゴリズムは、例えば、図10に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図10に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、接触式又は非接触式のICチップ、接触式又は非接触式のICカード、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、Personal Handy-phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
 図10に示すように、このハードウェアは、主に、CPU902と、ROM904と、RAM906と、ホストバス908と、ブリッジ910と、を有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926と、を有する。但し、上記のCPUは、Central Processing Unitの略である。また、上記のROMは、Read Only Memoryの略である。そして、上記のRAMは、Random Access Memoryの略である。
 CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
 これらの構成要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ(以下、リモコン)が用いられることもある。
 出力部918としては、例えば、CRT、LCD、PDP、又はELD等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。但し、上記のCRTは、Cathode Ray Tubeの略である。また、上記のLCDは、Liquid Crystal Displayの略である。そして、上記のPDPは、Plasma DisplayPanelの略である。さらに、上記のELDは、Electro-Luminescence Displayの略である。
 記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、ハードディスクドライブ(HDD)等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。但し、上記のHDDは、Hard Disk Driveの略である。
 ドライブ922は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928は、例えば、DVDメディア、Blu-rayメディア、HD DVDメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体928は、例えば、非接触型ICチップを搭載したICカード、又は電子機器等であってもよい。但し、上記のICは、Integrated Circuitの略である。
 接続ポート924は、例えば、USBポート、IEEE1394ポート、SCSI、RS-232Cポート、又は光オーディオ端子等のような外部接続機器930を接続するためのポートである。外部接続機器930は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はICレコーダ等である。但し、上記のUSBは、Universal Serial Busの略である。また、上記のSCSIは、Small Computer System Interfaceの略である。
 通信部926は、ネットワーク932に接続するための通信デバイスであり、例えば、有線又は無線LAN、Bluetooth(登録商標)、又はWUSB用の通信カード、光通信用のルータ、ADSL用のルータ、又は接触又は非接触通信用のデバイス等である。また、通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークにより構成され、例えば、インターネット、家庭内LAN、赤外線通信、可視光通信、放送、又は衛星通信等である。但し、上記のLANは、Local Area Networkの略である。また、上記のWUSBは、Wireless USBの略である。そして、上記のADSLは、Asymmetric Digital Subscriber Lineの略である。
 <6:多変数多項式を計算する回路の構成>
 ここで、多次多変数多項式を計算する回路の構成について説明する。
 [6-1:概要(図11~図15)]
 これまで紹介してきた公開鍵認証方式及び電子署名方式を含め、多次多変数多項式の求解問題に安全性の根拠を置く公開鍵認証方式及び電子署名方式を機器に実装する場合、多次多変数多項式を計算する回路の設計が必要になる。特に、図4~図9に示した方式を実装する場合、例えば、入力x,x∈{0,1}に対し、二次多変数多項式F(x)=(f(x),…,f(x))、F(x)=(f(x),…,f(x))を計算する回路の設計が必要になる。
 上記のような回路を設計する場合、例えば、処理速度、回路規模、電力消費などの評価項目に注意して回路が設計される。ここで言う処理速度は、例えば、最大動作周波数及び処理サイクル数に基づいて評価される。また、最大動作周波数は、回路内で信号の伝搬が最も遅くなる経路(クリティカルパス)の長さにより決定する。また、回路規模は、設計自由度や製造コストなどの観点から小さい程よいとされる。また、電力消費は、実装機器のバッテリ持続時間や熱設計の自由度など、様々な観点から重要視される。
 これら全ての評価項目において高い評価が得られるように回路を設計することが望ましいが、ここでは処理速度及び回路規模の評価項目に注目して良好な特性を有する演算回路の構成について紹介する。
 (1本の二次多変数多項式fを計算する回路について)
 例えば、二次多変数多項式f(x)は、下記の式(13)のように表現される。但し、x=(x,…,x)である。つまり、二次多変数多項式f(x)の計算は、aij及びbの項を全て足し合わせる演算に他ならない。従って、演算回路の動作サイクルに合わせて各項の計算値(以下、中間値)を足し込んでいく回路を設計すれば、二次多変数多項式f(x)を計算する回路を構築することができる。
Figure JPOXMLDOC01-appb-M000011
 例えば、上記の式(13)で表現される1つの二次多変数多項式f(x)を計算する回路は、図11に示すように、中間値生成回路11、XOR回路12、及び中間値保持回路13により構成される。中間値生成回路11は、aij及びbの項を計算して中間値を生成する回路である。また、XOR回路12は、中間値生成回路11が生成した各項の中間値を足し込むための回路である。さらに、中間値保持回路13は、XOR回路12を用いて足し込まれた結果を一時的に保持する回路である。
 このような回路構成にすることで、中間値生成回路11により生成された中間値が都度足し込まれ、最終的に二次多変数多項式f(x)の演算結果が得られる。また、全ての項の演算に関して足し込む回路が共有できるため、回路規模が小さく抑えられる。
 また、中間値生成回路11は、例えば、図12に示すように、変数生成回路21と、AND回路22とを用いて構築される。変数生成回路12は、サイクル毎に入力に応じた各項の変数x又はxを生成する。また、AND回路22は、変数生成回路12により生成された各項の変数x又はxの値と、当該各項の係数aij又はbの値との間で1ビットの論理積演算を実行する。
 このような回路構成にすることで、全ての項の演算に関してAND回路22が共有できるようになり、回路規模を小さく抑えることが可能になる。なお、AND回路22に入力される係数の値は、例えば、図13に示すような形式で記録メモリ(ROMやRAMなど)に予め格納されているものとする。そのため、所望のタイミングで所望のアドレスにアクセスすることで、所望の係数の値を得ることができる。
 (複数本の二次多変数多項式f(i=1~m)を計算する回路について)
 ところで、二次多変数多項式F(x)=(f(x),…,f(x))の演算を実行する場合、あるx又はxに関する項の演算が、f(x),…,f(x)のそれぞれについて1つ含まれていることに気づくであろう。そのため、処理サイクル数を低減させる観点からは、一度にm本の二次多変数多項式f(x),…,f(x)の係数a1ij,…,amij又はb1i,…、bmiを生成しておき、ある変数x又はxに関する項の演算を並列に実行できるようにする方が好ましい。
 例えば、図14に示すように、演算回路は、1つの変数生成回路31と、複数のAND回路32、35と、複数の乗算器33、36と、複数の中間値保持回路34、37とにより構築することができる。この場合、変数生成回路31により1度生成された変数x又はxは、二次多変数多項式f(x),…,f(x)の演算に並列で利用される。なお、係数a1ij,…,amij又はb1i,…、bmiは、図15に示すような形式で記録メモリ(ROMやRAMなど)に予め格納されているものとする。そのため、所望のタイミングで所望のアドレスにアクセスすることで、f(x),…,f(x)に関する所望の係数の値を一度に得ることができる。
 このような構成にすることで、m本の二次多変数多項式f(x),…,f(x)を並列に計算することが可能になり、処理サイクル数が低減される。以下では、1本の二次多変数多項式fに注目して説明を進めるが、例えば、図14に示すような形で回路を設計することにより、m本の二次多変数多項式f(x),…,f(x)を並列に計算する回路を構築することが可能になる。
 (演算回路の構成例について)
 上記のような演算回路の構成としては、多ビット入力のセレクタを利用した回路構成やシフトレジスタを利用した回路構成などを適用することが可能である。多ビット入力のセレクタを利用した回路構成については、例えば、参考文献1(David Arditti, Come Berbain, Olivier Billet, Henri Gilbert,”Compact FPGA Implementations of QUAD”, ASIACCS’07, March 20-22, 2007, Singapore.)に記載がある。
 また、シフトレジスタを利用した回路構成については、例えば、参考文献2(Andrey Bogdanov, Thomas Eisenbarth, Andy Rupp, and Christopher Wolf,”Time-Area Optimized Public-Key Engines: MQ-Cryptosystems as Replacement for Elliptic Curves?”, CHES 2008, LNCS 5154, pp.45-61, 2008.)に記載がある。但し、参考文献2では、シフトレジスタにフィードバックループを導入した回路構成が紹介されている。
 なお、参考文献1及び2に記載の回路構成は、1つの入力x∈{0,1}について二次多変数多項式f(x)を計算するものである。そのため、2つの入力x,x∈{0,1}について二次多変数多項式f(x),f(x)を計算するには、2つの演算回路を並列に動作させるか、或いは、1つの演算回路を2回動作させる必要がある。また、以下で詳細に述べるが、参考文献1及び2に記載の回路構成は、処理速度又は回路規模の観点からも改善の余地がある。そこで、本件発明者は、複数の入力について、より効率的に二次多変数多項式を計算する演算回路の構成(後述する実施例#1及び#2を参照)を考案した。以下、これらの回路構成について詳細に説明する。
 [6-2:多ビット入力のセレクタを利用する構成]
 まず、多ビット入力のセレクタを利用した演算回路の構成について述べる。
 (6-2-1:回路構成(図16~図18))
 多ビット入力のセレクタを利用した演算回路は、二次多変数多項式f(x)を構成する各項の変数x又はxを生成する第1の回路部分(図16及び図17を参照)と、各項の変数に係数aij又はbを乗算した中間値を足し込んで演算結果zを出力する第2の回路部分(図18を参照)とで構成される。
 図16に示すように、第1の回路部分は、入力x=(x,…,x)を保持しているレジスタ101と、nビットの入力に対して1ビットを出力する2つのセレクタ102、103と、AND回路104とにより構成される。また、レジスタ101は、図17に示すように、レジスタR,…,R及びセレクタS,…,Sにより構成される。レジスタR,…,Rには、最初のサイクルで、それぞれセレクタS,…,Sを介してx,…,xが格納される。そして、任意のタイミングでレジスタR,…,Rに格納されたx,…,xがy,…,yとして出力される。
 レジスタ101の出力値y,…,yは、図16に示すように、セレクタ102、103に入力される。セレクタ102は、入力された値y,…,yから、それぞれ1つの値を選択してAND回路104に入力する。また、セレクタ103は、入力された値y,…,y,及び定数「1」から、それぞれ1つの値を選択してAND回路104に入力する。AND回路104は、入力された2つの値に論理積演算を施してx又はxを出力する。AND回路104の出力値は、図18に示すように、第2の回路部分を構成するAND回路105に入力される。なお、第2の回路部分は、図18に示すように、AND回路105の他、XOR回路106及びレジスタ107を含む。また、図18に示した配線の幅は、全て1ビットである。
 上記のAND回路105には、AND回路104の出力値と共に係数aij又はbが入力される。そして、AND回路105の出力値(中間値)は、XOR回路106に入力される。このXOR回路106には、中間値と共にレジスタ107の格納値が入力される。XOR回路106は、入力された2つの値に対して排他的論理和演算を施し、その演算結果(中間値)をレジスタ107に入力する。二次多変数多項式f(x)を構成する全ての項について中間値の足し込みが完了した場合、レジスタ107に格納された値が演算結果zとして出力される。
 以上、多ビット入力のセレクタを利用した演算回路の回路構成について説明した。
 (6-2-2:動作(図19))
 次に、図19を参照しながら、演算回路の動作について説明する。なお、図中において配線を鎖線で示した部分は、該当するサイクルにおいて実質的に信号が流れないように制御されていることを表している。一方、図中において配線を実線で示した部分は、該当するサイクルにおいて信号が流れるように制御されていることを表している。このような信号経路の制御は、セレクタS1,…,Snを制御することで実現される。
 図19に示すように、最初のサイクル(P1)では、レジスタ101を構成するレジスタR,…,Rに入力x∈{0,1}が格納される。以降のサイクル(P2)では、レジスタR,…,Rの格納値が保持された状態で、レジスタR,…,Rの格納値x,…,xがy,…,yとして出力される。上述した通り、y,…,y,及び定数「1」から値を選択する処理は、nビット入力のセレクタ102、103により実行される。また、二次多変数多項式f(x)に含まれる一次の項を計算する際には、セレクタ102、103の一方から「1」が出力されるようにする。
 以上、多ビット入力のセレクタを利用した演算回路の動作について説明した。
 以上説明したように、多ビット入力のセレクタを利用することにより、二次多変数多項式f(x)の演算回路を構築することができる。しかし、多ビット入力のセレクタを利用しているため、クリティカルパスが長くなり、最大動作周波数が低下してしまう。また、多ビット入力のセレクタを実装すると、回路規模が増大してしまう。さらに、多ビット入力のセレクタを利用した演算回路を並列に実装することで、複数の入力について二次多変数多項式f(x)を計算する演算回路を構築する場合、AND回路及びXOR回路を複数組用意する必要が生じる。これらの点については改善の余地がある。
 [6-3:シフトレジスタを利用する構成#1]
 次に、シフトレジスタを利用した演算回路の構成について述べる。シフトレジスタを利用した演算回路の場合、多ビット入力のセレクタを含まず、シフトレジスタの出力をそのまま利用して中間値を生成できるため、最大動作周波数の低下や回路規模の増大を抑制することができる。
 (6-3-1:回路構成(図20~図22))
 シフトレジスタを利用した演算回路は、二次多変数多項式f(x)を構成する各項の変数x又はxを生成する第1の回路部分(図20及び図21を参照)と、各項の変数に係数aij又はbを乗算した中間値を足し込んで演算結果zを出力する第2の回路部分(図22を参照)とで構成される。
 第1の回路部分は、図20に示すように、シフトレジスタ201と、AND回路202とにより構成される。また、シフトレジスタ201は、図21に示すように、セレクタS,…,Sn+1及びレジスタR,…,Rn+1により構成される。なお、セレクタS及びSn+1は、「3ビット入力:1ビット出力」のレジスタである。また、セレクタS,…,Sは、「2ビット入力:1ビット出力」のレジスタである。また、配線の幅は全て1ビットである。
 また、第2の回路部分は、図22に示すように、AND回路203と、XOR回路204と、レジスタ205とにより構成される。AND回路203には、第1の回路部分を構成するAND回路202の出力値と、係数aij又はbとが入力される。また、AND回路203の出力値は、XOR回路204に入力される。また、XOR回路204には、AND回路203の出力値と共に、レジスタ205に格納された格納値が入力される。また、レジスタ205の格納値は、XOR回路204の出力値により更新される。そして、入力xの全ての組み合わせについて足し込み処理が完了した場合に、レジスタ205の格納値が演算結果zとして出力される。
 以上、シフトレジスタを利用した演算回路の回路構成について説明した。
 (6-3-2:動作(図23~図26))
 次に、図23~図26を参照しながら、演算回路の動作について説明する。なお、図中において配線を鎖線で示した部分は、該当するサイクルにおいて実質的に信号が流れないように制御されていることを表している。一方、図中において配線を実線で示した部分は、該当するサイクルにおいて信号が流れるように制御されていることを表している。このような信号経路の制御は、セレクタS,…,Sn+1を制御することで実現される。
 図23に示すように、最初のサイクル(P1)で、シフトレジスタ201を構成するレジスタR,…,Rに入力x∈{0,1}が格納される。このとき、レジスタRn+1には、値「1」が格納される。ここで格納された値「1」は、二次多変数多項式f(x)に含まれる一次の項を計算するために利用される。次のサイクル(P2)では、レジスタRの格納値が維持されつつ、その格納値が出力値yとしてシフトレジスタ201から出力される。また、レジスタRの格納値が出力値yとしてシフトレジスタ201から出力される。
 さらに、レジスタR,…,Rn+1において格納値のローテーションが実施される。具体的には、レジスタRに格納されていた1ビットの値xがレジスタRn+1に移動し、レジスタR,…,Rn+1に格納されていた1ビットの値x,…,x,1がレジスタR,…,Rに移動する。その結果、レジスタR,…,Rn+1には、それぞれ、1ビットの値x,x,…,x,1,xが格納された状態になる。なお、シフトレジスタ201から出力された2つの値y,yは、AND回路202に入力され、AND回路203、XOR回路204を経てレジスタ205に格納される(図22を参照)。
 次のサイクル(P3)では、図24に示すように、レジスタRの格納値が維持されつつ、その格納値が出力値yとしてシフトレジスタ201から出力される。また、レジスタRの格納値が出力値yとしてシフトレジスタ201から出力される。さらに、レジスタR,…,Rn+1において格納値のローテーションが実施される。同様にして、以降のサイクル(P4)では、y,yの出力及び格納値のローテーションが繰り返し実施される。
 但し、図25に示すように、レジスタR,…,Rn+1に、それぞれ、1ビットの値x,x,…,x,1が格納された状態になった段階(P5)で、レジスタR,…,Rn+1において格納値のローテーションが実施される(P6)。その結果、レジスタR,…,Rn+1には、それぞれ、1ビットの値x,x,…,x,1,xが格納された状態になる。
 以降のサイクルでは、再びレジスタR1の格納値が維持されつつ、その格納値が出力値yとしてシフトレジスタ201から出力される。また、レジスタRの格納値が出力値yとしてシフトレジスタ201から出力される。さらに、レジスタR,…,Rn+1において格納値のローテーションが実施される。このように、シフトレジスタ201は、レジスタR,…,Rn+1における格納値のローテーションと、レジスタR,…,Rn+1における格納値のローテーションとを組み合わせ、出力される2つの値y,yの組み合わせを制御する。
 入力xが4ビットの場合(n=4の場合)について、各サイクルにおける出力値y,y、及びレジスタR,…,Rの格納値を図26に纏めた。図26を参照しながら、演算回路の動作について具体的に説明する。
 まず、最初のサイクル(サイクル数1)において、レジスタR,…,Rに入力x,…,x,1が格納される。次いで、レジスタR,Rから格納値x,xが出力値y,yとして出力される。これら出力値y,yは、AND回路202に入力される。次いで、AND回路202により論理和y=xが算出される。そして、論理和yがAND回路203に入力される。次いで、AND回路203により係数a12との間で論理積が計算され、レジスタ205に格納される。
 次のサイクル(サイクル数2)では、レジスタR,…,Rにおいて格納値のローテーションが実施され、それぞれ格納値がx,x,1,xに更新される。そのため、シフトレジスタ201の出力値y,yは、それぞれx,xとなる。同様に、サイクル数3及び4において、レジスタR,…,Rにおける格納値のローテーションが実施され、サイクル毎にシフトレジスタ201から値y,yが出力される。
 次のサイクル(サイクル数5)では、レジスタR,…,Rの格納値がそれぞれx,…,x,1となっており、そのままレジスタR,Rから格納値を出力すると、既に出力した値x,xが出力されてしまう。そこで、AND回路203において本来係数aij,bが入力されるところに「0」を入力することや、レジスタ205の格納値を更新させないような機能を追加するなどの工夫を行い、レジスタ205の格納値を保持する。その際、レジスタR,…,Rにおいてローテーションを実施する。ローテーションを実施すると、レジスタR,…,Rの格納値は、サイクル数5+1の欄に記載した通り、それぞれx,x,x,1,xという順序になる。そこで、シフトレジスタ201は、レジスタR,Rから格納値を出力する。
 次いで、サイクル数5+1~5+4に記載した通り、シフトレジスタ201は、レジスタR,…,Rにおいて格納値のローテーションを実施しつつ、レジスタR,Rから格納値を出力する。但し、サイクル数5+4のときは、レジスタ205の格納値は更新しない。次いで、サイクル数5の場合と同様、レジスタ205の格納値は更新せず、レジスタR,…,Rの格納値を整列させるためにレジスタR,…,Rの格納値をローテーションする。
 以降、シフトレジスタ201は、レジスタR,Rからの出力を伴うレジスタR,…,Rのローテーションと、レジスタR,Rからの出力を伴わないレジスタR,…,Rのローテーションと,レジスタR,Rからの出力を伴わないレジスタR,…,Rのローテーションとを実施して格納値の全組み合わせについて値を出力する。シフトレジスタ201から出力された値y,yは、AND回路202、203、XOR回路204、及びレジスタ205により都度足し込まれる。そして、値x,…,x,1から選択可能な全ての組み合わせについて足し込みが完了した場合に、レジスタ205の格納値が演算結果zとして演算回路から出力される。
 以上、シフトレジスタを利用した演算回路の動作について説明した。
 以上説明したように、シフトレジスタを利用することにより、二次多変数多項式f(x)の演算回路を構築することができる。しかし、上記のように格納値の順序を整列させるために、値を更新せずにローテーションを実施するためのサイクルが必要になるため、処理サイクルが増加してしまう。また、ここで例示した演算回路を用いて並列に実装することで、複数の入力について二次多変数多項式f(x)を計算する演算回路を構築する場合、AND回路及びXOR回路を複数組用意する必要が生じる。これらの点については改善の余地がある。
 [6-4:シフトレジスタを利用する構成#2(複数のフィードバックループ)]
 次に、複数のフィードバックループを組み込んだシフトレジスタを利用する演算回路の構成について述べる。この構成は、複数のフィードバックループを利用し、格納値の順序を整列するためだけに実施されるローテーションを回避することを可能にする。
 (6-4-1:回路構成(図27~図29))
 シフトレジスタを利用した演算回路は、二次多変数多項式f(x)を構成する各項の変数x又はxを生成する第1の回路部分(図27及び図28を参照)と、各項の変数に係数aij又はbを乗算した中間値を足し込んで演算結果zを出力する第2の回路部分(図29を参照)とで構成される。
 第1の回路部分は、図27に示すように、主に、シフトレジスタ301と、AND回路302とにより構成される。但し、図27においては、図20に示したシフトレジスタ201との対比を容易にすべく、便宜上、AND回路302の前段に設けられるマスク回路303(図29を参照)の記載を省略してある。また、シフトレジスタ301は、図28に示すように、セレクタS,…,S及びレジスタR,…,Rにより構成される。なお、セレクタSは、「3ビット入力:1ビット出力」のレジスタである。また、セレクタS,…,Sは、「4ビット入力:1ビット出力」のレジスタである。また、配線の幅は全て1ビットである。
 また、第2の回路部分は、図29に示すように、AND回路304と、XOR回路305と、レジスタ306とにより構成される。なお、図27において記載を省略したマスク回路303には、シフトレジスタ301から出力された一方の値yと、マスク値mask(mask=0/1)とが入力される。マスク値が1の場合、マスク回路303は、入力されたyの値に関係なく、1を出力する。一方、マスク値が0の場合、マスク回路303は、入力されたyの値をそのまま出力する。マスク回路303の出力値は、AND回路302に入力される。つまり、AND回路302には、シフトレジスタ301から出力された一方の値yと、マスク回路303の出力値とが入力される。
 AND回路304には、第1の回路部分を構成するAND回路302の出力値と、係数aij又はbとが入力される。また、AND回路304の出力値は、XOR回路305に入力される。また、XOR回路305には、AND回路304の出力値と共に、レジスタ306に格納された格納値が入力される。また、レジスタ306の格納値は、XOR回路306の出力値により更新される。そして、入力xの全ての組み合わせについて足し込み処理が完了した場合に、レジスタ306の格納値が演算結果zとして出力される。
 以上、シフトレジスタを利用した演算回路の回路構成について説明した。
 (6-4-2:動作(図30~図34))
 次に、図30~図34を参照しながら、演算回路の動作について説明する。なお、図中において配線を鎖線で示した部分は、該当するサイクルにおいて信号が流れないように制御されていることを表している。一方、図中において配線を実線で示した部分は、該当するサイクルにおいて信号が流れるように制御されていることを表している。
 図30に示すように、最初のサイクル(P1)で、シフトレジスタ201を構成するレジスタR,…,Rに入力x∈{0,1}が格納される。次のサイクル(P2)では、レジスタRの格納値が維持されつつ、その格納値が出力値yとしてシフトレジスタ201から出力される。また、レジスタRの格納値が出力値yとしてシフトレジスタ201から出力される。さらに、レジスタR,…,Rにおいて格納値のローテーションが実施される。
 具体的には、レジスタRに格納されていた1ビットの値xがレジスタRに移動し、レジスタR,…,Rに格納されていた1ビットの値x,…,xがレジスタR,…,Rn-1に移動する。その結果、レジスタR,…,Rには、それぞれ、1ビットの値x,x,…,x,xが格納された状態になる。なお、シフトレジスタ301から出力された2つの値y,yは、それぞれAND回路302及びマスク回路303に入力され、AND回路304、XOR回路305を経てレジスタ305に格納される(図29を参照)。
 次のサイクル(P3)では、図31に示すように、レジスタR1の格納値が維持されつつ、その格納値が出力値yとしてシフトレジスタ301から出力される。また、レジスタRの格納値が出力値yとしてシフトレジスタ301から出力される。さらに、レジスタR,…,Rにおいて格納値のローテーションが実施される。同様にして、以降のサイクル(P4)では、y,yの出力及び格納値のローテーションが繰り返し実施される。
 但し、図32に示すように、レジスタR,…,Rに、それぞれ、1ビットの値x,x,…,xが格納された状態になった段階で、レジスタR,…,Rにおいて格納値のローテーションが実施される(P5)。このとき、シフトレジスタ301は、レジスタR,Rから格納値を出力する。このタイミングで出力される格納値x,xの組は既に出力されているが、マスク値を1に設定することで値x(y)がマスクされ、AND回路302には、値x(y)と値「1」とが入力されることになる。その結果、レジスタR,…,Rには、それぞれ、1ビットの値x,x,…,x,xが格納された状態になる(P6)。
 以降のサイクルでは、再びレジスタRの格納値が維持されつつ、その格納値が出力値yとしてシフトレジスタ301から出力される。また、レジスタRの格納値が出力値yとしてシフトレジスタ301から出力される。但し、前述した動きとは異なり、変数xに関する項の生成処理は終了しているため、xが格納されているRの格納値も維持する。そのもとで、レジスタR,…,Rn-1において格納値のローテーションが実施される。その後、変数xに関わる項の生成処理が終了したら、レジスタR,…,Rにおける格納値のローテーションを実施する。このように、シフトレジスタ301は、レジスタR,…,Rにおける格納値のローテーションと、i=3,…,nに対してレジスタR,…,Rに関するローテーションを実行し、出力される2つの値y,yの組み合わせを制御する。
 先に説明したシフトレジスタ201と、シフトレジスタ301との違いは、レジスタR,…,Rの格納値を整列させるためだけにサイクルを消費する期間がない点である。この点について、具体例を参照しながら、より詳細に見ていきたい。
 一例として、入力xが4ビットの場合(n=4の場合)について、各サイクルにおける出力値y,y、マスク値mask、及びレジスタR,…,Rの格納値を図33に纏めた。図33を参照しながら、演算回路の動作について具体的に説明する。
 まず、最初のサイクル(サイクル数1)において、レジスタR,…,Rに入力x,…,xが格納される。次いで、レジスタR,Rから格納値x,xが出力値y,yとして出力される。これら出力値y,yは、それぞれAND回路302、マスク回路303に入力される。また、このサイクルにおいてマスク値がmask=0であるから、AND回路302により論理和y=xが算出される。そして、論理和yがAND回路304に入力される。次いで、AND回路304により係数a12との間で論理積が計算され、レジスタ306に格納される。
 次のサイクル(サイクル数2)では、レジスタR,…,Rにおいて格納値のローテーションが実施され、それぞれ格納値がx,x,xに更新される。そのため、シフトレジスタ301の出力値y,yは、それぞれx,xとなる。同様に、サイクル数3において、レジスタR,…,Rにおける格納値のローテーションが実施され、シフトレジスタ301から値y,yが出力される。このとき、シフトレジスタ301の出力値y,yは、それぞれx,xとなる。
 次のサイクル(サイクル数4)では、レジスタR,…,Rの格納値がそれぞれx,…,xとなっており、そのままレジスタR,Rから格納値を出力すると、既に出力した値x,xが出力されてしまう。そこで、シフトレジスタ301は、マスク値をmask=1に設定し、AND回路302に値yと値「1」とが入力されるようにし、レジスタR,…,Rにおいてローテーションを実施する。このとき、AND回路302の出力yは、y=xとなる。また、レジスタR,…,Rの格納値は、サイクル数4+1の欄に記載した通り、それぞれx,x,x,xという順序になる。
 次いで、サイクル数4+1、4+2に記載した通り、シフトレジスタ301は、マスク値をmask=0に戻し、レジスタR,…,Rにおいて格納値のローテーションを実施しつつ、レジスタR,Rから格納値を出力する。次いで、サイクル数4の場合と同様、シフトレジスタ301は、マスク値をmask=1に設定し、レジスタR,Rから値を出力しつつ、レジスタR,…,Rの格納値を整列させるためにレジスタR,…,Rの格納値をローテーションする(サイクル数4+3)。
 以降、シフトレジスタ301は、マスク値maskの設定を切り替えつつ、レジスタR,…,Rの格納値の保持と、レジスタR,…,Rのローテーションとを実施して格納値の全組み合わせについて値を出力する。シフトレジスタ301から出力された値y,yは、マスク回路303、AND回路302、304、XOR回路305、及びレジスタ306により都度足し込まれる。そして、値x,…,xから選択可能な全ての組み合わせについて足し込みが完了した場合に、レジスタ306の格納値が演算結果zとして演算回路から出力される。
 以上、シフトレジスタを利用した演算回路の動作について説明した。
 以上説明したように、シフトレジスタを利用することにより、二次多変数多項式f(x)の演算回路を構築することができる。また、複数のフィードバックループを導入することで、上記のように格納値の順序を整列させるために、値を出力せずにローテーションを実施するための無駄なサイクルが必要なくなる。しかしながら、図34に示すように、シフトレジスタ301を構成する多ビット入力のセレクタS,…,Sを制御する制御装置310の構成が複雑になる。その結果、回路規模の増大及びクリティカルパスの増加が生じてしまう。
 さらに、ここで例示した演算回路を用いて並列に実装することで、複数の入力について二次多変数多項式f(x)を計算する演算回路を構築する場合、AND回路及びXOR回路を複数組用意する必要が生じる。これらの点について改善の余地がある。そこで、本件発明者は、上述した演算回路が抱える様々な課題について鋭意検討し、回路規模の増大を抑制しつつ、クリティカルパスを短くして高速動作が可能な演算回路の構成に想到した。以下、当該構成に係る実施例(実施例#1及び#2)について述べる。
 [6-5:実施例#1(多変数多項式Fの計算)]
 まず、二次多変数多項式F(x)の計算(F(x)を構成するf(x)の計算)に利用可能な演算回路の構成(実施例#1)について述べる。実施例#1に係る演算回路は、2つの入力x,xについて並列して二次多変数多項式F(x),F(x)の計算(f(x),f(x)の計算)を実行できるように設計されている。
 (6-5-1:回路構成(図35、図36))
 図35及び図36に示すように、実施例#1に係る演算回路は、シフトレジスタ401と、AND回路402、403と、セレクタ404と、AND回路405と、XOR回路406と、セレクタ407、409と、レジスタ408、410と、セレクタ411とにより構成される。また、シフトレジスタ401は、第1のシフトレジスタ4011、及び第2のシフトレジスタ4012を含む。
 なお、第1のシフトレジスタ4011の構成は、図21に示したシフトレジスタ201の構成と実質的に同じである。また、第2のシフトレジスタ4012の構成は、値を出力するレジスタの組み合わせが異なる以外、図21に示したシフトレジスタ201の構成と実質的に同じである。但し、第1のシフトレジスタ4011と第2のシフトレジスタ4012とは同じサイクルで連携して動作する。
 図35に示すように、第1のシフトレジスタ4011は、レジスタR1,1,…,R1,n+1、及びセレクタS1,1,…,S1,n+1により構成される。また、第1のシフトレジスタ4011は、レジスタR1,1及びR1,2から格納値を出力するように構成されている。同様に、第2のシフトレジスタ4012は、レジスタR2,1,…,R2,n+1、及びセレクタS2,1,…,S2,n+1により構成される。但し、第2のシフトレジスタ4012は、レジスタR2,1及びR2,n+1から格納値を出力するように構成されている。
 第1のシフトレジスタ4011から出力される値y1,1,y1,2は、図36に示すように、AND回路402に入力される。同様に、第2のシフトレジスタ4012から出力される値y2,1,y2,2は、AND回路403に入力される。また、AND回路402は、入力された値y1,1,y1,2の論理積を算出し、算出結果をセレクタ404に入力する。同様に、AND回路403は、入力された値y2,1,y2,2の論理積を算出し、算出結果をセレクタ404に入力する。セレクタ404は、入力された2つの値から1つの値を選択し、選択結果をAND回路405に入力する。
 AND回路405には、セレクタ404の出力値と共に、係数aij及びbが入力される。そして、AND回路405は、入力された出力値と係数との論理積を算出し、その算出結果をXOR回路406に入力する。XOR回路406には、AND回路405の出力値と、後述するセレクタ411の出力値とが入力される。XOR回路406は、入力された2つの値について排他的論理和演算を実施し、その演算結果をセレクタ407、409に入力する。なお、この演算結果は、セレクタ407、409の状態に応じて、レジスタ408又はレジスタ410に格納される。また、レジスタ408、410の格納値は、セレクタ411の状態に応じて、いずれか一方がXOR回路406に入力されるか、演算結果zとして演算回路から出力される。
 以上、実施例#1に係る演算回路の構成について説明した。
 (6-5-2:動作(図37~図42))
 次に、図37~図42を参照しながら、実施例#1に係る演算回路の動作について説明する。なお、図中において配線を鎖線で示した部分は、該当するサイクルにおいて実質的に信号が流れないように制御されていることを表している。一方、図中において配線を実線で示した部分は、該当するサイクルにおいて信号が流れるように制御されていることを表している。このような信号経路の制御は、セレクタS1,1,…,S1,n,S2,1,…,S2,n+1、及び、セレクタ404、セレクタ407、セレクタ409、セレクタ411を制御することで実現される。
 最初のサイクル(P1)では、図37に示すように、レジスタR1,1,…,R1,nに入力値x1,1,…,x1,nが格納される。このとき、レジスタR1,n+1には値「1」が格納される。ここで格納された値「1」は、二次多変数多項式f(x)に含まれる一次の項を計算するために利用される。また、レジスタR2,1,…,R2,nに入力値x2,n,…,x2,1(逆順である点に注意)が格納される。このとき、レジスタR2,n+1には値「1」が格納される。ここで格納された値「1」は、二次多変数多項式f(x)に含まれる一次の項を計算するために利用される。
 次のサイクル(P2)では、図38に示すように、レジスタR1,1,R1,2に格納されている格納値x1,1,x1,2が出力値y1,1,y1,2として出力される。また、レジスタR1,1の格納値は保持され、レジスタR1,2,…,R1,n+1の格納値はローテーションされる。具体的には、レジスタR1,2に格納されていた1ビットの値x1,2がレジスタR1,n+1に移動し、レジスタR1,3,…,R1,n+1に格納されていた1ビットの値x1,3,…,x1,n,1がレジスタR1,2,…,R1,nに移動する。その結果、レジスタR1,1,…,R1,n+1には、それぞれ、1ビットの値x1,1,x1,3,…,x1,n,1,x1,2が格納された状態になる。
 また、同じサイクル(P2)において、レジスタR2,1の格納値が保持され、レジスタR2,2,…,R2,n+1の格納値がローテーションされる。具体的には、レジスタR2,2に格納されていた1ビットの値x2,n-1がレジスタR2,n+1に移動し、レジスタR2,3,…,R2,n+1に格納されていた1ビットの値x2,n-2,…,x2,1,1がレジスタR2,2,…,R2,nに移動する。その結果、レジスタR2,1,…,R2,n+1には、それぞれ、1ビットの値x2,n,x2,n-2,…,x2,1,1,x2,n-1が格納された状態になる。このとき、レジスタR2,1,R2,n+1の格納値はシフトレジスタ401から出力されない(実際には、セレクタ404によりAND回路402の出力値が選択される。)。
 シフトレジスタ401から出力された値y1,1,y1,2は、図39に示すように、AND回路402に入力される。次いで、AND回路402から出力された論理積の値は、セレクタ404に入力される。このサイクルにおいて、セレクタ404は、AND回路402の出力値を選択するように制御される。そのため、セレクタ404に入力された値は、セレクタ404の出力値yとしてAND回路405に入力され係数との乗算が行われる。そのAND回路405の出力がXOR回路406に入力される。但し、このサイクルではレジスタ408、410に値が格納されていないため、XOR回路406に入力された値は、セレクタ407、409に入力される。
 但し、このサイクルにおいて、セレクタ409は、XOR回路406の出力と接続する経路を遮断し、レジスタ410の出力と接続する経路を接続している。そのため、XOR回路406の出力値は、XOR回路406の出力と接続されたセレクタ407を介してレジスタ408に格納される。このように、セレクタ404の入力がAND回路402の出力と接続され、第1のシフトレジスタ4011から格納値が出力されるサイクルにおいては、XOR回路406の出力とセレクタ407の入力とが接続され、セレクタ409の入力とレジスタ410の出力とが接続された状態に制御される。
 また、この状態において、セレクタ411は、レジスタ408の出力とXOR回路406の入力とを接続した状態に維持される。この状態を維持しつつ、シフトレジスタ401は、レジスタR1,2,…,R1,n+1及びレジスタR2,2,…,R2,n+1の格納値をローテーションしながら、レジスタR1,1,R1,2の格納値を出力する。そして、シフトレジスタ401から値が出力される度に、AND回路402、セレクタ404、XOR回路406、セレクタ407を介して中間値が足し込まれ、レジスタ408の格納値が更新される。
 但し、図40に示すように、レジスタR1,1,…,R1,n+1に、それぞれ、1ビットの値x1,1,x1,2,…,x1,n,1が格納された状態になった段階(P3)で、レジスタR1,1,…,R1,n+1において格納値のローテーションが実施される(P3)。その結果、次のサイクル時には、レジスタR1,1,…,R1,n+1には、それぞれ、1ビットの値x1,2,x1,3,…,x1,n,1,x1,1が格納された状態になる。また、図40の状態(P3)で、レジスタR2,1,…,R2,n+1において格納値のローテーションが実施される。さらに、この状態時(P3)にレジスタR2,1,R2,n+1から格納値が出力される。
 このとき、図41に示すように、セレクタ404の入力は、AND回路403の出力と接続された状態に制御される。また、セレクタ407の入力は、レジスタ408の出力と接続された状態に制御される。さらに、セレクタ409の入力は、XOR回路406の出力と接続された状態に制御される。そして、セレクタ411の入力は、レジスタ410の出力と接続された状態に制御される。その結果、AND回路403の出力値は、セレクタ404を介してAND回路405に入力される。さらに、AND回路405の出力値は、XOR回路406、セレクタ409を介してレジスタ410に格納される。
 このように、実施例#1に係る演算回路は、第1のシフトレジスタ4011が格納値を整列するためにレジスタR1,2,…,R1,n+1についてのローテーション、又はレジスタR1,1,…,R1,n+1についてローテーションを実施するタイミングで、第2のシフトレジスタ4012の出力値を処理する。第1のシフトレジスタ4011において格納値の整列が完了すると、セレクタ404、407、409、411が制御され、信号経路が元の状態に戻される。そして、レジスタR1,2,…,R1,n+1の格納値をローテーションしつつレジスタR1,1,R1,2の格納値を出力する処理が実施される。
 ここで、具体例を参照しながら、実施例#1に係る演算回路の動作について説明を補足する。入力xが4ビットの場合(n=4の場合)について、各サイクルにおける出力値y1,1,y1,2、y2,1,y2,2、及びレジスタR1,1,…,R1,5,R2,1,…,R2,5の格納値を図42に纏めた。図42を参照しながら、演算回路の動作について説明を進める。
 まず、最初のサイクル(サイクル数1)において、レジスタR1,1,…,R1,5に入力x1,1,…,x1,4,1が格納される。また、レジスタR2,1,…,R2,5に入力x2,4,…,x2,1,1が格納される。次いで、レジスタR1,1,R1,2から格納値x1,1,x1,2が出力値y1,1,y1,2として出力される。また、レジスタR2,1,R2,5から格納値x2,1,1が出力値y2,1,y2,2として出力される。但し、サイクル数1~4ではセレクタ404によりAND回路402の出力が採択される。なお、セレクタ404の後段の処理については詳細を省略する。
 次のサイクル(サイクル数2)では、レジスタR1,2,…,R1,5において格納値のローテーションが実施され、それぞれ格納値がx1,3,x1,4,1,x1,2に更新される。そのため、シフトレジスタ401の出力値y1,1,y1,2は、それぞれx1,1,x1,3となる。さらに、レジスタR2,2,…,R2,5において格納値のローテーションが実施され、それぞれ格納値がx2,2,x2,1,1,x2,3に更新される。同様に、サイクル数3及び4において、レジスタR1,2,…,R1,5及びR2,2,…,R2,5における格納値のローテーションが実施され、サイクル毎にシフトレジスタ401から値y1,1,y1,2が出力される。
 次のサイクル(サイクル数5)では、レジスタR1,1,…,R1,5の格納値がそれぞれx1,1,…,x1,4,1となっており、そのままレジスタR1,1,R1,2から格納値を出力すると、既に出力した値x1,1,x1,2が出力されてしまう。そこで、シフトレジスタ401は、レジスタR1,1,R1,2から値を出力せずに、レジスタR1,1,…,R1,5においてローテーションを実施する。さらに、シフトレジスタ401は、レジスタR2,1,R2,5から格納値を出力する。但し、サイクル数5ではセレクタ404によりAND回路403の出力が採択される。
 ローテーションを実施すると、レジスタR1,1,…,R1,5の格納値は、サイクル数5+1の欄に記載した通り、それぞれx1,2,x1,3,x1,4,1,x1,1という順序になる。同時に、レジスタR2,1,…,R2,5の格納値は、それぞれx2,3,x2,2,x2,1,1,x2,4という順序になる。なお、サイクル数5+1~5+3ではセレクタ404によりAND回路402の出力が再び採択される。
 次いで、サイクル数5+1~5+4に記載した通り、第1のシフトレジスタ4011は、レジスタR1,2,…,R1,5において格納値のローテーションを実施する。また、サイクル数5+1~5+3では、レジスタR1,1,R1,2から格納値を出力する。次いで、サイクル数2×5では、サイクル数5の場合と同様、シフトレジスタ401は、レジスタR1,1,R1,2から値を出力せずに、レジスタR1,1,…,R1,5の格納値を整列させるためにレジスタR1,1,…,R1,5の格納値をローテーションする。
 一方,第2のシフトレジスタ4012は、サイクル数5+1~5+4においては、レジスタR2,2,…,R2,5の格納値のローテーションを実施する。また、サイクル数5+4では、レジスタR2,1,R2,5から格納値を出力する。次いで,サイクル数2×5では、レジスタR2,1,…,R2,5の格納値をローテーションしつつ、レジスタR2,1,R2,5から格納値を出力する。但し、サイクル数5+4及びサイクル数2×5のタイミングではセレクタ404によりAND回路403の出力が採択される。
 以降、シフトレジスタ401は、レジスタR1,1,R1,2からの出力を伴うローテーションと、レジスタR2,1,R2,5からの出力を伴うローテーションとを実施して格納値の全組み合わせについて値を出力する。そして、値x1,1,…,x1,4,1から選択可能な全ての組み合わせ、及び、値x2,4,…,x2,1,1から選択可能な全ての組み合わせについて足し込みが完了した場合に、それぞれレジスタ408、410から格納値が演算結果zとして出力される。
 ここで、セレクタ404、407、409、411の制御方法について整理しておきたい。なお、セレクタ404、407、409、411の制御は、演算回路に設けられた制御部(非図示)又は演算回路の外部に設けられた制御装置(非図示)により行われる。
 第1のシフトレジスタ4011から値を出力するサイクルにおいて、セレクタ404の入力は、AND回路402の出力と接続される。また、セレクタ407の入力は、XOR回路406の出力と接続される。さらに、セレクタ409の入力は、レジスタ410の出力と接続される。そして、セレクタ411の入力は、レジスタ408の出力と接続される。
 一方、第2のシフトレジスタ4012から値を出力するサイクルにおいて、セレクタ404の入力は、AND回路403の出力と接続される。また、セレクタ409の入力は、XOR回路406の出力と接続される。さらに、セレクタ407の入力は、レジスタ408の出力と接続される。そして、セレクタ411の入力は、レジスタ410の出力と接続される。
 以上、シフトレジスタを利用した演算回路の動作について説明した。なお、係数を読み出す順序について言及しなかったが、AND回路402の出力について演算する場合には、係数をa12,a13,a14,b,…の順序で読み出す。一方、AND回路403の出力について演算する場合には、逆の順序で読み出す(例えば、図15に示した係数リストの最終アドレスから読み出す。)。なお、図42では、便宜上、AND回路403の出力に対して演算する係数にプライムを付けて表記したが、AND回路402の出力に対して演算する係数と同じものを利用してもよい。また、このような読み出し方法を採用することによる演算速度の低下はないと考えられる。
 以上説明したように、実施例#1に係る演算回路は、シフトレジスタを利用しているため、多ビット入力のセレクタを含まない。また、当該演算回路は、シフトレジスタのフィードバックループを2種類しか含まない。さらに、当該演算回路は、一方のシフトレジスタがレジスタの格納値を整列させるタイミングで、他方のシフトレジスタが格納値を出力するため、格納値の整列だけでサイクルを浪費してしまうことがない。また、2つのシフトレジスタにより、係数を乗算するためのAND回路と、足し込みのためのXOR回路とが共有されている。その結果、クリティカルパスの増加及び回路規模の増大が抑制され、小型で演算速度の速い演算回路が実現される。
 [6-6:実施例#2(多変数多項式F及びGの計算)]
 次に、二次多変数多項式F(x)及びG(x,x)の計算に利用可能な演算回路の構成(実施例#2)について述べる。実施例#2に係る演算回路は、3つの入力x,x,xについて並列して二次多変数多項式F(x),G(x,x)の計算(f(x),g(x,x)の計算)を実行できるように設計されている。
 (6-6-1:回路構成(図43、図44))
 図43及び図44に示すように、実施例#2に係る演算回路は、シフトレジスタ501と、AND回路502、503、504と、XOR回路505と、セレクタ506と、AND回路507と、XOR回路508と、セレクタ509、511と、レジスタ510、512と、セレクタ513とにより構成される。また、シフトレジスタ501は、第1のシフトレジスタ5011、第2のシフトレジスタ5012、及び第3のシフトレジスタ5013を含む。
 なお、第1のシフトレジスタ5011の構成は、上述した実施例#1に係る第1のシフトレジスタ4011の構成と実質的に同じである。また、第2のシフトレジスタ5012、及び第3のシフトレジスタ5013の構成は、上述した実施例#1に係る第2のシフトレジスタ4012の構成と実質的に同じである。従って、詳細な構成については説明を省略する。なお、第1のシフトレジスタ5011、第2のシフトレジスタ5012、及び第3のシフトレジスタ5013は、同じサイクルで連携して動作する。
 実施例#1に係る演算回路と実施例#2に係る演算回路との間の主な相違点は、上述したシフトレジスタ501が含むシフトレジスタの数、及びXOR回路505の構成にある。そこで、この相違点に注目して実施例#2に係る演算回路の構成を説明する。当該相違点は、二次多変数多項式g(x,x)を計算するために追加されたものである。共に演算すべき二次多変数多項式f(x)を下記の式(14)のように表現した場合、二次多変数多項式g(x,x)は、下記の式(15)のように表現される。
Figure JPOXMLDOC01-appb-M000012
 そこで、x2i3jを算出するために第2のシフトレジスタ5012、第3のシフトレジスタ5013及びAND回路503を設け、x2j3iを算出するための第2のシフトレジスタ、第3のシフトレジスタ5013及びAND回路504を設け、これら算出結果を合算するためにXOR回路505を設けた。従って、第2のシフトレジスタ5012及び第3のシフトレジスタ5013は、同じサイクルでレジスタの格納値を出力する。また、そのサイクルでXOR回路505の出力がセレクタ506を介してAND回路507に入力される。なお、AND回路507の後段における各回路の構成は構成例#2に係る演算回路と実質的に同じであるため、説明を省略する。
 以上、実施例#2に係る演算回路の構成について説明した。実施例#2に係る演算回路は、実施例#1に係る演算回路における第2のシフトレジスタ4012を、第2のシフトレジスタ5012及び第3のシフトレジスタ5013で置き換え、AND回路403を、AND回路503、504及びXOR回路505のセットで置き換えたものと考えると理解しやすいだろう。但し、第2のシフトレジスタ5012のレジスタR2,n+1及び第3のシフトレジスタ5013のレジスタR3,n+1に入力される値が「0」となっている点に注意されたい。この違いは、二次多変数多項式g(x,x)に一次の項を含まないことに起因している。
 (6-6-2:動作(図45~図50))
 次に、図45~図50を参照しながら、実施例#2に係る演算回路の動作について説明する。但し、実施例#2に係る演算回路の動作は、実施例#1に係る演算回路の動作と同様であるため、詳細な説明を省略し、相違点に注目して説明を進める。
 なお、図中において配線を鎖線で示した部分は、該当するサイクルにおいて実質的に信号が流れないように制御されていることを表している。一方、図中において配線を実線で示した部分は、該当するサイクルにおいて信号が流れるように制御されていることを表している。このような信号経路の制御は、セレクタS1,1,…,S1,n,S2,1,…,S2,n+1,S3,1,…,S3,n+1、及び、セレクタ506、セレクタ509、セレクタ511、セレクタ513を制御することで実現される。
 第1のシフトレジスタ5011及び第2のシフトレジスタ5012の動作に注目すると、図45、図46、及び図48に示すように、実施例#1に係る第1のシフトレジスタ4011及び第2のシフトレジスタ4012の動作と実質的に同じであることが分かる。また、第3のシフトレジスタ5013の動作は、第2のシフトレジスタ5012の動作と同じである。また、第1のシフトレジスタ5011が値を出力するサイクルでは、図47に示すように、セレクタ506の入力がAND回路502の出力と接続されるため、実施例#1に係る演算回路の動作と同じになる。
 一方、第2のシフトレジスタ5012及び第3のシフトレジスタ5013から値が出力されるサイクルでは、セレクタ506の入力がXOR回路505の出力と接続される。そのため、第2のシフトレジスタ5012及び第3のシフトレジスタ5013の出力値がそれぞれAND回路503、504に入力され、AND回路503、504の出力値がXOR回路505に入力され、XOR回路505の出力値がセレクタ506を介してAND回路507に入力される。なお、AND回路507の後段に位置する回路の動作は、実施例#1に係る演算回路と実質的に同じである。
 n=4の場合について、具体的にシフトレジスタ501を構成する各レジスタの格納値、各シフトレジスタからの出力値、及びAND回路507において計算される中間値の構成を図50に示した。なお、記載方法は図42と同じである。図50に示した具体例からも明らかなように、実施例#2に係る演算回路は、上記の式(14)に示した二次多変数多項式f(x)の各項と、上記の式(15)に示した二次多変数多項式g(x,x)の各項とを効率的に生成できている。このように、実施例#2に係る演算回路を利用すると、先に説明した公開鍵認証方式及び電子署名方式の実装に必要な多変数多項式の演算を実現することが可能になる。
 以上、実施例#2に係る演算回路の動作について説明した。
 以上、多変数多項式の求解問題に安全性の根拠を置く公開鍵認証方式及び電子署名方式の実装に利用可能な演算回路の構成について説明した。特に、実施例#1及び#2に係る演算回路を適用することで、回路規模の低減及び処理速度の向上を果たすことができる。
 [6-7:実施例#3(多変数多項式Fの計算のパイプライン化)]
 上述してきた演算回路を用いることで、多変数多項式の求解問題に安全性の根拠を置く公開鍵認証方式及び電子署名方式の実装に際して回路規模の低減及び処理速度の向上を果たすことが可能になる。このような公開鍵認証方式及び電子署名方式においては、二次多項式f(x)、f(x)の演算を別々のx、xに対して複数回(例えば140回)計算して、対話プロトコルの繰り返し回数を大きくすることで偽証が成功する確率は無視できる程度に小さくすることができる。
 二次多項式f(x)、f(x)の演算を複数回繰り返す際に、図35、36に示したような演算回路を複数個並列に配置することで、演算処理の高速化が可能である。図83は、図35に示した演算回路401を複数個並列に配置する例を示す説明図である。図83に示したように、演算回路401を複数個並列に配置すると、二次多項式f(x)、f(x)の複数回の演算処理が高速化できる。
 しかし、二次多項式の演算処理を実行する演算回路を複数個並列に配置させると、演算回路が、図15に示したような係数が格納される記録メモリに同時にアクセスする必要がある。また演算回路を複数個並列に配置させると、記録メモリに近い演算回路や、記録メモリから遠い演算回路が存在する演算回路の配置上の制約により、記録メモリへの同時アクセスと共に、最大動作周波数の低下を引き起こす要因となる。また、二次多項式の演算処理を実行する演算回路を複数個(M個)並列に配置させると、単純に回路規模が1つの演算回路のM倍になる。
 そこで、図15に示したような係数が格納される記録メモリを分割しやすいデータ構造にすると共に、二次多項式の演算処理をパイプライン化することで、演算回路の配置上の制約を緩和して、最大動作周波数の低下を防ぐ技術について説明する。また、二次多項式の演算処理をパイプライン化することで、演算回路内のレジスタを削減することが可能となることについても説明する。
 (6-7-1:回路構成(図51~図61))
 まず、記録メモリのデータ構造を、分割しやすいデータ構造にする方法を説明する。図51は、記録メモリのデータ構造例を示す説明図である。図51は、後述する4ビット、4段パイプラインの演算回路が参照する記録メモリのデータ構造例を示す説明図である。二次多項式の演算処理を実行する演算回路を複数個並列に配置する際に、図51のようなデータ構造にしておくことで、アドレスを二重に持つ必要がなくなる。なぜなら、演算処理の実行の際にアドレスをインクリメントしていき、最後のアドレスに達すると、今度はアドレスをデクリメントしていけばよいからである。
 次に、高速化を図るために、二次多項式の演算処理をパイプライン化する方法を説明する。
 図52は、実施例#3に係る演算回路の構成を示す説明図である。図52に示した演算回路は、入力xが4ビットの場合に二次多項式を演算して出力するものである。図52に示したように、実施例#3に係る演算回路は、演算回路600a、600b、600c、600dと、係数が格納されるROM690と、を含んで構成される。そして、ROM690は、2つの領域690a、690bに分割されている。
 演算回路600a、600b、600c、600dは、2つの入力x,xから二次多変数多項式f(x),f(x)を並列に生成する回路である。実施例#1及び実施例#2に係る演算回路は、1つの回路で、2つの入力x,xについて並列して二次多変数多項式f(x),f(x)の計算を実行できるように設計されていた。図52に示した、実施例#3に係る演算回路は、4つの演算回路600a、600b、600c、600dによるパイプライン処理によって、2つの入力x,xから二次多変数多項式f(x),f(x)を並列に生成するよう設計されている。
 パイプライン処理は、処理要素を直列に連結し、ある処理要素の出力が次の処理要素の入力となるような処理であり、パイプライン化された各処理要素は並列化されて処理を行なう。
 4つの演算回路600a、600b、600c、600dによるパイプライン処理によって、二次多変数多項式f(x),f(x)を効率的に生成するために、係数が格納されるROM690は2つの領域690a、690bに分割されている。図53は、ROM690のデータ構造例を示す説明図であり、領域690a、690bに格納される係数の例を示す説明図である。
 そして、領域690aに格納されている係数は演算回路600a、600dが、領域690bに格納されている係数は演算回路600b、600cが、それぞれ参照する。このように、各演算回路によるROM690へのアクセスを局地化することで、最大動作周波数の低下を防ぐことが可能になり、二次多項式の演算処理のさらなる高速化が図られる。
 図54及び図55は、演算回路600aの回路構成を示す説明図である。図54及び図55に示すように、演算回路600aは、シフトレジスタ601aと、AND回路602a、603aと、セレクタ604aと、AND回路605aと、XOR回路606aと、セレクタ607a、609aと、レジスタ608a、610aと、セレクタ611aとにより構成される。また、シフトレジスタ601aは、第1のシフトレジスタ6011a、及び第2のシフトレジスタ6012aを含む。
 第1のシフトレジスタ6011a、及び第2のシフトレジスタ6012aの構成は、値を出力するレジスタの組み合わせが異なる以外、図35に示した第1のシフトレジスタ4011及び第2のシフトレジスタ4012の構成と実質的に同じである。但し、第1のシフトレジスタ6011aと第2のシフトレジスタ6012aとは同じサイクルで連携して動作する。
 図54に示すように、第1のシフトレジスタ6011aは、レジスタRA1,1,RA1,2,RA1,3,RA1,4,RA1,5、及びセレクタSA1,1,SA1,2,SA1,3,SA1,4,SA1,5により構成される。また、第1のシフトレジスタ6011aは、レジスタRA1,1、RA1,2、及びRA1,3から格納値を出力するように構成されている。同様に、第2のシフトレジスタ6012aは、レジスタRA2,1,RA2,2,RA2,3,RA2,4,RA2,5、及びセレクタSA2,1,SA2,2,SA2,3,SA2,4,SA2,5により構成される。但し、第2のシフトレジスタ6012aは、レジスタRA2,1、RA2,2、RA2,3、及びRA2,5から格納値を出力するように構成されている。
 第1のシフトレジスタ6011aから出力される値ya1,1,ya1,2,ya1,3は、後段の演算回路600bに入力される。また第1のシフトレジスタ6011aから出力される値ya1,1,ya1,2は、図55に示すように、AND回路602aに入力される。同様に、第2のシフトレジスタ6012aから出力される値ya2,1,ya2,2,ya2,3,ya2,5は、後段の演算回路600bに入力される。また第2のシフトレジスタ6012aから出力される値ya2,1,ya2,5は、AND回路603aに入力される。また、AND回路602aは、入力された値ya1,1,ya1,2の論理積を算出し、算出結果をセレクタ604aに入力する。同様に、AND回路603aは、入力された値ya2,1,ya2,5の論理積を算出し、算出結果をセレクタ604aに入力する。セレクタ604aは、入力された2つの値から1つの値を選択し、選択結果をAND回路605aに入力する。
 AND回路605aには、セレクタ604aの出力値と共に、係数aij及びbが入力される。そして、AND回路605aは、入力された出力値と係数との論理積を算出し、その算出結果をXOR回路606aに入力する。XOR回路606aには、AND回路605aの出力値と、後述するセレクタ611aの出力値とが入力される。XOR回路606aは、入力された2つの値について排他的論理和演算を実施し、その演算結果をセレクタ607a、609aに入力する。なお、この演算結果は、セレクタ607a、609aの状態に応じて、レジスタ608a又はレジスタ610aに格納される。また、レジスタ608a、610aの格納値は、セレクタ611aの状態に応じて、いずれか一方がXOR回路606aに入力されるか、演算結果za,zaとして演算回路600aから出力される。レジスタ608a、610aからの値za,zaは、後段の演算回路600bに入力される。
 なお、セレクタ604a、611aは、後述するselAの値に応じて、入力された値のいずれか一方を選択して出力する。
 図56及び図57は、演算回路600bの回路構成を示す説明図である。図56及び図57に示すように、演算回路600bは、シフトレジスタ601bと、AND回路602b、603bと、セレクタ604bと、AND回路605bと、XOR回路606bと、セレクタ607b、609bと、レジスタ608b、610bと、セレクタ611bとにより構成される。また、シフトレジスタ601bは、第1のシフトレジスタ6011b、及び第2のシフトレジスタ6012bを含む。
 第1のシフトレジスタ6011bの構成は、図54に示した第1のシフトレジスタ6011aの構成から、レジスタが1つ少なくなっている。第2のシフトレジスタ6012bの構成は、値を出力するレジスタの組み合わせが異なる以外、図54に示した第2のシフトレジスタ6012aの構成と実質的に同じである。但し、第1のシフトレジスタ6011bと第2のシフトレジスタ6012bとは同じサイクルで連携して動作する。
 図56に示すように、第1のシフトレジスタ6011bは、レジスタRB1,1,RB1,2,RB1,3,RB1,4、及びセレクタSB1,1,SB1,2,SB1,3,SB1,4により構成される。また、第1のシフトレジスタ6011bは、レジスタRB1,1及びRB1,2から格納値を出力するように構成されている。同様に、第2のシフトレジスタ6012bは、レジスタRB2,1,RB2,2,RB2,3,RB2,4,RB2,5、及びセレクタSB2,1,SB2,2,SB2,3,SB2,4,SB2,5により構成される。但し、第2のシフトレジスタ6012bは、レジスタRB2,1、RB2,2、RB2,4、及びRB2,5から格納値を出力するように構成されている。
 第1のシフトレジスタ6011bから出力される値yb1,1,yb1,2は、後段の演算回路600cに入力される。また第1のシフトレジスタ6011bから出力される値yb1,1,yb1,2は、図57に示すように、AND回路602bに入力される。同様に、第2のシフトレジスタ6012bから出力される値yb2,1,yb2,2,yb2,4,yb2,5は、後段の演算回路600cに入力される。また第2のシフトレジスタ6012bから出力される値yb2,1,yb2,5は、AND回路603bに入力される。また、AND回路602bは、入力された値yb1,1,yb1,2の論理積を算出し、算出結果をセレクタ604bに入力する。同様に、AND回路603bは、入力された値yb2,1,yb2,5の論理積を算出し、算出結果をセレクタ604bに入力する。セレクタ604bは、入力された2つの値から1つの値を選択し、選択結果をAND回路605bに入力する。
 AND回路605bには、セレクタ604bの出力値と共に、係数aij及びbが入力される。そして、AND回路605bは、入力された出力値と係数との論理積を算出し、その算出結果をXOR回路606bに入力する。XOR回路606bには、AND回路605bの出力値と、後述するセレクタ611bの出力値とが入力される。XOR回路606bは、入力された2つの値について排他的論理和演算を実施し、その演算結果をセレクタ607b、609aに入力する。なお、この演算結果は、セレクタ607b、609bの状態に応じて、レジスタ608b又はレジスタ610bに格納される。また、レジスタ608b、610bの格納値は、セレクタ611bの状態に応じて、いずれか一方がXOR回路606bに入力されるか、演算結果zb,zbとして演算回路から出力される。レジスタ608b、610bからの値zb,zbは、後段の演算回路600cに入力される。
 なお、セレクタ604b、611bは、後述するselBの値に応じて、入力された値のいずれか一方を選択して出力する。またセレクタ607bは、XOR回路606bの出力、演算回路600aから供給される値za,またはレジスタ608bの出力のいずれかを選択して出力する。同様に、セレクタ609bは、XOR回路606bの出力、演算回路600aから供給される値za,またはレジスタ610bの出力のいずれかを選択して出力する。
 図58及び図59は、演算回路600cの回路構成を示す説明図である。図58及び図59に示すように、演算回路600cは、シフトレジスタ601cと、AND回路602c、603cと、セレクタ604cと、AND回路605cと、XOR回路606cと、セレクタ607c、609cと、レジスタ608c、610cと、セレクタ611cとにより構成される。また、シフトレジスタ601cは、第1のシフトレジスタ6011c、及び第2のシフトレジスタ6012cを含む。
 第1のシフトレジスタ6011cの構成は、図56に示した第1のシフトレジスタ6011bの構成から、さらにレジスタが1つ少なくなっている。第2のシフトレジスタ6012cの構成は、値を出力するレジスタの組み合わせが異なる以外、図54に示した第2のシフトレジスタ6012aの構成と実質的に同じである。但し、第1のシフトレジスタ6011cと第2のシフトレジスタ6012cとは同じサイクルで連携して動作する。
 図58に示すように、第1のシフトレジスタ6011cは、レジスタRC1,1,RC1,2,RC1,3、及びセレクタSC1,1,SC1,2,SC1,3により構成される。また、第1のシフトレジスタ6011cは、レジスタRC1,1及びRC1,2から格納値を出力するように構成されている。同様に、第2のシフトレジスタ6012cは、レジスタRC2,1,RC2,2,RC2,3,RC2,4,RC2,5、及びセレクタSC2,1,SC2,2,SC2,3,SC2,4,SC2,5により構成される。但し、第2のシフトレジスタ6012cは、レジスタRC2,1、RC2,3、RC2,4、及びRC2,5から格納値を出力するように構成されている。
 第1のシフトレジスタ6011cから出力される値yc1,1は、後段の演算回路600dに入力される。また第1のシフトレジスタ6011cから出力される値yc1,1,yc1,2は、図59に示すように、AND回路602cに入力される。同様に、第2のシフトレジスタ6012cから出力される値yc2,1,yc2,3,yc2,4,yc2,5は、後段の演算回路600dに入力される。また第2のシフトレジスタ6012cから出力される値yc2,1,yc2,5は、AND回路603cに入力される。また、AND回路602cは、入力された値yc1,1,yc1,2の論理積を算出し、算出結果をセレクタ604cに入力する。同様に、AND回路603cは、入力された値yc2,1,yc2,5の論理積を算出し、算出結果をセレクタ604cに入力する。セレクタ604cは、入力された2つの値から1つの値を選択し、選択結果をAND回路605cに入力する。
 AND回路605cには、セレクタ604cの出力値と共に、係数aij及びbが入力される。そして、AND回路605cは、入力された出力値と係数との論理積を算出し、その算出結果をXOR回路606cに入力する。XOR回路606cには、AND回路605cの出力値と、後述するセレクタ611cの出力値とが入力される。XOR回路606cは、入力された2つの値について排他的論理和演算を実施し、その演算結果をセレクタ607c、609cに入力する。なお、この演算結果は、セレクタ607c、609cの状態に応じて、レジスタ608c又はレジスタ610cに格納される。また、レジスタ608c、610cの格納値は、セレクタ611cの状態に応じて、いずれか一方がXOR回路606cに入力されるか、演算結果zc,zcとして演算回路から出力される。レジスタ608c、610cからの値zc,zcは、後段の演算回路600dに入力される。
 なお、セレクタ604c、611cは、後述するselCの値に応じて、入力された値のいずれか一方を選択して出力する。またセレクタ607cは、XOR回路606cの出力、演算回路600bから供給される値zb,またはレジスタ608cの出力のいずれかを選択して出力する。同様に、セレクタ609cは、XOR回路606cの出力、演算回路600bから供給される値zb,またはレジスタ610cの出力のいずれかを選択して出力する。
 図60及び図61は、演算回路600dの回路構成を示す説明図である。図60及び62に示すように、演算回路600dは、シフトレジスタ601dと、AND回路602d、603dと、セレクタ604dと、AND回路605dと、XOR回路606dと、セレクタ607d、609dと、レジスタ608d、610dと、セレクタ611dとにより構成される。また、シフトレジスタ601dは、第1のシフトレジスタ6011d、及び第2のシフトレジスタ6012dを含む。
 第1のシフトレジスタ6011dの構成は、図58に示した第1のシフトレジスタ6011cの構成から、さらにレジスタが1つ少なくなっている。第2のシフトレジスタ6012dの構成は、値を出力するレジスタの組み合わせが異なる以外、図54に示した第2のシフトレジスタ6012aの構成と実質的に同じである。但し、第1のシフトレジスタ6011dと第2のシフトレジスタ6012dとは同じサイクルで連携して動作する。
 図60に示すように、第1のシフトレジスタ6011dは、レジスタRD1,1,RD1,2、及びセレクタSD1,1,SD1,2により構成される。また、第1のシフトレジスタ6011dは、レジスタRD1,1及びRD1,2から格納値を出力するように構成されている。同様に、第2のシフトレジスタ6012dは、レジスタRD2,1,RD2,2,RD2,3,RD2,4,RD2,5、及びセレクタSD2,1,SD2,2,SD2,3,SD2,4,SD2,5により構成される。但し、第2のシフトレジスタ6012dは、レジスタRD2,1、及びRD2,5から格納値を出力するように構成されている。
 第1のシフトレジスタ6011dから出力される値yd1,1,yd1,2は、図61に示すように、AND回路602dに入力される。また第2のシフトレジスタ6012dから出力される値yd2,1,yd2,5は、AND回路603dに入力される。また、AND回路602dは、入力された値yd1,1,yd1,2の論理積を算出し、算出結果をセレクタ604dに入力する。同様に、AND回路603dは、入力された値yd2,1,yd2,5の論理積を算出し、算出結果をセレクタ604dに入力する。セレクタ604dは、入力された2つの値から1つの値を選択し、選択結果をAND回路605dに入力する。
 AND回路605dには、セレクタ604dの出力値と共に、係数aij及びbが入力される。そして、AND回路605dは、入力された出力値と係数との論理積を算出し、その算出結果をXOR回路606dに入力する。XOR回路606dには、AND回路605dの出力値と、後述するセレクタ611dの出力値とが入力される。XOR回路606dは、入力された2つの値について排他的論理和演算を実施し、その演算結果をセレクタ607d、609dに入力する。なお、この演算結果は、セレクタ607d、609dの状態に応じて、レジスタ608d又はレジスタ610dに格納される。また、レジスタ608d、610dの格納値は、セレクタ611dの状態に応じて、いずれか一方がXOR回路606dに入力されるか、演算結果zd,zdとして演算回路から出力される。レジスタ608d、610dからの値zd,zdが、それぞれf(x),f(x)に相当する。
 なお、セレクタ604d、611dは、後述するselDの値に応じて、入力された値のいずれか一方を選択して出力する。またセレクタ607dは、XOR回路606dの出力、演算回路600cから供給される値zc,またはレジスタ608dの出力のいずれかを選択して出力する。同様に、セレクタ609dは、XOR回路606dの出力、演算回路600cから供給される値zc,またはレジスタ610dの出力のいずれかを選択して出力する。
 以上、実施例#3に係る演算回路の構成について説明した。
 (6-7-2:動作(図62~図65))
 次に、図62~図65を用いて、実施例#3に係る演算回路の動作について説明する。図62~図65は、それぞれ、演算回路600a~600dのレジスタの格納値、ROM690から読み出される係数、セレクタに供給される信号及び演算回路600a~600dからの出力値をまとめたものである。
 演算回路600a~600dの基本動作は、実施例#1に係る演算回路と同様である。すなわち、演算回路600a~600dに含まれる各セレクタの制御により、値の格納及びローテーションが行われる。まず、図62を用いて演算回路600aのレジスタの格納値、ROM690から読み出される係数、セレクタに供給される信号及び演算回路600aからの出力値を説明する。
 なお、図62~図65に示されているT1,i、T2,iは、それぞれ以下の数式を表している。
Figure JPOXMLDOC01-appb-M000013
 従って、f(x),f(x)は以下の数式で表せる。
Figure JPOXMLDOC01-appb-M000014
 まず演算回路600aの最初のサイクル数1では、図62に示したように演算回路600aの各レジスタに値が格納される。また、ROM690の領域690aから係数a1,2が読み出される。また、セレクタ604a、611aには、図55における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608a、610aからの出力はいずれも0となる。
 サイクル数2では、各セレクタの制御により、図62に示したように演算回路600aの各レジスタに値が格納される。また、ROM690の領域690aから係数a1,3が読み出される。また、セレクタ604a、611aには、図55における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608aからの出力はa1,21,11,2となり、レジスタ610aからの出力は0となる。
 サイクル数3では、各セレクタの制御により、図62に示したように演算回路600aの各レジスタに値が格納される。また、ROM690の領域690aから係数a1,4が読み出される。また、セレクタ604a、611aには、図55における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608aからの出力はa1,21,11,2+a1,31,11,3となり、レジスタ610aからの出力は0となる。
 サイクル数4では、各セレクタの制御により、図62に示したように演算回路600aの各レジスタに値が格納される。また、ROM690の領域690aから係数bが読み出される。また、セレクタ604a、611aには、図55における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608aからの出力はa1,21,11,2+a1,31,11,3+a1,41,11,4となり、レジスタ610aからの出力は0となる。
 サイクル数5では、各セレクタの制御により、図62に示したように演算回路600aの各レジスタに値が格納される。また、ROM690の領域690aから係数bが読み出される。また、セレクタ604a、611aには、図55における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608aからの出力はa1,21,11,2+a1,31,11,3+a1,41,11,4+b1,1=T1,1となり、レジスタ610aからの出力は0となる。
 サイクル数6では、各セレクタの制御により、図62に示したように演算回路600aの各レジスタに値が格納される。その結果、レジスタ608aからの出力はT1,1となり、レジスタ610aからの出力はb2,4=T2,4となる。
 演算回路600aは、このサイクル数1~サイクル数6を繰り返して演算結果を演算回路600bに出力する。サイクル数6が終了すると、演算回路600aは、次のx,xに対する演算処理を同様に実行する。
 次に、図63を用いて演算回路600bのレジスタの格納値、ROM690から読み出される係数、セレクタに供給される信号及び演算回路600bからの出力値を説明する。なお、図63に示した演算回路600bのレジスタの格納値は、演算回路600aにおいてサイクル数1~サイクル数6からなるローテーションが実行された後に演算回路600bに供給されるものである。
 まず演算回路600bの最初のサイクル数1では、図63に示したように演算回路600bの各レジスタに値が格納される。また、ROM690の領域690bから係数a2,3が読み出される。また、セレクタ604b、611bには、図57における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608bからの出力はT1,1(=演算回路600aの出力za)となり、レジスタ610bからの出力はT2,4(=演算回路600aの出力za)となる。
 サイクル数2では、各セレクタの制御により、図63に示したように演算回路600bの各レジスタに値が格納される。また、ROM690の領域690bから係数a2,4が読み出される。また、セレクタ604b、611bには、図57における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608bからの出力はT1,1+a2,31,21,3となり、レジスタ610bからの出力はT2,4となる。
 サイクル数3では、各セレクタの制御により、図63に示したように演算回路600bの各レジスタに値が格納される。また、ROM690の領域690bから係数bが読み出される。また、セレクタ604b、611bには、図57における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608bからの出力はT1,1+a2,31,21,3+a2,41,21,4となり、レジスタ610bからの出力はT2,4となる。
 サイクル数4では、各セレクタの制御により、図63に示したように演算回路600bの各レジスタに値が格納される。また、ROM690の領域690bから係数bが読み出される。また、セレクタ604b、611bには、図57における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608bからの出力はT1,1+a2,31,21,3+a2,41,21,4+b1,2=T1,1+T1,2となり、レジスタ610bからの出力はT2,4となる。
 サイクル数5では、各セレクタの制御により、図63に示したように演算回路600bの各レジスタに値が格納される。また、ROM690の領域690bから係数a3,4が読み出される。また、セレクタ604b、611bには、図57における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608bからの出力はT1,1+T1,2となり、レジスタ610bからの出力はT2,4+b2,3となる。
 サイクル数6では、各セレクタの制御により、図63に示したように演算回路600bの各レジスタに値が格納される。その結果、レジスタ608bからの出力はT1,1+T1,2となり、レジスタ610bからの出力はT2,4+b2,3+a3,42,32,4=T2,4+T2,3となる。
 演算回路600bは、このサイクル数1~サイクル数6を繰り返して演算結果を演算回路600cに出力する。サイクル数6が終了すると、演算回路600bは、次のx,xに対する演算処理を同様に実行する。
 次に、図64を用いて演算回路600cのレジスタの格納値、ROM690から読み出される係数、セレクタに供給される信号及び演算回路600cからの出力値を説明する。
なお、図64に示した演算回路600cのレジスタの格納値は、演算回路600bにおいてサイクル数1~サイクル数6からなるローテーションが実行された後に演算回路600cに供給されるものである。
 まず演算回路600cの最初のサイクル数1では、図64に示したように演算回路600cの各レジスタに値が格納される。また、ROM690の領域690bから係数a3,4が読み出される。また、セレクタ604c、611cには、図59における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608cからの出力はT1,1+T1,2(=演算回路600bの出力zb)となり、レジスタ610cからの出力はT2,4+T2,3(=演算回路600bの出力zb)となる。
 サイクル数2では、各セレクタの制御により、図64に示したように演算回路600cの各レジスタに値が格納される。また、ROM690の領域690bから係数bが読み出される。また、セレクタ604c、611cには、図59における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608cからの出力はT1,1+T1,2+a3,41,31,4となり、レジスタ610cからの出力はT2,4+T2,3となる。
 サイクル数3では、各セレクタの制御により、図64に示したように演算回路600cの各レジスタに値が格納される。また、ROM690の領域690bから係数bが読み出される。また、セレクタ604c、611cには、図59における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608cからの出力はT1,1+T1,2+a3,41,31,4+b1,3=T1,1+T1,2+T1,3となり、レジスタ610cからの出力はT2,4+T2,3となる。
 サイクル数4では、各セレクタの制御により、図64に示したように演算回路600cの各レジスタに値が格納される。また、ROM690の領域690bから係数a2,4が読み出される。また、セレクタ604c、611cには、図59における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608cからの出力はT1,1+T1,2+T1,3となり、レジスタ610cからの出力はT2,4+T2,3+b2,2となる。
 サイクル数5では、各セレクタの制御により、図64に示したように演算回路600cの各レジスタに値が格納される。また、ROM690の領域690bから係数a2,3が読み出される。また、セレクタ604c、611cには、図59における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608cからの出力はT1,1+T1,2+T1,3となり、レジスタ610cからの出力はT2,4+T2,3+b2,2+a2,42,22,4となる。
 サイクル数6では、各セレクタの制御により、図64に示したように演算回路600cの各レジスタに値が格納される。その結果、レジスタ608cからの出力はT1,1+T1,2+T1,3となり、レジスタ610cからの出力はT2,4+T2,3+b2,2+a2,42,22,4+a2,32,22,3=T2,4+T2,3+T2,2となる。
 演算回路600cは、このサイクル数1~サイクル数6を繰り返して演算結果を演算回路600dに出力する。サイクル数6が終了すると、演算回路600cは、次のx,xに対する演算処理を同様に実行する。
 次に、図65を用いて演算回路600dのレジスタの格納値、ROM690から読み出される係数、セレクタに供給される信号及び演算回路600dからの出力値を説明する。
なお、図65に示した演算回路600dのレジスタの格納値は、演算回路600cにおいてサイクル数1~サイクル数6からなるローテーションが実行された後に演算回路600dに供給されるものである。
 まず演算回路600dの最初のサイクル数1では、図65に示したように演算回路600dの各レジスタに値が格納される。また、ROM690の領域690aから係数bが読み出される。また、セレクタ604d、611dには、図61における“0”からの入力を出力するような信号が供給される。その結果、レジスタ608dからの出力はT1,1+T1,2+T1,3(=演算回路600cの出力zc)となり、レジスタ610dからの出力はT2,4+T2,3+T2,2(=演算回路600cの出力zc)となる。
 サイクル数2では、各セレクタの制御により、図65に示したように演算回路600dの各レジスタに値が格納される。また、ROM690の領域690aから係数bが読み出される。また、セレクタ604d、611dには、図61における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608dからの出力はT1,1+T1,2+T1,3+b1,4=T1,1+T1,2+T1,3+T1,4となり、レジスタ610dからの出力はT2,4+T2,3+T2,2となる。
 サイクル数3では、各セレクタの制御により、図65に示したように演算回路600dの各レジスタに値が格納される。また、ROM690の領域690aから係数a1,4が読み出される。また、セレクタ604d、611dには、図61における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608dからの出力はT1,1+T1,2+T1,3+T1,4となり、レジスタ610dからの出力はT2,4+T2,3+T2,2+b2,1となる。
 サイクル数4では、各セレクタの制御により、図65に示したように演算回路600dの各レジスタに値が格納される。また、ROM690の領域690aから係数a1,3が読み出される。また、セレクタ604d、611dには、図61における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608dからの出力はT1,1+T1,2+T1,3+T1,4となり、レジスタ610dからの出力はT2,4+T2,3+T2,2+b2,1+a1,42,12,4となる。
 サイクル数5では、各セレクタの制御により、図65に示したように演算回路600dの各レジスタに値が格納される。また、ROM690の領域690aから係数a1,2が読み出される。また、セレクタ604d、611dには、図61における“1”からの入力を出力するような信号が供給される。その結果、レジスタ608dからの出力T1,1+T1,2+T1,3+T1,4となり、レジスタ610dからの出力はT2,4+T2,3+T2,2+b2,1+a1,42,12,4+a1,32,12,3となる。
 サイクル数6では、各セレクタの制御により、図65に示したように演算回路600dの各レジスタに値が格納される。その結果、レジスタ608dからの出力はT1,1+T1,2+T1,3+T1,4となり、レジスタ610dからの出力はT2,4+T2,3+T2,2+b2,1+a1,42,12,4+a1,32,12,3+a1,22,12,2=T2,4+T2,3+T2,2+T2,1となる。
 演算回路600dは、このサイクル数1~サイクル数6を繰り返してf(x)及びf(x)の演算結果を出力する。サイクル数6が終了すると、演算回路600dは、次のx,xに対する演算処理を同様に実行する。
 このように、実施例#3に係る演算回路は、係数aij、bが格納されているROM690の領域を複数に分割し、二次多項式f(x)及びf(x)の演算処理をパイプライン化することで、ROM690の配置上の制約を緩和することができ、最大動作周波数の低下を防ぐことが出来る。また実施例#3に係る演算回路は、ある演算回路の出力を後段の演算回路の入力として使用出来るので、シフトレジスタ6011a、6011b、6011c、6011dの順にレジスタの数を減らすことができる。従って実施例#3に係る演算回路は、単純に実施例#1に係る演算回路を複数並列に設けた場合に比べて、レジスタの数を削減することができる。
 [6-8:実施例#4(多変数多項式Fの計算のパイプライン化)]
 次に、実施例#4に係る演算回路について説明する。実施例#3に係る演算回路は、2つの入力x、xを同じ順序で演算することで、単純に実施例#1に係る演算回路を複数並列に設けた場合に比べて、レジスタの数を削減することができることを説明したが、2つの入力x、xの演算順序をお互い逆にすることで、レジスタの数をさらに削減することができる。
 (6-8-1:回路構成(図66~図76))
 図66は、実施例#4に係る演算回路の構成を示す説明図である。図66に示した演算回路は、入力xが4ビットの場合に二次多項式を演算して出力するものである。図66に示したように、実施例#4に係る演算回路は、演算回路700a、700b、700c、700dと、係数が格納されるROM790と、を含んで構成される。そして、ROM790は、2つの領域790a、790bに分割されている。
 演算回路700a、700b、700c、700dは、2つの入力x,xから二次多変数多項式f(x),f(x)を並列に生成する回路である。実施例#3に係る演算回路は、4つの演算回路600a、600b、600c、600dの順のパイプライン処理によって、2つの入力x,xから二次多変数多項式f(x),f(x)を並列に生成するよう設計されていた。実施例#4に係る演算回路は、4つの演算回路700a、700b、700c、700dの順のパイプライン処理によって、入力xから二次多変数多項式f(x)を、その逆順のパイプライン処理によって、入力xから二次多変数多項式f(x)を、それぞれ並列に生成するよう設計されている。
 4つの演算回路700a、700b、700c、700dによるパイプライン処理によって、二次多変数多項式f(x),f(x)を効率的に生成するために、係数が格納されるROM790は2つの領域790a、790bに分割されている。領域790a、790bに格納される係数は、図53に示したものと同じである。
 図67及び図68は、演算回路700aの回路構成を示す説明図である。図67及び図68に示すように、演算回路700aは、シフトレジスタ701aと、AND回路702a、703aと、セレクタ704aと、AND回路705aと、XOR回路706aと、セレクタ707a、709aと、レジスタ708a、710aと、セレクタ711aとにより構成される。また、シフトレジスタ701aは、第1のシフトレジスタ7011a、及び第2のシフトレジスタ7012aを含む。
 第1のシフトレジスタ7011aの構成は、値を出力するレジスタの組み合わせが異なる以外、図35に示した第1のシフトレジスタ4011の構成と実質的に同じである。但し、第1のシフトレジスタ7011aと第2のシフトレジスタ7012aとは同じサイクルで連携して動作する。
 図67に示すように、第1のシフトレジスタ7011aは、レジスタRA1,1,RA1,2,RA1,3,RA1,4,RA1,5、及びセレクタSA1,1,SA1,2,SA1,3,SA1,4,SA1,5により構成される。また、第1のシフトレジスタ7011aは、レジスタRA1,1、RA1,2、及びRA1,3から格納値を出力するように構成されている。第2のシフトレジスタ7012aは、レジスタRA2,1,RA2,2及びセレクタSA2,1,SA2,2により構成される。第2のシフトレジスタ7012aは、レジスタRA2,1、及びRA2,2から格納値を出力するように構成されている。
 第1のシフトレジスタ7011aから出力される値ya1,1,ya1,2,ya1,3は、後段の演算回路700bに入力される。また第1のシフトレジスタ7011aから出力される値ya1,1,ya1,2は、図68に示すように、AND回路702aに入力される。また第2のシフトレジスタ7012aから出力される値ya2,1,ya2,2は、AND回路703aに入力される。また、AND回路702aは、入力された値ya1,1,ya1,2の論理積を算出し、算出結果をセレクタ704aに入力する。同様に、AND回路703aは、入力された値ya2,1,ya2,2の論理積を算出し、算出結果をセレクタ704aに入力する。セレクタ704aは、入力された2つの値から1つの値を選択し、選択結果をAND回路705aに入力する。
 AND回路705aには、セレクタ704aの出力値と共に、係数aij及びbが入力される。そして、AND回路705aは、入力された出力値と係数との論理積を算出し、その算出結果をXOR回路706aに入力する。XOR回路706aには、AND回路705aの出力値と、後述するセレクタ711aの出力値とが入力される。XOR回路706aは、入力された2つの値について排他的論理和演算を実施し、その演算結果をセレクタ707a、709aに入力する。なお、この演算結果は、セレクタ707a、709aの状態に応じて、レジスタ708a又はレジスタ710aに格納される。また、レジスタ708a、710aの格納値は、セレクタ711aの状態に応じて、いずれか一方がXOR回路706aに入力されるか、演算結果za,zaとして演算回路700aから出力される。レジスタ708aからの値zaは、後段の演算回路700bに入力される。一方、レジスタ710aからの値zaは、二次多変数多項式f(x)として演算回路から出力される。
 なお、セレクタ704a、711aは、後述するselAの値に応じて、入力された値のいずれか一方を選択して出力する。またセレクタ707aは、XOR回路706aの出力、値“0”,またはレジスタ708aの出力のいずれかを選択して出力する。同様に、セレクタ709aは、XOR回路706aの出力、演算回路700bから供給される値zb,またはレジスタ710aの出力のいずれかを選択して出力する。
 図69及び図70は、演算回路700bの回路構成を示す説明図である。図69及び図70に示すように、演算回路700bは、シフトレジスタ701bと、AND回路702b、703bと、セレクタ704bと、AND回路705bと、XOR回路706bと、セレクタ707b、709bと、レジスタ708b、710bと、セレクタ711bとにより構成される。また、シフトレジスタ701bは、第1のシフトレジスタ7011b、及び第2のシフトレジスタ7012bを含む。
 第1のシフトレジスタ7011bの構成は、図67に示した第1のシフトレジスタ7011aの構成から、レジスタが1つ少なくなっている。第2のシフトレジスタ7012bの構成は、図67に示した第1のシフトレジスタ7012aの構成から、レジスタが1つ多くなっている。第1のシフトレジスタ7011bと第2のシフトレジスタ7012bとは同じサイクルで連携して動作する。
 図69に示すように、第1のシフトレジスタ7011bは、レジスタRB1,1,RB1,2,RB1,3,RB1,4、及びセレクタSB1,1,SB1,2,SB1,3,SB1,4により構成される。また、第1のシフトレジスタ7011bは、レジスタRB1,1及びRB1,2から格納値を出力するように構成されている。同様に、第2のシフトレジスタ7012bは、レジスタRB2,1,RB2,2,RB2,3、及びセレクタSB2,1,SB2,2,SB2,3により構成される。但し、第2のシフトレジスタ7012bは、レジスタRB2,1、RB2,2、及びRB2,3から格納値を出力するように構成されている。
 第1のシフトレジスタ7011bから出力される値yb1,1,yb1,2は、後段の演算回路700cに入力される。また第1のシフトレジスタ7011bから出力される値yb1,1,yb1,2は、図70に示すように、AND回路702bに入力される。同様に、第2のシフトレジスタ7012bから出力される値yb2,2は、後段の演算回路700aに入力される。また第2のシフトレジスタ7012bから出力される値yb2,1,yb2,2は、AND回路703bに入力される。また、AND回路702bは、入力された値yb1,1,yb1,2の論理積を算出し、算出結果をセレクタ704bに入力する。同様に、AND回路703bは、入力された値yb2,1,yb2,2の論理積を算出し、算出結果をセレクタ704bに入力する。セレクタ704bは、入力された2つの値から1つの値を選択し、選択結果をAND回路705bに入力する。
 AND回路705bには、セレクタ704bの出力値と共に、係数aij及びbが入力される。そして、AND回路705bは、入力された出力値と係数との論理積を算出し、その算出結果をXOR回路706bに入力する。XOR回路706bには、AND回路705bの出力値と、後述するセレクタ711bの出力値とが入力される。XOR回路706bは、入力された2つの値について排他的論理和演算を実施し、その演算結果をセレクタ707b、709aに入力する。なお、この演算結果は、セレクタ707b、709bの状態に応じて、レジスタ708b又はレジスタ710bに格納される。また、レジスタ708b、710bの格納値は、セレクタ711bの状態に応じて、いずれか一方がXOR回路706bに入力されるか、演算結果zb,zbとして演算回路700bから出力される。レジスタ708bからの値zbは、後段の演算回路700cに入力される。またレジスタ710bからの値zbは、後段の演算回路700aに入力される。
 なお、セレクタ704b、711bは、後述するselBの値に応じて、入力された値のいずれか一方を選択して出力する。またセレクタ707bは、XOR回路706bの出力、演算回路700aから供給される値za,またはレジスタ708bの出力のいずれかを選択して出力する。同様に、セレクタ709bは、XOR回路706bの出力、演算回路700cから供給される値zc,またはレジスタ710bの出力のいずれかを選択して出力する。
 図71及び図72は、演算回路700cの回路構成を示す説明図である。図71及び図72に示すように、演算回路700cは、シフトレジスタ701cと、AND回路702c、703cと、セレクタ704cと、AND回路705cと、XOR回路706cと、セレクタ707c、709cと、レジスタ708c、710cと、セレクタ711cとにより構成される。また、シフトレジスタ701cは、第1のシフトレジスタ7011c、及び第2のシフトレジスタ7012cを含む。
 第1のシフトレジスタ7011cの構成は、図69に示した第1のシフトレジスタ7011bの構成から、さらにレジスタが1つ少なくなっている。第2のシフトレジスタ7012cの構成は、図69に示した第1のシフトレジスタ7012bの構成から、レジスタが1つ多くなっている。第1のシフトレジスタ7011cと第2のシフトレジスタ7012cとは同じサイクルで連携して動作する。
 図71に示すように、第1のシフトレジスタ7011cは、レジスタRC1,1,RC1,2,RC1,3、及びセレクタSC1,1,SC1,2,SC1,3により構成される。また、第1のシフトレジスタ7011cは、レジスタRC1,1、RC1,2及びRC1,3から格納値を出力するように構成されている。同様に、第2のシフトレジスタ7012cは、レジスタRC2,1,RC2,2,RC2,3,RC2,4、及びセレクタSC2,1,SC2,2,SC2,3,SC2,4により構成される。第2のシフトレジスタ7012cは、レジスタRC2,1、及びRC2,2から格納値を出力するように構成されている。
 第1のシフトレジスタ7011cから出力される値yc1,1は、後段の演算回路700dに入力される。また第1のシフトレジスタ7011cから出力される値yc1,1,yc1,2は、図72に示すように、AND回路702cに入力される。同様に、第2のシフトレジスタ7012cから出力される値yc2,1,yc2,2は、後段の演算回路700bに入力される。また第2のシフトレジスタ7012cから出力される値yc2,1,yc2,2は、AND回路703cに入力される。また、AND回路702cは、入力された値yc1,1,yc1,2の論理積を算出し、算出結果をセレクタ704cに入力する。同様に、AND回路703cは、入力された値yc2,1,yc2,2の論理積を算出し、算出結果をセレクタ704cに入力する。セレクタ704cは、入力された2つの値から1つの値を選択し、選択結果をAND回路705cに入力する。
 AND回路705cには、セレクタ704cの出力値と共に、係数aij及びbが入力される。そして、AND回路705cは、入力された出力値と係数との論理積を算出し、その算出結果をXOR回路706cに入力する。XOR回路706cには、AND回路705cの出力値と、後述するセレクタ711cの出力値とが入力される。XOR回路706cは、入力された2つの値について排他的論理和演算を実施し、その演算結果をセレクタ707c、709cに入力する。なお、この演算結果は、セレクタ707c、709cの状態に応じて、レジスタ708c又はレジスタ710cに格納される。また、レジスタ708c、710cの格納値は、セレクタ711cの状態に応じて、いずれか一方がXOR回路706cに入力されるか、演算結果zc,zcとして演算回路から出力される。レジスタ708cからの値zcは、後段の演算回路700dに入力される。またレジスタ710cからの値zcは、後段の演算回路700bに入力される。
 なお、セレクタ704c、711cは、後述するselCの値に応じて、入力された値のいずれか一方を選択して出力する。またセレクタ707cは、XOR回路706cの出力、演算回路700bから供給される値zb,またはレジスタ708cの出力のいずれかを選択して出力する。同様に、セレクタ709cは、XOR回路706cの出力、演算回路700dから供給される値zd,またはレジスタ710cの出力のいずれかを選択して出力する。
 図73及び図74は、演算回路700dの回路構成を示す説明図である。図73及び図74に示すように、演算回路700dは、シフトレジスタ701dと、AND回路702d、703dと、セレクタ704dと、AND回路705dと、XOR回路706dと、セレクタ707d、709dと、レジスタ708d、710dと、セレクタ711dとにより構成される。また、シフトレジスタ701dは、第1のシフトレジスタ6011d、及び第2のシフトレジスタ7012dを含む。
 第1のシフトレジスタ7011dの構成は、図71に示した第1のシフトレジスタ7011cの構成から、さらにレジスタが1つ少なくなっている。第2のシフトレジスタ7012dの構成は、図71に示した第1のシフトレジスタ7012cの構成から、レジスタが1つ多くなっている。第1のシフトレジスタ7011dと第2のシフトレジスタ7012dとは同じサイクルで連携して動作する。
 図73に示すように、第1のシフトレジスタ7011dは、レジスタRD1,1,RD1,2、及びセレクタSD1,1,SD1,2により構成される。また、第1のシフトレジスタ7011dは、レジスタRD1,1及びRD1,2から格納値を出力するように構成されている。第2のシフトレジスタ7012dは、レジスタRD2,1,RD2,2,RD2,3,RD2,4,RD2,5、及びセレクタSD2,1,SD2,2,SD2,3,SD2,4,SD2,5により構成される。第2のシフトレジスタ7012dは、レジスタRD2,1、RD2,2、及びRD2,3から格納値を出力するように構成されている。
 第1のシフトレジスタ7011dから出力される値yd1,1,yd1,2は、図74に示すように、AND回路702dに入力される。また第2のシフトレジスタ7012dから出力される値yd2,1,yd2,2は、AND回路703dに入力される。また、AND回路702dは、入力された値yd1,1,yd1,2の論理積を算出し、算出結果をセレクタ704dに入力する。同様に、AND回路703dは、入力された値yd2,1,yd2,2の論理積を算出し、算出結果をセレクタ704dに入力する。セレクタ704dは、入力された2つの値から1つの値を選択し、選択結果をAND回路705dに入力する。
 AND回路705dには、セレクタ704dの出力値と共に、係数aij及びbが入力される。そして、AND回路705dは、入力された出力値と係数との論理積を算出し、その算出結果をXOR回路706dに入力する。XOR回路706dには、AND回路705dの出力値と、後述するセレクタ711dの出力値とが入力される。XOR回路706dは、入力された2つの値について排他的論理和演算を実施し、その演算結果をセレクタ707d、709dに入力する。なお、この演算結果は、セレクタ707d、709dの状態に応じて、レジスタ708d又はレジスタ710dに格納される。また、レジスタ708d、710dの格納値は、セレクタ711dの状態に応じて、いずれか一方がXOR回路706dに入力されるか、演算結果zd,zdとして演算回路から出力される。レジスタ708dからの値zdはf(x)に相当する。またレジスタ710dからの値zdは、後段の演算回路700cに入力される。
 なお、セレクタ704d、711dは、後述するselDの値に応じて、入力された値のいずれか一方を選択して出力する。またセレクタ707dは、XOR回路706dの出力、演算回路700cから供給される値zc,またはレジスタ708dの出力のいずれかを選択して出力する。セレクタ709dは、XOR回路706dの出力、値“0”,またはレジスタ710dの出力のいずれかを選択して出力する。
 以上、実施例#4に係る演算回路の構成について説明した。
 (6-8-2:動作(図75~図82))
 次に、図75~図82を用いて、実施例#4に係る演算回路の動作について説明する。図75~図82は、それぞれ、演算回路700a~700dのレジスタの格納値、ROM690から読み出される係数、セレクタに供給される信号及び演算回路700a~700dからの出力値をまとめたものである。図75及び図76が、演算回路700aについてまとめたものであり、図77及び図78が、演算回路700bについてまとめたものであり、図79及び図80が、演算回路700cについてまとめたものであり、図81及び図82が、演算回路700dについてまとめたものである。
 まず、図75、図76、図81及び図82を用いて、サイクル数1~サイクル数6における、演算回路700a、700dのレジスタの格納値、ROM790から読み出される係数、セレクタに供給される信号及び演算回路700a、700dからの出力値を説明する。
 最初のサイクル数1では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。また、ROM790の領域790aから係数a1,2が読み出される。また、セレクタ704a、711aには、図68における“0”からの入力を出力するような信号が供給され、セレクタ704d、711dには、図74における“1”からの入力を出力するような信号が供給される。その結果、図76及び図82に示したようにレジスタ708a、710dからの出力は0となる。
 サイクル数2では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。また、ROM790の領域790aから係数a1,3が読み出される。また、セレクタ704a、711aには、図68における“0”からの入力を出力するような信号が供給され、セレクタ704d、711dには、図74における“1”からの入力を出力するような信号が供給される。その結果、レジスタ708aからの出力はa1,21,11,2となり、レジスタ710dからの出力はa1,22,12,2となる。
 サイクル数3では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。また、ROM790の領域790aから係数a1,4が読み出される。また、セレクタ704a、711aには、図68における“0”からの入力を出力するような信号が供給され、セレクタ704d、711dには、図74における“1”からの入力を出力するような信号が供給される。その結果、レジスタ708aからの出力はa1,21,11,2+a1,31,11,3となり、レジスタ710dからの出力はa1,22,12,2+a1,32,12,3となる。
 サイクル数4では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。また、ROM790の領域790aから係数bが読み出される。また、セレクタ704a、711aには、図68における“0”からの入力を出力するような信号が供給され、セレクタ704d、711dには、図74における“1”からの入力を出力するような信号が供給される。その結果、レジスタ708aからの出力はa1,21,11,2+a1,31,11,3+a1,41,11,4となり、レジスタ710dからの出力はa1,22,12,2+a1,32,12,3+a1,42,12,4となる。
 サイクル数5では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。また、ROM790の領域790aから係数bが読み出される。その結果、レジスタ708aからの出力はa1,21,11,2+a1,31,11,3+a1,41,11,4+b1,1=T1,1となり、レジスタ710dからの出力はa1,22,12,2+a1,32,12,3+a1,42,12,4+b2,1=T2,1となる。
 サイクル数6では、各セレクタの制御により、図76及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。その結果、レジスタ708aからの出力はT1,1となり、レジスタ710dからの出力はT2,1となる。
 演算回路700a、700dは、このサイクル数1~サイクル数6の6つのサイクルを繰り返して演算結果を演算回路700b、700cにそれぞれ出力する。6つのサイクルが終了すると、演算回路700a、700dは、それぞれ次のx,xに対する演算処理を同様に実行する。
 続いて、図77、図78、図79及び図80を用いて、サイクル数6+1~サイクル数6+6における、演算回路700b、700cのレジスタの格納値、ROM790から読み出される係数、セレクタに供給される信号及び演算回路700b、700cからの出力値を説明する。
 最初のサイクル数6+1では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。また、ROM790の領域790bから係数a2,3が読み出される。また、セレクタ704b、711bには、図70における“0”からの入力を出力するような信号が供給され、セレクタ704c、711cには、図72における“1”からの入力を出力するような信号が供給される。その結果、図78及び図80に示したようにレジスタ708bからの出力はT1,1となり、レジスタ710cからの出力はT2,1となる。
 サイクル数6+2では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。また、ROM790の領域790bから係数a2,4が読み出される。また、セレクタ704b、711bには、図70における“0”からの入力を出力するような信号が供給され、セレクタ704c、711cには、図72における“1”からの入力を出力するような信号が供給される。その結果、レジスタ708bからの出力はT1,1+a2,31,21,3となり、レジスタ710cからの出力はT2,1+a2,32,22,3となる。
 サイクル数6+3では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。また、ROM790の領域790bから係数bが読み出される。また、セレクタ704b、711bには、図70における“0”からの入力を出力するような信号が供給され、セレクタ704c、711cには、図72における“1”からの入力を出力するような信号が供給される。その結果、レジスタ708bからの出力はT1,1+a2,31,21,3+a2,41,21,4となり、レジスタ710cからの出力はT2,1+a2,32,22,3+a2,42,22,4となる。
 サイクル数6+4~6+6では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。また、ROM790の領域790bから係数bが読み出される。その結果、レジスタ708bからの出力はT1,1+a2,31,21,3+a2,41,21,4+b1,2=T1,1+T1,2となり、レジスタ710cからの出力はT2,1+a2,32,22,3+a2,42,22,4+b2,2=T2,1+T2,2となる。
 演算回路700b、700cは、この6つのサイクルを繰り返して演算結果を演算回路700c、700bにそれぞれ出力する。6つのサイクルが終了すると、演算回路700a、700dは、それぞれ次に演算回路700a、700dから供給される値に対する演算処理を同様に実行する。
 続いて、図77、図78、図79及び図80を用いて、サイクル数2×6+1~サイクル数2×6+6における、演算回路700b、700cのレジスタの格納値、ROM790から読み出される係数、セレクタに供給される信号及び演算回路700b、700cからの出力値を説明する。
 最初のサイクル数2×6+1では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。サイクル数6+1では値が格納されていなかったレジスタRB2,1、RB2,2、RB2,3には、演算回路700cのシフトレジスタ7012cからの出力値または“1”が格納される。同様に、サイクル数6+1では値が格納されていなかったレジスタRC1,1、RC1,2、RC1,3には、演算回路700bのシフトレジスタ7012bからの出力値または“1”が格納される。また、ROM790の領域790bから係数a2,3が読み出される。また、セレクタ704b、711bには、図70における“0”からの入力を出力するような信号が供給され、セレクタ704c、711cには、図72における“1”からの入力を出力するような信号が供給される。その結果、図78及び図80に示したようにレジスタ708bからの出力はT1,1となり、レジスタ710bからの出力はT2,1+T2,2となり、レジスタ708cからの出力はT1,1+T1,2となり、レジスタ710cからの出力はT2,1となる。
 サイクル数2×6+2では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。また、ROM790の領域790bから係数a2,4が読み出される。また、セレクタ704b、711bには、図70における“0”からの入力を出力するような信号が供給され、セレクタ704c、711cには、図72における“1”からの入力を出力するような信号が供給される。その結果、図78及び図80に示したようにレジスタ708bからの出力はT1,1+a2,31,21,3となり、レジスタ710bからの出力はT2,1+T2,2となり、レジスタ708cからの出力はT1,1+T1,2となり、レジスタ710cからの出力はT2,1+a2,32,22,3となる。
 サイクル数2×6+3では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。また、ROM790の領域790bから係数bが読み出される。また、セレクタ704b、711bには、図70における“0”からの入力を出力するような信号が供給され、セレクタ704c、711cには、図72における“1”からの入力を出力するような信号が供給される。その結果、図78及び図80に示したようにレジスタ708bからの出力はT1,1+a2,31,21,3+a2,41,21,4となり、レジスタ710bからの出力はT2,1+T2,2となり、レジスタ708cからの出力はT1,1+T1,2となり、レジスタ710cからの出力はT2,1+a2,32,22,3+a2,42,22,4となる。
 サイクル数2×6+4では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。また、ROM790の領域790bから係数bが読み出される。また、セレクタ704b、711bには、図70における“1”からの入力を出力するような信号が供給され、セレクタ704c、711cには、図72における“0”からの入力を出力するような信号が供給される。その結果、図78及び図80に示したようにレジスタ708bからの出力はT1,1+a2,31,21,3+a2,41,21,4+b1,2=T1,1+T1,2となり、レジスタ710bからの出力はT2,1+T2,2となり、レジスタ708cからの出力はT1,1+T1,2となり、レジスタ710cからの出力はT2,1+a2,32,22,3+a2,42,22,4+b2,2=T2,1+T2,2となる。
 サイクル数2×6+5では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。また、ROM790の領域790bから係数a3,4が読み出される。また、セレクタ704b、711bには、図70における“1”からの入力を出力するような信号が供給され、セレクタ704c、711cには、図72における“0”からの入力を出力するような信号が供給される。その結果、図78及び図80に示したようにレジスタ708bからの出力はT1,1+T1,2となり、レジスタ710bからの出力はT2,1+T2,2+b2,3となり、レジスタ708cからの出力はT1,1+T1,2+b1,3となり、レジスタ710cからの出力はT2,1+T2,2となる。
 サイクル数2×6+6では、各セレクタの制御により、図77及び図79に示したように演算回路700b、700cの各レジスタに値が格納される。その結果、図78及び図80に示したようにレジスタ708bからの出力はT1,1+T1,2となり、レジスタ710bからの出力はT2,1+T2,2+b2,3+a3,42,32,4=T2,1+T2,2+T2,3となり、レジスタ708cからの出力はT1,1+T1,2+b1,3+a3,41,31,4=T1,1+T1,2+T1,3となり、レジスタ710cからの出力はT2,1+T2,2となる。
 続いて、図75、図76、図81及び図82を用いて、サイクル数3×6+1~サイクル数3×6+6における、演算回路700a、700dのレジスタの格納値、ROM790から読み出される係数、セレクタに供給される信号及び演算回路700a、700dからの出力値を説明する。
 最初のサイクル数3×6+1では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。サイクル数1~2×6+6では値が格納されていなかったレジスタRA2,1、RA2,2には、演算回路700bのシフトレジスタ7012bからの出力値または“1”が格納される。同様に、サイクル数1~2×6+6では値が格納されていなかったレジスタRD1,1、RD1,2には、演算回路700cのシフトレジスタ7012cからの出力値または“1”が格納される。また、ROM790の領域790aから係数a1,2が読み出される。また、セレクタ704a、711aには、図68における“0”からの入力を出力するような信号が供給され、セレクタ704d、711dには、図74における“1”からの入力を出力するような信号が供給される。その結果、図76及び図82に示したようにレジスタ708aからの出力は0となり、レジスタ710aからの出力はT2,1+T2,2+T2,3となり、レジスタ708dからの出力はT1,1+T1,2+T1,3となり、レジスタ710dからの出力は0となる。
 サイクル数3×6+2では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。また、ROM790の領域790aから係数a1,3が読み出される。また、セレクタ704a、711aには、図68における“0”からの入力を出力するような信号が供給され、セレクタ704d、711dには、図74における“1”からの入力を出力するような信号が供給される。その結果、図76及び図82に示したようにレジスタ708aからの出力はa1,21,11,2となり、レジスタ710aからの出力はT2,1+T2,2+T2,3となり、レジスタ708dからの出力はT1,1+T1,2+T1,3となり、レジスタ710dからの出力はa1,22,12,2となる。
 サイクル数3×6+3では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。また、ROM790の領域790aから係数a1,4が読み出される。また、セレクタ704a、711aには、図68における“0”からの入力を出力するような信号が供給され、セレクタ704d、711dには、図74における“1”からの入力を出力するような信号が供給される。その結果、図76及び図82に示したようにレジスタ708aからの出力はa1,21,11,2+a1,31,11,3となり、レジスタ710aからの出力はT2,1+T2,2+T2,3となり、レジスタ708dからの出力はT1,1+T1,2+T1,3となり、レジスタ710dからの出力はa1,22,12,2+a1,32,12,3となる。
 サイクル数3×6+4では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。また、ROM790の領域790aから係数bが読み出される。また、セレクタ704a、711aには、図68における“0”からの入力を出力するような信号が供給され、セレクタ704d、711dには、図74における“1”からの入力を出力するような信号が供給される。その結果、図76及び図82に示したようにレジスタ708aからの出力はa1,21,11,2+a1,31,11,3+a1,41,11,4となり、レジスタ710aからの出力はT2,1+T2,2+T2,3となり、レジスタ708dからの出力はT1,1+T1,2+T1,3となり、レジスタ710dからの出力はa1,22,12,2+a1,32,12,3+a1,42,12,4となる。
 サイクル数3×6+5では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。また、ROM790の領域790aから係数bが読み出される。また、セレクタ704a、711aには、図68における“1”からの入力を出力するような信号が供給され、セレクタ704d、711dには、図74における“0”からの入力を出力するような信号が供給される。その結果、図76及び図82に示したようにレジスタ708aからの出力はa1,21,11,2+a1,31,11,3+a1,41,11,4+b1,1=T1,1となり、レジスタ710aからの出力はT2,1+T2,2+T2,3となり、レジスタ708dからの出力はT1,1+T1,2+T1,3となり、レジスタ710dからの出力はa1,22,12,2+a1,32,12,3+a1,42,12,4+b2,1=T2,1となる。
 サイクル数3×6+6では、各セレクタの制御により、図75及び図81に示したように演算回路700a、700dの各レジスタに値が格納される。その結果、図77及び図82に示したようにレジスタ708aからの出力はT1,1となり、レジスタ710aからの出力はT2,1+T2,2+T2,3+b2,4=T2,1+T2,2+T2,3+T2,4となり、レジスタ708dからの出力はT1,1+T1,2+T1,3+b1,4=T1,1+T1,2+T1,3+T1,4となり、レジスタ710dからの出力はT2,1となる。
 このサイクル数3×6+6でのレジスタ710aからの出力値T2,1+T2,2+T2,3+T2,4は、数式(19)で示したようにf(x)に相当し、レジスタ708dからの出力値T1,1+T1,2+T1,3+T1,4は数式(18)で示したようにf(x)に相当する。
 このように、実施例#4に係る演算回路は、係数aij、bが格納されているROM790の領域を複数に分割し、二次多項式f(x)及びf(x)の演算処理をパイプライン化することで、ROM790の配置上の制約を緩和することができ、最大動作周波数の低下を防ぐことが出来る。また実施例#4に係る演算回路は、実施例#4に係る演算回路は、4つの演算回路700a、700b、700c、700dの順のパイプライン処理によって、入力xから二次多変数多項式f(x)を、その逆順のパイプライン処理によって、入力xから二次多変数多項式f(x)を、それぞれ並列に生成するので、実施例#3に係る演算回路に比べてさらにレジスタの数を削減することができる。
 なお、上述の説明では、入力xが4ビットの場合であり、係数aij及びbが、1≦i<j≦4である場合の演算回路の例を説明したが、本開示は係る例に限定されるものではない。入力xのビット数や、i及びjの最大値を増やす場合には、例えばパイプライン処理をさせるための演算回路の数及びROMの領域の分割数を増やすことで、同様に、単純に演算回路を複数設ける場合に比べて、演算回路全体でのレジスタの数を削減しつつ並列に演算処理させることができる。
 例えば、入力xが140ビットで、係数aij及びbが、1≦i<j≦140である場合は、ROMの領域を10個に分割し、演算回路を20個並列に並べてパイプライン化することで、単純に演算回路を複数設ける場合に比べて、演算回路全体でのレジスタの数を削減しつつ並列に演算処理させることができる。
 また、実施例#3に係る演算回路及び実施例#4に係る演算回路は、実施例#2に係る演算回路のように、多変数多項式F及びGの計算を並列して実行する場合にも同様に拡張可能であることは言うまでもない。
 <7:まとめ>
 最後に、本技術の実施形態に係る技術内容について簡単に纏める。ここで述べる技術内容は、例えば、PC、携帯電話、ゲーム機、情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。なお、以下で述べる装置の機能は、1つ又は複数の回路により実現することも可能であるし、1台の情報処理装置を利用して実現することも可能であるし、或いは、複数台の情報処理装置を利用して実現することも可能である。また、以下で述べる装置が処理を実行する際に用いるデータ記憶手段及び演算処理手段は、当該装置に設けられたものであってもよいし、ネットワークを介して接続された機器に設けられたものであってもよい。
 上記の装置の機能構成は以下のように表現される。例えば、下記(1)に記載の装置は、第1のシフトレジスタが格納値を整列するために、格納値を出力しないサイクルにおいて、他のシフトレジスタが格納値を出力する。その結果、有効な格納値が出力されないサイクルの数を少なくすることが可能になり、単位サイクル数あたりの演算量が増加する。また、シフトレジスタを利用するため、多ビット入力のセレクタを用いずに済むため、回路規模を抑制することが可能になる。結果として、小型で、演算処理が高速な装置を実現することが可能になる。
 なお、下記(1)に記載の装置において、所定数c=1及びc’=1とすると、2つの入力に対して、上述した多変数多項式Fの演算に利用することができる。また、下記(5)に記載の装置において、所定数c=1、c’=0、c”=0とすると、上述した多変数多項式F及びGの演算に利用することができる。また、下記(13)および(16)に記載の装置において、所定数c=1及びc’=1とすると、2つの入力に対して、上述した多変数多項式Fの演算に利用することができる。
 (1)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、
 格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御部と、
を備え、
 前記制御部は、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
 演算装置。
 (2)
 前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
 前記変数乗算部からの複数の出力結果から一つを選択する選択部と、
 前記選択部の出力値に所定の係数を乗算する係数乗算部と、
 前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
 前記他のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
をさらに備える、
 上記(1)に記載の演算装置。
 (3)
 前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
 前記他のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第N+1のレジスタである、
 上記(1)又は(2)に記載の演算装置。
 (4)
 前記制御部は、前記第1のレジスタに格納された格納値を維持したまま前記第2~第N+1のレジスタに格納された格納値を移動させる第1の制御処理と、前記第1~第N+1のレジスタに格納された格納値を全て移動させる第2の制御処理と、を組み合わせて、前記一対の格納値の全組み合わせが出力されるように前記シフトレジスタを制御する、
 上記(1)~(3)のいずれか1項に記載の演算装置。
 (5)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、
 格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値x”,…,x”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御部と、
を備え、
 前記制御部は、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値x”,…,x”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
 演算装置。
 (6)
 前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
 前記第2のシフトレジスタから出力された第1の格納値と前記第3のシフトレジスタから出力された第2の格納値に基づく前記変数乗算部の出力値と、前期第2のシフトレジスタから出力された第2の格納値と前記第3のシフトレジスタから出力された第1の格納値に基づく前記変数乗算部の出力値とを加算する加算部と、
 前記変数乗算部及び前記加算部からの複数の出力結果から一方を選択する選択部と、
 前記選択部の出力値に所定の係数を乗算する係数乗算部と、
 前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
 前記第2及び第3のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を加算する第2の合計部と、
をさらに備える、
 上記(5)に記載の演算装置。
 (7)
 前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
 前記第2及び第3のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第N+1のレジスタである、
 上記(5)又は(6)に記載の演算装置。
 (8)
 前記制御部は、前記第1のレジスタに格納された格納値を維持したまま前記第2~第N+1のレジスタに格納された格納値を移動させる第1の制御処理と、前記第1~第N+1のレジスタに格納された格納値を全て移動させる第2の制御処理と、を組み合わせて、前記一対の格納値の全組み合わせが出力されるように前記シフトレジスタを制御する、
 上記(5)~(8)のいずれか1項に記載の演算装置。
 (9)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる工程を含み、
 前記移動させる工程では、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
 制御方法。
 (10)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値x”,…,x”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる工程を含み、
 前記移動させる工程では、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値x”,…,x”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
 制御方法。
 (11)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、
 前記制御機能は、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
 プログラム。
 (12)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値x”,…,x”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、
 前記制御機能は、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値x”,…,x”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
 プログラム。
 (13)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、
 各前記演算回路に対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、
を備え、
 前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、
 前記制御部は、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、
 演算装置。
 (14)
 各前記演算回路は、
 前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
 前記変数乗算部からの出力結果から一つを選択する選択部と、
 前記選択部の出力値に所定の係数を乗算する係数乗算部と、
 前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
 前記第2のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
をさらに備え、
 前記第1の合計部及び前記第2の合計部は、パイプライン処理における前段の前記演算回路における第1の合計部及び第2の合計部で合計された値に、前記係数乗算部の出力値をさらに加算する、
 上記(13)に記載の演算装置。
 (15)
 前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
 前記第2のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第M+1のレジスタである、
 上記(13)または(14)に記載の演算装置。
 (16)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、
 各前記演算回路に対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、
を備え、
 前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、
 前記制御部は、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記第1のシフトレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、
 演算装置。
 (17)
 各前記演算回路は、
 前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
 前記変数乗算部からの出力結果から一つを選択する選択部と、
 前記選択部の出力値に所定の係数を乗算する係数乗算部と、
 前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
 前記第2のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
をさらに備え、
 前記第1の合計部及び前記第2の合計部は、パイプライン処理における前段の前記演算回路における第1の合計部及び第2の合計部で合計された値に、前記係数乗算部の出力値をさらに加算する、
 上記(16)に記載の演算装置。
 (18)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、
 前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、
 前記移動させる工程では、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
 制御方法。
 (19)
 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、
 前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、
 前記移動させる工程では、
 前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
 前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
 制御方法。
 (20)
 上記のプログラムが記録された、コンピュータにより読み取り可能な記録媒体。
 以上、添付図面を参照しながら本技術に係る好適な実施形態について説明したが、本技術はここで開示した構成例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本技術の技術的範囲に属するものと了解される。
 401、501  シフトレジスタ
 4011、5011  第1のシフトレジスタ
 4012、5012  第2のシフトレジスタ
 5013  第3のシフトレジスタ
 402、403、405、502、503、504、507  AND回路
 404、407、409、411、506、509、511、513  セレクタ
 406、505、508  XOR回路
 408、410、510、512  レジスタ

Claims (19)

  1.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、
     格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御部と、
    を備え、
     前記制御部は、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
     演算装置。
  2.  前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
     前記変数乗算部からの出力結果から一つを選択する選択部と、
     前記選択部の出力値に所定の係数を乗算する係数乗算部と、
     前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
     前記他のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
    をさらに備える、
     請求項1に記載の演算装置。
  3.  前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
     前記他のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第N+1のレジスタである、
     請求項1に記載の演算装置。
  4.  前記制御部は、前記第1のレジスタに格納された格納値を維持したまま前記第2~第N+1のレジスタに格納された格納値を移動させる第1の制御処理と、前記第1~第N+1のレジスタに格納された格納値を全て移動させる第2の制御処理と、を組み合わせて、前記一対の格納値の全組み合わせが出力されるように前記シフトレジスタを制御する、
     請求項1に記載の演算装置。
  5.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、
     格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値x”,…,x”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御部と、
    を備え、
     前記制御部は、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値x”,…,x”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
     演算装置。
  6.  前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
     前記第2のシフトレジスタから出力された第1の格納値と前記第3のシフトレジスタから出力された第2の格納値に基づく前記変数乗算部の出力値と、前記第2のシフトレジスタから出力された第2の格納値と前記第3のシフトレジスタから出力された第1の格納値に基づく前記変数乗算部の出力値とを加算する加算部と、
     前記変数乗算部及び前記加算部からの出力結果から一つを選択する選択部と、
     前記選択部の出力値に所定の係数を乗算する係数乗算部と、
     前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
     前記第2及び第3のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を加算する第2の合計部と、
    をさらに備える、
     請求項5に記載の演算装置。
  7.  前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
     前記第2及び第3のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第N+1のレジスタである、
     請求項5に記載の演算装置。
  8.  前記制御部は、前記第1のレジスタに格納された格納値を維持したまま前記第2~第N+1のレジスタに格納された格納値を移動させる第1の制御処理と、前記第1~第N+1のレジスタに格納された格納値を全て移動させる第2の制御処理と、を組み合わせて、前記一対の格納値の全組み合わせが出力されるように前記シフトレジスタを制御する、
     請求項5に記載の演算装置。
  9.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる工程を含み、
     前記移動させる工程では、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
     制御方法。
  10.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値x”,…,x”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる工程を含み、
     前記移動させる工程では、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値x”,…,x”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
     制御方法。
  11.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、
     前記制御機能は、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
     プログラム。
  12.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値x”,…,x”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、
     前記制御機能は、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値x”,…,x”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
     プログラム。
  13.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、
     各前記演算回路に対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、
    を備え、
     前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、
     前記制御部は、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、
     演算装置。
  14.  各前記演算回路は、
     前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
     前記変数乗算部からの出力結果から一つを選択する選択部と、
     前記選択部の出力値に所定の係数を乗算する係数乗算部と、
     前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
     前記第2のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
    をさらに備え、
     前記第1の合計部及び前記第2の合計部は、パイプライン処理における前段の前記演算回路における第1の合計部及び第2の合計部で合計された値に、前記係数乗算部の出力値をさらに加算する、
     請求項13に記載の演算装置。
  15.  前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
     前記第2のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第M+1のレジスタである、
     請求項13に記載の演算装置。
  16.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、
     各前記演算回路に対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、
    を備え、
     前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、
     前記制御部は、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記第1のシフトレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、
     演算装置。
  17.  各前記演算回路は、
     前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
     前記変数乗算部からの出力結果から一つを選択する選択部と、
     前記選択部の出力値に所定の係数を乗算する係数乗算部と、
     前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
     前記第2のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
    をさらに備え、
     前記第1の合計部及び前記第2の合計部は、パイプライン処理における前段の前記演算回路における第1の合計部及び第2の合計部で合計された値に、前記係数乗算部の出力値をさらに加算する、
     請求項16に記載の演算装置。
  18.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、
     前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、
     前記移動させる工程では、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
     制御方法。
  19.  第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x,…,x,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値x’,…,x’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、
     前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、
     前記移動させる工程では、
     前記格納値x,…,x,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
     前記格納値x’,…,x’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
     制御方法。
     
PCT/JP2013/053651 2012-03-02 2013-02-15 演算装置、制御方法、及びプログラム WO2013129134A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/366,129 US9672007B2 (en) 2012-03-02 2013-02-15 Device for performing arithmetic operations of multivariate polynomials, control method, and program
EP13754141.3A EP2800084A4 (en) 2012-03-02 2013-02-15 CALCULATION DEVICE, CONTROL PROCEDURE AND PROGRAM

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012-046688 2012-03-02
JP2012046688 2012-03-02
JP2012191546 2012-08-31
JP2012-191546 2012-08-31

Publications (1)

Publication Number Publication Date
WO2013129134A1 true WO2013129134A1 (ja) 2013-09-06

Family

ID=49082336

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/053651 WO2013129134A1 (ja) 2012-03-02 2013-02-15 演算装置、制御方法、及びプログラム

Country Status (4)

Country Link
US (1) US9672007B2 (ja)
EP (1) EP2800084A4 (ja)
TW (1) TW201351195A (ja)
WO (1) WO2013129134A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111190569A (zh) * 2019-12-30 2020-05-22 中国科学技术大学 一种基于Intel QAT的同态加密卸载方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10505439A (ja) * 1996-01-26 1998-05-26 ブル・セー・ペー・8 非対称暗号通信方法、および関連の携帯物体
JP2004158951A (ja) * 2002-11-05 2004-06-03 Nippon Telegr & Teleph Corp <Ntt> セキュリティ装置、セキュリティ方法、プログラム及び記録媒体
JP2011107528A (ja) * 2009-11-19 2011-06-02 Sony Corp 情報処理装置、鍵生成装置、署名検証装置、情報処理方法、署名生成方法、及びプログラム
WO2012014669A1 (ja) * 2010-07-30 2012-02-02 ソニー株式会社 認証装置、認証方法、及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346159B2 (en) * 2002-05-01 2008-03-18 Sun Microsystems, Inc. Generic modular multiplier using partial reduction
US7757086B2 (en) * 2004-05-27 2010-07-13 Silverbrook Research Pty Ltd Key transportation
US7631190B2 (en) * 2004-05-27 2009-12-08 Silverbrook Research Pty Ltd Use of variant and base keys with two entities
US8280941B2 (en) * 2007-12-19 2012-10-02 HGST Netherlands B.V. Method and system for performing calculations using fixed point microprocessor hardware

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10505439A (ja) * 1996-01-26 1998-05-26 ブル・セー・ペー・8 非対称暗号通信方法、および関連の携帯物体
JP2004158951A (ja) * 2002-11-05 2004-06-03 Nippon Telegr & Teleph Corp <Ntt> セキュリティ装置、セキュリティ方法、プログラム及び記録媒体
JP2011107528A (ja) * 2009-11-19 2011-06-02 Sony Corp 情報処理装置、鍵生成装置、署名検証装置、情報処理方法、署名生成方法、及びプログラム
WO2012014669A1 (ja) * 2010-07-30 2012-02-02 ソニー株式会社 認証装置、認証方法、及びプログラム

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
ANDREY BOGDANOV; THOMAS EISENBARTH; ANDY RUPP; CHRISTOPHER WOLF: "Time-Area Optimized Public-Key Engines: MQ-Cryptosystems as Replacement for Elliptic Curves?", CHES 2008, vol. 5154, 2008, pages 45 - 61
DAVID ARDITTI; COME BERBAIN; OLIVIER BILLET; HENRI GILBERT: "Compact FPGA Implementations of QUAD", ASIACCS' 07, 20 March 2007 (2007-03-20)
JACQUES PATARIN: "Asymmetric Cryptography with a Hidden Monomial", CRYPTO, 1996, pages 45 - 60, XP019194414
KOICHI SAKUMOTO; TAIZO SHIRAI; HARUNAGA HIWATARI: "Public-Key Identification Schemes Based on Multivariate Quadratic Polynomials", CRYPTO 2011, LNCS, vol. 6841, 2011, pages 706 - 723, XP019161037
PATARIN, J.; COURTOIS, N.; GOUBIN, L.: "Topics in Cryptology - CT-RSA 2001", vol. 2020, April 2001, SPRINGER-VERLAG., article "QUARTZ, 128-Bit Long Digital Signatures", pages: 282 - 297
See also references of EP2800084A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111190569A (zh) * 2019-12-30 2020-05-22 中国科学技术大学 一种基于Intel QAT的同态加密卸载方法
CN111190569B (zh) * 2019-12-30 2022-05-13 中国科学技术大学 一种基于Intel QAT的同态加密卸载方法

Also Published As

Publication number Publication date
EP2800084A4 (en) 2015-11-11
US20140365546A1 (en) 2014-12-11
EP2800084A1 (en) 2014-11-05
TW201351195A (zh) 2013-12-16
US9672007B2 (en) 2017-06-06

Similar Documents

Publication Publication Date Title
WO2013031414A1 (ja) 署名検証装置、署名検証方法、プログラム、及び記録媒体
WO2013031533A1 (ja) 情報処理装置、情報処理方法、及びプログラム
US6052467A (en) System for ensuring that the blinding of secret-key certificates is restricted, even if the issuing protocol is performed in parallel mode
WO2013031555A1 (ja) 情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラム
WO2012014669A1 (ja) 認証装置、認証方法、及びプログラム
WO2013129084A1 (ja) 情報処理装置、情報処理方法、及びプログラム
JPH10505439A (ja) 非対称暗号通信方法、および関連の携帯物体
JP5330858B2 (ja) 署名検証システム、署名検証方法、ブラインド署名生成方法、利用者装置、及びブラインド署名生成プログラム
CN111740821B (zh) 建立共享密钥的方法及装置
WO2013129119A1 (ja) 情報処理装置、情報処理方法、及びプログラム
WO2013129134A1 (ja) 演算装置、制御方法、及びプログラム
KR102599406B1 (ko) 영지식 증명을 위한 암호문 처리 방법 및 장치
CN111970130B (zh) 量子区块链建立方法及系统
CN117917041A (zh) 生成共享加密密钥
CN112507357B (zh) 一种基于密钥生成器的多级接口设计方法
CN114640463A (zh) 一种数字签名方法、计算机设备及介质
Kahanda et al. The future era of quantum computing
WO2013031420A1 (ja) 情報処理装置、署名生成装置、署名検証装置、情報処理方法、署名生成方法、及び署名検証方法
Overmars Survey of rsa vulnerabilities
WO2013031413A1 (ja) 情報処理装置、情報処理方法、プログラム、及び記録媒体
Sarkar et al. Developments in Post‐Quantum Cryptography
Piva Addressing human factors in the design of cryptographic solutions: a two-case study in item validation and authentication
KR20240046201A (ko) 디지털 서명들의 생성
CN114257377A (zh) 一种多变量聚合签名方法、系统、设备及介质
CN116232563A (zh) 一种原像高斯采样方法、系统、电子设备及存储介质

Legal Events

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

Ref document number: 13754141

Country of ref document: EP

Kind code of ref document: A1

REEP Request for entry into the european phase

Ref document number: 2013754141

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2013754141

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 14366129

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

NENP Non-entry into the national phase

Ref country code: JP