JP5505173B2 - LIST GENERATION DEVICE, LIST GENERATION METHOD, AND LIST GENERATION PROGRAM - Google Patents
LIST GENERATION DEVICE, LIST GENERATION METHOD, AND LIST GENERATION PROGRAM Download PDFInfo
- Publication number
- JP5505173B2 JP5505173B2 JP2010172899A JP2010172899A JP5505173B2 JP 5505173 B2 JP5505173 B2 JP 5505173B2 JP 2010172899 A JP2010172899 A JP 2010172899A JP 2010172899 A JP2010172899 A JP 2010172899A JP 5505173 B2 JP5505173 B2 JP 5505173B2
- Authority
- JP
- Japan
- Prior art keywords
- point
- value
- list generation
- list
- elliptic curve
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
本発明は、リスト生成装置、リスト生成方法およびリスト生成プログラムに関する。 The present invention relates to a list generation device, a list generation method, and a list generation program.
近年、ネットショッピングやネットバンキングが普及している。ネットショッピングやネットバンキングにおいて通信を行う場合には、情報漏洩などを防止するために、共通鍵暗号などの暗号技術が利用されている。 In recent years, online shopping and online banking have become widespread. When performing communication in online shopping or online banking, encryption techniques such as common key encryption are used to prevent information leakage.
公開鍵暗号は、対になる2つの鍵を使ってデータの暗号化、復号をおこなう方式である。すなわち、送信者は受信者によって公開されている公開鍵でメッセージを暗号化して送信する。これに対して、受信者は、暗号化されたメッセージを秘密鍵で復号する。公開鍵は、メッセージを暗号化するための鍵であり、秘密鍵は、公開鍵により暗号化された情報を復号するための鍵である。公開鍵で暗号化された情報は、対の秘密鍵でのみ復号することができる。 Public key cryptography is a method of encrypting and decrypting data using two pairs of keys. In other words, the sender encrypts the message with the public key published by the receiver and sends it. In contrast, the recipient decrypts the encrypted message with the secret key. The public key is a key for encrypting a message, and the secret key is a key for decrypting information encrypted with the public key. Information encrypted with the public key can only be decrypted with the private key of the pair.
この公開鍵暗号は、公開鍵を公開しても安全性を確保できるように、数学的に難しいとされている問題に基づいて設計されている。例えば、公開鍵暗号は、離散対数問題に基づいて設計される。この離散対数問題は、p個の元からなる可換群の生成元G、α∈Zpとした場合に、G、Gαからαを求めるというものである。 This public key encryption is designed based on a mathematically difficult problem so that security can be ensured even if the public key is disclosed. For example, public key cryptography is designed based on the discrete logarithm problem. This discrete logarithm problem is that α is obtained from G and G α when a generator G of a commutative group consisting of p elements and αεZp.
また、上記離散対数問題に補助情報dを加え、G、Gα、
このうち決定的アルゴリズムは、計算量が膨大であるため、この決定的アルゴリズムを用いて離散対数問題を解くことは現実的に難しい。このため、Cheonらは、「Pollard's kangaroo algorithm」を適用することで計算量を削減した確率的アルゴリズムを提案している。この確率的アルゴリズムは、上記離散対数問題に対してだけではなく、楕円曲線上の離散対数問題にも適用されている。楕円曲線上の離散対数問題を楕円曲線離散対数問題と表記する。楕円曲線離散対数問題は、楕円曲線上の3点G、G1=αG、Gd=αdGから未知数αを求める問題である。 Of these, the deterministic algorithm has an enormous amount of calculation, and it is practically difficult to solve the discrete logarithm problem using this deterministic algorithm. For this reason, Cheon et al. Have proposed a stochastic algorithm that reduces the amount of computation by applying the “Pollard's kangaroo algorithm”. This probabilistic algorithm is applied not only to the discrete logarithm problem but also to a discrete logarithm problem on an elliptic curve. A discrete logarithm problem on an elliptic curve is expressed as an elliptic curve discrete logarithm problem. The elliptic curve discrete logarithm problem is a problem of finding an unknown α from three points G, G 1 = αG, G d = α d G on the elliptic curve.
この確率的アルゴリズムでは、G、Gdから検索したk1と、G、G1から検索したk2とを用いて未知数αを求める。ここで、確率的アルゴリズムが、k1、k2を求める場合には、楕円曲線上の特徴点(distinguished point)を収集したリストが利用される。確率的アルゴリズムにおいてリストを生成する場合には、ランダムウォーク関数に楕円曲線上の点を順次代入した値に基づいて、楕円曲線上の点を順次スカラ倍算することで特徴点を求める。 In the probabilistic algorithm, G, and k1 retrieved from G d, G, determine the unknowns α using and k2 retrieved from G 1. Here, when the probabilistic algorithm obtains k1 and k2, a list in which characteristic points (distinguished points) on an elliptic curve are collected is used. When a list is generated by the probabilistic algorithm, feature points are obtained by sequentially multiplying points on the elliptic curve based on values obtained by sequentially substituting the points on the elliptic curve into the random walk function.
なお、ランダムウォーク関数を利用してリストを作成するためには、膨大な繰り返し処理が必要となる。このため従来では、リストを作成する場合の初期点を多数設定することで、複数のコンピュータで並列処理を行い、リストを作成する場合の処理負荷を分散させている。 In addition, in order to create a list using a random walk function, enormous repetition processing is required. For this reason, conventionally, by setting a large number of initial points when creating a list, parallel processing is performed by a plurality of computers, and the processing load when creating a list is distributed.
コンピュータがリストを生成する場合には、楕円曲線上の点に対してスカラ倍算を実行する必要があり、このスカラ倍算の計算コストが非常に大きいものとなる。このため、スカラ倍算の計算コストを抑え、リストを生成する処理を高速化することが求められる。 When the computer generates the list, it is necessary to perform scalar multiplication on the points on the elliptic curve, and the calculation cost of this scalar multiplication becomes very high. For this reason, it is required to reduce the calculation cost of scalar multiplication and to speed up the process of generating a list.
開示の技術は、上記に鑑みてなされたものであって、スカラ倍算の計算コストを抑え、リストを生成する処理を高速化することができるリスト生成装置、リスト生成方法およびリスト生成プログラムを提供することを目的とする。 The disclosed technology has been made in view of the above, and provides a list generation device, a list generation method, and a list generation program capable of reducing the calculation cost of scalar multiplication and speeding up the process of generating a list The purpose is to do.
本願の開示するリスト生成装置は、楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶する固定点テーブルと、前記楕円曲線上の点に対してランダムウォーク関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶部に記憶する疑似ランダム関数適用部と、前記記憶部に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成部と、前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出部と、前記点算出部が算出した各点を収集し、リストを生成するリスト生成部とを備えたことを要件とする。 The list generation apparatus disclosed in the present application uses a fixed point table that stores a plurality of values obtained by multiplying predetermined points on an elliptic curve by different scalar values, and a random walk function for the points on the elliptic curve. The points on the elliptic curve are calculated, a pseudo random function application unit that stores the calculated points in the storage unit, and the values of the points stored in the storage unit are summed, and a scalar value based on the total value A combination of a value corresponding to the scalar value among the values stored in the fixed point table and adding the determined values to each other on the elliptic curve. A point calculation unit that calculates the next point on the elliptic curve from the point and a list generation unit that collects each point calculated by the point calculation unit and generates a list.
本願の開示するリスト生成装置の一つの態様によれば、スカラ倍算の計算コストを抑え、リストを生成する処理を高速化することという効果を奏する。 According to one aspect of the list generation device disclosed in the present application, it is possible to reduce the calculation cost of scalar multiplication and to speed up the process of generating a list.
まず、本願の開示する暗号鍵解読装置における技術を説明するうえで前提となる技術を図面を利用して説明する。 First, a technique that is a prerequisite for explaining the technique in the encryption key decryption apparatus disclosed in the present application will be described with reference to the drawings.
まず、補助情報付きの楕円曲線離散対数問題を解くCheonらの確率的アルゴリズムの処理手順について説明する。図1は、Cheonらの確率的アルゴリズムの処理手順を示すフローチャートである。 First, the processing procedure of the stochastic algorithm of Cheon et al. For solving the elliptic curve discrete logarithm problem with auxiliary information will be described. FIG. 1 is a flowchart showing the processing procedure of the stochastic algorithm of Cheon et al.
図1に示すように、確率的アルゴリズムでは、E、G、G1、Gd、lenを取得する(ステップS10)。ここで、Eは、楕円曲線の各種パラメータである。G、G1、Gdは、楕円曲線上の点であり、G1=αG、Gd=αdGとする。lenは、リストを生成する場合に利用する閾値である。lenは、楕円曲線の点Gの位数rの4乗根程度の値が設定される。 As shown in FIG. 1, in the probabilistic algorithm, E, G, G 1 , G d , and len are acquired (step S10). Here, E is various parameters of the elliptic curve. G, G 1 , and G d are points on the elliptic curve, and G 1 = αG and G d = α d G. len is a threshold used when a list is generated. len is set to a value about the fourth root of the order r of the point G of the elliptic curve.
確率的アルゴリズムでは、Zrの生成元ζを生成し(ステップS11)、sおよびs’を設定する(ステップS12)。ステップS12において、sは「(r−1)/d」により算出される。また、s’はdに対応する。 The probabilistic algorithm, to generate the origin ζ of Z r (step S11), and sets the s and s' (step S12). In step S12, s is calculated by “(r−1) / d”. S ′ corresponds to d.
確率的アルゴリズムでは、E、G、Gd、s、s’、ζ、lenを基にして、衝突検出処理を実行することでk1を得る(ステップS13)。また、確率的アルゴリズムでは、E、G、G1、s、s’、ζ、lenを基にして、衝突検出処理を実行することでk2を得る(ステップS14)。 In the probabilistic algorithm, k1 is obtained by executing the collision detection process based on E, G, G d , s, s ′, ζ, and len (step S13). In the probabilistic algorithm, k2 is obtained by executing the collision detection process based on E, G, G 1 , s, s ′, ζ, and len (step S14).
確率的アルゴリズムでは、k1、k2を基にしてαを算出し(ステップS15)、αを出力する(ステップS16)。ステップS15において、αは、「
次に、図1のステップS13およびステップS14に示した衝突検出処理の処理手順について説明する。図2は、従来の衝突検出処理の処理手順を示すフローチャートである。図2のフローチャートでは、G0、G’0を用いて説明する。図1の確率的アルゴリズムにおいて、E、G、Gd、s、s’、ζ、lenを基にして衝突検出処理を実行する場合には、G0は、Gに対応し、G’0はGdに対応する。これに対して、E、G、G1、s、s’、ζ、lenを基にして衝突検出処理を実行する場合には、G0は、Gに対応し、G’0はG1に対応する。 Next, the process procedure of the collision detection process shown in step S13 and step S14 of FIG. 1 will be described. FIG. 2 is a flowchart showing a processing procedure of a conventional collision detection process. In the flowchart of FIG. 2, description will be made using G 0 and G ′ 0 . In the probabilistic algorithm of FIG. 1, when the collision detection process is executed based on E, G, G d , s, s ′, ζ, len, G 0 corresponds to G, and G ′ 0 Corresponds to Gd . On the other hand, when the collision detection process is executed based on E, G, G 1 , s, s ′, ζ, and len, G 0 corresponds to G, and G ′ 0 corresponds to G 1 . Correspond.
図2に示すように、衝突検出処理では、E、G0、ζs’、lenを基にして、リスト生成処理を実行することで、list1を得る(ステップS20)。衝突検出処理では、E、G’0、ζs’、lenを基にして、リスト生成処理を実行することで、list2を得る(ステップS21)。 As shown in FIG. 2, in the collision detection process, list1 is obtained by executing the list generation process based on E, G 0 , ζ s ′ , and len (step S20). In the collision detection process, list2 is obtained by executing the list generation process based on E, G ′ 0 , ζ s ′ , and len (step S21).
衝突検出処理では、list1とlist2とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS22)。衝突検出処理では、インデックスv、uを基にして、kを算出し(ステップS23)、kを出力する(ステップS24)。ステップS23においてkは、「
なお、上記kを算出する式において、fsは疑似ランダム関数である。たとえばfsは、楕円曲線上の点G=(x、y)が与えられた時に、x mod sを返す関数である。また、ランダムウォーク関数Fsは、楕円曲線の点Gを他の楕円曲線上の点に写像する関数で、「
例えば、E、G、Gd、s、s’、ζ、lenを基にして衝突検出処理を実行する場合には、上記kを算出する式により、k1が求められる。これに対して、E、G、G1、s、s’、ζ、lenを基にして衝突検出処理を実行する場合には、上記kを算出する式により、k2が求められる。 For example, when the collision detection process is executed based on E, G, G d , s, s ′, ζ, and len, k1 is obtained by the equation for calculating k. On the other hand, when the collision detection process is executed based on E, G, G 1 , s, s ′, ζ, and len, k2 is obtained by the equation for calculating k.
次に、図2のステップS20およびステップS21に示したリスト生成処理の処理手順について説明する。図3は、従来のリスト生成処理の処理手順を示すフローチャートである。図3に示すように、リスト生成処理では、iの値を初期値に設定し(ステップS30)、Gi+1の値を算出する(ステップS31)。ステップS31において、Gi+1は、「
リスト生成処理では、Gi+1の値が特徴点(distinguished point)であるか否かを判定する(ステップS32)。ステップS32において、リスト生成処理では、Gi+1の値の一部が所定の値となっている場合は、楕円曲線の点Gi+1の値が特徴点であると判定する。 In the list generation process, it is determined whether or not the value of G i + 1 is a characteristic point (distinguished point) (step S32). In step S32, in the list generation process, if a part of the value of G i + 1 is a predetermined value, it is determined that the value of the point G i + 1 of the elliptic curve is a feature point.
リスト生成処理では、Gi+1の値が特徴点ではないと判定した場合には(ステップS32,No)、ステップS34に移行する。一方、リスト生成処理では、Gi+1の値が特徴点であると判定した場合には(ステップS32,Yes)、listにGi+1の値を登録する(ステップS33)。 In the list generation process, when it is determined that the value of G i + 1 is not a feature point (No in step S32), the process proceeds to step S34. On the other hand, in the list generation process, when it is determined that the value of G i + 1 is a feature point (step S32, Yes), the value of G i + 1 is registered in the list (step S33).
リスト生成処理では、iの値に1を加算し(ステップS34)、iの値がlenよりも大きいか否かを判定する(ステップS35)。リスト生成処理では、iの値がlen以下の場合には(ステップS35,No)、ステップS31に移行する。一方、リスト生成処理では、iの値がlenよりも大きい場合には(ステップS35,Yes)、処理を終了する。 In the list generation process, 1 is added to the value of i (step S34), and it is determined whether the value of i is larger than len (step S35). In the list generation process, when the value of i is equal to or less than len (No in step S35), the process proceeds to step S31. On the other hand, in the list generation process, when the value of i is larger than len (step S35, Yes), the process ends.
ステップS33において、リスト生成処理では、インデックスiと、Gi+1の値とを対応付けて、listに登録するものとする。また、E、G0、ζs’、lenを基にしてリスト生成処理を実行する場合には、上記listは、list1に対応する。この場合、listのインデックスiは、list1のインデックスvに対応する。 In step S33, in the list generation process, the index i and the value of G i + 1 are associated with each other and registered in the list. When the list generation process is executed based on E, G 0 , ζs ′, and len, the list corresponds to list1. In this case, the index i of list corresponds to the index v of list1.
また、E、G’0、ζs’、lenを基にしてリスト生成処理を実行する場合には、上記listは、list2に対応する。この場合、listのインデックスiは、list2のインデックスuに対応する。 When the list generation process is executed based on E, G ′ 0 , ζs ′, and len, the list corresponds to list2. In this case, the index i of list corresponds to the index u of list2.
現在の楕円曲線離散対数問題では、安全性を確保するために、楕円曲線の点の位数rは2160が利用されている。したがって、上記確率的アルゴリズムを実行する場合には、lenは240程度の値が指定される。lenの値が240に指定されると、図3に示したリスト生成処理を、240回繰り返し実行する必要があり、計算量が膨大なものとなる。
Current elliptic curve discrete logarithm problem, in order to ensure safety, of order r of a point of the
図1〜図3に示したアルゴリズムは、複数のコンピュータ0〜nによって並列処理することで高速化を図ることができる。例えば、複数のコンピュータ0〜nは、ネットワークを介して相互に接続されており、協働して並列処理を実行する。この並列処理では、複数のコンピュータ1〜nがそれぞれlistを生成し、コンピュータ0が各listを収集する。コンピュータ0は、各listを利用して、未知数αを算出する。
The algorithm shown in FIGS. 1 to 3 can be speeded up by parallel processing by a plurality of computers 0 to n. For example, the plurality of computers 0 to n are connected to each other via a network and cooperate to execute parallel processing. In this parallel processing, the plurality of
図4および図5は、確率的アルゴリズムを並列処理する場合の処理手順を示すフローチャートである。なお、図4のステップS40〜S43の処理、図5のステップS50〜S52、S59〜S62の処理は、コンピュータ0が実行する処理とする。図4のステップS44の処理は、コンピュータ1〜n/4がそれぞれlistを生成する処理とする。図4のステップS47の処理は、コンピュータn/4〜n/2がそれぞれlistを生成する処理とする。図5のステップS53の処理は、コンピュータn/2〜3n/4がそれぞれlistを生成する処理とする。図5のステップS56の処理は、コンピュータ3n/4〜nがそれぞれlistを生成する処理とする。
FIG. 4 and FIG. 5 are flowcharts showing a processing procedure when the probabilistic algorithms are processed in parallel. The processes in steps S40 to S43 in FIG. 4 and the processes in steps S50 to S52 and S59 to S62 in FIG. 5 are processes executed by the computer 0. The process in step S44 in FIG. 4 is a process in which the
図4に示すように、並列処理では、E、G、G1、Gd、lenを取得し(ステップS40)、生成元ζを生成する(ステップS41)。また、並列処理では、sおよびs’を算出し(ステップS42)、iの値を初期値に設定する(ステップS43)。 As shown in FIG. 4, in parallel processing, E, G, G 1 , G d , and len are acquired (step S40), and a generation source ζ is generated (step S41). In parallel processing, s and s ′ are calculated (step S42), and the value of i is set to an initial value (step S43).
並列処理では、E、Gi、ζs’、lenを基にして、リスト生成処理を実行することで、list1を得る(ステップS44)。並列処理では、iの値に1を加算し(ステップS45)、iの値がn/4よりも大きいか否かを判定する(ステップS46)。iの値がn/4以下の場合には(ステップS46,No)、ステップS44に移行する。 In the parallel processing, list1 is obtained by executing list generation processing based on E, G i , ζ s ′ , and len (step S44). In the parallel processing, 1 is added to the value of i (step S45), and it is determined whether or not the value of i is larger than n / 4 (step S46). When the value of i is n / 4 or less (No in step S46), the process proceeds to step S44.
一方、iの値がn/4よりも大きい場合には(ステップS46,Yes)、並列処理では、E、Gid、ζs’、lenを基にして、リスト生成処理を実行することで、list2を得る(ステップS47)。並列処理では、iの値に1を加算し(ステップS48)、iの値がn/2よりも大きいか否かを判定する(ステップS49)。iの値がn/2以下の場合には(ステップS49,No)、ステップS47に移行する。 On the other hand, when the value of i is larger than n / 4 (step S46, Yes), in parallel processing, by executing list generation processing based on E, G id , ζ s ′ , and len, list2 is obtained (step S47). In the parallel processing, 1 is added to the value of i (step S48), and it is determined whether or not the value of i is larger than n / 2 (step S49). When the value of i is n / 2 or less (step S49, No), the process proceeds to step S47.
一方、iの値がn/2よりも大きい場合には(ステップS49,Yes)、並列処理では、list1とlist2とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS50)。 On the other hand, when the value of i is larger than n / 2 (step S49, Yes), in parallel processing, list1 and list2 are compared to determine indexes v and u when a collision occurs (step S49). S50).
並列処理では、k1を算出する(ステップS51)。k1は、「
並列処理では、E、Gi、ζs’、lenを基にして、リスト生成処理を実行することで、list3を得る(ステップS53)。並列処理では、iの値に1を加算し(ステップS54)、iの値が3n/4よりも大きいか否かを判定する(ステップS55)。iの値が3n/4以下の場合には(ステップS55,No)、ステップS53に移行する。 In parallel processing, list3 is obtained by executing list generation processing based on E, G i , ζ s ′ , and len (step S53). In the parallel processing, 1 is added to the value of i (step S54), and it is determined whether or not the value of i is larger than 3n / 4 (step S55). When the value of i is 3n / 4 or less (step S55, No), the process proceeds to step S53.
一方、iの値が3n/4よりも大きい場合には(ステップS55,Yes)、並列処理では、E、G1i、ζs’、lenを基にして、リスト生成処理を実行することで、list4を得る(ステップS56)。並列処理では、iの値に1を加算し(ステップS57)、iの値がnより大きいか否かを判定する(ステップS58)。iの値がn以下の場合には(ステップS58,No)、ステップS56に移行する。 On the other hand, when the value of i is larger than 3n / 4 (step S55, Yes), in parallel processing, by executing list generation processing based on E, G 1i , ζ s ′ , len, list4 is obtained (step S56). In the parallel processing, 1 is added to the value of i (step S57), and it is determined whether or not the value of i is larger than n (step S58). When the value of i is n or less (step S58, No), the process proceeds to step S56.
一方、iの値がnよりも大きい場合には(ステップS58,Yes)、並列処理では、list3とlist4とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS59)。 On the other hand, when the value of i is larger than n (step S58, Yes), in the parallel processing, list3 and list4 are compared to determine indexes v and u when a collision occurs (step S59). .
並列処理では、k2を算出する(ステップS60)。k2は「
図4および図5に示した処理手順によってコンピュータ0〜nが並列処理を実行することで、リストを生成する処理負荷を分散させることができる。 When the computers 0 to n execute parallel processing according to the processing procedure shown in FIGS. 4 and 5, the processing load for generating the list can be distributed.
次に、図3に示したリスト生成処理を実行するリスト生成装置の構成について説明する。図6は、従来のリスト生成装置の構成を示す図である。図6に示すように、このリスト生成装置は、入力部11、繰り返し判定部12、記憶部13、スカラ値生成部14、スカラ倍算計算部15、特徴点判定部16、点出力部17を有する。
Next, the configuration of the list generation device that executes the list generation processing shown in FIG. 3 will be described. FIG. 6 is a diagram illustrating a configuration of a conventional list generation apparatus. As shown in FIG. 6, the list generation device includes an input unit 11, a
入力部11は、リストを作成するためのパラメータを受け付け、受け付けたパラメータを繰り返し判定部12、スカラ値生成部14、スカラ倍算計算部15に出力する処理部である。入力部11は、キーボードなどの入力装置からパラメータを受け付けても良いし、他の装置と情報通信を行ってパラメータを取得しても良い。
The input unit 11 is a processing unit that receives parameters for creating a list and outputs the received parameters to the
パラメータには、E、G0、ζs’、lenが含まれる。入力部11は、パラメータのうち、E、G0をスカラ倍算計算部15に出力し、E、ζs’をスカラ値生成部14に出力する。また、入力部11は、lenを繰り返し判定部12に出力する。
The parameters include E, G 0 , ζ s ′ , and len. The input unit 11 outputs E and G 0 of the parameters to the scalar
繰り返し判定部12は、GiからGi+1を計算する回数をカウントする処理部である。繰り返し判定部12は、GiからGi+1が計算された回数をどのようにカウントしてもよい。例えば、繰り返し判定部12は、スカラ倍算計算部15が、Gi+1の計算結果を出力する度に、計算回数をカウントする。
繰り返し判定部12は、カウントした計算回数が、lenを超えた場合に、リスト生成処理を終了すると判定する。例えば、繰り返し判定部12は、リスト生成処理を終了すると判定した場合には、スカラ値生成部14およびスカラ倍算計算部15を制御して、処理を終了させる。
The
記憶部13は、スカラ倍算計算部15の算出結果を記憶する記憶部である。
The
スカラ値生成部14は、Giから
ランダム関数部14aは、Giからfs(Gi)を算出する処理部である。例えば、fsは楕円曲線上の点G=(x、y)が与えられた場合に、「x mod s」を返す関数である。ランダム関数部14aは、fs(Gi)を冪乗余剰計算部14bに出力する。なお、ランダム関数部14aは、Giの初期値となるG0を、入力部11から取得する。また、ランダム関数部14aは、初期値以外のGiの値を記憶部13から取得する。
冪乗余剰計算部14bは、fs(Gi)とζs’とを取得して、
スカラ倍算計算部15は、Giと
特徴点判定部16は、Gi+1が特徴点であるか否かを判定する処理部である。例えば、特徴点判定部16は、Gi+1の値の一部が所定の値となっている場合に、Gi+1を特徴点であると判定する。特徴点判定部16は、特徴点と判定したGi+1を点出力部17に出力する。
The feature
点出力部17は、特徴点と判定されたGi+1をテーブルに登録することで、listを生成する処理部である。点出力部17は、listの情報を外部装置に出力する。
The
次に、図6に示したリスト生成装置10の処理手順について説明する。図7は、従来のリスト生成装置の処理手順を示すフローチャートである。図7に示すように、リスト生成装置10は、iの値を初期値に設定し(ステップS70)、ランダム関数にGiを入力し、入力結果fs(Gi)を得る(ステップS71)。
Next, a processing procedure of the
リスト生成装置10は、冪乗余剰計算を実行する(ステップS72)。冪乗余剰計算を実行することで、
リスト生成装置10は、Gi+1が特徴点であるか否かを判定する(ステップS74)。リスト生成装置10は、Gi+1が特徴点ではない場合には(ステップS74,No)、ステップS76に移行する。
The
一方、リスト生成装置10は、Gi+1が特徴点の場合には(ステップS74,Yes)、Gi+1をlistに登録する(ステップS75)。リスト生成装置10は、iに1を加算し(ステップS76)、iの値がlenよりも大きいか否かを判定する(ステップS77)。リスト生成装置10は、iの値がlenよりも大きい場合には(ステップS77,Yes)、処理を終了する。一方、リスト生成装置10は、iの値がlen以下の場合には(ステップS77,No)、ステップS71に移行する。
On the other hand, if G i + 1 is a feature point (Yes in step S74), the
リスト生成装置10がlistを生成する場合に実行する各種計算のうち、図7のスカラ倍算計算が主要な計算となる。このため、スカラ倍算計算を高速化することができれば、リスト生成装置10がlistを生成する処理を高速化することができる。
Of various calculations executed when the
スカラ倍算計算を高速化する手法として、固定点テーブル法と呼ばれる技術が存在する。この固定点テーブル法は、予め複数のスカラ倍算計算を実行して、固定点テーブルに計算結果を格納しておく。そして、固定点テーブル法は、新たにスカラ倍算計算を実行する場合には、固定点テーブルに格納された計算結果を加算することで、スカラ倍算計算を実行する。 As a technique for speeding up the scalar multiplication calculation, there is a technique called a fixed point table method. In this fixed point table method, a plurality of scalar multiplication calculations are executed in advance, and the calculation results are stored in the fixed point table. In the fixed point table method, when a scalar multiplication calculation is newly executed, the scalar multiplication calculation is executed by adding the calculation results stored in the fixed point table.
具体的に、固定点テーブル法について説明する。図8は、従来の固定点テーブルのデータ構造の一例を示す図である。図8に示すように、この固定点テーブルでは、1列目の数値を2倍、3倍した値が格納されている。例えば、1行目では、1G、2G、3Gが格納されている。2行目では、4G、8G、12Gが格納されている。3行目では、16G、32G、48Gが格納されている。4行目では、64G、128G、192Gが格納されている。5行目では、256G、512G、768Gが格納されている。固定点テーブルの各Gは、全て同じ点である。 Specifically, the fixed point table method will be described. FIG. 8 is a diagram illustrating an example of a data structure of a conventional fixed point table. As shown in FIG. 8, in this fixed point table, values obtained by doubling and multiplying the numerical values in the first column are stored. For example, 1G, 2G, and 3G are stored in the first row. In the second row, 4G, 8G, and 12G are stored. In the third row, 16G, 32G, and 48G are stored. In the fourth row, 64G, 128G, and 192G are stored. In the fifth row, 256G, 512G, and 768G are stored. Each G in the fixed point table is the same point.
例えば、固定点テーブル法が、10Gを算出する場合について説明する。この場合、固定点テーブル法では、図8の1行目2列目に格納された2Gと、2行目2列目に格納された8Gとを楕円加算することで、10Gを算出する。10とGとをスカラ倍算するよりも、2Gと8Gとを楕円加算する方が、計算コストが少ない。このため、固定点テーブル法を用いてリスト生成処理を実行することができれば、listを生成する処理を高速化することができる。 For example, a case where the fixed point table method calculates 10G will be described. In this case, in the fixed point table method, 2G stored in the first row and second column in FIG. 8 and 8G stored in the second row and second column are elliptically added to calculate 10G. Rather than multiplying 10 and G by scalar multiplication, the calculation cost is lower when 2G and 8G are elliptically added. For this reason, if the list generation process can be executed using the fixed point table method, the process of generating the list can be accelerated.
しかし、固定点テーブル法を用いる場合には、スカラ倍算を行う楕円曲線上の点Gが常に同じ値であるという制限がある。例えば、固定点テーブル法では、10G1を、2G1と8G1との楕円加算で算出することができるが、10G2を、2G1と8G1との楕円加算で算出することができない。 However, when the fixed point table method is used, there is a restriction that the point G on the elliptic curve for scalar multiplication always has the same value. For example, in the fixed point table method, a 10G 1, it can be calculated by elliptic curve addition of 2G 1 and 8G 1, a 10G 2, can not be calculated in elliptic curve addition of 2G 1 and 8G 1.
図6に示したスカラ倍算計算部15が、スカラ倍算計算を実行する場合には、楕円曲線上の点Gが毎回更新される。このため、従来のリスト生成装置10は、固定点テーブル法を利用して、スカラ倍算計算を高速化することができなかった。
When the scalar
次に、本実施例について説明する。図9は、本実施例にかかるシステムの構成を示す図である。図9に示すように、このシステムは、リスト生成装置100a〜100nと、暗号鍵解析装置200とを有する。リスト生成装置100a〜100nおよび暗号鍵解析装置200は、ネットワーク50を介して相互に接続される。
Next, this embodiment will be described. FIG. 9 is a diagram illustrating the configuration of the system according to the present embodiment. As illustrated in FIG. 9, the system includes
リスト生成装置100a〜100nは、ランダムウォーク関数と楕円曲線上の点Gとを基にして、リスト(list)を生成する処理部である。リスト生成装置100a〜100nは、リストを暗号鍵解析装置200に送信する。
The
暗号鍵解析装置200は、リスト生成装置100a〜100nからリストを収集し、各リストを基にして、補助情報付き楕円曲線離散対数問題を解くことで、暗号鍵を解析する装置である。この暗号鍵解析装置200は、上記のコンピュータ0に対応する装置であり、図1に示した処理手順によって、補助情報付き楕円曲線離散対数問題を解くものとする。
The encryption
次に、リスト生成装置100aの構成について説明する。その他のリスト生成装置の構成は、リスト生成装置100aの構成と同様である。図10は、リスト生成装置の構成を示す図である。図10に示すように、このリスト生成装置100aは、入力部110、繰り返し判定部120、記憶部130、スカラ倍算計算部150、特徴点判定部160、点出力部170を有する。
Next, the configuration of the
入力部110は、リストを作成するためのパラメータを受け付け、受け付けたパラメータを繰り返し判定部120、スカラ値生成部140、スカラ倍算計算部150に出力する処理部である。入力部110は、キーボードなどの入力装置からパラメータを受け付けても良いし、他の装置と情報通信を行ってパラメータを取得しても良い。
The
パラメータには、E、G0、ζs’、lenが含まれる。E、G0、ζs’、lenに関する説明は、上記と同様である。入力部110は、パラメータのうち、E、G0をスカラ倍算計算部150に出力し、E、ζs’をスカラ値生成部140に出力する。また、入力部110は、lenを繰り返し判定部120に出力する。
The parameters include E, G 0 , ζ s ′ , and len. The description regarding E, G 0 , ζ s ′ , and len is the same as described above. Among the parameters, the
繰り返し判定部120は、GiからGi+1を計算する回数をカウントする処理部である。繰り返し判定部120は、GiからGi+1が計算された回数をどのようにカウントしてもよい。例えば、繰り返し判定部120は、スカラ倍算計算部150が、Gi+1の計算結果を出力する度に、計算回数をカウントする。
Repetition determining unit 120 is a processing unit for counting the number of times of calculating the G i + 1 from the G i. Repetition determining unit 120 may count how the number of G i + 1 from the G i is calculated. For example, the repetition determination unit 120 counts the number of calculations each time the scalar
繰り返し判定部120は、カウントした計算回数が、lenを超えた場合に、リスト生成処理を終了すると判定する。例えば、繰り返し判定部120は、リスト生成処理を終了すると判定した場合には、スカラ値生成部140およびスカラ倍算計算部150を制御して、処理を終了させる。
The iterative determination unit 120 determines to end the list generation process when the counted number of calculations exceeds len. For example, when it is determined that the list generation process is to be ended, the repetition determination unit 120 controls the scalar
記憶部130は、スカラ倍算計算部150の計算結果を記憶する記憶部である。
The
スカラ値生成部140は、Giから
ランダム関数部141は、Giからfs(Gi)を算出する処理部である。例えば、fsは楕円曲線上の点G=(x、y)が与えられた場合に、「x mod s」を返す関数である。ランダム関数部141は、fs(Gi)を加算部142に出力する。なお、ランダム関数部141は、Giの初期値となるG0を、入力部110から取得する。また、ランダム関数部141は、初期値以外のGiの値を記憶部130から取得する。
加算部142は、fs(Gi)の値を順次加算し、加算結果aiを冪乗余剰計算部144に出力する処理部である。また、加算部142は、加算結果aiを加算結果格納部143に記憶する。加算結果格納部143は、加算結果aiを記憶する記憶部である。加算結果格納部143は、加算結果aiの初期値a0として0を記憶する。
The adding
具体的に、加算部142は、「ai=ai−1+fs(Gi)」によりaiを算出する。すなわち、加算部142は、ランダム関数部141から取得したfs(Gi)と、加算結果格納部143に記憶されたai−1とを加算することで、aiを算出する。
Specifically, the
冪乗余剰計算部144は、aiとζs’とを取得して、
スカラ倍算計算部150は、G0と
スカラ倍算計算部150は、固定点テーブルを保持している。図11は、固定点テーブルのデータ構造の一例を示す図である。図11に示すように、この固定点テーブルでは、1列目の数値を2倍、3倍した値が格納されている。例えば、1行目では、1G0、2G0、3G0が格納されている。2行目では、4G0、8G0、12G0が格納されている。3行目では、16G0、32G0、48G0が格納されている。4行目では、64G0、128G0、192G0が格納されている。5行目では、256G0、512G0、768G0が格納されている。固定点テーブルの各G0は、全て楕円曲線上の同じ点である。
The scalar
スカラ倍算計算部150は、固定点テーブルに記憶された各値を組あわせてスカラ倍算「
スカラ倍算計算部150は、算出結果となるGi+1を記憶部130に記憶する。また、スカラ倍算計算部150は、Gi+1を特徴点判定部160に出力する。
The scalar
ところで、スカラ倍算計算部150が算出するGi+1と、図6に示したスカラ倍算計算部15が算出するGi+1は同じものである。図12は、各スカラ倍算計算部が算出するGi+1が同じであることを説明するための図である。ここでは簡単のため、G2を算出する場合について説明する。
Meanwhile, the G i + 1 scalar
図12の1aは、
スカラ倍算計算部150は、固定点テーブルを入力部110から取得する。または、スカラ倍算計算部150自身が、固定点テーブルを生成してもよい。例えば、スカラ倍算計算部150は、楕円曲線上の同一の点同士を加算する処理を繰り返し実行することで、点のスカラ値を順次算出し、算出結果を固定点テーブルに格納する。例えば、加算対象となる楕円曲線上の点は、管理者などによって指定される。
The scalar
図10の説明に戻る。特徴点判定部160は、Gi+1が特徴点であるか否かを判定する処理部である。例えば、特徴点判定部160は、Gi+1の値の一部が所定の値となっている場合に、Gi+1を特徴点であると判定する。特徴点判定部160は、特徴点と判定したGi+1を点出力部170に出力する。
Returning to the description of FIG. The feature
点出力部170は、特徴点と判定されたGi+1をテーブルに登録することで、listを生成する処理部である。点出力部170は、listの情報を暗号鍵解析装置200に送信する。
The
次に、本実施例にかかるリスト生成装置100aの処理手順について説明する。図13は、本実施例にかかるリスト生成装置の処理手順を示すフローチャートである。図13に示すように、リスト生成装置100aは、iの値を初期値に設定し(ステップS101)、ランダム関数にGiを入力して、入力結果fs(Gi)を得る(ステップS102)。
Next, a processing procedure of the
リスト生成装置100aは、加算処理を実行する(ステップS103)。ステップS103において、リスト生成装置100aは、ランダム関数部141から出力されるfs(Gi)と、加算結果格納部143に記憶されるai−1とを加算することで、加算処理を実行する。
The
リスト生成装置100aは、冪乗余剰計算を実行する(ステップS104)。ステップS104において、リスト生成装置100aが冪乗余剰計算を実行することで、
リスト生成装置100aは、Gi+1が特徴点であるか否かを判定する(ステップS106)。リスト生成装置100aは、Gi+1が特徴点ではない場合には(ステップS106,No)、ステップS108に移行する。
The
一方、リスト生成装置100aは、Gi+1が特徴点の場合には(ステップS106,Yes)、Gi+1をlistに登録する(ステップS107)。リスト生成装置100aは、iに1を加算し(ステップS108)、iの値がlenよりも大きいか否かを判定する(ステップS109)。リスト生成装置100aは、iの値がlenよりも大きい場合には(ステップS109,Yes)、listを暗号鍵解析装置200に出力する(ステップS110)。一方、リスト生成装置100aは、iの値がlen以下の場合には(ステップS109,No)、ステップS102に移行する。
On the other hand, if G i + 1 is a feature point (Yes in step S106), the
次に、本実施例にかかるシステムの処理手順について説明する。図14および図15は、本実施例にかかるシステムの処理手順を示すフローチャートである。なお、図14のステップS200〜S203の処理、図15のステップS210〜S212、ステップS210〜S222の処理は、暗号鍵解析装置200が実行する処理とする。図14のステップS204の処理は、リスト生成装置100a〜N/4がそれぞれlistを生成する処理とする。図14のステップS207の処理は、リスト生成装置N/4〜N/2がそれぞれlistを生成する処理とする。図15のステップS213の処理は、リスト生成装置N/2〜3N/4がそれぞれlistを生成する処理とする。図15のステップS216の処理は、リスト生成装置3N/4〜100nがそれぞれlistを生成する処理とする。
Next, a processing procedure of the system according to the present embodiment will be described. 14 and 15 are flowcharts illustrating the processing procedure of the system according to the present embodiment. The processes in steps S200 to S203 in FIG. 14 and the processes in steps S210 to S212 and steps S210 to S222 in FIG. 15 are processes executed by the encryption
暗号鍵解析装置200は、E、G、G、Gd、lenを取得し(ステップS200)、生成元ζを生成する(ステップS201)。暗号鍵解析装置200は、sおよびs’を算出する(ステップS202)。ステップS202において、暗号鍵解析装置200は、s=(r−1)/d、s’=dによって、sおよびs’を算出する。
The encryption
iの値を初期値に設定し(ステップS203)、リスト生成装置100は、リスト生成処理を実行することで、list1を得る(ステップS204)。iの値に1を加算し(ステップS205)、iの値がN/4より大きいか否かを判定する(ステップS206)。 The value of i is set to an initial value (step S203), and the list generation apparatus 100 obtains list1 by executing list generation processing (step S204). 1 is added to the value of i (step S205), and it is determined whether or not the value of i is greater than N / 4 (step S206).
iの値がN/4以下の場合には(ステップS206,No)、ステップS204に移行する。iの値がN/4より大きい場合には(ステップS206,Yes)、各リスト生成装置100は、list1を暗号鍵解析装置200に送信する(ステップS207)。 When the value of i is N / 4 or less (No at Step S206), the process proceeds to Step S204. When the value of i is larger than N / 4 (Yes at Step S206), each list generation device 100 transmits list1 to the encryption key analysis device 200 (Step S207).
リスト生成装置100は、リスト生成処理を実行することで、list2を得る(ステップS208)。iの値に1を加算し(ステップS209)、iの値がN/2より大きいか否かを判定する。 The list generation device 100 obtains list2 by executing the list generation process (step S208). 1 is added to the value of i (step S209), and it is determined whether or not the value of i is greater than N / 2.
iの値がN/2以下の場合には(ステップS210,No)、ステップS208に移行する。一方、iの値がN/2より大きい場合には(ステップS210,Yes)、各リスト生成装置100は、list2を暗号鍵解析装置200に送信する(ステップS211)。 When the value of i is N / 2 or less (No in step S210), the process proceeds to step S208. On the other hand, if the value of i is greater than N / 2 (Yes in step S210), each list generation device 100 transmits list2 to the encryption key analysis device 200 (step S211).
図15の説明に移行する。暗号鍵解析装置200は、list1とlist2とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS212)。暗号鍵解析装置200は、k1を算出する(ステップS213)。ステップS213において、暗号鍵解析装置200は、
暗号鍵解析装置200は、sおよびs’を算出する(ステップS214)。ステップS214において、暗号鍵解析装置200は、s=d、s’=(r−1)/dによって、sおよびs’を算出する。
The encryption
リスト生成装置100は、リスト生成処理を実行することで、list3を得る(ステップS215)。iの値に1を加算し(ステップS216)、iの値が3N/4より大きいか否かを判定する(ステップS217)。 The list generation device 100 obtains list3 by executing list generation processing (step S215). 1 is added to the value of i (step S216), and it is determined whether or not the value of i is greater than 3N / 4 (step S217).
iの値が3N/4以下の場合には(ステップS217,No)、ステップS215に移行する。一方、iの値が3N/4より大きい場合には(ステップS217,Yes)、リスト生成装置100は、list3を暗号鍵解析装置200に送信する(ステップS218)。 If the value of i is 3N / 4 or less (step S217, No), the process proceeds to step S215. On the other hand, when the value of i is larger than 3N / 4 (step S217, Yes), the list generation device 100 transmits list3 to the encryption key analysis device 200 (step S218).
リスト生成装置100は、リスト生成処理を実行することで、list4を得る(ステップS219)。iの値に1を加算し(ステップS220)、iの値がNより大きいか否かを判定する(ステップS221)。 The list generation device 100 obtains list4 by executing the list generation processing (step S219). 1 is added to the value of i (step S220), and it is determined whether or not the value of i is greater than N (step S221).
iの値がN以下の場合には(ステップS221,No)、ステップS219に移行する。一方、iの値がNより大きい場合には(ステップS221,Yes)、list4を暗号鍵解析装置に送信する(ステップS222)。暗号鍵解析装置200は、list3とlist4とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS223)。
When the value of i is N or less (step S221, No), the process proceeds to step S219. On the other hand, if the value of i is greater than N (step S221, Yes), list4 is transmitted to the encryption key analyzer (step S222). The encryption
暗号鍵解析装置200は、k2を算出する(ステップS224)。ステップS224において、暗号鍵解析装置200は、
図14のステップ204、S208、図15のステップ215、S219に示したリスト生成処理は、図13に示した処理手順に対応する。 The list generation processing shown in steps 204 and S208 of FIG. 14 and steps 215 and S219 of FIG. 15 corresponds to the processing procedure shown in FIG.
次に、リスト生成装置100aが、固定点テーブルを生成する場合の処理手順について説明する。図16は、固定点テーブルを生成する処理手順を示すフローチャートである。図16に示すように、リスト生成装置100aは、Gとbitとを取得し(ステップS300)、G’’にGの値を設定する(ステップS301)。ここで、bitは、固定点テーブルの行の数を決める閾値である。
Next, a processing procedure when the
リスト生成装置100aは、iの値を初期値に設定し(ステップS302)、G’にG’’の値を設定する(ステップS303)。リスト生成装置100aは、jの値を初期値に設定し(ステップS304)、固定点テーブルのi行目、j列目にG’’の値を格納する(ステップS305)。
The
リスト生成装置100aは、G’’とG’とを加算した値でG’’の値を更新し(ステップS306)、jの値に1を加算する(ステップS307)。リスト生成装置100aは、jの値が3より大きいか否かを判定する(ステップS308)。
The
リスト生成装置100aは、jの値が3以下の場合には(ステップS308,No)、ステップS305に移行する。一方、リスト生成装置100aは、jの値が3より大きい場合には(ステップS308,Yes)、iの値に1を加算する(ステップS309)。
If the value of j is 3 or less (No at Step S308), the
リスト生成装置100aは、iの値がbitより大きいか否かを判定する(ステップS310)。リスト生成装置100aは、iの値がbit以下の場合には(ステップS310,No)、ステップS303に移行する。一方、リスト生成装置100aは、iの値がbitよりも大きい場合には(ステップS310,Yes)、処理を終了する。
The
次に、本実施例にかかるリスト生成装置100aの効果について説明する。リスト生成装置100aでは、ランダム関数部141から出力された値と、加算結果格納部143に格納された値とを加算した値を基にして生成元を冪乗し、冪乗結果と楕円曲線上の点の初期値G0とをスカラ倍算することで、GiからGi+1を算出する。このような方法で、リスト生成装置100aがGi+1を算出すれば、スカラ倍算を実行する場合の楕円曲線上の点は常に初期値G0で固定される。このため、リスト生成装置100aはスカラ倍算を、固定点テーブルの各点の加算によって求めることができ、スカラ倍算にかかる計算コストを削減することができる。
Next, the effect of the
具体的に、楕円曲線の点の位数r=2160とし、固定点テーブルの生成法におけるn進数展開の変数を216とする。この場合に、リスト生成装置100aは、従来の確率的アルゴリズムによってリストを生成する場合よりも、21倍速くリストを生成することができる。また、n進数展開の変数を4とした場合には、リスト生成装置100aは、従来の確率的アルゴリズムによってリストを生成する場合よりも、2.5倍速くリストを生成することができる。上記効果の前提として、冪乗余剰およびランダムウォーク関数の計算コストは、楕円スカラ倍算の計算コストに比べて十分小さいものとする。また、リストの長さlen=r1/4とし、楕円加算の計算コストを(4log2r)/3とし、楕円スカラ倍算の計算コストを(640/3)とする。また、コンピュータを210台利用して並列処理を実行した場合には、図13〜図16に示した処理を実行することで、図4、図5に示した従来の処理と比較して、計算コストを1/1365に削減することができる。
Specifically, the position number r = 2 160 points of the elliptic curve, the variable n-ary number deployed in the production method of the fixed point table and 2 16. In this case, the
また、リスト生成装置110aは、スカラ倍算計算部150が生成した点を全てリストに登録するのではなく、特徴点のみをリストに登録する。このため、リストのデータ量を削減することができる。
The list generation device 110a does not register all the points generated by the scalar
ところで、図10に示したリスト生成装置100aの構成は一例であり、リスト生成装置100aは、必ずしも図10に示した各処理部を全て有していなくてもよい。例えば、リスト生成装置100aは、固定点テーブル、疑似ランダム関数適用部、スカラ値生成部、点算出部、リスト生成部を有していればよい。
By the way, the configuration of the
固定点テーブルは、楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶するものである。この固定点テーブルは、スカラ倍算計算部150が保持する固定点テーブルに対応する。疑似ランダム関数適用部は、楕円曲線上の点に対してランダムウォーク関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶部に記憶する処理部である。この疑似ランダム関数適用部は、ランダム関数部141に対応する。
The fixed point table stores a plurality of values obtained by multiplying predetermined points on the elliptic curve by different scalar values. This fixed point table corresponds to the fixed point table held by the scalar
スカラ値生成部は、記憶部に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成する処理部である。スカラ値生成部は、スカラ値生成部140に対応する。点算出部は、固定点テーブルに記憶された各値のうち、スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、楕円曲線上の点から該楕円曲線上の次の点を算出する処理部である。この点算出部は、スカラ倍算計算部150に対応する。リスト生成部は、点算出部が算出した各点を収集しリストを生成する処理部である。リスト生成部は、特徴点判定部160、点出力部170に対応する。
The scalar value generation unit is a processing unit that adds the values of the points stored in the storage unit and generates a scalar value based on the total value. The scalar value generation unit corresponds to the scalar
なお、上記の実施例で説明したリスト生成装置100aの各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図17を用いて、上記の実施例で説明したリスト生成装置100aと同様の機能を有するリスト生成プログラムを実行するコンピュータの一例を説明する。図17は、リスト生成プログラムを実行するコンピュータを示す図である。
Various processes of the
同図に示すように、リスト生成装置100aとしてコンピュータ400は、入出力制御部410、HDD(Hard Disk Drive)420、RAM(Random Access Memory)430およびCPU(Central Processing Unit)440を有する。各装置410〜440は、バス450で接続して構成される。
As shown in the figure, the computer 400 as the
ここで、入出力制御部410は、各種情報の入出力を制御する。HDD420は、CPU440による各種処理の実行に必要な情報を記憶する。RAM430は、各種情報を一時的に記憶する。CPU440は、各種演算処理を実行する。
Here, the input / output control unit 410 controls input / output of various types of information. The
そして、HDD420には、リスト生成システムデータがあらかじめ記憶されている。このリスト生成システムデータは、図10に示したリスト生成装置100aの各処理部と同様の機能を発揮するリスト生成プログラムを含む。また、リスト生成システムデータは、処理に必要な各種パラメータを含むリスト生成用データを含む。なお、このリスト生成システムデータを適宜分散させて、ネットワークを介して通信可能に接続された他のコンピュータの記憶部に記憶させておくこともできる。
The
そして、CPU440が、このリスト生成システムデータをHDD420から読み出してRAM430に展開することにより、リスト生成システムデータはリスト生成システムとして機能するようになる。このリスト生成システムにはリスト生成プロセスが含まれる。
Then, the CPU 440 reads out this list generation system data from the
すなわち、リスト生成システムやそれに搭載されたリスト生成プロセスは、リスト生成用データをHDD420から読み出して、RAM430において自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種処理を実行する。
That is, the list generation system and the list generation process installed therein read out the data for list generation from the
なお、リスト生成システム及びリスト生成プロセスは、図10に示した各機能部において実行される処理に対応する。例えば、リスト生成プロセスは、繰り返し判定部120、スカラ値生成部140、スカラ倍算計算部150、特徴点判定部160、点出力部170に対応する。
Note that the list generation system and the list generation process correspond to processing executed in each functional unit shown in FIG. For example, the list generation process corresponds to the repetition determination unit 120, the scalar
なお、上記したリスト生成プログラムについては、必ずしも最初からHDD420に記憶させておく必要はない。
Note that the above-described list generation program is not necessarily stored in the
例えば、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ400がこれらから各プログラムを読み出して実行するようにしてもよい。 For example, each program is stored in a “portable physical medium” such as a flexible disk (FD), a CD-ROM, a DVD disk, a magneto-optical disk, and an IC card inserted into the computer 400. Then, the computer 400 may read and execute each program from these.
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ400に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておく。そして、コンピュータ400がこれらから各プログラムを読み出して実行するようにしてもよい。 Further, each program is stored in “another computer (or server)” connected to the computer 400 via a public line, the Internet, a LAN, a WAN, or the like. Then, the computer 400 may read and execute each program from these.
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、リスト生成装置100a〜100nと、暗号鍵解析装置200の機能を統合し、単一の装置で、リスト生成や、暗号鍵の解析を実行してもよい。
Further, each component of each illustrated apparatus is functionally conceptual, and does not necessarily need to be physically configured as illustrated. In other words, the specific state of distribution / integration of each device is not limited to the one shown in the figure, and all or a part thereof may be functionally or physically distributed or arbitrarily distributed in arbitrary units according to various loads or usage conditions. Can be integrated and configured. For example, the functions of the
なお、図10に示した各処理部120、140〜170は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。または、各処理部120、140〜170は、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。また、図10に示した記憶部130は、例えば、RAM、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
10 correspond to an integrated device such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field Programmable Gate Array). Alternatively, each of the
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。 The following supplementary notes are further disclosed with respect to the embodiments including the above examples.
(付記1)楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶する固定点テーブルと、
前記楕円曲線上の点に対して疑似ランダム関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶部に記憶する疑似ランダム関数適用部と、
前記記憶部に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成部と、
前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出部と、
前記点算出部が算出した各点を収集し、リストを生成するリスト生成部と
を備えたことを特徴とするリスト生成装置。
(Supplementary note 1) a fixed point table for storing a plurality of values obtained by multiplying predetermined points on an elliptic curve by different scalar values;
Calculating a point on the elliptic curve by using a pseudo-random function for the point on the elliptic curve, and storing the calculated point in a storage unit;
Summing the values of the points stored in the storage unit, and generating a scalar value based on the summed value,
Among each value stored in the fixed point table, a combination of values corresponding to the scalar value is determined, and each determined value is added to the next on the elliptic curve from a point on the elliptic curve. A point calculation unit for calculating the points of
A list generation device comprising: a list generation unit that collects each point calculated by the point calculation unit and generates a list.
(付記2)楕円曲線上の同一の点同士の加算を繰り返し実行することで、点のスカラ倍算を実行し、スカラ倍算の実行結果を前記固定点テーブルに格納する固定点テーブル生成部を更に備えたことを特徴とする付記1に記載のリスト生成装置。
(Supplementary Note 2) A fixed point table generating unit that executes scalar multiplication of points by repeatedly performing addition of the same points on an elliptic curve and stores the execution result of the scalar multiplication in the fixed point table. The list generation device according to
(付記3)前記リスト生成部は、前記点算出部が算出した値のうち、所定の特徴を有する点を収集することで、前記リストを生成することを特徴とする付記1または2に記載のリスト生成装置。
(Additional remark 3) The said list production | generation part produces | generates the said list | wrist by collecting the point which has a predetermined characteristic among the values calculated by the said point calculation part, The
(付記4)楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶する固定点テーブルを有するコンピュータが、
前記楕円曲線上の点に対して疑似ランダム関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶装置に記憶する疑似ランダム関数適用ステップと、
前記記憶装置に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成ステップと、
前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出ステップと、
前記点算出部が算出した各点を収集し、リストを生成するリスト生成ステップと
を含んだことを特徴とするリスト生成方法。
(Supplementary Note 4) A computer having a fixed point table that stores a plurality of values obtained by multiplying predetermined points on an elliptic curve by different scalar values,
Calculating a point on the elliptic curve by using a pseudo-random function for the point on the elliptic curve, and storing the calculated point in a storage device; and
A scalar value generation step of summing the values of the points stored in the storage device, and generating a scalar value based on the total value;
Among each value stored in the fixed point table, a combination of values corresponding to the scalar value is determined, and each determined value is added to the next on the elliptic curve from a point on the elliptic curve. A point calculating step for calculating
A list generation method comprising: a list generation step of collecting each point calculated by the point calculation unit and generating a list.
(付記5)楕円曲線上の同一の点同士の加算を繰り返し実行することで、点のスカラ倍算を実行し、スカラ倍算の実行結果を前記固定点テーブルに格納する固定点テーブル生成ステップを更に含んだことを特徴とする付記4に記載のリスト生成方法。
(Supplementary Note 5) A fixed point table generating step of performing scalar multiplication of points by repeatedly performing addition of the same points on the elliptic curve and storing the result of scalar multiplication in the fixed point table. The list generation method according to
(付記6)前記リスト生成ステップは、前記点算出部が算出した値のうち、所定の特徴を有する点を収集することで、前記リストを生成することを特徴とする付記4または5に記載のリスト生成方法。
(Additional remark 6) The said list production | generation step produces | generates the said list | wrist by collecting the point which has a predetermined characteristic among the values calculated by the said point calculation part,
(付記7)楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶する固定点テーブルを有するコンピュータに、
前記楕円曲線上の点に対して疑似ランダム関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶装置に記憶する疑似ランダム関数適用手順と、
前記記憶装置に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成手順と、
前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出手順と、
前記点算出部が算出した各点を収集し、リストを生成するリスト生成手順と
を実行させることを特徴とするリスト生成プログラム。
(Supplementary note 7) A computer having a fixed point table for storing a plurality of values obtained by multiplying predetermined points on an elliptic curve by different scalar values,
Calculating a point on the elliptic curve by using a pseudo-random function for the point on the elliptic curve, and storing the calculated point in a storage device; and
A scalar value generation procedure for summing the values of the points stored in the storage device and generating a scalar value based on the total value;
Among each value stored in the fixed point table, a combination of values corresponding to the scalar value is determined, and each determined value is added to the next on the elliptic curve from a point on the elliptic curve. A point calculation procedure for calculating the points of
A list generation program that collects each point calculated by the point calculation unit and generates a list.
(付記8)楕円曲線上の同一の点同士の加算を繰り返し実行することで、点のスカラ倍算を実行し、スカラ倍算の実行結果を前記固定点テーブルに格納する固定点テーブル生成手順を更にコンピュータに実行させることを特徴とする付記7に記載のリスト生成プログラム。 (Supplementary note 8) A fixed point table generation procedure for executing scalar multiplication of points by repeatedly performing addition of the same points on an elliptic curve and storing the execution result of the scalar multiplication in the fixed point table. The list generation program as set forth in appendix 7, which is further executed by a computer.
(付記9)前記リスト生成手順は、前記点算出部が算出した値のうち、所定の特徴を有する点を収集することで、前記リストを生成することを特徴とする付記7または8に記載のリスト生成プログラム。 (Additional remark 9) The said list production | generation procedure produces | generates the said list | wrist by collecting the point which has a predetermined characteristic among the values calculated by the said point calculation part, The additional remark 7 or 8 characterized by the above-mentioned. List generator.
100 リスト生成装置
110 入力部
120 繰り返し判定部
130 記憶部
140 スカラ値生成部
150 スカラ倍算計算部
160 特徴点判定部
170 点出力部
DESCRIPTION OF SYMBOLS 100 List production |
Claims (5)
前記楕円曲線上の点に対して疑似ランダム関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶部に記憶する疑似ランダム関数適用部と、
前記記憶部に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成部と、
前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出部と、
前記点算出部が算出した各点を収集し、リストを生成するリスト生成部と
を備えたことを特徴とするリスト生成装置。 A fixed point table for storing a plurality of values obtained by multiplying predetermined points on the elliptic curve by different scalar values;
Calculating a point on the elliptic curve by using a pseudo-random function for the point on the elliptic curve, and storing the calculated point in a storage unit;
Summing the values of the points stored in the storage unit, and generating a scalar value based on the summed value,
Among each value stored in the fixed point table, a combination of values corresponding to the scalar value is determined, and each determined value is added to the next on the elliptic curve from a point on the elliptic curve. A point calculation unit for calculating the points of
A list generation device comprising: a list generation unit that collects each point calculated by the point calculation unit and generates a list.
前記楕円曲線上の点に対して疑似ランダム関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶装置に記憶する疑似ランダム関数適用ステップと、
前記記憶装置に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成ステップと、
前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出ステップと、
前記点算出部が算出した各点を収集し、リストを生成するリスト生成ステップと
を含んだことを特徴とするリスト生成方法。 A computer having a fixed point table for storing a plurality of values obtained by multiplying predetermined points on an elliptic curve by different scalar values,
Calculating a point on the elliptic curve by using a pseudo-random function for the point on the elliptic curve, and storing the calculated point in a storage device; and
A scalar value generation step of summing the values of the points stored in the storage device, and generating a scalar value based on the total value;
Among each value stored in the fixed point table, a combination of values corresponding to the scalar value is determined, and each determined value is added to the next on the elliptic curve from a point on the elliptic curve. A point calculating step for calculating
A list generation method comprising: a list generation step of collecting each point calculated by the point calculation unit and generating a list.
前記楕円曲線上の点に対して疑似ランダム関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶装置に記憶する疑似ランダム関数適用手順と、
前記記憶装置に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成手順と、
前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出手順と、
前記点算出部が算出した各点を収集し、リストを生成するリスト生成手順と
を実行させることを特徴とするリスト生成プログラム。 A computer having a fixed point table for storing a plurality of values obtained by multiplying predetermined points on an elliptic curve by different scalar values,
Calculating a point on the elliptic curve by using a pseudo-random function for the point on the elliptic curve, and storing the calculated point in a storage device; and
A scalar value generation procedure for summing the values of the points stored in the storage device and generating a scalar value based on the total value;
Among each value stored in the fixed point table, a combination of values corresponding to the scalar value is determined, and each determined value is added to the next on the elliptic curve from a point on the elliptic curve. A point calculation procedure for calculating the points of
A list generation program that collects each point calculated by the point calculation unit and generates a list.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010172899A JP5505173B2 (en) | 2010-07-30 | 2010-07-30 | LIST GENERATION DEVICE, LIST GENERATION METHOD, AND LIST GENERATION PROGRAM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010172899A JP5505173B2 (en) | 2010-07-30 | 2010-07-30 | LIST GENERATION DEVICE, LIST GENERATION METHOD, AND LIST GENERATION PROGRAM |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012032650A JP2012032650A (en) | 2012-02-16 |
JP5505173B2 true JP5505173B2 (en) | 2014-05-28 |
Family
ID=45846109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010172899A Expired - Fee Related JP5505173B2 (en) | 2010-07-30 | 2010-07-30 | LIST GENERATION DEVICE, LIST GENERATION METHOD, AND LIST GENERATION PROGRAM |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5505173B2 (en) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3797808B2 (en) * | 1998-10-27 | 2006-07-19 | 富士通株式会社 | Scalar multiplication method and apparatus |
JP4423900B2 (en) * | 2003-08-05 | 2010-03-03 | 株式会社日立製作所 | Scalar multiplication calculation method, apparatus and program for elliptic curve cryptography |
JP4668931B2 (en) * | 2005-01-24 | 2011-04-13 | 富士通株式会社 | Encryption processor with tamper resistance against power analysis attacks |
JP4690819B2 (en) * | 2005-08-05 | 2011-06-01 | 株式会社日立製作所 | Scalar multiplication calculation method and scalar multiplication calculation apparatus in elliptic curve cryptography |
-
2010
- 2010-07-30 JP JP2010172899A patent/JP5505173B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012032650A (en) | 2012-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107683502B (en) | Generating cryptographic function parameters from compact source code | |
Goyal et al. | Lightweight security algorithm for low power IoT devices | |
JP6477461B2 (en) | Order-preserving encryption system, apparatus, method and program | |
Guyeux et al. | Efficient and cryptographically secure generation of chaotic pseudorandom numbers on gpu | |
Volos | Chaotic random bit generator realized with a microcontroller | |
Ruttor et al. | Neural cryptography with feedback | |
Akinyele et al. | Machine-generated algorithms, proofs and software for the batch verification of digital signature schemes | |
Hao et al. | Asymmetric cryptographic functions based on generative adversarial neural networks for Internet of Things | |
Abdaoui et al. | Fuzzy elliptic curve cryptography for authentication in Internet of Things | |
CN113841149A (en) | System and method for mining on a workload justification blockchain network | |
Faraoun | A genetic strategy to design cellular automata based block ciphers | |
Sarkar | Secure exchange of information using artificial intelligence and chaotic system guided neural synchronization | |
JP2009005213A (en) | Batch verification device, program and batch verification method | |
Alawida | Enhancing logistic chaotic map for improved cryptographic security in random number generation | |
Liu et al. | A novel security key generation method for SRAM PUF based on Fourier analysis | |
EP3633656A1 (en) | Secret tamper detection system, secret tamper detection device, method for detecting secret tamper, and program | |
JP2014137474A (en) | Tamper detection device, tamper detection method, and program | |
JP5505173B2 (en) | LIST GENERATION DEVICE, LIST GENERATION METHOD, AND LIST GENERATION PROGRAM | |
US20190097786A1 (en) | System and method for generating a symmetrically balanced output | |
Arı et al. | Generation of substitution box structures based on blum blum shub random number outputs | |
JP5540933B2 (en) | Encryption key analysis method, encryption key analysis device, and encryption key analysis program | |
Mitra et al. | Public key cryptography using harmony search algorithm | |
Acín | True quantum randomness | |
Kang et al. | On the additional chi-square tests for the IID assumption of NIST SP 800-90B | |
Sarkar | Chaos-based mutual synchronization of three-layer tree parity machine: a session key exchange protocol over public channel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130403 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140218 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140303 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5505173 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |