(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-18
(45)【発行日】2023-12-26
(54)【発明の名称】署名検証システム、署名装置、署名検証方法、およびプログラム
(51)【国際特許分類】
H04L 9/32 20060101AFI20231219BHJP
G09C 1/00 20060101ALI20231219BHJP
【FI】
H04L9/32 200B
G09C1/00 650Z
(21)【出願番号】P 2022529192
(86)(22)【出願日】2020-06-02
(86)【国際出願番号】 JP2020021825
(87)【国際公開番号】W WO2021245807
(87)【国際公開日】2021-12-09
【審査請求日】2022-11-29
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100141519
【氏名又は名称】梶田 邦之
(72)【発明者】
【氏名】田宮 寛人
(72)【発明者】
【氏名】エンケタイワン, バトニヤマ
(72)【発明者】
【氏名】一色 寿幸
【審査官】上島 拓也
(56)【参考文献】
【文献】特開2010-050760(JP,A)
【文献】国際公開第2009/028513(WO,A1)
【文献】米国特許出願公開第2009/0138718(US,A1)
【文献】国際公開第2019/057810(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
データの変更者の公開鍵と、前記データの仮の委託先変更者の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記変更者の公開鍵を用いて算出された前記データ全体の第2のカメレオンハッシュ値とに対して署名を行う署名装置と、
前記署名がなされた署名付きデータを受け取って、前記変更者の秘密鍵を用いて、前記仮の委託先変更者の公開鍵を実際の委託先変更者の公開鍵に変更する変更装置と、
前記実際の委託先変更者が指定された署名付きデータを受け取って、前記実際の委託先変更者の秘密鍵を用いて、前記データの変更可能部分を変更する委託先変更装置と、
前記データの変更可能部分が変更された署名付きデータを受け取って、前記変更者の公開鍵と前記実際の委託先変更者の公開鍵とを用いて、前記署名を検証する検証装置と
を含む署名検証システム。
【請求項2】
前記変更装置は、前記第1のカメレオンハッシュ値の計算に利用された乱数を、前記実際の委託先変更者の公開鍵に対応する乱数に置き換えることを特徴とする請求項1に記載の署名検証システム。
【請求項3】
前記委託先変更装置は、前記第2のカメレオンハッシュ値の計算に利用された乱数を、前記実際の委託先変更者の秘密鍵を用いて算出された前記変更されたデータに対応する乱数に置き換えることを特徴とする請求項1または2に記載の署名検証システム。
【請求項4】
前記検証装置は、前記変更者の公開鍵と、前記実際の委託先変更者の公開鍵と、前記実際の委託先変更者の公開鍵に対応する乱数とから前記第1のカメレオンハッシュ値を再現し、前記変更されたデータと、前記実際の委託先変更者の公開鍵と、前記変更されたデータに対する乱数とから前記第2のカメレオンハッシュ値を再現し、前記再現された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記第2のカメレオンハッシュ値と、署名者の公開鍵とを用いて前記署名を検証することを特徴とする請求項1乃至3のいずれか1項に記載の署名検証システム。
【請求項5】
前記変更装置は、前記変更者の秘密鍵を用いて、前記データの変更可能部分を変更することを特徴とする請求項1乃至4のいずれか1項に記載の署名検証システム。
【請求項6】
前記署名装置は、前記仮の委託先変更者の公開鍵として、前記変更者の公開鍵を用いて前記第1のカメレオンハッシュ値を算出することを特徴とする請求項1乃至5のいずれか1項に記載の署名検証システム。
【請求項7】
データの変更者の公開鍵と、前記データの仮の委託先変更者の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記変更者の公開鍵を用いて算出された前記データの全体の第2のカメレオンハッシュ値とに対して署名を行うことを特徴とする署名装置。
【請求項8】
データの変更者の公開鍵と、前記データの仮の委託先変更者の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記変更者の公開鍵を用いて算出された前記データ全体の第2のカメレオンハッシュ値とに対して署名を行う署名ステップと、
前記署名がなされた署名付きデータを受け取って、前記変更者の秘密鍵を用いて、前記仮の委託先変更者の公開鍵を実際の委託先変更者の公開鍵に変更する第1の変更ステップと、
前記実際の委託先変更者が指定された署名付きデータを受け取って、前記実際の委託先変更者の秘密鍵を用いて、前記データの変更可能部分を変更する第2の変更ステップと、
前記データの内容が変更された署名付きデータを受け取って、前記変更者の公開鍵と前記実際の委託先変更者の公開鍵とを用いて、前記署名を検証する検証ステップと
を含む署名検証方法。
【請求項9】
コンピュータに請求項8に記載の署名検証方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、署名検証システム、署名装置、署名検証方法、およびプログラムに関する。
【背景技術】
【0002】
近年のAI(人工知能)分析性能の向上により、分析対象となるデータの価値が向上している。そこで、個人が自分のデータを、それを欲する企業に提供し、その対価を受け取る仕組みが検討されている。その仕組みの一つとして、個人のデータを管理し、運用する情報銀行が注目を集めている。
【0003】
情報銀行の仕組みでは、まず、情報提供者が個人に関するデータを作成し、署名する。署名付きデータは、個人に提供される。署名付きデータを受け取った個人は、当該署名付きデータを情報銀行に預託する。情報銀行は、預託された署名付きデータを情報利用者に提供する。
【0004】
情報提供者による署名は、データの出所を明らかにし、データの信頼性を保つために行われる。したがって、データが変更されると、署名の検証には失敗してしまう。しかしながら、署名の有効性を維持したまま、データの一部を変更したい場合がある。例えば、データが個人の健康診断情報を含む場合、個人は、健康診断情報の一部を隠したい場合があり得る。具体的には、健康診断情報のうち、体重のデータは渡すが、血液型のデータは渡したくない場合等があり得る。
【0005】
さらに、情報銀行は、情報利用者の要望に応じて個人のデータを変更し、変更したデータを情報利用者に提供したい場合があり得る。このような場合に情報銀行がデータを変更できないと、その都度、個人に、情報利用者の要望に応じたデータの提供を依頼しなくてはならず、手間がかかってしまう。したがって、個人が情報銀行を指定し、指定された情報銀行によるデータの変更を許可することで、そのような手間をなくすことができる。これを、データを変更することができる個人(すなわち、変更者)による変更能力の委託とも称する。また、変更能力が委託される情報銀行を、委託先変更者とも称する。
【0006】
非特許文献1に記載の技術を利用すると、データの変更能力を委託先(情報銀行)に委託するために、変更者(個人)が委託先に対する署名を新しく生成し、署名者(情報提供者)からの署名に追加することで、変更能力を委託することが可能である。
【先行技術文献】
【非特許文献】
【0007】
【文献】C. Brzuska, M. Fischlin, A. Lehmann, and D. Schroder, “Santizable signatures: How to partially delegate control for authenticated data”, In BIOSIG, pages 117-128, 2009
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、非特許文献1に記載の技術では、署名の数が増えることで署名サイズが大きくなり、検証のための計算コストも高くなってしまう。
【0009】
本発明の目的は、署名サイズや検証のための計算コストを増加させずに、データの変更能力を委託することが可能な署名検証システム、署名装置、署名検証方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【0010】
本発明の一態様による署名検証システムは、データの変更者の公開鍵と、前記データの仮の委託先変更者の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記変更者の公開鍵を用いて算出された前記データ全体の第2のカメレオンハッシュ値とに対して署名を行う署名装置と、前記署名がなされた署名付きデータを受け取って、前記変更者の秘密鍵を用いて、前記仮の委託先変更者の公開鍵を実際の委託先変更者の公開鍵に変更する変更装置と、前記実際の委託先変更者が指定された署名付きデータを受け取って、前記実際の委託先変更者の秘密鍵を用いて、前記データの変更可能部分を変更する委託先変更装置と、前記データの変更可能部分が変更された署名付きデータを受け取って、前記変更者の公開鍵と前記実際の委託先変更者の公開鍵とを用いて、前記署名を検証する検証装置とを含む。
【0011】
本発明の一態様による署名装置は、データの変更者の公開鍵と、前記データの仮の委託先変更者の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記変更者の公開鍵を用いて算出された前記データの全体の第2のカメレオンハッシュ値とに対して署名を行う。
【0012】
本発明の一態様による署名検証方法は、データの変更者の公開鍵と、前記データの仮の委託先変更者の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記変更者の公開鍵を用いて算出された前記データ全体の第2のカメレオンハッシュ値とに対して署名を行う署名ステップと、前記署名がなされた署名付きデータを受け取って、前記変更者の秘密鍵を用いて、前記仮の委託先変更者の公開鍵を実際の委託先変更者の公開鍵に変更する第1の変更ステップと、前記実際の委託先変更者が指定された署名付きデータを受け取って、前記実際の委託先変更者の秘密鍵を用いて、前記データの変更可能部分を変更する第2の変更ステップと、前記データの内容が変更された署名付きデータを受け取って、前記変更者の公開鍵と前記実際の委託先変更者の公開鍵とを用いて、前記署名を検証する検証ステップとを含む。
【0013】
本発明の一態様によるプログラムは、コンピュータに上記署名検証方法を実行させる。
【発明の効果】
【0014】
本発明によれば、署名サイズや検証のための計算コストを増加させずに、データの変更能力を委託することが可能になる。
【図面の簡単な説明】
【0015】
【
図1】本発明の実施形態の概要を説明する図である。
【
図2】本発明の実施形態における変更能力の委託方法を説明する図である。
【
図3】第1の実施形態における署名検証システムの構成例を示すブロック図である。
【
図4】第1の実施形態における署名検証システムの具体的な構成例を示す機能ブロック図である。
【
図5】第1の実施形態における署名検証処理のシーケンス図である。
【
図6】第1の実施形態におけるコンピュータのハードウェア構成例を示す概略ブロック図である。
【
図7】第2の実施形態における署名検証システムの具体的な構成例を示す機能ブロック図である。
【発明を実施するための形態】
【0016】
以下、本発明の各実施形態を、図面を参照して説明する。なお、本明細書及び図面において、同様に説明されることが可能な要素については、同一の符号を付することにより重複説明が省略され得る。
【0017】
説明は、以下の順序で行われる。
1.本発明の実施形態の概要
2.第1の実施形態
2.1.システム構成
2.2.動作例
2.3.具体例
2.4.ハードウェア構成
2.5.効果の説明
3.第2の実施形態
3.1.システム構成
3.2.動作例
3.3.効果の説明
4.他の実施形態
【0018】
<<1.本発明の実施形態の概要>>
図1は、本発明の実施形態の概要を説明する図である。本発明の実施形態は、上述したように、個人のデータを管理し、運用する情報銀行を含むシステムに基づいて説明する。
【0019】
図示されるように、本発明の一実施形態におけるシステムは、情報提供者10と、個人20と、情報銀行30と、情報利用者40とを含む。
【0020】
情報提供者10は、個人20に関するデータを生成し、生成したデータに対して署名し、署名付きデータを個人20に提供する。データは、後述するように、個人20によって実際の委託先変更者を指定するための仮の委託先変更者情報を含む。情報提供者10は、本発明の実施形態におけるデータの署名者となり得る。
【0021】
個人20は、情報提供者10による署名の有効性を維持したまま、受け取った署名付きデータに含まれる仮の委託先変更者情報を実際の委託先変更者情報に変更し、委託先変更者情報が変更された署名付きデータを情報銀行30に提供する。また、データは、変更可能部分と変更不可部分とを含み、個人20は、データの変更可能部分を変更してもよい。個人20は、本発明の実施形態におけるデータの変更者となり得る。
【0022】
情報銀行30は、自身が委託先変更者情報によって指定されている場合に、情報提供者10による署名の有効性を維持したまま、データの変更可能部分を変更することができ、変更された署名付きデータを情報利用者40に提供する。情報銀行30は、本発明の実施形態におけるデータの変更能力が委託された委託先変更者となり得る。
【0023】
情報利用者40は、情報銀行30から受け取った署名付きデータの署名を検証する。情報利用者40は、検証が成功すると、データを利用する。情報利用者40は、本発明の実施形態におけるデータの検証者となり得る。
【0024】
本発明の実施形態では、このようなシステムにおいて、署名サイズや検証のための計算コストを増加させずに、データの変更能力を委託することを可能にする。なお、情報提供者10、個人20、情報銀行30、および情報利用者40の数は、図示された数に限定されない。
【0025】
また、本発明の実施形態では、いわゆる墨塗署名(sanitizable signature)として、変更者(個人20)および委託先変更者(情報銀行30)がメッセージ(データ)の所定部分を、元の署名者(情報提供者10)とやり取りせずに変更し、変更されたメッセージに対する有効な署名を生成することができる電子署名を用いる。
【0026】
また、本発明の実施形態における墨塗署名は、カメレオンハッシュを用いて実現する。通常のハッシュ関数(カメレオンハッシュでないハッシュ関数)は、入力されたメッセージを所定のビット長の値(ハッシュ値)に圧縮し、同じメッセージでない限り、同じハッシュ値を生成しないという性質を有する。すなわち、メッセージをmおよびm´で表し、ハッシュ関数をH()で表すとすると、m≠m´である場合、H(m)≠H(m´)である。この性質は、衝突困難性と呼ばれる。また、通常のハッシュ関数は、ハッシュ値から衝突を見つけることはできないという性質を有する。つまり、mとH(m)から、H(m´)=H(m)となるm´は求めることができない。なお、m≠m´である。この性質は、第2原像計算困難性と呼ばれる。一方、カメレオンハッシュは、ある秘密鍵がわかる場合に、衝突を見つけられるハッシュ関数である。
【0027】
図2は、本発明の実施形態における変更能力の委託方法を説明する図である。以下では、本発明の実施形態において、データの変更能力を有する変更者が、署名者による署名の有効性を維持したまま、変更能力の委託先である委託先変更者を指定する方法を説明する。
【0028】
まず、
図2(a)を参照して、上述した非特許文献1に記載の技術を利用した委託先変更者の指定方法を説明する。
【0029】
図2(a)では、平文+署名(署名者の鍵)201について、変更者が変更能力を委託する場合、委託先情報+署名(変更者の鍵)202が追加される。すなわち、平文+署名(署名者の鍵)201に、委託先情報+署名(変更者の鍵)202を付与することで、委託先変更者を指定する。この方法では、委託先情報に対して新たな署名が必要となるため、署名サイズや検証のための計算コストが増加してしまう。
【0030】
次に、
図2(b)を参照して、本発明の実施形態における委託先変更者の指定方法を説明する。
【0031】
図2(b)では、まず、平文に仮の委託先情報を加えた状態で、署名者の鍵により署名を行う(211)。委託先変更者を指定する場合、変更者は、署名者による署名の有効性を維持したまま、仮の委託先情報を実際の委託先情報に変更する(212)。この方法では、委託先情報に対して新たな署名を必要としないので、署名サイズや検証のための計算コストを増加させずに、変更能力を委託することが可能になる。
【0032】
<<2.第1の実施形態>>
<2.1.システム構成>
図3は、第1の実施形態における署名検証システムの構成例を示すブロック図である。署名検証システム100は、鍵生成装置110と、署名装置120と、変更装置130と、委託先変更装置140と、検証装置150とを含む。署名検証システム100の各構成要素については、
図4を参照して詳細に説明する。
【0033】
図4は、第1の実施形態における署名検証システムの具体的な構成例を示す機能ブロック図である。
【0034】
鍵生成装置110は、鍵生成部111と鍵提供部112とを有する。鍵生成部111は、データの署名に用いられる鍵のペアを生成する。具体的には、鍵生成部111は、署名および検証用の公開鍵pksignと秘密鍵sksignのペア、変更者が変更能力の委託先を指定する際に用いる公開鍵pksanと秘密鍵sksanのペア、および、委託先変更者がデータを変更する際に用いるデータ変更用の公開鍵pkdsanと秘密鍵skdsanのペアを生成する。鍵提供部112は、生成された鍵を署名装置120、変更装置130、委託先変更装置140、および検証装置150に提供する。なお、鍵の提供は、任意の方法で行うことができ、ネットワークを介して送信してもよいし、取り外し可能な記憶装置に記憶させて搬送してもよい。また、鍵生成装置110における鍵生成は、署名装置120や変更装置130が行ってもよい。
【0035】
署名装置120は、データ生成部121、署名部122、およびデータ送信部123を有する。署名装置120は、上述した情報提供者10が利用する装置に対応する。データ生成部121は、対象のデータを生成する。データは、変更することが可能な変更可能部分と、変更することができない変更不可部分とを含む。データは、平文とも称する。署名部122は、変更者の公開鍵及び委託先変更者の仮の公開鍵を用いたカメレオンハッシュ値と、平文の固定部分(変更不可部分)と、平文全体のカメレオンハッシュ値とに対して署名する。データ送信部123は、署名付きデータを変更装置130に送信する。
【0036】
変更装置130は、データ変更部131、署名部132、委託先指定部133、およびデータ送信部134を有する。変更装置130は、上述した個人20が利用する装置に対応する。データ変更部131は、署名付きデータにおける平文の変更可能部分を変更する。署名部132は、変更された平文に対して墨塗署名を行う。委託先指定部133は、委託先変更者の仮の公開鍵を、実際の委託先変更者の公開鍵に変更することで、実際の委託先変更者を指定する。データ送信部134は、変更後の署名付きデータを委託先変更装置140に送信する。
【0037】
委託先変更装置140は、データ変更部141、署名部142、およびデータ送信部143を有する。委託先変更装置140は、上述した情報銀行30が利用する装置に対応する。データ変更部141は、署名付きデータにおける平文の変更可能部分を変更する。署名部142は、変更された平文に対して墨塗署名を行う。データ送信部143は、変更後の署名付きデータを検証装置150に送信する。
【0038】
検証装置150は、検証部151を有する。検証装置150は、上述した情報利用者40が利用する装置に対応する。検証部151は、署名用の秘密鍵に対応する公開鍵、変更者の公開鍵、および委託先変更者の公開鍵を用いて、変更後の署名付きデータの署名を検証する。検証に成功すると、情報利用者40は、検証に成功したデータを所望の目的に利用することができる。
【0039】
上述した各装置の各処理部は、例えば、プログラムに従って動作するコンピュータのCPU(Central Processing Unit)、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、そのコンピュータのプログラム記憶装置等のプログラム記録媒体からプログラムを読み込み、そのプログラムに従って、必要に応じて通信インタフェースを用いて、上述した各装置の各処理部として動作することができる。
【0040】
<2.2.動作例>
次に、第1の実施形態における動作例について説明する。
【0041】
図5は、第1の実施形態における署名検証処理のシーケンス図である。なお、既に説明した事項については、詳細な説明は省略する。
【0042】
まず、ステップS501において、署名装置120は、変更者の公開鍵及び委託先変更者の仮の公開鍵を用いたカメレオンハッシュ値と、平文の固定部分(変更不可部分)と、平文全体のカメレオンハッシュ値とに対して署名する。署名自体は、署名用の秘密鍵を用いた一般的な方式で行われる。署名がなされた署名付きデータは、変更装置130へ提供される。
【0043】
次いで、ステップS502において、変更装置130は、署名付きデータのうち、変更可能部分を変更する。データの変更は、変更装置130が、変更者用の公開鍵に対応する秘密鍵を有している場合に行うことができる。その後、ステップS503において、変更装置130は、変更後のデータに墨塗署名する。さらに、ステップS504において、変更装置130は、仮の委託先変更者の公開鍵を、実際の委託先変更者の公開鍵に変更することで、委託先変更者を指定する。署名付きの変更後データは、委託先変更装置140へ提供される。
【0044】
次いで、ステップS505において、委託先変更装置140は、署名付きデータのうち、変更可能部分を変更する。データの変更は、委託先変更装置140が、委託先変更者用の公開鍵に対応する秘密鍵を有している場合に行うことができる。その後、ステップS506において、委託先変更装置140は、変更後のデータに墨塗署名する。署名付きの変更後データは、検証装置150へ提供される。
【0045】
次いで、ステップS507において、検証装置150は、署名用の秘密鍵に対応する公開鍵、変更者の公開鍵、および委託先変更者の公開鍵を用いて、署名付きの変更後データの署名を検証する。
【0046】
以上説明したように、本実施形態における署名検証処理は実施される。
【0047】
<2.3.具体例>
次に、本実施形態における署名検証処理の具体例について説明する。
【0048】
まず、本実施形態におけるカメレオンハッシュベースの墨塗署名の拡張について説明する。
【0049】
本実施形態では、2種類のカメレオンハッシュを用いる。2種類のカメレオンハッシュとは、平文変更カメレオンハッシュ(MCHとも称する)と、鍵及び平文変更カメレオンハッシュ(KMCHとも称する)である。
【0050】
平文変更カメレオンハッシュ(MCH)では、公開鍵pk、変更前メッセージm、乱数r、及び変更後メッセージm´に対して、公開鍵pkに対する秘密鍵skを利用して、以下の式(1)を満たす乱数r´を算出することが可能である。
【数1】
【0051】
また、鍵及び平文変更カメレオンハッシュ(KMCH)では、公開鍵pk、変更前メッセージm、乱数r、及び変更後メッセージm´に対して、公開鍵pk´に対する秘密鍵sk´を利用して、以下の式(2)を満たす乱数r´を算出することが可能である。
【数2】
【0052】
次に、上述した2種類のカメレオンハッシュを用いて、署名から検証までの流れを説明する。
【0053】
まず、署名者(署名装置120)は、以下の式(3)に示すように、仮の委託先情報のMCHハッシュ値、固定部分の平文m
FIX、平文全体m
FULL
のKMCHハッシュ値に対して、一般的な署名方法を利用して署名を行う。一般的な署名方法としては、例えば、DSA(Digital Signature Algorithm)方式の署名方法などがある。
【数3】
【0054】
ここでは、MCHにおける2番目のpksan(すなわち、変更者の公開鍵)が、仮の委託先変更者の公開鍵として用いられている。
【0055】
次いで、変更者(変更装置130)は、以下の式(4)に示すように、仮の委託先変更者の公開鍵pk
sanを、MCHの性質を利用して実際の委託先変更者の公開鍵pk
dsanに変更する。
【数4】
【0056】
ここで、実際には、乱数rmchが乱数r´mchに変更される。
【0057】
次いで、委託先変更者(委託先変更装置140)は、以下の式(5)に示すように、KMCHの性質を利用して、固定部分以外(すなわち、変更可能部分)の平文を委託先変更者の秘密鍵を使って変更する。
【数5】
【0058】
ここで、実際には、乱数rkmchが乱数r´kmchに変更される。また、平文の全体を表すmFULLが、m´FULLに変更されている。
【0059】
次いで、検証者(検証装置150)は、乱数、平文、並びに、検証者、変更者及び委託先変更者の公開鍵を利用して、ハッシュ値を再現して署名を検証する。
【0060】
次に、カメレオンハッシュベースの墨塗署名について、より詳細に説明する。
【0061】
署名者(署名装置120)は、以下の式(6)に示すように、平文の固定部分m
FIXと平文全体m
FULLの変更者の公開鍵pk
sanを用いたMCHハッシュ値に対して、一般的な署名方式で署名者の秘密鍵sk
sigを用いて署名する。署名とハッシュ計算に利用した乱数rは、変更者(変更装置130)へ渡す。
【数6】
【0062】
変更者(変更装置130)は、以下の式(7)に示すように、平文mと乱数rと変更者の秘密鍵sk
sanを用いて新しい平文m´に対応するMCHの乱数r´を作成し、ハッシュ計算に利用した乱数rと置き換えて、検証者(検証装置150)へ渡す。
【数7】
【0063】
検証者(検証装置150)は、平文mと乱数r、並びに、署名者の公開鍵pksig及び変更者の公開鍵pksanを用いて、MCHハッシュ値を再計算し、署名σを検証する。
このように、本実施形態では、MCHの性質により、変更者は秘密鍵sksanを利用して、MCHハッシュ値が同値となる平文m´FULLに対する乱数r´を算出することができる。
【0064】
次に、一般的な鍵生成、署名、及び検証アルゴリズムを説明する。
【0065】
鍵生成アルゴリズムは、以下の式(8)に示すように、セキュリティパラメータλを入力として、公開鍵pkと秘密鍵skを出力する。
【数8】
【0066】
署名アルゴリズムは、以下の式(9)に示すように、秘密鍵skと平文mを入力として、平文mに対する署名σを出力する。
【数9】
【0067】
検証アルゴリズムは、以下の式(10)に示すように、公開鍵pkと平文m、署名σを入力として、署名が有効な場合はTrueを返し、無効な場合はFalseを返す。
【数10】
【0068】
次に、平文変更カメレオンハッシュ(MCH)における各アルゴリズムを説明する。
【0069】
鍵生成アルゴリズムは、以下の式(11)に示すように、セキュリティパラメータλを入力として、公開鍵pkと秘密鍵skを出力する。
【数11】
【0070】
ハッシュアルゴリズムは、以下の式(12)に示すように、公開鍵pkと平文mを入力として、ハッシュ値hと乱数rを出力する。
【数12】
【0071】
再ハッシュアルゴリズムは、以下の式(13)に示すように、公開鍵pkと平文m、乱数rを入力として、ハッシュ値hを出力する。
【数13】
【0072】
適合アルゴリズムは、以下の式(14)に示すように、秘密鍵sk、平文m、変更後の平文m´、乱数rを入力として、以下の式(15)を満たす新しい乱数r´を出力する。
【数14】
【数15】
【0073】
次に、鍵及び平文変更カメレオンハッシュ(KMCH)における各アルゴリズムを説明する。
【0074】
鍵生成アルゴリズムは、以下の式(16)に示すように、セキュリティパラメータλを入力として、公開鍵pkと秘密鍵skを出力する。
【数16】
【0075】
ハッシュアルゴリズムは、以下の式(17)に示すように、公開鍵pkと平文mを入力として、ハッシュ値hと乱数rを出力する。
【数17】
【0076】
再ハッシュアルゴリズムは、以下の式(18)に示すように、公開鍵pkと平文m、乱数rを入力として、ハッシュ値hを出力する。
【数18】
【0077】
適合アルゴリズムは、以下の式(19)に示すように、秘密鍵sk´、平文m、変更後の平文m´、乱数rを入力として、以下の式(20)を満たす新しい乱数r´を出力する。
【数19】
【数20】
【0078】
以下では、本実施形態における各処理のアルゴリズムについて具体的に説明する。
【0079】
下記の表は、署名者、変更者、および委託先変更者の鍵生成アルゴリズムを示す。
【表1】
【0080】
ここでは、署名者の鍵ペアに関して、セキュリティパラメータλを入力として、公開鍵pksigと秘密鍵sksigが出力される。また、変更者の鍵ペアに関して、セキュリティパラメータλを入力として、公開鍵pksanと秘密鍵sksanが出力される。また、委託先変更者の鍵ペアに関して、セキュリティパラメータλを入力として、公開鍵pkdelと秘密鍵skdelが出力される。
【0081】
下記の表は、署名者の署名アルゴリズムを示す。
【表2】
【0082】
ここでは、署名者の秘密鍵sksigと変更者の公開鍵pksan、平文mを入力として、平文mの署名σが出力される。
【0083】
下記の表は、変更者の墨塗署名アルゴリズムを示す。
【表3】
【0084】
ここでは、変更者の秘密鍵sksanと平文m、変更後の平文m´、平文mの署名σを入力として、変更後の平文m´の署名σ´が出力される。
【0085】
下記の表は、検証者の検証アルゴリズムを示す。
【表4】
【0086】
ここでは、署名者の公開鍵pk
sig
と変更者の公開鍵pk
san
、平文mと署名σを入力として、署名が有効な場合はTrueが返され、無効な場合はFalseが返される。
【0087】
下記の表は、変更者の委託アルゴリズムを示す。
【表5】
【0088】
ここでは、変更者の公開鍵pk
san
と変更者の秘密鍵sk
san
、委託先変更者の公開鍵pk
san
と委託前の署名σを入力として、委託後の署名σ´が出力される。
【0089】
下記の表は、委託先変更者の墨塗署名アルゴリズムを示す。
【表6】
【0090】
ここでは、委託先変更者の秘密鍵sk
del
、平文m、変更後の平文m´、平文mの署名σを入力として、変更後の平文m´の署名σ´が出力される。
【0091】
下記の表は、検証者の委託先検証アルゴリズムを示す。
【表7】
【0092】
ここでは、署名者の公開鍵pk
sig
と変更者の公開鍵pk
san
、委託先変更者の公開鍵pk
del
、平文mと署名σを入力として、署名が有効な場合はTrueが返され、無効な場合はFalseが返される。
【0093】
なお、KMCHはMCHを包含するため、MCHをKMCHで置き換えてもよい。
【0094】
<2.4.ハードウェア構成>
図6は、本実施形態におけるコンピュータのハードウェア構成例を示す概略ブロック図である。図示されたコンピュータは、本実施形態の署名検証システムを構成する各装置として動作し得る。
【0095】
コンピュータ600は、CPU601と、主記憶装置602と、補助記憶装置603と、インタフェース604と、通信インタフェース605とを備える。
【0096】
コンピュータ600の動作は、プログラムの形式で補助記憶装置603に記憶されている。CPU601は、そのプログラムを補助記憶装置603から読み出して主記憶装置602に展開し、そのプログラムに従って、本実施形態で説明した各装置の動作を実行する。
【0097】
補助記憶装置603は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース604を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリ等が挙げられる。また、プログラムが通信回線によってコンピュータ600に配信される場合、配信を受けたコンピュータ600がそのプログラムを主記憶装置602に展開し、そのプログラムに従って動作してもよい。
【0098】
また、各装置の各構成要素の一部または全部は、汎用または専用の回路(circuitry)、プロセッサ等や、これらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【0099】
<2.5.効果の説明>
本実施形態によると、署名サイズや検証のための計算コストを増加させずに、データの変更能力を委託することが可能になる。
【0100】
<<3.第2の実施形態>>
次に、
図7を参照して、本発明の第2の実施形態を説明する。上述した第1の実施形態は具体的な実施形態であるが、第2の実施形態は、より一般化された実施形態である。
【0101】
<3.1.システム構成>
図7は、第2の実施形態における署名検証システムの具体的な構成例を示す機能ブロック図である。本実施形態における署名検証システム700は、署名装置710と、変更装置720と、委託先変更装置730と、検証装置740とを含む。なお、署名装置710、変更装置720、委託先変更装置730、および検証装置740の数は、図示された数に限定されない。また、署名装置710、変更装置720、委託先変更装置730、および検証装置740は、互いに通信ネットワークを介して接続されてもよい。
【0102】
署名装置710は、署名部711を有する。署名部711は、データの変更者の公開鍵と、データの変更を委託される委託先変更者の仮の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、データの変更不可部分と、変更者の公開鍵を用いて算出されたデータ全体の第2のカメレオンハッシュ値とに対して署名を行う。
【0103】
変更装置720は、委託先指定部721を有する。委託先指定部721は、署名がなされた署名付きデータを受け取って、変更者の秘密鍵を用いて、委託先変更者の仮の公開鍵を実際の委託先変更者の公開鍵に変更する。
【0104】
委託先変更装置730は、データ変更部731を有する。データ変更部731は、実際の委託先変更者が指定された署名付きデータを受け取って、実際の委託先変更者の秘密鍵を用いて、データの変更可能部分を変更する。
【0105】
検証装置740は、検証部741を有する。検証部741は、データの変更可能部分が変更された署名付きデータを受け取って、変更者の公開鍵と実際の委託先変更者の公開鍵とを用いて、署名を検証する。
【0106】
上述した各装置の各処理部は、例えば、プログラムに従って動作するコンピュータのCPU(Central Processing Unit)、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、そのコンピュータのプログラム記憶装置等のプログラム記録媒体からプログラムを読み込み、そのプログラムに従って、必要に応じて通信インタフェースを用いて、上述した各装置の各処理部として動作することができる。
【0107】
<3.2.動作例>
次に、第2の実施形態における動作例について説明する。
【0108】
第2の実施形態によれば、署名装置710(署名部711)は、データの変更者の公開鍵と、データの変更を委託される委託先変更者の仮の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、データの変更不可部分と、変更者の公開鍵を用いて算出されたデータ全体の第2のカメレオンハッシュ値とに対して署名を行う。変更装置720(委託先指定部721)は、署名がなされた署名付きデータを受け取って、変更者の秘密鍵を用いて、委託先変更者の仮の公開鍵を実際の委託先変更者の公開鍵に変更する。委託先変更装置730(データ変更部731)は、実際の委託先変更者が指定された署名付きデータを受け取って、実際の委託先変更者の秘密鍵を用いて、データの変更可能部分を変更する。検証装置740(検証部741)は、データの変更可能部分が変更された署名付きデータを受け取って、変更者の公開鍵と実際の委託先変更者の公開鍵とを用いて、署名を検証する。
【0109】
-第1の実施形態との関係
一例として、第2の実施形態における署名装置710、変更装置720、委託先変更装置730、および検証装置740はそれぞれ、第1の実施形態における署名装置120、変更装置130、委託先変更装置140、及び検証装置150である。この場合に、第1の実施形態についての説明は、第2の実施形態にも適用され得る。
【0110】
なお、第2の実施形態は、この例に限定されない。
【0111】
<3.3.効果の説明>
第2の実施形態によれば、署名サイズや検証のための計算コストを増加させずに、データの変更能力を委託することが可能になる。
【0112】
<<4.他の実施形態>>
なお、本発明は上述した実施形態に限定されるものではない。上述した実施形態は例示にすぎないということ、及び、本発明のスコープ及び精神から逸脱することなく様々な変形が可能であるということは、当業者に理解されるであろう。
【0113】
例えば、本明細書に記載されている処理は、必ずしも上述した順序に沿って時系列に実行されなくてよい。例えば、各処理は、上述した順序と異なる順序で実行されても、並列的に実行されてもよい。また、各処理の一部が実行されなくてもよく、さらなる処理が追加されてもよい。
【0114】
また、本明細書において説明した署名検証システムの構成要素を備える装置(例えば、署名検証システムを構成する複数の装置(又はユニット)のうちの1つ以上の装置(又はユニット)、又は上記複数の装置(又はユニット)のうちの1つのためのモジュール)が提供されてもよい。また、上記構成要素の処理を含む方法が提供されてもよく、上記構成要素の処理をプロセッサに実行させるためのプログラムが提供されてもよい。また、当該プログラムを記録したコンピュータに読み取り可能な非一時的記録媒体(Non-transitory computer readable medium)が提供されてもよい。当然ながら、このような装置、モジュール、方法、プログラム、及びコンピュータに読み取り可能な非一時的記録媒体も本発明に含まれる。
【0115】
上記の本発明の実施形態は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
【0116】
(付記1)
データの変更者の公開鍵と、前記データの仮の委託先変更者の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記変更者の公開鍵を用いて算出された前記データ全体の第2のカメレオンハッシュ値とに対して署名を行う署名装置と、
前記署名がなされた署名付きデータを受け取って、前記変更者の秘密鍵を用いて、前記仮の委託先変更者の公開鍵を実際の委託先変更者の公開鍵に変更する変更装置と、
前記実際の委託先変更者が指定された署名付きデータを受け取って、前記実際の委託先変更者の秘密鍵を用いて、前記データの変更可能部分を変更する委託先変更装置と、
前記データの変更可能部分が変更された署名付きデータを受け取って、前記変更者の公開鍵と前記実際の委託先変更者の公開鍵とを用いて、前記署名を検証する検証装置と
を含む署名検証システム。
【0117】
(付記2)
前記変更装置は、前記第1のカメレオンハッシュ値の計算に利用された乱数を、前記実際の委託先変更者の公開鍵に対応する乱数に置き換えることを特徴とする付記1に記載の署名検証システム。
【0118】
(付記3)
前記委託先変更装置は、前記第2のカメレオンハッシュ値の計算に利用された乱数を、前記実際の委託先変更者の秘密鍵を用いて算出された前記変更されたデータに対応する乱数に置き換えることを特徴とする付記1または2に記載の署名検証システム。
【0119】
(付記4)
前記検証装置は、前記変更者の公開鍵と、前記実際の委託先変更者の公開鍵と、前記実際の委託先変更者の公開鍵に対応する乱数とから前記第1のカメレオンハッシュ値を再現し、前記変更されたデータと、前記実際の委託先変更者の公開鍵と、前記変更されたデータに対する乱数とから前記第2のカメレオンハッシュ値を再現し、前記再現された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記第2のカメレオンハッシュ値と、署名者の公開鍵とを用いて前記署名を検証することを特徴とする付記1乃至3のいずれか1項に記載の署名検証システム。
【0120】
(付記5)
前記変更装置は、前記変更者の秘密鍵を用いて、前記データの変更可能部分を変更することを特徴とする付記1乃至4のいずれか1項に記載の署名検証システム。
【0121】
(付記6)
前記署名装置は、前記仮の委託先変更者の公開鍵として、前記変更者の公開鍵を用いて前記第1のカメレオンハッシュ値を算出することを特徴とする付記1乃至5のいずれか1項に記載の署名検証システム。
【0122】
(付記7)
データの変更者の公開鍵と、前記データの仮の委託先変更者の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記変更者の公開鍵を用いて算出された前記データの全体の第2のカメレオンハッシュ値とに対して署名を行うことを特徴とする署名装置。
【0123】
(付記8)
データの変更者の公開鍵と、前記データの仮の委託先変更者の公開鍵とを用いて算出された第1のカメレオンハッシュ値と、前記データの変更不可部分と、前記変更者の公開鍵を用いて算出された前記データ全体の第2のカメレオンハッシュ値とに対して署名を行う署名ステップと、
前記署名がなされた署名付きデータを受け取って、前記変更者の秘密鍵を用いて、前記仮の委託先変更者の公開鍵を実際の委託先変更者の公開鍵に変更する第1の変更ステップと、
前記実際の委託先変更者が指定された署名付きデータを受け取って、前記実際の委託先変更者の秘密鍵を用いて、前記データの変更可能部分を変更する第2の変更ステップと、
前記データの内容が変更された署名付きデータを受け取って、前記変更者の公開鍵と前記実際の委託先変更者の公開鍵とを用いて、前記署名を検証する検証ステップと
を含む署名検証方法。
【0124】
(付記9)
コンピュータに付記8に記載の署名検証方法を実行させるためのプログラム。
【産業上の利用の可能性】
【0125】
本発明は、データの委託先変更者を指定することが可能な墨塗署名を利用する署名検証システムに好適に適用され得る。
【符号の説明】
【0126】
100 署名検証システム
110 鍵生成装置
111 鍵生成部
112 鍵提供部
120 署名装置
121 データ生成部
122 署名部
123 データ送信部
130 変更装置
131 データ変更部
132 署名部
133 委託先指定部
134 データ送信部
150 検証装置
151 検証部