(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-11
(45)【発行日】2024-03-19
(54)【発明の名称】署名検証システム、署名検証方法、およびプログラム
(51)【国際特許分類】
H04L 9/32 20060101AFI20240312BHJP
G09C 1/00 20060101ALI20240312BHJP
【FI】
H04L9/32 200B
G09C1/00 650Z
(21)【出願番号】P 2022529191
(86)(22)【出願日】2020-06-02
(86)【国際出願番号】 JP2020021824
(87)【国際公開番号】W WO2021245806
(87)【国際公開日】2021-12-09
【審査請求日】2022-11-29
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100141519
【氏名又は名称】梶田 邦之
(72)【発明者】
【氏名】エンケタイワン, バトニヤマ
(72)【発明者】
【氏名】田宮 寛人
(72)【発明者】
【氏名】一色 寿幸
【審査官】上島 拓也
(56)【参考文献】
【文献】特開2010-050760(JP,A)
【文献】米国特許出願公開第2009/0138718(US,A1)
【文献】国際公開第2019/057810(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
データの変更が許可された変更者用の1以上の公開鍵を用いて、所定のデータブロックがカメレオンハッシュ値に置き換えられたデータに署名する署名装置と、
前記署名がなされた署名付きデータを受け取り、前記1以上の公開鍵のいずれかに対応する秘密鍵を用いて、前記署名付きデータの前記所定のデータブロックの内容を変更する1以上の変更装置と、
前記所定のデータブロックの内容が変更され
た署名付き
の変更後データを受け取り、前記変更者用の1以上の公開鍵を用いて前記署名を検証する検証装置と
を含む署名検証システム。
【請求項2】
前記所定のデータブロックは、前記データのうち変更が許可された部分であることを特徴とする請求項1に記載の署名検証システム。
【請求項3】
前記データは、前記所定のデータブロックと、前記変更が許可されていないデータブロックとを含むことを特徴とする請求項2に記載の署名検証システム。
【請求項4】
前記1以上の公開鍵のそれぞれに対応する前記変更者用の1以上の秘密鍵は、前記1以上の変更装置のそれぞれが有することを特徴とする請求項1乃至3のいずれか1項に記載の署名検証システム。
【請求項5】
前記所定のデータブロックは、前記秘密鍵を有する前記1以上の変更装置のいずれかによって変更可能であることを特徴とする請求項1乃至4のいずれか1項に記載の署名検証システム。
【請求項6】
前記カメレオンハッシュ値は、前記データを示すメッセージmと乱数rとを用いて、以下の式(3)によって表されるカメレオンハッシュ関数CHによって算出され、
【数1】
xは変更者の秘密鍵であり、yは前記変更者の公開鍵であり、y=gx mod pであることを特徴とする請求項1乃至5のいずれか1項に記載の署名検証システム。
【請求項7】
前記カメレオンハッシュ値は、前記データを示すメッセージmと乱数rとを用いて、以下の式(4)によって表されるカメレオンハッシュ関数CHによって算出され、
【数2】
xは変更者の秘密鍵であり、yは前記変更者の公開鍵であり、y=gx mod pであることを特徴とする請求項1乃至5のいずれか1項に記載の署名検証システム。
【請求項8】
前記カメレオンハッシュ値は、前記データを示すメッセージmと乱数rとを用いて、以下の式(6)によって表されるカメレオンハッシュ関数CHによって算出され、
【数3】
xは変更者の秘密鍵であり、yは前記変更者の公開鍵であり、y=gx mod pであることを特徴とする請求項1乃至5のいずれか1項に記載の署名検証システム。
【請求項9】
前記カメレオンハッシュ値は、前記データを示すメッセージmと乱数rとを用いて、以下の式(7)によって表されるカメレオンハッシュ関数CHによって算出され、
【数4】
xは変更者の秘密鍵であり、yは前記変更者の公開鍵であり、y=gx mod pであることを特徴とする請求項1乃至5のいずれか1項に記載の署名検証システム。
【請求項10】
データの変更が許可された変更者用の1以上の公開鍵を用いて、所定のデータブロックがカメレオンハッシュ値に置き換えられたデータに署名する署名ステップと、
前記署名がなされた署名付きデータを受け取り、前記1以上の公開鍵のいずれかに対応する秘密鍵を用いて、前記署名付きデータの前記所定のデータブロックの内容を変更する変更ステップと、
前記所定のデータブロックの内容が変更され
た署名付き
の変更後データを受け取り、前記変更者用の1以上の公開鍵を用いて前記署名を検証する検証ステップと
を含む署名検証方法。
【請求項11】
コンピュータに請求項10に記載の署名検証方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、署名検証システム、署名検証方法、およびプログラムに関する。
【背景技術】
【0002】
近年のAI(人工知能)分析性能の向上により、分析対象となるデータの価値が向上している。そこで、個人が自分のデータを、それを欲する企業に提供し、その対価を受け取る仕組みが検討されている。その仕組みの一つとして、個人のデータを管理し、運用する情報銀行が注目を集めている。
【0003】
情報銀行の仕組みでは、まず、情報提供者が個人に関するデータを作成し、署名する。署名付きデータは、個人に提供される。署名付きデータを受け取った個人は、当該署名付きデータを情報銀行に預託する。情報銀行は、預託された署名付きデータを情報利用者に提供する。
【0004】
情報提供者による署名は、データの出所を明らかにし、データの信頼性を保つために行われる。したがって、データが変更されると、署名の検証には失敗してしまう。しかしながら、署名の有効性を損なわずに、データの一部を変更したい場合がある。例えば、個人の健康診断情報を情報利用者に提供する場合、健康診断情報の一部を隠したい場合があり得る。具体的には、健康診断情報のうち、体重のデータは渡すが、血液型のデータは渡したくない場合等があり得る。
【0005】
このように、情報銀行が、個人から預託されたデータを情報利用者に提供する際には、署名の有効性を損なわずに、情報銀行によってデータの一部を変更可能にすること、また、個人が複数の情報銀行を利用している場合には、どの情報銀行でもデータを変更できるようにすることが望まれている。
【0006】
特許文献1には、一つの編集用秘密鍵を用意することで、複数の変更者によるデータ編集を可能にする電子署名技術が開示されている。
【0007】
非特許文献1には、署名者と複数の変更者を含むグループでグループ署名方式に基づいて作成したメンバー毎の秘密鍵を変更者が利用することで、複数の変更者を指定可能にし、当該変更者によるデータ変更を可能にする技術が開示されている。
【先行技術文献】
【特許文献】
【0008】
【非特許文献】
【0009】
【文献】C. Brzuska, M. Fischlin, A. Lehmann, and D. Schroder, “Unlinkability of Sanitizable Signatures”, In: Nguyen, P.Q., Pointcheval, D. (eds.) PKC 2010. LNCS, vol. 6056, pp. 444-461. Springer, Heidelberg (2010)
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、特許文献1に記載の技術において、複数の変更者によるデータ編集を可能にするためには、予めグループのメンバーと通信を行い、メンバー登録する必要がある。
【0011】
また、非特許文献1に記載の技術では、署名者と変更者の組み合わせ毎にグループ鍵が必要になるため、情報銀行に適用する場合、情報提供者と情報銀行は、所属するグループの数だけグループ鍵を管理しなくてはならない。また、データを変更するたびに、署名生成と同等の計算量を要する計算処理が必要になる。
【0012】
本発明の目的は、鍵の管理を容易にするとともに、より少ない計算コストで、データに対して複数の変更者が指定可能な署名検証システム、署名生成装置、署名検証方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【0013】
本発明の一態様による署名検証システムは、データの変更が許可された変更者用の1以上の公開鍵を用いて、所定のデータブロックがカメレオンハッシュ値に置き換えられたデータに署名する署名装置と、前記署名がなされた署名付きデータを受け取り、前記1以上の公開鍵のいずれかに対応する秘密鍵を用いて、前記署名付きデータの前記所定のデータブロックの内容を変更する変更装置と、前記所定のデータブロックの内容が変更された前記署名付きデータを受け取り、前記変更者用の1以上の公開鍵を用いて前記署名を検証する検証装置とを含む。
【0014】
本発明の一態様による署名検証方法は、データの変更が許可された変更者用の1以上の公開鍵を用いて、所定のデータブロックがカメレオンハッシュ値に置き換えられたデータに署名する署名ステップと、前記署名がなされた署名付きデータを受け取り、前記1以上の公開鍵のいずれかに対応する秘密鍵を用いて、前記署名付きデータの前記所定のデータブロックの内容を変更する変更ステップと、前記所定のデータブロックの内容が変更された前記署名付きデータを受け取り、前記変更者用の1以上の公開鍵を用いて前記署名を検証する検証ステップとを含む。
【0015】
本発明の一態様によるプログラムは、コンピュータに上記署名検証方法を実行させる。
【発明の効果】
【0016】
本発明によれば、鍵の管理をより容易にするとともに、より少ない計算コストで、データに対して複数の変更者を指定することが可能になる。
【図面の簡単な説明】
【0017】
【
図1】本発明の実施形態の概要を説明する図である。
【
図2】第1の実施形態における署名検証システムの構成例を示すブロック図である。
【
図3】第1の実施形態における署名検証システムの具体的な構成例を示す機能ブロック図である。
【
図4】第1の実施形態における署名検証処理のシーケンス図である。
【
図5】第1の実施形態におけるコンピュータのハードウェア構成例を示す概略ブロック図である。
【
図6】第2の実施形態における署名検証システムの具体的な構成例を示す機能ブロック図である。
【発明を実施するための形態】
【0018】
以下、本発明の各実施形態を、図面を参照して説明する。なお、本明細書及び図面において、同様に説明されることが可能な要素については、同一の符号を付することにより重複説明が省略され得る。
【0019】
説明は、以下の順序で行われる。
1.本発明の実施形態の概要
2.第1の実施形態
2.1.システム構成
2.2.動作例
2.3.具体例1
2.4.具体例2
2.5.具体例3
2.6.ハードウェア構成
2.7.効果の説明
3.第2の実施形態
3.1.システム構成
3.2.動作例
3.3.効果の説明
4.他の実施形態
【0020】
<<1.本発明の実施形態の概要>>
図1は、本発明の実施形態の概要を説明する図である。本発明の実施形態は、上述したように、個人のデータを管理し、運用する情報銀行を含むシステムに基づいて説明する。
【0021】
図示されるように、本発明の一実施形態におけるシステムは、情報提供者10と、個人20と、情報銀行30と、情報利用者40とを含む。
【0022】
情報提供者10は、個人20に関するデータを生成し、生成したデータに対して署名し、署名付きデータを個人20に提供する。情報提供者10は、本発明の実施形態におけるデータの署名者となり得る。
【0023】
個人20は、受け取った署名付きデータを情報銀行30に提供する。なお、署名付きデータは、個人20を介さず、情報提供者10から直接、情報銀行30に提供されてもよい。
【0024】
情報銀行30は、署名付きデータの内容を変更することができ、変更したデータに対して新たに署名し、情報利用者40に提供する。情報銀行30は、例えば、個人20の指示に基づいてデータを変更することができる。情報銀行30は、本発明の実施形態におけるデータの変更者となり得る。
【0025】
情報利用者40は、情報銀行30から受け取った署名付きデータの署名を検証する。情報利用者40は、検証が成功すると、データを利用する。情報利用者40は、本発明の実施形態におけるデータの検証者となり得る。
【0026】
本発明の実施形態では、このようなシステムにおいて、鍵の管理をより容易にし、より少ない計算コストで、複数のデータ変更者を指定可能にする。なお、情報提供者10、個人20、情報銀行30、および情報利用者40の数は、図示された数に限定されない。
【0027】
また、本発明の実施形態では、いわゆる墨塗署名(sanitizable signature)として、変更者(情報銀行30)がメッセージ(データ)の所定部分を、元の署名者(情報提供者10)の作成した署名の有効性を失わずに変更することができる電子署名を用いる。
【0028】
また、本発明の実施形態における墨塗署名は、カメレオンハッシュを用いて実現する。通常のハッシュ関数(カメレオンハッシュでないハッシュ関数)は、入力されたメッセージを所定のビット長の値(ハッシュ値)に圧縮し、同じメッセージでない限り、同じハッシュ値を生成しないという性質を有する。すなわち、メッセージをmおよびm´で表し、ハッシュ関数をH()で表すとすると、m≠m´である場合、H(m)≠H(m´)である。この性質は、衝突困難性と呼ばれる。また、通常のハッシュ関数は、ハッシュ値から衝突を見つけることはできないという性質を有する。つまり、mとH(m)から、H(m´)となるm´は求めることができない。なお、m≠m´である。この性質は、第2原像計算困難性と呼ばれる。一方、カメレオンハッシュは、ある秘密鍵がわかる場合に、衝突を見つけられるハッシュ関数である。
【0029】
また、墨塗署名において、メッセージmは、以下の式(1)に示すように複数のブロックに分割される。
【数1】
ここで、メッセージはt個に分割されている。
【0030】
そして、複数のブロックのうち変更が許可された部分が、カメレオンハッシュ値で置き換えられる。例えば、変更が許可された部分をmiで表し、カメレオンハッシュ関数をCH()で表すとすると、署名者は、一部がカメレオンハッシュ値で置き換えられたメッセージ(m1,…,CH(mi),…,mt)に対して署名する。カメレオンハッシュ値を示すCH(mi)の部分が、変更が許可された部分に対応する。この部分が、署名後でも変更可能な部分である。
【0031】
また、本発明の実施形態では、以下の表に示すように、鍵生成、署名、変更、および検証の各プロセスが行われ、1つの変更許可ブロックに対して複数の変更者(sanitizer)の指定を可能にする。各プロセスの詳細は、具体例を参照しながら後述する。
【表1】
【0032】
ここで、署名に用いられる1以上の公開鍵pksan1,pksan2,…,pksannが、1以上の変更者を指定するために用いられる。また、変更されたメッセージを検証する際には、1以上の公開鍵pksan1,pksan2,…,pksannのいずれかが用いられて、検証が行われる。また、ADM=(t,LADM)である。tは分割数で、LADMは変更可能ブロックのリストである。
【0033】
このように、本発明の実施形態では、カメレオンハッシュベースの墨塗署名であって、鍵の管理をより容易にするとともに、より少ない計算コストで、データに対して複数の変更者を指定することが可能な墨塗署名を実現することを目的とする。
【0034】
<<2.第1の実施形態>>
<2.1.システム構成>
図2は、第1の実施形態における署名検証システムの構成例を示すブロック図である。署名検証システム100は、署名装置210と、変更装置310と、検証装置410とを含む。以下、署名検証システム100の各構成要素を説明する。なお、
図1に示した個人20に対応する構成要素は、本実施形態を説明する上では必須ではないため説明は省略する。
【0035】
図3は、第1の実施形態における署名検証システムの具体的な構成例を示す機能ブロック図である。
【0036】
署名装置210は、鍵生成部211、データ生成部212、署名部213、およびデータ送信部214を有する。署名装置210は、上述した情報提供者10が利用する装置に対応する。鍵生成部211は、署名鍵ペア(公開鍵pksigと秘密鍵sksigのペア)を生成する。データ生成部212は、対象のデータを生成する。データは、複数のデータブロックで構成され、変更が許可された所定のデータブロックが、カメレオンハッシュ値に置き換えられている。署名部213は、データの変更が許可された変更者用の1以上の公開鍵を用いて、生成されたデータに署名する。データ送信部214は、署名付きデータを変更装置310に送信する。
【0037】
変更装置310は、鍵生成部311、データ変更部312、署名部313、およびデータ送信部314を有する。変更装置310は、上述した情報銀行30が利用する装置に対応する。鍵生成部311は、公開鍵ペア(公開鍵pksanと秘密鍵sksanのペア)を生成する。データ変更部312は、所定のデータブロックがカメレオンハッシュ値に置き換えられた署名付きデータの内容を変更する。所定のデータブロックが、データの変更が許可された部分である。データは、所定のデータブロックと、変更が許可されていないデータブロックとを含む。データの変更は、データの変更が許可された変更者用の公開鍵に対応する秘密鍵を有する場合に行うことができる。署名部313は、変更されたデータに署名する。データ送信部314は、変更後の署名付きデータを検証装置410に送信する。
【0038】
検証装置410は、検証部411を有する。検証装置410は、上述した情報利用者40が利用する装置に対応する。検証部411は、署名用の秘密鍵に対応する公開鍵を用いて、変更後の署名付きデータの署名を検証する。検証に成功すると、情報利用者40は、検証に成功したデータを所望の目的に利用することができる。
【0039】
上述した各装置の各処理部は、例えば、プログラムに従って動作するコンピュータのCPU(Central Processing Unit)、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、そのコンピュータのプログラム記憶装置等のプログラム記録媒体からプログラムを読み込み、そのプログラムに従って、必要に応じて通信インタフェースを用いて、上述した各装置の各処理部として動作することができる。
【0040】
<2.2.動作例>
次に、第1の実施形態における動作例について説明する。
【0041】
図4は、第1の実施形態における署名検証処理のシーケンス図である。なお、既に説明した事項については、詳細な説明は省略する。
【0042】
まず、ステップS401において、署名装置210は、署名用の秘密鍵と、データ変更用の1以上の公開鍵とを用いて、所定のデータブロックがカメレオンハッシュ値に置き換えられたデータに署名する。署名付きデータは、変更装置310へ提供される。
【0043】
次いで、ステップS402において、変更装置310は、署名付きデータのうち、変更が許可された所定のデータブロックの内容を変更する。データの変更は、データ変更用の公開鍵に対応する秘密鍵を変更装置310が有している場合に、行うことができる。その後、ステップS403において、変更装置310は、変更後のデータに署名する。署名付きの変更後データは、検証装置410へ提供される。
【0044】
次いで、ステップS404において、検証装置410は、署名用の秘密鍵に対応する公開鍵を用いて、署名付きの変更後データを検証する。
【0045】
以上説明したように、本実施形態における署名検証処理は実施される。
【0046】
<2.3.具体例1>
以下では、本実施形態における署名検証処理、すなわち、上記表1に示した鍵生成、署名、変更、および検証の各プロセスの具体例1について説明する。
【0047】
まず、署名装置210及び変更装置310による鍵生成処理は、下記の表に示す手順で行われる。
【表2】
【0048】
次いで、署名装置210による署名処理が、以下の表に示す手順で行われる。
【表3】
ここで、ls
iはi番目のブロックを最後に変更した変更者の情報である。署名時は、ls
iは署名者(sig)である。
【0049】
次いで、変更装置310による変更処理が、以下の表に示す手順で行われる。具体例1では、変更装置310は、データ変更用の秘密鍵(下記1.5のx
j)を有していれば、データの変更を行うことができる。また、データ変更用の秘密鍵を有するすべての変更装置310は、変更が許可された所定のデータブロックの内容を変更することができる。
【表4】
【0050】
次いで、検証装置410による検証処理が、以下の表に示す手順で行われる。
【表5】
【0051】
以上説明したように、具体例1では、鍵生成、署名、変更、および検証の各プロセスが行われる。
【0052】
<2.4.具体例2>
続いて、具体例2について説明する。具体例2は、具体例1と比較して、利用するカメレオンハッシュが異なり、ハッシュ値を生成する際に変更者の公開鍵を使用する。なお、上記具体例1と同様の処理については、説明は省略する。
【0053】
具体例2では、以下の式(2)によって表されるカメレオンハッシュを用いる。
【数2】
【0054】
ここで、yは変更者の公開鍵であり、y=gx mod pである。xは、変更者の秘密鍵である。メッセージmをm´とするには、xm+r=xm´+r´mod qとなるr´を求めればよい。ただし、このままの形で用いるとm、m´、r、r´が公開されているため、秘密鍵xは簡単に計算できてしまう。これをkey exposure problem(鍵漏洩問題)という。そのため、以下の二つのバリエーションを用いてもよい。以降、簡単のためmodの部分を省略する。
【0055】
具体例2では、以下の式(3)に示すように、変更者は変更のたびに公開鍵変更とSchnorr署名を併せて用いてもよい。ここで、Schnorr署名は、変更者が新しい公開鍵に対する秘密鍵を知っていることを示す役割がある。
【数3】
ここで、{m
i’}は、変更部分以外{m
i}と同じである。
【0056】
あるいは、以下の式(4)に示すように、ダブルトラップドア(double trap door)を用いてもよい。
【数4】
【0057】
署名は、式(3)の場合、以下の表に示すように行われる。
【表6-1】
【0058】
式(4)の場合は、署名は以下の表に示すように行われる。
【表6-2】
【0059】
また、データの変更は、式(3)の場合、以下の表に示すように行われる。
【表7-1】
【0060】
式(4)の場合は、データの変更は以下の表に示すように行われる。
【表7-2】
【0061】
次いで、検証装置410による検証処理が、式(3)の場合、以下の表に示す手順で行われる。
【表8-1】
【0062】
式(4)の場合は、検証処理は、以下の表に示す手順で行われる。
【表8-2】
【0063】
具体例2では、変更前のメッセージmと変更後のメッセージm´の両方を用いて署名の検証を行うので、メッセージの変更履歴が残ることになる。
【0064】
<2.5.具体例3>
続いて、具体例3について説明する。具体例3は、具体例2と比較して、利用するカメレオンハッシュが異なる。なお、上記具体例1および具体例2と同様の処理については、説明は省略する。
【0065】
具体例3では、以下の式(5)によって表されるカメレオンハッシュを用いる。式(5)によって表されるカメレオンハッシュは、具体例2の式(2)によって表されるカメレオンハッシュと比較して、右辺のrとmが入れ替わっている。
【数5】
【0066】
また、具体例3では、以下の式(6)に示すように、毎回公開鍵変更とSchnorr署名を併せて用いてもよい。
【数6】
【0067】
あるいは、以下の式(7)に示すように、ダブルトラップドア(double trap door)を用いてもよい。
【数7】
【0068】
具体例3では、具体例2と異なり、変更前のメッセージmを用いずに、変更後のメッセージm´を用いて署名の検証を行うので、メッセージの変更履歴は残らない。
【0069】
<2.6.ハードウェア構成>
図5は、本実施形態におけるコンピュータのハードウェア構成例を示す概略ブロック図である。図示されたコンピュータは、本実施形態の署名検証システムを構成する各装置として動作し得る。
【0070】
コンピュータ500は、CPU501と、主記憶装置502と、補助記憶装置503と、インタフェース504と、通信インタフェース505とを備える。
【0071】
コンピュータ500の動作は、プログラムの形式で補助記憶装置503に記憶されている。CPU501は、そのプログラムを補助記憶装置503から読み出して主記憶装置502に展開し、そのプログラムに従って、本実施形態で説明した各装置の動作を実行する。
【0072】
補助記憶装置503は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース504を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリ等が挙げられる。また、プログラムが通信回線によってコンピュータ500に配信される場合、配信を受けたコンピュータ500がそのプログラムを主記憶装置502に展開し、そのプログラムに従って動作してもよい。
【0073】
また、各装置の各構成要素の一部または全部は、汎用または専用の回路(circuitry)、プロセッサ等や、これらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【0074】
<2.7.効果の説明>
本実施形態によると、鍵の管理を容易にするとともに、より少ない計算コストで、データに対して複数の変更者が指定可能な署名検証システム、署名生成装置、署名検証方法、およびプログラムを提供することができる。
【0075】
<<3.第2の実施形態>>
次に、
図6を参照して、本発明の第2の実施形態を説明する。上述した第1の実施形態は具体的な実施形態であるが、第2の実施形態は、より一般化された実施形態である。
【0076】
<3.1.システム構成>
図6は、第2の実施形態における署名検証システムの具体的な構成例を示す機能ブロック図である。本実施形態における署名検証システム600は、署名装置610と、変更装置620と、検証装置630とを含む。なお、署名装置610、変更装置620、および検証装置630の数は、図示された数に限定されない。また、署名装置610、変更装置620、および検証装置630は、互いに通信ネットワークを介して接続されてもよい。
【0077】
署名装置610は、署名部611を有する。署名部611は、データの変更が許可された変更者用の1以上の公開鍵を用いて、所定のデータブロックがカメレオンハッシュ値に置き換えられたデータに署名する。
【0078】
変更装置620は、データ変更部621を有する。データ変更部621は、署名がなされた署名付きデータを受け取り、上記1以上の公開鍵のいずれかに対応する秘密鍵を用いて、署名付きデータの所定のデータブロックの内容を変更する。
【0079】
検証装置630は、検証部631を有する。検証部631は、上記所定のデータブロックの内容が変更された署名付きデータを受け取り、変更者用の1以上の公開鍵を用いて署名を検証する。
【0080】
上述した各装置の各処理部は、例えば、プログラムに従って動作するコンピュータのCPU(Central Processing Unit)、および、そのコンピュータの通信インタフェースによって実現される。例えば、CPUが、そのコンピュータのプログラム記憶装置等のプログラム記録媒体からプログラムを読み込み、そのプログラムに従って、必要に応じて通信インタフェースを用いて、上述した各装置の各処理部として動作することができる。
【0081】
<3.2.動作例>
次に、第2の実施形態における動作例について説明する。
【0082】
第2の実施形態によれば、署名装置610(署名部611)は、データの変更が許可された変更者用の1以上の公開鍵を用いて、所定のデータブロックがカメレオンハッシュ値に置き換えられたデータに署名する。また、変更装置620(データ変更部621)は、署名がなされた署名付きデータを受け取り、上記1以上の公開鍵のいずれかに対応する秘密鍵を用いて、署名付きデータの所定のデータブロックの内容を変更する。また、検証装置630(検証部631)は、上記所定のデータブロックの内容が変更された署名付きデータを受け取り、変更者用の1以上の公開鍵を用いて署名を検証する。
【0083】
-第1の実施形態との関係
一例として、第2の実施形態における署名装置610、変更装置620、および検証装置630はそれぞれ、第1の実施形態における署名装置210、変更装置310、及び検証装置410である。この場合に、第1の実施形態についての説明は、第2の実施形態にも適用され得る。
【0084】
なお、第2の実施形態は、この例に限定されない。
【0085】
<3.3.効果の説明>
第2の実施形態によれば、鍵の管理をより容易にするとともに、より少ない計算コストで、データに対して複数の変更者を指定することが可能になる。
【0086】
<<4.他の実施形態>>
なお、本発明は上述した実施形態に限定されるものではない。上述した実施形態は例示にすぎないということ、及び、本発明のスコープ及び精神から逸脱することなく様々な変形が可能であるということは、当業者に理解されるであろう。
【0087】
例えば、本明細書に記載されている処理は、必ずしも上述した順序に沿って時系列に実行されなくてよい。例えば、各処理は、上述した順序と異なる順序で実行されても、並列的に実行されてもよい。また、各処理の一部が実行されなくてもよく、さらなる処理が追加されてもよい。
【0088】
また、本明細書において説明した署名検証システムの構成要素を備える装置(例えば、署名検証システムを構成する複数の装置(又はユニット)のうちの1つ以上の装置(又はユニット)、又は上記複数の装置(又はユニット)のうちの1つのためのモジュール)が提供されてもよい。また、上記構成要素の処理を含む方法が提供されてもよく、上記構成要素の処理をプロセッサに実行させるためのプログラムが提供されてもよい。また、当該プログラムを記録したコンピュータに読み取り可能な非一時的記録媒体(Non-transitory computer readable medium)が提供されてもよい。当然ながら、このような装置、モジュール、方法、プログラム、及びコンピュータに読み取り可能な非一時的記録媒体も本発明に含まれる。
【0089】
上記の本発明の実施形態は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
【0090】
(付記1)
データの変更が許可された変更者用の1以上の公開鍵を用いて、所定のデータブロックがカメレオンハッシュ値に置き換えられたデータに署名する署名装置と、
前記署名がなされた署名付きデータを受け取り、前記1以上の公開鍵のいずれかに対応する秘密鍵を用いて、前記署名付きデータの前記所定のデータブロックの内容を変更する変更装置と、
前記所定のデータブロックの内容が変更された前記署名付きデータを受け取り、前記変更者用の1以上の公開鍵を用いて前記署名を検証する検証装置と
を含む署名検証システム。
【0091】
(付記2)
前記所定のデータブロックは、前記データのうち変更が許可された部分であることを特徴とする付記1に記載の署名検証システム。
【0092】
(付記3)
前記データは、前記所定のデータブロックと、前記変更が許可されていないデータブロックとを含むことを特徴とする付記2に記載の署名検証システム。
【0093】
(付記4)
前記1以上の公開鍵のそれぞれに対応する前記変更者用の1以上の秘密鍵は、1以上の前記変更装置のそれぞれが有することを特徴とする付記1乃至3のいずれか1項に記載の署名検証システム。
【0094】
(付記5)
前記所定のデータブロックは、前記秘密鍵を有する前記変更装置のいずれかによって変更可能であることを特徴とする付記1乃至4のいずれか1項に記載の署名検証システム。
【0095】
(付記6)
前記カメレオンハッシュ値は、前記データを示すメッセージmと乱数rとを用いて、以下の式(3)によって表されるカメレオンハッシュ関数CHによって算出され、
【数8】
xは変更者の秘密鍵であり、yは前記変更者の公開鍵であり、y=g
x mod pであることを特徴とする付記1乃至5のいずれか1項に記載の署名検証システム。
【0096】
(付記7)
前記カメレオンハッシュ値は、前記データを示すメッセージmと乱数rとを用いて、以下の式(4)によって表されるカメレオンハッシュ関数CHによって算出され、
【数9】
xは変更者の秘密鍵であり、yは前記変更者の公開鍵であり、y=g
x mod pであることを特徴とする付記1乃至5のいずれか1項に記載の署名検証システム。
【0097】
(付記8)
前記カメレオンハッシュ値は、前記データを示すメッセージmと乱数rとを用いて、以下の式(6)によって表されるカメレオンハッシュ関数CHによって算出され、
【数10】
xは変更者の秘密鍵であり、yは前記変更者の公開鍵であり、y=g
x mod pであることを特徴とする付記1乃至5のいずれか1項に記載の署名検証システム。
【0098】
(付記9)
前記カメレオンハッシュ値は、前記データを示すメッセージmと乱数rとを用いて、以下の式(7)によって表されるカメレオンハッシュ関数CHによって算出され、
【数11】
xは変更者の秘密鍵であり、yは前記変更者の公開鍵であり、y=g
x mod pであることを特徴とする付記1乃至5のいずれか1項に記載の署名検証システム。
【0099】
(付記10)
データの変更が許可された変更者用の1以上の公開鍵を用いて、所定のデータブロックがカメレオンハッシュ値に置き換えられたデータに署名する署名ステップと、
前記署名がなされた署名付きデータを受け取り、前記1以上の公開鍵のいずれかに対応する秘密鍵を用いて、前記署名付きデータの前記所定のデータブロックの内容を変更する変更ステップと、
前記所定のデータブロックの内容が変更された前記署名付きデータを受け取り、前記変更者用の1以上の公開鍵を用いて前記署名を検証する検証ステップと
を含む署名検証方法。
【0100】
(付記11)
コンピュータに付記10に記載の署名検証方法を実行させるためのプログラム。
【産業上の利用可能性】
【0101】
本発明は、複数の変更者を指定することが可能な墨塗署名を利用する署名検証システムに好適に適用される。
【符号の説明】
【0102】
100 署名検証システム
210 署名装置
211 鍵生成部
212 データ生成部
213 署名部
214 データ送信部
310 変更装置
311 鍵生成部
312 データ変更部
313 署名部
314 データ送信部
410 検証装置
411 検証部