(57)【要約】【課題】ハッシュ関数が危殆化するような事態に際しても、安全なハッシュ値を生成することを可能とする。【解決手段】ハッシュ値生成部３１及び３２は、外部から与えられたデータのハッシュ値を、それぞれ異なるハッシュ関数に基づいて、独立に生成する。ハッシュ値統合部４０は、ハッシュ値生成部３１及び３２の各々によって生成されたハッシュ値を１つのデータに統合する。ハッシュ値生成部５０は、ハッシュ値統合部４０によって統合されたデータのハッシュ値を、１つのハッシュ関数に基づいて、上記外部から与えられたデータのハッシュ値として生成する。【選択図】      図１
2007232754.tif 000002
【特許請求の範囲】
【請求項１】
外部から与えられたデータのハッシュ値を生成するハッシュ値生成装置において、
前記与えられたデータのハッシュ値を、それぞれ異なるハッシュ関数に基づいて、独立に生成する複数の第１のハッシュ値生成手段と、
前記複数の第１のハッシュ値生成手段の各々によって生成されたハッシュ値を１つのデータに統合するハッシュ値統合手段と、
前記ハッシュ値統合手段によって統合されたデータのハッシュ値を、１つのハッシュ関数に基づいて、前記与えられたデータのハッシュ値として生成する第２のハッシュ値生成手段と
を具備することを特徴とするハッシュ値生成装置。
【請求項２】
前記ハッシュ値統合手段は、前記１つのデータから前記複数の第１のハッシュ値生成手段の各々によって生成されたハッシュ値を導出可能に、前記１つのデータに統合することを特徴とする請求項１記載のハッシュ値生成装置。
【請求項３】
前記ハッシュ値統合手段は、前記複数の第１のハッシュ値生成手段の各々によって生成されたハッシュ値を連結することによって前記１つのデータに統合することを特徴とする請求項２記載のハッシュ値生成装置。
【請求項４】
ハッシュ値に対してデジタル署名またはデジタルタイムスタンプを付加する外部サーバに前記第２のハッシュ値生成手段によって生成されたハッシュ値を与えることにより、当該与えられたハッシュ値に対して付加されたデジタル署名またはデジタルタイムスタンプを前記外部サーバから取得する認証取得手段と、
前記外部から与えられたデータを入力すると共に、前記認証取得手段によって取得されたデジタル署名またはデジタルタイムスタンプを外部に出力する入出力手段と
を更に具備し、
前記複数の第１のハッシュ値生成手段の各々は、前記入出力処理手段によって入力されたデータのハッシュ値を生成する
ことを特徴とする請求項１記載のハッシュ値生成装置。
【請求項５】
前記第２のハッシュ値生成手段によって生成されたハッシュ値に対してデジタル署名またはデジタルタイムスタンプを押印し、当該押印されたデジタル署名またはデジタルタイムスタンプを取得する認証取得手段と、
前記外部から与えられたデータを入力すると共に、前記認証取得手段によって取得されたデジタル署名またはデジタルタイムスタンプを外部に出力する入出力処理手段と
を更に具備し、
前記複数の第１のハッシュ値生成手段の各々は、前記入出力処理手段によって入力されたデータのハッシュ値を生成する
ことを特徴とする請求項１記載のハッシュ値生成装置。
【請求項６】
前記入出力処理手段は、前記ハッシュ値生成手段によって生成されたハッシュ値の生成に用いられたハッシュ関数の情報を、前記デジタル署名またはデジタルタイムスタンプと共に外部に出力することを特徴とする請求項４または５記載のハッシュ値生成装置。
【請求項７】
外部から与えられたデータのハッシュ値を生成するハッシュ値生成方法において、
前記与えられたデータのハッシュ値を、それぞれ異なるハッシュ関数に基づいて、独立に生成するステップと、
前記生成されたハッシュ値を１つのデータに統合するステップと、
前記統合されたデータのハッシュ値を、１つのハッシュ関数に基づいて、前記与えられたデータのハッシュ値として生成するステップと
を具備することを特徴とするハッシュ値生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハッシュ関数を用いてハッシュ値を生成するのに好適なハッシュ値生成装置及びハッシュ値生成方法に関する．
【背景技術】
【０００２】
インターネットの急速な普及に伴い、近年、電子情報を用いた様々な形態のビジネス等が生まれている。しかしながら、電子情報は、偽造や改ざんが極めて容易であることから、ビジネス等に用いる際には、正当性を保証する技術を必要とする。そこで、このような技術としての認証技術の重要性が、現在、広く認識されている。
【０００３】
認証技術の一つとして、例えばデジタル署名が知られている。デジタル署名は、電子メールやオンライン取引などにおいて用いられるメッセージ等のデジタルデータが正当な発信者から発信され、途中で偽造または改ざん等が行われていないことを示すために用いられる。また、他の認証技術として、デジタルタイムスタンプ（以下、タイムスタンプと略称する）が知られている。このタイムスタンプは、デジタルデータがある特定時刻に存在していたことを証明すると共に、その時刻以降データが変更されていないことを証明するために用いられる。
【０００４】
このデジタル署名またはタイムスタンプの生成には、ハッシュ関数が用いられる。ハッシュ関数は、デジタルデータを極めて大きな領域から比較的小さな規模にマッピングするための一方向性関数である。一方向性関数とは、当該関数に値を入力することによって出力を得る計算は簡単であるが、逆に、当該出力された値から入力された値を得ることは難しい関数である。このハッシュ関数によって得られた値（以下、ハッシュ値と称する）を利用してデジタル署名またはタイムスタンプを生成することにより、メッセージ等のデジタルデータが偽造または改ざんされていないことが確認でき、更にデジタルデータを送信する際のデータ量を減量することができる。
【０００５】
そこで、例えば特許文献１には、ハッシュ関数を用いてデジタル署名を生成する技術（以下、先行技術と称する）が開示されている。この先行技術では、タイムスタンプが押印された一つのデジタル文書に対して、ハッシュ関数を用いて複数のデジタル署名が生成される。この複数のデジタル署名を統合して別の一つのデジタル署名を作成する。
【特許文献１】特許第３５１５４０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記の先行技術によれば、一つのデジタルデータに対して複数のデジタル署名を行い、それらを統合して別の一つのデジタル署名を生成するため、デジタル署名やタイムスタンプの偽造が困難となる。
【０００７】
ところで、ハッシュ関数は一方向性関数であるが、異なる入力値から同一のハッシュ値が出力されるおそれ、つまり、ハッシュ関数が危殆化する可能性がないとは限らない。しかしながら、先行技術は、複数のデジタル署名を行っているものの、各々のデジタル署名に用いるハッシュ関数は同一である。そのため、そのハッシュ関数が危殆化すると、デジタルデータとデジタル署名またはタイムスタンプとを結びつけるものが失われることとなり、デジタル署名またはタイムスタンプが無効化されてしまうおそれがある。特に、タイムスタンプにおいては過去のタイムスタンプが無効となってしまった場合、取り返しがつかないという問題がある。また、ハッシュ関数が危殆化した場合、デジタルデータそのものが偽造または改ざんされてしまうという問題もある。
【０００８】
本発明は、上記事情を考慮してなされたものでありその目的は、ハッシュ関数が危殆化するような事態に際しても、安全なハッシュ値を生成することができるハッシュ値生成装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の１つの態様によれば、外部から与えられたデータのハッシュ値を生成するハッシュ値生成装置が提供される。このハッシュ値生成装置は、前記与えられたデータのハッシュ値を、それぞれ異なるハッシュ関数に基づいて、独立に生成する複数のハッシュ値生成手段と、前記複数のハッシュ値生成手段の各々によって生成されたハッシュ値を１つのデータに統合するハッシュ値統合手段と、前記ハッシュ値統合手段によって統合されたデータのハッシュ値を、１つのハッシュ関数に基づいて、前記与えられたデータのハッシュ値として生成するハッシュ値生成手段とを備える。
【発明の効果】
【００１０】
本発明によれば、それぞれ異なる複数のハッシュ関数によって独立にハッシュ値を生成し、生成された複数のハッシュ値が統合されたデータの更にハッシュ値を生成することによって、ハッシュ関数が危殆化するような事態に際しても、安全なハッシュ値を生成することが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して、本発明の各実施形態について説明する。
【００１２】
［第１の実施形態］
まず、図１を参照して、本発明の第１の実施形態に係るハッシュ値生成装置の構成について説明する。図１は、ハッシュ値生成装置１０の構成を示すブロック図である。ハッシュ値生成装置１０は、入出力処理部２０、ハッシュ値生成部３１、ハッシュ値生成部３２、ハッシュ値統合部４０及びハッシュ値生成部５０から構成される。
【００１３】
入出力処理部２０は、外部からのデータを入力する。また、入出力処理部２０は、ハッシュ値生成部５０によって生成されたハッシュ値等を外部に出力する。
【００１４】
ハッシュ値生成部（第１のハッシュ値生成部）３１及び３２は、入出力処理部２０によって入力されたデータのハッシュ値を、それぞれハッシュ関数H1及びH2に基づいて、独立に生成する。ハッシュ関数H1及びH2は、異なる種類のハッシュ関数である。本実施形態において、ハッシュ関数H1にはＳＨＡ系（ＳＨＡ-256、ＳＨＡ-512等）が、ハッシュ関数H2にはWhirlpoolが、それぞれ用いられる。ハッシュ関数H1及びH2が他の種類のハッシュ関数であっても構わない。
【００１５】
ハッシュ値統合部４０は、ハッシュ値生成部３１及び３２の各々によって生成されたハッシュ値を１つのデータに統合する。
【００１６】
ハッシュ値生成部（第２のハッシュ値生成部）５０は、ハッシュ値統合部４０によって統合されたデータのハッシュ値を、ハッシュ関数H3に基づいて生成する。本実施形態において、ハッシュ関数H3はハッシュ関数H1及びH2とは異なる種類のハッシュ関数であり、例えばTigerである。なお、ハッシュ関数H3がハッシュ関数H1及びH2のいずれか一方と同一種類の関数であっても構わない。
【００１７】
次に、図２及び図３を参照して、図１のハッシュ値生成装置１０の処理手順について説明する。図２は図１のハッシュ値生成装置１０の処理手順を示すフローチャート、図３は同ハッシュ値生成装置１０におけるデータの流れを示す図である。
【００１８】
まず、入出力処理部２０は、外部から与えられたデータＤを入力（受信）する（ステップＳ１）。
【００１９】
次に、ハッシュ値生成部３１及び３２は、入出力処理部２０によって入力されたデータＤに対して、それぞれ独立してハッシュ値を生成する（ステップＳ２）。すなわち、ハッシュ値生成部３１はハッシュ関数H1に基づいてハッシュ値H1（Ｄ）を生成し、ハッシュ値生成部３２はハッシュ関数H2に基づいてハッシュ値H2（Ｄ）を生成する。
【００２０】
ハッシュ値統合部４０は、ハッシュ値生成部３１及び３２の各々によって生成されたハッシュ値H1（Ｄ）及びH2（Ｄ）を１つのデータH1（Ｄ）＋H2（Ｄ）に統合する。ここではハッシュ値統合部４０は、統合されたデータH1（Ｄ）＋H2（Ｄ）から元のハッシュ値H1（Ｄ）及びH2（Ｄ）を導出可能に当該ハッシュ値H1（Ｄ）及びH2（Ｄ）を統合する。より具体的に述べるならば、ハッシュ値統合部４０は、ハッシュ値H1（Ｄ）及びH2（Ｄ）を連結（concatenation）することによって１つのデータH1（Ｄ）＋H2（Ｄ）に統合する。
【００２１】
ハッシュ値生成部５０は、この統合されたデータH1（Ｄ）＋H2（Ｄ）のハッシュ値を、ハッシュ関数H3に基づいて生成する（ステップＳ３）。ここでは、ハッシュ値H3（H1（Ｄ）＋H2（Ｄ））が入出力処理部２０によって入力されたデータＤのハッシュ値として生成される。
【００２２】
入出力処理部２０は、ハッシュ値生成部５０によって生成されたハッシュ値H3（H1（Ｄ）＋H2（Ｄ））を上記入力されたデータＤに対する応答として、当該データＤの送信元に返信する（ステップＳ４）。
【００２３】
次に、図４を参照して、ハッシュ関数H1及びH2のいずれか一方、例えばハッシュ関数H1が危殆化した場合について説明する。なお、図３と同様な部分には同一参照符号をつけてその詳しい説明を省略する。
【００２４】
入出力処理部２０は、図３に示されるデータＤとは異なるデータＤ´を入力する。ハッシュ値生成部３１及び３２は、それぞれハッシュ関数H1及びH2に基づいてデータＤ´のハッシュ値H1（Ｄ´）及びH2（Ｄ´）を生成する。
【００２５】
前述したように、ハッシュ関数H1は危殆化している。つまり、ハッシュ関数H1に基づいてハッシュ値が生成された場合、異なるデータであるにも拘らず、同一のハッシュ値が生成されるおそれがある。ここでは、ハッシュ値生成部３１によって生成されるデータＤ´のハッシュ値H1（Ｄ´）が、当該データＤ´とは異なるデータＤのハッシュ値H1（Ｄ）と同一であるものとする。つまり、H1（Ｄ´）＝H1（Ｄ）であるものとする。
【００２６】
生成されたハッシュ値H1（Ｄ´）及びH2（Ｄ´）は、ハッシュ値統合部４０によってデータH1（Ｄ´）＋H2（Ｄ´）に統合される。ハッシュ値生成部５０は統合されたデータデータH1（Ｄ）＋H2（Ｄ）から、入出力処理部２０によって入力されたデータＤ´のハッシュ値として、ハッシュ値H3（H1（Ｄ´）＋H2（Ｄ´））を生成する。
【００２７】
このとき、H1（Ｄ´）はH1（Ｄ）と同一であるが、ハッシュ関数H2は危殆化していないため、H2（Ｄ´）はH2（Ｄ）と同一でない。したがって、データＤのハッシュ値H3（H1（Ｄ）＋H2（Ｄ））及びデータＤ´のハッシュ値H3（H1（Ｄ´）＋H2（Ｄ´））は同一でない。
【００２８】
このように、ハッシュ関数H1は危殆化しているにも拘らず、結果的にデータＤ及びＤ´のハッシュ値は異なるため、それぞれのハッシュ値は有効である。また、ハッシュ関数Ｈ２のみが危殆化した場合であっても同様である。すなわち、ハッシュ値を生成する際に用いられたハッシュ関数H1及びH2の両方が危殆化されない限り、ハッシュ値は無効化されない。
【００２９】
上述したように本実施形態においては、ハッシュ値生成に用いられたハッシュ関数H1及びH2が共に危殆化しない限り、データＤ及びデータＤ´のハッシュ値が無効化されない安全なハッシュ値を生成することが可能となる。
【００３０】
［第２の実施形態］
次に、本発明の第２の実施形態について説明する。図５は、本発明の第２の実施形態に係るハッシュ値生成装置１１の構成を示すブロック図である。なお、図１と同様の部分には同一参照符号をつけてその詳しい説明を省略する。ここでは、図１と異なる部分について主に述べる。以下の各実施形態も同様にして重複した説明を省略する。
【００３１】
図５のハッシュ値生成装置１１の特徴は、図１のハッシュ値生成装置１０の構成に加え、署名代理取得部７０を備える点にある。署名代理取得部７０は、ハッシュ値生成部５０によって生成されたハッシュ値をハッシュ値生成装置１１から独立に設けられた外部署名サーバ８０に与える。外部署名サーバ８０は、署名代理取得部７０から与えられたハッシュ値に対してデジタル署名を付加する。署名代理取得部７０は、上記ハッシュ値に対して外部署名サーバ８０によって付加されたデジタル署名を当該外部署名サーバ８０から取得する。
【００３２】
またハッシュ値生成装置１１は、図１の入出力処理部２０に代えて入出力処理部６０を備える。入出力処理部６０は、署名代理取得部７０によって取得されたデジタル署名等を外部に出力する。また、入出力処理部６０は、デジタル署名を外部に出力する際、ハッシュ値生成部５０によって生成されたハッシュ値の生成に用いられたハッシュ関数H1，H2及びH3の情報を共に出力する。
【００３３】
次に、図６のフローチャートを参照して、図５のハッシュ値生成装置１１の処理手順について説明する。まず、図２のフローチャートのステップＳ１乃至Ｓ３の処理に相当する、ステップＳ１１乃至Ｓ１３の処理が実行される。
【００３４】
署名代理取得部７０は、ステップＳ１３においてハッシュ値生成部５０によって生成されたハッシュ値を含む署名リクエストを外部署名サーバ８０に送信する（ステップＳ１４）。外部署名サーバ８０は、ハッシュ値生成部５０からの署名リクエストに応じて、当該リクエストに含まれているハッシュ値に対してデジタル署名を付加する。外部署名サーバ８０は、ハッシュ値に付加されたデジタル署名を上記署名リクエストに対する応答として署名代理取得部７０に返す。
【００３５】
署名代理取得部７０は、外部署名サーバ８０によって返されたデジタル署名を受信する（ステップＳ１５）。すなわち、署名代理取得部７０は、署名リクエストによって外部署名サーバ８０に要求したデジタル署名を当該サーバ８０から取得する。
【００３６】
入出力処理部６０は、署名代理取得部７０によって取得されたデジタル署名を、ハッシュ値生成部５０によって生成されたハッシュ値の生成に用いられたハッシュ関数の情報と共に外部に出力する（ステップＳ１６）。
【００３７】
上述したように第２の実施形態においては、ハッシュ値生成部５０によって生成されたハッシュ値を外部署名サーバ８０に送信することによって、当該ハッシュ値に対するデジタル署名を当該サーバ８０から取得することが可能となる。また、デジタル署名にハッシュ関数H1，H2及びH3の情報を付加することによって、データをデジタル署名だけでなく、複数のハッシュ関数情報と共に流通させることが可能となる。これにより、当該データの検証時に、当該データの作成者等に検証方法を問い合わせることなく当該データの検証をすることが可能となる。
【００３８】
なお、署名代理取得部７０がデジタル署名に代えてデジタルタイムスタンプを取得する構成としてもよい。そのためには、署名代理取得部７０は、ハッシュ値生成部５０によって生成されたハッシュ値をデジタルタイムスタンプ局に与えればよい。デジタルタイムスタンプ局は、署名代理取得部７０から与えられたハッシュ値に対してデジタルタイムスタンプを押印（付加）する。これにより署名代理取得部７０は、上記ハッシュ値に対して付加されたデジタルタイムスタンプを取得することができる。
【００３９】
［第３の実施形態］
次に、本発明の第３の実施形態について説明する。図７は、本発明の第３の実施形態に係るハッシュ値生成装置の構成を示すブロック図である。
【００４０】
図７のハッシュ値生成装置１３の特徴は、図１のハッシュ値生成装置１０の構成に加え、署名押印部１００を備える点にある。署名押印部１００は、ハッシュ値生成部５０によって生成されたハッシュ値に対して、例えばデジタル署名を押印し、デジタル署名を取得する。
【００４１】
またハッシュ値生成装置１３は、図１の入出力処理部２０に代えて入出力処理部９０を備える。入出力処理部９０は、署名押印部１００によって取得されたデジタル署名等を外部に出力する。また、入出力処理部６０は、デジタル署名を外部に出力する際、ハッシュ値生成部５０によって生成されたハッシュ値の生成に用いられたハッシュ関数H1，H2及びH3の情報を共に出力する。
【００４２】
次に、図８のフローチャートを参照して、図７のハッシュ値生成装置の処理手順について説明する。まず、図２のフローチャートのステップＳ１乃至Ｓ３の処理に相当する、ステップＳ２１乃至Ｓ２３の処理が実行される。
【００４３】
署名押印部１００は、ハッシュ値生成部５０によって生成されたハッシュ値に対して、デジタル署名を押印する（ステップＳ２４）。すなわち、署名押印部１００は、ハッシュ値生成部５０によって生成されたハッシュ値のデジタル署名を取得する。
【００４４】
入出力処理部９０は、署名押印部１００によって押印されたデジタル署名を、ハッシュ値生成部５０によって生成されたハッシュ値の生成に用いられたハッシュ関数の情報と共に外部に出力する（ステップＳ２５）。
【００４５】
上述したように第３の実施形態においては、ハッシュ値生成部５０によって生成されたハッシュ値に対して、署名押印部１００によって押印されたデジタル署名を取得することが可能となる。また、第２の実施形態と同様に、データをデジタル署名及び複数のハッシュ関数情報と共に流通させることができるため、当該データの作成者等に検証方法を問い合わせることなく当該データの検証をすることが可能となる。
【００４６】
なお、ハッシュ値生成部５０によって生成されたハッシュ値に対して、署名押印部１００がデジタルタイムスタンプを押印する構成としても構わない。
【００４７】
［第４の実施形態］
次に、本発明の第４の実施形態について説明する。図９は、本発明の第４の実施形態に係るハッシュ値生成装置１４の構成を示すブロック図である。
【００４８】
図９のハッシュ値生成装置１４の特徴は、図１のハッシュ値生成部３１及び３２に代えて、ｎ個（ｎは３以上の整数）のハッシュ値生成部３-1，３-2，…，３-nを備える点にある。ハッシュ値生成部３-1，３-2，…，３-nは、それぞれ異なる種類のハッシュ関数H1，Ｈ2，…，Ｈnに基づいて独立にハッシュ値を生成する。
【００４９】
上記第１の実施形態では、ハッシュ関数Ｈ1及びＨ2の両方が危殆化しない限り、ハッシュ値生成部５０によって生成されたハッシュ値は無効化されない。このことは、ハッシュ関数H1及びH2の２つが危殆化した場合、ハッシュ値は無効化されることを意味する。
【００５０】
これに対して第４の実施形態では、第１の実施形態より多い個数のハッシュ値生成部３-1，３-2，…，３-nが設けられる。このため、ハッシュ値生成部３-1，３-2，…，３-nによって用いられるハッシュ関数H1，Ｈ2，…，Ｈnのうちのｎ−１個、例えば２つのハッシュ関数が危殆化しても、ハッシュ値は無効化されない。つまり、ハッシュ関数H1，Ｈ2，…，Ｈnの全てが危殆化しなければ、ハッシュ値は無効化されない。
【００５１】
よって、図９のハッシュ値生成装置１４は、図１のハッシュ値生成装置１０に比べて、より確実にハッシュ値が無効化されない安全なハッシュ値を生成することが可能となる。ここで、ハッシュ値生成部の個数は、コストと安全度とのトレードオフにより２以上の任意の値に決定すれば良い。
【００５２】
なお、本発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。
【図面の簡単な説明】
【００５３】
【図１】本発明の第１の実施形態に係るハッシュ値生成装置の構成を示すブロック図。
【図２】図１のハッシュ値生成装置の処理手順を示すフローチャート。
【図３】図１のハッシュ値生成装置の処理におけるデータの流れを示す図。
【図４】ハッシュ関数Ｈ１が危殆化した場合の図１のハッシュ値生成装置の処理におけるデータの流れを示す図。
【図５】本発明の第２の実施形態に係るハッシュ値生成装置の構成を示すブロック図。
【図６】図５のハッシュ値生成装置の処理手順を示すフローチャート。
【図７】本発明の第３の実施形態に係るハッシュ値生成装置の構成を示すブロック図。
【図８】図７のハッシュ値生成装置の処理手順を示すフローチャート。
【図９】本発明の第４の実施形態に係るハッシュ値生成装置の構成を示すブロック図。
【符号の説明】
【００５４】
１０，１１，１３，１４…ハッシュ値生成装置、２０，６０，９０…入出力処理部、３１，３２…ハッシュ値生成部、４０…ハッシュ値統合部、５０…ハッシュ値生成部、７０…署名代理取得部、８０…外部署名サーバ、１００…署名押印部。
【図１】
2007232754.tif 000003
【図２】
2007232754.tif 000004
【図３】
2007232754.tif 000005
【図４】
2007232754.tif 000006
【図５】
2007232754.tif 000007
【図６】
2007232754.tif 000008
【図７】
2007232754.tif 000009
【図８】
2007232754.tif 000010
【図９】
2007232754.tif 000011