JP5597075B2 - Signature generation apparatus, verification apparatus, signature generation method, and signature generation program - Google Patents
Signature generation apparatus, verification apparatus, signature generation method, and signature generation program Download PDFInfo
- Publication number
- JP5597075B2 JP5597075B2 JP2010204937A JP2010204937A JP5597075B2 JP 5597075 B2 JP5597075 B2 JP 5597075B2 JP 2010204937 A JP2010204937 A JP 2010204937A JP 2010204937 A JP2010204937 A JP 2010204937A JP 5597075 B2 JP5597075 B2 JP 5597075B2
- Authority
- JP
- Japan
- Prior art keywords
- software
- signature
- public
- key
- signature information
- 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.)
- Active
Links
Images
Description
本発明は、ソフトウェアの完全性を確認するための署名生成装置、検証装置、署名生成方法及び署名生成プログラムに関する。 The present invention relates to a signature generation apparatus, a verification apparatus, a signature generation method, and a signature generation program for confirming software integrity.
従来、コンピュータ向けのソフトウェアが数多く作成されている。これらの中には、機能が類似している物、あるいは発展的に進化した物がある。このようなソフトウェアを作成する上で、業務の効率化や開発時間の短縮を目的として、基本機能に特化した汎用的なソフトウェア等、既存のソフトウェア(以下、部品ソフトウェアと呼ぶ)を組み込んで、新たな機能を有するソフトウェア(以下、コンポーネントソフトウェアと呼ぶ)を作成する手法が採用される場合がある。また、この手法を用いるための開発環境も整備されてきている。 Conventionally, a lot of software for computers has been created. Some of these have similar functions or evolved. In creating such software, for the purpose of improving work efficiency and shortening development time, existing software such as general-purpose software specialized for basic functions (hereinafter referred to as component software) is incorporated. There is a case in which a method of creating software having a new function (hereinafter referred to as component software) is employed. A development environment for using this method has also been prepared.
ところで、ソフトウェアは、許可無く改竄されたり、ウィルスが混入されたりすることで、正常に利用できないことがある。この対策のため、電子署名を用いて、ソフトウェアが改竄されていないか、又はウィルス等の悪意のあるソフトウェアが混入されていないか否かを確認する方法が提案されている(例えば、特許文献1〜4参照)。 By the way, software may not be used normally because it is tampered without permission or a virus is mixed. As a countermeasure, there has been proposed a method of using an electronic signature to check whether software has been tampered with or malicious software such as a virus has been mixed (for example, Patent Document 1). To 4).
しかしながら、これらの方法は、一つのソフトウェアに対して、その完全性を保証するためのものである。したがって、前述のコンポーネントソフトウェアに対して、これらの方法を適用すると、ソフトウェアが組み込まれる度に、完全性の確認及び電子署名の生成のために多くの処理が発生していた。 However, these methods are intended to guarantee the integrity of a piece of software. Therefore, when these methods are applied to the above-described component software, a lot of processing has occurred to check the integrity and generate an electronic signature each time the software is installed.
本発明は、コンポーネントソフトウェアの完全性を効率的に確認できる署名生成装置、検証装置、署名生成方法及び署名生成プログラムを提供することを目的とする。 An object of the present invention is to provide a signature generation device, a verification device, a signature generation method, and a signature generation program that can efficiently check the integrity of component software.
本発明では、以下のような解決手段を提供する。 The present invention provides the following solutions.
(1)本発明に係る署名生成装置は、ソフトウェアの完全性を保証する公開署名情報を生成する署名生成装置であって、前記ソフトウェアに対応して、非公開の署名鍵、及び公開されている検証鍵を記憶する記憶部と、一方向性ハッシュ関数演算を行う第1ハッシュ演算部と、前記第1ハッシュ演算部により前記ソフトウェアから演算されたハッシュ値に対して、前記署名鍵を乗じて前記公開署名情報を生成する署名情報生成部と、前記ソフトウェア、前記検証鍵、及び前記公開署名情報を公開する公開部と、を備え、前記署名情報生成部は、前記ソフトウェアが当該ソフトウェアを構成する部品ソフトウェアを有する場合、前記部品ソフトウェアの公開署名情報と、前記部品ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果と、前記ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果とを総和して、前記公開署名情報を生成する。 (1) A signature generation apparatus according to the present invention is a signature generation apparatus that generates public signature information that guarantees the integrity of software, and is provided with a private signature key and a public key corresponding to the software. A storage unit that stores a verification key, a first hash calculation unit that performs a one-way hash function calculation, and a hash value calculated from the software by the first hash calculation unit multiplied by the signature key A signature information generating unit that generates public signature information; and a public unit that publishes the software, the verification key, and the public signature information. The signature information generating unit is a component of which the software constitutes the software When it has software, the signature key is multiplied by the public signature information of the component software and the hash value calculated from the component software. And results, by summing the result obtained by multiplying the signature key to the hash value calculated from the software, to generate the public signature information.
このような構成によれば、署名生成装置は、部品ソフトウェアから得られたハッシュ値と、コンポーネントソフトウェアの署名鍵との積により、木構造において連続する2つのノード間の関係を表し、さらに部品ソフトウェアの公開署名情報を用いて、コンポーネントソフトウェアの公開署名情報を生成する。署名生成装置は、この公開署名情報により、コンポーネントソフトウェアを構成する部品ソフトウェアの木構造を表現できるので、コンポーネントソフトウェアの完全性を効率的に確認できる。 According to such a configuration, the signature generation device represents the relationship between two nodes that are continuous in the tree structure by the product of the hash value obtained from the component software and the signature key of the component software. The public signature information of the component software is generated using the public signature information. Since the signature generation apparatus can represent the tree structure of the component software that constitutes the component software based on the public signature information, the integrity of the component software can be efficiently confirmed.
(2)また、上記署名生成装置では、前記署名鍵は、所定の自然数からなり、前記検証鍵は、GDH(GAP−Diffie−Hellman)グループの要素である楕円曲線上の点と前記署名鍵とに基づいて生成される、当該楕円曲線上の点からなる。 (2) In the signature generation device, the signature key is formed of a predetermined natural number, and the verification key includes a point on an elliptic curve that is an element of a GDH (GAP-Diffie-Hellman) group and the signature key. It consists of points on the elliptic curve generated based on
このような構成によれば、署名生成装置は、署名鍵を知らない第三者がGDHグループの要素である楕円曲線上の点から署名鍵を求めることを、計算量的に困難にすることができる。また、署名者の数(ノードの数)が増えても、生成される公開署名情報は楕円曲線上の点であるため、情報のサイズ(容量)は増大せず一定値以下に抑制され、署名生成装置は、効率的に署名情報を生成することができる。 According to such a configuration, the signature generation apparatus may make it difficult for a third party who does not know the signature key to obtain the signature key from a point on the elliptic curve that is an element of the GDH group. it can. Even if the number of signers (number of nodes) increases, the generated public signature information is a point on the elliptic curve, so the size (capacity) of the information does not increase and is suppressed to a certain value or less. The generation device can generate signature information efficiently.
(3)また、上記署名生成装置では、前記公開部は、前記ソフトウェアを最上位ノードとし、前記部品ソフトウェアを下位ノードとする木構造の構成を示すリストデータを、さらに公開する。 (3) Further, in the signature generation apparatus, the disclosure unit further discloses list data indicating a configuration of a tree structure having the software as a highest node and the component software as a lower node.
このような構成によれば、署名生成装置は、コンポーネントソフトウェアを最上位ノードとし、部品ソフトウェアを下位ノードとする木構造の構成を示すリストデータを、さらに公開する。したがって、コンポーネントソフトウェアの完全性を確認する際に、木構造を容易に把握できるので、検証の処理効率が向上する。 According to such a configuration, the signature generation apparatus further publishes list data indicating a configuration of a tree structure in which component software is the highest node and component software is a lower node. Therefore, when checking the integrity of the component software, the tree structure can be easily grasped, so that the verification processing efficiency is improved.
(4)また、上記署名生成装置では、前記公開部は、前記第1ハッシュ演算部により前記ソフトウェアから演算されたハッシュ値を、さらに公開する。 (4) In the signature generation device, the disclosure unit further discloses the hash value calculated from the software by the first hash calculation unit.
このような構成によれば、署名生成装置は、部品ソフトウェアに対する一方向性ハッシュ関数演算の処理負荷を低減することができる。 According to such a configuration, the signature generation apparatus can reduce the processing load of the one-way hash function calculation for the component software.
(5)本発明に係る検証装置は、上記署名生成装置により公開された前記公開署名情報を検証する検証装置であって、前記ソフトウェア又は当該ソフトウェアから演算されたハッシュ値、及び対応する検証鍵、並びに当該ソフトウェアを構成する全ての部品ソフトウェア又は当該部品ソフトウェアから演算されたハッシュ値、及び対応する検証鍵を収集する収集部と、前記収集部により収集されたソフトウェアのそれぞれに対して、一方向性ハッシュ関数演算を行う第2ハッシュ演算部と、前記収集部により収集された全てのソフトウェアに対応する検証鍵、及び当該全てのソフトウェアから演算されたハッシュ値に基づいて、前記公開署名情報の正当性を検証する検証部と、を備える。 (5) A verification device according to the present invention is a verification device for verifying the public signature information published by the signature generation device, wherein the software or a hash value calculated from the software, and a corresponding verification key, In addition, all the component software constituting the software or the hash value calculated from the component software and the corresponding verification key are collected, and the software collected by the collection unit is unidirectional. Validity of the public signature information based on a second hash calculation unit that performs a hash function calculation, verification keys corresponding to all software collected by the collection unit, and hash values calculated from all the software And a verification unit for verifying.
このような構成によれば、検証装置は、コンポーネントソフトウェア及び部品ソフトウェアの検証鍵とハッシュ値とに基づいて、コンポーネントソフトウェアに対する公開署名情報の正当性を検証する。よって、検証装置では、各部品ソフトウェアに対して生成される個々の署名情報等を検証することなく、検証対象であるコンポーネントソフトウェアに対して生成される公開署名情報を検証することにより、木構造における署名順序を証明することができる。すなわち、検証装置は、処理負荷を低減して検証処理を実行することができる。 According to such a configuration, the verification device verifies the validity of the public signature information for the component software based on the verification key and the hash value of the component software and component software. Therefore, the verification apparatus verifies the public signature information generated for the component software to be verified without verifying the individual signature information generated for each component software. The signature order can be verified. In other words, the verification apparatus can execute the verification process while reducing the processing load.
(6)本発明に係る検証装置は、上記署名生成装置により公開された前記公開署名情報を検証する検証装置であって、前記ソフトウェア及び当該ソフトウェアを構成する全ての部品ソフトウェアから演算されたハッシュ値、並びに対応する検証鍵を収集する収集部と、前記収集部により収集された全てのソフトウェアに対応する検証鍵、及び当該全てのソフトウェアから演算されたハッシュ値に基づいて、前記公開署名情報の正当性を検証する検証部と、を備える。 (6) The verification device according to the present invention is a verification device for verifying the public signature information published by the signature generation device, and a hash value calculated from the software and all component software constituting the software And a collection unit that collects corresponding verification keys, verification keys corresponding to all software collected by the collection unit, and hash values calculated from all the software, A verification unit for verifying the characteristics.
このような構成によれば、検証装置は、検証対象であるコンポーネントソフトウェア及び部品ソフトウェアに対して、一方向性ハッシュ関数演算の処理負荷を低減することができる。 According to such a configuration, the verification apparatus can reduce the processing load of the one-way hash function calculation on the component software and the component software that are the verification targets.
(7)本発明に係る署名生成方法は、ソフトウェアの完全性を保証する公開署名情報をコンピュータが生成する署名生成方法であって、前記ソフトウェアに対応して、非公開の署名鍵、及び公開されている検証鍵を記憶する記憶ステップと、一方向性ハッシュ関数演算を行うハッシュ演算ステップと、前記ハッシュ演算ステップにおいて前記ソフトウェアから演算されたハッシュ値に対して、前記署名鍵を乗じて前記公開署名情報を生成する署名情報生成ステップと、前記ソフトウェア、前記検証鍵、及び前記公開署名情報を公開する公開ステップと、を含み、前記署名情報生成ステップにおいて、前記ソフトウェアが当該ソフトウェアを構成する部品ソフトウェアを有する場合、前記部品ソフトウェアの公開署名情報と、前記部品ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果と、前記ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果とを総和して、前記公開署名情報を生成する。 (7) A signature generation method according to the present invention is a signature generation method in which a computer generates public signature information that guarantees the integrity of software. A storage step for storing the verification key, a hash calculation step for performing a one-way hash function calculation, and multiplying the hash value calculated from the software in the hash calculation step by the signature key A signature information generation step for generating information; and a disclosure step for releasing the software, the verification key, and the public signature information. In the signature information generation step, the software includes component software constituting the software. If so, the component software public signature information and the component software The public signature information is generated by summing a result obtained by multiplying the hash value calculated from a by the signature key and a result obtained by multiplying the hash value calculated from the software by the signature key. .
このような構成によれば、署名生成方法をコンピュータが実行することにより、(1)と同様の効果が期待できる。 According to such a configuration, the same effect as in (1) can be expected when the computer executes the signature generation method.
(8)本発明に係る署名生成プログラムは、ソフトウェアの完全性を保証する公開署名情報をコンピュータに生成させる署名生成プログラムであって、前記ソフトウェアに対応して、非公開の署名鍵、及び公開されている検証鍵を記憶する記憶ステップと、一方向性ハッシュ関数演算を行うハッシュ演算ステップと、前記ハッシュ演算ステップにおいて前記ソフトウェアから演算されたハッシュ値に対して、前記署名鍵を乗じて前記公開署名情報を生成する署名情報生成ステップと、前記ソフトウェア、前記検証鍵、及び前記公開署名情報を公開する公開ステップと、を実行させ、前記署名情報生成ステップにおいて、前記ソフトウェアが当該ソフトウェアを構成する部品ソフトウェアを有する場合、前記部品ソフトウェアの公開署名情報と、前記部品ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果と、前記ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果とを総和して、前記公開署名情報を生成させる。 (8) A signature generation program according to the present invention is a signature generation program that causes a computer to generate public signature information that guarantees the integrity of software. A storage step for storing the verification key, a hash calculation step for performing a one-way hash function calculation, and multiplying the hash value calculated from the software in the hash calculation step by the signature key A signature information generation step for generating information, and a disclosure step for publishing the software, the verification key, and the public signature information. In the signature information generation step, component software that constitutes the software The component software public signature information and The sum of the result of multiplying the hash value calculated from the component software by the signature key and the result of multiplying the hash value calculated from the software by the signature key to obtain the public signature information Generate.
このような構成によれば、署名生成プログラムをコンピュータに実行させることにより、(1)と同様の効果が期待できる。 According to such a configuration, the same effect as in (1) can be expected by causing the computer to execute the signature generation program.
本発明によれば、コンポーネントソフトウェアの完全性を効率的に確認できる。 According to the present invention, it is possible to efficiently confirm the integrity of component software.
<第1実施形態>
以下、本発明の実施形態の一例である第1実施形態について説明する。本実施形態に係る署名生成装置1は、ソフトウェアの完全性を保証するための公開署名情報を生成する。ここで、署名対象がコンポーネントソフトウェアである場合、このコンポーネントソフトウェアは、1又は複数の部品ソフトウェアから構成される。これらの部品ソフトウェアは、さらに下位の部品ソフトウェアから構成される場合もある。署名生成装置1は、このように、コンポーネントソフトウェアを最上位ノードとし、部品ソフトウェアを下位ノードとする木構造状に構成された各ノードにおける、ソフトウェアの完全性を保証するための公開署名情報を生成する。また、各ノードのソフトウェアに対して生成された公開署名情報は、検証装置2により正当性が検証され、ソフトウェアの完全性が確認される。
<First Embodiment>
Hereinafter, a first embodiment, which is an example of an embodiment of the present invention, will be described. The
なお、木構造とは、対称か非対称かを問わず、任意の構造を持つ木構造全てを指す。本発明は、この任意の構造を持つ木構造に対して適応可能である。 Note that the tree structure refers to all tree structures having an arbitrary structure, whether symmetrical or asymmetric. The present invention can be applied to a tree structure having this arbitrary structure.
ところで、各ノード(コンポーネントソフトウェア又は部品ソフトウェア)には、非公開の署名鍵と、公開されている検証鍵とが認証局(CA)によってそれぞれ割り当てられている。署名鍵は、所定の自然数(x)からなり、検証鍵は、GDH(GAP−Diffie−Hellman)グループ(G)の要素である楕円曲線上の点(g)と署名鍵(x)とに基づいて生成される楕円曲線上の点(v=xg)からなることが好ましい。このように構成されることにより、署名鍵(x)を知らない第三者が「v」や「g」の値から署名鍵(x)を求めることは計算量的に困難となる。 By the way, a private signature key and a public verification key are assigned to each node (component software or component software) by a certificate authority (CA). The signature key is composed of a predetermined natural number (x), and the verification key is based on the point (g) on the elliptic curve that is an element of the GDH (GAP-Diffie-Hellman) group (G) and the signature key (x). It is preferable to consist of points (v = xg) on the elliptic curve generated in the above. With this configuration, it is difficult for a third party who does not know the signature key (x) to obtain the signature key (x) from the values of “v” and “g”.
ここで、本実施形態で採用される具体的な署名方式について説明する。署名生成装置1では、ベースとなる署名方式としてGAP−Diffie−Hellman(GDH)署名を採用する。GDH署名とは、Decision−Diffie−Hellman(DDH)問題をペアリングと呼ばれるある種のブラックボックス関数e(P,Q)を用いることで、解くことが可能であることを利用した署名である。
Here, a specific signature scheme employed in the present embodiment will be described. The
次に、ペアリング演算を用いたGDH署名について説明する。楕円曲線上のDiffie−Hellman問題に関連して、GDHグループが定義されている。GDHグループについて簡単に説明する。Gをある楕円曲線上の点の集合とする。「g」を集合Gの要素としたとき、集合Gにおける楕円曲線上のDecisional Diffie−Hellman(DDH)問題とComputational Diffie−Hellman(CDH)問題が以下のように定義される。 Next, the GDH signature using the pairing operation will be described. A GDH group has been defined in connection with the Diffie-Hellman problem on an elliptic curve. The GDH group will be briefly described. Let G be a set of points on an elliptic curve. When “g” is an element of the set G, the Decision Diffie-Hellman (DDH) problem and the Computational Diffie-Hellman (CDH) problem on the elliptic curve in the set G are defined as follows.
DDH問題:あるa、b、cという自然数があり、g、ag、bg、cgが与えられた時、c=abかどうかを判定する問題。
CDH問題:あるa、b、cという自然数があり、g、ag、bgが与えられた時、abgを計算する問題。
DDH problem: A problem of determining whether c = ab when there are natural numbers a, b, and c and g, ag, bg, and cg are given.
CDH problem: A problem of calculating abg when there is a natural number of a, b, and c, and g, ag, and bg are given.
このとき、DDH問題は、計算量的に簡単であるが、CDH問題は、計算量的に難問である場合、この集合GをGDHグループと定義する。 At this time, the DDH problem is simple in terms of calculation amount, but if the CDH problem is difficult in terms of calculation amount, this set G is defined as a GDH group.
これに対し、ある楕円曲線上の点をP,Qとし、そのP,Qによっては次にあげる性質を持つことができるペアリングと呼ばれるブラックボックス関数e(P,Q)を定義できるものが存在する。
e(P,Q1+Q2)=e(P,Q1)e(P,Q2) ・・・(1)
e(P1+P2,Q)=e(P1,Q)e(P2,Q) ・・・(2)
e(aP,bQ)=e(bP,aQ)=e(abP,Q)=e(P,abQ)=e(P,Q)ab ・・・(3)
On the other hand, there are those that can define a black box function e (P, Q) called pairing that can have the following properties depending on P and Q as points on a certain elliptic curve. To do.
e (P, Q 1 + Q 2 ) = e (P, Q 1 ) e (P, Q 2 ) (1)
e (P 1 + P 2 , Q) = e (P 1 , Q) e (P 2 , Q) (2)
e (aP, bQ) = e (bP, aQ) = e (abP, Q) = e (P, abQ) = e (P, Q) ab (3)
よって、gがペアリング演算の可能な楕円曲線上の点である場合には、上記の性質から、(3)式にg、ag、bg、cgを入力すると、
e(ag,bg)=e(g,g)ab ・・・(4)
e(g,cg)=e(g,g)c ・・・(5)
となり、両者の値が一致するかどうかにより、「ab=c」であるかどうかを判定でき、gはGDHグループGの要素となりうる。
Therefore, when g is a point on an elliptic curve that can be paired, if g, ag, bg, and cg are input to the equation (3) from the above property,
e (ag, bg) = e (g, g) ab (4)
e (g, cg) = e (g, g) c (5)
Thus, whether or not “ab = c” can be determined depending on whether or not both values match, and g can be an element of the GDH group G.
この性質を利用してGDH署名が構成される。集合Gは、GDHグループであり、gは集合Gの要素となる点とする。また、一方向性ハッシュ関数Hを、通常使用される任意のビット長のサイズの数値データが固定のビット長のサイズの数値データに写像変換される方式とは異なり、
H:{0,1}*→G
のように任意のビット長のサイズの数値データを楕円曲線上の点として表現されるGDHグループGの要素に写像変換する方式であると定義する。
A GDH signature is constructed using this property. The set G is a GDH group, and g is a point that is an element of the set G. In addition, unlike the method in which the one-way hash function H is mapped and converted into numerical data having an arbitrary bit length size that is normally used, the numerical data having a fixed bit length size,
H: {0,1} * → G
It is defined that this is a method in which numerical data of an arbitrary bit length size is mapped and converted to elements of the GDH group G expressed as points on an elliptic curve.
このとき、GDH署名は以下のように定義される。
鍵生成:自然数xを選び、gからv=xgを計算する。xを署名鍵、楕円曲線上の点vを検証鍵とする。
署名:署名者は、メッセージ「m∈{0,1}*」に対しh=H(m)を計算し、さらに自分の署名鍵を用いてσ=xhを計算する。σをmに対する署名として公開する。
検証:検証者は、メッセージmからh=H(m)を計算し、g、v、h、σを準備する。e(g,σ)とe(v,h)を計算し、両者の値が一致したら、署名σは、正しい署名と判定する。
At this time, the GDH signature is defined as follows.
Key generation: A natural number x is selected, and v = xg is calculated from g. Let x be the signature key and point v on the elliptic curve be the verification key.
Signature: The signer calculates h = H (m) for the message “mε {0,1} * ”, and further calculates σ = xh using his signature key. Publish σ as a signature for m.
Verification: The verifier calculates h = H (m) from the message m, and prepares g, v, h, and σ. e (g, σ) and e (v, h) are calculated, and if both values match, the signature σ is determined to be a correct signature.
このとき、hの値は集合Gの要素となるので、ある自然数yを用いてh=ygと表現できる。その結果、正しく署名が行われていれば(g,v,h,σ)=(g,xg,yg,xyg)となる。したがって、正当な署名であれば上記の検証でのペアリング演算は、e(g,σ)=e(g,xyg)=e(g,g)xy=e(xg,yg)=e(v,h)となり、値が一致することから、検証可能となる。なお、GDHグループの条件であるCDH問題の困難性から、署名鍵xを知らない第三者がg、v、hの値から署名σを導出することは不可能である。 At this time, since the value of h becomes an element of the set G, it can be expressed as h = yg using a certain natural number y. As a result, if the signature is correctly performed, (g, v, h, σ) = (g, xg, yg, xyg). Therefore, if the signature is valid, the pairing operation in the above verification is e (g, σ) = e (g, xyg) = e (g, g) xy = e (xg, yg) = e (v , H) and the values match, so that verification is possible. Note that due to the difficulty of the CDH problem that is a condition of the GDH group, it is impossible for a third party who does not know the signature key x to derive the signature σ from the values of g, v, and h.
図1は、本実施形態に係る署名生成装置1の構成を示すブロック図である。
署名生成装置1は、記憶部11と、受信部12と、一方向性ハッシュ関数演算部13と、署名情報生成部14と、公開部15と、を備える。
FIG. 1 is a block diagram showing the configuration of the
The
記憶部11は、自身のノード(署名者uup)が作成したソフトウェア(mup)に対応して割り当てられている署名鍵(xup)と検証鍵(vup=xupg)とを記憶する。
The
受信部12は、署名対象である自身のソフトウェアが構成要素として部品ソフトウェアを有する場合、1又は複数の下位ノード(署名者ulow)が作成した部品ソフトウェア(mlow)と、これらの部品ソフトウェアに対して後述の公開部15により公開されている公開署名情報(σlow)と、を受信する。さらに、受信部12は、公開部15により同様に公開されている、部品ソフトウェアを最上位ノードとする木構造の構成を示すリストデータを受信する。
一方向性ハッシュ関数演算部13は、受信部12により受信された部品ソフトウェア(mlow)のそれぞれと、署名対象である自身のソフトウェア(mup)とに一方向性ハッシュ関数演算を行う。
The one-way hash
署名情報生成部14は、部品ソフトウェアの公開署名情報(σlow)と、部品ソフトウェア(mlow)それぞれから演算されたハッシュ値(hlow=H(mlow))に自身の署名鍵(xup)により演算(楕円曲線上の乗算)を行った結果(xuphlow)と、自身のソフトウェア(mup)から演算されたハッシュ値(hup=H(mup))に自身の署名鍵(xup)により演算(楕円曲線上の乗算)を行った結果(xuphup)と、を総和して、自身のソフトウェアに対する公開署名情報(σup=Σlow(σlow+xuphlow)+xuphup)を生成する(Σlowは、直下のノード全てについての総和を示す)。
The signature
なお、署名情報生成部14は、部品ソフトウェアがない場合、自身のソフトウェア(mup)から演算されたハッシュ値(hup)に自身の署名鍵(xup)により演算(楕円曲線上の乗算)を行った結果(xuphup)のみを、自身のソフトウェアに対する公開署名情報(σup=xuphup)とする。
Incidentally, the signature
公開部15は、自身のソフトウェア(mup)、検証鍵(vup)、及び署名情報生成部14により生成された公開署名情報(σup)を公開する。
The
このような構成によれば、署名生成装置1は、各ノードにおいて、部品ソフトウェアと部品ソフトウェアの公開署名情報とを用いて、コンポーネントソフトウェアの公開署名情報を生成する。この公開署名情報は、自身のノードに至るまでの木構造を表現し、かつ楕円曲線上の点のみで生成される。すなわち、署名者(部品ソフトウェアの数)が多くなっても、署名サイズは増大せず、一定値以下に抑制される。また、署名生成装置1は、自身のソフトウェアに対して生成した公開署名情報(σup)を、ソフトウェアの利用者(検証装置2)や、さらに上位のコンポーネントソフトウェアの作成者(署名生成装置1)へ提供できる。
According to such a configuration, the
また、公開部15は、自身のソフトウェアを最上位ノードとし、部品ソフトウェアを下位ノードとする木構造の構成を示すリストデータ(L)を、さらに公開する。
このリストデータは、例えば、
L={(up,{up1,up2,・・・},ID(mp)),
(up1,{},ID(mp1)),
(up2,{},ID(mp2)),・・・}
のように、構成される。ここで、署名者upは、コンポーネントソフトウェアmpの公開署名情報を生成し、mpを構成する部品ソフトウェア(mp1、mp2、・・・)は、それぞれ署名者(up1、up2、・・・)によって公開署名情報が生成されている。なお、ID(mα)は、ソフトウェアmαの識別子(ID)である。
Further, the
This list data is, for example,
L = {(u p, { u p1, u p2, ···}, ID (m p)),
(U p1 , {}, ID (m p1 )),
(U p2 , {}, ID (m p2 )), ...}
It is configured like this. Here, the signer u p generates the public signature information of the component software m p , and the component software (m p1 , m p2 ,...) Constituting the m p is the signer (u p1 , u p2). , ...), public signature information is generated. The ID (m α ) is an identifier (ID) of the software m α .
このような構成によれば、上位のノードにおいてコンポーネントソフトウェアの公開署名情報を生成する際の処理効率や、後述の検証装置2における検証の処理効率が向上する。
According to such a configuration, the processing efficiency when generating the public signature information of the component software in the upper node and the verification processing efficiency in the
次に、署名生成装置1により公開された公開署名情報(σ)を検証する検証装置2について説明する。なお、検証装置2は、署名生成装置1と統合されていてもよい。
Next, the
図2は、本実施形態に係る検証装置2の構成を示すブロック図である。
検証装置2は、収集部21と、一方向性ハッシュ関数演算部22と、検証部23と、を備える。
FIG. 2 is a block diagram showing the configuration of the
The
収集部21は、検証対象のソフトウェア及び対応する検証鍵と、このソフトウェアよりも下位のノードに位置する全ての部品ソフトウェア及び対応する検証鍵とを収集する。このとき、収集部21は、検証対象のソフトウェアと共に公開されているリストデータ(L)を取得し、このリストデータにより示されている木構造の構成に従って、各ノードの部品ソフトウェア及び対応する検証鍵を収集する。
The
一方向性ハッシュ関数演算部22は、収集部21により収集された各ソフトウェア(mi)に対して、一方向性ハッシュ関数演算を行う(hi=H(mi))。 The one-way hash function calculation unit 22 performs a one-way hash function calculation on each software (m i ) collected by the collection unit 21 (h i = H (m i )).
検証部23は、収集部21により収集された全てのノードのソフトウェアに対応する検証鍵と、一方向性ハッシュ関数演算部22により得られた全てのノードのソフトウェアから演算されたハッシュ値と、リストデータ(L)から得られる各ノード(署名者)の配置、及び各署名者と署名を行ったソフトウェアとの対応関係に関する情報と、に基づいて、公開署名情報(σ)の正当性を検証する。
The
具体的には、検証部23は、各ノードの検証鍵とハッシュ値とから、「{Πi∈all−node(e(vi,hi))}{Π(e(vup,hlow))}」を計算し、この計算結果と「e(g,σ)」の値とが一致することを確認することによって、公開署名情報(σ)の正当性を検証する。なお、式中で、直結する上下関係のノードをそれぞれ、「up」(上位ノード)及び「low」(下位ノード)と表した。
Specifically, the
このようにして、検証装置2は、各ノードのソフトウェアに対して生成される個々の署名情報等を検証することなく、検証対象のコンポーネントソフトウェアに対して公開された公開署名情報を数値演算のみで検証できる。これにより、検証装置2は、メモリコストや処理負荷を低減し、木構造で構成されているコンポーネントソフトウェアの完全性を効率的に確認することができる。また、検証装置2は、コンポーネントソフトウェアを構成する各部品ソフトウェアの完全性も確認できるので、改竄やウィルスの混入等があった箇所を容易に特定できる。
In this way, the
次に、署名生成装置1において、各ノードにおけるソフトウェアの公開署名情報を生成する方法と、検証装置2において、公開署名情報の正当性を検証する方法について説明する。
Next, a method for generating software public signature information at each node in the
署名生成装置1は、図3に示すように、記憶ステップS1と、受信ステップS2と、一方向性ハッシュ関数演算ステップS3と、署名情報生成ステップS4と、公開ステップS5とにより、各ノードにおけるソフトウェアの公開署名情報(σ)を公開する。
As shown in FIG. 3, the
記憶ステップS1において、記憶部11は、署名対象のソフトウェアに対応して、秘密情報である署名鍵と、公開情報である検証鍵とを取得して記憶する。
In the storing step S1, the
受信ステップS2において、受信部12は、直下のノード(署名者ulowの部品ソフトウェア)が存在する場合に、この部品ソフトウェア(mlow)、及び直下のノードの部品ソフトウェアに対して生成された公開署名情報(σlow)を受信する。
In the reception step S2, when there is a node immediately below (part software of the signer u low ), the receiving
一方向性ハッシュ関数演算ステップS3において、一方向性ハッシュ関数演算部13は、直下のノードの部品ソフトウェア(mlow)及び自身のノードのソフトウェア(mup)に対して、それぞれ一方向性ハッシュ関数演算を行う。
In the one-way hash function calculation step S3, the one-way hash
署名情報生成ステップS4において、署名情報生成部14は、自身のノードのソフトウェアから演算により得られたハッシュ値(hup)に自身の署名鍵(xup)を乗じた結果と、直下のノードがある場合に、この直下のノードの部品ソフトウェアから演算により得られたハッシュ値(hlow)に自身の署名鍵(xup)を乗じた結果と、直下のノードから受信した公開署名情報(σlow)と、を用いて自身のノードのソフトウェアに対して公開署名情報(σup)を生成する。
In the signature information generation step S4, the signature
公開ステップS5において、公開部15は、署名情報生成ステップS4により生成された公開署名情報、及び木構造の構成を示すリストデータを、ソフトウェア及び検証鍵と共に公開し、直上のノードの署名生成装置1又は検証装置2により参照可能とする。
In the publication step S5, the
このように、署名生成装置1に係る署名生成方法によれば、木構造の各ノードにおいて、直下のノードの部品ソフトウェアから得られたハッシュ値と、自身のノードのソフトウェアから得られたハッシュ値とに対して、自身のノードに割り当てられている署名鍵によって演算を行い、さらに直下のノードの部品ソフトウェアに対して生成された公開署名情報を用いて、自身の公開署名情報を生成する。この公開署名情報は、自身のノードに至るまでの署名経路を保持し、かつ楕円曲線上の点のみで生成される。すなわち、署名者(ノードの数)が多くなっても、署名サイズは増大せず、一定値以下に抑制することができる。
As described above, according to the signature generation method according to the
また、検証装置2は、図4に示すように、収集ステップS11と、一方向性ハッシュ関数演算ステップS12と、検証ステップS13とにより、公開署名情報(σ)の正当性を検証する。
Further, as shown in FIG. 4, the
収集ステップS11において、収集部21は、署名が行われた全てのノードのソフトウェア(mi)、及びこれら全てのノードの検証鍵(vi)を収集する。
In the collecting step S11, the collecting
一方向性ハッシュ関数演算ステップS12において、一方向性ハッシュ関数演算部22は、収集ステップS11により収集されたソフトウェアのそれぞれに対して、一方向性ハッシュ関数演算を行う。 In the one-way hash function calculation step S12, the one-way hash function calculation unit 22 performs a one-way hash function calculation on each of the software collected in the collection step S11.
検証ステップS13において、検証部23は、収集ステップS11により収集された全てのノードの検証鍵、全てのノードのソフトウェアから一方向性ハッシュ関数演算ステップS12により得られたハッシュ値、及びリストデータに基づいて公開署名情報(σ)の正当性を検証する。
In the verification step S13, the
このようにして、検証装置2に係る検証方法では、各ノードのソフトウェアに対して生成される個々の公開署名情報等を検証することなく、検証対象のソフトウェアに対して公開された公開署名情報を数値演算のみで検証できる。これにより、検証装置2は、メモリコストや処理負荷を低減し、木構造で構成されているコンポーネントソフトウェアの完全性を効率的に確認することができる。
In this way, in the verification method according to the
[実施例]
ここで、木構造が3分木3階層で構成されている場合における各ノードの署名生成装置1の動作について図5を参照しながら具体的に説明する。なお、第1層は、最終コンポーネントソフトウェアの作成者かつ署名者であるルートノードである。また、第2層は、最終コンポーネントソフトウェアを構成する中間コンポーネントソフトウェアの作成者かつ署名者である中間ノードである。また、第3層は、中間コンポーネントソフトウェアを構成する部品ソフトウェアの作成者かつ署名者であるリーフノードである。
[Example]
Here, the operation of the
すなわち、第1層には、一つのルートノードが配置されている。また、第2層には、三つの中間ノードが配置され、urootの直下にu1からu3が配置されている。また、第3層には、九つのリーフノードが配置され、u1の直下にu11からu13が配置され、u2の直下にu21からu23が配置され、u3の直下にu31からu33が配置されている。 That is, one root node is arranged in the first layer. The second layer, three intermediate node is arranged, is u 3 are arranged from u 1 immediately below the u root. Further, the third layer is disposed leaf nodes nine is, u 13 from u 11 immediately below the u 1 are arranged, u 23 is arranged from the u 21 immediately below the u 2, u directly below the u 3 31 to u 33 are arranged.
また、認証局(CA)は、予め各ノードに署名鍵と検証鍵を、以下のように付与している。なお、sとtはそれぞれ、1≦s≦3、1≦t≦3となる整数の符号である。
第1層:(署名鍵,検証鍵)=(xroot,vroot)=(xroot,xrootg)
第2層:(署名鍵,検証鍵)=(xs,vs)=(xs,xsg)
第3層:(署名鍵,検証鍵)=(xst,vst)=(xst,xstg)
The certificate authority (CA) assigns a signature key and a verification key to each node in advance as follows. Note that s and t are integer signs such that 1 ≦ s ≦ 3 and 1 ≦ t ≦ 3, respectively.
Layer 1: (signature key, verification key) = ( xroot , vroot ) = ( xroot , xroot g)
2nd layer: (signature key, verification key) = (x s , v s ) = (x s , x s g)
3rd layer: (signature key, verification key) = (x st , v st ) = (x st , x st g)
第3層の九つのリーフノード(署名者ust)は、署名対象である自身の作成した部品ソフトウェア(mst)に対してハッシュ値(hst=H(mst))を求め、ハッシュ値に自身の署名鍵xstを乗じて、公開署名情報(σst=xsthst)を生成する。また、リーフノード(署名者ust)は、生成した公開署名情報(σst)と、部品ソフトウェア(mst)とを公開する。 The nine leaf nodes (signer u st ) of the third layer obtain the hash value (h st = H (m st )) for the component software (m st ) created by the signature target itself, and the hash value Is multiplied by its own signature key x st to generate public signature information (σ st = x st h st ). Further, the leaf node (signer u st ) publishes the generated public signature information (σ st ) and the component software (m st ).
第2層の三つの中間ノード(署名者us)は、まず署名対象である自身の作成した中間コンポーネントソフトウェア(ms)から、ハッシュ値(hs=H(ms))を求める。
次に、中間ノード(署名者us)は、直下のリーフノード(署名者us1、us2、us3)から受信した部品ソフトウェア(ms1、ms2、ms3)から、ハッシュ値(hs1=H(ms1)、hs2=H(ms2)、hs3=H(ms3))を求める。
The three intermediate nodes (signer u s ) in the second layer first obtain a hash value (h s = H (m s )) from the intermediate component software (m s ) created by the user as a signature target.
Next, the intermediate node (signer u s ) obtains the hash value (h) from the component software (m s1 , m s2 , m s3 ) received from the leaf node (signer u s1 , u s2 , u s3 ) immediately below. s1 = H (m s1 ), h s2 = H (m s2 ), h s3 = H (m s3 )).
さらに、中間ノード(署名者us)は、直下のリーフノードから受信した公開署名情報(σs1、σs2、σs3)を用いて、
σs=σs1+xshs1+σs2+xshs2+σs3+xshs3
+xshs ・・・(6)
=xs1hs1+xshs1+xs2hs2+xshs2
+xs3hs3+xshs3+xshs ・・・(7)
を計算する。そして、中間ノード(署名者us)は、生成した公開署名情報(σs)と、中間コンポーネントソフトウェア(ms)とを公開する。
Further, the intermediate node (signer u s ) uses the public signature information (σ s1 , σ s2 , σ s3 ) received from the leaf node immediately below,
σ s = σ s1 + x sh h s1 + σ s2 + x sh h s2 + σ s3 + x sh h s3
+ X sh h s (6)
= X s1 h s1 + x s h s1 + x s2 h s2 + x s h s2
+ X s3 h s3 + x s h s3 + x s h s (7)
Calculate Then, the intermediate node (signer u s ) releases the generated public signature information (σ s ) and the intermediate component software (m s ).
第1層のルートノード(署名者uroot)は、まず署名対象である自身の作成した最終コンポーネントソフトウェア(mroot)から、ハッシュ値(hroot=H(mroot))を求める。
次に、ルートノード(署名者uroot)は、直下の中間ノード(署名者u1、u2、u3)から受信した中間コンポーネントソフトウェア(m1、m2、m3)から、ハッシュ値(h1=H(m1)、h2=H(m2)、h3=H(m3))を求める。
The root node (signer u root ) of the first layer first obtains a hash value (h root = H (m root )) from the final component software (m root ) created by itself as a signature target.
Next, the root node (signer u root ) obtains a hash value (m 1 , m 2 , m 3 ) from the intermediate component software (m 1 , m 2 , m 3 ) received from the immediately lower intermediate node (signers u 1 , u 2 , u 3 ). h 1 = H (m 1 ), h 2 = H (m 2 ), h 3 = H (m 3 )).
さらに、ルートノード(署名者uroot)は、直下の中間ノードから受信した公開署名情報(σ1、σ2、σ3)を用いて、
σ=σ1+xrooth1+σ2+xrooth2+σ3+xrooth3
+xroothroot ・・・(8)
=x11h11+x1h11+x12h12+x1h12
+x13h13+x1h13+x1h1+xrooth1
+x21h21+x2h21+x22h22+x2h22
+x23h23+x2h23+x2h2+xrooth2
+x31h31+x3h31+x32h32+x3h32
+x33h33+x3h33+x3h3+xrooth3
+xroothroot ・・・(9)
を計算する。そして、ルートノード(署名者uroot)は、生成した公開署名情報(σ)と、最終コンポーネントソフトウェア(mroot)とを公開する。
Further, the root node (signer u root ) uses the public signature information (σ 1 , σ 2 , σ 3 ) received from the immediate intermediate node,
σ = σ 1 + x root h 1 + σ 2 + x root h 2 + σ 3 + x root h 3
+ X root h root (8)
= X 11 h 11 + x 1
+ X 13 h 13 + x 1 h 13 + x 1 h 1 + x root h 1
+ X 21 h 21 + x 2 h 21 + x 22 h 22 + x 2 h 22
+ X 23 h 23 + x 2 h 23 + x 2 h 2 + x root h 2
+ X 31 h 31 + x 3 h 31 + x 32 h 32 + x 3 h 32
+ X 33 h 33 + x 3 h 33 + x 3 h 3 + x root h 3
+ X root h root (9)
Calculate Then, the root node (signer u root ) publishes the generated public signature information (σ) and final component software (m root ).
このようにして、署名生成装置1は、木構造上において連続(隣接)する2つのノード間の関係を署名鍵とハッシュ値の積で表すことにより、木構造を表現することができる。また、ノードの数が増えても、公開されるのは、署名対象のコンポーネントソフトウェアに対して生成される公開署名情報(σ)である。この署名情報は楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制される。したがって、署名生成装置1は、効率的に署名情報を生成することができる。
In this way, the
また、検証装置2は、以下の検証過程1から検証過程3により公開署名情報(σ)の正当性を検証する。
The
(検証過程1)検証装置2は、署名を行った全てのノードが署名対象としたソフトウェア(mroot、m1、m2、m3、m11、m12、m13、m21、m22、m23、m31、m32、m33)を収集し、これらに対してハッシュ値(hroot=H(mroot)、h1=H(m1)、h2=H(m2)、h3=H(m3)、h11=H(m11)、h12=H(m12)、h13=H(m13)、h21=H(m21)、h22=H(m22)、h23=H(m23)、h31=H(m31)、h32=H(m32)、h33=H(m33))を求める。
(Verification process 1) The
(検証過程2)検証装置2は、署名を行った全てのノードの検証鍵(vroot、v1、v2、v3、v11、v12、v13、v21、v22、v23、v31、v32、v33)を収集する。
(Verification Process 2)
(検証過程3)検証装置2は、公開された公開署名情報(σ)の正当性を検証する。具体的には、検証装置2は、検証過程1で求めたハッシュ値と、収集した全てのノードの検証鍵とから、
e(v11,h11)・e(v1,h11)
・e(v12,h12)・e(v1,h12)
・e(v13,h13)・e(v1,h13)
・e(v1,h1)・e(vroot,h1)
・e(v21,h21)・e(v2,h21)
・e(v22,h22)・e(v2,h22)
・e(v23,h23)・e(v2,h23)
・e(v2,h2)・e(vroot,h2)
・e(v31,h31)・e(v3,h31)
・e(v32,h32)・e(v3,h32)
・e(v33,h33)・e(v3,h33)
・e(v3,h3)・e(vroot,h3)
・e(vroot,hroot) ・・・(10)
を計算し、この値とe(g,σ)の値とが一致することを確認する。検証装置2は、これらの値が一致した場合には、公開署名情報(σ)が正当であると判断する。
(Verification process 3) The
e (v 11 , h 11 ) · e (v 1 , h 11 )
· E (v 12, h 12 ) · e (
· E (v 13, h 13 ) · e (
E (v 1 , h 1 ) e (v root , h 1 )
· E (v 21, h 21 ) · e (
E (v 22 , h 22 ) e (v 2 , h 22 )
E (v 23 , h 23 ) e (v 2 , h 23 )
E (v 2 , h 2 ) e (v root , h 2 )
· E (v 31, h 31 ) · e (
E (v 32 , h 32 ) e (v 3 , h 32 )
E (v 33 , h 33 ) e (v 3 , h 33 )
E (v 3 , h 3 ) e (v root , h 3 )
・ E (v root , h root ) (10)
And confirm that this value matches the value of e (g, σ). If these values match, the
ここで、(検証過程3)における「e(g,σ)」を展開すると、
e(g,σ)
=e(g,x11h11)・e(g,x1h11)
・e(g,x12h12)・e(g,x1h12)
・e(g,x13h13)・e(g,x1h13)
・e(g,x1h1)・e(g,xrooth1)
・e(g,x21h21)・e(g,x2h21)
・e(g,x22h22)・e(g,x2h22)
・e(g,x23h23)・e(g,x2h23)
・e(g,x2h2)・e(g,xrooth2)
・e(g,x31h31)・e(g,x3h31)
・e(g,x32h32)・e(g,x3h32)
・e(g,x33h33)・e(g,x3h33)
・e(g,x3h3)・e(g,xrooth3)
・e(g,xroothroot) ・・・(11)
=e(x11g,h11)・e(x1g,h11)
・e(x12g,h12)・e(x1g,h12)
・e(x13g,h13)・e(x1g,h13)
・e(x1g,h1)・e(xrootg,h1)
・e(x21g,h21)・e(x2g,h21)
・e(x22g,h22)・e(x2g,h22)
・e(x23g,h23)・e(x2g,h23)
・e(x2g,h2)・e(xrootg,h2)
・e(x31g,h31)・e(x3g,h31)
・e(x32g,h32)・e(x3g,h32)
・e(x33g,h33)・e(x3g,h33)
・e(x3g,h3)・e(xrootg,h3)
・e(xrootg,hroot) ・・・(12)
=e(v11,h11)・e(v1,h11)
・e(v12,h12)・e(v1,h12)
・e(v13,h13)・e(v1,h13)
・e(v1,h1)・e(vroot,h1)
・e(v21,h21)・e(v2,h21)
・e(v22,h22)・e(v2,h22)
・e(v23,h23)・e(v2,h23)
・e(v2,h2)・e(vroot,h2)
・e(v31,h31)・e(v3,h31)
・e(v32,h32)・e(v3,h32)
・e(v33,h33)・e(v3,h33)
・e(v3,h3)・e(vroot,h3)
・e(vroot,hroot) ・・・(13)
となり、署名の過程が正しく行われていれば、(10)式と一致する。よって、公開されているソフトウェア作成者の検証鍵と、全ての部品ソフトウェア、中間コンポーネントソフトウェア及び最終コンポーネントソフトウェアから求めたハッシュ値とから、公開署名情報の検証が可能となる。
Here, when “e (g, σ)” in (Verification process 3) is expanded,
e (g, σ)
= E (g, x 11 h 11 ) · e (g, x 1 h 11 )
· E (g, x 12 h 12) · e (g, x 1 h 12)
· E (g, x 13 h 13) · e (g, x 1 h 13)
E (g, x 1 h 1 ) e (g, x root h 1 )
· E (g, x 21 h 21) · e (g, x 2 h 21)
· E (g, x 22 h 22) · e (g, x 2 h 22)
· E (g, x 23 h 23) · e (g, x 2 h 23)
E (g, x 2 h 2 ) e (g, x root h 2 )
E (g, x 31 h 31 ) e (g, x 3 h 31 )
E (g, x 32 h 32 ) e (g, x 3 h 32 )
E (g, x 33 h 33 ) e (g, x 3 h 33 )
E (g, x 3 h 3 ) e (g, x root h 3 )
E (g, x root h root ) (11)
= E (x 11 g, h 11 ) · e (x 1 g, h 11 )
· E (x 12 g, h 12) · e (x 1 g, h 12)
E (x 13 g, h 13 ) e (x 1 g, h 13 )
E (x 1 g, h 1 ) e (x root g, h 1 )
E (x 21 g, h 21 ) e (x 2 g, h 21 )
E (x 22 g, h 22 ) e (x 2 g, h 22 )
E (x 23 g, h 23 ) e (x 2 g, h 23 )
E (x 2 g, h 2 ) e (x root g, h 2 )
E (x 31 g, h 31 ) e (x 3 g, h 31 )
E (x 32 g, h 32 ) e (x 3 g, h 32 )
E (x 33 g, h 33 ) e (x 3 g, h 33 )
E (x 3 g, h 3 ) e (x root g, h 3 )
・ E (x root g, h root ) (12)
= E (v 11 , h 11 ) · e (v 1 , h 11 )
· E (v 12, h 12 ) · e (
· E (v 13, h 13 ) · e (
E (v 1 , h 1 ) e (v root , h 1 )
· E (v 21, h 21 ) · e (
E (v 22 , h 22 ) e (v 2 , h 22 )
E (v 23 , h 23 ) e (v 2 , h 23 )
E (v 2 , h 2 ) e (v root , h 2 )
· E (v 31, h 31 ) · e (
E (v 32 , h 32 ) e (v 3 , h 32 )
E (v 33 , h 33 ) e (v 3 , h 33 )
E (v 3 , h 3 ) e (v root , h 3 )
・ E (v root , h root ) (13)
Thus, if the signature process is correctly performed, the expression (10) is satisfied. Therefore, it is possible to verify the public signature information from the publicly available verification key of the software creator and the hash values obtained from all the component software, intermediate component software, and final component software.
ここで、σの値に着目すると、署名者ustはhstにのみ署名処理(xsthstの演算)を行っており、他のhs及びhrootにはこのような署名処理を行っていない。これにより、署名者ustが最初、すなわち木構造におけるリーフノードの署名者であることが分かる。 Here, paying attention to the value of sigma, the signer u st is performed signature processing only h st (the calculation of x st h st), the other h s and h root performing such signature process Not. Thereby, it is understood that the signer u st is the first, that is, the signer of the leaf node in the tree structure.
また、「xshst」の項により、この最初の署名者が署名処理したhstに対して署名処理を行っているのがユーザusであることが表されているので、この署名者usが2番目(中間ノード)の署名者であることが分かる。署名者usは同時にhsに対して署名処理(xshs)を行っている。同様に「xrooths」の項により、このhsに対して署名処理を行っているのが署名者urootであることが表されているので、この署名者urootが3番目の署名者であることが分かる。 Also, the "x s h st" section, since it has been expressed that the this first signer is performing the signature process on h st signed process is user u s, the signer it can be seen u s is the signer of the second (intermediate nodes). Signer u s is doing a signature processing on h s (x s h s) at the same time. Similarly, the section “x root h s ” indicates that it is the signer u root that has signed the h s , so this signer u root is the third signature. It can be seen that
さらに、hrootに対して署名処理を行っている署名者はなく、署名者urootで収束しているため、この3番目の署名者がルートノードであることが分かる。 Furthermore, since there is no signer who is performing the signature processing for h root and the signer u root has converged, it can be seen that this third signer is the root node.
また、(11)式において、CDH問題や楕円曲線上の離散対数問題から、秘密情報である署名鍵を知らない第三者が、右辺の各項(xαhβ又はxβhβ)を任意に取り除くことはできないため、第三者による順序の入れ替えは不可能である。すなわち、本署名方式は、木構造における署名順序を署名鍵とハッシュ値の積により表現することができる。 Further, in the equation (11), a third party who does not know the signature key that is the secret information from the CDH problem or the discrete logarithm problem on the elliptic curve can change each term (x α h β or x β h β ) on the right side. Since it cannot be removed arbitrarily, it is impossible to change the order by a third party. That is, according to the present signature method, the signature order in the tree structure can be expressed by the product of the signature key and the hash value.
また、署名者の数(ノードの数)が増えても、公開される情報は公開署名情報(σ)のみである。この公開署名情報(σ)は一つの楕円曲線上の点であるため、情報のサイズ(容量)は増大せず、一定値以下に抑制される。 Even if the number of signers (the number of nodes) increases, the public information is only the public signature information (σ). Since this public signature information (σ) is a point on one elliptic curve, the size (capacity) of the information does not increase and is suppressed to a certain value or less.
さらに、検証装置2では、検証過程3で示した数値演算のみで検証することにより、ノード間をどのような順序で署名されてきたかを証明することができる。したがって、検証装置2は、メモリコストや処理負荷を低減し、木構造で構成されているコンポーネントソフトウェアの完全性を効率的に確認することができる。
Further, the
<第2実施形態>
以下、本発明の実施形態の一例である第2実施形態について説明する。なお、第1実施形態と同様の構成については、同一の符号を付し、説明を省略又は簡略化する。
Second Embodiment
Hereinafter, a second embodiment which is an example of an embodiment of the present invention will be described. In addition, about the structure similar to 1st Embodiment, the same code | symbol is attached | subjected and description is abbreviate | omitted or simplified.
図6は、本実施形態に係る署名生成装置1aの構成を示すブロック図である。
署名生成装置1aは、受信部12a、一方向性ハッシュ関数演算部13a及び公開部15aの構成が第1実施形態と異なる。
FIG. 6 is a block diagram showing a configuration of the signature generation device 1a according to the present embodiment.
The signature generation device 1a is different from the first embodiment in the configuration of the
すなわち、受信部12aは、直下のノードから、ソフトウェア(mlow)の代わりにハッシュ値(hlow)を受信して署名情報生成部14へ供給する。これにより、一方向性ハッシュ関数演算部13aは、直下のノードのソフトウェア(mlow)に一方向性ハッシュ関数演算を行う必要がなくなる。
That is, the receiving
また、公開部15aは、ソフトウェア(mup)、検証鍵(vup)、公開署名情報(σup)及びリストデータ(Lup)に加えて、一方向性ハッシュ関数演算部13aにより自身の署名対象であるソフトウェアから演算されたハッシュ値を、さらに公開する。これにより、直上のノードの署名生成装置1a又は検証装置2aは、この公開されているハッシュ値を、ソフトウェアそのものの代わりに利用する。
In addition to the software (m up ), the verification key (v up ), the public signature information (σ up ), and the list data (L up ), the
図7は、本実施形態に係る検証装置2aの構成を示すブロック図である。
検証装置2aは、収集部21aの構成が第1実施形態と異なる。さらに、検証装置2aは、第1実施形態における一方向性ハッシュ関数演算部22を必要としない。
FIG. 7 is a block diagram showing the configuration of the
The
すなわち、収集部21aは、各ノードから、ソフトウェア(mi)の代わりにハッシュ値(hi)を受信して検証部23へ供給する。これにより、検証装置2aは、各ノードのソフトウェア(mi)に一方向性ハッシュ関数演算を行う必要がなくなる。
That is, the collecting
本実施形態によれば、署名生成装置1a及び検証装置2aにおける一方向性ハッシュ関数演算の処理負荷を低減することができる。
具体的には、第1実施形態の署名生成装置1における一方向性ハッシュ関数演算ステップS3の処理負荷が低減され、検証装置2における一方向性ハッシュ関数演算ステップS12は不要となる。
According to this embodiment, the processing load of the one-way hash function calculation in the signature generation device 1a and the
Specifically, the processing load of the one-way hash function calculation step S3 in the
なお、各ノードにおける署名処理では、直下のノードからソフトウェア(mi)又はハッシュ値(hi)のいずれかを受信すればよく、署名生成装置1a及び検証装置2a内において統一されていなくてもよい。
In the signature processing in each node, it is only necessary to receive either software (m i ) or hash value (h i ) from the node immediately below, and even if it is not unified in the signature generation device 1a and the
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。 As mentioned above, although embodiment of this invention was described, this invention is not restricted to embodiment mentioned above. Further, the effects described in the present embodiment are merely a list of the most preferable effects resulting from the present invention, and the effects of the present invention are not limited to those described in the present embodiment.
前述の実施形態において、ペアリング関数への入力である2つの引数は、ペアリングの演算が可能な楕円曲線上の点gのスカラー倍として表されるが、この楕円曲線は、第1引数と第2引数とで共通でなくてもよい。すなわち、ペアリング関数の第1引数用と第2引数用とに、それぞれ異なる楕円曲線(G1又はG2)上の2点(g1又はg2)が与えられていてもよい。
この場合、前述の実施形態の説明におけるペアリング関数の第1引数に表れるgはg1に、第2引数に表れるgはg2に読み替えられる。また、楕円曲線上の点を用いて生成される前述の各種公開情報(検証鍵、ハッシュ値、公開署名情報)は、ペアリング関数の第1引数又は第2引数のいずれに入力されるかに応じて、G1若しくはG2のいずれかを用いて1種類、又は双方を用いて2種類生成される。
このことにより、公開情報の数、すなわち演算回数が増加する場合があるが、ペアリング関数の演算において並列して処理できるため、計算時間の短縮が期待できる。
In the above-described embodiment, the two arguments that are inputs to the pairing function are expressed as a scalar multiple of the point g on the elliptic curve that can be paired. The second argument may not be common. That is, two points (g 1 or g 2 ) on different elliptic curves (G 1 or G 2 ) may be given for the first argument and the second argument of the pairing function, respectively.
In this case, g appearing in the first argument of the pairing function in the description of the foregoing embodiments the g 1, g appearing in the second argument is read as g 2. Whether the various public information (verification key, hash value, public signature information) generated using the points on the elliptic curve is input to the first argument or the second argument of the pairing function. Accordingly, one type is generated using either G 1 or G 2 , or two types are generated using both.
As a result, the number of public information, that is, the number of operations may increase, but since the processing can be performed in parallel in the calculation of the pairing function, the calculation time can be expected to be shortened.
また、署名生成装置1(又は1a)及び検証装置2(2a)による一連の処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。また、当該プログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。 A series of processing by the signature generation apparatus 1 (or 1a) and the verification apparatus 2 (2a) can also be performed by software. When a series of processing is performed by software, a program constituting the software is installed in a general-purpose computer or the like. The program may be recorded on a removable medium such as a CD-ROM and distributed to the user, or may be distributed by being downloaded to the user's computer via a network.
1、1a 署名生成装置
2、2a 検証装置
11 記憶部
12、12a 受信部
13、13a 一方向性ハッシュ関数演算部(第1ハッシュ演算部)
14 署名情報生成部
15、15a 公開部
21、21a 収集部
22 一方向性ハッシュ関数演算部(第2ハッシュ演算部)
23 検証部
1, 1a
14 Signature
23 Verification Department
Claims (8)
前記ソフトウェアに対応して、非公開の署名鍵、及び公開されている検証鍵を記憶する記憶部と、
一方向性ハッシュ関数演算を行う第1ハッシュ演算部と、
前記第1ハッシュ演算部により前記ソフトウェアから演算されたハッシュ値に対して、前記署名鍵を乗じて前記公開署名情報を生成する署名情報生成部と、
前記ソフトウェア、前記検証鍵、及び前記公開署名情報を公開する公開部と、を備え、
前記署名情報生成部は、前記ソフトウェアが既に公開されている1又は複数の部品ソフトウェアから構成される場合、前記部品ソフトウェアの公開署名情報と、前記部品ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果と、前記ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果とを総和して、前記公開署名情報を生成する署名生成装置。 A signature generation device that generates public signature information that guarantees the integrity of software,
Corresponding to the software, a storage unit that stores a private signature key and a public verification key;
A first hash calculation unit for performing a one-way hash function calculation;
A signature information generation unit that generates the public signature information by multiplying the hash value calculated from the software by the first hash calculation unit by the signature key;
The software, the verification key, and a public unit that publishes the public signature information,
The signature information generation section, said the software can Ru already composed of one or more components software is published, the public signature information of the component software, the signature to the hash value calculated from the component software A signature generation device that generates the public signature information by summing a result obtained by multiplying a key and a result obtained by multiplying the hash value calculated from the software by the signature key.
前記検証鍵は、GDH(GAP−Diffie−Hellman)グループの要素である楕円曲線上の点と前記署名鍵とに基づいて生成される、当該楕円曲線上の点からなる請求項1に記載の署名生成装置。 The signing key consists of a predetermined natural number,
The signature according to claim 1, wherein the verification key includes a point on the elliptic curve generated based on a point on the elliptic curve that is an element of a GDH (GAP-Diffie-Hellman) group and the signature key. Generator.
前記ソフトウェア又は当該ソフトウェアから演算されたハッシュ値、及び対応する検証鍵、並びに当該ソフトウェアを構成する全ての部品ソフトウェア又は当該部品ソフトウェアから演算されたハッシュ値、及び対応する検証鍵を収集する収集部と、
前記収集部により収集されたソフトウェアのそれぞれに対して、一方向性ハッシュ関数演算を行う第2ハッシュ演算部と、
前記収集部により収集された全てのソフトウェアに対応する検証鍵、及び当該全てのソフトウェアから演算されたハッシュ値に基づいて、前記公開署名情報の正当性を検証する検証部と、を備える検証装置。 A verification device that verifies the public signature information published by the signature generation device according to claim 1,
A collection unit that collects the software or a hash value calculated from the software and a corresponding verification key, and all component software constituting the software or a hash value calculated from the component software and a corresponding verification key; ,
A second hash operation unit that performs a one-way hash function operation on each of the software collected by the collection unit;
A verification apparatus comprising: a verification key corresponding to all software collected by the collection unit; and a verification unit that verifies validity of the public signature information based on hash values calculated from all the software.
前記ソフトウェア及び当該ソフトウェアを構成する全ての部品ソフトウェアから演算されたハッシュ値、並びに対応する検証鍵を収集する収集部と、
前記収集部により収集された全てのソフトウェアに対応する検証鍵、及び当該全てのソフトウェアから演算されたハッシュ値に基づいて、前記公開署名情報の正当性を検証する検証部と、を備える検証装置。 A verification device that verifies the public signature information published by the signature generation device according to claim 4,
A collection unit that collects the hash values calculated from the software and all component software constituting the software, and a corresponding verification key;
A verification apparatus comprising: a verification key corresponding to all software collected by the collection unit; and a verification unit that verifies validity of the public signature information based on hash values calculated from all the software.
前記ソフトウェアに対応して、非公開の署名鍵、及び公開されている検証鍵を前記コンピュータの記憶部に記憶する記憶ステップと、
前記コンピュータを、一方向性ハッシュ関数演算を行う第1ハッシュ演算部として機能させるハッシュ演算ステップと、
前記コンピュータを、前記ハッシュ演算ステップにおいて前記ソフトウェアから演算されたハッシュ値に対して、前記署名鍵を乗じて前記公開署名情報を生成する署名情報生成部として機能させる署名情報生成ステップと、
前記コンピュータを、前記ソフトウェア、前記検証鍵、及び前記公開署名情報を公開する公開部として機能させる公開ステップと、を含み、
前記署名情報生成ステップにおいて、前記ソフトウェアが既に公開されている1又は複数の部品ソフトウェアから構成される場合、前記部品ソフトウェアの公開署名情報と、前記部品ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果と、前記ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果とを総和して、前記公開署名情報を生成する署名生成方法。 A signature generation method in which a computer generates public signature information that guarantees the integrity of software,
A storage step of storing a private signature key and a public verification key in the storage unit of the computer corresponding to the software;
A hash calculation step for causing the computer to function as a first hash calculation unit for performing a one-way hash function calculation;
Said computer for calculating hash values from the software in the hash calculation step, the signature information generation step to function as the signature information generation unit configured to generate the public signature information by multiplying the signature key,
A public step of causing the computer to function as a public unit for publicizing the software, the verification key, and the public signature information,
In the signature information generation step, wherein if the software is the Ru already composed of one or more components software is published, and the component software public signature information, the signature to the hash value which the computed from the component software A signature generation method for generating the public signature information by summing a result obtained by multiplying a key and a result obtained by multiplying a hash value calculated from the software by the signature key.
前記ソフトウェアに対応して、非公開の署名鍵、及び公開されている検証鍵を前記コンピュータの記憶部に記憶する記憶ステップと、
前記コンピュータを、一方向性ハッシュ関数演算を行う第1ハッシュ演算部として機能させるハッシュ演算ステップと、
前記コンピュータを、前記ハッシュ演算ステップにおいて前記ソフトウェアから演算されたハッシュ値に対して、前記署名鍵を乗じて前記公開署名情報を生成する署名情報生成部として機能させる署名情報生成ステップと、
前記コンピュータを、前記ソフトウェア、前記検証鍵、及び前記公開署名情報を公開する公開部として機能させる公開ステップと、を実行させ、
前記署名情報生成ステップにおいて、前記ソフトウェアが既に公開されている1又は複数の部品ソフトウェアから構成される場合、前記部品ソフトウェアの公開署名情報と、前記部品ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果と、前記ソフトウェアから演算されたハッシュ値に対して前記署名鍵を乗じた結果とを総和して、前記公開署名情報を生成させる署名生成プログラム。 A signature generation program that causes a computer to generate public signature information that guarantees software integrity,
A storage step of storing a private signature key and a public verification key in the storage unit of the computer corresponding to the software;
A hash calculation step for causing the computer to function as a first hash calculation unit for performing a one-way hash function calculation;
Said computer for calculating hash values from the software in the hash calculation step, the signature information generation step to function as the signature information generation unit configured to generate the public signature information by multiplying the signature key,
Causing the computer to function as a public unit that publishes the software, the verification key, and the public signature information, and
In the signature information generation step, wherein if the software is the Ru already composed of one or more components software is published, and the component software public signature information, the signature to the hash value which the computed from the component software A signature generation program for generating the public signature information by summing a result obtained by multiplying the key and a result obtained by multiplying the hash value calculated from the software by the signature key.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010204937A JP5597075B2 (en) | 2010-09-13 | 2010-09-13 | Signature generation apparatus, verification apparatus, signature generation method, and signature generation program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010204937A JP5597075B2 (en) | 2010-09-13 | 2010-09-13 | Signature generation apparatus, verification apparatus, signature generation method, and signature generation program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012060621A JP2012060621A (en) | 2012-03-22 |
JP5597075B2 true JP5597075B2 (en) | 2014-10-01 |
Family
ID=46057113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010204937A Active JP5597075B2 (en) | 2010-09-13 | 2010-09-13 | Signature generation apparatus, verification apparatus, signature generation method, and signature generation program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5597075B2 (en) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4788212B2 (en) * | 2005-07-13 | 2011-10-05 | 富士ゼロックス株式会社 | Digital signature program and digital signature system |
JP2010050760A (en) * | 2008-08-22 | 2010-03-04 | Hitachi Ltd | Content protection apparatus, and content utilization apparatus |
JP5183401B2 (en) * | 2008-09-29 | 2013-04-17 | Kddi株式会社 | Aggregate signature generation system, aggregate signature generation method, and aggregate signature generation program |
-
2010
- 2010-09-13 JP JP2010204937A patent/JP5597075B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2012060621A (en) | 2012-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5488596B2 (en) | Signature device, signature verification device, anonymous authentication system, signature method, signature authentication method, and programs thereof | |
US9009481B2 (en) | System and method for protecting cryptographic assets from a white-box attack | |
JP2023052834A (en) | System for securing verification key from alternation and verifying validity of proof of correctness | |
JP2012014203A5 (en) | ||
KR20160042435A (en) | Method and device for generating digital signature | |
JP4818663B2 (en) | System and method for homogenous map-based signature generation and verification | |
CN113037479B (en) | Data verification method and device | |
US20160149708A1 (en) | Electronic signature system | |
CN112149156B (en) | System and selector for disclosing recorded attributes and data entries and method therefor | |
Anada et al. | RSA public keys with inside structure: Proofs of key generation and identities for web-of-trust | |
Mishra et al. | BB-tree based secure and dynamic public auditing convergence for cloud storage | |
Gayoso Martínez et al. | Secure elliptic curves in cryptography | |
JP5597075B2 (en) | Signature generation apparatus, verification apparatus, signature generation method, and signature generation program | |
CN112737793B (en) | Method and device for updating block chain domain name configuration | |
Na et al. | Comparative analysis of schnorr digital signature and ecdsa for efficiency using private ethereum network | |
JP6634171B2 (en) | Apparatus, method and program for certifying public key reliability | |
JP2012216916A (en) | Multiple signature system, verification system, multiple signature method, and multiple signature program | |
CN114026586A (en) | Zero knowledge or pay protocol for granting access to encrypted assets | |
JP2011029785A (en) | Multiple signature system, verification system, multiple signature method and multiple signature program | |
WO2011033642A1 (en) | Signature generation device and signature verification device | |
Xu et al. | Comment on an improved signature without using one-way hash functions | |
Do et al. | Digital signature schemes from two hard problems | |
JP2012175634A (en) | Aggregate signature system, verification system, aggregate signature method, and aggregate signature program | |
JP5497595B2 (en) | Aggregate signature system, verification system, aggregate signature method, and aggregate signature program | |
JP2011029783A (en) | Multiple signature system, verification system, multiple signature method and multiple signature program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20120803 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130308 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140204 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140404 |
|
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: 20140715 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140808 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5597075 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |