WO2013129134A1 - 演算装置、制御方法、及びプログラム - Google Patents
演算装置、制御方法、及びプログラム Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/552—Powers or roots, e.g. Pythagorean sums
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3093—Public 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3218—Cryptographic 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/3221—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization 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
Description
を備え、前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、前記制御部は、前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記格納値xM’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、前記第1のシフトレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、演算装置が提供される。
ここで、以下に記載する本技術の実施形態に関する説明の流れについて簡単に述べる。まず、図1を参照しながら、公開鍵認証方式のアルゴリズム構成について説明する。次いで、図2を参照しながら、電子署名方式のアルゴリズム構成について説明する。次いで、図3を参照しながら、nパスの公開鍵認証方式について説明する。
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:まとめ
本実施形態は、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式に関する。但し、本実施形態は、HFE電子署名方式などの従来手法とは異なり、効率的に解く手段(トラップドア)を持たない多次多変数連立方程式を利用する公開鍵認証方式及び電子署名方式に関する。まず、公開鍵認証方式のアルゴリズム、電子署名方式のアルゴリズム、及びnパスの公開鍵認証方式について、その概要を簡単に説明する。
まず、図1を参照しながら、公開鍵認証方式のアルゴリズムについて概要を説明する。図1は、公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
公開鍵認証方式のモデルには、図1に示すように、証明者と検証者という2つのエンティティが存在する。証明者は、鍵生成アルゴリズムGenを用いて、証明者固有の秘密鍵skと公開鍵pkの組を生成する。次いで、証明者は、鍵生成アルゴリズムGenを用いて生成した秘密鍵skと公開鍵pkの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムPを利用して対話プロトコルを実行する。上記の通り、証明者は、証明者アルゴリズムPを利用し、対話プロトコルの中で秘密鍵skを保有している証拠を検証者に提示する。
鍵生成アルゴリズムGenは、証明者により利用される。鍵生成アルゴリズムGenは、証明者に固有の秘密鍵skと公開鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された公開鍵pkは公開される。そして、公開された公開鍵pkは、検証者により利用される。一方、鍵生成アルゴリズムGenにより生成された秘密鍵skは、証明者が秘密に管理する。そして、証明者により秘密に管理される秘密鍵skは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するために利用される。形式的に、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、秘密鍵skと公開鍵pkを出力するアルゴリズムとして、下記の式(1)のように表現される。
証明者アルゴリズムPは、証明者により利用される。証明者アルゴリズムPは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するためのアルゴリズムである。つまり、証明者アルゴリズムPは、秘密鍵skと公開鍵pkとを入力とし、対話プロトコルを実行するアルゴリズムである。
検証者アルゴリズムVは、検証者により利用される。検証者アルゴリズムVは、対話プロトコルの中で、公開鍵pkに対応する秘密鍵skを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムVは、公開鍵pkを入力とし、対話プロトコルの実行結果に応じて0又は1(1bit)を出力するアルゴリズムである。なお、検証者は、検証者アルゴリズムVが0を出力した場合には証明者が不正なものであると判断し、1を出力した場合には証明者が正当なものであると判断する。形式的に、検証者アルゴリズムVは、下記の式(2)のように表現される。
次に、図2を参照しながら、電子署名方式のアルゴリズムについて概要を説明する。図2は、電子署名方式のアルゴリズムについて概要を説明するための説明図である。
電子署名方式のモデルには、図2に示すように、署名者及び検証者という2つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerという3つのアルゴリズムにより構成される。
鍵生成アルゴリズムGenは、署名者により利用される。鍵生成アルゴリズムGenは、署名者固有の署名鍵skと検証鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された検証鍵pkは公開される。一方、鍵生成アルゴリズムGenにより生成された署名鍵skは、署名者により秘密に管理される。そして、署名鍵skは、文書Mに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、署名鍵sk及び公開鍵pkを出力する。この場合、鍵生成アルゴリズムGenは、形式的に、下記の式(3)のように表現することができる。
署名生成アルゴリズムSigは、署名者により利用される。署名生成アルゴリズムSigは、文書Mに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムSigは、署名鍵skと文書Mとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムSigは、形式的に、下記の式(4)のように表現することができる。
署名検証アルゴリズムVerは、検証者により利用される。署名検証アルゴリズムVerは、電子署名σが文書Mに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムVerは、署名者の検証鍵pk、文書M、電子署名σを入力とし、0又は1(1bit)を出力するアルゴリズムである。この署名検証アルゴリズムVerは、形式的に、下記の式(5)のように表現することができる。なお、検証者は、署名検証アルゴリズムVerが0を出力した場合(公開鍵pkが文書Mと電子署名σを拒否する場合)に電子署名σが不当であると判断し、1を出力した場合(公開鍵pkが文書Mと電子署名σを受理する場合)に電子署名σが正当であると判断する。
次に、図3を参照しながら、nパスの公開鍵認証方式について説明する。図3は、nパスの公開鍵認証方式について説明するための説明図である。
以下、3パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、3パスの公開鍵認証方式のことを「3パス方式」と呼ぶ場合がある。
まず、図4を参照しながら、3パス方式に係る具体的なアルゴリズムの構成例について紹介する。図4は、3パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。ここでは、公開鍵pkの一部として2次多項式の組(f1(x),…,fm(x))を利用する場合について考える。但し、2次多項式fi(x)は、下記の式(6)のように表現されるものとする。また、ベクトル(x1,…,xn)をxと表記し、2次多項式の組(f1(x),…,fm(x))を多変数多項式F(x)と表記することにする。
鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多項式f1(x1,…,xn),…,fm(x1,…,xn)、及びベクトルs=(s1,…,sn)∈Knを生成する。次に、鍵生成アルゴリズムGenは、y=(y1,…,ym)←(f1(s),…,fm(s))を計算する。そして、鍵生成アルゴリズムGenは、(f1(x1,…,xn),…,fm(x1,…,xn),y)を公開鍵pkに設定し、sを秘密鍵に設定する。
以下、図4を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図4に示したフローチャートに沿って説明を進める。
図4に示すように、まず、証明者アルゴリズムPは、ランダムにベクトルr0,t0∈Kn及びe0∈Kmを生成する。次いで、証明者アルゴリズムPは、r1←s-r0を計算する。この計算は、秘密鍵sをベクトルr0によりマスクする操作に相当する。さらに、証明者アルゴリズムPは、t1←r0-t0を計算する。次いで、証明者アルゴリズムPは、e1←F(r0)-e0を計算する。
次いで、証明者アルゴリズムPは、c0←H(r1,G(t0,r1)+e0)を計算する。次いで、証明者アルゴリズムPは、c1←H(t0,e0)を計算する。次いで、証明者アルゴリズムPは、c2←H(t1,e1)を計算する。工程#1で生成されたメッセージ(c0,c1,c2)は、検証者アルゴリズムVに送られる。
メッセージ(c0,c1,c2)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求Chに設定する。この要求Chは証明者アルゴリズムPに送られる。
要求Chを受け取った証明者アルゴリズムPは、受け取った要求Chに応じて検証者アルゴリズムVに送る返答Rspを生成する。Ch=0の場合、証明者アルゴリズムPは、返答Rsp=(r0,t1,e1)を生成する。Ch=1の場合、証明者アルゴリズムPは、返答Rsp=(r1,t0,e0)を生成する。Ch=2の場合、証明者アルゴリズムPは、返答Rsp=(r1,t1,e1)を生成する。工程#3で生成された返答Rspは、検証者アルゴリズムVに送られる。
返答Rspを受け取った検証者アルゴリズムVは、受け取った返答Rspを利用して以下の検証処理を実行する。
次に、図5を参照しながら、図4に示した3パス方式のアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムGenの構成については説明を省略する。
図5に示すように、まず、証明者アルゴリズムPは、i=1~Nについて以下の処理(1)~処理(6)を実行する。
処理(1):証明者アルゴリズムPは、ランダムにベクトルr0i,t0i∈Kn及びe0i∈Kmを生成する。
処理(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)を計算する。
i=1~Nについて上記の処理(1)~処理(6)を実行した後、証明者アルゴリズムPは、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する。工程#1で生成されたハッシュ値Cmtは、検証者アルゴリズムVに送られる。このように、メッセージ(c01,c11,c21,…,c0N,c1N,c2N)をハッシュ値に変換してから検証者アルゴリズムVに送ることで、通信量を削減することが可能になる。
ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求Chiに設定する。要求Ch1,…,ChNは、証明者アルゴリズムPに送られる。
要求Ch1,…,ChNを受け取った証明者アルゴリズムPは、受け取った要求Ch1,…,ChNのそれぞれ応じて検証者アルゴリズムVに送る返答Rsp1,…,RspNを生成する。Chi=0の場合、証明者アルゴリズムPは、Rspi=(r0i,t1i,e1i,c0i)を生成する。Chi=1の場合、証明者アルゴリズムPは、Rspi=(r1i,t0i,e0i,c2i)を生成する。Chi=2の場合、証明者アルゴリズムPは、Rspi=(r1i,t1i,e1i,c1i)を生成する。
返答Rsp1,…,RspNを受け取った検証者アルゴリズムVは、受け取った返答Rsp1,…,RspNを利用して以下の処理(1)~処理(3)をi=1~Nについて実行する。但し、検証者アルゴリズムVは、Chi=0の場合に処理(1)を実行し、Chi=1の場合に処理(2)を実行し、Chi=2の場合に処理(3)を実行する。
次に、5パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、5パスの公開鍵認証方式のことを「5パス方式」と呼ぶ場合がある。
まず、図6を参照しながら、5パス方式に係る具体的なアルゴリズムの構成例について紹介する。図6は、5パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。ここでは、公開鍵pkの一部として2次多項式の組(f1(x),…,fm(x))を利用する場合について考える。但し、2次多項式fi(x)は、上記の式(6)のように表現されるものとする。また、ベクトル(x1,…,xn)をxと表記し、2次多項式の組(f1(x),…,fm(x))を多変数多項式F(x)と表記することにする。
鍵生成アルゴリズムGenは、環K上で定義される多変数多項式f1(x1,…,xn),…,fm(x1,…,xn)、及びベクトルs=(s1,…,sn)∈Knを生成する。次に、鍵生成アルゴリズムGenは、y=(y1,…,ym)←(f1(s),…,fm(s))を計算する。そして、鍵生成アルゴリズムGenは、(f1,…,fm,y)を公開鍵pkに設定し、sを秘密鍵に設定する。なお、以下では、ベクトル(x1,…,xn)をxと表記し、多変数多項式の組(f1(x),…,fm(x))をF(x)と表記する。
以下、図6を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図6に示したフローチャートに沿って説明を進める。
図6に示すように、まず、証明者アルゴリズムPは、ランダムにベクトルr0∈Kn、t0∈Kn、e0∈Kmを生成する。次いで、証明者アルゴリズムPは、r1←s-r0を計算する。この計算は、秘密鍵sをベクトルr0によりマスクする操作に相当する。次いで、証明者アルゴリズムPは、ベクトルr0,t0,e0のハッシュ値c0を生成する。つまり、証明者アルゴリズムPは、c0←H(r0,t0,e0)を計算する。次いで、証明者アルゴリズムPは、G(t0,r1)+e0及びr1のハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c0←H(r1,G(t0,r1)+e0)を計算する。工程#1で生成されたメッセージ(c0,c1)は、検証者アルゴリズムVに送られる。
メッセージ(c0,c1)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数ChAを選択し、選択した数ChAを証明者アルゴリズムPに送る。
数ChAを受け取った証明者アルゴリズムPは、t1←ChA・r0-t0を計算する。さらに、証明者アルゴリズムPは、e1←ChA・F(r0)-e0を計算する。そして、証明者アルゴリズムPは、t1及びe1を検証者アルゴリズムVに送る。
t1及びe1を受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求ChBに設定する。この要求ChBは証明者アルゴリズムPに送られる。
要求ChBを受け取った証明者アルゴリズムPは、受け取った要求ChBに応じて検証者アルゴリズムVに送り返す返答Rspを生成する。ChB=0の場合、証明者アルゴリズムPは、返答Rsp=r0を生成する。ChB=1の場合、証明者アルゴリズムPは、返答Rsp=r1を生成する。工程#5で生成された返答Rspは、検証者アルゴリズムVに送られる。
返答Rspを受け取った検証者アルゴリズムVは、受け取った返答Rspを利用して以下の検証処理を実行する。
次に、図7を参照しながら、図6に示した5パス方式のアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムGenの構成については説明を省略する。
図7に示すように、まず、証明者アルゴリズムPは、i=1~Nについて処理(1)~処理(4)を実行する。
処理(1):証明者アルゴリズムPは、ランダムにベクトルr0i,t0i∈Kn及びe0i∈Kmを生成する。
処理(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に送られる。
ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、q通り存在する環Kの元からランダムに1つの数ChAiを選択し、選択した数ChAi(i=1~N)を証明者アルゴリズムPに送る。
数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に送る。
ハッシュ値dを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求ChBiに設定する。要求ChBi(i=1~N)は証明者アルゴリズムPに送られる。
要求ChBi(i=1~N)を受け取った証明者アルゴリズムPは、i=1~Nについて、受け取った要求ChBiに応じて検証者アルゴリズムVに送り返す返答Rspiを生成する。ChBi=0の場合、証明者アルゴリズムPは、返答Rspi=(r0i,t0i,e0i,c1i)を生成する。ChBi=1の場合、証明者アルゴリズムPは、返答Rspi=(r1i,t1i,e1i,c0i)を生成する。工程#5で生成された返答Rspi(i=1~N)は、検証者アルゴリズムVに送られる。
返答Rspi(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答Rspi(i=1~N)を利用して以下の処理(1)及び処理(2)を実行する。
次に、上記の公開鍵認証方式を電子署名方式へと変形する方法を紹介する。
まず、3パスの公開鍵認証方式から電子署名方式への変形について説明する。
まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)~処理(5)で構成される。
処理(2):署名生成アルゴリズムSigは、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する。
処理(3):署名生成アルゴリズムSigは、(Ch1,…,ChN)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
処理(4):署名生成アルゴリズムSigは、Rspi←Select(Chi,ai)を計算する。
処理(5):署名生成アルゴリズムSigは、(Cmt,Rsp1,…,RspN)を署名に設定する。
次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)~処理(3)で構成される。
処理(2):署名検証アルゴリズムVerは、Ch1,…,ChN及びRsp1,…,RspNを用いてc01,c11,c21,…,c0N,c1N,c2Nを生成する。
処理(3):署名検証アルゴリズムVerは、再生したc01,c11,c21,…,c0N,c1N,c2Nを用いてCmt=H(c01,c11,c21,…,c0N,c1N,c2N)を検証する。
次に、5パスの公開鍵認証方式から電子署名方式への変形について説明する。
まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)~処理(7)で構成される。
処理(2):署名生成アルゴリズムSigは、Cmt←H(c01,c11,…,c0N,c1N)を計算する。
処理(3):署名生成アルゴリズムSigは、(ChA1,…,ChAN)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
処理(4):署名生成アルゴリズムSigは、i=1~Nについて、bi=(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は、Rspi←Select(ChBi,ai,bi)を計算する。
処理(7):署名生成アルゴリズムSigは、(Cmt,d,Rsp1,…,RspN)を電子署名に設定する。
次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)~処理(4)で構成される。
処理(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,Rsp1,…,RspNを用いて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,)を検証する。
上記の各アルゴリズムは、例えば、図10に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図10に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、接触式又は非接触式のICチップ、接触式又は非接触式のICカード、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、Personal Handy-phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
ここで、多次多変数多項式を計算する回路の構成について説明する。
これまで紹介してきた公開鍵認証方式及び電子署名方式を含め、多次多変数多項式の求解問題に安全性の根拠を置く公開鍵認証方式及び電子署名方式を機器に実装する場合、多次多変数多項式を計算する回路の設計が必要になる。特に、図4~図9に示した方式を実装する場合、例えば、入力x1,x2∈{0,1}nに対し、二次多変数多項式F(x1)=(f1(x1),…,fm(x1))、F(x2)=(f1(x2),…,fm(x2))を計算する回路の設計が必要になる。
例えば、二次多変数多項式f(x)は、下記の式(13)のように表現される。但し、x=(x1,…,xN)である。つまり、二次多変数多項式f(x)の計算は、aijxixj及びbixiの項を全て足し合わせる演算に他ならない。従って、演算回路の動作サイクルに合わせて各項の計算値(以下、中間値)を足し込んでいく回路を設計すれば、二次多変数多項式f(x)を計算する回路を構築することができる。
ところで、二次多変数多項式F(x)=(f1(x),…,fm(x))の演算を実行する場合、あるxixj又はxjに関する項の演算が、f1(x),…,fm(x)のそれぞれについて1つ含まれていることに気づくであろう。そのため、処理サイクル数を低減させる観点からは、一度にm本の二次多変数多項式f1(x),…,fm(x)の係数a1ij,…,amij又はb1i,…、bmiを生成しておき、ある変数xixj又はxjに関する項の演算を並列に実行できるようにする方が好ましい。
上記のような演算回路の構成としては、多ビット入力のセレクタを利用した回路構成やシフトレジスタを利用した回路構成などを適用することが可能である。多ビット入力のセレクタを利用した回路構成については、例えば、参考文献1(David Arditti, Come Berbain, Olivier Billet, Henri Gilbert,”Compact FPGA Implementations of QUAD”, ASIACCS’07, March 20-22, 2007, Singapore.)に記載がある。
まず、多ビット入力のセレクタを利用した演算回路の構成について述べる。
多ビット入力のセレクタを利用した演算回路は、二次多変数多項式f(x)を構成する各項の変数xixj又はxiを生成する第1の回路部分(図16及び図17を参照)と、各項の変数に係数aij又はbjを乗算した中間値を足し込んで演算結果zを出力する第2の回路部分(図18を参照)とで構成される。
次に、図19を参照しながら、演算回路の動作について説明する。なお、図中において配線を鎖線で示した部分は、該当するサイクルにおいて実質的に信号が流れないように制御されていることを表している。一方、図中において配線を実線で示した部分は、該当するサイクルにおいて信号が流れるように制御されていることを表している。このような信号経路の制御は、セレクタS1,…,Snを制御することで実現される。
次に、シフトレジスタを利用した演算回路の構成について述べる。シフトレジスタを利用した演算回路の場合、多ビット入力のセレクタを含まず、シフトレジスタの出力をそのまま利用して中間値を生成できるため、最大動作周波数の低下や回路規模の増大を抑制することができる。
シフトレジスタを利用した演算回路は、二次多変数多項式f(x)を構成する各項の変数xixj又はxiを生成する第1の回路部分(図20及び図21を参照)と、各項の変数に係数aij又はbjを乗算した中間値を足し込んで演算結果zを出力する第2の回路部分(図22を参照)とで構成される。
次に、図23~図26を参照しながら、演算回路の動作について説明する。なお、図中において配線を鎖線で示した部分は、該当するサイクルにおいて実質的に信号が流れないように制御されていることを表している。一方、図中において配線を実線で示した部分は、該当するサイクルにおいて信号が流れるように制御されていることを表している。このような信号経路の制御は、セレクタS1,…,Sn+1を制御することで実現される。
次に、複数のフィードバックループを組み込んだシフトレジスタを利用する演算回路の構成について述べる。この構成は、複数のフィードバックループを利用し、格納値の順序を整列するためだけに実施されるローテーションを回避することを可能にする。
シフトレジスタを利用した演算回路は、二次多変数多項式f(x)を構成する各項の変数xixj又はxiを生成する第1の回路部分(図27及び図28を参照)と、各項の変数に係数aij又はbjを乗算した中間値を足し込んで演算結果zを出力する第2の回路部分(図29を参照)とで構成される。
次に、図30~図34を参照しながら、演算回路の動作について説明する。なお、図中において配線を鎖線で示した部分は、該当するサイクルにおいて信号が流れないように制御されていることを表している。一方、図中において配線を実線で示した部分は、該当するサイクルにおいて信号が流れるように制御されていることを表している。
まず、二次多変数多項式F(x)の計算(F(x)を構成するf(x)の計算)に利用可能な演算回路の構成(実施例#1)について述べる。実施例#1に係る演算回路は、2つの入力x1,x2について並列して二次多変数多項式F(x1),F(x2)の計算(f(x1),f(x2)の計算)を実行できるように設計されている。
図35及び図36に示すように、実施例#1に係る演算回路は、シフトレジスタ401と、AND回路402、403と、セレクタ404と、AND回路405と、XOR回路406と、セレクタ407、409と、レジスタ408、410と、セレクタ411とにより構成される。また、シフトレジスタ401は、第1のシフトレジスタ4011、及び第2のシフトレジスタ4012を含む。
次に、図37~図42を参照しながら、実施例#1に係る演算回路の動作について説明する。なお、図中において配線を鎖線で示した部分は、該当するサイクルにおいて実質的に信号が流れないように制御されていることを表している。一方、図中において配線を実線で示した部分は、該当するサイクルにおいて信号が流れるように制御されていることを表している。このような信号経路の制御は、セレクタS1,1,…,S1,n,S2,1,…,S2,n+1、及び、セレクタ404、セレクタ407、セレクタ409、セレクタ411を制御することで実現される。
次に、二次多変数多項式F(x1)及びG(x2,x3)の計算に利用可能な演算回路の構成(実施例#2)について述べる。実施例#2に係る演算回路は、3つの入力x1,x2,x3について並列して二次多変数多項式F(x1),G(x2,x3)の計算(f(x1),g(x2,x3)の計算)を実行できるように設計されている。
図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を含む。
次に、図45~図50を参照しながら、実施例#2に係る演算回路の動作について説明する。但し、実施例#2に係る演算回路の動作は、実施例#1に係る演算回路の動作と同様であるため、詳細な説明を省略し、相違点に注目して説明を進める。
上述してきた演算回路を用いることで、多変数多項式の求解問題に安全性の根拠を置く公開鍵認証方式及び電子署名方式の実装に際して回路規模の低減及び処理速度の向上を果たすことが可能になる。このような公開鍵認証方式及び電子署名方式においては、二次多項式f(x1)、f(x2)の演算を別々のx1、x2に対して複数回(例えば140回)計算して、対話プロトコルの繰り返し回数を大きくすることで偽証が成功する確率は無視できる程度に小さくすることができる。
まず、記録メモリのデータ構造を、分割しやすいデータ構造にする方法を説明する。図51は、記録メモリのデータ構造例を示す説明図である。図51は、後述する4ビット、4段パイプラインの演算回路が参照する記録メモリのデータ構造例を示す説明図である。二次多項式の演算処理を実行する演算回路を複数個並列に配置する際に、図51のようなデータ構造にしておくことで、アドレスを二重に持つ必要がなくなる。なぜなら、演算処理の実行の際にアドレスをインクリメントしていき、最後のアドレスに達すると、今度はアドレスをデクリメントしていけばよいからである。
次に、図62~図65を用いて、実施例#3に係る演算回路の動作について説明する。図62~図65は、それぞれ、演算回路600a~600dのレジスタの格納値、ROM690から読み出される係数、セレクタに供給される信号及び演算回路600a~600dからの出力値をまとめたものである。
なお、図64に示した演算回路600cのレジスタの格納値は、演算回路600bにおいてサイクル数1~サイクル数6からなるローテーションが実行された後に演算回路600cに供給されるものである。
なお、図65に示した演算回路600dのレジスタの格納値は、演算回路600cにおいてサイクル数1~サイクル数6からなるローテーションが実行された後に演算回路600dに供給されるものである。
次に、実施例#4に係る演算回路について説明する。実施例#3に係る演算回路は、2つの入力x1、x2を同じ順序で演算することで、単純に実施例#1に係る演算回路を複数並列に設けた場合に比べて、レジスタの数を削減することができることを説明したが、2つの入力x1、x2の演算順序をお互い逆にすることで、レジスタの数をさらに削減することができる。
図66は、実施例#4に係る演算回路の構成を示す説明図である。図66に示した演算回路は、入力xが4ビットの場合に二次多項式を演算して出力するものである。図66に示したように、実施例#4に係る演算回路は、演算回路700a、700b、700c、700dと、係数が格納されるROM790と、を含んで構成される。そして、ROM790は、2つの領域790a、790bに分割されている。
次に、図75~図82を用いて、実施例#4に係る演算回路の動作について説明する。図75~図82は、それぞれ、演算回路700a~700dのレジスタの格納値、ROM690から読み出される係数、セレクタに供給される信号及び演算回路700a~700dからの出力値をまとめたものである。図75及び図76が、演算回路700aについてまとめたものであり、図77及び図78が、演算回路700bについてまとめたものであり、図79及び図80が、演算回路700cについてまとめたものであり、図81及び図82が、演算回路700dについてまとめたものである。
最後に、本技術の実施形態に係る技術内容について簡単に纏める。ここで述べる技術内容は、例えば、PC、携帯電話、ゲーム機、情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。なお、以下で述べる装置の機能は、1つ又は複数の回路により実現することも可能であるし、1台の情報処理装置を利用して実現することも可能であるし、或いは、複数台の情報処理装置を利用して実現することも可能である。また、以下で述べる装置が処理を実行する際に用いるデータ記憶手段及び演算処理手段は、当該装置に設けられたものであってもよいし、ネットワークを介して接続された機器に設けられたものであってもよい。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、
格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御部と、
を備え、
前記制御部は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
演算装置。
前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
前記変数乗算部からの複数の出力結果から一つを選択する選択部と、
前記選択部の出力値に所定の係数を乗算する係数乗算部と、
前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
前記他のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
をさらに備える、
上記(1)に記載の演算装置。
前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
前記他のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第N+1のレジスタである、
上記(1)又は(2)に記載の演算装置。
前記制御部は、前記第1のレジスタに格納された格納値を維持したまま前記第2~第N+1のレジスタに格納された格納値を移動させる第1の制御処理と、前記第1~第N+1のレジスタに格納された格納値を全て移動させる第2の制御処理と、を組み合わせて、前記一対の格納値の全組み合わせが出力されるように前記シフトレジスタを制御する、
上記(1)~(3)のいずれか1項に記載の演算装置。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、
格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値xN”,…,x1”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御部と、
を備え、
前記制御部は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値xN”,…,x1”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
演算装置。
前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
前記第2のシフトレジスタから出力された第1の格納値と前記第3のシフトレジスタから出力された第2の格納値に基づく前記変数乗算部の出力値と、前期第2のシフトレジスタから出力された第2の格納値と前記第3のシフトレジスタから出力された第1の格納値に基づく前記変数乗算部の出力値とを加算する加算部と、
前記変数乗算部及び前記加算部からの複数の出力結果から一方を選択する選択部と、
前記選択部の出力値に所定の係数を乗算する係数乗算部と、
前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
前記第2及び第3のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を加算する第2の合計部と、
をさらに備える、
上記(5)に記載の演算装置。
前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
前記第2及び第3のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第N+1のレジスタである、
上記(5)又は(6)に記載の演算装置。
前記制御部は、前記第1のレジスタに格納された格納値を維持したまま前記第2~第N+1のレジスタに格納された格納値を移動させる第1の制御処理と、前記第1~第N+1のレジスタに格納された格納値を全て移動させる第2の制御処理と、を組み合わせて、前記一対の格納値の全組み合わせが出力されるように前記シフトレジスタを制御する、
上記(5)~(8)のいずれか1項に記載の演算装置。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる工程を含み、
前記移動させる工程では、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
制御方法。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値xN”,…,x1”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる工程を含み、
前記移動させる工程では、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値xN”,…,x1”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
制御方法。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、
前記制御機能は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
プログラム。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値xN”,…,x1”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、
前記制御機能は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値xN”,…,x1”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
プログラム。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、
各前記演算回路に対し、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値xM’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、
を備え、
前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、
前記制御部は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xM’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、
演算装置。
各前記演算回路は、
前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
前記変数乗算部からの出力結果から一つを選択する選択部と、
前記選択部の出力値に所定の係数を乗算する係数乗算部と、
前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
前記第2のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
をさらに備え、
前記第1の合計部及び前記第2の合計部は、パイプライン処理における前段の前記演算回路における第1の合計部及び第2の合計部で合計された値に、前記係数乗算部の出力値をさらに加算する、
上記(13)に記載の演算装置。
前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
前記第2のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第M+1のレジスタである、
上記(13)または(14)に記載の演算装置。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、
各前記演算回路に対し、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値xM’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、
を備え、
前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、
前記制御部は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xM’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記第1のシフトレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、
演算装置。
各前記演算回路は、
前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
前記変数乗算部からの出力結果から一つを選択する選択部と、
前記選択部の出力値に所定の係数を乗算する係数乗算部と、
前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
前記第2のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
をさらに備え、
前記第1の合計部及び前記第2の合計部は、パイプライン処理における前段の前記演算回路における第1の合計部及び第2の合計部で合計された値に、前記係数乗算部の出力値をさらに加算する、
上記(16)に記載の演算装置。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xM’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、
前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、
前記移動させる工程では、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xM’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
制御方法。
第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xM’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、
前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、
前記移動させる工程では、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xM’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
制御方法。
上記のプログラムが記録された、コンピュータにより読み取り可能な記録媒体。
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~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、
格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御部と、
を備え、
前記制御部は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
演算装置。 - 前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
前記変数乗算部からの出力結果から一つを選択する選択部と、
前記選択部の出力値に所定の係数を乗算する係数乗算部と、
前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
前記他のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
をさらに備える、
請求項1に記載の演算装置。 - 前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
前記他のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第N+1のレジスタである、
請求項1に記載の演算装置。 - 前記制御部は、前記第1のレジスタに格納された格納値を維持したまま前記第2~第N+1のレジスタに格納された格納値を移動させる第1の制御処理と、前記第1~第N+1のレジスタに格納された格納値を全て移動させる第2の制御処理と、を組み合わせて、前記一対の格納値の全組み合わせが出力されるように前記シフトレジスタを制御する、
請求項1に記載の演算装置。 - 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタと、
格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値xN”,…,x1”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御部と、
を備え、
前記制御部は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値xN”,…,x1”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
演算装置。 - 前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
前記第2のシフトレジスタから出力された第1の格納値と前記第3のシフトレジスタから出力された第2の格納値に基づく前記変数乗算部の出力値と、前記第2のシフトレジスタから出力された第2の格納値と前記第3のシフトレジスタから出力された第1の格納値に基づく前記変数乗算部の出力値とを加算する加算部と、
前記変数乗算部及び前記加算部からの出力結果から一つを選択する選択部と、
前記選択部の出力値に所定の係数を乗算する係数乗算部と、
前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
前記第2及び第3のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を加算する第2の合計部と、
をさらに備える、
請求項5に記載の演算装置。 - 前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
前記第2及び第3のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第N+1のレジスタである、
請求項5に記載の演算装置。 - 前記制御部は、前記第1のレジスタに格納された格納値を維持したまま前記第2~第N+1のレジスタに格納された格納値を移動させる第1の制御処理と、前記第1~第N+1のレジスタに格納された格納値を全て移動させる第2の制御処理と、を組み合わせて、前記一対の格納値の全組み合わせが出力されるように前記シフトレジスタを制御する、
請求項5に記載の演算装置。 - 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる工程を含み、
前記移動させる工程では、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
制御方法。 - 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値xN”,…,x1”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる工程を含み、
前記移動させる工程では、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値xN”,…,x1”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
制御方法。 - 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された他の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、
前記制御機能は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記他のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
プログラム。 - 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な複数のシフトレジスタのうち、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xN’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第2の前記シフトレジスタについて格納値を移動させ、当該第2のシフトレジスタと同じサイクルで、格納値xN”,…,x1”,c”(c”は所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第3の前記シフトレジスタについて格納値を移動させる制御機能をコンピュータに実現させるためのプログラムであり、
前記制御機能は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xN’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせ、及び、前記格納値xN”,…,x1”,c”の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2及び第3のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる、
プログラム。 - 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、
各前記演算回路に対し、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値xM’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、
を備え、
前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、
前記制御部は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xM’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、
演算装置。 - 各前記演算回路は、
前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
前記変数乗算部からの出力結果から一つを選択する選択部と、
前記選択部の出力値に所定の係数を乗算する係数乗算部と、
前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
前記第2のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
をさらに備え、
前記第1の合計部及び前記第2の合計部は、パイプライン処理における前段の前記演算回路における第1の合計部及び第2の合計部で合計された値に、前記係数乗算部の出力値をさらに加算する、
請求項13に記載の演算装置。 - 前記第1のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第2のレジスタであり、
前記第2のシフトレジスタにおける前記所定の一対のレジスタは、前記第1及び第M+1のレジスタである、
請求項13に記載の演算装置。 - 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路と、
各前記演算回路に対し、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された前記第1のシフトレジスタについて格納値を移動させ、前記第1のシフトレジスタと同じサイクルで、格納値xM’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる制御部と、
を備え、
前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、
前記制御部は、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xM’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記第1のシフトレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成される、
演算装置。 - 各前記演算回路は、
前記各シフトレジスタから出力された2つの格納値を乗算する変数乗算部と、
前記変数乗算部からの出力結果から一つを選択する選択部と、
前記選択部の出力値に所定の係数を乗算する係数乗算部と、
前記第1のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第1の合計部と、
前記第2のシフトレジスタから出力された格納値に関する前記係数乗算部の出力値を全て加算する第2の合計部と、
をさらに備え、
前記第1の合計部及び前記第2の合計部は、パイプライン処理における前段の前記演算回路における第1の合計部及び第2の合計部で合計された値に、前記係数乗算部の出力値をさらに加算する、
請求項16に記載の演算装置。 - 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xM’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、
前記複数の演算回路は、前記第1のシフトレジスタと前記第2のシフトレジスタとは同じ順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、
前記移動させる工程では、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xM’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
制御方法。 - 第1~第N+1のレジスタで構成され、第n+1のレジスタ(n=1~N)から第nのレジスタへと格納値を移動させることが可能な第1のシフトレジスタ及び第1~第M+1のレジスタで構成され、第m+1のレジスタ(m=1~M)から第mのレジスタへと格納値を移動させることが可能な第2のシフトレジスタを含む複数の演算回路のそれぞれに対し、格納値x1,…,xN,c(cは所定数)がそれぞれ前記第1~第N+1のレジスタに格納された第1の前記シフトレジスタについて格納値を移動させ、当該第1のシフトレジスタと同じサイクルで、格納値xM’,…,x1’,c’(c’は所定数)がそれぞれ前記第1~第M+1のレジスタに格納された前記第2のシフトレジスタについて格納値を移動させる工程を含み、
前記複数の演算回路は直列に接続されて、前記第1のシフトレジスタと前記第2のシフトレジスタとは逆の順序でパイプライン処理を実行するよう構成され、前記第1のシフトレジスタのレジスタの数N+1及び前記第2のシフトレジスタのレジスタの数M+1は、パイプライン処理における後の演算回路になるほど少なくなるよう構成され、
前記移動させる工程では、
前記格納値x1,…,xN,cの中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第1のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させ、
前記格納値xM’,…,x1’,c’の中から選択可能な一対の格納値の全組み合わせが出力されるように、前記格納値を移動させつつ、前記第2のシフトレジスタを構成する所定の一対のレジスタから格納値を出力させる処理が実行される、
制御方法。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190569A (zh) * | 2019-12-30 | 2020-05-22 | 中国科学技术大学 | 一种基于Intel QAT的同态加密卸载方法 |
Citations (4)
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)
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 |
-
2013
- 2013-01-21 TW TW102102204A patent/TW201351195A/zh unknown
- 2013-02-15 US US14/366,129 patent/US9672007B2/en active Active
- 2013-02-15 WO PCT/JP2013/053651 patent/WO2013129134A1/ja active Application Filing
- 2013-02-15 EP EP13754141.3A patent/EP2800084A4/en not_active Withdrawn
Patent Citations (4)
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)
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)
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 |